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:
@@ -5,10 +5,13 @@
|
||||
background-color "transparent" // <- needed for noctalia-shell to set wallpaper
|
||||
|
||||
preset-column-widths {
|
||||
proportion 0.125
|
||||
proportion 0.25
|
||||
proportion 0.33333
|
||||
proportion 0.5
|
||||
proportion 0.66667
|
||||
proportion 0.875
|
||||
proportion 0.75
|
||||
proportion 0.875
|
||||
}
|
||||
|
||||
struts {
|
||||
|
||||
@@ -8,10 +8,11 @@ gestures {
|
||||
include "./cfg/autostart.kdl"
|
||||
include "./cfg/keybinds.kdl"
|
||||
include "./cfg/input.kdl"
|
||||
include "./cfg/display.kdl"
|
||||
include optional=true "./cfg/display.kdl"
|
||||
include "./cfg/layout.kdl"
|
||||
include "./cfg/rules.kdl"
|
||||
include "./cfg/misc.kdl"
|
||||
include optional=true "./cfg/switch-events.kdl"
|
||||
|
||||
|
||||
include "noctalia.kdl"
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
[shell]
|
||||
polkit_agent = true
|
||||
|
||||
[wallpaper]
|
||||
directory = "/home/blank/.local/share/noctalia/wallpapers"
|
||||
@@ -0,0 +1,253 @@
|
||||
config_version = 14
|
||||
|
||||
[audio]
|
||||
enable_overdrive = true
|
||||
enable_sounds = true
|
||||
|
||||
[bar.default]
|
||||
center = [ "cat" ]
|
||||
end = [ "notifications", "clipboard", "network", "bluetooth", "tray", "battery", "session", "control-center", "clock" ]
|
||||
font_family = "Terminess Nerd Font"
|
||||
font_weight = 700
|
||||
|
||||
[location]
|
||||
auto_locate = true
|
||||
|
||||
[lockscreen_widgets]
|
||||
enabled = false
|
||||
schema_version = 2
|
||||
widget_order = [
|
||||
"lockscreen-login-box@DP-1",
|
||||
"lockscreen-login-box@HDMI-A-1",
|
||||
"lockscreen-login-box@DP-2",
|
||||
"lockscreen-login-box@eDP-1"
|
||||
]
|
||||
|
||||
[lockscreen_widgets.grid]
|
||||
cell_size = 16
|
||||
major_interval = 4
|
||||
visible = true
|
||||
|
||||
[lockscreen_widgets.widget."lockscreen-login-box@DP-1"]
|
||||
box_height = 196.0
|
||||
box_width = 810.0
|
||||
cx = 640.0
|
||||
cy = 538.0
|
||||
output = "DP-1"
|
||||
placement_height = 720.0
|
||||
placement_width = 1280.0
|
||||
rotation = 0.0
|
||||
type = "login_box"
|
||||
|
||||
[lockscreen_widgets.widget."lockscreen-login-box@DP-1".settings]
|
||||
background_color = "surface_variant"
|
||||
background_opacity = 0.88
|
||||
background_radius = 12.0
|
||||
center_password_text = false
|
||||
input_opacity = 1.0
|
||||
input_radius = 6.0
|
||||
layout = "regular"
|
||||
show_caps_lock = true
|
||||
show_keyboard_layout = true
|
||||
show_login_button = true
|
||||
show_media = true
|
||||
show_session_buttons = true
|
||||
show_unlock_hint = true
|
||||
show_weather = true
|
||||
|
||||
[lockscreen_widgets.widget."lockscreen-login-box@DP-2"]
|
||||
box_height = 196.0
|
||||
box_width = 810.0
|
||||
cx = 1719.999755859375
|
||||
cy = 1221.60009765625
|
||||
output = "DP-2"
|
||||
placement_height = 1440.0
|
||||
placement_width = 3440.0
|
||||
rotation = 0.0
|
||||
type = "login_box"
|
||||
|
||||
[lockscreen_widgets.widget."lockscreen-login-box@DP-2".settings]
|
||||
background_color = "surface_variant"
|
||||
background_opacity = 0.88
|
||||
background_radius = 12.0
|
||||
center_password_text = false
|
||||
input_opacity = 1.0
|
||||
input_radius = 6.0
|
||||
layout = "regular"
|
||||
show_caps_lock = true
|
||||
show_keyboard_layout = true
|
||||
show_login_button = true
|
||||
show_media = true
|
||||
show_session_buttons = true
|
||||
show_unlock_hint = true
|
||||
show_weather = true
|
||||
|
||||
[lockscreen_widgets.widget."lockscreen-login-box@HDMI-A-1"]
|
||||
box_height = 196.0
|
||||
box_width = 720.0
|
||||
cx = 600.0
|
||||
cy = 1628.800048828125
|
||||
output = "HDMI-A-1"
|
||||
placement_height = 1920.0
|
||||
placement_width = 1200.0
|
||||
rotation = 0.0
|
||||
type = "login_box"
|
||||
|
||||
[lockscreen_widgets.widget."lockscreen-login-box@HDMI-A-1".settings]
|
||||
background_color = "surface_variant"
|
||||
background_opacity = 0.88
|
||||
background_radius = 12.0
|
||||
center_password_text = false
|
||||
input_opacity = 1.0
|
||||
input_radius = 6.0
|
||||
layout = "regular"
|
||||
show_caps_lock = true
|
||||
show_keyboard_layout = true
|
||||
show_login_button = true
|
||||
show_media = true
|
||||
show_session_buttons = true
|
||||
show_unlock_hint = true
|
||||
show_weather = true
|
||||
|
||||
[lockscreen_widgets.widget."lockscreen-login-box@eDP-1"]
|
||||
box_height = 196.0
|
||||
box_width = 810.0
|
||||
cx = 960.0
|
||||
cy = 852.5
|
||||
output = "eDP-1"
|
||||
placement_height = 1080.0
|
||||
placement_width = 1920.0
|
||||
rotation = 0.0
|
||||
type = "login_box"
|
||||
|
||||
[lockscreen_widgets.widget."lockscreen-login-box@eDP-1".settings]
|
||||
background_color = "surface_variant"
|
||||
background_opacity = 0.88
|
||||
background_radius = 12.0
|
||||
center_password_text = false
|
||||
input_opacity = 1.0
|
||||
input_radius = 6.0
|
||||
layout = "regular"
|
||||
show_caps_lock = true
|
||||
show_keyboard_layout = true
|
||||
show_login_button = true
|
||||
show_media = true
|
||||
show_session_buttons = true
|
||||
show_unlock_hint = true
|
||||
show_weather = true
|
||||
|
||||
[nightlight]
|
||||
enabled = true
|
||||
|
||||
[plugin_settings."dotnetrob/cat"]
|
||||
panel_open_near_click = false
|
||||
panel_placement = "floating"
|
||||
panel_position = "center"
|
||||
|
||||
[plugins]
|
||||
enabled = [
|
||||
"noctalia/wallhaven",
|
||||
"prponkshe/umbriel-displays",
|
||||
"ashur-d/nvim-projects",
|
||||
"thepunkoff/pomodoro",
|
||||
"umedbazarov/webapp-maker",
|
||||
"emiliovenegas/omp-launcher",
|
||||
"yugaaank/better-clock",
|
||||
"dotnetrob/cat",
|
||||
"yuuto/calculator",
|
||||
"joshuaslate/shelly"
|
||||
]
|
||||
|
||||
[shell]
|
||||
external_ip_enabled = true
|
||||
font_family = "Terminess Nerd Font Propo"
|
||||
|
||||
[shell.panel]
|
||||
transparency_mode = "glass"
|
||||
|
||||
[theme]
|
||||
builtin = "Kanagawa"
|
||||
community_palette = "Gruber Darker"
|
||||
custom_palette = "Gruber Red"
|
||||
mode = "dark"
|
||||
shell_mode = "dark"
|
||||
source = "custom"
|
||||
|
||||
[theme.templates]
|
||||
builtin_ids = [
|
||||
"alacritty",
|
||||
"btop",
|
||||
"cava",
|
||||
"emacs",
|
||||
"foot",
|
||||
"gtk3",
|
||||
"gtk4",
|
||||
"ghostty",
|
||||
"helix",
|
||||
"hyprland",
|
||||
"kcolorscheme",
|
||||
"kitty",
|
||||
"labwc",
|
||||
"mango",
|
||||
"niri",
|
||||
"qt",
|
||||
"scroll",
|
||||
"starship",
|
||||
"sway",
|
||||
"umbriel",
|
||||
"wezterm"
|
||||
]
|
||||
community_ids = [
|
||||
"pi-agent",
|
||||
"ytm-player",
|
||||
"pywalfox",
|
||||
"pywalfox-beta4",
|
||||
"ungoogled-chromium",
|
||||
"micro",
|
||||
"neovim",
|
||||
"obsidian",
|
||||
"vscode",
|
||||
"steam",
|
||||
"rofi",
|
||||
"fastfetch",
|
||||
"bat",
|
||||
"fzf",
|
||||
"glow",
|
||||
"herdr",
|
||||
"lazygit",
|
||||
"tmux"
|
||||
]
|
||||
|
||||
[wallpaper]
|
||||
transition = [ "fade" ]
|
||||
|
||||
[wallpaper.automation]
|
||||
enabled = true
|
||||
interval_seconds = 1200
|
||||
|
||||
[wallpaper.default]
|
||||
path = "/home/blank/.local/share/noctalia/wallpapers/wallhaven_v9e2w3.jpg"
|
||||
|
||||
[wallpaper.last]
|
||||
path = "/home/blank/.local/share/noctalia/wallpapers/wallhaven_v9e2w3.jpg"
|
||||
|
||||
[wallpaper.monitors.DP-1]
|
||||
path = "/home/blank/.local/share/noctalia/wallpapers/wallhaven_nzz3gy.jpg"
|
||||
|
||||
[wallpaper.monitors.DP-2]
|
||||
path = "/home/blank/.local/share/noctalia/wallpapers/wallhaven_v9e2w3.jpg"
|
||||
|
||||
[wallpaper.monitors.HDMI-A-1]
|
||||
path = "/home/blank/.local/share/noctalia/wallpapers/wallhaven_v9e2w3.jpg"
|
||||
|
||||
[wallpaper.monitors.eDP-1]
|
||||
path = "/home/blank/.local/share/noctalia/wallpapers/wallhaven_v9e2w3.jpg"
|
||||
|
||||
[weather]
|
||||
unit = "imperial"
|
||||
|
||||
[widget.cat]
|
||||
type = "dotnetrob/cat:cat"
|
||||
|
||||
[widget.tray]
|
||||
drawer = true
|
||||
@@ -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"; }
|
||||
}
|
||||
Reference in New Issue
Block a user