2026-04-04 16:46:30 -04:00
|
|
|
{
|
|
|
|
|
inputs,
|
|
|
|
|
...
|
|
|
|
|
}:
|
|
|
|
|
{
|
|
|
|
|
flake.modules.nixos.niri =
|
|
|
|
|
{ pkgs, ... }:
|
|
|
|
|
{
|
|
|
|
|
imports = [
|
|
|
|
|
inputs.niri.nixosModules.niri
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
nixpkgs.overlays = [ inputs.niri.overlays.niri ];
|
|
|
|
|
|
|
|
|
|
programs = {
|
|
|
|
|
niri = {
|
|
|
|
|
enable = true;
|
|
|
|
|
package = pkgs.niri-unstable;
|
|
|
|
|
};
|
|
|
|
|
uwsm = {
|
|
|
|
|
waylandCompositors.niri = {
|
|
|
|
|
prettyName = "Niri";
|
|
|
|
|
binPath = "/run/current-system/sw/bin/niri-session";
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
environment.systemPackages = [ pkgs.xwayland-satellite-unstable ];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
flake.modules.homeManager.niri =
|
|
|
|
|
{
|
|
|
|
|
pkgs,
|
|
|
|
|
lib,
|
|
|
|
|
config,
|
|
|
|
|
...
|
|
|
|
|
}:
|
|
|
|
|
let
|
|
|
|
|
# Executables
|
|
|
|
|
foot = lib.getExe' config.programs.foot.package "foot";
|
|
|
|
|
vicinae = lib.getExe' config.programs.vicinae.package "vicinae";
|
|
|
|
|
yazi = lib.getExe' config.programs.yazi.package "yazi";
|
|
|
|
|
noctalia-shell = lib.getExe' config.programs.noctalia-shell.package "noctalia-shell";
|
|
|
|
|
playerctl = lib.getExe' pkgs.playerctl "playerctl";
|
|
|
|
|
wpctl = lib.getExe' pkgs.wireplumber "wpctl";
|
|
|
|
|
brightnessctl = lib.getExe' pkgs.brightnessctl "brightnessctl";
|
|
|
|
|
in
|
|
|
|
|
{
|
2026-04-04 17:56:31 -04:00
|
|
|
home.packages = [
|
|
|
|
|
pkgs.nautilus
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
xdg.portal = {
|
|
|
|
|
enable = true;
|
|
|
|
|
configPackages = [ pkgs.gnome-session ];
|
|
|
|
|
extraPortals = with pkgs; [
|
|
|
|
|
xdg-desktop-portal-gnome
|
|
|
|
|
xdg-desktop-portal-gtk
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
|
2026-04-11 14:20:23 -04:00
|
|
|
xdg.configFile."niri/config.kdl".text = ''
|
|
|
|
|
input {
|
|
|
|
|
keyboard {
|
|
|
|
|
xkb {
|
|
|
|
|
layout "us"
|
|
|
|
|
model ""
|
|
|
|
|
rules ""
|
|
|
|
|
variant ""
|
|
|
|
|
options "compose:ralt"
|
|
|
|
|
}
|
|
|
|
|
repeat-delay 400
|
|
|
|
|
repeat-rate 35
|
|
|
|
|
track-layout "global"
|
|
|
|
|
}
|
|
|
|
|
touchpad {
|
|
|
|
|
tap
|
|
|
|
|
dwt
|
|
|
|
|
drag true
|
|
|
|
|
drag-lock
|
|
|
|
|
scroll-method "two-finger"
|
|
|
|
|
click-method "clickfinger"
|
|
|
|
|
tap-button-map "left-right-middle"
|
|
|
|
|
}
|
|
|
|
|
warp-mouse-to-focus mode="center-xy-always"
|
|
|
|
|
focus-follows-mouse
|
|
|
|
|
mod-key "Super"
|
|
|
|
|
}
|
|
|
|
|
screenshot-path "${config.xdg.userDirs.extraConfig.SCREENSHOTS}/%Y%m%d-%H%M%S.png"
|
|
|
|
|
prefer-no-csd
|
|
|
|
|
layout {
|
|
|
|
|
gaps 16
|
|
|
|
|
struts {
|
|
|
|
|
left 0
|
|
|
|
|
right 0
|
|
|
|
|
top 0
|
|
|
|
|
bottom 0
|
|
|
|
|
}
|
|
|
|
|
focus-ring { width 4; }
|
|
|
|
|
border { off; }
|
|
|
|
|
default-column-width
|
|
|
|
|
center-focused-column "never"
|
|
|
|
|
}
|
|
|
|
|
cursor {
|
|
|
|
|
xcursor-theme "${config.home.pointerCursor.name}"
|
|
|
|
|
xcursor-size ${toString config.home.pointerCursor.size}
|
|
|
|
|
hide-when-typing
|
|
|
|
|
}
|
|
|
|
|
hotkey-overlay { skip-at-startup; }
|
|
|
|
|
environment { "NIXOS_OZONE_WL" "1"; }
|
|
|
|
|
binds {
|
|
|
|
|
Alt+XF86AudioLowerVolume allow-when-locked=true hotkey-overlay-title="Lower microphone volume" { spawn "${wpctl}" "set-volume" "@DEFAULT_AUDIO_SOURCE@" "0.05-"; }
|
|
|
|
|
Alt+XF86AudioMute allow-when-locked=true hotkey-overlay-title="Mute microphone" repeat=false { spawn "${wpctl}" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; }
|
|
|
|
|
Alt+XF86AudioRaiseVolume allow-when-locked=true hotkey-overlay-title="Raise microphone volume" { spawn "${wpctl}" "set-volume" "@DEFAULT_AUDIO_SOURCE@" "0.05+"; }
|
|
|
|
|
Mod+A hotkey-overlay-title="Launcher" repeat=false { spawn "${vicinae}" "toggle"; }
|
|
|
|
|
Mod+BracketLeft hotkey-overlay-title="Move window left" repeat=false { consume-or-expel-window-left; }
|
|
|
|
|
Mod+BracketRight hotkey-overlay-title="Move window right" repeat=false { consume-or-expel-window-right; }
|
|
|
|
|
Mod+Ctrl+0 hotkey-overlay-title="Reset display scale" { spawn "output-scale" "1.0"; }
|
|
|
|
|
Mod+Ctrl+Equal hotkey-overlay-title="Increase display scale" { spawn "output-scale" "+0.1"; }
|
|
|
|
|
Mod+Ctrl+F hotkey-overlay-title="Fill empty column space" repeat=false { expand-column-to-available-width; }
|
|
|
|
|
Mod+Ctrl+J hotkey-overlay-title="Focus workspace down" repeat=false { focus-workspace-down; }
|
|
|
|
|
Mod+Ctrl+K hotkey-overlay-title="Focus workspace up" repeat=false { focus-workspace-up; }
|
|
|
|
|
Mod+Ctrl+Minus hotkey-overlay-title="Decrease display scale" { spawn "output-scale" "-0.1"; }
|
|
|
|
|
Mod+Ctrl+N hotkey-overlay-title="Clear notifications" repeat=false { spawn "${noctalia-shell}" "ipc" "call" "notifications" "clear"; }
|
|
|
|
|
Mod+Ctrl+Shift+J hotkey-overlay-title="Move column to workspace down" repeat=false { move-column-to-workspace-down; }
|
|
|
|
|
Mod+Ctrl+Shift+K hotkey-overlay-title="Move column to workspace up" repeat=false { move-column-to-workspace-up; }
|
|
|
|
|
Mod+E hotkey-overlay-title="File Explorer" repeat=false { spawn "${foot}" "-e" "${yazi}"; }
|
|
|
|
|
Mod+Equal hotkey-overlay-title="Increase column width" { set-column-width "+10%"; }
|
|
|
|
|
Mod+Escape hotkey-overlay-title="Session menu" repeat=false { spawn "${noctalia-shell}" "ipc" "call" "sessionMenu" "toggle"; }
|
|
|
|
|
Mod+F hotkey-overlay-title="Maximize Column" repeat=false { maximize-column; }
|
|
|
|
|
Mod+H hotkey-overlay-title="Focus window left" repeat=false { focus-column-or-monitor-left; }
|
|
|
|
|
Mod+J hotkey-overlay-title="Focus window down" repeat=false { focus-window-or-monitor-down; }
|
|
|
|
|
Mod+K hotkey-overlay-title="Focus window up" repeat=false { focus-window-or-monitor-up; }
|
|
|
|
|
Mod+L hotkey-overlay-title="Focus window right" repeat=false { focus-column-or-monitor-right; }
|
|
|
|
|
Mod+Minus hotkey-overlay-title="Decrease column width" { set-column-width "-10%"; }
|
|
|
|
|
Mod+N hotkey-overlay-title="Show notifications" repeat=false { spawn "${noctalia-shell}" "ipc" "call" "notifications" "toggleHistory"; }
|
|
|
|
|
Mod+Print hotkey-overlay-title="Screenshot window" repeat=false { screenshot-window; }
|
|
|
|
|
Mod+Q hotkey-overlay-title="Close window" repeat=false { close-window; }
|
|
|
|
|
Mod+Shift+Equal hotkey-overlay-title="Increase window height" { set-window-height "+10%"; }
|
|
|
|
|
Mod+Shift+F hotkey-overlay-title="Fullscreen" repeat=false { fullscreen-window; }
|
|
|
|
|
Mod+Shift+H hotkey-overlay-title="Move column left" repeat=false { move-column-left-or-to-monitor-left; }
|
|
|
|
|
Mod+Shift+J hotkey-overlay-title="Move column down" repeat=false { move-column-to-monitor-down; }
|
|
|
|
|
Mod+Shift+K hotkey-overlay-title="Move column up" repeat=false { move-column-to-monitor-up; }
|
|
|
|
|
Mod+Shift+L hotkey-overlay-title="Move column right" repeat=false { move-column-right-or-to-monitor-right; }
|
|
|
|
|
Mod+Shift+Minus hotkey-overlay-title="Decrease window height" { set-window-height "-10%"; }
|
|
|
|
|
Mod+Slash hotkey-overlay-title="Show hotkeys" repeat=false { show-hotkey-overlay; }
|
|
|
|
|
Mod+T hotkey-overlay-title="Toggle tabbed column" repeat=false { toggle-column-tabbed-display; }
|
|
|
|
|
Mod+Tab hotkey-overlay-title="Toggle overview" repeat=false { toggle-overview; }
|
|
|
|
|
Mod+W hotkey-overlay-title="Terminal" repeat=false { spawn "${foot}"; }
|
|
|
|
|
Mod+Z hotkey-overlay-title="Toggle floating" repeat=false { toggle-window-floating; }
|
|
|
|
|
Print hotkey-overlay-title="Screenshot" repeat=false { screenshot show-pointer=false; }
|
|
|
|
|
Shift+Print hotkey-overlay-title="Screenshot screen" repeat=false { screenshot-screen show-pointer=false; }
|
|
|
|
|
XF86AudioLowerVolume allow-when-locked=true hotkey-overlay-title="Lower volume" { spawn "${wpctl}" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05-"; }
|
|
|
|
|
XF86AudioMute allow-when-locked=true hotkey-overlay-title="Mute playback" repeat=false { spawn "${wpctl}" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; }
|
|
|
|
|
XF86AudioNext hotkey-overlay-title="Next track" repeat=false { spawn "${playerctl}" "next"; }
|
|
|
|
|
XF86AudioPlay hotkey-overlay-title="Play / pause track" repeat=false { spawn "${playerctl}" "play-pause"; }
|
|
|
|
|
XF86AudioPrev hotkey-overlay-title="Previous track" repeat=false { spawn "${playerctl}" "previous"; }
|
|
|
|
|
XF86AudioRaiseVolume allow-when-locked=true hotkey-overlay-title="Raise volume" { spawn "${wpctl}" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05+"; }
|
|
|
|
|
XF86MonBrightnessDown allow-when-locked=true hotkey-overlay-title="Decrease brightness" { spawn "${brightnessctl}" "set" "5%-"; }
|
|
|
|
|
XF86MonBrightnessUp allow-when-locked=true hotkey-overlay-title="Increase brightness" { spawn "${brightnessctl}" "set" "5%+"; }
|
|
|
|
|
}
|
|
|
|
|
spawn-at-startup "noctalia-shell"
|
|
|
|
|
blur {
|
|
|
|
|
passes 2
|
|
|
|
|
offset 4.0
|
|
|
|
|
}
|
|
|
|
|
window-rule {
|
|
|
|
|
geometry-corner-radius 10.000000 10.000000 10.000000 10.000000
|
|
|
|
|
clip-to-geometry true
|
|
|
|
|
}
|
|
|
|
|
window-rule {
|
|
|
|
|
match app-id="foot"
|
|
|
|
|
match app-id="Alacritty"
|
|
|
|
|
default-column-width { proportion 0.400000; }
|
|
|
|
|
opacity 0.870000
|
|
|
|
|
background-effect {
|
|
|
|
|
blur true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
layer-rule {
|
|
|
|
|
match namespace="^noctalia-overview*"
|
|
|
|
|
place-within-backdrop true
|
|
|
|
|
}
|
|
|
|
|
gestures { hot-corners { off; }; }
|
|
|
|
|
xwayland-satellite { path "${lib.getExe pkgs.xwayland-satellite-unstable}"; }
|
|
|
|
|
'';
|
|
|
|
|
# settings = {
|
|
|
|
|
# input = {
|
|
|
|
|
# keyboard = {
|
|
|
|
|
# xkb = {
|
|
|
|
|
# layout = "us";
|
|
|
|
|
# options = "compose:ralt";
|
|
|
|
|
# };
|
|
|
|
|
# };
|
|
|
|
|
# touchpad = {
|
|
|
|
|
# enable = true;
|
|
|
|
|
# click-method = "clickfinger";
|
|
|
|
|
# drag = true;
|
|
|
|
|
# drag-lock = true;
|
|
|
|
|
# dwt = true;
|
|
|
|
|
# natural-scroll = false;
|
|
|
|
|
# scroll-method = "two-finger";
|
|
|
|
|
# tap = true;
|
|
|
|
|
# tap-button-map = "left-right-middle"; # Mouse button click to register when tapping with 1, 2, or 3 fingers
|
|
|
|
|
# };
|
|
|
|
|
# warp-mouse-to-focus = {
|
|
|
|
|
# enable = true;
|
|
|
|
|
# mode = "center-xy-always";
|
|
|
|
|
# };
|
|
|
|
|
# focus-follows-mouse = {
|
|
|
|
|
# enable = true;
|
|
|
|
|
# };
|
|
|
|
|
# mod-key = "Super";
|
|
|
|
|
# };
|
|
|
|
|
# binds = {
|
|
|
|
|
# # General
|
|
|
|
|
# "Mod+Slash" = {
|
|
|
|
|
# action.show-hotkey-overlay = { };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Show hotkeys";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+Q" = {
|
|
|
|
|
# action.close-window = { };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Close window";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+W" = {
|
|
|
|
|
# action.spawn = foot;
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Terminal";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+A" = {
|
|
|
|
|
# action.spawn = [
|
|
|
|
|
# vicinae
|
|
|
|
|
# "toggle"
|
|
|
|
|
# ];
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Launcher";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+E" = {
|
|
|
|
|
# action.spawn = [
|
|
|
|
|
# foot
|
|
|
|
|
# "-e"
|
|
|
|
|
# yazi
|
|
|
|
|
# ];
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "File Explorer";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+Escape" = {
|
|
|
|
|
# action.spawn = [
|
|
|
|
|
# noctalia-shell
|
|
|
|
|
# "ipc"
|
|
|
|
|
# "call"
|
|
|
|
|
# "sessionMenu"
|
|
|
|
|
# "toggle"
|
|
|
|
|
# ];
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Session menu";
|
|
|
|
|
# };
|
2026-04-04 16:46:30 -04:00
|
|
|
|
2026-04-11 14:20:23 -04:00
|
|
|
# # Notifications
|
|
|
|
|
# "Mod+N" = {
|
|
|
|
|
# action.spawn = [
|
|
|
|
|
# noctalia-shell
|
|
|
|
|
# "ipc"
|
|
|
|
|
# "call"
|
|
|
|
|
# "notifications"
|
|
|
|
|
# "toggleHistory"
|
|
|
|
|
# ];
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Show notifications";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+Ctrl+N" = {
|
|
|
|
|
# action.spawn = [
|
|
|
|
|
# noctalia-shell
|
|
|
|
|
# "ipc"
|
|
|
|
|
# "call"
|
|
|
|
|
# "notifications"
|
|
|
|
|
# "clear"
|
|
|
|
|
# ];
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Clear notifications";
|
|
|
|
|
# };
|
2026-04-04 16:46:30 -04:00
|
|
|
|
2026-04-11 14:20:23 -04:00
|
|
|
# # Media keys
|
|
|
|
|
# "XF86AudioPrev" = {
|
|
|
|
|
# action.spawn = [
|
|
|
|
|
# playerctl
|
|
|
|
|
# "previous"
|
|
|
|
|
# ];
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Previous track";
|
|
|
|
|
# };
|
|
|
|
|
# "XF86AudioPlay" = {
|
|
|
|
|
# action.spawn = [
|
|
|
|
|
# playerctl
|
|
|
|
|
# "play-pause"
|
|
|
|
|
# ];
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Play / pause track";
|
|
|
|
|
# };
|
|
|
|
|
# "XF86AudioNext" = {
|
|
|
|
|
# action.spawn = [
|
|
|
|
|
# playerctl
|
|
|
|
|
# "next"
|
|
|
|
|
# ];
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Next track";
|
|
|
|
|
# };
|
|
|
|
|
# "XF86AudioRaiseVolume" = {
|
|
|
|
|
# action.spawn = [
|
|
|
|
|
# wpctl
|
|
|
|
|
# "set-volume"
|
|
|
|
|
# "@DEFAULT_AUDIO_SINK@"
|
|
|
|
|
# "0.05+"
|
|
|
|
|
# ];
|
|
|
|
|
# repeat = true;
|
|
|
|
|
# allow-when-locked = true;
|
|
|
|
|
# hotkey-overlay.title = "Raise volume";
|
|
|
|
|
# };
|
|
|
|
|
# "XF86AudioLowerVolume" = {
|
|
|
|
|
# action.spawn = [
|
|
|
|
|
# wpctl
|
|
|
|
|
# "set-volume"
|
|
|
|
|
# "@DEFAULT_AUDIO_SINK@"
|
|
|
|
|
# "0.05-"
|
|
|
|
|
# ];
|
|
|
|
|
# repeat = true;
|
|
|
|
|
# allow-when-locked = true;
|
|
|
|
|
# hotkey-overlay.title = "Lower volume";
|
|
|
|
|
# };
|
|
|
|
|
# "XF86AudioMute" = {
|
|
|
|
|
# action.spawn = [
|
|
|
|
|
# wpctl
|
|
|
|
|
# "set-mute"
|
|
|
|
|
# "@DEFAULT_AUDIO_SINK@"
|
|
|
|
|
# "toggle"
|
|
|
|
|
# ];
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# allow-when-locked = true;
|
|
|
|
|
# hotkey-overlay.title = "Mute playback";
|
|
|
|
|
# };
|
|
|
|
|
# "Alt+XF86AudioRaiseVolume" = {
|
|
|
|
|
# action.spawn = [
|
|
|
|
|
# wpctl
|
|
|
|
|
# "set-volume"
|
|
|
|
|
# "@DEFAULT_AUDIO_SOURCE@"
|
|
|
|
|
# "0.05+"
|
|
|
|
|
# ];
|
|
|
|
|
# repeat = true;
|
|
|
|
|
# allow-when-locked = true;
|
|
|
|
|
# hotkey-overlay.title = "Raise microphone volume";
|
|
|
|
|
# };
|
|
|
|
|
# "Alt+XF86AudioLowerVolume" = {
|
|
|
|
|
# action.spawn = [
|
|
|
|
|
# wpctl
|
|
|
|
|
# "set-volume"
|
|
|
|
|
# "@DEFAULT_AUDIO_SOURCE@"
|
|
|
|
|
# "0.05-"
|
|
|
|
|
# ];
|
|
|
|
|
# repeat = true;
|
|
|
|
|
# allow-when-locked = true;
|
|
|
|
|
# hotkey-overlay.title = "Lower microphone volume";
|
|
|
|
|
# };
|
|
|
|
|
# "Alt+XF86AudioMute" = {
|
|
|
|
|
# action.spawn = [
|
|
|
|
|
# wpctl
|
|
|
|
|
# "set-mute"
|
|
|
|
|
# "@DEFAULT_AUDIO_SOURCE@"
|
|
|
|
|
# "toggle"
|
|
|
|
|
# ];
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# allow-when-locked = true;
|
|
|
|
|
# hotkey-overlay.title = "Mute microphone";
|
|
|
|
|
# };
|
2026-04-04 16:46:30 -04:00
|
|
|
|
2026-04-11 14:20:23 -04:00
|
|
|
# # Brightness
|
|
|
|
|
# "XF86MonBrightnessUp" = {
|
|
|
|
|
# action.spawn = [
|
|
|
|
|
# brightnessctl
|
|
|
|
|
# "set"
|
|
|
|
|
# "5%+"
|
|
|
|
|
# ];
|
|
|
|
|
# repeat = true;
|
|
|
|
|
# allow-when-locked = true;
|
|
|
|
|
# hotkey-overlay.title = "Increase brightness";
|
|
|
|
|
# };
|
|
|
|
|
# "XF86MonBrightnessDown" = {
|
|
|
|
|
# action.spawn = [
|
|
|
|
|
# brightnessctl
|
|
|
|
|
# "set"
|
|
|
|
|
# "5%-"
|
|
|
|
|
# ];
|
|
|
|
|
# repeat = true;
|
|
|
|
|
# allow-when-locked = true;
|
|
|
|
|
# hotkey-overlay.title = "Decrease brightness";
|
|
|
|
|
# };
|
2026-04-04 16:46:30 -04:00
|
|
|
|
2026-04-11 14:20:23 -04:00
|
|
|
# # Screen capture
|
|
|
|
|
# "Print" = {
|
|
|
|
|
# action.screenshot = {
|
|
|
|
|
# show-pointer = false;
|
|
|
|
|
# };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Screenshot";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+Print" = {
|
|
|
|
|
# action.screenshot-window = {
|
|
|
|
|
# # show-pointer = false;
|
|
|
|
|
# };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Screenshot window";
|
|
|
|
|
# };
|
|
|
|
|
# "Shift+Print" = {
|
|
|
|
|
# action.screenshot-screen = {
|
|
|
|
|
# show-pointer = false;
|
|
|
|
|
# };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Screenshot screen";
|
|
|
|
|
# };
|
2026-04-04 16:46:30 -04:00
|
|
|
|
2026-04-11 14:20:23 -04:00
|
|
|
# # Display scaling
|
|
|
|
|
# "Mod+Ctrl+Equal" = {
|
|
|
|
|
# action.spawn = [
|
|
|
|
|
# "output-scale"
|
|
|
|
|
# "+0.1"
|
|
|
|
|
# ];
|
|
|
|
|
# repeat = true;
|
|
|
|
|
# hotkey-overlay.title = "Increase display scale";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+Ctrl+Minus" = {
|
|
|
|
|
# action.spawn = [
|
|
|
|
|
# "output-scale"
|
|
|
|
|
# "-0.1"
|
|
|
|
|
# ];
|
|
|
|
|
# repeat = true;
|
|
|
|
|
# hotkey-overlay.title = "Decrease display scale";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+Ctrl+0" = {
|
|
|
|
|
# action.spawn = [
|
|
|
|
|
# "output-scale"
|
|
|
|
|
# "1.0"
|
|
|
|
|
# ];
|
|
|
|
|
# repeat = true;
|
|
|
|
|
# hotkey-overlay.title = "Reset display scale";
|
|
|
|
|
# };
|
2026-04-04 16:46:30 -04:00
|
|
|
|
2026-04-11 14:20:23 -04:00
|
|
|
# # Window and column size
|
|
|
|
|
# "Mod+F" = {
|
|
|
|
|
# action.maximize-column = { };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Maximize Column";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+Shift+F" = {
|
|
|
|
|
# action.fullscreen-window = { };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Fullscreen";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+Ctrl+F" = {
|
|
|
|
|
# action.expand-column-to-available-width = { };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Fill empty column space";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+Equal" = {
|
|
|
|
|
# action.set-column-width = "+10%";
|
|
|
|
|
# repeat = true;
|
|
|
|
|
# hotkey-overlay.title = "Increase column width";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+Minus" = {
|
|
|
|
|
# action.set-column-width = "-10%";
|
|
|
|
|
# repeat = true;
|
|
|
|
|
# hotkey-overlay.title = "Decrease column width";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+Shift+Equal" = {
|
|
|
|
|
# action.set-window-height = "+10%";
|
|
|
|
|
# repeat = true;
|
|
|
|
|
# hotkey-overlay.title = "Increase window height";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+Shift+Minus" = {
|
|
|
|
|
# action.set-window-height = "-10%";
|
|
|
|
|
# repeat = true;
|
|
|
|
|
# hotkey-overlay.title = "Decrease window height";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+Z" = {
|
|
|
|
|
# action.toggle-window-floating = { };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Toggle floating";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+T" = {
|
|
|
|
|
# action.toggle-column-tabbed-display = { };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Toggle tabbed column";
|
|
|
|
|
# };
|
2026-04-04 16:46:30 -04:00
|
|
|
|
2026-04-11 14:20:23 -04:00
|
|
|
# # Window and column movement
|
|
|
|
|
# "Mod+K" = {
|
|
|
|
|
# action.focus-window-or-monitor-up = { };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Focus window up";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+J" = {
|
|
|
|
|
# action.focus-window-or-monitor-down = { };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Focus window down";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+H" = {
|
|
|
|
|
# action.focus-column-or-monitor-left = { };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Focus window left";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+L" = {
|
|
|
|
|
# action.focus-column-or-monitor-right = { };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Focus window right";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+BracketLeft" = {
|
|
|
|
|
# action.consume-or-expel-window-left = { };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Move window left";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+BracketRight" = {
|
|
|
|
|
# action.consume-or-expel-window-right = { };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Move window right";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+Shift+K" = {
|
|
|
|
|
# action.move-column-to-monitor-up = { };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Move column up";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+Shift+J" = {
|
|
|
|
|
# action.move-column-to-monitor-down = { };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Move column down";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+Shift+H" = {
|
|
|
|
|
# action.move-column-left-or-to-monitor-left = { };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Move column left";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+Shift+L" = {
|
|
|
|
|
# action.move-column-right-or-to-monitor-right = { };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Move column right";
|
|
|
|
|
# };
|
2026-04-04 16:46:30 -04:00
|
|
|
|
2026-04-11 14:20:23 -04:00
|
|
|
# # Workspaces
|
|
|
|
|
# "Mod+Ctrl+K" = {
|
|
|
|
|
# action.focus-workspace-up = { };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Focus workspace up";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+Ctrl+J" = {
|
|
|
|
|
# action.focus-workspace-down = { };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Focus workspace down";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+Ctrl+Shift+K" = {
|
|
|
|
|
# action.move-column-to-workspace-up = { };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Move column to workspace up";
|
|
|
|
|
# };
|
|
|
|
|
# "Mod+Ctrl+Shift+J" = {
|
|
|
|
|
# action.move-column-to-workspace-down = { };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Move column to workspace down";
|
|
|
|
|
# };
|
2026-04-04 16:46:30 -04:00
|
|
|
|
2026-04-11 14:20:23 -04:00
|
|
|
# # Overview
|
|
|
|
|
# "Mod+Tab" = {
|
|
|
|
|
# action.toggle-overview = { };
|
|
|
|
|
# repeat = false;
|
|
|
|
|
# hotkey-overlay.title = "Toggle overview";
|
|
|
|
|
# };
|
|
|
|
|
# };
|
|
|
|
|
# window-rules = [
|
|
|
|
|
# {
|
|
|
|
|
# geometry-corner-radius = {
|
|
|
|
|
# bottom-left = 10.0;
|
|
|
|
|
# bottom-right = 10.0;
|
|
|
|
|
# top-left = 10.0;
|
|
|
|
|
# top-right = 10.0;
|
|
|
|
|
# };
|
|
|
|
|
# clip-to-geometry = true;
|
|
|
|
|
# }
|
|
|
|
|
# # Unfortunately windows like firefox extensions set their titles after spawning preventing
|
|
|
|
|
# # the window rules from being applied. There is a script to fix this but it is pretty hacky.
|
|
|
|
|
# # {
|
|
|
|
|
# # matches = [
|
|
|
|
|
# # {
|
|
|
|
|
# # title = "^Extension:.*";
|
|
|
|
|
# # app-id = "firefox";
|
|
|
|
|
# # }
|
|
|
|
|
# # ];
|
|
|
|
|
# # open-floating = true;
|
|
|
|
|
# # }
|
|
|
|
|
# {
|
|
|
|
|
# matches = [
|
|
|
|
|
# { app-id = "foot"; }
|
|
|
|
|
# { app-id = "Alacritty"; }
|
|
|
|
|
# ];
|
|
|
|
|
# opacity = 0.90;
|
|
|
|
|
# default-column-width.proportion = 0.4;
|
|
|
|
|
# }
|
|
|
|
|
# ];
|
|
|
|
|
# layer-rules = [
|
|
|
|
|
# {
|
|
|
|
|
# # Use noctalia wallpaper as overview backdrop
|
|
|
|
|
# matches = [ { namespace = "^noctalia-overview*"; } ];
|
|
|
|
|
# place-within-backdrop = true;
|
|
|
|
|
# }
|
|
|
|
|
# ];
|
|
|
|
|
# prefer-no-csd = true;
|
|
|
|
|
# screenshot-path = "${config.xdg.userDirs.extraConfig.SCREENSHOTS}/%Y%m%d-%H%M%S.png";
|
|
|
|
|
# hotkey-overlay = {
|
|
|
|
|
# skip-at-startup = true;
|
|
|
|
|
# };
|
|
|
|
|
# spawn-at-startup = [
|
|
|
|
|
# { argv = [ "noctalia-shell" ]; }
|
|
|
|
|
# ];
|
|
|
|
|
# cursor = {
|
|
|
|
|
# size = config.home.pointerCursor.size;
|
|
|
|
|
# theme = config.home.pointerCursor.name;
|
|
|
|
|
# hide-when-typing = true;
|
|
|
|
|
# };
|
|
|
|
|
# gestures = {
|
|
|
|
|
# hot-corners.enable = false;
|
|
|
|
|
# };
|
|
|
|
|
# xwayland-satellite = {
|
|
|
|
|
# enable = true;
|
|
|
|
|
# path = lib.getExe pkgs.xwayland-satellite-unstable;
|
|
|
|
|
# };
|
|
|
|
|
# environment = {
|
|
|
|
|
# "NIXOS_OZONE_WL" = "1";
|
|
|
|
|
# };
|
|
|
|
|
# debug = {
|
|
|
|
|
# # Allows notification actions and window activation from Noctalia.
|
|
|
|
|
# honor-xdg-activation-with-invalid-serial = { };
|
|
|
|
|
# };
|
|
|
|
|
# # Support for external 'includes' sounds like it is in the works.
|
|
|
|
|
# # Will just have to wait until then for noctalia color scheme integration.
|
|
|
|
|
# };
|
2026-04-04 16:46:30 -04:00
|
|
|
};
|
|
|
|
|
}
|