diff options
-rw-r--r-- | .config/i3/config | 55 | ||||
-rw-r--r-- | .config/sway/config | 55 | ||||
-rw-r--r-- | perl5/Local/Desktop.pm | 29 | ||||
-rwxr-xr-x | scripts/desktop/fresh-workspace | 10 | ||||
-rwxr-xr-x | scripts/desktop/sway-ftp-master | 2 |
5 files changed, 129 insertions, 22 deletions
diff --git a/.config/i3/config b/.config/i3/config index 43c5b08f..06aff3df 100644 --- a/.config/i3/config +++ b/.config/i3/config @@ -187,16 +187,65 @@ mode "C-i-" { bindsym Shift+semicolon move container to workspace back_and_forth, \ mode "default" + bindsym Mod4+Ctrl+1 move container to workspace 1, \ + workspace 1, mode "default" + bindsym Mod4+Ctrl+2 move container to workspace 2, \ + workspace 2, mode "default" + bindsym Mod4+Ctrl+3 move container to workspace 3, \ + workspace 3, mode "default" + bindsym Mod4+Ctrl+4 move container to workspace 4, \ + workspace 4, mode "default" + bindsym Mod4+Ctrl+5 move container to workspace 5, \ + workspace 5, mode "default" + bindsym Mod4+Ctrl+6 move container to workspace 6, \ + workspace 6, mode "default" + bindsym Mod4+Ctrl+7 move container to workspace 7, \ + workspace 7, mode "default" + bindsym Mod4+Ctrl+8 move container to workspace 8, \ + workspace 8, mode "default" + bindsym Mod4+Ctrl+9 move container to workspace 9, \ + workspace 9, mode "default" + bindsym Mod4+Ctrl+0 move container to workspace 10, \ + workspace 10, mode "default" + bindsym Mod4+Ctrl+F1 move container to workspace 11:F1, \\ + workspace 11:F1, mode "default" + bindsym Mod4+Ctrl+F2 move container to workspace 12:F2, \ + workspace 12:F2, mode "default" + bindsym Mod4+Ctrl+F3 move container to workspace 13:F3, \ + workspace 13:F3, mode "default" + bindsym Mod4+Ctrl+F4 move container to workspace 14:F4, \ + workspace 14:F4, mode "default" + bindsym Mod4+Ctrl+F5 move container to workspace 15:F5, \ + workspace 15:F5, mode "default" + bindsym Mod4+Ctrl+F6 move container to workspace 16:F6, \ + workspace 16:F6, mode "default" + bindsym Mod4+Ctrl+F7 move container to workspace 17:F7, \ + workspace 17:F7, mode "default" + bindsym Mod4+Ctrl+F8 move container to workspace 18:F8, \ + workspace 18:F8, mode "default" + bindsym Mod4+Ctrl+F9 move container to workspace 19:F9, \ + workspace 19:F9, mode "default" + bindsym Mod4+Ctrl+F10 move container to workspace 20:F10, \ + workspace 20:F10, mode "default" + bindsym Mod4+Ctrl+F11 move container to workspace 21:F11, \ + workspace 21:F11, mode "default" + bindsym Mod4+Ctrl+F12 move container to workspace 22:F12, \ + workspace 22:F12, mode "default" + bindsym Mod4+Ctrl+semicolon move container to workspace back_and_forth, \ + workspace back_and_forth, mode "default" + # next unused workspace bindsym j exec --no-startup-id \ ~/src/dotfiles/scripts/desktop/fresh-workspace, \ mode "default" - # sends window to next unused but doesn't change view to that - # workspace because this binding is more like C-i [0-9]+ than it is - # like Mod4+Ctrl+j/k + # sends window to next unused but doesn't change view bindsym Shift+j exec --no-startup-id \ ~/src/dotfiles/scripts/desktop/fresh-workspace --send, \ mode "default" + # sends window to next unused and changes view + bindsym Mod4+Ctrl+j exec --no-startup-id \ + ~/src/dotfiles/scripts/desktop/fresh-workspace --take, \ + mode "default" # go to windows for tasks without needing to know the workspace # bindsym slash exec --no-startup-id rofi -show window, mode "default" diff --git a/.config/sway/config b/.config/sway/config index 6d893489..b1fd1527 100644 --- a/.config/sway/config +++ b/.config/sway/config @@ -159,16 +159,65 @@ mode "C-i-" { bindsym Shift+semicolon move container to workspace back_and_forth, \ mode "default" + bindsym Mod4+Ctrl+1 move container to workspace 1, \ + workspace 1, mode "default" + bindsym Mod4+Ctrl+2 move container to workspace 2, \ + workspace 2, mode "default" + bindsym Mod4+Ctrl+3 move container to workspace 3, \ + workspace 3, mode "default" + bindsym Mod4+Ctrl+4 move container to workspace 4, \ + workspace 4, mode "default" + bindsym Mod4+Ctrl+5 move container to workspace 5, \ + workspace 5, mode "default" + bindsym Mod4+Ctrl+6 move container to workspace 6, \ + workspace 6, mode "default" + bindsym Mod4+Ctrl+7 move container to workspace 7, \ + workspace 7, mode "default" + bindsym Mod4+Ctrl+8 move container to workspace 8, \ + workspace 8, mode "default" + bindsym Mod4+Ctrl+9 move container to workspace 9, \ + workspace 9, mode "default" + bindsym Mod4+Ctrl+0 move container to workspace 10, \ + workspace 10, mode "default" + bindsym Mod4+Ctrl+F1 move container to workspace 11:F1, \ + workspace 11:F1, mode "default" + bindsym Mod4+Ctrl+F2 move container to workspace 12:F2, \ + workspace 12:F2, mode "default" + bindsym Mod4+Ctrl+F3 move container to workspace 13:F3, \ + workspace 13:F3, mode "default" + bindsym Mod4+Ctrl+F4 move container to workspace 14:F4, \ + workspace 14:F4, mode "default" + bindsym Mod4+Ctrl+F5 move container to workspace 15:F5, \ + workspace 15:F5, mode "default" + bindsym Mod4+Ctrl+F6 move container to workspace 16:F6, \ + workspace 16:F6, mode "default" + bindsym Mod4+Ctrl+F7 move container to workspace 17:F7, \ + workspace 17:F7, mode "default" + bindsym Mod4+Ctrl+F8 move container to workspace 18:F8, \ + workspace 18:F8, mode "default" + bindsym Mod4+Ctrl+F9 move container to workspace 19:F9, \ + workspace 19:F9, mode "default" + bindsym Mod4+Ctrl+F10 move container to workspace 20:F10, \ + workspace 20:F10, mode "default" + bindsym Mod4+Ctrl+F11 move container to workspace 21:F11, \ + workspace 21:F11, mode "default" + bindsym Mod4+Ctrl+F12 move container to workspace 22:F12, \ + workspace 22:F12, mode "default" + bindsym Mod4+Ctrl+semicolon move container to workspace back_and_forth, \ + workspace back_and_forth, mode "default" + # next unused workspace bindsym j exec \ ~/src/dotfiles/scripts/desktop/fresh-workspace, \ mode "default" - # sends window to next unused but doesn't change view to that - # workspace because this binding is more like C-i [0-9]+ than it is - # like Mod4+Ctrl+j/k + # sends window to next unused but doesn't change view bindsym Shift+j exec \ ~/src/dotfiles/scripts/desktop/fresh-workspace --send, \ mode "default" + # sends window to next unused and changes view + bindsym Mod4+Ctrl+j exec \ + ~/src/dotfiles/scripts/desktop/fresh-workspace --take, \ + mode "default" # go to windows for tasks without needing to know the workspace bindsym slash exec ~/src/dotfiles/scripts/desktop/wofi_window, mode "default" diff --git a/perl5/Local/Desktop.pm b/perl5/Local/Desktop.pm index 189f3689..9e5910b5 100644 --- a/perl5/Local/Desktop.pm +++ b/perl5/Local/Desktop.pm @@ -59,20 +59,21 @@ sub fresh_workspace { "16:F6", "17:F7", "18:F8", "19:F9", "20:F10", "21:F11", "22:F12"; if ($next_free_workspace) { - if ($_[0]) { - # Send it there but don't change focus. User can use 'move - # container to workspace back_and_forth' binding to move any other - # wanted containers over there, before finally switching the view - # with 'workspace back_and_forth' - system - "$wmipc -q move container to workspace $next_free_workspace" - # Only the first of the three commands within this call to - # i3-msg should be necessary, but we need the others to work - # around https://github.com/swaywm/sway/issues/6081 - . ", workspace $next_free_workspace, workspace back_and_forth"; - } else { - system "$wmipc -q workspace $next_free_workspace"; - } + my @cmds; + my %opts = @_; + + push @cmds, "move container to workspace $next_free_workspace" + if $opts{send}; + + # When !$opts{go} we should execute neither of these commands, but we + # must work around <https://github.com/swaywm/sway/issues/6081>. + # + # In the case that !$opts{go}, can use 'C-i S-;' to move any other + # wanted containers over, before finally going there with 'C-i ;'. + push @cmds, "workspace $next_free_workspace"; + push @cmds, "workspace back_and_forth" unless $opts{go}; + + system "$wmipc -q " . join ", ", @cmds; } $next_free_workspace } diff --git a/scripts/desktop/fresh-workspace b/scripts/desktop/fresh-workspace index e04e8338..de369569 100755 --- a/scripts/desktop/fresh-workspace +++ b/scripts/desktop/fresh-workspace @@ -2,4 +2,12 @@ use lib "$ENV{HOME}/src/dotfiles/perl5"; use Local::Desktop; -exit !defined fresh_workspace grep $_ eq "--send", @ARGV +exit !defined fresh_workspace do { + if (grep $_ eq "--take", @ARGV) { + go => 1, send => 1; + } elsif (grep $_ eq "--send", @ARGV) { + send => 1; + } else { + go => 1; + } +} diff --git a/scripts/desktop/sway-ftp-master b/scripts/desktop/sway-ftp-master index 699934af..3e6fa5e4 100755 --- a/scripts/desktop/sway-ftp-master +++ b/scripts/desktop/sway-ftp-master @@ -53,7 +53,7 @@ if (marked_exists "dak") { system "ssh", "ftp-master.debian.org", "pgrep", "-u", "spwhitton", "emacs", "||", "ssh", "ftp-master.debian.org", "emacs", "--daemon", "&"; - my $first = fresh_workspace() // die "no fresh workspace"; + my $first = fresh_workspace(go => 1) // die "no fresh workspace"; fork // die "couldn't fork" or exec "foot", "--override=locked-title=yes", |