19 releases
Uses old Rust 2015
0.8.1 | Nov 22, 2018 |
---|---|
0.8.0 | Jan 24, 2018 |
0.7.0 | Dec 24, 2017 |
0.6.2 | Aug 15, 2017 |
0.1.1 | Mar 10, 2016 |
#1377 in GUI
1.5MB
14K
SLoC
Way Cooler
Way Cooler is a customizable tiling window manager written in Rust for Wayland and configurable using Lua.
It is heavily inspired by the tiling of i3 and the extensibility of awesome.
While Lua is used for the runtime configuration (like in awesome), extensions for Way Cooler are implemented as totally separate client programs using D-Bus. Currently we support 3 official extensions:
- way-cooler-bg: Draws the background for Way Cooler.
- wc-grab: Allows the user to take pictures of a screen.
- wc-lock: Locks Way Cooler and requires their password to be entered to unlock.
Development
Way Cooler is currently in beta. The core features have been added and it is in a usable state, but there will be backwards-incompatible changes in future versions that might require some user intervention.
Once Way Cooler reaches 1.0, we will guarantee backwards compatibilty for both the configuration files and the D-Bus interfaces.
Here are some pictures of what Way Cooler looks like today:
Motivation
We wanted to get experience with Rust and we found current X11 window managers to not have all the features we wanted.
Currently there are very few fully-featured tiling window managers in the Wayland ecosystem, as most of the effort has been porting Gnome and KDE over. Although Wayland is still in early-stage development and is not backwards compatible with existing X11 tools, we wanted to put our stake in and provide for current tiling window manager users in the future.
Current Features
- i3-style tiling
- Horizontal/Vertical layouts
- Tabbed/Stacked layouts
- Nest containers with different layouts
- Floating windows per workspace
- Client application support via the D-Bus IPC
- See an example application here. It displays the tree in a somewhat organized format, and is actually really helpful for both debugging the tree and understanding how subcontainers work.
- Enables dynamic configuration at runtime, without having to reload a configuration file
- Allows extensions of the window manager to exist as separate programs talking over the IPC
- A Lua 53 environment designed to make extending Way Cooler simple and easy
- Lua is the configuration format, allowing the user to enhance their window manager in any way they want.
- Utilities library included to aid communicating with Way Cooler
- X programs supported through XWayland
- Borders around containers
- Gaps between containers
- Basic X11 bar support (e.g lemonbar, polybar)
- Screen grabber / screen shot taker
- Lock screen
Planned Features
- Notification support
- AwesomeWM compatibilty (see this issue for more info)
- A dedicated status bar
- The status bar should be swappable, such that a user can implement their own or use a different one.
- More customization settings
Follow the development of these features in our issues section or checkout our contribution guidelines if you want to help out.
Installation
On the AUR
@vinipsmaker and @timidger maintain our AUR packages:
NixOS
@miltador mantains our NixOS package.
openSUSE
@jubalh maintains our openSUSE package. Install with:
zypper ar -f obs://X11:windowmanagers windowmanagers
zypper in way-cooler
Installation Script
For users who are not using the above mentioned Linux distributions, we have provided a simple install script that you can run in the terminal in order to install Way Cooler.
Please go to the download page on our site in order to download Way Cooler.
Build from source
You will need the following dependencies installed on your machine to install Way Cooler:
- Wayland
- Including the server and client libraries
- wlc
- Installation instructions can be found on their github page
- Weston (optional)
- The init file defaults to using
weston-terminal
as the default terminal emulator
- The init file defaults to using
- Cargo
- The package manager / build system used by Rust
- Cairo
Finally, to install Way Cooler simply run the following cargo command:
cargo install way-cooler
You can try it out while running in an X environment, or switch to a TTY and run it as a standalone.
Init File
All keyboard shortcuts are configurable through the init file. The recommended strategy is to copy the default configuration file to $XDG_CONFIG_HOME/way-cooler/init.lua
and edit from there.
Contributors
Way Cooler was started by @Timidger and @SnirkImmington, but these fine people have helped us:
- @Dcelemeno for creating the logo
- @platipo for creating the official backgrounds
- @vinipsmaker created (and maintains) AUR packages
- @miltador created NixOS package
- @starfys created way-cooler desktop file
- @toogley fixed a link
- @paulmenzel fixed a typo
- @thefarwind made kill way-cooler command rebindable
- @bluss for updating our use of
PetGraph
to useStableGraph
- @Abdillah
- fixed background program to have solid colors be variable size at initilization
- added modes to the background program (fill, fit, stretch, title)
- @hedning fixed an unsigned underflow in the tiling code
- @jubalh created the openSUSE package
And of course, thanks to the Rust community and the developers of wlc.
Contributing
Check out Contributing for more information.
If you find bugs or have questions about the code, please submit an issue or ping us on gitter.
Dependencies
~19MB
~383K SLoC