A Gnome inspired desktop shell for Wayland compositors/window managers written in C and Gtk4.
Way-Shell expects a Gnome-like environment to be available. This means DBus must be running and the following services must be available:
- Logind
- NetworkManager
- WirePlumber/Pipewire
- PowerProfiles Daemon
- UPower
If you're using Fedora these services should be available by default.
Currently Way-Shell only supports Sway but this will change as the project matures.
Way-Shell is in its very early stages of development so expect some crashes and bugs. However, it is my daily driver and I'm rather quick to fix show stopper issues.
2024-02-23T14.16.51-05.00.mp4
The demo above is using SwayFX which I really enjoy.
I'll focus on Fedora since this my daily driver distro.
I believe the instructions here can be translated for other distros with a bit of effort.
I'd love any community members to contribute their own methods of installation even if its just documentation.
Way-Shell depends on the following packages (Fedora)
libadwaita-devel \
upower-devel \
wireplumber-devel \
json-glib-devel \
NetworkManager-libnm-devel \
pulseaudio-libs-devel \
meson \
cmake \
gtk-doc
Way-Shell also depends on gtk4-layer-shell which isn't currently packaged for Fedora.
Currently, the easiest way to run Way-Shell is to use a toolbox.
A makefile exists in contrib/toolbox/fedora
which will automate the setup
of a sway-shell toolbox container. Just run 'make' in that directory after you
installed toolbox.
You may need to adjust the container's FROM
statement to match your Fedora
version.
Running inside a toolbox is not perfect tho.
Inside the toolbox we can't resolve application icons so the mixer panel will show a generic 'media' icon for audio sources.
You'll also need to interface with DConf inside the container.
Given the docker file in that folder you could always just run those steps or, a translation of those steps for your distro, and install Way-Shell on your host machine.
Eventually, I hope to get proper deb/rpm packaging for this project but its not on my immediate radar.
Contributions welcome!
Here is an example of how I configure Sway once way-shell is installed and its binaries are in $PATH
# way-shell configuration
exec way-shell
bindsym XF86AudioRaiseVolume exec way-sh volume up
bindsym XF86AudioLowerVolume exec way-sh volume down
bindsym XF86MonBrightnessDown exec way-sh brightness down
bindsym XF86MonBrightnessUp exec way-sh brightness up
- Multi-monitor support
- Scrolling workspaces bar
- Notifications daemon implementation and message tray
- Calendar (in message tray)
- Quick Settings with button grid
- Network Manager integration
- Logind integration (restart/suspend/sleep/logout/brightness/idle inhibitor)
- In-panel wireplumber mixer (change audio input/output routes)
- PowerProfiles daemon integration
- Brightness and Audio sliders
- DConf integration (configuration is driven via dconf)
- CLI interface (way-sh)
- Media Player integration (control DBus announced media players)
- Bluetooth integration (pair with discoverable bluetooth devices)
- Themeing (provide CSS override directory, light/dark theme switch button, and allow a script to be ran after the theme is switched)
- Figure out proper rpm and deb packaging
- Lock Screen (Wayland protocol based) implementation
- App/Workspace switcher (alt+tab replacement)
- Workspace Overview/Application launcher overlay widget
- Option to turn on idle inhibitor when video/audio sources are detected.