mirror of
https://gitlab.com/upRootNutrition/dotfiles.git
synced 2025-06-16 01:55:13 -05:00
feat: updated niri
This commit is contained in:
parent
2b91a4d407
commit
ee42e007a7
13 changed files with 562 additions and 488 deletions
88
modules/home/gui/desktop/niri/config/binds.nix
Executable file
88
modules/home/gui/desktop/niri/config/binds.nix
Executable file
|
@ -0,0 +1,88 @@
|
|||
{
|
||||
config,
|
||||
flake,
|
||||
osConfig,
|
||||
workspaceStrings,
|
||||
...
|
||||
}:
|
||||
let
|
||||
niri = config.lib.niri.actions;
|
||||
|
||||
inherit (flake.config.machines) devices;
|
||||
|
||||
mars = devices.mars.name;
|
||||
deimos = devices.deimos.name;
|
||||
host = osConfig.networking.hostName;
|
||||
|
||||
deviceLogic =
|
||||
d: m:
|
||||
if host == deimos then
|
||||
"${d}"
|
||||
else if host == mars then
|
||||
"${m}"
|
||||
else
|
||||
"";
|
||||
in
|
||||
{
|
||||
binds = {
|
||||
"Super+z".action = niri.spawn "obsidian";
|
||||
"Super+l".action = niri.spawn "slack";
|
||||
"Super+h".action = niri.spawn "feishin";
|
||||
"Super+g".action = niri.spawn "scrcpy";
|
||||
"Super+k".action = niri.spawn "ghostty -e nu -e y";
|
||||
"Super+s".action = niri.spawn "steam";
|
||||
"Super+r".action = niri.spawn "ghostty -e zellij a dotfiles";
|
||||
"Super+n".action = niri.spawn "signal-desktop";
|
||||
"Super+t".action = niri.spawn "zeditor";
|
||||
"Super+b".action = niri.spawn "floorp";
|
||||
"Super+x".action = niri.spawn "freetube";
|
||||
"Super+v".action = niri.spawn "vesktop";
|
||||
"Super+m".action = niri.spawn "element-desktop";
|
||||
"Super+d".action = niri.spawn "ghostty";
|
||||
"Super+p".action = niri.spawn "bitwarden";
|
||||
"Super+Space".action = niri.spawn "fuzzel";
|
||||
"Super+Tab".action = niri.close-window;
|
||||
"Super+u".action = niri.maximize-column;
|
||||
"Super+comma".action = niri.focus-workspace-down;
|
||||
"Super+period".action = niri.focus-workspace-up;
|
||||
"Super+f".action = niri.swap-window-left;
|
||||
"Super+o".action = niri.swap-window-right;
|
||||
|
||||
"Super+w".action = niri.switch-preset-column-width;
|
||||
|
||||
# "Ctrl+Alt+1".action = niri.move-window-to-workspace workspaceStrings.workspace0
|
||||
# "Ctrl+Alt+2".action = niri.move-window-to-workspace workspaceStrings.workspace1
|
||||
# "Ctrl+Alt+3".action = niri.move-window-to-workspace workspaceStrings.workspace2
|
||||
# "Ctrl+Alt+4".action = niri.move-window-to-workspace workspaceStrings.workspace3
|
||||
# "Ctrl+Alt+5".action = niri.move-window-to-workspace workspaceStrings.workspace4
|
||||
# "Super+Enter".action = niri.toggle-overview;
|
||||
|
||||
# "Super+1".action = niri.focus-workspace workspaceStrings.workspace0;
|
||||
# "Super+2".action = niri.focus-workspace workspaceStrings.workspace1;
|
||||
# "Super+3".action = niri.focus-workspace workspaceStrings.workspace2;
|
||||
# "Super+4".action = niri.focus-workspace workspaceStrings.workspace3;
|
||||
# "Super+5".action = niri.focus-workspace workspaceStrings.workspace4;
|
||||
|
||||
"Super+1".action = niri.focus-column-or-monitor-left;
|
||||
"Super+2".action = niri.focus-window-or-workspace-up;
|
||||
"Super+3".action = niri.focus-window-or-workspace-down;
|
||||
"Super+4".action = niri.focus-column-or-monitor-right;
|
||||
|
||||
"Super+Shift+t".action = niri.spawn "ghostty";
|
||||
"Super+Shift+s".action = niri.spawn "flameshot gui";
|
||||
"Super+Shift+period".action = niri.spawn "emote";
|
||||
"Super+Shift+Tab".action = niri.fullscreen-window;
|
||||
|
||||
"Ctrl+Alt+c".action = niri.move-column-left;
|
||||
"Ctrl+Alt+i".action = niri.move-column-right;
|
||||
"Ctrl+Alt+f".action = niri.set-column-width "-10%";
|
||||
"Ctrl+Alt+o".action = niri.set-column-width "+10%";
|
||||
|
||||
"XF86MonBrightnessUp".action = niri.spawn "brightnessctl -d ${deviceLogic "amdgpu_bl1" ""} s +10%";
|
||||
"XF86MonBrightnessDown".action =
|
||||
niri.spawn "brightnessctl -d ${deviceLogic "amdgpu_bl1" ""} s 10%-";
|
||||
"XF86AudioRaiseVolume".action = niri.spawn "pactl set-sink-volume @DEFAULT_SINK@ +5%";
|
||||
"XF86AudioLowerVolume".action = niri.spawn "pactl set-sink-volume @DEFAULT_SINK@ -5%";
|
||||
"XF86AudioMute".action = niri.spawn "pactl set-sink-mute @DEFAULT_SINK@ toggle";
|
||||
};
|
||||
}
|
29
modules/home/gui/desktop/niri/config/layout.nix
Executable file
29
modules/home/gui/desktop/niri/config/layout.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{ colourHelpers, ... }:
|
||||
{
|
||||
layout = {
|
||||
default-column-width = {
|
||||
proportion = 1.;
|
||||
};
|
||||
preset-column-widths = [
|
||||
{ proportion = 1. / 3.; }
|
||||
{ proportion = 1. / 2.; }
|
||||
{ proportion = 2. / 3.; }
|
||||
{ proportion = 1.; }
|
||||
];
|
||||
border = {
|
||||
enable = true;
|
||||
width = 2;
|
||||
active.color = colourHelpers.makeColour colourHelpers.el.base0E;
|
||||
inactive.color = colourHelpers.makeColour colourHelpers.el.base02;
|
||||
};
|
||||
gaps = 5;
|
||||
shadow = {
|
||||
enable = true;
|
||||
color = colourHelpers.el.base11;
|
||||
draw-behind-window = true;
|
||||
offset.x = 0;
|
||||
offset.y = 0;
|
||||
spread = 3;
|
||||
};
|
||||
};
|
||||
}
|
14
modules/home/gui/desktop/niri/config/main.nix
Executable file
14
modules/home/gui/desktop/niri/config/main.nix
Executable file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
environment = {
|
||||
DISPLAY = ":0";
|
||||
};
|
||||
|
||||
prefer-no-csd = true;
|
||||
|
||||
hotkey-overlay.skip-at-startup = true;
|
||||
|
||||
input = {
|
||||
focus-follows-mouse.enable = true;
|
||||
mouse.accel-profile = "flat";
|
||||
};
|
||||
}
|
39
modules/home/gui/desktop/niri/config/outputs.nix
Executable file
39
modules/home/gui/desktop/niri/config/outputs.nix
Executable file
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
colourHelpers,
|
||||
flake,
|
||||
osConfig,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (flake.config.machines) devices;
|
||||
|
||||
mars = devices.mars.name;
|
||||
deimos = devices.deimos.name;
|
||||
host = osConfig.networking.hostName;
|
||||
|
||||
deviceLogic =
|
||||
d: m:
|
||||
if host == deimos then
|
||||
d
|
||||
else if host == mars then
|
||||
m
|
||||
else
|
||||
null;
|
||||
in
|
||||
{
|
||||
outputs = {
|
||||
"${deviceLogic "eDP-1" "DP-1"}" = {
|
||||
background-color = colourHelpers.makeColour colourHelpers.el.base02;
|
||||
scale = 1.0;
|
||||
mode = {
|
||||
width = deviceLogic 1920 2560;
|
||||
height = 1080;
|
||||
refresh = deviceLogic 59.94 199.92;
|
||||
};
|
||||
position = {
|
||||
x = 0;
|
||||
y = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
25
modules/home/gui/desktop/niri/config/startup.nix
Executable file
25
modules/home/gui/desktop/niri/config/startup.nix
Executable file
|
@ -0,0 +1,25 @@
|
|||
{ lib, pkgs, ... }:
|
||||
{
|
||||
spawn-at-startup = [
|
||||
{
|
||||
command = [
|
||||
"${lib.getExe pkgs.xwayland-satellite}"
|
||||
];
|
||||
}
|
||||
{ command = [ "wl-clipboard" ]; }
|
||||
{ command = [ "wpaperd" ]; }
|
||||
{ command = [ "gammastep" ]; }
|
||||
{ command = [ "dunst" ]; }
|
||||
{ command = [ "playerctld" ]; }
|
||||
{ command = [ "waybar" ]; }
|
||||
{ command = [ "nm-applet" ]; }
|
||||
{ command = [ "blueman-applet" ]; }
|
||||
{ command = [ "rfkill block bluetooth" ]; }
|
||||
{ command = [ "rfkill unblock bluetooth" ]; }
|
||||
{ command = [ "easyeffects -r" ]; }
|
||||
{ command = [ "vesktop" ]; }
|
||||
{ command = [ "signal" ]; }
|
||||
{ command = [ "feishin" ]; }
|
||||
{ command = [ "zeditor" ]; }
|
||||
];
|
||||
}
|
55
modules/home/gui/desktop/niri/config/style.nix
Executable file
55
modules/home/gui/desktop/niri/config/style.nix
Executable file
|
@ -0,0 +1,55 @@
|
|||
{ flake, ... }:
|
||||
let
|
||||
inherit (flake.config.aesthetics.themes) cursor;
|
||||
in
|
||||
{
|
||||
cursor = {
|
||||
size = cursor.size;
|
||||
theme = "catppuccin-macchiato-dark-cursors";
|
||||
};
|
||||
|
||||
animations = {
|
||||
enable = true;
|
||||
config-notification-open-close = {
|
||||
spring = {
|
||||
damping-ratio = 0.600000;
|
||||
epsilon = 0.001000;
|
||||
stiffness = 1000;
|
||||
};
|
||||
};
|
||||
horizontal-view-movement = {
|
||||
spring = {
|
||||
damping-ratio = 1.000000;
|
||||
epsilon = 0.000100;
|
||||
stiffness = 800;
|
||||
};
|
||||
};
|
||||
window-close = {
|
||||
easing = {
|
||||
curve = "ease-out-quad";
|
||||
duration-ms = 150;
|
||||
};
|
||||
};
|
||||
window-open = {
|
||||
spring = {
|
||||
damping-ratio = 1.000000;
|
||||
epsilon = 0.000100;
|
||||
stiffness = 800;
|
||||
};
|
||||
};
|
||||
window-resize = {
|
||||
spring = {
|
||||
damping-ratio = 1.000000;
|
||||
epsilon = 0.000100;
|
||||
stiffness = 800;
|
||||
};
|
||||
};
|
||||
workspace-switch = {
|
||||
spring = {
|
||||
damping-ratio = 1.000000;
|
||||
epsilon = 0.000100;
|
||||
stiffness = 1000;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
126
modules/home/gui/desktop/niri/config/windowrules.nix
Executable file
126
modules/home/gui/desktop/niri/config/windowrules.nix
Executable file
|
@ -0,0 +1,126 @@
|
|||
{ workspaceStrings, ... }:
|
||||
{
|
||||
window-rules = [
|
||||
{
|
||||
open-focused = true;
|
||||
}
|
||||
{
|
||||
matches =
|
||||
let
|
||||
windowMatch = c: {
|
||||
app-id = c;
|
||||
is-floating = true;
|
||||
is-focused = true;
|
||||
};
|
||||
appIDs = [
|
||||
".blueman-manager-wrapped"
|
||||
"org.gnome.Calculator"
|
||||
"com.github.wwmm.easyeffects"
|
||||
"emote"
|
||||
"mpv"
|
||||
"vlc"
|
||||
"org.nomacs.ImageLounge"
|
||||
"flameshot"
|
||||
"^.protonvpn-app-wrapped$"
|
||||
"^Picture-in-Picture$"
|
||||
"^Discord Popout$"
|
||||
"^Enter name of file to save to…$"
|
||||
"^File Upload$"
|
||||
".scrcpy-wrapped"
|
||||
"^Battle.net$"
|
||||
];
|
||||
in
|
||||
builtins.map windowMatch appIDs;
|
||||
}
|
||||
{
|
||||
matches =
|
||||
let
|
||||
windowMatch = c: {
|
||||
app-id = c;
|
||||
};
|
||||
appIDs = [
|
||||
"floop"
|
||||
"org.kde.kdenlive"
|
||||
"krita"
|
||||
"mpv"
|
||||
"vlc"
|
||||
"Brave-browser"
|
||||
"org.kde.okular"
|
||||
];
|
||||
in
|
||||
builtins.map windowMatch appIDs;
|
||||
opacity = 1.0;
|
||||
}
|
||||
{
|
||||
matches =
|
||||
let
|
||||
windowMatch = c: {
|
||||
app-id = c;
|
||||
};
|
||||
appIDs = [
|
||||
"signal"
|
||||
"vesktop"
|
||||
];
|
||||
in
|
||||
builtins.map windowMatch appIDs;
|
||||
open-on-workspace = workspaceStrings.workspace0;
|
||||
}
|
||||
{
|
||||
matches =
|
||||
let
|
||||
windowMatch = c: {
|
||||
app-id = c;
|
||||
};
|
||||
appIDs = [
|
||||
"code"
|
||||
"zeditor"
|
||||
];
|
||||
in
|
||||
builtins.map windowMatch appIDs;
|
||||
open-on-workspace = workspaceStrings.workspace1;
|
||||
}
|
||||
{
|
||||
matches =
|
||||
let
|
||||
windowMatch = c: {
|
||||
app-id = c;
|
||||
};
|
||||
appIDs = [
|
||||
"steam"
|
||||
"org.kde.kdenlive"
|
||||
];
|
||||
in
|
||||
builtins.map windowMatch appIDs;
|
||||
open-on-workspace = workspaceStrings.workspace2;
|
||||
}
|
||||
{
|
||||
matches =
|
||||
let
|
||||
windowMatch = c: {
|
||||
app-id = c;
|
||||
};
|
||||
appIDs = [
|
||||
"feishin"
|
||||
".scrcpy-wrapped"
|
||||
];
|
||||
in
|
||||
builtins.map windowMatch appIDs;
|
||||
open-on-workspace = workspaceStrings.workspace3;
|
||||
}
|
||||
{
|
||||
# opacity = 0.90;
|
||||
clip-to-geometry = true;
|
||||
focus-ring.enable = false;
|
||||
geometry-corner-radius =
|
||||
let
|
||||
radius = 10.0;
|
||||
in
|
||||
{
|
||||
top-left = radius;
|
||||
top-right = radius;
|
||||
bottom-left = radius;
|
||||
bottom-right = radius;
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
20
modules/home/gui/desktop/niri/config/workspaces.nix
Executable file
20
modules/home/gui/desktop/niri/config/workspaces.nix
Executable file
|
@ -0,0 +1,20 @@
|
|||
{ workspaceStrings, ... }:
|
||||
{
|
||||
workspaces = {
|
||||
${workspaceStrings.workspace0} = {
|
||||
name = workspaceStrings.workspace0;
|
||||
};
|
||||
${workspaceStrings.workspace1} = {
|
||||
name = workspaceStrings.workspace1;
|
||||
};
|
||||
${workspaceStrings.workspace2} = {
|
||||
name = workspaceStrings.workspace2;
|
||||
};
|
||||
${workspaceStrings.workspace3} = {
|
||||
name = workspaceStrings.workspace3;
|
||||
};
|
||||
${workspaceStrings.workspace4} = {
|
||||
name = workspaceStrings.workspace4;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -3,367 +3,72 @@
|
|||
flake,
|
||||
pkgs,
|
||||
lib,
|
||||
osConfig,
|
||||
...
|
||||
}:
|
||||
let
|
||||
|
||||
inherit (flake.config.aesthetics.themes) currentTheme palettes cursor;
|
||||
inherit (flake.config.aesthetics.themes) currentTheme palettes;
|
||||
|
||||
inherit (flake.config.people) user0 user1 user2;
|
||||
|
||||
user = config.home.username;
|
||||
|
||||
niri = config.lib.niri.actions;
|
||||
colourHelpers = {
|
||||
themeLogic =
|
||||
if user == user0 then
|
||||
currentTheme.theme0
|
||||
else if user == user1 then
|
||||
currentTheme.theme1
|
||||
else if user == user2 then
|
||||
currentTheme.theme2
|
||||
else
|
||||
currentTheme.theme0;
|
||||
|
||||
themeLogic =
|
||||
if user == user0 then
|
||||
currentTheme.theme0
|
||||
else if user == user1 then
|
||||
currentTheme.theme1
|
||||
else if user == user2 then
|
||||
currentTheme.theme2
|
||||
else
|
||||
currentTheme.theme0;
|
||||
el = palettes.${colourHelpers.themeLogic}.colours;
|
||||
|
||||
makeColour = c: "#" + c;
|
||||
};
|
||||
|
||||
workspaceStrings = {
|
||||
workspace0 = "messaging";
|
||||
workspace1 = "work";
|
||||
workspace2 = "gaming";
|
||||
workspace3 = "media";
|
||||
workspace4 = "extra";
|
||||
};
|
||||
|
||||
configPath = ./config;
|
||||
|
||||
configImports =
|
||||
let
|
||||
binds = import (configPath + /binds.nix) {
|
||||
inherit
|
||||
config
|
||||
workspaceStrings
|
||||
flake
|
||||
osConfig
|
||||
;
|
||||
};
|
||||
layout = import (configPath + /layout.nix) { inherit colourHelpers; };
|
||||
main = import (configPath + /main.nix);
|
||||
outputs = import (configPath + /outputs.nix) {
|
||||
inherit
|
||||
flake
|
||||
osConfig
|
||||
colourHelpers
|
||||
;
|
||||
};
|
||||
startup = import (configPath + /startup.nix) { inherit lib pkgs; };
|
||||
style = import (configPath + /style.nix) { inherit flake; };
|
||||
windowrules = import (configPath + /windowrules.nix) { inherit workspaceStrings; };
|
||||
workspaces = import (configPath + /workspaces.nix) { inherit workspaceStrings; };
|
||||
in
|
||||
binds // layout // main // outputs // startup // style // windowrules // workspaces;
|
||||
|
||||
el = palettes.${themeLogic}.colours;
|
||||
makeColour = c: "#" + c;
|
||||
in
|
||||
{
|
||||
programs.niri = {
|
||||
settings =
|
||||
let
|
||||
workspace0 = "messaging";
|
||||
workspace1 = "work";
|
||||
workspace2 = "gaming";
|
||||
workspace3 = "media";
|
||||
workspace4 = "extra";
|
||||
in
|
||||
{
|
||||
# environment = {
|
||||
# QT_QPA_PLATFORM = "wayland";
|
||||
# DISPLAY = null;
|
||||
# };
|
||||
|
||||
prefer-no-csd = true;
|
||||
|
||||
cursor = {
|
||||
size = cursor.size;
|
||||
theme = "catppuccin-macchiato-dark-cursors";
|
||||
};
|
||||
input = {
|
||||
focus-follows-mouse.enable = true;
|
||||
mouse.accel-profile = "flat";
|
||||
};
|
||||
|
||||
spawn-at-startup = [
|
||||
# { command = [ "xwayland-satellite" ]; }
|
||||
{ command = [ "wl-clipboard" ]; }
|
||||
{ command = [ "wpaperd" ]; }
|
||||
{ command = [ "gammastep" ]; }
|
||||
{ command = [ "dunst" ]; }
|
||||
{ command = [ "playerctld" ]; }
|
||||
{ command = [ "waybar" ]; }
|
||||
{ command = [ "nm-applet" ]; }
|
||||
{ command = [ "blueman-applet" ]; }
|
||||
{ command = [ "rfkill block bluetooth" ]; }
|
||||
{ command = [ "rfkill unblock bluetooth" ]; }
|
||||
{ command = [ "easyeffects -r" ]; }
|
||||
{ command = [ "vesktop" ]; }
|
||||
{ command = [ "signal" ]; }
|
||||
{ command = [ "feishin" ]; }
|
||||
{ command = [ "zeditor" ]; }
|
||||
];
|
||||
|
||||
animations = {
|
||||
enable = true;
|
||||
config-notification-open-close = {
|
||||
spring = {
|
||||
damping-ratio = 0.600000;
|
||||
epsilon = 0.001000;
|
||||
stiffness = 1000;
|
||||
};
|
||||
};
|
||||
horizontal-view-movement = {
|
||||
spring = {
|
||||
damping-ratio = 1.000000;
|
||||
epsilon = 0.000100;
|
||||
stiffness = 800;
|
||||
};
|
||||
};
|
||||
window-close = {
|
||||
easing = {
|
||||
curve = "ease-out-quad";
|
||||
duration-ms = 150;
|
||||
};
|
||||
};
|
||||
window-open = {
|
||||
spring = {
|
||||
damping-ratio = 1.000000;
|
||||
epsilon = 0.000100;
|
||||
stiffness = 800;
|
||||
};
|
||||
};
|
||||
window-resize = {
|
||||
spring = {
|
||||
damping-ratio = 1.000000;
|
||||
epsilon = 0.000100;
|
||||
stiffness = 800;
|
||||
};
|
||||
};
|
||||
workspace-switch = {
|
||||
spring = {
|
||||
damping-ratio = 1.000000;
|
||||
epsilon = 0.000100;
|
||||
stiffness = 1000;
|
||||
};
|
||||
};
|
||||
};
|
||||
binds = {
|
||||
"Super+z".action = niri.spawn "obsidian";
|
||||
"Super+l".action = niri.spawn "slack";
|
||||
"Super+h".action = niri.spawn "feishin";
|
||||
"Super+g".action = niri.spawn "scrcpy";
|
||||
"Super+k".action = niri.spawn "ghostty -e nu -e y";
|
||||
"Super+s".action = niri.spawn "steam";
|
||||
"Super+r".action = niri.spawn "ghostty -e zellij a dotfiles";
|
||||
"Super+n".action = niri.spawn "signal-desktop";
|
||||
"Super+t".action = niri.spawn "zeditor";
|
||||
"Super+b".action = niri.spawn "floorp";
|
||||
"Super+x".action = niri.spawn "freetube";
|
||||
"Super+v".action = niri.spawn "vesktop";
|
||||
"Super+m".action = niri.spawn "element-desktop";
|
||||
"Super+d".action = niri.spawn "ghostty";
|
||||
"Super+p".action = niri.spawn "bitwarden";
|
||||
"Super+Space".action = niri.spawn "fuzzel";
|
||||
"Super+Tab".action = niri.close-window;
|
||||
"Super+u".action = niri.maximize-column;
|
||||
"Super+comma".action = niri.focus-workspace-down;
|
||||
"Super+period".action = niri.focus-workspace-up;
|
||||
"Super+f".action = niri.swap-window-left;
|
||||
"Super+o".action = niri.swap-window-right;
|
||||
|
||||
# "Ctrl+Alt+1".action = niri.move-window-to-workspace workspace0;
|
||||
# "Ctrl+Alt+2".action = niri.move-window-to-workspace workspace1;
|
||||
# "Ctrl+Alt+3".action = niri.move-window-to-workspace workspace2;
|
||||
# "Ctrl+Alt+4".action = niri.move-window-to-workspace workspace3;
|
||||
# "Ctrl+Alt+5".action = niri.move-window-to-workspace workspace4;
|
||||
# "Super+Enter".action = niri.toggle-overview;
|
||||
|
||||
"Super+w".action = niri.switch-preset-column-width;
|
||||
|
||||
"Super+1".action = niri.focus-workspace workspace0;
|
||||
"Super+4".action = niri.focus-workspace workspace1;
|
||||
"Super+3".action = niri.focus-workspace workspace2;
|
||||
"Super+2".action = niri.focus-workspace workspace3;
|
||||
"Super+5".action = niri.focus-workspace workspace4;
|
||||
|
||||
"Super+c".action = niri.focus-column-or-monitor-left;
|
||||
"Super+a".action = niri.focus-window-or-workspace-up;
|
||||
"Super+e".action = niri.focus-window-or-workspace-down;
|
||||
"Super+i".action = niri.focus-column-or-monitor-right;
|
||||
|
||||
"Super+Shift+t".action = niri.spawn "ghostty";
|
||||
"Super+Shift+s".action = niri.spawn "flameshot gui";
|
||||
"Super+Shift+period".action = niri.spawn "emote";
|
||||
"Super+Shift+Tab".action = niri.fullscreen-window;
|
||||
|
||||
"Ctrl+Alt+c".action = niri.move-column-left;
|
||||
"Ctrl+Alt+i".action = niri.move-column-right;
|
||||
"Ctrl+Alt+f".action = niri.set-column-width "-10%";
|
||||
"Ctrl+Alt+o".action = niri.set-column-width "+10%";
|
||||
};
|
||||
|
||||
hotkey-overlay.skip-at-startup = true;
|
||||
|
||||
outputs = {
|
||||
"DP-1" = {
|
||||
background-color = makeColour el.base02;
|
||||
scale = 1.0;
|
||||
mode = {
|
||||
width = 2560;
|
||||
height = 1080;
|
||||
refresh = 199.92;
|
||||
};
|
||||
position = {
|
||||
x = 0;
|
||||
y = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
window-rules = [
|
||||
{
|
||||
open-focused = true;
|
||||
}
|
||||
{
|
||||
matches =
|
||||
let
|
||||
windowMatch = c: {
|
||||
app-id = c;
|
||||
is-floating = true;
|
||||
is-focused = true;
|
||||
};
|
||||
appIDs = [
|
||||
".blueman-manager-wrapped"
|
||||
"org.gnome.Calculator"
|
||||
"com.github.wwmm.easyeffects"
|
||||
"emote"
|
||||
"mpv"
|
||||
"vlc"
|
||||
"org.nomacs.ImageLounge"
|
||||
"flameshot"
|
||||
"^.protonvpn-app-wrapped$"
|
||||
"^Picture-in-Picture$"
|
||||
"^Discord Popout$"
|
||||
"^Enter name of file to save to…$"
|
||||
"^File Upload$"
|
||||
".scrcpy-wrapped"
|
||||
"^Battle.net$"
|
||||
];
|
||||
in
|
||||
builtins.map windowMatch appIDs;
|
||||
}
|
||||
{
|
||||
matches =
|
||||
let
|
||||
windowMatch = c: {
|
||||
app-id = c;
|
||||
};
|
||||
appIDs = [
|
||||
"floop"
|
||||
"org.kde.kdenlive"
|
||||
"krita"
|
||||
"mpv"
|
||||
"vlc"
|
||||
"Brave-browser"
|
||||
"org.kde.okular"
|
||||
];
|
||||
in
|
||||
builtins.map windowMatch appIDs;
|
||||
opacity = 1.0;
|
||||
}
|
||||
{
|
||||
matches =
|
||||
let
|
||||
windowMatch = c: {
|
||||
app-id = c;
|
||||
};
|
||||
appIDs = [
|
||||
"signal"
|
||||
"vesktop"
|
||||
];
|
||||
in
|
||||
builtins.map windowMatch appIDs;
|
||||
open-on-workspace = workspace0;
|
||||
}
|
||||
{
|
||||
matches =
|
||||
let
|
||||
windowMatch = c: {
|
||||
app-id = c;
|
||||
};
|
||||
appIDs = [
|
||||
"code"
|
||||
"zeditor"
|
||||
];
|
||||
in
|
||||
builtins.map windowMatch appIDs;
|
||||
open-on-workspace = workspace1;
|
||||
}
|
||||
{
|
||||
matches =
|
||||
let
|
||||
windowMatch = c: {
|
||||
app-id = c;
|
||||
};
|
||||
appIDs = [
|
||||
"steam"
|
||||
"org.kde.kdenlive"
|
||||
];
|
||||
in
|
||||
builtins.map windowMatch appIDs;
|
||||
open-on-workspace = workspace2;
|
||||
}
|
||||
{
|
||||
matches =
|
||||
let
|
||||
windowMatch = c: {
|
||||
app-id = c;
|
||||
};
|
||||
appIDs = [
|
||||
"feishin"
|
||||
".scrcpy-wrapped"
|
||||
];
|
||||
in
|
||||
builtins.map windowMatch appIDs;
|
||||
open-on-workspace = workspace3;
|
||||
}
|
||||
{
|
||||
# opacity = 0.90;
|
||||
clip-to-geometry = true;
|
||||
focus-ring.enable = false;
|
||||
geometry-corner-radius =
|
||||
let
|
||||
radius = 10.0;
|
||||
in
|
||||
{
|
||||
top-left = radius;
|
||||
top-right = radius;
|
||||
bottom-left = radius;
|
||||
bottom-right = radius;
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
layout = {
|
||||
default-column-width = {
|
||||
proportion = 1.;
|
||||
};
|
||||
preset-column-widths = [
|
||||
{ proportion = 1. / 3.; }
|
||||
{ proportion = 1. / 2.; }
|
||||
{ proportion = 2. / 3.; }
|
||||
{ proportion = 1.; }
|
||||
];
|
||||
border = {
|
||||
enable = true;
|
||||
width = 2;
|
||||
active.color = makeColour el.base0E;
|
||||
inactive.color = makeColour el.base02;
|
||||
};
|
||||
gaps = 5;
|
||||
shadow = {
|
||||
enable = true;
|
||||
color = el.base11;
|
||||
draw-behind-window = true;
|
||||
offset.x = 0;
|
||||
offset.y = 0;
|
||||
spread = 3;
|
||||
};
|
||||
};
|
||||
|
||||
workspaces = {
|
||||
${workspace0} = {
|
||||
name = workspace0;
|
||||
};
|
||||
${workspace1} = {
|
||||
name = workspace1;
|
||||
};
|
||||
${workspace2} = {
|
||||
name = workspace2;
|
||||
};
|
||||
${workspace3} = {
|
||||
name = workspace3;
|
||||
};
|
||||
${workspace4} = {
|
||||
name = workspace4;
|
||||
};
|
||||
};
|
||||
};
|
||||
settings = configImports;
|
||||
};
|
||||
# home.packages = builtins.attrValues {
|
||||
# inherit (pkgs)
|
||||
# xwayland-satellite
|
||||
# ;
|
||||
# };
|
||||
}
|
||||
|
|
|
@ -44,6 +44,7 @@ in
|
|||
sddm
|
||||
flatpak
|
||||
xserver
|
||||
espanso
|
||||
wireGuard
|
||||
;
|
||||
};
|
||||
|
|
|
@ -22,5 +22,4 @@ in
|
|||
})
|
||||
];
|
||||
};
|
||||
|
||||
}
|
||||
|
|
7
modules/nixos/services/espanso/default.nix
Normal file
7
modules/nixos/services/espanso/default.nix
Normal file
|
@ -0,0 +1,7 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
services.espanso = {
|
||||
package = pkgs.espanso-wayland;
|
||||
enable = true;
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue