mkg
July 12, 2022, 2:37pm
1
Is there a reason why bindings for a tenth workspace is not being generated for Sway? The following lines being generated would improve compatibility with i3.
bindsym Mod1+0 workspace number 10
bindsym Mod1+Shift+0 move container to workspace number 10
If there is no objection, I will submit a PR to add those.
Note: there is a work around, which is to add the following to home-manager
config:
let
cfg = config.wayland.windowManager.sway;
in {
wayland.windowManager.sway = {
...
extraConfig = ''
bindsym ${cfg.config.modifier}+0 workspace number 10
bindsym ${cfg.config.modifier}+Shift+0 move container to workspace number 10
'';
};
...
}
But I think it would less surprising, at least to those who migrate from i3, if it were added to the home-manager
sway module.
1 Like
I currently add them all 10, might not be necessary…
home-manager.users.${config.ncfg.primaryUserName} = { pkgs, ... }: {
wayland.windowManager.sway = {
config = rec {
keybindings = {
# "${modifier}+End" = "";
# implement window switcher based on wofi
"${modifier}+Tab" = "exec ${wofiWindowJump}";
# power menu
"${modifier}+F1" = "exec ${wofiPower}";
# # clipboard history
# "${modifier}+c" = "exec ${pkgs.clipman}/bin/clipman pick --tool wofi";
## Output pressed keycode using xev:
## nix-shell -p xorg.xev --run "xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'"
## fn+F1 c:121 XF86AudioMute
"XF86AudioMute" = ''exec ${pamixer} --toggle-mute && ( ${pamixer} --get-mute && ${mywob} 0 ) || ${mywob} $(${pamixer} --get-volume)'';
## fn+F2 c:122 XF86AudioLowerVolume
"XF86AudioLowerVolume" = ''exec ${pamixer} --allow-boost --unmute --decrease 2 && ${mywob} $(${pamixer} --get-volume)'';
## fn+F3 c:123 XF86AudioRaiseVolume
"XF86AudioRaiseVolume" = ''exec ${pamixer} --allow-boost --unmute --increase 2 && ${mywob} $(${pamixer} --get-volume)'';
## fn+F4 c:198 XF86AudioMicMute
"XF86AudioMicMute" = ''exec ${pamixer} --default-source --toggle-mute && ( ${pamixer} --default-source --get-mute && ${mywob} 0 ) || ${mywob} $(${pamixer} --default-source --get-volume)'';
## fn+F5 c:232 XF86MonBrightnessDown
"--locked XF86MonBrightnessDown" = ''exec ${mywob} $(${brightnessctl} set 5%- | ${sed} -En 's/.*\(([0-9]+)%\).*/\1/p')'';
## fn+F6 c:233 XF86MonBrightnessUp
"--locked XF86MonBrightnessUp" = ''exec ${mywob} $(${brightnessctl} set +5% | ${sed} -En 's/.*\(([0-9]+)%\).*/\1/p')'';
## fn+F7 c:235 XF86Display
## fn+F8 c:246 XF86WLAN
## fn+F9 c:179 XF86Tools
## fn+F10 c:225 XF86Search
## fn+F11 c:128 XF86LaunchA
## fn+F12 c:152 XF86Explorer
"XF86Calculator" = "exec ${pkgs.gnome.gnome-calculator}/bin/gnome-calculator";
# "XF86???Lock" = "";
"XF86HomePage" = "exec ${pkgs.firefox-wayland}/bin/firefox";
# "XF86???FOLDER" = "";
## Screenshot
"Print" = "exec ${grimshot} --notify save screen $(${xdg-user-dir} PICTURES)/$(TZ=utc date +'screenshot_%Y-%m-%d-%H%M%S.%3N.png')"; # All visible outputs
"Shift+Print" = "exec ${grimshot} --notify save area $(${xdg-user-dir} PICTURES)/$(TZ=utc date +'screenshot_%Y-%m-%d-%H%M%S.%3N.png')"; # Manually select a region
"Alt+Print" = "exec ${grimshot} --notify save active $(${xdg-user-dir} PICTURES)/$(TZ=utc date +'screenshot_%Y-%m-%d-%H%M%S.%3N.png')"; # Currently active window
"Shift+Alt+Print" = "exec ${grimshot} --notify save window $(${xdg-user-dir} PICTURES)/$(TZ=utc date +'screenshot_%Y-%m-%d-%H%M%S.%3N.png')"; # Manually select a window
"Ctrl+Print" = "exec ${grimshot} --notify copy screen";
"Ctrl+Shift+Print" = "exec ${grimshot} --notify copy area";
"Ctrl+Alt+Print" = "exec ${grimshot} --notify copy active";
"Ctrl+Shift+Alt+Print" = "exec ${grimshot} --notify copy window";
## Screen recording
"${modifier}+Print" = "exec wayrecorder --notify screen";
"${modifier}+Shift+Print" = "exec wayrecorder --notify --input area";
"${modifier}+Alt+Print" = "exec wayrecorder --notify --input active";
"${modifier}+Shift+Alt+Print" = "exec wayrecorder --notify --input window";
"${modifier}+Ctrl+Print" = "exec wayrecorder --notify --clipboard --input screen";
"${modifier}+Ctrl+Shift+Print" = "exec wayrecorder --notify --clipboard --input area";
"${modifier}+Ctrl+Alt+Print" = "exec wayrecorder --notify --clipboard --input active";
"${modifier}+Ctrl+Shift+Alt+Print" = "exec wayrecorder --notify --clipboard --input window";
# "XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl -s previous";
# "XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl -s next";
# "XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl -s play-pause";
# "XF86AudioStop" = "exec ${pkgs.playerctl}/bin/playerctl -s stop";
# "Control+XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl -s position 30-";
# "Control+XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl -s position 30+";
# "Control+XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl -s stop";
"${modifier}+Escape" = "exec ${locksway}";
"${modifier}+Shift+Escape" = "exec ${locksway}";
"${modifier}+Shift+F1" = "exec ${pkgs.sway}/bin/swaynag -t warning -f 'Myosevka Proportional' -m 'Exit sway?' -b 'Yes' '${swaymsg} exit'";
"${modifier}+Shift+F2" = "reload";
"${modifier}+Shift+minus" = "exec ${outputScale} -.1";
"${modifier}+Shift+equal" = "exec ${outputScale} +.1";
"${modifier}+Shift+Ctrl+minus" = "move scratchpad";
"${modifier}+Shift+Ctrl+equal" = "scratchpad show";
"${modifier}+Space" = "exec ${terminal}";
"${modifier}+s" = "exec ${menu}";
"${modifier}+Shift+q" = "kill";
"${modifier}+r" = "mode resize"; #??? or resize mode
"${modifier}+Shift+Return" = "floating toggle";
"${modifier}+Return" = "focus mode_toggle";
"${modifier}+u" = "focus parent";
"${modifier}+t" = "fullscreen toggle";
"${modifier}+d" = "splith";
"${modifier}+v" = "splitv";
"${modifier}+w" = "layout toggle split";
"${modifier}+f" = "layout stacking";
"${modifier}+p" = "layout tabbed";
"${modifier}+o" = "inhibit_idle open; border normal; mark --add inhibiting_idle";
"${modifier}+Shift+o" = "inhibit_idle none; border pixel; unmark inhibiting_idle";
"${modifier}+j" = "exec ${pkgs.mako}/bin/makoctl invoke"; # Invoke default action on top notification.
"${modifier}+Shift+t" = "exec ${pkgs.flashfocus}/bin/flash_window";
"${modifier}+${left}" = "focus left";
"${modifier}+${down}" = "focus down";
"${modifier}+${up}" = "focus up";
"${modifier}+${right}" = "focus right";
"${modifier}+Left" = "focus left";
"${modifier}+Down" = "focus down";
"${modifier}+Up" = "focus up";
"${modifier}+Right" = "focus right";
"${modifier}+Shift+${left}" = "move left";
"${modifier}+Shift+${down}" = "move down";
"${modifier}+Shift+${up}" = "move up";
"${modifier}+Shift+${right}" = "move right";
"${modifier}+Shift+Left" = "move left";
"${modifier}+Shift+Down" = "move down";
"${modifier}+Shift+Up" = "move up";
"${modifier}+Shift+Right" = "move right";
"${modifier}+a" = "workspace back_and_forth";
"${modifier}+l" = "workspace prev";
"${modifier}+y" = "workspace next";
"${modifier}+Prior" = "workspace prev"; # PgUp
"${modifier}+Next" = "workspace next"; # PgDown
"${modifier}+Ctrl+${left}" = "workspace prev";
"${modifier}+Ctrl+${right}" = "workspace next";
"${modifier}+Ctrl+Left" = "workspace prev";
"${modifier}+Ctrl+Right" = "workspace next";
# Move whole workspace to other output
"${modifier}+Alt+${left}" = "move workspace to output left";
"${modifier}+Alt+${down}" = "move workspace to output down";
"${modifier}+Alt+${up}" = "move workspace to output up";
"${modifier}+Alt+${right}" = "move workspace to output right";
"${modifier}+Alt+Left" = "move workspace to output left";
"${modifier}+Alt+Down" = "move workspace to output down";
"${modifier}+Alt+Up" = "move workspace to output up";
"${modifier}+Alt+Right" = "move workspace to output right";
"${modifier}+1" = "workspace number 1";
"${modifier}+2" = "workspace number 2";
"${modifier}+3" = "workspace number 3";
"${modifier}+4" = "workspace number 4";
"${modifier}+5" = "workspace number 5";
"${modifier}+6" = "workspace number 6";
"${modifier}+7" = "workspace number 7";
"${modifier}+8" = "workspace number 8";
"${modifier}+9" = "workspace number 9";
"${modifier}+0" = "workspace number 10";
"${modifier}+Shift+1" = "move container to workspace number 1";
"${modifier}+Shift+2" = "move container to workspace number 2";
"${modifier}+Shift+3" = "move container to workspace number 3";
"${modifier}+Shift+4" = "move container to workspace number 4";
"${modifier}+Shift+5" = "move container to workspace number 5";
"${modifier}+Shift+6" = "move container to workspace number 6";
"${modifier}+Shift+7" = "move container to workspace number 7";
"${modifier}+Shift+8" = "move container to workspace number 8";
"${modifier}+Shift+9" = "move container to workspace number 9";
"${modifier}+Shift+0" = "move container to workspace number 10";
};
};
};