Skip to content

Commit

Permalink
feat: sway support
Browse files Browse the repository at this point in the history
- Add sway support, see changelog.md for details on how to migrate
- add --verbose logging flag
- Fix #34
- Deprecate --icons option

Squashed commit of the following:

commit 32f049a
Author: Daniel Berg <[email protected]>
Date:   Wed Jan 22 19:14:32 2025 +0100

    fix: handle eof from ipc on i3 restart

    Usually on restart, shutdown of wm/compositor

commit c785c72
Author: Daniel Berg <[email protected]>
Date:   Wed Jan 22 18:47:52 2025 +0100

    docs: add changelog for v3.1.0

commit 77dbfa9
Author: Daniel Berg <[email protected]>
Date:   Wed Jan 22 18:16:39 2025 +0100

    chore(bump): clean up cargo, bump version

commit fc29332
Author: Daniel Berg <[email protected]>
Date:   Wed Jan 22 18:12:18 2025 +0100

    fix: add back in icons option + warning

    For backwards compatibility

commit 49c108d
Author: Daniel Berg <[email protected]>
Date:   Wed Jan 22 18:07:37 2025 +0100

    docs: add missing display_prop app_id

    Only for wayland, not i3 or xwayland. Not really any need of setting it
    to app_id, but for completeness it should include it as a valid option.

commit 171acb5
Author: Daniel Berg <[email protected]>
Date:   Wed Jan 22 17:47:07 2025 +0100

    docs: update description, move preview up

commit c9664d3
Author: Daniel Berg <[email protected]>
Date:   Wed Jan 22 17:26:00 2025 +0100

    doc: fix license year, test badge branch

commit d539401
Author: Daniel Berg <[email protected]>
Date:   Mon Jan 13 17:52:45 2025 +0100

    chore(fmt): apply rust format

commit ef182d2
Author: Daniel Berg <[email protected]>
Date:   Mon Jan 13 17:44:31 2025 +0100

    fix: i3 title collection + tests

    Turns out i3 uses slightly different floating nodes structure, fixing it
    on sway would cause the integration tests to fail because it tests on an
    i3 environment.

commit d54d83f
Author: Daniel Berg <[email protected]>
Date:   Mon Jan 13 16:22:47 2025 +0100

    fix: respond window floating change

    Sway doesn't create any events when dragging floating windows across
    workspaces, but this will at least update the tree when window is set to
    tiling again.

commit 3332915
Author: Daniel Berg <[email protected]>
Date:   Mon Jan 13 15:01:09 2025 +0100

    fix: correctly collect floating nodes

    My previous implementation broke at some point during the sway
    updating. Never much liked the way I did it back then, change it to a
    more function approach.

commit bbfbc71
Author: Daniel Berg <[email protected]>
Date:   Wed Dec 25 22:16:39 2024 +0100

    ci: fix missing update_tree flag

commit 242fd40
Author: Daniel Berg <[email protected]>
Date:   Wed Dec 25 22:10:29 2024 +0100

    fix: focus old on workspace focus events

    Same fix as in 299fc77, but only on focus events, seems to resolve the
    issue, without disrupting other functionality

    ref: #34

commit b87f411
Author: Daniel Berg <[email protected]>
Date:   Wed Dec 25 22:10:04 2024 +0100

    ci: fix tests

commit ab971f0
Author: Daniel Berg <[email protected]>
Date:   Tue Dec 24 22:09:57 2024 +0100

    fix: revert focus fix, fix workspace assignment

    The fix worked when moving windows, but cause undesired behavior when
    renaming multiple workspaces, and with workspace assignment where a
    switch isn't desirable.

commit c2f75e0
Author: Daniel Berg <[email protected]>
Date:   Tue Dec 24 22:07:44 2024 +0100

    doc: add app_id example in main doc

commit 8860cd8
Author: Daniel Berg <[email protected]>
Date:   Tue Dec 24 22:06:09 2024 +0100

    fix: exit on abort on config reload

    This prevents multiple processes getting started when reloading sway
    config.

commit 8dca090
Author: Daniel Berg <[email protected]>
Date:   Tue Dec 24 00:06:27 2024 +0100

    docs: fix requirements

commit f444700
Author: Daniel Berg <[email protected]>
Date:   Tue Dec 24 00:00:12 2024 +0100

    docs: initial sway documentation

    Needs improving, but covers most of sway options

commit ab49054
Author: Daniel Berg <[email protected]>
Date:   Mon Dec 23 23:35:22 2024 +0100

    docs: remove unneeded disclaimer

commit 2e031ab
Author: Daniel Berg <[email protected]>
Date:   Mon Dec 23 23:35:01 2024 +0100

    feat: add config support for wayland app_id/name

    Add app_id string map, works similar to class, but for wayland. Name
    works for both, instance only for i3.

    ```toml
    [alias.app_id]
    "^firefox$" = "Firefox"
    ```

commit 155e278
Author: Daniel Berg <[email protected]>
Date:   Mon Dec 23 22:35:53 2024 +0100

    fix: change icons to string, move default back

    Unbreaking previous commit

commit 9b8d18a
Author: Daniel Berg <[email protected]>
Date:   Tue Dec 17 16:35:42 2024 +0100

    docs: cleanup

commit 299fc77
Author: Daniel Berg <[email protected]>
Date:   Sun Dec 15 19:57:25 2024 +0100

    fix: focus on old before renaming

    Fixes issue with multi-monitor dragging would cause the workspace to
    switch unexpectedly, possible fix for #34, but the reported issue is a
    bit different than what I was able to reproduce.

    Focus on the workspace about to be renamed before dispatching rename
    commands ensures that the rename operation has a clear, unambiguous
    target.

    refs: #34 i3/i3#5924

commit 49e3bf5
Author: Daniel Berg <[email protected]>
Date:   Sun Dec 15 19:56:37 2024 +0100

    fix: capture output (display) for debug info

commit 167d8ca
Author: Daniel Berg <[email protected]>
Date:   Sun Dec 15 18:35:36 2024 +0100

    ci: fix tests

commit 87bdd01
Author: Daniel Berg <[email protected]>
Date:   Sun Dec 15 18:28:44 2024 +0100

    fix: configure as binary package

    Let lib be named something different, mainly for documentation purposes

commit cebebcd
Author: Daniel Berg <[email protected]>
Date:   Sun Dec 15 18:28:23 2024 +0100

    chore: update desc + categories

commit 7b4d2b1
Author: Daniel Berg <[email protected]>
Date:   Sun Dec 15 18:26:54 2024 +0100

    docs: update main.rs docs

    Add a more extensive summary atop, as this is a bin package

commit 92a7a31
Author: Daniel Berg <[email protected]>
Date:   Sun Dec 15 18:20:59 2024 +0100

    docs: rewrite into section in readme

    More approachable, no need to mention ipc, thats implementation

commit 861d76b
Author: Daniel Berg <[email protected]>
Date:   Sun Dec 15 18:20:33 2024 +0100

    docs: document public lib functions

commit bcaa8c4
Author: Daniel Berg <[email protected]>
Date:   Sun Dec 15 17:02:29 2024 +0100

    feat: add colored labels to verbose output

commit b2a99e1
Author: Daniel Berg <[email protected]>
Date:   Sun Dec 15 14:24:23 2024 +0100

    ci: add integration tests, remove non-unit tests

    Added integration tests meant to run on an isolated system, interacting
    with an x server or wayland (later). Now I can run unit tests without
    having to spin up a vm every time.

commit e2e2bcf
Author: Daniel Berg <[email protected]>
Date:   Sun Dec 15 14:21:47 2024 +0100

    ci: reintroduce clean op

    Thought it might have been a good idea on recurring test runs on a
    vagrant machine, but it caused dependency issues.

commit cb5ee3e
Author: Daniel Berg <[email protected]>
Date:   Sun Dec 15 14:13:23 2024 +0100

    refactor: use iterator chaining, easier excludes

    Going to have a different name on sway, but I don't know what that is
    yet

commit 0dc0584
Author: Daniel Berg <[email protected]>
Date:   Sun Dec 15 13:08:07 2024 +0100

    docs: update readme with rebrand + wayland support

commit 07f95a9
Author: Daniel Berg <[email protected]>
Date:   Sat Dec 14 12:47:42 2024 +0100

    feat: add verbose logging with flag

commit 14f8895
Author: Daniel Berg <[email protected]>
Date:   Sat Dec 14 12:17:43 2024 +0100

    refactor: move AppError to lib

    Setup handle event functions to return AppError instead of generic

commit 9ad80ba
Author: Daniel Berg <[email protected]>
Date:   Sat Dec 14 00:42:20 2024 +0100

    refactor: improve error handling

commit f303e02
Author: Daniel Berg <[email protected]>
Date:   Sat Dec 14 00:06:23 2024 +0100

    ci: fix tests

    Had to comment out one for the time being, due to incompatibility with
    i3ipc WindowProperty

commit 4dbb60c
Author: Daniel Berg <[email protected]>
Date:   Fri Dec 13 23:27:28 2024 +0100

    feat: convert to using swayipc

    It is compatible with i3, so it can work for both sway and i3

commit 0359c53
Author: Daniel Berg <[email protected]>
Date:   Fri Dec 13 23:09:00 2024 +0100

    docs: remove mention of removed --icons preset

commit 415e5d7
Author: Daniel Berg <[email protected]>
Date:   Fri Dec 13 23:05:32 2024 +0100

    feat!: remove holdover icons + merge

    This is an old, pretty useless icon set that was used for testing on
    earlier versions

    BREAKING CHANGE: `--icons` option removed

