All Versions
Latest Version
Avg Release Cycle
80 days
Latest Release
2702 days ago

Changelog History

  • v5.0 Changes

    February 21, 2017

    ๐Ÿš€ This release expands the graphical capabilities of Way Cooler, adding core features such as borders and bar support while also paving the way for more advanced features such as notifications.

    ๐Ÿš€ This is also the first release with a binary attached. It is an x86_64 ready-to-run version of Way Cooler statically linked to the latest wlc release (0.0.8).

    ๐Ÿ†• New Configuration format

    • The configuration format has changed significantly. This is a backward incompatible change. Please see the example configuration for more information.
    • In short, values must now be part of a category (e.g, no longer border_size it's = { borders = { size = 20 } }, for example).
    • ๐Ÿ”€ config object has been merged into way_cooler.

    ๐Ÿ‘ X11 Bar support

    • โž• Added support for X11 bars, such as polybar and lemonbar
    • To enable, set the x11_bar variable under the programs category to the name of the window that the bar spawns (e.g, bar when running lemonbar as lemonbar -n "bar"
    • ๐Ÿ‘Œ Support for more integrated bars will come in a later version.


    • โž• Added compositor/server side borders.
    • ๐Ÿ”ง Size and active/inactive color configurable through configuration option.
      • Color specified as a hexadecimal number
    • ๐Ÿ”ง Title bars are also independently configurable, e.g they have their own size and colors.


    • โž• Added gap support between windows. You can think of these as transparent borders.


    • Commands now block when locking the layout tree. This means that commands should fail much less often especially when in a tight loop.
    • โž• Added ActiveWorkspace command to get the name of the current workspace.

    ๐Ÿ› Bug Fixes

    • Context menus should stop disappearing/crashing the program.
      • Note that they may not be positioned correctly, this will be fixed in a later patch.
    • ๐Ÿ Floating windows will now properly become fullscreen.
    • ๐Ÿ”ง Defaulting to the pre-compiled configuration file is now much more obvious in the log.
    • ๐Ÿ Floating windows should now no longer snap back to their position.
    • Lua thread listener should now no longer die when restarting and having a bad config.
    • Floating a window in a sub container should no longer cause a crash.
    • The background should now resize when the output changes resolution.
  • v0.8.1 Changes

    November 22, 2018

    There is a compliation issue with Rust 1.30+ with the aho-corasick dependency for Way Cooler that uses wlc.

    ๐Ÿš€ This release fixes that by updating the dependencies.

  • v0.8.0 Changes

    January 24, 2018

    ๐Ÿ”ง Configuration

    • Changed the format for colours in the init.lua file. No longer accepts a number and instead should be a string. This is backwards incompatible.

    ๐Ÿš€ Thanks to @timo-schmid for providing the patch for this release.

  • v0.7.0 Changes

    December 24, 2017

    ๐Ÿš€ This is the final release of Way Cooler that will utilize wlc. From this point forward, consider rust-wlc abandoned.

    ๐Ÿšš Way Cooler is switching to wlroots. You can follow the porting process on our wlroots-rs bindings repo. Once those bindings are complete, Way Cooler will switch to wlroots for v0.8.0. Once the move is complete, work will begin again on making Way Cooler function as a drop-in replacement for AwesomeWM.

    ๐Ÿš€ To see all changes in this release, consult this milestone listing.


    • NixOS users can now enjoy a much more complete Way Cooler experince thanks to the work done by @gnidorah. (#446)
    • Install script from now properly sets the uid bit for non-systemd systems. (#398)
    • ๐Ÿ‘ Raspberry Pi's are now officially supported. (#369)
    • It is now possible to compile Way Cooler for ArmV7 devices. (#445)

    Extension Programs

    Note that all of the extension programs (wc-bg, wc-lock, and wc-grab) have backward incompatible changes in this release. Previous versions will not work as expected!


    ๐Ÿš€ The following changes take effect in this release:

    • The background program binary has been renamed to wc-bg (originally way-cooler-bg).
    • The background program now properly assigns backgrounds to all outputs.
    • 0๏ธโƒฃ A default background is now used when the background program is provided no arguments. Thanks to @platipo for the background contribution! (#141)
    • The background program no longer uses a hack in order to render but uses the standard desktop-shell Wayland protocol.
      • As a consequence, you can now use sway-bg on Way Cooler and wc-bg on Sway.


    • The lockscreen program no longer uses a hack in order to render but uses a modified version of the desktop-shell protocol.
      • It is modified so that we can lock multiple screens using an effect. This may change in the future, but that means we are non-standard compared to e.g Sway.
    • โž• Added a fancy new blur effect that will blur the screen when it locks. (

    Screenshot taker

    Way Cooler

    ๐Ÿ”ง Configuration

    • Can now choose whether root containers have borders or not. (#451)


    • ๐Ÿšš Moved from hlua to rlua in preparation for AwesomeWM compatibility. (#378)
    • โšก๏ธ Updated wayland-rs to v0.12.0. (#452)
      • Fixes build error on some Ubuntu systems. (#452)
    • โšก๏ธ Updated petgraph to v0.4.7 (#400)
    • โšก๏ธ Updated rust-wlc.

    โšก๏ธ WLC updates

    • โšก๏ธ Updated to use the latest pointer motion callback. This fixes the rounding bug that would cause the mouse to not perform as expected. (#453)
    • Can now copy text from/to pure Wayland and XWayland clients. (#328)

    AwesomeWM Compatibility

    • Started preleminary work on AwesomeWM compatibilty. (#383, #396, #429, #423)
      • Most of this is setting up the OO and signal systems used by the Lua libraries. This is mostly complete and all that's left is implementing the interfaces.


    • ๐Ÿ“ฆ Config directory now included in Lua's package.path (#352)
    • ๐Ÿ”ง Defaulting to the pre-compiled configuration fallback now properly cleans up state from the previous Lua instance. (#382)


    • Tabbed/Stacked tiling made much more like i3. Special thanks to @Arnaz87 for putting the work in to fix the rendering! (#439, #450)
    • Floating containers no longer show in Tabbed/Stacked list. (#440)
    • Title bar now displayed correctly even when its value is different from the other border sizes. (#410)
    • Floating containers are now properly pulled forward again when focused. (#432, #412)
    • When a floating view is the focused view it is now properly displayed on top of other floating views (#415, #413)

    ๐Ÿ›  Soundness fixes

    • Spawning programs no longer sometimes triggers a segfault. (#430)
  • v0.6.2 Changes

    August 15, 2017


    โž• Added the no-op command, this allows the user to register a keybinding but not yet make it do anything. #363

    ๐Ÿ›  Tiling bugfixes

    • dmenu will no longer render as too tall #355
    • ๐Ÿ Scrollbars and other small windows no longer have weird visual artifacts #364
    • ๐Ÿ All popup windows should now be properly focused on the screen #218


    • The install page on should function correctly now
    • 0๏ธโƒฃ Binaries are now statically compiled with wlc by default
  • v0.6.1 Changes

    July 30, 2017

    ๐Ÿ†• New features

    ๐Ÿ‘€ This version introduces two new features: The ability to unbind keybindings and to allow passthrough for keybindings. See #345 for more details.

    ๐Ÿ”„ Changes to existing features

    • Root level containers have always have borders now. #315
    • โš™ If XDG_RUNTIME_DIR doesn't exist, an error explaining that is logged. #310

    ๐Ÿ›  Bugfixes

    Screen scraping doesn't scrape active output (needs v0.2 of wc-grab) #349

    Nested sub containers do not render borders properly when using new container command when a new container can't be spawned (e.g when there's one child) #344

    ๐Ÿ Popup windows are no longer sized incorrectly #337

    ๐Ÿ Popup windows should now be always centered on the screen correctly #218

    ๐Ÿšš Switching containers to a new workspace will no longer cause it to be invisible on a workspace that is not active. If it is moved to an inactive workspace, that one is made visible instead #333

    โšก๏ธ Floating windows now update their focused colour correctly #320

    ๐Ÿ Floating sub windows (e.g right click menus) no longer spawn with borders #319

    ๐Ÿ Floating windows (such as dmenu) are no longer hidden when spawned in a tabbed/stacked container #317

    Nested Tabbed/Stacked borders are now rendered correctly #313

  • v0.6.0 Changes

    June 02, 2017

    ๐Ÿš€ This has been, by far, the biggest release for Way Cooler. I'd lie if I said this was a result of feature creep. There were actually features I removed in favour of a later release (namely #273 and #138) just so I could get this one out of the door.

    ๐Ÿš€ Way Cooler has come a long way. If you want to learn more about what has changed please read this release, the linked issues, the up-to-date README, look at our fancy new website, and finally look at the fancy pictures I have attached that I took while developing these features.

    If you'd like to download Way Cooler, the best way is through the download page on the site:

    Going forward, more attention is going to be paid to the Lua and D-Bus API. There's going to be some huge changes, but there will be stabilization happening not soon after that in order to encourage the development of client programs for Way Cooler. Once that is done, I will finally get started on writing the last really needed client program for Way Cooler: the top bar.

    ๐Ÿ‘ Redshift support

    #201 #285
    Contrary to popular belief, you can use Wayland with redshift ๐Ÿ˜‰. Way Cooler now works with a patched version of redshift. To specify for it to work, simply specify redshift -m wayland and it will work just as it did before.

    ๐Ÿ”€ This is the same way Sway does it, and if you want this to become mainstream I suggest talking to the maintainers of redshift in order to get this merged into upstream.

    Multi-head output

    ๐Ÿ‘ Finally, finally Way Cooler now supports multiple monitors. It doesn't yet support hotplugging, due to a bug in wlc, however if you start Way Cooler with multiple monitors plugged in they will properly be assigned and used.

    Scrot-like program

    0๏ธโƒฃ There's a new program in the growing repository for Way Cooler, wc-grab. This is a fairly simple program that emulates scrot somewhat. It takes a screenshot of the current active output and dumps it to a file. By default, it dumps it to screenshot.png, but that can be controlled with the -o flag.

    ๐Ÿ‘€ See wc-grab --help for more information.

    ๐Ÿ‘ Lockscreen support

    ๐Ÿ”’ Way Cooler now supports lock screens as of #279. In order to lock the screen, in the Lua file you simply specify which program should be used. When the appropriate keybinding is pressed, Way Cooler locks down and puts the client program front and center. Once the client program closes (either gracefully or not), control is returned to the user.

    ๐Ÿ”’ I have made wc-lock as a simple implementation of a lock screen for Way Cooler. It uses PAM to authenticate, so once the program is spawned the user simply has to type in their password and hit enter in order to return to the normal operation.

    ๐Ÿ‘ Basic mode support

    ๐Ÿ”’ Related to lock screen support, basic modes have been added to Way Cooler. There are three so far:

    0๏ธโƒฃ 1. Default - just like before

    1. Locked - when a lockscreen is active 0๏ธโƒฃ 3. Custom - Everything runs as in default, but for every wlc callback a custom Lua function can be invoked

    ๐Ÿ‘€ For more information, see the attached issue #299 .

    ๐Ÿ‘ Tabbed/Stacked tiling support

    #301 #163
    ๐Ÿ‘ Way Cooler now has tabbed/stacked tiling support, just like i3/sway does. This is the last i3-related feature that is plan to be added. If more would like to be added, I suggest either sending a patch or letting your voice heard why a certain feature should be ported as well.

    Container borders

    ๐Ÿ Related to tabbed/stacked tiling, nested containers now have borders drawn around them, making it much easier to see where nested containers are without guessing from the way the windows are laid out.

    ๐Ÿ› Bug fixes

    • ๐Ÿšš Can no longer remove root container in workspaces #280
    • ๐Ÿ›  Fixed duplicate active number crash #276
    • Background now uses output geometry #291
    • ๐Ÿ›  Fixed issues when gaps were enabled #289
  • v0.5.2 Changes

    March 17, 2017


    • โšก๏ธ There is now an option to select the behaviour of the mouse when resizing (e.g, snap to the window like in Awesome, or don't snap anywhere like in i3). See the updated default configuration for more information. #269
      • This added a new configuration category, mouse. This will be expanded later to provide more options for the mouse, including libinput configuration once #189 is addressed.


    • โšก๏ธ Title bars will now update their text to reflect the title of the window #270
    • Gaps and borders can now be used at the same time #263
    • ๐Ÿ‘ Active border color should now work better (e.g less times when two are highlighted active, or when none of them are even though the user is focused on a window) #263

    ๐Ÿ Windows

    • ๐Ÿ Popup windows now attempt to focus in the center of the screen, and are never too small than the minimum floating window limit. #264
      • Note that due to limitations in Xwayland, they may not always have their geometry properly set, so they may still sometimes appear in the top left corner.
    • Way Cooler now remembers which view you focused on within in a container. In other words, the algorithm to select the last active window is now one-to-one with i3. #204

    ๐Ÿ› Bug Fixes

    Sending containers across workspaces will no longer cause a duplicate active number (and a crash) #267

  • v0.5.1 Changes

    February 26, 2017

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Fixed race condition that caused tree instability (e.g a crash)
      • This was normally triggered by closing e.g mpv with the close window command.

    ๐Ÿ”ง Configuration

    Backwards incompatible changes

    • Cleaned up util functions
    • Removed spawn_dmenu and spawn_terminal command, please use util.program.spawn_once instead.
  • v0.5.0

    February 21, 2017