niri(blankpad): desk-profile system, keybind rework, lid handler, noctalia config tracked

- config.kdl: display include optional=true (desk profiles link it per-desk),
  new optional switch-events.kdl include (per-host, blankpad-only)
- keybinds: swap-window-left/right on Mod+CTRL+H/L+arrows (join/exit columns
  on pass), move-column demoted to Mod+CTRL+Alt+chords; Print trio -> flameshot
  full/gui/screen (CTRL+Shift trio kept); launcher Mod+CTRL+Return -> Mod+D;
  Alt+Tab noctalia window-switcher; Mod+V clipboard panel; Mod+Shift+Space
  handy post-process; Mod+Shift+D desk cycle
- layout: preset column widths 12.5/25/33/50/67/75/87.5%
- desk-1-home.kdl: EDID-identity-keyed positions (M34 + eDP long names; PM1601
  connector placeholder pending EDID capture), focus-at-startup M34-first
- desk-2-portable.kdl: skeleton, EDID capture TODO
- switch-events: lid-close -> noctalia session lock-and-suspend
- autostart: handy --start-hidden (replaces Handy self-autostart)
- noctalia config.toml + settings.toml now tracked
- zz-blankpad display.kdl retired to .AGENTTRASH (superseded by desk-1-home)
niri validate: pass (assembled blankpad layout)
This commit is contained in:
Frank committed 2026-10-09 14:17:21 -07:00
1 parent 1d32829428
commit 4ec47a5b7e
10 files changed
+339 -36

No files matched your search

