mirror of
https://github.com/bgrolleman/dotfiles.git
synced 2026-11-08 15:50:29 +01:00
Switch to Noctalia v5 and fix niri startup
Fix Mod+T bind (one action per bind), launch noctalia v5 from autostart, port keybinds to `noctalia msg`, add config.toml, changelog and docs. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
626bf30386
commit
cb80e100f4
6 files changed
+122
-17
No files matched your search
@@ -0,0 +1,12 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
## 2026-10-10
|
||||||
|
|
||||||
|
- Fix niri login: Mod+T bind had three actions, niri rejected the config and fell back to defaults (no bar, no kanshi).
|
||||||
|
- Autostart now launches `noctalia` (v5, native) instead of `qs -c noctalia-shell` (v4, Quickshell/QML).
|
||||||
|
- Reason for the switch: Qt 6.12 broke noctalia-shell 4.x colours (`resolveColorKey is not a function`) and noctalia-qs was built on 6.11.
|
||||||
|
- Port all niri keybinds from `qs ... ipc call` to `noctalia msg` (launcher, lock, session, volume, media, brightness).
|
||||||
|
- Add `noctalia/config.toml`: theme, wallpaper, weather, idle, dock and bar layout ported from the old `settings.json`.
|
||||||
|
- Bar on the 5120px ultrawide (DP-1) is limited to ~70% width via a per-monitor `margin_ends` override.
|
||||||
|
- Restore previous wallpaper (`stellar-blade-2024-ultrawide.jpg`) on all outputs.
|
||||||
|
- Document the noctalia v4 to v5 migration (files, keybinds, bar, rollback) in `docs/noctalia-v5.md` and CLAUDE.md.
|
||||||
@@ -40,7 +40,8 @@ This installs ansible if missing, then runs the playbook. Tasks are split by cat
|
|||||||
Edit the relevant split file, not `config.kdl` itself.
|
Edit the relevant split file, not `config.kdl` itself.
|
||||||
|
|
||||||
### Noctalia (desktop shell / bar)
|
### Noctalia (desktop shell / bar)
|
||||||
All settings live in `noctalia/settings.json` (JSON, edited by the Noctalia GUI or directly). Colorschemes are in `noctalia/colorschemes/` and plugins in `noctalia/plugins/`.
|
Runs **Noctalia v5** (`noctalia`, native). Config is `noctalia/config.toml` (TOML, hot-reloaded); validate with `noctalia config validate`.
|
||||||
|
`noctalia/settings.json` is the legacy v4 config. See `docs/noctalia-v5.md` for details and `CHANGELOG.md` for history.
|
||||||
|
|
||||||
### Neovim
|
### Neovim
|
||||||
Uses **LazyVIM** framework. Entry point is `nvim/init.lua` which bootstraps lazy.nvim via `nvim/lua/config/lazy.lua`.
|
Uses **LazyVIM** framework. Entry point is `nvim/init.lua` which bootstraps lazy.nvim via `nvim/lua/config/lazy.lua`.
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
# Noctalia v5
|
||||||
|
|
||||||
|
Noctalia v5 (`noctalia` package) is a native Wayland shell with no Qt dependency. It replaces v4
|
||||||
|
(`noctalia-shell` + `noctalia-qs`, Quickshell/QML), which broke on Qt 6.12.
|
||||||
|
|
||||||
|
## Files
|
||||||
|
|
||||||
|
- `noctalia/config.toml` - hand-edited config, hot-reloaded. Linked to `~/.config/noctalia/config.toml`.
|
||||||
|
- `~/.local/state/noctalia/settings.toml` - GUI-managed overrides and runtime state (not in this repo).
|
||||||
|
- `noctalia/settings.json` - old v4 config, kept for reference or fallback.
|
||||||
|
|
||||||
|
Validate after editing: `noctalia config validate`. Open the settings GUI: `noctalia msg settings-open`.
|
||||||
|
|
||||||
|
## Startup and keybinds
|
||||||
|
|
||||||
|
- Started from `niri/cfg/autostart.kdl` with `spawn-at-startup "noctalia"`.
|
||||||
|
- Keybinds in `niri/cfg/keybinds.kdl` call `noctalia msg <command>`; list them with `noctalia msg --help`.
|
||||||
|
- Panel ids for `panel-toggle`: clipboard, control-center, launcher, polkit, session, tray-drawer, wallpaper.
|
||||||
|
- Wallpaper is set with `noctalia msg wallpaper-set [output] <path>` and persists.
|
||||||
|
|
||||||
|
## Bar
|
||||||
|
|
||||||
|
- Layout is the `start`, `center` and `end` lists in `[bar.main]`.
|
||||||
|
- `[bar.main.monitor.ultrawide]` matches DP-1 and sets `margin_ends = 768`, which gives about 70% width on 5120px.
|
||||||
|
Formula: `(monitor_width - wanted_width) / 2`.
|
||||||
|
|
||||||
|
## Not ported from v4
|
||||||
|
|
||||||
|
- System monitor widget (widget id unknown in v5), per-widget options such as hover-only labels.
|
||||||
|
- v4 plugins (`polkit-agent`): v5 has a built-in `polkit` panel instead.
|
||||||
|
- The v4 bar only ran on DP-1; v5 runs on every output.
|
||||||
|
|
||||||
|
## Rolling back
|
||||||
|
|
||||||
|
Set autostart to `qs -c noctalia-shell` again and restore the `qs ... ipc call` binds from git history.
|
||||||
|
This needs a `noctalia-shell` that works with the installed Qt version.
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
// ────────────── Startup Applications ──────────────
|
// ────────────── Startup Applications ──────────────
|
||||||
// https://github.com/YaLTeR/niri/wiki/Configuration:-Miscellaneous#spawn-sh-at-startup
|
// https://github.com/YaLTeR/niri/wiki/Configuration:-Miscellaneous#spawn-sh-at-startup
|
||||||
|
|
||||||
spawn-sh-at-startup "qs -c noctalia-shell"
|
spawn-at-startup "noctalia"
|
||||||
spawn-at-startup "kanshi"
|
spawn-at-startup "kanshi"
|
||||||
+15
-15
@@ -16,29 +16,29 @@ binds {
|
|||||||
Mod+G hotkey-overlay-title="Focus: Gmail" { spawn-sh "$HOME/.config/niri/focus-or-launch.sh chrome-fmgjjmmmlfnkbppncabfkddbjimcfncm-Default /opt/helium-browser-bin/helium-wrapper --profile-directory=Default --app-id=fmgjjmmmlfnkbppncabfkddbjimcfncm"; }
|
Mod+G hotkey-overlay-title="Focus: Gmail" { spawn-sh "$HOME/.config/niri/focus-or-launch.sh chrome-fmgjjmmmlfnkbppncabfkddbjimcfncm-Default /opt/helium-browser-bin/helium-wrapper --profile-directory=Default --app-id=fmgjjmmmlfnkbppncabfkddbjimcfncm"; }
|
||||||
Mod+W hotkey-overlay-title="Focus: WhatsApp" { spawn-sh "$HOME/.config/niri/focus-or-launch.sh chrome-hnpfjngllnobngcgfapefoaidbinmjnm-Default /opt/helium-browser-bin/helium-wrapper --profile-directory=Default --app-id=hnpfjngllnobngcgfapefoaidbinmjnm"; }
|
Mod+W hotkey-overlay-title="Focus: WhatsApp" { spawn-sh "$HOME/.config/niri/focus-or-launch.sh chrome-hnpfjngllnobngcgfapefoaidbinmjnm-Default /opt/helium-browser-bin/helium-wrapper --profile-directory=Default --app-id=hnpfjngllnobngcgfapefoaidbinmjnm"; }
|
||||||
Mod+D hotkey-overlay-title="Focus: Todoist" { spawn-sh "$HOME/.config/niri/focus-or-launch.sh chrome-dlgohinmglaoopaiplliaecdpmnepmga-Default /opt/helium-browser-bin/helium-wrapper --profile-directory=Default --app-id=dlgohinmglaoopaiplliaecdpmnepmga"; }
|
Mod+D hotkey-overlay-title="Focus: Todoist" { spawn-sh "$HOME/.config/niri/focus-or-launch.sh chrome-dlgohinmglaoopaiplliaecdpmnepmga-Default /opt/helium-browser-bin/helium-wrapper --profile-directory=Default --app-id=dlgohinmglaoopaiplliaecdpmnepmga"; }
|
||||||
//Mod+CTRL+Return hotkey-overlay-title="Open App Launcher: noctalia launcher" { spawn-sh "qs -c noctalia-shell ipc call launcher toggle"; }
|
//Mod+CTRL+Return hotkey-overlay-title="Open App Launcher: noctalia launcher" { spawn-sh "noctalia msg panel-toggle launcher"; }
|
||||||
Alt+Space hotkey-overlay-title="Open App Launcher: noctalia launcher" { spawn-sh "qs -c noctalia-shell ipc call launcher toggle"; }
|
Alt+Space hotkey-overlay-title="Open App Launcher: noctalia launcher" { spawn-sh "noctalia msg panel-toggle launcher"; }
|
||||||
Alt+Shift+Space hotkey-overlay-title="Open Window Search: noctalia launcher" { spawn-sh "qs -c noctalia-shell ipc call launcher windows"; }
|
Alt+Shift+Space hotkey-overlay-title="Open Window Search: noctalia launcher" { spawn-sh "noctalia msg window-switcher"; }
|
||||||
Mod+B hotkey-overlay-title="Open Browser: helium" { spawn "helium-browser"; }
|
Mod+B hotkey-overlay-title="Open Browser: helium" { spawn "helium-browser"; }
|
||||||
Mod+L hotkey-overlay-title="Lock Screen: noctalia lock" { spawn-sh "qs -c noctalia-shell ipc call lockScreen lock"; }
|
Mod+L hotkey-overlay-title="Lock Screen: noctalia lock" { spawn-sh "noctalia msg session lock"; }
|
||||||
Mod+Shift+Q hotkey-overlay-title="Session Menu: noctalia sessionMenu" { spawn-sh "qs -c noctalia-shell ipc call sessionMenu toggle"; }
|
Mod+Shift+Q hotkey-overlay-title="Session Menu: noctalia sessionMenu" { spawn-sh "noctalia msg panel-toggle session"; }
|
||||||
|
|
||||||
// Please choose your own file manager.
|
// Please choose your own file manager.
|
||||||
Mod+E hotkey-overlay-title="File Manager: Nautilus" { spawn "nautilus"; }
|
Mod+E hotkey-overlay-title="File Manager: Nautilus" { spawn "nautilus"; }
|
||||||
|
|
||||||
// ─── Media Controls ───
|
// ─── Media Controls ───
|
||||||
XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call volume increase"; }
|
XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "noctalia msg volume-up"; }
|
||||||
XF86AudioLowerVolume allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call volume decrease"; }
|
XF86AudioLowerVolume allow-when-locked=true { spawn-sh "noctalia msg volume-down"; }
|
||||||
XF86AudioMute allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call volume muteOutput"; }
|
XF86AudioMute allow-when-locked=true { spawn-sh "noctalia msg volume-mute"; }
|
||||||
XF86AudioMicMute allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call volume muteInput"; }
|
XF86AudioMicMute allow-when-locked=true { spawn-sh "noctalia msg mic-mute"; }
|
||||||
XF86AudioNext allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call media next"; }
|
XF86AudioNext allow-when-locked=true { spawn-sh "noctalia msg media next"; }
|
||||||
XF86AudioPrev allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call media previous"; }
|
XF86AudioPrev allow-when-locked=true { spawn-sh "noctalia msg media previous"; }
|
||||||
XF86AudioPlay allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call media playPause"; }
|
XF86AudioPlay allow-when-locked=true { spawn-sh "noctalia msg media toggle"; }
|
||||||
XF86AudioPause allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call media playPause"; }
|
XF86AudioPause allow-when-locked=true { spawn-sh "noctalia msg media toggle"; }
|
||||||
|
|
||||||
// ─── Brightness Controls ───
|
// ─── Brightness Controls ───
|
||||||
XF86MonBrightnessUp allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call brightness increase"; }
|
XF86MonBrightnessUp allow-when-locked=true { spawn-sh "noctalia msg brightness-up"; }
|
||||||
XF86MonBrightnessDown allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call brightness decrease"; }
|
XF86MonBrightnessDown allow-when-locked=true { spawn-sh "noctalia msg brightness-down"; }
|
||||||
|
|
||||||
// ─── Window Movement and Focus ───
|
// ─── Window Movement and Focus ───
|
||||||
Alt+H { focus-column-left; }
|
Alt+H { focus-column-left; }
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
# Ported from the old settings.json (noctalia-shell 4.x). Unlisted keys use defaults.
|
||||||
|
|
||||||
|
[theme]
|
||||||
|
mode = "dark"
|
||||||
|
source = "builtin"
|
||||||
|
builtin = "Catppuccin"
|
||||||
|
|
||||||
|
[wallpaper]
|
||||||
|
enabled = true
|
||||||
|
fill_mode = "crop"
|
||||||
|
transition = ["fade", "disc", "stripes", "wipe", "honeycomb"]
|
||||||
|
transition_duration = 1500
|
||||||
|
directory = "/home/bgrolleman/Documents/Resources/Backgrounds"
|
||||||
|
|
||||||
|
[weather]
|
||||||
|
enabled = true
|
||||||
|
unit = "celsius"
|
||||||
|
|
||||||
|
[location]
|
||||||
|
address = "Amersfoort, The Netherlands"
|
||||||
|
|
||||||
|
[idle.behavior.lock]
|
||||||
|
timeout = 660
|
||||||
|
action = "lock"
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
[idle.behavior.screen-off]
|
||||||
|
timeout = 600
|
||||||
|
action = "screen_off"
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
[dock]
|
||||||
|
enabled = true
|
||||||
|
position = "left"
|
||||||
|
auto_hide = true
|
||||||
|
|
||||||
|
[bar.main]
|
||||||
|
position = "top"
|
||||||
|
background_opacity = 0.93
|
||||||
|
capsule = true
|
||||||
|
margin_ends = 4
|
||||||
|
margin_edge = 4
|
||||||
|
widget_spacing = 6
|
||||||
|
|
||||||
|
start = ["launcher", "taskbar"]
|
||||||
|
center = ["clock", "media"]
|
||||||
|
end = ["workspaces", "tray", "network", "bluetooth", "notifications", "battery", "volume", "brightness", "control-center"]
|
||||||
|
|
||||||
|
[widget.clock]
|
||||||
|
format = "{:%H:%M %a, %b %d}"
|
||||||
|
tooltip_format = "{:%H:%M %a, %b %d}"
|
||||||
|
|
||||||
|
# 70% of the 5120px ultrawide: (5120 - 3584) / 2
|
||||||
|
[bar.main.monitor.ultrawide]
|
||||||
|
match = "DP-1"
|
||||||
|
margin_ends = 768
|
||||||
Reference in new issue
Block a user