Skip to content

Useful add ons for sway

Sean Whitton edited this page Apr 19, 2024 · 199 revisions

Here is a list of apps and scripts for Sway (and probably other Wayland compositors based on wlroots).

Note that pretty much all GTK and KDE apps such as firefox, thunderbird, chromium, even emacs (with the puregtk/emacs-28 branch) can be run as native wayland under sway so they're not listed here.

A collection of user-contributed scripts is available in sway-contrib.

[WIP] = Work in progress or alpha status

Login managers

⚠️ Notice: login managers are not officially supported by the Sway developers.

  • greetd - a minimal and flexible login manager daemon
    • gtkgreet - a minimal gtk based login manager
    • qtgreet - a fancy qt based login manager
    • tuigreet - a simple graphical console login manager
    • wlgreet - wayland login manager
    • regreet - Clean and customizable greeter for greetd
  • emptty - dead simple CLI Display Manager on TTY
  • Ly - a lightweight TUI (ncurses-like) display manager
  • autologin - automatically logs into the configured user; perfect for computers with a single user and another method of startup authentication (like encrypted hard-drive)
  • uwsm - Universal Wayland Session Manager that wraps sway (or other compositors) into systemd units. Supports integrating into login shell, XDG autostart, environment management, launching applications in units. Extendable with plugins.

Launchers

Generic launchers for GTK or KDE such as xfce4-appfinder and krunner work fine but the following were written with sway in mind:

  • kickoff - application launcher with a focus on performance and low latency
  • lavalauncher - simple launcher for Wayland (unmaintained)
  • nwg-launchers - a set of launchers: application grid, dynamic menu, button bar
  • Ulauncher - app launcher
  • wldash - A dashboard/launcher/control-panel thing for Wayland
  • yofi - minimalistic application launcher for wayland
  • gmenu - Desktop application launcher
  • mauncher - Mauncher is a GTK-based alternative to dmenu for Wayland which supports display scaling
  • fuzzel - application launcher, similar to rofi's drun mode
  • term-dmenu - Replace dmenu with a floating terminal and FZF
  • sirula - Simple app launcher for Wayland written in Rust
  • onagre - A pop-launcher based application launcher for wayland and X.

Menus

  • wofi - A rofi inspired menu and launcher for wlroots compositors
  • bemenu - dmenu replacement with Wayland support
  • tofi - Tiny dynamic menu for Wayland
  • wlogout - A wayland based logout menu wlogout
  • wayland fork of rofi - fork of Rofi with added support for Wayland
  • dmenu-wl - an efficient dynamic menu for wayland (wlroots).
  • sway-launcher-desktop - a TUI-based launcher menu made with bash and the amazing fzf
  • i3-menu - menu generated from bindsym for learning sway keystrokes and remembering obscure ones (was 'sway-menu' but now also runs on i3wm)
  • sway-mode - Head-up-display (HUD) help while running 'modes' such as 'move-mode'
  • sway-fzfify - a series of scripts which FZFify your sway desktop.
  • waylogout - a graphical logout/suspend/reboot/shutdown dialog inspired by oblogout and based on code from swaylock-effects.
  • wlr-which-key - Keymap manager for wlroots-based compositors in Rust.

Display/outputs

  • wob - A lightweight overlay volume/backlight/progress/anything bar for Wayland.
  • mywob - autostarts wob(1)
  • wdisplays - GUI display configurator for wlroots compositors [like arandr(1)] (Mirror since the upstream has been deleted)
  • wlr-randr - manage outputs of a Wayland compositor.
  • wlay - Graphical output management for Wayland
  • kanshi - define output profiles that are automatically enabled and disabled on hotplug. eg, this can be used to turn a laptop's internal screen off when docked.
  • swayrst - Save and restore your outputs, workspaces and windows
  • persway - a simple sway ipc daemon
  • fade - Have new windows fade in gradually. This script is alpha (get it;)) at best, you may encounter issues.
  • way-displays - Manage Your Wayland Displays
  • nwg-displays - Output management utility for sway Wayland compositor, inspired by wdisplays and wlay.
  • shikane - A dynamic output configuration tool that automatically detects and configures connected outputs based on a set of profiles.

Image viewers

  • imv - imv is a command line image viewer intended for use with tiling window managers.
  • mvi - A command line image viewer utilizing mpv
  • ucollage - An extensible command line image viewer inspired by vim.
  • swayimg - image viewer for Sway/Wayland
  • vimiv - An image viewer with vim-like keybindings.

TIP: The kitty terminal emulator has a built-in image viewer, icat.

TIP: ueberzugpp has tmux support on sway.

Video Players

  • mpv - Command line video player

Notification

  • mako - A lightweight notification daemon for Wayland.
  • fnott - Keyboard driven and lightweight Wayland notification daemon
  • dunst - a highly configurable and lightweight notification daemon.
  • wayherb - Wayland notifcation port of herbe - daemon-less notifications without D-Bus. Minimal and lightweight.
  • swaync - A simple notification daemon with a notification center built with GTK
  • salut - Animated mouse centric notification daemon

Workspaces

  • workstyle - dynamically rename your workspaces to indicate which programs are running in each one.
  • sworkstyle - The main difference between this and workstyle is that this supports exact app names instead of only generic titles.
  • wsdnames.py - automatically renames workspace title
  • swaysome - manage workspaces namespaced on a per-screen basis, like awesome wm.

Overview

  • sov - Similar to i3-overview: An overlay that shows schemas for all workspaces to make navigation in sway easier.

Layouts

  • autotiling - switch the layout splith/splitv depending on the currently focused window dimensions.
  • swaymonad - an auto-tiler that implements Xmonad-like layouts.
  • papersway - PaperWM-style scrollable window management for Sway/i3wm

