6 stable releases
2.0.0 | Mar 3, 2023 |
---|---|
1.1.5 | May 22, 2022 |
1.1.4 | Apr 12, 2022 |
1.1.3 | Apr 11, 2022 |
1.1.2 | Oct 16, 2021 |
#74 in GUI
33 downloads per month
30KB
522 lines
Swaysome
This binary helps you configure sway to work a bit more like Awesome. This currently means workspaces that are name-spaced on a per-screen basis.
It may also work with i3, but this is untested.
swaysome should be compatible with sworkstyle.
Installation
Arch Linux: Found on the AUR as swaysome-git.
If you have Rust installed, then you can just cargo install swaysome
and you're good to go.
Otherwise, you may grab a pre-built
binary from the
CI and put it in your $PATH
.
WARNING: please double-check that your swaysome
binary is in sway
's $PATH
. Depending on your setup, the
$PATH
you have in your shell may not be the same as sway
's, and if swaysome
can't be called by sway
, the
symptoms will only look like non-functional shortcuts.
If you're in this situation, a quick workaround is to call swaysome
with its full absolute path from sway
's config
to check that everything works before fixing your $PATH
issue.
Usage
Then create the file (and the directory if needed) ~/.config/sway/config.d/swaysome.conf
and paste this inside:
unbindcode $mod+10
unbindcode $mod+11
unbindcode $mod+12
unbindcode $mod+13
unbindcode $mod+14
unbindcode $mod+15
unbindcode $mod+16
unbindcode $mod+17
unbindcode $mod+18
unbindcode $mod+19
bindcode $mod+10 exec "swaysome focus 1"
bindcode $mod+11 exec "swaysome focus 2"
bindcode $mod+12 exec "swaysome focus 3"
bindcode $mod+13 exec "swaysome focus 4"
bindcode $mod+14 exec "swaysome focus 5"
bindcode $mod+15 exec "swaysome focus 6"
bindcode $mod+16 exec "swaysome focus 7"
bindcode $mod+17 exec "swaysome focus 8"
bindcode $mod+18 exec "swaysome focus 9"
bindcode $mod+19 exec "swaysome focus 0"
unbindcode $mod+Shift+10
unbindcode $mod+Shift+11
unbindcode $mod+Shift+12
unbindcode $mod+Shift+13
unbindcode $mod+Shift+14
unbindcode $mod+Shift+15
unbindcode $mod+Shift+16
unbindcode $mod+Shift+17
unbindcode $mod+Shift+18
unbindcode $mod+Shift+19
bindcode $mod+Shift+10 exec "swaysome move 1"
bindcode $mod+Shift+11 exec "swaysome move 2"
bindcode $mod+Shift+12 exec "swaysome move 3"
bindcode $mod+Shift+13 exec "swaysome move 4"
bindcode $mod+Shift+14 exec "swaysome move 5"
bindcode $mod+Shift+15 exec "swaysome move 6"
bindcode $mod+Shift+16 exec "swaysome move 7"
bindcode $mod+Shift+17 exec "swaysome move 8"
bindcode $mod+Shift+18 exec "swaysome move 9"
bindcode $mod+Shift+19 exec "swaysome move 0"
unbindcode $mod+Ctrl+10
unbindcode $mod+Ctrl+11
unbindcode $mod+Ctrl+12
unbindcode $mod+Ctrl+13
unbindcode $mod+Ctrl+14
unbindcode $mod+Ctrl+15
unbindcode $mod+Ctrl+16
unbindcode $mod+Ctrl+17
unbindcode $mod+Ctrl+18
unbindcode $mod+Ctrl+19
bindcode $mod+Ctrl+10 exec "swaysome focus-group 1"
bindcode $mod+Ctrl+11 exec "swaysome focus-group 2"
bindcode $mod+Ctrl+12 exec "swaysome focus-group 3"
bindcode $mod+Ctrl+13 exec "swaysome focus-group 4"
bindcode $mod+Ctrl+14 exec "swaysome focus-group 5"
bindcode $mod+Ctrl+15 exec "swaysome focus-group 6"
bindcode $mod+Ctrl+16 exec "swaysome focus-group 7"
bindcode $mod+Ctrl+17 exec "swaysome focus-group 8"
bindcode $mod+Ctrl+18 exec "swaysome focus-group 9"
bindcode $mod+Ctrl+19 exec "swaysome focus-group 0"
unbindcode $mod+Ctrl+Shift+10
unbindcode $mod+Ctrl+Shift+11
unbindcode $mod+Ctrl+Shift+12
unbindcode $mod+Ctrl+Shift+13
unbindcode $mod+Ctrl+Shift+14
unbindcode $mod+Ctrl+Shift+15
unbindcode $mod+Ctrl+Shift+16
unbindcode $mod+Ctrl+Shift+17
unbindcode $mod+Ctrl+Shift+18
unbindcode $mod+Ctrl+Shift+19
bindcode $mod+Ctrl+Shift+10 exec "swaysome move-to-group 1"
bindcode $mod+Ctrl+Shift+11 exec "swaysome move-to-group 2"
bindcode $mod+Ctrl+Shift+12 exec "swaysome move-to-group 3"
bindcode $mod+Ctrl+Shift+13 exec "swaysome move-to-group 4"
bindcode $mod+Ctrl+Shift+14 exec "swaysome move-to-group 5"
bindcode $mod+Ctrl+Shift+15 exec "swaysome move-to-group 6"
bindcode $mod+Ctrl+Shift+16 exec "swaysome move-to-group 7"
bindcode $mod+Ctrl+Shift+17 exec "swaysome move-to-group 8"
bindcode $mod+Ctrl+Shift+18 exec "swaysome move-to-group 9"
bindcode $mod+Ctrl+Shift+19 exec "swaysome move-to-group 0"
bindcode $mod+o exec "swaysome next-output"
bindcode $mod+Shift+o exec "swaysome prev-output"
exec "swaysome init 1"
Finally append your sway
configuration with this:
include ~/.config/sway/config.d/*.conf
You should end-up with workspaces from 1
to 0
, prefixed with a screen index,
giving you workspace 11
on the first screen, and workspace 21
on the second
one, both accessible with shortcut $mod+1
when focused on the right output.
The init
command simply walks through every screen to initialize a prefixed
workspace. It does it backwards so that you end-up focused on the first screen,
as usual.
Exhaustive swaysome commands list
move [name]
: move the focused container to[name]
on the same groupmove-to-group [id]
: move the focused container to the same relative workspace on the[id]
workspace groupnext-output
: move the focused container to the next outputprev-output
: move the focused container to the previous outputfocus [name]
: change focus to[name]
on the same groupfocus-all-outputs [name]
: change all outputs focus to[name]
focus-group [id]
: change focus to group[id]
next-group
: change focus to the next workspace groupprevious-group
: change focus to the previous workspace groupinit [name]
: cycle all outputs to create a default workspace with name[name]
rearrange-workspaces
Rearrange already opened workspaces to the correct outputs, useful when plugging or unplugging screens
Breaking changes
- Starting with 2.0,
next_output
andprev_output
have been changed tonext-output
andprev-output
.
Dependencies
~2–3MB
~56K SLoC