中文版,供论坛发布。英文原文见 bugreport-kwin-dim-inactive.md(内容一致,供自己阅读)。
bugreport-kwin-dim-inactive.md
Deepin 25 使用 KWin 作为窗口管理器,而 KWin 自带 Dim Inactive(变暗非活动窗口) 效果(/usr/share/kwin/builtin-effects/diminactive)。该效果已经存在、可以正常工作, 但默认是关闭的,而且在控制中心里没有任何地方可以打开它。
/usr/share/kwin/builtin-effects/diminactive
结果就是:窗口焦点几乎看不出来。活动窗口与非活动窗口的标题栏差别过于细微,桌面上 开了几个窗口之后,用户必须靠点击或看任务栏才能确认哪个窗口处于焦点状态。
kwin_x11
kwin-x11
com.deepin.chameleon
两个窗口看起来几乎一模一样,除非用户早已熟悉标题栏的细微明暗差别,否则无法判断。
非活动窗口应当有明确的视觉区分。常见做法就是把它稍微变暗——而这正是系统里已经 存在的那个效果。
打开它只需要一个配置项加一次重载,之后 KWin 会明确报告该效果已加载: $ kwriteconfig5 --file kwinrc --group Plugins --key diminactiveEnabled true $ qdbus org.kde.KWin /KWin reconfigure $ qdbus org.kde.KWin /KWin supportInformation | grep -i dim diminactive 建议的修改方式(按优先级) 直接在随系统发布的 kwinrc 中默认启用 diminactive。 一行配置,不需要新代码, 却能让所有用户立刻看清焦点位置。 在控制中心中提供开关(个性化,或窗口效果所在的位置),最好再配一个强度滑块。 不喜欢变暗的用户可以关掉,需要它的用户可以打开。 如果以上都做不到,至少写进文档。但一个必须修改隐藏配置文件的默认值, 等于大多数用户永远不会发现的默认值。 给用户的临时方案(可直接复制) kwriteconfig5 --file kwinrc --group Plugins --key diminactiveEnabled true qdbus org.kde.KWin /KWin reconfigure 撤销: kwriteconfig5 --file kwinrc --group Plugins --key diminactiveEnabled false qdbus org.kde.KWin /KWin reconfigure 或者使用随本帖提供的开关脚本 dim-inactive.sh(支持 on / off / toggle / status), 它不需要 sudo,也不需要手动编辑配置文件。 补充说明:与 Plasma 的窗口边框着色不是一回事 KDE Plasma 可以让窗口边框跟随应用程序自身的配色方案,截图看起来相似, 但这并不是本帖所请求的功能:它依赖于 Breeze 一类的装饰插件,并且要求每个应用 自行发布配色方案。Deepin 只有一个装饰插件,且 DTK 应用共用同一套全局配色, 所以即使装上那种装饰,效果也会是统一的,而不是随应用变化。 而「变暗非活动窗口」不依赖上述任何一项,对任何工具包的应用都有效。 #!/bin/bash # dim-inactive.sh - turn KWin's "Dim Inactive" effect on or off. # # No sudo, no editing dotfiles: Deepin 25 ships the effect but leaves it off and # does not expose it in Control Center. This just writes the one key and asks # KWin to reload. # # ./dim-inactive.sh toggle # ./dim-inactive.sh on # ./dim-inactive.sh off # ./dim-inactive.sh status set -u CONF="$HOME/.config/kwinrc" KEY="diminactiveEnabled" current() { kreadconfig5 --file kwinrc --group Plugins --key "$KEY" 2>/dev/null || echo false; } setval() { kwriteconfig5 --file kwinrc --group Plugins --key "$KEY" "$1"; } reload() { qdbus org.kde.KWin /KWin reconfigure >/dev/null 2>&1; } case "${1:-toggle}" in status) echo "Dim Inactive is currently: $(current)" ;; on) setval true; reload; echo "Dim Inactive: on" ;; off) setval false; reload; echo "Dim Inactive: off" ;; toggle) if [ "$(current)" = "true" ]; then setval false; reload; echo "Dim Inactive: off" else setval true; reload; echo "Dim Inactive: on" fi ;; *) echo "usage: $0 [on|off|toggle|status]" >&2 exit 2 ;; esac
打开它只需要一个配置项加一次重载,之后 KWin 会明确报告该效果已加载:
$ kwriteconfig5 --file kwinrc --group Plugins --key diminactiveEnabled true $ qdbus org.kde.KWin /KWin reconfigure $ qdbus org.kde.KWin /KWin supportInformation | grep -i dim diminactive
diminactive
kwriteconfig5 --file kwinrc --group Plugins --key diminactiveEnabled true qdbus org.kde.KWin /KWin reconfigure
撤销:
kwriteconfig5 --file kwinrc --group Plugins --key diminactiveEnabled false qdbus org.kde.KWin /KWin reconfigure
或者使用随本帖提供的开关脚本 dim-inactive.sh(支持 on / off / toggle / status), 它不需要 sudo,也不需要手动编辑配置文件。
dim-inactive.sh
on
off
toggle
status
KDE Plasma 可以让窗口边框跟随应用程序自身的配色方案,截图看起来相似, 但这并不是本帖所请求的功能:它依赖于 Breeze 一类的装饰插件,并且要求每个应用 自行发布配色方案。Deepin 只有一个装饰插件,且 DTK 应用共用同一套全局配色, 所以即使装上那种装饰,效果也会是统一的,而不是随应用变化。
而「变暗非活动窗口」不依赖上述任何一项,对任何工具包的应用都有效。
#!/bin/bash # dim-inactive.sh - turn KWin's "Dim Inactive" effect on or off. # # No sudo, no editing dotfiles: Deepin 25 ships the effect but leaves it off and # does not expose it in Control Center. This just writes the one key and asks # KWin to reload. # # ./dim-inactive.sh toggle # ./dim-inactive.sh on # ./dim-inactive.sh off # ./dim-inactive.sh status set -u CONF="$HOME/.config/kwinrc" KEY="diminactiveEnabled" current() { kreadconfig5 --file kwinrc --group Plugins --key "$KEY" 2>/dev/null || echo false; } setval() { kwriteconfig5 --file kwinrc --group Plugins --key "$KEY" "$1"; } reload() { qdbus org.kde.KWin /KWin reconfigure >/dev/null 2>&1; } case "${1:-toggle}" in status) echo "Dim Inactive is currently: $(current)" ;; on) setval true; reload; echo "Dim Inactive: on" ;; off) setval false; reload; echo "Dim Inactive: off" ;; toggle) if [ "$(current)" = "true" ]; then setval false; reload; echo "Dim Inactive: off" else setval true; reload; echo "Dim Inactive: on" fi ;; *) echo "usage: $0 [on|off|toggle|status]" >&2 exit 2 ;; esac
No replies yet
Featured Collection
Popular Ranking
Popular Events
摘要
Deepin 25 使用 KWin 作为窗口管理器,而 KWin 自带 Dim Inactive(变暗非活动窗口)
效果(
/usr/share/kwin/builtin-effects/diminactive)。该效果已经存在、可以正常工作,但默认是关闭的,而且在控制中心里没有任何地方可以打开它。
结果就是:窗口焦点几乎看不出来。活动窗口与非活动窗口的标题栏差别过于细微,桌面上
开了几个窗口之后,用户必须靠点击或看任务栏才能确认哪个窗口处于焦点状态。
环境
kwin_x11(软件包kwin-x114:6.1.43)com.deepin.chameleon(系统中唯一安装的装饰插件)复现步骤
实际结果
两个窗口看起来几乎一模一样,除非用户早已熟悉标题栏的细微明暗差别,否则无法判断。
预期结果
非活动窗口应当有明确的视觉区分。常见做法就是把它稍微变暗——而这正是系统里已经
存在的那个效果。
证据:修复其实已经随系统提供