Screenshot

  • grim - grab images from a Wayland compositor
  • grimshot - script to grab regions from the window. (doesn't take screenshots by itself).
  • slurp - select a region in a Wayland compositor
  • screenshot-bash - screenshot - upload - copy-url pipeline
  • snag - snag screenshots and screencasts with Rofi
  • swappy - screen snapshot & editor
  • swayshot - Print screen helper for sway adds keyboard shortcuts for screenshots
  • shotman - takes a screenshot and shows a small thumbnail with basic actions.
  • taiga - an animated screenshot program
  • wayshot - A native screenshot tool for wlroots based compositors such as sway and river written in Rust.
  • flameshot - Powerful yet simple to use screenshot software
  • sway-screenshot - Utility to easily take screenshot in swaywm using your mouse
  • hyprpicker - A wlroots-compatible Wayland color picker

Brightness

  • brightnessctl - control device brightness
  • light - control backlights (unmaintained) (archived)
  • clight - a C user daemon utility that aims to fully manage your display (And a GUI for it clight-gui )
  • wluma - automatically adjusts screen brightness based on the screen contents and amount of ambient light around you
  • brillo - controls the brightness of backlight and LED devices on Linux.
  • wlr-brightness - adjust the brightness of your screen
  • wl-gammarelay - a daemon with D-Bus interface to control display color temperature and brightness
  • wl-gammarelay-rs - a daemon with D-Bus interface to control display color temperature and brightness written in Rust

Gamma

  • wl-gammactl - Small GTK GUI application to set contrast, brightness and gamma
  • gammastep - Adjust the color temperature of your screen
  • wlsunset - Day/night gamma adjustments for Wayland
  • wl-gammarelay - a daemon with D-Bus interface to control display color temperature and brightness
  • wl-gammarelay-rs - a daemon with D-Bus interface to control display color temperature and brightness written in Rust

Colorscheme

  • darkman framework for dark-mode and light-mode transitions, implementing org.freedesktop.appearance.color-scheme

Wallpaper

  • swaybg - Wallpaper tool
  • azote - Wallpaper and colour manager for Sway, i3 and some other WMs
  • wallutils - wallpaper manager
  • glpaper - wallpaper program that allows you to render glsl shaders as your wallpaper
  • mpvpaper - wallpaper program that allows you to play videos with mpv as your wallpaper
  • qt-video-wlr - Qt5 video player
  • oguri - A very nice animated wallpaper daemon (archived and unmaintained)
  • sunpaper - a linux utility to change wallpaper based on local sunrise and sunset times.
  • wpaperd - Wallpaper daemon for Wayland that can change the wallpaper after a fixed time.
  • swww - A Solution to your Wayland Wallpaper Woes.
  • wsbg - Wallpaper tool with per-workspace configuration
  • wbg - Super simple wallpaper application for Wayland compositors implementing the layer-shell protocol
  • waypaper - GUI wallpaper manager for both Wayland and Xorg window managers
  • Waypaper-Engine - A graphical frontend for setting wallpapers and playlists, using swww under the hood!
  • WAT - A console based wallpaper changer made in Lua, for sway

Bars & panels

  • swaybar - default bar for sway
  • waybar - Highly customizable Wayland bar for Sway
  • yambar - is a lightweight and configurable status panel
  • rootbar - a bar for wlroots based wayland compositors such as sway
  • rwaybar - a bar with configurable widgets and transparent overlay support
  • wapanel - Simple panel for Wayland with decent XFCE-like applets
  • sfwbar - Sway Floating Window Bar is a taskbar for Sway, focused on a stacking layout workflow
  • nwg-shell - a 'shell' for wl-roots including various other nwg-* components listed here
  • nwg-panel - GTK-based panel, inspired by Waybar and tint2
  • nwg-dock - Fully configurable dock featuring pinned buttons, task buttons, the workspace switcher and the launcher button.
  • nwg-menu - Menu for nwg-shell
  • nwg-drawer - a launcher for nwg-shell
  • nwg-bar - a simple button bar for nwg-shell
  • nwg-wrapper - display text or images on any layer (eg root)

Bar content generators

  • swayrbar - swayrbar is a status command for sway's swaybar implementing the swaybar-protocol
  • i3status - Status bar generator for i3bar, dzen2, xmobar or similar programs
  • i3blocks - A feed generator for text based status bars (yes, it works fine with swaybar!)
  • luastatus - Universal status bar content generator
  • i3status-rs - a feature-rich and resource-friendly replacement for i3status, written in pure Rust. It provides a way to display "blocks" of system information (time, battery status, volume, etc) on the i3 bar. It is also compatible with sway.
  • gopsuinfo - prints system usage information as text for Waybar custom modules or icon/text for nwg-panel executors
  • statusbar - A fully-featured, customizable, extensible, and well-documented content generator for swaybar/i3bar. It offers a variety of widgets, allows for integration with other generators (listed above), and makes it easy to implement your own widgets using Go.
  • swaybar-commander - A status command for swaybar that uses the swaybar-protocol to independently update user-defined content blocks

Widgets

  • AGS (Aylur's Gtk Shell) - This is a library built for [GJS] (https://gitlab.gnome.org/GNOME/gjs)(Gnome JavaScript) to allow defining GTK widgets in a declarative way.
  • Eww - a standalone widget system made in Rust that allows you to implement your own, custom widgets
  • Gsimplecal - a lightweight calendar applet written in C++ using GTK.
  • wlclock - a digital analog clock for Wayland desktops.
  • wlr-sunclock - a desktop widget to show to the sun's shadows on earth.

Keyboard/Input

  • swhkd - sxhkd clone for Wayland (works on TTY and X11 too)
  • wev - event debugging similar to xev for X11
  • wshowkeys - display keypresses (fork with fixes for recent wlroots versions, original here)
  • keyd - A key remapping daemon for linux.
  • dotool - Command to simulate input anywhere (X11/Wayland/TTYs) [like xdotool(1)]
  • ydotool - Generic command-line automation tool (no X!) [like xdotool(1)]
  • myautotype - Hot-keys using ydotool/wtype/xdotools possibly looking up a key-value pair from ~/.config/myautotype
  • wtype - xdotool type for wayland
  • clipman - A basic clipboard manager for Wayland, with support for persisting copy buffers after an application exits.
  • copyq - full function clipboard manager (but requires the full KDE/Qt stack)
  • cliphist - clipboard history “manager” for wayland (including images) - requires golang-1.16 to build
  • lisgd - bind gestures on touchscreens, and unsupported gesture devices via libinput touch events
  • wl-clipboard - Wayland clipboard utilities, wl-copy and wl-paste, to copy data between the clipboard and Unix pipes, sockets, files etc
  • wl-clipboard-history - Wayland clipboard history tracker
  • clipmon - preserves the clipboard and notifies when an application pastes (for security)
  • swaykbdd - per-window keyboard layout for Sway
  • i3keys - lists all the keys that are bound to some action in i3 or sway
  • swaynagmode - programmatic control over swaynag, intended for use with keyboard bindings
  • sway-alttab - simple daemon that keeps track of your last focused window and switches to it on receiving a SIGUSR1. Automatically binds Alt-Tab to the same action.
  • wlrctl - command line utility for miscellaneous wlroots Wayland extensions (similar to xdotool). WARNING: requires sway-1.6+
  • waynergy - [WIP] implementation of a synergy client for wlroots compositors
  • swayr - A urgent-first/LRU window and workspace switcher usable with launcher/menu programs such as wofi.
  • wl-clip-persist - Keep Wayland clipboard even after programs close
  • sway-input-config - Input device configurator for Sway, written on Qt/Python

Input Method Editors

  • kime - [WIP] Korean IME
  • wlanthy - [WIP] simple Wayland-native Japanese input method based on anthy
  • anthywl - [WIP] Japanese input method for sway based on anthy
  • wlhangul - [WIP] A Hangul input method for Wayland.
  • wlpinyin - [WIP] experimental minimal wayland IME for Chinese
  • wlchewing - [WIP] Wayland Chinese zhuyin input method with libchewing
  • fcitx5 - generic input method framework released under LGPL-2.1+

On-screen keyboards

  • squeekboard - Librem5 keyboard
  • wvkbd - On-screen keyboard for wlroots that sucks less

Idle timeout

  • swayidle - An idle daemon for wayland compositors
  • wayidle - Wait for a single idle timeout

Locking

  • swaylock - a screen locking utility for Wayland compositors
  • Waylock - a simple screenlocker for wayland compositors.
  • swaylock-effects - a fork of swaylock which adds built-in screenshots and image manipulation effects like blurring
  • mylock - configure swaylock for various use-cases - safe, at-home, movie modes plus auto downloading of images
  • chayang - gradually dim the screen
  • swaylock-plugin - a fork of swaylock which can use existing wallpaper programs to draw the lockscreen background
  • gtklock - screen locker with modules for userinfo (incl. photo), powerbar, mpris media controls, others

Terminals

  • Alacritty - A fast, cross-platform, OpenGL terminal emulator
  • foot - A fast, lightweight and minimalistic Wayland terminal emulator
  • gnome-terminal - gnome's terminal
  • kitty - fast, featureful, GPU based terminal emulator
  • Konsole - KDE's Terminal Emulator
  • sakura - Simple but powerful libvte based terminal emulator
  • roxterm - terminal emulator intended to provide similar features to gnome-terminal, based on the same VTE library
  • wezterm - GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust
  • Ate - Awesome terminal emulator
  • Germinal - Minimalist vte-based terminal emulator
  • Havoc - A minimal terminal emulator for Wayland
  • wterm - An st fork for wayland

VNC/RDP/SPICE

  • wayvnc - VNC server for wlroots
  • wlvncc - Wayland VNC Client (WIP)
  • connections - Wayland VNC/RDP client - not quite feature complete in released version 3.38 eg no full-screen, buggy config GUI. 3.40 may fix that when released.
  • remotely - wayland VNC client - abandoned by author in favour of connections.
  • vncviewer - VNC client - fast, full featured, stable - but uses XWayland.
  • vinagre - Wayland VNC/RDP client. VNC support is rather slow.
  • remmina - Wayland VNC/RDP/SPICE client. VNC support is rather slow.
  • krdc - Wayland VNC/RDP client. AVOID - does not support sway workspaces and took my session down!! Version 20.08.1
  • freerdp - Wayland RDP client (wlfreerdp) which is pretty fast (but needs the -grab-keyboard option to work with sway). Also xfreerdp, a fast XWayland RDP client. Tested against xrdp X11 server. Is there a 'wayrdp' server out there?

Remote/recording

See also: Screencast-Compatibility

  • waypipe - waypipe is a proxy for Wayland clients. This makes application forwarding similar to ssh -X feasible.
  • wf-recorder - Screen recorder for wlroots-based compositors eg swaywm
  • wl-screenrec - Efficient screen recorder for wlroots-based compositors. Requires vaapi support.
  • cute-sway-recorder - Screen recorder for wlroots-based window managers, mainly Sway (a graphical Qt wrapper for wf-recorder)
  • obs-studio - capturing, compositing, encoding, recording, and streaming video content, efficiently (see wlrobs)
  • wlrobs - obs-studio plugin that allows you to screen capture on wlroots based wayland compositors
  • obs-gnome-screencast - Small source plugin to use GNOME Screen Cast functionality as a source for OBS Studio
  • green-recorder - simple desktop recorder for Linux systems
  • txproto - A fully scriptable and flexible multimedia streaming/handling program.
  • wdomirror - Create a mirror of an output with as little overhead as possible, aspect ratio is not preserved
  • wl-mirror - a simple Wayland output mirror client with more useful features.
  • ssr-wlroots - A version of SimpleScreenRecorder with support for wlroots-based compositors (more specifically, those that support wlr-screencopy-v1 and xdg-output). Doesn't support recording area selection and has issues with multiple screens.
  • kooha - Capture your screen in a straightforward and painless way without distractions.

Misc. Scripts

  • i3-fit-floats - fits floating windows into workspace (was 'sway-fit-floats' but now also runs on i3wm)
  • i3-focus - focus an app by name (sway app_id or X11 class) (was 'sway-focus' but now also runs on i3wm)
  • sway-prep-xwayland - prepare for Xwayland
  • i3-prop - show apps properties (similar to xprop) (was 'sway-prop' but now also runs on i3wm)
  • i3-run-or-raise - focus an existing app or run it otherwise (was 'sway-run-or-raise' but now also runs on i3wm)
  • sway-select-window - use bemenu/rofi/wofi to go to a running app
  • sway-start - startup sway from the console
  • i3-track-firefox - watch firefox (and other apps) and bind Shift-Insert to paste PRIMARY selection (was 'i3-track-firefox' but now also runs on i3wm)
  • i3-track-prev-focus - mark container with _prev for rapid switching between apps; also make unfocused windows translucent (was 'sway-track-prev-focus' but now also runs on i3wm)
  • nmcli-rofi - Wofi script to select wifi and VPNs with nmcli
  • sway-new-workspace - create bindings for opening a new workspace, or moving windows to a new workspace
  • swaycons - display window icons with font icons
  • sway-font-awesome - Font Awesome icons in sway's title bars.
  • i3-toolwait - serialise apps - similar to the ancient SunOS command toolwait (was 'sway-toolwait' but now also runs on i3wm)
  • vim-sway-nav - Seamless navigation between Sway windows and (Neo)Vim splits with the same key bindings

Development

  • gtk-layer-shell - A library to write GTK applications that use Layer Shell.
  • client toolkit - A toolkit for writing Wayland clients in Rust
  • swc - A library for making a simple Wayland compositor
  • wlroots - Pluggable, composable, unopinionated modules for building a Wayland compositor

Sources

Contributing

If you have improvements, please post to r/swaywm

Criteria for inclusion (tentative):

  • it's on one of the source lists
  • it's mentioned on /r/swaywm
  • it's open source ie unencumbered by a restricted licence
  • it runs on Linux or BSD
  • it adds something to the Sway experience