Swayr consists of a demon, and a client. The demon
window/workspace creations, deletions, and focus changes using sway's JSON IPC
interface. The client
swayr offers subcommands, see
Right now, there are these subcommands:
next-windowfocuses the next window in depth-first iteration order of the tree.
prev-windowfocuses the previous window in depth-first iteration order of the tree.
switch-windowdisplays all windows in the order urgent first, then last-recently-used, focused last and focuses the selected.
quit-windowdisplays all windows and quits the selected one.
switch-to-urgent-or-lru-windowswitches to the next window with urgency hint (if any) or to the last recently used window.
switch-workspacedisplays all workspaces in LRU order and switches to the selected one.
switch-workspace-or-windowdisplays all workspaces and their windows and switches to the selected workspace or window.
quit-workspace-or-windowdisplays all workspaces and their windows and allows to quit either the selected workspace (all its windows) or the selected window.
execute-swaymsg-commanddisplays most swaymsg which don't require additional input and executes the selected one. That's handy especially for less often used commands not bound to a key.
execute-swayr-commanddisplays all commands above and executes the selected one. (This is useful for accessing swayr commands which are not bound to a key.)
You need to start the swayr demon
swayrd in your sway config
~/.config/sway/config) like so:
exec env RUST_BACKTRACE=1 swayrd > /tmp/swayrd.log 2>&1
The setting of
RUST_BACKTRACE=1 and the redirection of the output to some
logfile is optional but helps a lot when something doesn't work. Especially,
if you encounter a crash in certain situations and you want to report a bug, it
would be utmost helpful if you could reproduce the issue with backtrace and
logging and attach that to your bug report.
Next to starting the demon, you want to bind swayr commands to some keys like so:
bindsym $mod+Space exec env RUST_BACKTRACE=1 \ swayr switch-window >> /tmp/swayr.log 2>&1 bindsym $mod+Delete exec env RUST_BACKTRACE=1 \ swayr quit-window > /tmp/swayr.log 2>&1 bindsym $mod+Tab exec env RUST_BACKTRACE=1 \ swayr switch-to-urgent-or-lru-window >> /tmp/swayr.log 2>&1 bindsym $mod+Next exec env RUST_BACKTRACE=1 \ swayr next-window >> /tmp/swayr.log 2>&2 bindsym $mod+Prior exec env RUST_BACKTRACE=1 \ swayr prev-window >> /tmp/swayr.log 2>&2 bindsym $mod+Shift+Space exec env RUST_BACKTRACE=1 \ swayr switch-workspace-or-window >> /tmp/swayr.log 2>&1 bindsym $mod+c exec env RUST_BACKTRACE=1 \ swayr execute-swaymsg-command >> /tmp/swayr.log 2>&1 bindsym $mod+Shift+c exec env RUST_BACKTRACE=1 \ swayr execute-swayr-command >> /tmp/swa
Of course, configure the keys to your liking. Again, enabling rust backtraces and logging are optional.
For asking questions, sending feedback, or patches, refer to my public inbox (mailinglist). Please mention the project you are referring to in the subject.
Bugs and requests can be reported here.
Swayr is licensed under the GPLv3 (or later).