用 Noctalia Shell 替代各种琐碎组件

This commit is contained in:
2026-05-19 20:19:28 +08:00
parent f1b8e14be3
commit bcc383a383
15 changed files with 127 additions and 265 deletions
+18 -16
View File
@@ -9,7 +9,8 @@ binds {
//Shift+Mod+Return hotkey-overlay-title="Steam" { spawn "steam"; }
Mod+F12 hotkey-overlay-title="打开桌面项目 ... (VSCode)" { spawn ".fuzzel-vscode"; }
Mod+Space hotkey-overlay-title="运行命令 ... (fuzzel)" { spawn ".fuzzel-startb"; }
Mod+R hotkey-overlay-title="运行命令 ... (fuzzel)" { spawn ".fuzzel-startb"; }
Mod+Space hotkey-overlay-title="启动面板 (Noctalia)" { spawn-sh "qs -c noctalia-shell ipc call launcher toggle"; }
// Applications such as remote-desktop clients and software KVM switches may
// request that niri stops processing the keyboard shortcuts defined here
@@ -20,12 +21,11 @@ binds {
// The allow-inhibiting=false property can be applied to other binds as well,
// which ensures niri always processes them, even when an inhibitor is active.
Mod+Alt+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
XF86PowerOff hotkey-overlay-title="大退(注销)" { quit; }
Super+Escape hotkey-overlay-title="锁屏 (gtklock)" { spawn "gtklock" "-d"; }
Mod+Delete hotkey-overlay-title="锁屏并休眠 ..." allow-when-locked=true {
spawn-sh "(pgrep gtklock || gtklock -d) && sleep 1.5 && systemctl hibernate";
}
XF86PowerOff hotkey-overlay-title="电源管理 (Noctalia)" { spawn-sh "qs -c noctalia-shell ipc call sessionMenu toggle"; }
Super+Escape hotkey-overlay-title="锁屏 (Noctalia)" { spawn-sh "qs -c noctalia-shell ipc call lockScreen lock"; }
Mod+Delete hotkey-overlay-title="锁屏并睡眠... (Noctalia)" allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call sessionMenu lockAndSuspend"; }
// 有兴趣可以自己替换成 noctalia 的命令行。我是发现保持现状依然可以看到视觉反馈,没必要替换。
XF86AudioRaiseVolume hotkey-overlay-title=null allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05+"; }
XF86AudioLowerVolume hotkey-overlay-title=null allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05-"; }
XF86AudioMute hotkey-overlay-title=null allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; }
@@ -33,12 +33,14 @@ binds {
//Mod+Shift+M allow-when-locked=true { spawn "swayosd-client" "--input-volume" "mute-toggle"; }
XF86AudioPlay allow-when-locked=true { spawn "playerctl" "play-pause"; }
XF86AudioPause allow-when-locked=true { spawn "playerctl" "play-pause"; }
XF86AudioNext allow-when-locked=true { spawn "playerctl" "next"; }
XF86AudioPrev allow-when-locked=true { spawn "playerctl" "previous"; }
XF86AudioStop allow-when-locked=true { spawn "playerctl" "stop"; }
// 这块还真得换。`yay -Rs waybar` 发现 playerctl 也给带走了。
XF86AudioPlay allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call media playPause"; }
XF86AudioPause allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call media playPause"; }
XF86AudioNext allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call media next"; }
XF86AudioPrev allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call media previous"; }
XF86AudioStop allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call media stop"; }
// 结果 Noctalia 自己就依赖 brightnessctl。那留着。
XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+5%"; }
XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "5%-"; }
@@ -179,14 +181,14 @@ binds {
Mod+BracketLeft { consume-or-expel-window-left; }
Mod+BracketRight { consume-or-expel-window-right; }
Mod+R { switch-preset-column-width; }
Mod+Shift+R { switch-preset-window-height; }
Mod+Ctrl+R { reset-window-height; }
Mod+X { switch-preset-column-width; }
Mod+Shift+X { switch-preset-window-height; }
Mod+Ctrl+X { reset-window-height; }
Mod+F11 { maximize-column; }
Mod+Shift+F11 { toggle-windowed-fullscreen; }
Mod+Ctrl+F11 { fullscreen-window; }
Mod+T hotkey-overlay-title="Expand column to available width" { expand-column-to-available-width; }
Mod+W hotkey-overlay-title="Tabbed Column Mode" { toggle-column-tabbed-display; }
Mod+T hotkey-overlay-title="将整列窗口撑满整个显示器" { expand-column-to-available-width; }
Mod+W hotkey-overlay-title="用页签表示(所选)窗口所在列" { toggle-column-tabbed-display; }
Mod+C { center-column; }
Mod+Ctrl+C { center-visible-columns; }
+22 -3
View File
@@ -5,9 +5,28 @@ window-rule {
clip-to-geometry true
}
window-rule {
// 以下应用不应该开模糊——开了模糊也只是附上一层边框色,并不具备通常意义上的亚克力、云母质感。
// 排除列表随时更新。因为我测不过来。
// 另注:为什么不用正则组合成一行?正则越长性能开销越大。况且单独的应用方便用注释切换。
exclude app-id="QQ"
exclude app-id="wechat"
exclude app-id="steam"
exclude app-id="google-chrome"
exclude app-id="org.telegram.desktop"
exclude app-id=".exe$" // wine
exclude title=r#"Visual Studio Code$"# app-id=r#"^code"#
// match app-id="(foot|obs)"
opacity 0.8
background-effect {
blur true
xray false
}
}
window-rule {
match app-id="QQ"
match app-id="Electron" title="MetaCubeXD$"
match app-id="[Ee]lectron" title="MetaCubeXD$"
match app-id="wechat"
match app-id="org.telegram.desktop"
match app-id="nwjs" // mainly for rpgmaker games.
@@ -27,8 +46,8 @@ window-rule {
}
window-rule {
match app-id="Electron" title="Test" // frg2089.BiliLive.Observer
match app-id="Electron" title="Blivechat-Openlive" // blivechat
match app-id="[Ee]lectron" title="Test" // frg2089.BiliLive.Observer
match app-id="[Ee]lectron" title="Blivechat-Openlive" // blivechat
default-column-width { proportion 0.42; }
// default-column-display "tabbed"
open-on-output "eDP-1"
+17 -6
View File
@@ -1,4 +1,4 @@
// edited. thx to fizzyizzy05.
// edited. thx to fizzyizzy05 & silvaire-qwq.
input {
keyboard {
xkb {
@@ -58,8 +58,9 @@ output "HDMI-A-1" {
}
layout {
gaps 6
gaps 8
background-color "transparent"
center-focused-column "never"
preset-column-widths {
@@ -127,10 +128,17 @@ overview {
}
layer-rule {
match namespace="^wallpaper$"
match namespace="^noctalia-overview*"
place-within-backdrop true
}
layer-rule {
match namespace="^noctalia-(background|launcher-overlay|dock)-.*$"
background-effect {
xray false
}
}
animations {
// off
@@ -175,15 +183,15 @@ animations {
}
}
// 我看雪叶是把能拆的大板块都拆得一干二净,但就我这份配置而言,拆两份常用的出来已经足矣
// 我看雪叶是把能拆的大板块都拆得一干二净,但就我这份配置而言,拆两份常用的出来已经足矣。
// 部分视觉效果拆出去可能还会失效(比如窗口边框)。
include "config-window.kdl"
include "config-keyboard.kdl"
// spawn-at-startup "waybar" // 建议交给 systemctl --user,它自己没法热重载。
// spawn-sh-at-startup "wl-paste --watch cliphist store"
spawn-at-startup "awww-daemon"
// spawn-at-startup "awww-daemon" "--namespace" "blur"
// spawn-at-startup "awww-daemon"
spawn-at-startup "qs" "-c" "noctalia-shell"
spawn-at-startup "xwayland-satellite"
spawn-at-startup "/usr/lib/pam_kwallet_init"
@@ -208,3 +216,6 @@ prefer-no-csd
// 我自己搞了个软链接,把截图丢进 tmpfs 里了。参见 .zshrc。
screenshot-path "~/.tmp/Screenshots/%Y-%m-%d %H-%M-%S.png"
// screenshot-path null
include "./noctalia.kdl"