# 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* is compatible with [sworkstyle](https://lib.rs/crates/sworkstyle). ## Usage 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](https://gitlab.com/hyask/swaysome/-/jobs/artifacts/master/raw/target/release/swaysome?job=build:cargo) from the CI and put it in your `$PATH`. Then create the file (and the directory if needed) "~/.config/sway/config.d/swaysome.conf" and paste this inside: ``` # Change focus between workspaces unbindsym $mod+1 unbindsym $mod+2 unbindsym $mod+3 unbindsym $mod+4 unbindsym $mod+5 unbindsym $mod+6 unbindsym $mod+7 unbindsym $mod+8 unbindsym $mod+9 unbindsym $mod+0 bindsym $mod+1 exec "swaysome focus 1" bindsym $mod+2 exec "swaysome focus 2" bindsym $mod+3 exec "swaysome focus 3" bindsym $mod+4 exec "swaysome focus 4" bindsym $mod+5 exec "swaysome focus 5" bindsym $mod+6 exec "swaysome focus 6" bindsym $mod+7 exec "swaysome focus 7" bindsym $mod+8 exec "swaysome focus 8" bindsym $mod+9 exec "swaysome focus 9" bindsym $mod+0 exec "swaysome focus 0" # Move containers between workspaces unbindsym $mod+Shift+1 unbindsym $mod+Shift+2 unbindsym $mod+Shift+3 unbindsym $mod+Shift+4 unbindsym $mod+Shift+5 unbindsym $mod+Shift+6 unbindsym $mod+Shift+7 unbindsym $mod+Shift+8 unbindsym $mod+Shift+9 unbindsym $mod+Shift+0 bindsym $mod+Shift+1 exec "swaysome move 1" bindsym $mod+Shift+2 exec "swaysome move 2" bindsym $mod+Shift+3 exec "swaysome move 3" bindsym $mod+Shift+4 exec "swaysome move 4" bindsym $mod+Shift+5 exec "swaysome move 5" bindsym $mod+Shift+6 exec "swaysome move 6" bindsym $mod+Shift+7 exec "swaysome move 7" bindsym $mod+Shift+8 exec "swaysome move 8" bindsym $mod+Shift+9 exec "swaysome move 9" bindsym $mod+Shift+0 exec "swaysome move 0" # Focus workspace groups bindcode --to-code $mod+Ctrl+1 exec "swaysome focus-group 1" bindcode --to-code $mod+Ctrl+2 exec "swaysome focus-group 2" bindcode --to-code $mod+Ctrl+3 exec "swaysome focus-group 3" bindcode --to-code $mod+Ctrl+4 exec "swaysome focus-group 4" bindcode --to-code $mod+Ctrl+5 exec "swaysome focus-group 5" bindcode --to-code $mod+Ctrl+6 exec "swaysome focus-group 6" bindcode --to-code $mod+Ctrl+7 exec "swaysome focus-group 7" bindcode --to-code $mod+Ctrl+8 exec "swaysome focus-group 8" bindcode --to-code $mod+Ctrl+9 exec "swaysome focus-group 9" bindcode --to-code $mod+Ctrl+0 exec "swaysome focus-group 0" # Move focused container to next output bindsym $mod+o exec "swaysome next_output" # Move focused container to previous output bindsym $mod+Shift+o exec "swaysome prev_output" # Init workspaces for every screen 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 `01` on the first screen, and workspace `11` on the second one, both accessible with shortcut `$mod+1`. 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 group * `next-output`: move the focused container to the next output * `prev-output`: move the focused container to the previous output * `focus [name]`: change focus to `[name]` on the same group * `focus-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 group * `previous-group`: change focus to the previous workspace group * `init [name]`: cycle all outputs to create a default workspace with name `[name]` * `rearrange-workspaces` Rearrange already opened workspaces to the correct outputs