@@ -2,3 +2,4 @@
// https://github.com/YaLTeR/niri/wiki/Configuration:-Miscellaneous#spawn-sh-at-startup
spawn-at-startup "noctalia"
spawn-at-startup "handy" "--start-hidden"
@@ -0,0 +1,32 @@
// ────────────── Desk Profile: home (current rig) ──────────────
// Applied by symlinking this file to cfg/display.kdl (see scripts/desk.sh).
// Panels are keyed by EDID identity (manufacturer model serial), NOT by
// connector name — connector names reshuffle between desks; identity travels.
//
// requires: Sceptre Tech Inc Sceptre M34 Unknown
// requires: Lenovo Group Limited 0x40A9 Unknown
// optional: HDMI-A-1 (PM1601, dock-dependent)
output "Sceptre Tech Inc Sceptre M34 Unknown" {
mode "3440x1440@239.999"
scale 1
transform "normal"
position x=1581 y=-600
focus-at-startup
}
// PM1601 portrait panel (dock-dependent). EDID string NOT captured as of
// 2026-10-09 (panel disconnected) — connector-keyed placeholder.
// When plugged in: run `desk.sh capture`, re-key this block to the printed
// long name, update #optional above.
output "HDMI-A-1" {
scale 1
transform "90"
position x=1200 y=0
}
output "Lenovo Group Limited 0x40A9 Unknown" {
scale 1.0
position x=5021 y=-240
focus-at-startup
}
@@ -0,0 +1,18 @@
// ────────────── Desk Profile: portable (skeleton) ──────────────
// SKELETON — portable monitor EDID not captured yet. On first use at the
// portable desk: run `desk.sh capture`, replace PORTABLE-EDID-TBD below and
// in the requires list with the printed long name, adjust position to taste.
// requires: Lenovo Group Limited 0x40A9 Unknown
// requires: PORTABLE-EDID-TBD
output "Lenovo Group Limited 0x40A9 Unknown" {
scale 1.0
position x=0 y=0
focus-at-startup
}
// Assumed: 1920x1080 landscape panel right of the laptop panel.
output "PORTABLE-EDID-TBD" {
scale 1.0
position x=1920 y=0
}
@@ -1,29 +0,0 @@
// ────────────── Output Configuration ──────────────
// You can run `niri msg outputs` to get the correct name for your displays.
// https://github.com/YaLTeR/niri/wiki/Configuration:-Outputs
//
// eDP-1 (laptop panel) is pinned too: an output block resets unspecified
// properties to defaults, so its 1.25 scale must be repeated here.
//
// Both external PM1601 panels run portrait. niri's transform is
// counter-clockwise: "90" = panel's top bezel faces left, "270" = top bezel
// faces right. In portrait a 180° flip is the 90<->270 swap.
output "DP-2" {
mode "3440x1440@239.999"
scale 1
transform "normal"
position x=1581 y=-600
}
output "HDMI-A-1" {
scale 1
transform "90"
position x=1200 y=0
}
output "eDP-1" {
scale 1.0 // MUST restate: dashed-out by the block otherwise
position x=5021 y=-240
}
@@ -16,9 +16,13 @@ binds {
Mod+Shift+Return hotkey-overlay-title="Open Wallpaper Selector: noctalia wallpaper toggle" { spawn-sh "noctalia msg panel-toggle wallpaper"; }
Mod+S hotkey-overlay-title="Open Control Center: noctalia controlCenter" { spawn-sh "noctalia msg panel-toggle control-center"; }
Mod+Shift+S hotkey-overlay-title="Open Settings: noctalia settings" { spawn-sh "noctalia msg settings-toggle"; }
Mod+CTRL+Return hotkey-overlay-title="Open App Launcher: noctalia launcher" { spawn-sh "noctalia msg panel-toggle launcher"; }
Mod+D hotkey-overlay-title="Open App Launcher: noctalia launcher" { spawn-sh "noctalia msg panel-toggle launcher"; }
Mod+ALT+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 "noctalia msg panel-toggle session"; }
Mod+V hotkey-overlay-title="Clipboard History: noctalia panel" { spawn-sh "noctalia msg panel-toggle clipboard"; }
Alt+TAB hotkey-overlay-title="Window Switcher: noctalia" { spawn-sh "noctalia msg window-switcher"; }
Mod+Shift+Space hotkey-overlay-title="Handy: toggle post-process recording" allow-when-locked=true { spawn-sh "handy --toggle-post-process"; }
Mod+Shift+D hotkey-overlay-title="Cycle Desk Profile" { spawn-sh "desk.sh cycle"; }
// Please set the text editor of your choice.
// Mod+Shift+E hotkey-overlay-title="Open Text Editor: Zed" { spawn "zed"; }
@@ -52,10 +56,15 @@ binds {
Mod+Down { focus-window-down; }
Mod+J { focus-window-down; }
Mod+CTRL+Left { move-column-left; }
Mod+CTRL+H { move-column-left; }
Mod+CTRL+Right { move-column-right; }
Mod+CTRL+L { move-column-right; }
// swap-window = window walks sideways, joining/exiting columns it passes
Mod+CTRL+Left { swap-window-left; }
Mod+CTRL+H { swap-window-left; }
Mod+CTRL+Right { swap-window-right; }
Mod+CTRL+L { swap-window-right; }
Mod+CTRL+Alt+Left { move-column-left; }
Mod+CTRL+Alt+H { move-column-left; }
Mod+CTRL+Alt+Right { move-column-right; }
Mod+CTRL+Alt+L { move-column-right; }
Mod+CTRL+UP { move-window-up; }
Mod+CTRL+K { move-window-up; }
Mod+CTRL+Down { move-window-down; }
@@ -149,6 +158,9 @@ binds {
CTRL+Shift+1 hotkey-overlay-title="Screenshot: flameshot full" { spawn-sh "flameshot full"; }
CTRL+Shift+2 hotkey-overlay-title="Screenshot: flameshot screen" { spawn-sh "flameshot screen"; }
CTRL+Shift+3 hotkey-overlay-title="Screenshot: flameshot region" { spawn-sh "flameshot gui"; }
Print hotkey-overlay-title="Screenshot: flameshot full" { spawn-sh "flameshot full"; }
Ctrl+Print hotkey-overlay-title="Screenshot: flameshot region" { spawn-sh "flameshot gui"; }
Alt+Print hotkey-overlay-title="Screenshot: flameshot screen" { spawn-sh "flameshot screen"; }
// ─── Emergency Escape Key ───
// Use this when a fullscreen app blocks your keybinds.
@@ -0,0 +1,7 @@
// ────────────── Switch (lid) Events — blankpad laptop ──────────────
// Included by config.kdl via include optional=true; only blankpad links this.
// Pair with logind: if HandleLidSwitch=ignore is set, this is the sole path.
switch-events {
lid-close { spawn "noctalia" "msg" "session" "lock-and-suspend"; }
}