Kool_Quick_Settings.sh このつまり先通过 yad 或者 rofi 这些ツール图形化功能栏目,その後就できます通过コマンド打开ファイルディレクトリ结构#
省流版#
.config/hypr/
.
├── animations
├── application-style.conf
├── configs
├── hypridle.conf
├── hyprland.conf
├── hyprlock-2k.conf
├── hyprlock.conf
├── hyprpaper.conf
├── initial-boot.sh
├── Monitor_Profiles
├── monitors.conf
├── scripts
├── UserConfigs
├── UserScripts
├── v2.3.15
├── wallpaper_effects
├── wallust
└── workspaces.conf大概説明#
最重要ファイル: hyprland.conf, このファイルつまり一个相当于 hyprland 的根設定ファイル,窗口管理(WM)的根基設定
animations 是控制窗口、工作区、图层等 UI 元素的动画效果的一个ディレクトリ的設定ファイル. (できます通过 SUPER SHIFT A 来选择)
application-style.conf: hyprland-qt-support provides a QML style for hypr qt6 apps
configs 是项目 Default config ディレクトリ, 最好不要改动. scripts 同样是
UserConfigs 则不一样,是表示用户级别的設定ディレクトリ,できます自定义设置. UserScripts 同样
hypridle.conf :
hyprlock.conf 是与锁屏有关的設定ファイル
hyprpaper.conf 是显示器 wallpaper 设置的設定ファイル
initial-boot.sh 是 hyprland 启动的时候,如何渲染つまり通过この脚本ファイル来設定的
monitors.conf 是由 Monitor_Profile この与monitor設定有关的ディレクトリ里的 default.conf 生成的
wallpaper_effects 是 wallpaper 改变之后生成的一个ディレクトリ,有两个隐藏ファイル: .wallpaper_current 和 .wallpaper_modified
workspaces.conf 是一个由 Userconfigs 里的 WorkSpaceRules ファイル生成的一个ファイル,是一个工作区如何定义和管理的設定ファイル
wallust 是颜色定义ディレクトリ,里面有个ファイル (相当于一个常量头ファイル)
UserConfigs/WindowRules.conf このファイルつまり管理窗口的,定义规则看如何给窗口贴标签,分配 workspace 这些等1
たとえば:
windowrulev2 = tag +projects, class:^(codium|codium-url-handler|VSCodium)$
windowrulev2 = tag +projects, class:^(VSCode|code-url-handler)$
windowrulev2 = tag +projects, class:^(jetbrains-.+)$
# 这个可以实现在规定workspace启动应用窗口
windowrulev2 = workspace 4, tag:projects详细版ディレクトリ结构#
.config/hypr
.
├── animations
│ ├── 00-default.conf
│ ├── 01-default - v2.conf
│ ├── 03- Disable Animation.conf
│ ├── END-4.conf
│ ├── HYDE - default.conf
│ ├── HYDE - minimal-1.conf
│ ├── HYDE - minimal-2.conf
│ ├── HYDE - optimized.conf
│ ├── HYDE - Vertical.conf
│ ├── Mahaveer - me-1.conf
│ ├── Mahaveer - me-2.conf
│ ├── ML4W - classic.conf
│ ├── ML4W - dynamic.conf
│ ├── ML4W - fast.conf
│ ├── ML4W - high.conf
│ ├── ML4W - moving.conf
│ └── ML4W - standard.conf
├── application-style.conf
├── configs
│ └── Keybinds.conf
├── hypridle.conf
├── hyprland.conf
├── hyprlock-2k.conf
├── hyprlock.conf
├── hyprpaper.conf
├── initial-boot.sh
├── Monitor_Profiles
│ ├── default.conf
│ └── README
├── monitors.conf
├── scripts
│ ├── AirplaneMode.sh
│ ├── Animations.sh
│ ├── BrightnessKbd.sh
│ ├── Brightness.sh
│ ├── ChangeBlur.sh
│ ├── ChangeLayout.sh
│ ├── ClipManager.sh
│ ├── DarkLight.sh
│ ├── Distro_update.sh
│ ├── GameMode.sh
│ ├── Hypridle.sh
│ ├── KeyBinds.sh
│ ├── KeyHints.sh
│ ├── KillActiveProcess.sh
│ ├── Kitty_themes.sh
│ ├── Kool_Quick_Settings.sh
│ ├── KooLsDotsUpdate.sh
│ ├── LockScreen.sh
│ ├── MediaCtrl.sh
│ ├── MonitorProfiles.sh
│ ├── Polkit-NixOS.sh
│ ├── Polkit.sh
│ ├── PortalHyprland.sh
│ ├── RefreshNoWaybar.sh
│ ├── Refresh.sh
│ ├── RofiEmoji.sh
│ ├── RofiSearch.sh
│ ├── RofiThemeSelector-modified.sh
│ ├── RofiThemeSelector.sh
│ ├── ScreenShot.sh
│ ├── Sounds.sh
│ ├── SwitchKeyboardLayout.sh
│ ├── TouchPad.sh
│ ├── UptimeNixOS.sh
│ ├── Volume.sh
│ ├── WallustSwww.sh
│ ├── WaybarCava.sh
│ ├── WaybarLayout.sh
│ ├── WaybarScripts.sh
│ ├── WaybarStyles.sh
│ └── Wlogout.sh
├── UserConfigs
│ ├── 00-Readme
│ ├── 01-UserDefaults.conf
│ ├── ENVariables.conf
│ ├── LaptopDisplay.conf
│ ├── Laptops.conf
│ ├── Startup_Apps.conf
│ ├── UserAnimations.conf
│ ├── UserDecorations.conf
│ ├── UserKeybinds.conf
│ ├── UserSettings.conf
│ ├── WindowRules.conf
│ ├── WindowRules-new.conf
│ └── WorkSpaceRules
├── UserScripts
│ ├── 00-Readme
│ ├── RainbowBorders.sh
│ ├── RofiBeats.sh
│ ├── RofiCalc.sh
│ ├── WallpaperAutoChange.sh
│ ├── WallpaperEffects.sh
│ ├── WallpaperRandom.sh
│ ├── WallpaperSelect.sh
│ ├── Weather.py
│ ├── Weather.sh
│ └── ZshChangeTheme.sh
├── v2.3.15
├── wallpaper_effects
├── wallust
│ └── wallust-hyprland.conf
└── workspaces.conf設定#
应用自启动設定#
在 hyprland.conf このファイル里自定义软件的自启动2
examples:
exec-once = [workspace 1 silent] kitty
exec-once = [workspace 1 silent] subl
exec-once = [workspace 3 silent] mailspring
exec-once = [workspace 4 silent] firefoxexec VS exec-once#
You can execute a shell script on:3
- startup of the compositor
- every time the config is reloaded.
- shutdown of the compositor
exec-once = command will execute only on launch support rules
execr-once = command will execute only on launch
exec = command will execute on each reload support rules
execr = command will execute on each reload
exec-shutdown = command will execute only on shutdown
工作区 (Workspace)#
つまり如何自定义和管理 workspaces 的,そのため都是在 UserConfigs/WorkspaceRules 来设置来管理(不过この一旦设置つまり全部通用),或者通过 workspaces.conf このファイル来定义4
显示器 (Monitor)#
できます直接通过 nwg-displays 来快速设定 (できます SUPER SHIFT E 打开功能栏目その後搜索就できます了)
也できます直接自定义 monitors.conf ファイル5
できます通过 nwg-display ツール来设定显示器
快捷键 (keybinds)#
rules: bind = MODS, key, dispatcher, params6
examples: bind = SUPER, B, exec, firefox
根据上面ディレクトリ结构所说的,できます在 UserConfigs/UserKeybinds.conf 里定义,也有 UserScripts/UserKeybinds.sh 里定义脚本,还有一个 UserScripts/UserKeyHints.sh 有常用快捷键提示
这里说到快捷键要説明一下,渲染問題 (有 yad 和 rofi 这两个实现脚本的 GUI)
简单对比:
| 功能 | yad | rofi |
|---|---|---|
| 图形风格 | GTK,传统 GUI 样式 | 极简、dmenu 风格 |
| 多列显示 | ✅ 原生支持 | 🚫 不支持多列(需手动 hack) |
| 自定义交互复杂度 | 高(按钮、表单、进度条等) | 中(菜单交互 + 自定义脚本) |
| 外观主题支持 | GTK 主题 | rofi 主题(通过 config 设置) |
| 使用场景 | 設定ツール、提示菜单、设置界面 | 启动器、搜索菜单、快速选择器 |
環境変数 ENV#
在 /etc/environment 加载 fcitx5
#GTK_IM_MODULE=fcitx
#QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx
GLFW_IM_MODULE=ibus加载 nvidia (还是怕 nvidia 驱动没有加载,そのため在システム级别的 evn 中追加)
__NV_PRIME_RENDER_OFFLOAD=1
__GLX_VENDOR_LIBRARY_NAME=nvidiaNvidia#
nouveau この开源驱动,fedora 和 arch 方法不一样,arch できます直接在 /etc/mkinitcpio.conf 里的 HOOK 字段変更 (削除 kms 就行), その後就mkinitcpio -P禁用 nouveau 驱动#
在 /etc/modprobe.d このディレクトリ里编写一个ファイル:blacklist-nouveau. conf(ファイル名できます自己自定义)
blacklist nouveau
options nouveau modeset=0その後, 我们要加载この禁用的ファイル設定
/etc/default/grub ファイル中:
GRUB_CMDLINE_LINUX="rd.driver.blacklist=nouveau modprobe.blacklist=nouveau"その後就要: sudo dracut --force 重新生成 grub 引导ファイル
以防 nvidia 驱动没有启动,我们在很多方面都写了相关環境変数
在 /etc/modprobe.d 编写一个nvidia. confファイル7
options nvidia_drm modeset=1UserConfigs/ENVariables.conf 定义各种 env 包括nvidia的 (そのため基本我们为了项目化,都在この改动 env)
输入法设置#
Fcitx5 各种設定以及問題#
Rime 的大写模式下的問題#
在 Rime 的中文输入法下按下 capslock键 你就处于大写模式无法输入中文了,その後就各种文档参看, 找到2013 年的的 issue8, 这种应该按道理不管在哪个 DE 或者 WM 下都应该修复了才对的啊!!🤔
I’ll look into this problem tonight.
You can temporarily disable mode switching with Caps Lock by patching default.yaml:
# default.custom.yaml
patch: {
ascii_composer/switch_key/Caps_Lock: noop
}软件窗口里的输入法#
electron 应用的問題还是 hyprland 和 fcitx5 还不是很兼容的問題。我们必要在 desktop file 里的Exec字段手动定义实现できます用 fcitx5 的中文输入补充以下設定:
--enable-wayland-ime もし是用户级别的软件,我们必要在 .local/share/applications 里的 desktop file 里定义。否则,我们要在 /usr/share/applications 里查找 desktop file 来変更
なぜなら有些应用会出现输入中文的拼音会漏词 (つまり明明想要输入 shuru 但是可能会漏出 h 到 fcitx5 的候选词栏中), 有些ブログ说できます:
在 ~/.config/gtk-3.0/config ファイル中追加:9
[Settings]
gtk-im-module = fcitxElectron 相关应用参考官方链接#
比如软件:obsidian,vscode,chrome等10
なぜなら在 linux+nvidia+wayland 这种情况下,nvidia この gpu 加速不一定适配,そのため可能就无法实现很流畅地渲染,但是为了进可能地渲染
我们在 desktop file 里也定义:
--enable-features=UseOzonePlatform --ozone-platform=wayland
StartupWMClass=obsidian # 这个field就是添加窗口class属性(可以更好在窗口管理管理)代理問題: この也是要在 .desktop 里根据各个 applications 的要求设置 proxy
奇奇怪怪的問題#
firefox 的 class 問題#
目的: 想要实现在打开某些窗口的时候打开到固定的工作区
.config/hypr/UserConfigs/WindowRules.conf このファイル里定义窗口规则的时候,发现以下設定:
windowrule2 = tag +browser, class:^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr|[Ff]irefox-bin)
windowrule2 = workspace 4, tag: browser这样的設定根本没有在 workspace 4 打开 firefox, 我使用 hyprctl clients コマンド確認属性的时候,发现是正常的.
但是听从 gpt 意见写成:
windowrele2= workspace 4, tag +browser, class:^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr|[Ff]irefox-bin)这样的設定却できます生效,问了一下 gpt, 就说是以下原因:
窗口作成时机:某些应用程序在启动时可能会先作成窗口,その後再设置类名(class)等属性。もし tag 是基于 class 设置的,而 class 尚未被识别,tag 就不会被应用,导致依赖于该 tag 的规则无法生效。(比如 firefox)
waybar 的 icon 显示問題: 比如 waybar 的 rose 的主题,有时候会出现蓝牙图标没有显示(==我想到的可能性是蓝牙启动比 waybar 慢,そのため无法显示==),只有重新 refresh waybar 才行,そのためできます尝试在 hyprland.conf 中设置 exec-once = blueman-applet 我们手动设置让蓝牙启动
结论:
Hyprland 的 windowrulev2 规则在处理标签(tag)和工作区(workspace)时,应用顺序和窗口作成时机非常关键。もし窗口在作成时尚未被赋予标签,那么依赖于该标签的工作区规则可能不会生效。 spotify 也是这样,wiki 里也有提及11
为确保窗口在作成时立即被分配到正确的工作区,建议将标签和工作区的设置合并为一条规则,并确保窗口在作成时就匹配该规则。


