summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2022-05-14 16:39:34 -0700
committerSean Whitton <spwhitton@spwhitton.name>2022-05-14 16:40:22 -0700
commit17c92766ceac0099c100ed13c265fb9c208e2c1f (patch)
tree29d3ffa981ae58d91943d8a2e4ed4c2127712a9f
parentfd61aa3f4d2d802085b0b37f7340b4c63b14d820 (diff)
downloaddotfiles-17c92766ceac0099c100ed13c265fb9c208e2c1f.tar.gz
add bindings to move container to workspace and also go there
-rw-r--r--.config/i3/config55
-rw-r--r--.config/sway/config55
-rw-r--r--perl5/Local/Desktop.pm29
-rwxr-xr-xscripts/desktop/fresh-workspace10
-rwxr-xr-xscripts/desktop/sway-ftp-master2
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",