forked from mirrors_public/oddlama_nix-config
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
|
||||
(lib)
|
||||
escapeShellArg
|
||||
getExe
|
||||
mapAttrs'
|
||||
nameValuePair
|
||||
;
|
||||
|
@ -29,6 +30,26 @@
|
|||
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 {
|
||||
xsession.numlock.enable = true;
|
||||
xsession.windowManager.i3 = {
|
||||
|
@ -130,25 +151,26 @@ in {
|
|||
"Shift+r" = "reload";
|
||||
"q" = "kill";
|
||||
|
||||
"Left" = "focus left";
|
||||
"Right" = "focus right";
|
||||
"Up" = "focus up";
|
||||
"Down" = "focus down";
|
||||
# Don't focus tabs
|
||||
"Left" = "exec --no-startup-id ${getExe sway-overfocus} split-lt float-lt output-ls";
|
||||
"Right" = "exec --no-startup-id ${getExe sway-overfocus} split-rt float-rt output-rs";
|
||||
"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+Right" = "move right";
|
||||
"Shift+Up" = "move up";
|
||||
"Shift+Down" = "move down";
|
||||
|
||||
"space" = "layout toggle tabbed splitv splith";
|
||||
"s" = "splitv";
|
||||
"v" = "splith";
|
||||
"f" = "floating toggle";
|
||||
"Shift+f" = "focus mode_toggle";
|
||||
"Return" = "fullscreen toggle";
|
||||
"Space" = "focus mode_toggle";
|
||||
"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'";
|
||||
"r" = "mode resize";
|
||||
|
@ -181,7 +203,7 @@ in {
|
|||
window.titlebar = false;
|
||||
|
||||
floating.criteria = [
|
||||
{class = "Pavucontrol";}
|
||||
{class = "^Pavucontrol$";}
|
||||
];
|
||||
|
||||
assigns = {
|
||||
|
@ -195,7 +217,7 @@ in {
|
|||
];
|
||||
"7" = [
|
||||
{class = "^obsidian$";}
|
||||
{class = "^Discord$";}
|
||||
{class = "^discord$";}
|
||||
{class = "^Signal$";}
|
||||
{class = "^TelegramDesktop$";}
|
||||
];
|
||||
|
@ -226,15 +248,16 @@ in {
|
|||
|
||||
extraConfig = let
|
||||
configLayouts = (pkgs.formats.toml {}).generate "per-workspace-layouts.toml" {
|
||||
force = true;
|
||||
layouts = {
|
||||
"1" = "stacking";
|
||||
"7" = "stacking";
|
||||
"8" = "stacking";
|
||||
"9" = "stacking";
|
||||
"1" = "tabbed";
|
||||
"7" = "tabbed";
|
||||
"8" = "tabbed";
|
||||
"9" = "tabbed";
|
||||
};
|
||||
};
|
||||
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