diff --git a/Cargo.lock b/Cargo.lock index 8d3e29b..2e4bf00 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -619,7 +619,7 @@ dependencies = [ [[package]] name = "swayr" -version = "0.17.0" +version = "0.18.0" dependencies = [ "clap", "directories", diff --git a/README.md b/README.md index fc2b34d..cdbe322 100644 --- a/README.md +++ b/README.md @@ -173,6 +173,11 @@ These commands change the layout of the current workspace. * `execute-swayr-command` displays all commands above and executes the selected one. (This is useful for accessing swayr commands which are not bound to a key.) +* `nop` (unsurprisingly) does nothing, the command can be used to break out of a + sequence of [window cycling commands](#cycling-commands). The LRU window order + is frozen when the first cycling command is processed and remains so until a + non-cycling command is received. The `nop` command can conveniently serve to + interrupt a sequence without having any other side effects. ### Screenshots @@ -270,6 +275,17 @@ bindsym $mod+Shift+c exec env RUST_BACKTRACE=1 \ Of course, configure the keys to your liking. Again, enabling rust backtraces and logging are optional. +Pending a fix for [Sway issue 6456](https://github.com/swaywm/sway/issues/6456), +it will be possible to close a sequence of window cycling commands using +a `nop` command bound to the release of the `$mod` key. Assuming your `$mod` +is bound to `Super_L` it could look something like this: + +``` +bindsym --release Super_L exec env RUST_BACKTRACE=1 \ + swayr nop >> /tmp/swayr.log 2>&1 +``` + + ### Configuration Swayr can be configured using the `~/.config/swayr/config.toml` or @@ -334,6 +350,9 @@ auto_tile_min_window_width_per_output_width = [ [3440, 1000], [4096, 1200], ] + +[focus] +lockin_delay = 750 ``` In the following, all sections are explained. @@ -454,6 +473,15 @@ over IPC. Therefore, auto-tiling is triggered by new-window events, close-events, move-events, floating-events, and also focus-events. The latter are a workaround and wouldn't be required if there were resize-events. + +#### The focus section + +In the `[focus]` section, you can configure the amount of time a window +has to keep the focus in order to affect the LRU order. If a given window +is only briefly focused, e.g. moving the mouse over it on the way to +another window, then its position in the LRU order will not be modified. + + ### Version changes Since version 0.8.0, I've started writing a [NEWS](swayr/NEWS.md) file listing the diff --git a/swayr/Cargo.toml b/swayr/Cargo.toml index bbd3661..b6dece1 100644 --- a/swayr/Cargo.toml +++ b/swayr/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "swayr" -version = "0.17.0" +version = "0.18.0" description = "A LRU window-switcher (and more) for the sway window manager" homepage = "https://sr.ht/~tsdh/swayr/" repository = "https://git.sr.ht/~tsdh/swayr" diff --git a/swayr/NEWS.md b/swayr/NEWS.md index 6d0c1ad..d7aed6c 100644 --- a/swayr/NEWS.md +++ b/swayr/NEWS.md @@ -1,3 +1,14 @@ +swayr v0.18.0 +============= + +- The LRU window order will no longer be immediately updated when there is a + focus change. Instead there is now a short (configurable) delay before the + update. The user-visible change is that quickly moving over windows with the + mouse, or moving through them using keyboard navigation, will only register + the start and destination windows in the LRU sequence. +- A `nop` command can be used to interrupt a sequence of window-cycling + commands. + swayr v0.17.0 =============