mirror of
https://github.com/oddlama/nix-config.git
synced 2025-10-11 07:10:39 +02:00
feat: add sway-overfocus (also for i3) that allows focusing while skipping tabs (cycle tabs via mod+tab)
This commit is contained in:
parent
c93a5d63a9
commit
ed1683d50b
1 changed files with 38 additions and 15 deletions
|
@ -8,6 +8,7 @@
|
||||||
inherit
|
inherit
|
||||||
(lib)
|
(lib)
|
||||||
escapeShellArg
|
escapeShellArg
|
||||||
|
getExe
|
||||||
mapAttrs'
|
mapAttrs'
|
||||||
nameValuePair
|
nameValuePair
|
||||||
;
|
;
|
||||||
|
@ -29,6 +30,26 @@
|
||||||
mainProgram = "i3-per-workspace-layout";
|
mainProgram = "i3-per-workspace-layout";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sway-overfocus = pkgs.rustPlatform.buildRustPackage rec {
|
||||||
|
pname = "sway-overfocus";
|
||||||
|
version = "1.0.0";
|
||||||
|
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "korreman";
|
||||||
|
repo = "sway-overfocus";
|
||||||
|
rev = "8c2a80fd111dcb9ce7e956b867c0d0180b13b649";
|
||||||
|
hash = "sha256-Rv4dTycB19c2JyQ0y5WpDpX15D2RhjKq2lPOyuK2Ki8=";
|
||||||
|
};
|
||||||
|
cargoHash = "sha256-mwPLroz7oE7NNdc/H/sH9mnXj3KyT75U55UE7tMyZMw=";
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Better focus navigation for sway and i3";
|
||||||
|
license = licenses.mit;
|
||||||
|
maintainers = with maintainers; [oddlama];
|
||||||
|
mainProgram = "sway-overfocus";
|
||||||
|
};
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
xsession.numlock.enable = true;
|
xsession.numlock.enable = true;
|
||||||
xsession.windowManager.i3 = {
|
xsession.windowManager.i3 = {
|
||||||
|
@ -130,25 +151,26 @@ in {
|
||||||
"Shift+r" = "reload";
|
"Shift+r" = "reload";
|
||||||
"q" = "kill";
|
"q" = "kill";
|
||||||
|
|
||||||
"Left" = "focus left";
|
# Don't focus tabs
|
||||||
"Right" = "focus right";
|
"Left" = "exec --no-startup-id ${getExe sway-overfocus} split-lt float-lt output-ls";
|
||||||
"Up" = "focus up";
|
"Right" = "exec --no-startup-id ${getExe sway-overfocus} split-rt float-rt output-rs";
|
||||||
"Down" = "focus down";
|
"Up" = "exec --no-startup-id ${getExe sway-overfocus} split-ut float-ut output-us";
|
||||||
|
"Down" = "exec --no-startup-id ${getExe sway-overfocus} split-dt float-dt output-ds";
|
||||||
|
"Tab" = "exec --no-startup-id ${getExe sway-overfocus} group-rw group-dw";
|
||||||
|
"Shift+Tab" = "exec --no-startup-id ${getExe sway-overfocus} group-lw group-uw";
|
||||||
|
|
||||||
"Shift+Left" = "move left";
|
"Shift+Left" = "move left";
|
||||||
"Shift+Right" = "move right";
|
"Shift+Right" = "move right";
|
||||||
"Shift+Up" = "move up";
|
"Shift+Up" = "move up";
|
||||||
"Shift+Down" = "move down";
|
"Shift+Down" = "move down";
|
||||||
|
|
||||||
|
"space" = "layout toggle tabbed splitv splith";
|
||||||
"s" = "splitv";
|
"s" = "splitv";
|
||||||
"v" = "splith";
|
"v" = "splith";
|
||||||
"f" = "floating toggle";
|
"f" = "floating toggle";
|
||||||
|
"Shift+f" = "focus mode_toggle";
|
||||||
"Return" = "fullscreen toggle";
|
"Return" = "fullscreen toggle";
|
||||||
"Space" = "focus mode_toggle";
|
|
||||||
"a" = "focus parent";
|
"a" = "focus parent";
|
||||||
# "s" = "layout stacking";
|
|
||||||
# "w" = "layout tabbed";
|
|
||||||
# "e" = "layout toggle split";
|
|
||||||
|
|
||||||
"Shift+Ctrl+q" = "exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'";
|
"Shift+Ctrl+q" = "exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'";
|
||||||
"r" = "mode resize";
|
"r" = "mode resize";
|
||||||
|
@ -181,7 +203,7 @@ in {
|
||||||
window.titlebar = false;
|
window.titlebar = false;
|
||||||
|
|
||||||
floating.criteria = [
|
floating.criteria = [
|
||||||
{class = "Pavucontrol";}
|
{class = "^Pavucontrol$";}
|
||||||
];
|
];
|
||||||
|
|
||||||
assigns = {
|
assigns = {
|
||||||
|
@ -195,7 +217,7 @@ in {
|
||||||
];
|
];
|
||||||
"7" = [
|
"7" = [
|
||||||
{class = "^obsidian$";}
|
{class = "^obsidian$";}
|
||||||
{class = "^Discord$";}
|
{class = "^discord$";}
|
||||||
{class = "^Signal$";}
|
{class = "^Signal$";}
|
||||||
{class = "^TelegramDesktop$";}
|
{class = "^TelegramDesktop$";}
|
||||||
];
|
];
|
||||||
|
@ -226,15 +248,16 @@ in {
|
||||||
|
|
||||||
extraConfig = let
|
extraConfig = let
|
||||||
configLayouts = (pkgs.formats.toml {}).generate "per-workspace-layouts.toml" {
|
configLayouts = (pkgs.formats.toml {}).generate "per-workspace-layouts.toml" {
|
||||||
|
force = true;
|
||||||
layouts = {
|
layouts = {
|
||||||
"1" = "stacking";
|
"1" = "tabbed";
|
||||||
"7" = "stacking";
|
"7" = "tabbed";
|
||||||
"8" = "stacking";
|
"8" = "tabbed";
|
||||||
"9" = "stacking";
|
"9" = "tabbed";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in ''
|
in ''
|
||||||
exec_always --no-startup-id ${i3-per-workspace-layout}/bin/i3-per-workspace-layout --config ${configLayouts}
|
exec_always --no-startup-id ${getExe i3-per-workspace-layout} --config ${configLayouts}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue