Nwg-shell for sway

As I might have already mentioned, or not, some time ago I decided to gather all my sway-related stuff in a common project. As there are hardly any sway user on this forum, I’ll close all the separated threads, and will post updates in this thread only.

The nwg-shell project is an attempt to create a GTK-based shell for sway. 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. If you don’t want to stare all the time 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.

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-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 nwg-drawer.

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.

nwg-drawer (Go)

A golang replacement to the nwggrid command (a part of nwg-launchers). The nwg-drawer command displays the application grid. The search entry allows to look for installed applications, and for files in XDG user directories. The grid view may also be filtered by categories. You may pin applications by right-clicking them. Pinned items will appear above the grid. Right-click a pinned item to unpin it.

nwg-bar (Go)

nwg-bar is a golang replacement to the nwgbar command (a part of nwg-launchers), with some improvements. Aimed at sway, works with wlroots-based compositors only. The nwg-bar command creates a button bar on the basis of a JSON template placed in the ~/.config/nwg-bar folder. By default the command displays a horizontal bar in the center of the screen. Use command line arguments to change the placement.

nwg-wrapper (python)

This program is a GTK3-based wrapper to display a script output, or a text file content on the desktop in sway or other wlroots-based compositors. It uses the gtk-layer-shell library to place the window on the bottom layer.As well the script output, at the text file may be formatted with Pango Markup. The window appearance is defined
with css styling.

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.

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.


Top again @nwg . Keep it on.

Edit; You re merging your Threads !

1 Like

And also all my work to date.

By the way:

nwg-drawer repository published

The program is ready for testing.


You could put them together and invent another DE/WM. You have pretty much every piece that a DE/WM needs ready.


DE is much more than just launchers. Not a task for a solo developer. :smiley:

1 Like

Yep, way too much work I also think.

You don’t have to develop everything from scratch. Build on top of Sway, include already available components from xfce/lxde/lxqt, then you have your own DE/WM. You may call it “ADE” (aka Archlabs Desktop Environment) :grinning:


I believe Enlightenment is one man show.

ArchLabs does not need my stuff.

Well, seriously: IMO to build a real Desktop Environment, you need your own file manager, a terminal emulator, a lot of minor tools, and primarily a consistent settings system.

Don’t think that way. Look at Budgie, it’s based on GNOME 3/4. Most of its components are directly from GNOME project. If you can make something special in an existing product, it also stands out.

1 Like

Maybe, I don t know, anyways it s lots of work.

I just wanted to decide what my system looks like, and to share my “ricing level hard” with the others. In case someone wants to make a more advanced use of this stuff, I’ll be glad to help. Honestly, sometimes I’m confused enough with what I’ve already written.

1 Like

nwg-dock version bumped to 0.1.3

  • added -nows and -nolauncher arguments to disable the workspace switcher and the launcher button (closes #10);
  • added auto-detection of nwg-drawer or nwggrid command, if available.

Top @nwg


  • minor fix: in autohiDe mode, hide the dock on launcher button click
1 Like

Top @nwg

nwg-panel 0.3.2 released


Top again @nwg

1 Like

I lol-ed so hard :rofl: You’re a great man! I could say that I owe it to you that I started using AL. I started using some of your tools in ᵃʳᶜᵒ linux with openbox, then I found your threads/posts on this forum with more details about your tools, then decided to try AL and the rest is history.


Thank you for your kind words :slight_smile: