resources | ||
wallpapers | ||
LICENSE | ||
README.md |
nwg-shell
This project is an attempt to create a GTK-based shell for sway Wayland compositor. It's aimed at those, who do not believe that the rationale of the modern computer is to use less than 200 MiB RAM and 0.5% CPU. Those who don't want to stare solely at the terminal's black window. The programs included in the project are to give you the freedom of choice what your desktop looks like.
This project is primarily aimed at sway. Some parts may work on other wlroots-based compositors. Some may even work on X11, but it's not the primary objective. Feel free to submit addons / improvements, but keep in mind that all the stuff must work on sway, and may or may not work elsewhere.
Probably "nwg-shell" is not the best possible name. It's subject to change as soon as someone comes up with a better idea.
Components, as for now:
nwg-panel (Python)
The panel is the central point of the project. At the moment it contains 9 modules: Clock, Controls, CustomButton, Executor, MenuStart, Playerctl, Scratchpad, SwayTaskbar and SwayWorkspaces. The Executor module supports tint2-like executors, that allow to add user-defined features. The MenuStart module adds support for the nwg-menu plugin (see below).
nwg-launchers (C++)
This is a set of launchers: application grid, button bar and dmenu. Initially written in python, turned out to be too slow. I developed them from scratch in C++, as my first, and probably the last C++ code. Thanks to Contributors, led by @Siborgium, the code looks pretty well now, but it's difficult to me to maintain. I'm not going to live long enough to learn C++ at last, so I think I'll code the grid and dmenu from scratch in golang. Sooner or later.
nwg-dock (Go)
Fully configurable dock written in Go. It features pinned buttons, task buttons, the workspace switcher and the launcher button. The latter by default starts nwggrid (application grid) from nwg-launchers.
![](https://scrot.cloud/images/2021/05/10/dock.png)
nwg-menu (Go)
It's the MenuStart plugin to nwg-panel, written in Go. It displays the system menu with simplified freedesktop main categories. It also provides the search entry, to look for installed application on the basis of .desktop files, and for files in XDG user directories.
You may pin-up applications above the categories list. In the bottom-right corner of the window you'll also see a set of buttons: lock screen, logout, restart and shutdown.
![](https://scrot.cloud/images/2021/05/10/menu.png)
Azote (Python)
Azote is a picture browser and background setter, as the frontend to the swaybg (sway/Wayland) and feh (X windows) commands. The user interface is being developed with multi-headed setups in mind. Azote also includes several colour management tools.
![](https://scrot.cloud/images/2021/03/13/azote-1.9.0.png)
gopsuinfo (Go)
This command, based on the gopsutil Go module, produces text output to display system usage info in nwg-panel executors.
autotiling (Python)
This script uses the i3ipc-python library to switch the layout splith/splitv depending on the currently focused window dimensions. It works on both sway and i3 window managers. You may love it or hate it, but it's my must have.
Contributions
If you like the idea of the GTK shell for sway, feel free to submit your improvements, new modules, plugins or standalone programs. Preferred languages are python and Go.
Important: before you open a PR containing major changes to already existing programs, please (PLEASE!) open an issue to discuss what you're going to do.
Feedback
Bug reports and ideas are more than welcome. Please remember, however, that at this stage, most part of the shell is being developed by a single hobbyist, who uses Arch Linux (BTW). Some issues specific to other environment, e.g. Debian, FreeBSD, are out of my range and need some Community commitment.
Resources
The shell logo has been created by SGSE and released under the terms of the Creative Commons license CC BY 4.0. Available as .svg in the resources folder. You'll also find some backgrounds in the wallpapers folder.
![](https://scrot.cloud/images/2021/05/10/nwg-shell-logo-cyan.png)
Images used on this page come from: