Skip to content

A Gnome-like shell for wayland compositors

License

Notifications You must be signed in to change notification settings

rotech/way-shell

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Way-Shell

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.

Installing and Running Way-Shell

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!

Configuring Sway

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

Road to v1.0

  • 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)

Road to v2.0

  • 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.

About

A Gnome-like shell for wayland compositors

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 98.4%
  • CSS 1.4%
  • Other 0.2%