顺便贴一下niri配置( 这里已经预先安装了 https://aur.archlinux.org/packages/dms-shell & KDE(回落桌面)
同时使用fcitx5作为输入法)
体感,dms的wifi管理有点问题(可能是我2go的锅),最近宿舍linux下校园网完全不能稳定连接
arch aur请安装 quickshell (quickshell-git过期了,但是end4.dots的还在用)
根据别人的安装经验,dms可能需要通过uwsm退出账户……
注:请勿使用 qq & wechat 体感不好……(信创什么时候倒逼一把)
environment {
QT_IM_MODULE "fcitx"
XMODIFIERS "@im=fcitx"
SDL_IM_MODULE "fcitx"
GLFW_IM_MODULE "ibus"
INPUT_METHOD "fcitx"
ELECTRON_OZONE_PLATFORM_HINT "auto"
QT_QPA_PLATFORM "wayland"
QT_QPA_PLATFORMTHEME "kde"
XDG_MENU_PREFIX "plasma-"
ILLOGICAL_IMPULSE_VIRTUAL_ENV "~/.local/state/quickshell/.venv"
TERMINAL "kitty -1"
DISPLAY ":1"
}
spawn-at-startup "fcitx5"
spawn-at-startup "/usr/lib/pam_kwallet_init"
spawn-at-startup "/usr/lib/polkit-kde-authentication-agent-1"
spawn-at-startup "dbus-update-activation-environment --all"
spawn-at-startup "sh" "-c" "sleep 1 && dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
spawn-at-startup "easyeffects --gapplication-service"
spawn-at-startup "wl-paste --type text --watch cliphist store"
spawn-at-startup "wl-paste --type image --watch cliphist store"
spawn-at-startup "wl-clip-persist --clipboard regular"
spawn-at-startup "sh" "-c" "export XCURSOR_THEME=Bibata-Modern-Classic && export XCURSOR_SIZE=24"
// Required for clipboard history integration
spawn-at-startup "bash" "-c" "wl-paste --watch cliphist store &"
// Recommended (must install polkit-mate before hand) for elevation prompts
spawn-at-startup "/usr/lib/mate-polkit/polkit-mate-authentication-agent-1"
// This may be a different path on different distributions, the above is for the arch linux mate-polkit package
spawn-at-startup "xwayland-satellite"
// Or, if you built it by hand:
// spawn-at-startup "~/path/to/code/target/release/xwayland-satellite"
// Starts DankShell
spawn-at-startup "qs" "-c" "dms"
// Make workspaces four times smaller than normal in the overview.
overview {
zoom 0.75
workspace-shadow {
off
}
}
//负责屏幕大小
output "HDMI-A-1" {
mode "1920x1080@60"
scale 1.5
variable-refresh-rate on-demand=true
} // 只是个例子,我的副屏幕在某个nvidia driver更新后崩坏,非常见分辨率谨慎更新nvidia驱动
//输入管理
input {
focus-follows-mouse
workspace-auto-back-and-forth
keyboard {
xkb {
layout "us"
}
repeat-delay 250
repeat-rate 35
}
touchpad {
natural-scroll
click-method "clickfinger"
scroll-factor 0.5
}
mouse {
accel-speed 0.0
accel-profile "flat"
}
touch {
map-to-output "HDMI-A-1"
}
}
layout {
gaps 4.0
center-focused-column "never"
preset-column-widths {
proportion 0.33333
proportion 0.5
proportion 0.66667
}
default-column-width {
proportion 0.5
}
focus-ring {
width 1.0
active-color "#0DB7D4"
inactive-color "#31313600"
}
border {
width 1.0
active-color "#0DB7D4"
inactive-color "#31313600"
}
}
prefer-no-csd
//先全局,方便覆盖
window-rule {
// 将此规则应用于所有窗口 (因为没有 match 条件)
// 圆角
geometry-corner-radius 18.0
clip-to-geometry true
// 对,niri绘制s
draw-border-with-background false
// 新窗口默认不最大化
open-maximized false
// 新窗口默认平铺,而非浮动
//open-floating false
// 全局默认宽度设置为屏幕宽度的 80%
default-column-width { proportion 0.8; }
default-window-height {
proportion 1.0;
}
}
// 疯狂的悬浮匹配
window-rule {
match app-id="(fcitx|kitty|wechat|QQ|sparkle|goland|rustover|clion|CLion|Open|blueberry|guifetch|pavucontrol|foot|Alacritty|fuzzel|pulseaudio|nm-connection-editor|plasma|kcm_|bluedevilwizard|Welcome|illogical-impulse|Zotero|freedesktop)"
open-floating true
}
window-rule {
match app-id="fcitx"
default-column-width {
proportion 0.1;
}
default-window-height {
proportion 0.1;
}
}
// 宽度0.6
window-rule {
match app-id="^(systemsettings|systemsettings|QQ|wechat)[imath:0]"
default-column-width {
proportion 0.6
}
}
//宽度0.5
window-rule {
match title="(goland|rustover|clion|CLion|Open|Sparkle|kitty|blueberry|foot|Alacritty)"
default-column-width {
proportion 0.5;
}
}
// 宽度0.45
window-rule {
match app-id="(^nm-connection-editor[/imath:0]|pavucontrol|Zotero)"
default-column-width {
proportion 0.45
}
}
//高度0.5
window-rule {
match title="(goland|rustover|clion|CLion|Open|Sparkle|QQ|kitty|foot|Alacritty)"
default-window-height {
proportion 0.5;
}
}
// 微软浏览器
window-rule {
match app-id="microsoft-edge" title=r#"^[imath:0]"#
open-floating true
}
// vscode悬浮窗专享
window-rule {
match app-id="code" title="^Visual Studio Code[/imath:0]"
open-floating true
}
// QQ专享
window-rule {
match app-id="QQ" title="^QQ[imath:0]"
default-column-width {
proportion 0.2;
}
}
window-rule {
match app-id="QQ"
exclude title="^QQ[/imath:0]"
default-column-width {
proportion 0.8;
}
}
window-rule {
match app-id="wechat"
exclude title="^微信[imath:0]"
default-window-height {
proportion 0.6;
}
}
// telegram专享
window-rule {
match app-id="org.telegram.desktop" title="Media viewer"
open-floating true
default-window-height {
proportion 0.5;
}
// 80% of the screen wide.
default-column-width {
proportion 0.5;
}
}
window-rule {
match app-id="org.telegram.desktop"
exclude title="Telegram"
open-floating true
default-window-height {
proportion 0.75;
}
// 80% of the screen wide.
default-column-width {
proportion 0.75;
}
}
window-rule {
match title="^[Pp]icture[-\\s]?[Ii]n[-\\s]?[Pp]icture.*[/imath:0]"
open-floating true
default-column-width {
fixed 400
}
}
// 动画什么的砍了也行
animations {
window-open {
duration-ms 200
curve "ease-out-cubic"
}
window-close {
duration-ms 200
curve "ease-out-cubic"
}
workspace-switch {
duration-ms 150
curve "ease-out-cubic"
}
horizontal-view-movement {
duration-ms 150
curve "ease-out-cubic"
}
window-movement {
duration-ms 50
curve "ease-out-cubic"
}
window-resize{
duration-ms 300
curve "ease-out-expo"
}
}
gestures {
dnd-edge-view-scroll {
trigger-width 30
delay-ms 100
max-speed 1500
}
dnd-edge-workspace-switch {
trigger-height 50
delay-ms 100
max-speed 1500
}
hot-corners {
//off
}
}
hotkey-overlay {
skip-at-startup
hide-not-bound //等待发布新版本
}
// 快捷键
binds {
// 应用启动与管理
"Mod+Space" hotkey-overlay-title="应用启动器" {
spawn "qs" "-c" "dms" "ipc" "call" "spotlight" "toggle"
}
"Mod+Semicolon" hotkey-overlay-title="应用菜单" {
spawn "fuzzel"
}
"Mod+V" hotkey-overlay-title="剪贴板历史" {
spawn "qs" "-c" "dms" "ipc" "call" "clipboard" "toggle"
}
"Mod+Period" hotkey-overlay-title="表情符号" {
spawn "~/.config/niri/niri/scripts/fuzzel-emoji.sh" "copy"
}
"Mod+Slash" hotkey-overlay-title="快捷键提示" {
show-hotkey-overlay
}
"Mod+K" hotkey-overlay-title="屏幕键盘" {
spawn "sh" "-c" "qs -c dms ipc call osk toggle"
}
"Mod+M" hotkey-overlay-title="进程列表" {
spawn "qs" "-c" "dms" "ipc" "call" "processlist" "toggle"
}
"Mod+Return" hotkey-overlay-title="鸭子" {
spawn "~/.config/niri/niri/scripts/launch_first_available.sh" "kitty yazi" "foot" "kitty -1" "wezterm" "konsole" "kgx" "uxterm" "xterm"
}
"Mod+T" hotkey-overlay-title="终端" {
spawn "~/.config/niri/niri/scripts/launch_first_available.sh" "[imath:0]TERMINAL" "kitty -1" "foot" "alacritty" "wezterm" "konsole" "kgx" "uxterm" "xterm"
}
"Ctrl+Alt+T" hotkey-overlay-title="终端" {
spawn "~/.config/niri/niri/scripts/launch_first_available.sh" "[/imath:0]TERMINAL" "kitty -1" "foot" "alacritty" "wezterm" "konsole" "kgx" "uxterm" "xterm"
}
"Mod+E" hotkey-overlay-title="文件管理器" {
spawn "~/.config/niri/niri/scripts/launch_first_available.sh" "dolphin" "nautilus" "nemo" "thunar"
}
"Mod+W" hotkey-overlay-title="浏览器" {
spawn "~/.config/niri/niri/scripts/launch_first_available.sh" "microsoft-edge-stable" "google-chrome-stable" "zen-browser" "firefox" "brave" "chromium" "opera" "librewolf"
}
"Mod+C" hotkey-overlay-title="代码编辑器" {
spawn "~/.config/niri/niri/scripts/launch_first_available.sh" "code" "codium" "cursor" "zed" "kate" "gnome-text-editor" "emacs"
}
"Mod+Shift+F" hotkey-overlay-title="伪装全屏"{
toggle-windowed-fullscreen;
}
"Mod+Shift+W" hotkey-overlay-title="办公套件" {
spawn "~/.config/niri/niri/scripts/launch_first_available.sh" "wps" "onlyoffice-desktopeditors"
}
Mod+X hotkey-overlay-title="电源菜单" {
spawn "qs" "-c" "dms" "ipc" "call" "powermenu" "toggle";
}
"Ctrl+Shift+Escape" hotkey-overlay-title="系统监视器" {
spawn "~/.config/niri/niri/scripts/launch_first_available.sh" "gnome-system-monitor" "plasma-systemmonitor"
}
// 系统与会话控制
"Mod+Comma" hotkey-overlay-title="设置" {
spawn "qs" "-c" "dms" "ipc" "call" "settings" "toggle"
}
"Mod+Alt+L" hotkey-overlay-title="锁定屏幕" {
spawn "qs" "-c" "dms" "ipc" "call" "lock" "lock"
}
"Ctrl+Alt+Delete" hotkey-overlay-title="会话菜单" {
spawn "sh" "-c" "qs -c dms ipc call sessionToggle"
}
"Mod+J" hotkey-overlay-title="切换状态栏" {
spawn "sh" "-c" "qs -c dms ipc call barToggle"
}
"Ctrl+Mod+R" hotkey-overlay-title="重载Shell" {
spawn "sh" "-c" "killall ags agsv1 gjs ydotool qs quickshell; qs -c dms &"
}
"Mod+Ctrl+N" hotkey-overlay-title="网络连接" {
spawn "sh" "-c" "nm-connection-editor || plasma-nm"
}
"Mod+Ctrl+B" hotkey-overlay-title="蓝牙设置" {
spawn "sh" "-c" "blueberry || bluedevil-wizard"
}
"Mod+Ctrl+A" hotkey-overlay-title="音频控制" {
spawn "sh" "-c" "pavucontrol-qt || pavucontrol"
}
"Mod+Ctrl+S" hotkey-overlay-title="系统设置" {
spawn "sh" "-c" "XDG_CURRENT_DESKTOP=gnome systemsettings || gnome-control-center"
}
"Mod+Ctrl+Q" hotkey-overlay-title="快速设置" {
spawn "sh" "-c" "qs -c dms ipc call quickSettingsToggle"
}
"Mod+I" hotkey-overlay-title="系统设置" {
spawn "sh" "-c" "XDG_CURRENT_DESKTOP=gnome ~/.config/niri/niri/scripts/launch_first_available.sh 'systemsettings' 'gnome-control-center' 'better-control'"
}
"Mod+L" hotkey-overlay-title="锁定屏幕" {
spawn "loginctl" "lock-session"
}
"Mod+Shift+L" hotkey-overlay-title="休眠" {
spawn "sh" "-c" "sleep 0.1 && systemctl suspend"
}
"Ctrl+Shift+Alt+Mod+Delete" hotkey-overlay-title="关机" {
spawn "systemctl" "poweroff"
}
// 音频与媒体控制
"Mod+Shift+M" hotkey-overlay-title="切换静音" allow-when-locked=true {
spawn "wpctl" "set-mute" "@DEFAULT_SINK@" "toggle"
}
"Alt+XF86AudioMute" hotkey-overlay-title="切换麦克风静音" allow-when-locked=true {
spawn "wpctl" "set-mute" "@DEFAULT_SOURCE@" "toggle"
}
"XF86AudioMute" hotkey-overlay-title="静音" allow-when-locked=true {
spawn "qs" "-c" "dms" "ipc" "call" "audio" "mute"
}
"XF86AudioMicMute" hotkey-overlay-title="麦克风静音" allow-when-locked=true {
spawn "qs" "-c" "dms" "ipc" "call" "audio" "micmute"
}
"XF86AudioRaiseVolume" hotkey-overlay-title="增加音量" allow-when-locked=true {
spawn "qs" "-c" "dms" "ipc" "call" "audio" "increment" "3"
}
"XF86AudioLowerVolume" hotkey-overlay-title="降低音量" allow-when-locked=true {
spawn "qs" "-c" "dms" "ipc" "call" "audio" "decrement" "3"
}
"XF86AudioNext" hotkey-overlay-title="下一首" allow-when-locked=true {
spawn "playerctl" "next"
}
"XF86AudioPrev" hotkey-overlay-title="上一首" allow-when-locked=true {
spawn "playerctl" "previous"
}
"Mod+Shift+J" hotkey-overlay-title="下一首" allow-when-locked=true {
spawn "playerctl" "next"
}
"Mod+Shift+K" hotkey-overlay-title="上一首" allow-when-locked=true {
spawn "playerctl" "previous"
}
"Mod+Shift+P" hotkey-overlay-title="播放/暂停" allow-when-locked=true {
spawn "playerctl" "play-pause"
}
// Night mode toggle
Mod+Shift+N allow-when-locked=true {
spawn "qs" "-c" "dms" "ipc" "call" "night" "toggle";
}
"XF86AudioPlay" hotkey-overlay-title="播放/暂停" allow-when-locked=true {
spawn "playerctl" "play-pause"
}
"XF86AudioPause" hotkey-overlay-title="播放/暂停" allow-when-locked=true {
spawn "playerctl" "play-pause"
}
"Ctrl+Mod+V" hotkey-overlay-title="音量控制" {
spawn "~/.config/niri/niri/scripts/launch_first_available.sh" "pavucontrol-qt" "pavucontrol"
}
// 截图与录屏
"Mod+Print" hotkey-overlay-title="区域截图" allow-when-locked=true {
spawn "sh" "-c" "grim -g \"[imath:0](slurp)\" - | wl-copy"
}
"Shift+Print" hotkey-overlay-title="OCR截图" allow-when-locked=true {
spawn "sh" "-c" "grim -g \"[/imath:0](slurp)\" tmp.png && tesseract tmp.png - | wl-copy && rm tmp.png"
}
"Mod+Shift+C" hotkey-overlay-title="颜色拾取" {
spawn "hyprpicker" "-a"
}
"Print" hotkey-overlay-title="全屏截图" allow-when-locked=true {
spawn "sh" "-c" "grim - | wl-copy"
}
"Ctrl+Print" hotkey-overlay-title="全屏截图到文件" {
spawn "sh" "-c" "mkdir -p [imath:0](xdg-user-dir PICTURES)/Screenshots && grim [/imath:0](xdg-user-dir PICTURES)/Screenshots/Screenshot_\"[imath:0](date '+%Y-%m-%d_%H.%M.%S')\".png"
}
"Mod+Alt+R" hotkey-overlay-title="区域录屏" {
spawn "sh" "-c" "mkdir -p \"[/imath:0](xdg-user-dir PICTURES)/Screenshots\" && grim -g \"[imath:0](slurp)\" - | tee \"[/imath:0](xdg-user-dir PICTURES)/Screenshots/Screenshot_$(date +'%Y-%m-%d_%H:%M:%S').png\" | wl-copy"
}
//"Ctrl+Alt+R" hotkey-overlay-title="全屏录屏" {
// spawn "~/.config/niri/niri/scripts/record.sh" "--fullscreen"
//}
"Mod+Shift+Alt+R" hotkey-overlay-title="全屏录屏(带声音)" {
spawn "~/.config/niri/niri/scripts/record.sh" "--fullscreen-sound"
}
// 窗口管理
"Mod+Shift+Up" hotkey-overlay-title="上移窗口" {
move-window-to-workspace-up
}
"Mod+Shift+Down" hotkey-overlay-title="下移窗口" {
move-window-to-workspace-down
}
"Mod+Shift+Left" hotkey-overlay-title="左移窗口" {
move-column-left
}
"Mod+Shift+Right" hotkey-overlay-title="右移窗口" {
move-column-right
}
"Alt+F4"{
close-window
}
"Mod+Q" hotkey-overlay-title="关闭窗口" {
close-window
}
"Mod+Minus" hotkey-overlay-title="横向缩小窗口" {
set-column-width "-10%"
}
"Mod+Equal" hotkey-overlay-title="横向放大窗口" {
set-column-width "+10%"
}
"Mod+Shift+Minus" hotkey-overlay-title="纵向缩小窗口" {
set-window-height "-10%"
}
"Mod+Shift+Equal" hotkey-overlay-title="纵向放大窗口" {
set-window-height "+10%"
}
"Mod+F" hotkey-overlay-title="全屏窗口" {
fullscreen-window
}
"Mod+A" hotkey-overlay-title="悬浮切换" {
toggle-window-floating;
}
Mod+P hotkey-overlay-title="Notepad" {
spawn "qs" "-c" "dms" "ipc" "call" "notepad" "toggle";
}
//焦点切换
"Mod+Page_Down"{
focus-workspace-down
}
"Mod+Page_Up"{
focus-workspace-up
}
"Mod+Shift+Page_Down"{
move-window-to-workspace-down
}
"Mod+Shift+Page_Up"{
move-window-to-workspace-up
}
// 鼠标相关按键可以参考 https://github.com/YaLTeR/niri/pull/865
"Mod+MouseForward"{
focus-workspace-up
}
"Mod+MouseBack"{
focus-workspace-down
}
"Super+WheelScrollUp" {
focus-column-left
}
"Super+WheelScrollDown" {
focus-column-right
}
"Super+Shift+WheelScrollUp"{
move-column-left
}
"Super+Shift+WheelScrollDown"{
move-column-right
}
"Mod+up" hotkey-overlay-title="切换到下方工作区"{
focus-workspace-up
}
"Mod+down" hotkey-overlay-title="切换到上方工作区"{
focus-workspace-down
}
"Mod+Left" hotkey-overlay-title="左移焦点" {
focus-column-left
}
"Mod+Right" hotkey-overlay-title="右移焦点" {
focus-column-right
}
// 硬件控制
"XF86MonBrightnessUp" hotkey-overlay-title="增加亮度" allow-when-locked=true {
spawn "qs" "-c" "dms" "ipc" "call" "brightness" "increment" "5" ""
}
"XF86MonBrightnessDown" hotkey-overlay-title="降低亮度" allow-when-locked=true {
spawn "qs" "-c" "dms" "ipc" "call" "brightness" "decrement" "5" ""
}
"Super+Shift+XF86TouchpadOff" hotkey-overlay-title="copliot"{
toggle-window-floating;
}
}