2025-10-30 17:49:19 +01:00
|
|
|
{
|
|
|
|
|
pkgs,
|
|
|
|
|
host,
|
|
|
|
|
username,
|
|
|
|
|
lib,
|
|
|
|
|
...
|
|
|
|
|
}:
|
2025-10-30 23:02:45 +01:00
|
|
|
let
|
|
|
|
|
dark = "#040606";
|
|
|
|
|
black = "#241b2f";
|
|
|
|
|
dim = "#495671";
|
|
|
|
|
red = "#f53fa1";
|
|
|
|
|
green = "#72f1b8";
|
|
|
|
|
yellow = "#ffcc00";
|
|
|
|
|
blue = "#2b196e";
|
|
|
|
|
magenta = "#ff7edb"; # previously cda5ef
|
|
|
|
|
cyan = "#61e2ff";
|
|
|
|
|
white = "#f8f8f8";
|
|
|
|
|
bright = "#ffffff";
|
|
|
|
|
transparent = "#ff000000";
|
|
|
|
|
winterBlue = "#252535";
|
|
|
|
|
in
|
2025-10-21 12:12:08 +02:00
|
|
|
{
|
2024-11-14 00:42:51 +01:00
|
|
|
home.packages = with pkgs; [
|
|
|
|
|
autotiling
|
2025-10-21 12:12:08 +02:00
|
|
|
libinput-gestures
|
|
|
|
|
wmctrl
|
2025-10-30 23:02:45 +01:00
|
|
|
swaycons
|
2024-11-14 00:42:51 +01:00
|
|
|
];
|
2025-10-30 17:49:19 +01:00
|
|
|
|
|
|
|
|
wayland.windowManager.sway = {
|
|
|
|
|
checkConfig = false;
|
|
|
|
|
package = pkgs.swayfx;
|
|
|
|
|
enable = true;
|
|
|
|
|
config = {
|
2025-10-30 23:02:45 +01:00
|
|
|
window.border = 4;
|
|
|
|
|
colors = {
|
|
|
|
|
focused = {
|
|
|
|
|
border = magenta;
|
|
|
|
|
background = "#536161";
|
|
|
|
|
text = white;
|
|
|
|
|
indicator = yellow;
|
|
|
|
|
childBorder = "#536161";
|
|
|
|
|
};
|
|
|
|
|
unfocused = {
|
|
|
|
|
border = dark;
|
|
|
|
|
background = dark;
|
|
|
|
|
text = dim;
|
|
|
|
|
indicator = dark;
|
|
|
|
|
childBorder = winterBlue;
|
|
|
|
|
};
|
|
|
|
|
focusedInactive = {
|
|
|
|
|
border = dark;
|
|
|
|
|
background = dark;
|
|
|
|
|
text = white;
|
|
|
|
|
indicator = dark;
|
|
|
|
|
childBorder = winterBlue;
|
|
|
|
|
};
|
|
|
|
|
urgent = {
|
|
|
|
|
border = red;
|
|
|
|
|
background = red;
|
|
|
|
|
text = white;
|
|
|
|
|
indicator = red;
|
|
|
|
|
childBorder = red;
|
|
|
|
|
};
|
|
|
|
|
placeholder = {
|
|
|
|
|
border = dark;
|
|
|
|
|
background = dark;
|
|
|
|
|
text = white;
|
|
|
|
|
indicator = white;
|
|
|
|
|
childBorder = dark;
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
fonts = {
|
|
|
|
|
names = [
|
|
|
|
|
"GohuFont 11 Nerd Font Mono"
|
|
|
|
|
];
|
|
|
|
|
style = "Bold Semi-Condensed";
|
|
|
|
|
size = 11.0;
|
|
|
|
|
};
|
|
|
|
|
bars = [ ];
|
|
|
|
|
input = {
|
|
|
|
|
"type:keyboard" = {
|
|
|
|
|
# "*" = {
|
|
|
|
|
xkb_options = "caps:ctrl_modifier";
|
|
|
|
|
};
|
|
|
|
|
};
|
2025-10-30 17:49:19 +01:00
|
|
|
modifier = "Mod1";
|
|
|
|
|
keybindings = lib.attrsets.mergeAttrsList [
|
|
|
|
|
(lib.attrsets.mergeAttrsList (
|
|
|
|
|
map
|
|
|
|
|
(
|
|
|
|
|
num:
|
|
|
|
|
let
|
|
|
|
|
ws = toString num;
|
|
|
|
|
in
|
|
|
|
|
{
|
|
|
|
|
"Mod1+${ws}" = "workspace ${ws}";
|
|
|
|
|
"Mod1+Ctrl+${ws}" = "move container to workspace ${ws}";
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
[
|
|
|
|
|
1
|
|
|
|
|
2
|
|
|
|
|
3
|
|
|
|
|
4
|
|
|
|
|
5
|
|
|
|
|
6
|
|
|
|
|
7
|
|
|
|
|
8
|
|
|
|
|
9
|
|
|
|
|
0
|
|
|
|
|
]
|
|
|
|
|
))
|
|
|
|
|
|
|
|
|
|
(lib.attrsets.concatMapAttrs
|
|
|
|
|
(key: direction: {
|
2025-10-30 23:02:45 +01:00
|
|
|
"Mod1+${key}" = "focus parent, focus ${direction}, focus child";
|
|
|
|
|
"Mod1+Ctrl+${key}" = "focus parent, move ${direction}, focus child";
|
2025-10-30 17:49:19 +01:00
|
|
|
})
|
|
|
|
|
{
|
|
|
|
|
h = "left";
|
|
|
|
|
j = "down";
|
|
|
|
|
k = "up";
|
|
|
|
|
l = "right";
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
2025-10-30 23:02:45 +01:00
|
|
|
"Mod1+q" = "kill";
|
|
|
|
|
"Mod1+w" = "layout split";
|
|
|
|
|
"Mod1+f" = "fullscreen toggle";
|
|
|
|
|
"Mod1+s" = "layout stacking";
|
2025-10-30 17:49:19 +01:00
|
|
|
# "Mod1+v" = "split v";
|
2025-10-30 23:02:45 +01:00
|
|
|
"Mod1+g" = "layout tabbed";
|
|
|
|
|
"Mod1+Space" = "floating toggle";
|
|
|
|
|
"Mod1+Shift+r" = "exec swaymsg reload";
|
2025-10-30 17:49:19 +01:00
|
|
|
"Mod1+Tab" = "focus next";
|
|
|
|
|
"Mod1+Shift+Tab" = "focus prev";
|
|
|
|
|
"Mod4+n" = "focus next";
|
|
|
|
|
"Mod4+p" = "focus prev";
|
|
|
|
|
|
|
|
|
|
"Mod1+d" = "exec --no-startup-id ${pkgs.bemenu}/bin/bemenu-run -l 5 --ignorecase";
|
|
|
|
|
"Mod1+e" = "exec --no-startup-id thunar";
|
|
|
|
|
"Mod1+c" = "exec --no-startup-id hyprpicker -a";
|
|
|
|
|
"Mod1+n" = "exec --no-startup-id swaync-client -t";
|
|
|
|
|
|
|
|
|
|
"Mod1+Return" = "exec --no-startup-id ${pkgs.foot}/bin/footclient";
|
|
|
|
|
"Mod1+Shift+Return" = "exec --no-startup-id ${pkgs.foot}/bin/footclient --title 'float_foot'";
|
2025-10-30 23:02:45 +01:00
|
|
|
"Mod1+Shift+l" = "exec --no-startup-id ${pkgs.hyprlock}/bin/hyprlock";
|
|
|
|
|
"Mod4+Shift+l" = "exec swaylock --image /home/${username}/.local/share/bg.png";
|
2025-10-30 17:49:19 +01:00
|
|
|
"Mod1+Shift+b" = "exec pkill -SIGUSR1 .waybar-wrapped";
|
|
|
|
|
"Mod1+Shift+v" = "exec cliphist list | bemenu -l 5 --ignorecase | cliphist decode | wl-copy";
|
|
|
|
|
"Mod1+Shift+f" = "exec --no-startup-id librewolf";
|
|
|
|
|
"Mod1+Shift+c" = "exec --no-startup-id chromium";
|
|
|
|
|
"Mod1+Shift+q" = "exec --no-startup-id qutebrowser";
|
|
|
|
|
"Mod1+Shift+w" = "exec --no-startup-id wdisplays";
|
|
|
|
|
"Mod1+Shift+t" = "exec --no-startup-id thunderbird";
|
|
|
|
|
"Mod1+Shift+e" = "exec --no-startup-id element-desktop";
|
|
|
|
|
"Mod1+Shift+p" = "exec --no-startup-id pavucontrol-qt";
|
|
|
|
|
"Mod1+Shift+n" = "exec --no-startup-id notes";
|
|
|
|
|
|
|
|
|
|
# screenshot
|
|
|
|
|
"Mod1+Shift+s" = "exec --no-startup-id grimblast copy area";
|
|
|
|
|
"Mod1+Shift+g" = "exec --no-startup-id grabtext";
|
|
|
|
|
|
|
|
|
|
# media and volume controls
|
|
|
|
|
# ",XF86AudioRaiseVolume,exec, pamixer -i 2"
|
|
|
|
|
# ",XF86AudioLowerVolume,exec, pamixer -d 2"
|
|
|
|
|
# ",XF86AudioMute,exec, pamixer -t"
|
|
|
|
|
# ",XF86AudioPlay,exec, playerctl play-pause"
|
|
|
|
|
# ",XF86AudioNext,exec, playerctl next"
|
|
|
|
|
# ",XF86AudioPrev,exec, playerctl previous"
|
|
|
|
|
# ",XF86AudioStop, exec, playerctl stop"
|
|
|
|
|
# "Mod1, mouse_down, workspace, e-1"
|
|
|
|
|
# "Mod1, mouse_up, workspace, e+1"
|
|
|
|
|
|
|
|
|
|
# # laptop brigthness
|
|
|
|
|
# ",XF86MonBrightnessUp, exec, brightnessctl set 5%+"
|
|
|
|
|
# ",XF86MonBrightnessDown, exec, brightnessctl set 5%-"
|
|
|
|
|
# "Mod1, XF86MonBrightnessUp, exec, brightnessctl set 100%+"
|
|
|
|
|
# "Mod1, XF86MonBrightnessDown, exec, brightnessctl set 100%-"
|
|
|
|
|
}
|
|
|
|
|
];
|
|
|
|
|
focus.followMouse = true;
|
|
|
|
|
startup = [
|
|
|
|
|
{ command = "systemctl --user import-environment &"; }
|
|
|
|
|
{ command = "hash dbus-update-activation-environment 2>/dev/null &"; }
|
|
|
|
|
{ command = "dbus-update-activation-environment --systemd &"; }
|
|
|
|
|
{ command = "wl-clip-persist --clipboard both"; }
|
|
|
|
|
{ command = "swww-daemon &"; }
|
|
|
|
|
{ command = "poweralertd &"; }
|
|
|
|
|
{ command = "waybar &"; }
|
|
|
|
|
{ command = "swaync &"; }
|
|
|
|
|
{ command = "wl-paste --watch cliphist store &"; }
|
|
|
|
|
{ command = "yubikey-touch-detector --libnotify &"; }
|
|
|
|
|
{ command = "mpDris2 &"; }
|
2025-10-30 23:02:45 +01:00
|
|
|
{ command = "swaycons &"; }
|
|
|
|
|
# { command = "wlsunset -S '06:30' -s '19:30' -d 1800 "; }
|
2025-10-30 17:49:19 +01:00
|
|
|
{ command = "foot --server &"; }
|
|
|
|
|
{ command = "footclient"; }
|
|
|
|
|
];
|
2025-10-30 23:02:45 +01:00
|
|
|
workspaceAutoBackAndForth = false;
|
2025-10-30 17:49:19 +01:00
|
|
|
};
|
|
|
|
|
# systemd.enable = true; # ???
|
|
|
|
|
wrapperFeatures = {
|
|
|
|
|
gtk = true;
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
home.file.".hm-graphical-session".text = pkgs.lib.concatStringsSep "\n" [
|
|
|
|
|
"export MOZ_ENABLE_WAYLAND=1"
|
|
|
|
|
"export NIXOS_OZONE_WL=1" # Electron
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
services.kanshi = {
|
|
|
|
|
enable = true;
|
|
|
|
|
|
|
|
|
|
profiles = {
|
|
|
|
|
laptops = {
|
|
|
|
|
outputs =
|
|
|
|
|
if (host == "sakura") then
|
|
|
|
|
[
|
|
|
|
|
{
|
|
|
|
|
criteria = "eDP-1";
|
|
|
|
|
scale = 1.0;
|
|
|
|
|
status = "enable";
|
|
|
|
|
position = "0,0";
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
else if (host == "zinnia") then
|
|
|
|
|
[
|
|
|
|
|
{
|
|
|
|
|
criteria = "eDP-1";
|
|
|
|
|
scale = 1.0;
|
|
|
|
|
status = "enable";
|
|
|
|
|
position = "0,0";
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
else if (host == "imilia") then
|
|
|
|
|
[
|
|
|
|
|
{
|
|
|
|
|
criteria = "eDP-1";
|
|
|
|
|
scale = 1.0;
|
|
|
|
|
status = "enable";
|
|
|
|
|
position = "0,0";
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
else
|
|
|
|
|
[
|
|
|
|
|
{
|
|
|
|
|
criteria = "eDP-1";
|
|
|
|
|
scale = 1.0;
|
|
|
|
|
status = "enable";
|
|
|
|
|
position = "0,0";
|
|
|
|
|
}
|
|
|
|
|
];
|
|
|
|
|
};
|
2025-11-03 17:34:05 +01:00
|
|
|
work = {
|
|
|
|
|
outputs = [
|
|
|
|
|
{
|
|
|
|
|
criteria = "eDP-1";
|
|
|
|
|
scale = 1.0;
|
|
|
|
|
status = "enable";
|
|
|
|
|
position = "0,0";
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
criteria = "HP Inc. HP E27q G5 CNC4190NG9";
|
|
|
|
|
scale = 1.0;
|
|
|
|
|
status = "enable";
|
|
|
|
|
position = "4816,0";
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
criteria = "HP Inc. HP E27q G5 CNC4081M2B";
|
|
|
|
|
scale = 1.0;
|
|
|
|
|
status = "enable";
|
|
|
|
|
position = "2256,0";
|
|
|
|
|
}
|
|
|
|
|
];
|
|
|
|
|
};
|
2025-10-30 17:49:19 +01:00
|
|
|
};
|
|
|
|
|
};
|
2025-10-30 23:02:45 +01:00
|
|
|
|
|
|
|
|
programs.sway-easyfocus = {
|
|
|
|
|
enable = true;
|
|
|
|
|
settings = {
|
|
|
|
|
chars = "asdfjkl";
|
|
|
|
|
focused_background_color = "285577";
|
|
|
|
|
focused_background_opacity = 1.0;
|
|
|
|
|
focused_text_color = "ffffff";
|
|
|
|
|
font_family = "GohuFont 14 Nerd Font Mono";
|
|
|
|
|
font_size = "14";
|
|
|
|
|
window_background_color = "d1f21";
|
|
|
|
|
window_background_opacity = 0.2;
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
home.file."/home/${username}/.config/swaycons/config.toml".text = ''
|
|
|
|
|
[global]
|
|
|
|
|
color = "#FFFFFF"
|
|
|
|
|
focused_color = "#FFFFFF"
|
|
|
|
|
icon = ""
|
|
|
|
|
size = "14pt"
|
|
|
|
|
separator = " "
|
|
|
|
|
|
|
|
|
|
[app_id]
|
|
|
|
|
"dev.alextren.Spot" = { icon = "", color = "#1ed760" }
|
|
|
|
|
"org.daa.NeovimGtk" = { icon = "", color = "#8fff6d" }
|
|
|
|
|
"org.gnome.Calculator" = { icon = "" }
|
|
|
|
|
"org.gnome.clocks" = { icon = "" }
|
|
|
|
|
"org.gnome.Nautilus" = { icon = "", color = "#6291d6" }
|
|
|
|
|
"im.dino.Dino" = { icon = "", color = "#3777f0" }
|
|
|
|
|
spt = { icon = "", color = "#ef5466" }
|
|
|
|
|
rmpc = { icon = "", color = "#ef5466" }
|
|
|
|
|
Signal = { icon = "", color = "#3777f0" }
|
|
|
|
|
Element = { icon = "", color = "#3777f0" }
|
|
|
|
|
Spotify = { icon = "", color = "#1ed760" }
|
|
|
|
|
chromium = { icon = "", color = "#a1c2fa", size = "13pt" }
|
|
|
|
|
librewolf = { icon = "", color = "#ff8817", size = "13pt" }
|
|
|
|
|
foot = { icon = "" }
|
|
|
|
|
thunderbird = { icon = "", color = "#f6d32d" }
|
|
|
|
|
neovide = { icon = "", color = "#8fff6d" }
|
|
|
|
|
nvim-qt = { icon = "", color = "#8fff6d" }
|
|
|
|
|
libreoffice-writer = { icon = "", color = "#00A500", size = "12pt" }
|
|
|
|
|
libreoffice-calc = { icon = "", color = "#00A500" }
|
|
|
|
|
|
|
|
|
|
[title]
|
|
|
|
|
"(?i)Thunar" = { icon = "", color = "#6291d6" }
|
|
|
|
|
"(?i)vim" = { app_id = ["foot", "Alacritty"], icon = "", color = "#8fff6d" }
|
|
|
|
|
"(cloud|developers)\\.google.com" = { icon = "", color = "#4285f4" }
|
|
|
|
|
"192\\.168\\.0\\.1|192\\.168\\.86\\.1|ui\\.com" = { icon = "", color = "#004cb6" }
|
|
|
|
|
"1password\\.com" = { icon = "", color = "#0572ec" }
|
|
|
|
|
"amazon\\.com" = { icon = "", color = "#ff9900" }
|
|
|
|
|
"angular\\.io" = { icon = "", color = "#dd0031" }
|
|
|
|
|
"archlinux\\.org" = { icon = "", color = "#1793d1" }
|
|
|
|
|
"atlassian\\.(net|com)" = { icon = "", color = "#0052cc" }
|
|
|
|
|
"aws\\.amazon\\.com" = { icon = "", color = "#ff9900" }
|
|
|
|
|
"bitbucket\\.org" = { icon = "", color = "#0052cc" }
|
|
|
|
|
"calendar\\.google\\.com" = { icon = "", color = "#4285f4" }
|
|
|
|
|
"coda\\.io" = { icon = "", color = "#f46a54" }
|
|
|
|
|
"crates\\.io" = { icon = "", color = "#ffc933" }
|
|
|
|
|
"deezer\\.com" = { icon = "", color = "#ef5466" }
|
|
|
|
|
"discogs\\.com" = { icon = "" }
|
|
|
|
|
"discord\\.com" = { icon = "", color = "#404eed" }
|
|
|
|
|
"docs\\.google\\.com" = { icon = "", color = "#4285f4" }
|
|
|
|
|
"docs\\.google\\.com/spreadsheets" = { icon = "", color = "#34a853" }
|
|
|
|
|
"docs\\.rs|rust-lang\\.org" = { icon = "", size = "16pt" }
|
|
|
|
|
"drive\\.google\\.com" = { icon = "", color = "#4285f4" }
|
|
|
|
|
"dropbox\\.com" = { icon = "", color = "#0061fe" }
|
|
|
|
|
"duckduckgo\\.com" = { icon = "", color = "#de5833" }
|
|
|
|
|
"facebook\\.com" = { icon = "", color = "#1877f2" }
|
|
|
|
|
"fastmail\\.com" = { icon = "", color = "#1565c0" }
|
|
|
|
|
"fastmail\\.com/calendar" = { icon = "", color = "#1565c0" }
|
|
|
|
|
"fastmail\\.com/contacts" = { size = "11pt", icon = "", color = "#1565c0" }
|
|
|
|
|
"feedbin\\.com" = { icon = "" }
|
|
|
|
|
"gitbook\\.com" = { icon = "", color = "#346ddb" }
|
|
|
|
|
"github\\.com" = { icon = "" }
|
|
|
|
|
"google\\.com" = { icon = "", color = "#4285f4" }
|
|
|
|
|
"google\\.com/maps" = { icon = "", color = "#4caf50" }
|
|
|
|
|
"insomnia\\.rest" = { icon = "", color = "#7100df" }
|
|
|
|
|
"keep\\.google\\.com" = { icon = "", color = "#fbbc04" }
|
|
|
|
|
"last\\.fm" = { icon = "", color = "#ba0000" }
|
|
|
|
|
"mail\\.google\\.com" = { icon = "", color = "#ad1f1c" }
|
|
|
|
|
"meet\\.google\\.com" = { icon = "", color = "#4285f4" }
|
|
|
|
|
"messages\\.google\\.com" = { icon = "", color = "#4285f4" }
|
|
|
|
|
"mozilla\\.org" = { icon = "" }
|
|
|
|
|
"nerdfonts\\.com" = { icon = "", color = "#ffce3e" }
|
|
|
|
|
"nytimes\\.com/games/wordle" = { icon = "", color = "#538d4e" }
|
|
|
|
|
"photos\\.google\\.com" = { icon = "", color = "#4285f4" }
|
|
|
|
|
"reactjs\\.org" = { icon = "", color = "#61dafb" }
|
|
|
|
|
"reddit\\.com" = { icon = "", color = "#ff4500" }
|
|
|
|
|
"slack\\.com" = { icon = "", color = "#2eb67d" }
|
|
|
|
|
"sleeper\\.com" = { icon = "", color = "#7c8ef4" }
|
|
|
|
|
"spotify\\.com" = { icon = "", color = "#1ed760" }
|
|
|
|
|
"sr\\.ht|sourcehut\\.org" = { icon = "" }
|
|
|
|
|
"stackoverflow\\.com" = { icon = "", color = "#f48225" }
|
|
|
|
|
"startpage\\.com" = { icon = "", color = "#6573ff" }
|
|
|
|
|
"stripe\\.com" = { icon = "", color = "#635bff" }
|
|
|
|
|
"ticktick\\.com" = { icon = "", color = "#4774f9" }
|
|
|
|
|
"todoist\\.com" = { icon = "", color = "#e44232" }
|
|
|
|
|
"travis-ci\\.(com|org)" = { icon = "", color = "#cd324a" }
|
|
|
|
|
"twitter\\.com" = { icon = "", color = "#1d9bf0" }
|
|
|
|
|
"webpack\\.js\\.org" = { icon = "", color = "#8ed6fb" }
|
|
|
|
|
"wikipedia\\.org" = { icon = "" }
|
|
|
|
|
"youneedabudget\\.com" = { icon = "", color = "#4495d7" }
|
|
|
|
|
"bandcamp\\.com" = { icon = "", color = "#1da0c3", size = "13pt" }
|
|
|
|
|
"zoom\\.us" = { icon = "", color = "#2d8cff" }
|
|
|
|
|
aerc = { app_id = ["foot", "Alacritty"], icon = "" }
|
|
|
|
|
litecli = { app_id = ["foot", "Alacritty"], icon = "", color = "#c74451" }
|
|
|
|
|
nnn = { app_id = ["foot", "Alacritty"], icon = "" }
|
|
|
|
|
pgcli = { app_id = ["foot", "Alacritty"], icon = "", color = "#c74451" }
|
|
|
|
|
'';
|
2024-11-14 00:42:51 +01:00
|
|
|
}
|
2025-10-30 17:49:19 +01:00
|
|
|
|
|
|
|
|
#home.file = {
|
|
|
|
|
# "/home/${username}/.config/libinput-gestures/sway.conf" = {
|
|
|
|
|
# executable = false;
|
|
|
|
|
# text = "
|
|
|
|
|
# # Cycle right through sway workspaces
|
|
|
|
|
# gesture: swipe right 3 swaymsg focus right
|
|
|
|
|
|
|
|
|
|
# # Cycle left through sway workspaces
|
|
|
|
|
# gesture: swipe left 3 swaymsg focus left
|
|
|
|
|
# ";
|
|
|
|
|
# };
|
|
|
|
|
#};
|