commit 38dacea
Author: Daniel Berg <[email protected]>
Date:   Fri Dec 13 22:56:19 2024 +0100

    refactor: simplify and improve error handling

commit 874757e
Author: Daniel Berg <[email protected]>
Date:   Fri Dec 13 22:39:53 2024 +0100

    ci: add addtional tests for update_tree helpers

commit 3c633f7
Author: Daniel Berg <[email protected]>
Date:   Fri Dec 13 22:27:56 2024 +0100

    refactor: simplify regex mod

    Adjusting to new config getters

commit 5a78d51
Author: Daniel Berg <[email protected]>
Date:   Fri Dec 13 22:19:53 2024 +0100

    refactor: split update_tree into multiple fns

    - process_titles: Handles title deduplication and filtering
    - get_split_char: Handles split character logic
    - format_workspace_name: Handles workspace name formatting

commit e5124ed
Author: Daniel Berg <[email protected]>
Date:   Fri Dec 13 22:13:09 2024 +0100

    ci: fix ubuntu version

commit cf0603c
Author: Daniel Berg <[email protected]>
Date:   Fri Dec 13 22:12:54 2024 +0100

    ci: add additional tests

commit 942d7e4
Author: Daniel Berg <[email protected]>
Date:   Fri Dec 13 22:07:40 2024 +0100

    refactor!: split get_title into new functions

    BREAKING CHANGE: Moved the default icon to [icons] heading, this due to
    it's type, general config needs to be a string, but icons are char

commit c480cb5
Author: Daniel Berg <[email protected]>
Date:   Fri Dec 13 19:55:11 2024 +0100

    refactor: use new config getters

    Replace direct HashMap access with the getter methods defined in
    config.rs

commit 49a2307
Author: Daniel Berg <[email protected]>
Date:   Fri Dec 13 19:39:51 2024 +0100

    refactor: improve error handling, add getters

commit 78bf76c
Author: Daniel Berg <[email protected]>
Date:   Fri Dec 13 16:32:30 2024 +0100

    chore(deps): upgrade, remove patch semver

    Let Cargo.lock handle patch and minor versions, manual on major
  • Loading branch information
roosta committed Jan 22, 2025
1 parent f788100 commit 81f09b5
Show file tree
Hide file tree
Showing 13 changed files with 1,320 additions and 793 deletions.
47 changes: 43 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,43 @@

All notable changes to this project will be documented in this file.

## [3.0.0] - 2024-02-19
## [v3.1.0] - 2025-01-22

### Bug Fixes

- Fix [multi-monitor window dragging issue specific to i3](https://github.com/roosta/i3wsr/issues/34)
- Sway doesn't trigger any events on window drag

### Features

- Add sway support
- Add `--verbose` cmdline flag for easier debugging in case of issues

#### Sway

Support for [Sway](https://github.com/swaywm/sway) is added, new config key
addition `app_id` in place of `class` when running native Wayland applications:

```
[aliases.app_id]
firefox-developer-edition = "Firefox Developer"
```
`i3wsr` will still check for `name`, `instance`, and `class` for `Xwayland`
windows, where applicable. So some rules can be preserved. To migrate replace
`[aliases.class]` with `[aliases.app_id]`, keep in mind that `app_id` and
`class` aren't always interchangeable , so some additional modifications is
usually needed.

> A useful script figuring out `app_id` can be found [here](https://gist.github.com/crispyricepc/f313386043395ff06570e02af2d9a8e0#file-wlprop-sh), it works like `xprop` but for Wayland.
### Deprecations

I've flagged `--icons` as deprecated, it will not exit the application but it
no longer works. I'd be surprised if anyone actually used that preset, as it
was only ever for demonstration purposes, and kept around as a holdover from
previous versions.

## [v3.0.0] - 2024-02-19

**BREAKING**: Config syntax changes, see readme for new syntax but in short
`wm_property` is no longer, and have been replaced by scoped aliases that are
Expand Down Expand Up @@ -97,13 +133,13 @@ display_property = "instance" # class, instance, name
- Pin regex to 1.9.1
- Pin endoing to 0.2.33

## [2.1.1] - 2022-03-15
## [v2.1.1] - 2022-03-15

### Bug Fixes

- Use with_context() instead of context()

## [2.1.0] - 2022-03-14
## [v2.1.0] - 2022-03-14

### Bug Fixes

Expand All @@ -114,10 +150,13 @@ display_property = "instance" # class, instance, name
- Add examples of workspace assignment
- Document about the default config file

## [1.0.0] - 2017-12-19
## [v1.0.0] - 2017-12-19

### WIP

- Attempt to use xlib FFI to get win props

<!-- generated by git-cliff -->

[v3.1.0]: https://github.com/roosta/i3wsr/compare/v3.0.0...v3.1.0
[v3.0.0]: https://github.com/roosta/herb/compare/v2.1.1...v3.0.0
Loading

0 comments on commit 81f09b5

Please sign in to comment.