Releases: way-cooler/way-cooler
Rust 1.30 Bugfix
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.
Alpha Channel on borders
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.
EOL WLC, extension program improvements, better tiling borders
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.
Distribution
- NixOS users can now enjoy a much more complete Way Cooler experince thanks to the work done by @gnidorah. (#446)
- Install script from http://way-cooler.org/download 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!
Background
The following changes take effect in this release:
- The background program binary has been renamed to
wc-bg
(originallyway-cooler-bg
). - The background program now properly assigns backgrounds to all outputs.
- 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 andwc-bg
on Sway.
- As a consequence, you can now use
Lockscreen
- 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. (https://github.com/way-cooler/way-cooler-lock/releases/tag/v0.2.0)
Screenshot taker
- Updated to use the latest D-Bus protocol. (https://github.com/way-cooler/way-cooler-grab/releases/tag/v0.3.0)
Way Cooler
Configuration
- Can now choose whether root containers have borders or not. (#451)
Dependencies
- 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.
Lua
- 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)
Tiling
- 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)
Fixed regressions, quality of life enhancements
Lua
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
Distribution
- The install page on way-cooler.org should function correctly now
- Binaries are now statically compiled with wlc by default
Documentation and Bug fixes
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
Full i3 tiling, scrot-support, lock-screen support, redshift-support, multi-head output support, and of course bug fixes
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: http://way-cooler.org/download
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
#297 #64
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
#171
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
#279
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
#299
Related to lock screen support, basic modes have been added to Way Cooler. There are three so far:
- Default - just like before
- Locked - when a lockscreen is active
- 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
Border improvements, configurable pointer snap, bug fixes
Resizing
- 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.
- This added a new configuration category,
Borders
- 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
Bug fixes, more configuration changes
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.
- This was normally triggered by closing e.g
Configuration
Backwards incompatible changes
- Cleaned up util functions
- Removed
spawn_dmenu
andspawn_terminal
command, please useutil.program.spawn_once
instead.
Mini-graphical update
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'sway_cooler.windows = { borders = { size = 20 } }
, for example). config
object has been merged intoway_cooler
.
X11 Bar support
- Added support for X11 bars, such as
polybar
andlemonbar
- To enable, set the
x11_bar
variable under theprograms
category to the name of the window that the bar spawns (e.g,bar
when running lemonbar aslemonbar -n "bar"
- Support for more integrated bars will come in a later version.
Borders
- 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.
Gaps
- Added gap support between windows. You can think of these as transparent borders.
D-Bus
- 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.
Fullscreen command, tiling fixes, better diagnostics
Commands / Keybindings
- Added fullscreen command
- Default keybinding is
mod+f
- Command is also exposed through the D-Bus command
FullScreen
- Default keybinding is
- Added commands to control the location of the pointer.
- Absolute positioning (
SetPointerPos
) - Placing the mouse at the corner of a container (
GrabAtCorner
)
- Absolute positioning (
- Modifier for mouse controls (eg resize and move window) is now configurable
- The default modifier is now
Alt
, instead of the previousCtrl
- The default modifier is now
Tiling
- Popup windows now automatically are floating.
- Wayland apps (eg
termite
,weston-terminal
, etc) should no longer have blurry text. - Resizing a window while running Way Cooler from a TTY now works correctly.
Logging
- Way Cooler now log all environment variables in the prelude of the log.
- When a key is bound to a command that is now logged.
Background
- Resizing the output / changing the resolution will now properly update the background.
Misc
- Already existing debug checks have been turned on for release builds.
- Restart should properly call the user-defined restart callback now.
- Updated to use the
StableGraph
of Petgraph, which should improve performance and reliability.