開始用 KDE Neon 之後遇到一個很煩的問題:底部面板的自動隱藏功能用一段時間就會失效,面板卡在那邊不會縮回去,每次都得手動重啟 plasmashell 才能恢復。一天下來重啟了五次。
問題現象
- 面板設定為「自動隱藏」模式
- 剛開機時運作正常
- 用一段時間後,面板就不會自動隱藏了
- 滑鼠移開面板區域也沒用,它就是賴在那裡不走
- 重啟
plasmashell後暫時恢復,但過一陣子又會發生
真正的兇手:LINE
後來發現,真正導致面板卡住的兇手是透過 Wine 執行的 LINE。每次 LINE 有新訊息通知,面板就會跳出來,然後就不會自動隱藏了。
快速解法:把 LINE 視窗重新最小化一次,面板就會恢復正常。
永久解法:KWin 腳本 + 規則
與其每次手動處理,不如寫個 KWin 腳本自動攔截 LINE 的「demands attention」狀態。
步驟 1:建立 KWin 腳本
建立目錄結構:
mkdir -p ~/.local/share/kwin/scripts/shut-up-line/contents/code
建立 ~/.local/share/kwin/scripts/shut-up-line/contents/code/main.js:
function shutUpLine(client) {
if (client.resourceClass === 'line.exe') {
client.demandsAttentionChanged.connect(function() {
if (client.demandsAttention) {
client.demandsAttention = false;
}
});
}
}
// KDE 6
if (typeof workspace.windowAdded !== 'undefined') {
workspace.windowAdded.connect(shutUpLine);
workspace.windowList().forEach(shutUpLine);
} else {
// KDE 5
workspace.clientAdded.connect(shutUpLine);
workspace.clientList().forEach(shutUpLine);
}
建立 ~/.local/share/kwin/scripts/shut-up-line/metadata.json:
{
"KPlugin": {
"Id": "shut-up-line",
"Name": "Shut up LINE!",
"Description": "Disable demands attention for LINE (Wine)",
"Icon": "preferences-system-windows-script-test",
"Authors": [{"Name": "Jason"}],
"Version": "1.0"
},
"X-Plasma-API": "javascript",
"X-Plasma-MainScript": "code/main.js"
}
步驟 2:啟用腳本
kwriteconfig6 --file kwinrc --group Plugins --key shut-up-lineEnabled true
qdbus6 org.kde.KWin /KWin reconfigure
或者到 系統設定 → 視窗管理 → KWin 腳本 手動啟用。
步驟 3:加入 KWin 規則(雙保險)
系統設定 → 視窗管理 → 視窗規則 → 新增:
- 視窗類別:
line.exe(完全符合) - 焦點竊取防護:強制 → 極端
這樣 LINE 就不會再搶焦點導致面板卡住了。
查 log
journalctl --user -u plasma-plasmashell.service -b
journalctl -b | grep -i plasmashell
發現幾個可疑的錯誤訊息:
plasmashell: qrc:/qt/qml/plasma/applet/org/kde/plasma/notifications/global/Globals.qml:521:13: Unable to assign [undefined] to bool
plasmashell: BatteryItem: Binding loop detected for property "width"
看起來通知和電池小工具有點問題,但應該不是主因。
Google 了一下,原來這是個老問題——Bug 330356 從 2013 年就有人在抱怨,到現在還是陰魂不散。
解決方法
翻了一下 bug report 的討論串,大家都說兇手是任務管理器的「當視窗需要注意時取消隱藏」選項。關掉它就好了。
方法一:透過 GUI 設定
- 右鍵點擊任務管理器(或 Icon Tasks)
- 選擇「設定圖示任務...」
- 找到「當視窗需要注意時取消隱藏」
- 取消勾選
- 套用
方法二:直接改設定檔
編輯 ~/.config/plasma-org.kde.plasma.desktop-appletsrc,在任務管理器的 [Configuration][General] 區段加入:
unhideOnAttentionNeeded=false
然後重啟 plasmashell:
kquitapp6 plasmashell && plasmashell &
還是不行的話
如果上面的方法沒用,可以再試試:
- 檢查通知——關閉所有懸停的通知視窗
- 換用「視窗進入時隱藏」模式——比自動隱藏穩定一些
- 按
Meta+Alt+P——切換面板焦點,有時候能讓它恢復 - 檢查合成器設定——系統設定 → 顯示 → 合成器 → 把「保留視窗縮圖」改成「僅限顯示的視窗」
關掉那個選項之後,用了幾個小時都沒再發生,應該是解決了。Plasma 6 + Wayland 還是有些小毛病,繼續觀察。