Skip to content

Repository files navigation

Lumen

Lumen

A Wayland desktop shell with the bar, notifications, OSD, wallpaper, and device controls built in. Written in Rust with GTK4 and Relm4.

Lumen is arranged as a single Rust workspace. The service crates live locally under crates/, so app and service changes can be developed from one checkout.

Configure it in config.toml, through the lumen-settings GUI, or with the lumen config CLI.

Lumen desktop shell

Lumen settings GUI

Documentation

Full guides, reference, and walkthroughs are at lumen.cybex.net.

Install

Lumen isn't packaged for any distro yet, so install it from source. Native packages (AUR and others) are planned.

First install the system dependencies for your distro:

Arch

Install Rust via rustup, then the system libraries:

sudo pacman -S --needed git gtk4 gtk4-layer-shell gtksourceview5 \
libpulse fftw libpipewire systemd-libs clang base-devel

Runtime daemons for the battery, bluetooth, network, power, and audio modules (skip any you don't need):

sudo pacman -S --needed bluez bluez-utils networkmanager upower \
power-profiles-daemon pipewire wireplumber pipewire-pulse
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon
Debian / Ubuntu

Ubuntu 24.04 LTS does not package libgtk4-layer-shell-dev. Use Ubuntu 25.04+ or Debian 13 (trixie).

Install Rust via rustup, then the system libraries:

sudo apt install git pkg-config cmake libgtk-4-dev libgtk4-layer-shell-dev \
libgtksourceview-5-dev libpulse-dev libfftw3-dev libpipewire-0.3-dev \
libudev-dev clang build-essential

Runtime daemons:

sudo apt install dbus-user-session bluez network-manager \
upower power-profiles-daemon pipewire-pulse wireplumber
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon
Fedora

Requires Fedora 42 or later.

Install Rust via rustup, then the system libraries:

sudo dnf install git cmake pkgconf-pkg-config gtk4-devel gtk4-layer-shell-devel \
gtksourceview5-devel pulseaudio-libs-devel fftw-devel pipewire-devel \
systemd-devel clang gcc

Fedora Workstation already ships the runtime daemons. Minimal and Server installs need:

sudo dnf install pipewire-pulseaudio wireplumber NetworkManager bluez upower \
power-profiles-daemon
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon

Build and launch:

git clone https://github.com/DigitalPals/Lumen.git Lumen
cd Lumen
cargo install --path lumen
cargo install --path crates/lumen-settings
lumen icons setup
lumen panel start

On a different distro? See lumen.cybex.net/guide/getting-started for the library-version reference.

Configuration

The config file is at ~/.config/lumen/config.toml. Changes reload on save:

[bar]
location = "top"scale = 1.25
[[bar.layout]]
monitor = "*"left = ["dashboard"]
center = ["clock"]
right = ["volume", "network", "bluetooth", "battery"]
[modules.clock]
format = "%H:%M"

Every field is documented at lumen.cybex.net/config.

Requirements

A Wayland compositor that implements the wlr-layer-shell protocol. Compositor-specific modules currently target Hyprland, Niri and Mango; Sway support is planned.

License

MIT

About

A Wayland desktop shell with the bar, notifications, OSD, wallpaper, and device controls built in.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - DigitalPals/Lumen: A Wayland desktop shell with the bar, notifications, OSD, wallpaper, and device controls built in. · GitHub
Skip to content

Repository files navigation

Lumen

Lumen

A Wayland desktop shell with the bar, notifications, OSD, wallpaper, and device controls built in. Written in Rust with GTK4 and Relm4.

Lumen is arranged as a single Rust workspace. The service crates live locally under crates/, so app and service changes can be developed from one checkout.

Configure it in config.toml, through the lumen-settings GUI, or with the lumen config CLI.

Lumen desktop shell

Lumen settings GUI

Documentation

Full guides, reference, and walkthroughs are at lumen.cybex.net.

Install

Lumen isn't packaged for any distro yet, so install it from source. Native packages (AUR and others) are planned.

First install the system dependencies for your distro:

Arch

Install Rust via rustup, then the system libraries:

sudo pacman -S --needed git gtk4 gtk4-layer-shell gtksourceview5 \
libpulse fftw libpipewire systemd-libs clang base-devel

Runtime daemons for the battery, bluetooth, network, power, and audio modules (skip any you don't need):

sudo pacman -S --needed bluez bluez-utils networkmanager upower \
power-profiles-daemon pipewire wireplumber pipewire-pulse
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon
Debian / Ubuntu

Ubuntu 24.04 LTS does not package libgtk4-layer-shell-dev. Use Ubuntu 25.04+ or Debian 13 (trixie).

Install Rust via rustup, then the system libraries:

sudo apt install git pkg-config cmake libgtk-4-dev libgtk4-layer-shell-dev \
libgtksourceview-5-dev libpulse-dev libfftw3-dev libpipewire-0.3-dev \
libudev-dev clang build-essential

Runtime daemons:

sudo apt install dbus-user-session bluez network-manager \
upower power-profiles-daemon pipewire-pulse wireplumber
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon
Fedora

Requires Fedora 42 or later.

Install Rust via rustup, then the system libraries:

sudo dnf install git cmake pkgconf-pkg-config gtk4-devel gtk4-layer-shell-devel \
gtksourceview5-devel pulseaudio-libs-devel fftw-devel pipewire-devel \
systemd-devel clang gcc

Fedora Workstation already ships the runtime daemons. Minimal and Server installs need:

sudo dnf install pipewire-pulseaudio wireplumber NetworkManager bluez upower \
power-profiles-daemon
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon

Build and launch:

git clone https://github.com/DigitalPals/Lumen.git Lumen
cd Lumen
cargo install --path lumen
cargo install --path crates/lumen-settings
lumen icons setup
lumen panel start

On a different distro? See lumen.cybex.net/guide/getting-started for the library-version reference.

Configuration

The config file is at ~/.config/lumen/config.toml. Changes reload on save:

[bar]
location = "top"scale = 1.25
[[bar.layout]]
monitor = "*"left = ["dashboard"]
center = ["clock"]
right = ["volume", "network", "bluetooth", "battery"]
[modules.clock]
format = "%H:%M"

Every field is documented at lumen.cybex.net/config.

Requirements

A Wayland compositor that implements the wlr-layer-shell protocol. Compositor-specific modules currently target Hyprland, Niri and Mango; Sway support is planned.

License

MIT

About

A Wayland desktop shell with the bar, notifications, OSD, wallpaper, and device controls built in.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - DigitalPals/Lumen: A Wayland desktop shell with the bar, notifications, OSD, wallpaper, and device controls built in. · GitHub
Skip to content

Repository files navigation

Lumen

Lumen

A Wayland desktop shell with the bar, notifications, OSD, wallpaper, and device controls built in. Written in Rust with GTK4 and Relm4.

Lumen is arranged as a single Rust workspace. The service crates live locally under crates/, so app and service changes can be developed from one checkout.

Configure it in config.toml, through the lumen-settings GUI, or with the lumen config CLI.

Lumen desktop shell

Lumen settings GUI

Documentation

Full guides, reference, and walkthroughs are at lumen.cybex.net.

Install

Lumen isn't packaged for any distro yet, so install it from source. Native packages (AUR and others) are planned.

First install the system dependencies for your distro:

Arch

Install Rust via rustup, then the system libraries:

sudo pacman -S --needed git gtk4 gtk4-layer-shell gtksourceview5 \
libpulse fftw libpipewire systemd-libs clang base-devel

Runtime daemons for the battery, bluetooth, network, power, and audio modules (skip any you don't need):

sudo pacman -S --needed bluez bluez-utils networkmanager upower \
power-profiles-daemon pipewire wireplumber pipewire-pulse
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon
Debian / Ubuntu

Ubuntu 24.04 LTS does not package libgtk4-layer-shell-dev. Use Ubuntu 25.04+ or Debian 13 (trixie).

Install Rust via rustup, then the system libraries:

sudo apt install git pkg-config cmake libgtk-4-dev libgtk4-layer-shell-dev \
libgtksourceview-5-dev libpulse-dev libfftw3-dev libpipewire-0.3-dev \
libudev-dev clang build-essential

Runtime daemons:

sudo apt install dbus-user-session bluez network-manager \
upower power-profiles-daemon pipewire-pulse wireplumber
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon
Fedora

Requires Fedora 42 or later.

Install Rust via rustup, then the system libraries:

sudo dnf install git cmake pkgconf-pkg-config gtk4-devel gtk4-layer-shell-devel \
gtksourceview5-devel pulseaudio-libs-devel fftw-devel pipewire-devel \
systemd-devel clang gcc

Fedora Workstation already ships the runtime daemons. Minimal and Server installs need:

sudo dnf install pipewire-pulseaudio wireplumber NetworkManager bluez upower \
power-profiles-daemon
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon

Build and launch:

git clone https://github.com/DigitalPals/Lumen.git Lumen
cd Lumen
cargo install --path lumen
cargo install --path crates/lumen-settings
lumen icons setup
lumen panel start

On a different distro? See lumen.cybex.net/guide/getting-started for the library-version reference.

Configuration

The config file is at ~/.config/lumen/config.toml. Changes reload on save:

[bar]
location = "top"scale = 1.25
[[bar.layout]]
monitor = "*"left = ["dashboard"]
center = ["clock"]
right = ["volume", "network", "bluetooth", "battery"]
[modules.clock]
format = "%H:%M"

Every field is documented at lumen.cybex.net/config.

Requirements

A Wayland compositor that implements the wlr-layer-shell protocol. Compositor-specific modules currently target Hyprland, Niri and Mango; Sway support is planned.

License

MIT

About

A Wayland desktop shell with the bar, notifications, OSD, wallpaper, and device controls built in.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - DigitalPals/Lumen: A Wayland desktop shell with the bar, notifications, OSD, wallpaper, and device controls built in. · GitHub
Skip to content

Repository files navigation

Lumen

Lumen

A Wayland desktop shell with the bar, notifications, OSD, wallpaper, and device controls built in. Written in Rust with GTK4 and Relm4.

Lumen is arranged as a single Rust workspace. The service crates live locally under crates/, so app and service changes can be developed from one checkout.

Configure it in config.toml, through the lumen-settings GUI, or with the lumen config CLI.

Lumen desktop shell

Lumen settings GUI

Documentation

Full guides, reference, and walkthroughs are at lumen.cybex.net.

Install

Lumen isn't packaged for any distro yet, so install it from source. Native packages (AUR and others) are planned.

First install the system dependencies for your distro:

Arch

Install Rust via rustup, then the system libraries:

sudo pacman -S --needed git gtk4 gtk4-layer-shell gtksourceview5 \
libpulse fftw libpipewire systemd-libs clang base-devel

Runtime daemons for the battery, bluetooth, network, power, and audio modules (skip any you don't need):

sudo pacman -S --needed bluez bluez-utils networkmanager upower \
power-profiles-daemon pipewire wireplumber pipewire-pulse
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon
Debian / Ubuntu

Ubuntu 24.04 LTS does not package libgtk4-layer-shell-dev. Use Ubuntu 25.04+ or Debian 13 (trixie).

Install Rust via rustup, then the system libraries:

sudo apt install git pkg-config cmake libgtk-4-dev libgtk4-layer-shell-dev \
libgtksourceview-5-dev libpulse-dev libfftw3-dev libpipewire-0.3-dev \
libudev-dev clang build-essential

Runtime daemons:

sudo apt install dbus-user-session bluez network-manager \
upower power-profiles-daemon pipewire-pulse wireplumber
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon
Fedora

Requires Fedora 42 or later.

Install Rust via rustup, then the system libraries:

sudo dnf install git cmake pkgconf-pkg-config gtk4-devel gtk4-layer-shell-devel \
gtksourceview5-devel pulseaudio-libs-devel fftw-devel pipewire-devel \
systemd-devel clang gcc

Fedora Workstation already ships the runtime daemons. Minimal and Server installs need:

sudo dnf install pipewire-pulseaudio wireplumber NetworkManager bluez upower \
power-profiles-daemon
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon

Build and launch:

git clone https://github.com/DigitalPals/Lumen.git Lumen
cd Lumen
cargo install --path lumen
cargo install --path crates/lumen-settings
lumen icons setup
lumen panel start

On a different distro? See lumen.cybex.net/guide/getting-started for the library-version reference.

Configuration

The config file is at ~/.config/lumen/config.toml. Changes reload on save:

[bar]
location = "top"scale = 1.25
[[bar.layout]]
monitor = "*"left = ["dashboard"]
center = ["clock"]
right = ["volume", "network", "bluetooth", "battery"]
[modules.clock]
format = "%H:%M"

Every field is documented at lumen.cybex.net/config.

Requirements

A Wayland compositor that implements the wlr-layer-shell protocol. Compositor-specific modules currently target Hyprland, Niri and Mango; Sway support is planned.

License

MIT

About

A Wayland desktop shell with the bar, notifications, OSD, wallpaper, and device controls built in.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - DigitalPals/Lumen: A Wayland desktop shell with the bar, notifications, OSD, wallpaper, and device controls built in. · GitHub
Skip to content

Repository files navigation

Lumen

Lumen

A Wayland desktop shell with the bar, notifications, OSD, wallpaper, and device controls built in. Written in Rust with GTK4 and Relm4.

Lumen is arranged as a single Rust workspace. The service crates live locally under crates/, so app and service changes can be developed from one checkout.

Configure it in config.toml, through the lumen-settings GUI, or with the lumen config CLI.

Lumen desktop shell

Lumen settings GUI

Documentation

Full guides, reference, and walkthroughs are at lumen.cybex.net.

Install

Lumen isn't packaged for any distro yet, so install it from source. Native packages (AUR and others) are planned.

First install the system dependencies for your distro:

Arch

Install Rust via rustup, then the system libraries:

sudo pacman -S --needed git gtk4 gtk4-layer-shell gtksourceview5 \
libpulse fftw libpipewire systemd-libs clang base-devel

Runtime daemons for the battery, bluetooth, network, power, and audio modules (skip any you don't need):

sudo pacman -S --needed bluez bluez-utils networkmanager upower \
power-profiles-daemon pipewire wireplumber pipewire-pulse
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon
Debian / Ubuntu

Ubuntu 24.04 LTS does not package libgtk4-layer-shell-dev. Use Ubuntu 25.04+ or Debian 13 (trixie).

Install Rust via rustup, then the system libraries:

sudo apt install git pkg-config cmake libgtk-4-dev libgtk4-layer-shell-dev \
libgtksourceview-5-dev libpulse-dev libfftw3-dev libpipewire-0.3-dev \
libudev-dev clang build-essential

Runtime daemons:

sudo apt install dbus-user-session bluez network-manager \
upower power-profiles-daemon pipewire-pulse wireplumber
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon
Fedora

Requires Fedora 42 or later.

Install Rust via rustup, then the system libraries:

sudo dnf install git cmake pkgconf-pkg-config gtk4-devel gtk4-layer-shell-devel \
gtksourceview5-devel pulseaudio-libs-devel fftw-devel pipewire-devel \
systemd-devel clang gcc

Fedora Workstation already ships the runtime daemons. Minimal and Server installs need:

sudo dnf install pipewire-pulseaudio wireplumber NetworkManager bluez upower \
power-profiles-daemon
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon

Build and launch:

git clone https://github.com/DigitalPals/Lumen.git Lumen
cd Lumen
cargo install --path lumen
cargo install --path crates/lumen-settings
lumen icons setup
lumen panel start

On a different distro? See lumen.cybex.net/guide/getting-started for the library-version reference.

Configuration

The config file is at ~/.config/lumen/config.toml. Changes reload on save:

[bar]
location = "top"scale = 1.25
[[bar.layout]]
monitor = "*"left = ["dashboard"]
center = ["clock"]
right = ["volume", "network", "bluetooth", "battery"]
[modules.clock]
format = "%H:%M"

Every field is documented at lumen.cybex.net/config.

Requirements

A Wayland compositor that implements the wlr-layer-shell protocol. Compositor-specific modules currently target Hyprland, Niri and Mango; Sway support is planned.

License

MIT

About

A Wayland desktop shell with the bar, notifications, OSD, wallpaper, and device controls built in.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - DigitalPals/Lumen: A Wayland desktop shell with the bar, notifications, OSD, wallpaper, and device controls built in. · GitHub
Skip to content

Repository files navigation

Lumen

Lumen

A Wayland desktop shell with the bar, notifications, OSD, wallpaper, and device controls built in. Written in Rust with GTK4 and Relm4.

Lumen is arranged as a single Rust workspace. The service crates live locally under crates/, so app and service changes can be developed from one checkout.

Configure it in config.toml, through the lumen-settings GUI, or with the lumen config CLI.

Lumen desktop shell

Lumen settings GUI

Documentation

Full guides, reference, and walkthroughs are at lumen.cybex.net.

Install

Lumen isn't packaged for any distro yet, so install it from source. Native packages (AUR and others) are planned.

First install the system dependencies for your distro:

Arch

Install Rust via rustup, then the system libraries:

sudo pacman -S --needed git gtk4 gtk4-layer-shell gtksourceview5 \
libpulse fftw libpipewire systemd-libs clang base-devel

Runtime daemons for the battery, bluetooth, network, power, and audio modules (skip any you don't need):

sudo pacman -S --needed bluez bluez-utils networkmanager upower \
power-profiles-daemon pipewire wireplumber pipewire-pulse
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon
Debian / Ubuntu

Ubuntu 24.04 LTS does not package libgtk4-layer-shell-dev. Use Ubuntu 25.04+ or Debian 13 (trixie).

Install Rust via rustup, then the system libraries:

sudo apt install git pkg-config cmake libgtk-4-dev libgtk4-layer-shell-dev \
libgtksourceview-5-dev libpulse-dev libfftw3-dev libpipewire-0.3-dev \
libudev-dev clang build-essential

Runtime daemons:

sudo apt install dbus-user-session bluez network-manager \
upower power-profiles-daemon pipewire-pulse wireplumber
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon
Fedora

Requires Fedora 42 or later.

Install Rust via rustup, then the system libraries:

sudo dnf install git cmake pkgconf-pkg-config gtk4-devel gtk4-layer-shell-devel \
gtksourceview5-devel pulseaudio-libs-devel fftw-devel pipewire-devel \
systemd-devel clang gcc

Fedora Workstation already ships the runtime daemons. Minimal and Server installs need:

sudo dnf install pipewire-pulseaudio wireplumber NetworkManager bluez upower \
power-profiles-daemon
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon

Build and launch:

git clone https://github.com/DigitalPals/Lumen.git Lumen
cd Lumen
cargo install --path lumen
cargo install --path crates/lumen-settings
lumen icons setup
lumen panel start

On a different distro? See lumen.cybex.net/guide/getting-started for the library-version reference.

Configuration

The config file is at ~/.config/lumen/config.toml. Changes reload on save:

[bar]
location = "top"scale = 1.25
[[bar.layout]]
monitor = "*"left = ["dashboard"]
center = ["clock"]
right = ["volume", "network", "bluetooth", "battery"]
[modules.clock]
format = "%H:%M"

Every field is documented at lumen.cybex.net/config.

Requirements

A Wayland compositor that implements the wlr-layer-shell protocol. Compositor-specific modules currently target Hyprland, Niri and Mango; Sway support is planned.

License

MIT

About

A Wayland desktop shell with the bar, notifications, OSD, wallpaper, and device controls built in.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - DigitalPals/Lumen: A Wayland desktop shell with the bar, notifications, OSD, wallpaper, and device controls built in. · GitHub
Skip to content

Repository files navigation

Lumen

Lumen

A Wayland desktop shell with the bar, notifications, OSD, wallpaper, and device controls built in. Written in Rust with GTK4 and Relm4.

Lumen is arranged as a single Rust workspace. The service crates live locally under crates/, so app and service changes can be developed from one checkout.

Configure it in config.toml, through the lumen-settings GUI, or with the lumen config CLI.

Lumen desktop shell

Lumen settings GUI

Documentation

Full guides, reference, and walkthroughs are at lumen.cybex.net.

Install

Lumen isn't packaged for any distro yet, so install it from source. Native packages (AUR and others) are planned.

First install the system dependencies for your distro:

Arch

Install Rust via rustup, then the system libraries:

sudo pacman -S --needed git gtk4 gtk4-layer-shell gtksourceview5 \
libpulse fftw libpipewire systemd-libs clang base-devel

Runtime daemons for the battery, bluetooth, network, power, and audio modules (skip any you don't need):

sudo pacman -S --needed bluez bluez-utils networkmanager upower \
power-profiles-daemon pipewire wireplumber pipewire-pulse
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon
Debian / Ubuntu

Ubuntu 24.04 LTS does not package libgtk4-layer-shell-dev. Use Ubuntu 25.04+ or Debian 13 (trixie).

Install Rust via rustup, then the system libraries:

sudo apt install git pkg-config cmake libgtk-4-dev libgtk4-layer-shell-dev \
libgtksourceview-5-dev libpulse-dev libfftw3-dev libpipewire-0.3-dev \
libudev-dev clang build-essential

Runtime daemons:

sudo apt install dbus-user-session bluez network-manager \
upower power-profiles-daemon pipewire-pulse wireplumber
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon
Fedora

Requires Fedora 42 or later.

Install Rust via rustup, then the system libraries:

sudo dnf install git cmake pkgconf-pkg-config gtk4-devel gtk4-layer-shell-devel \
gtksourceview5-devel pulseaudio-libs-devel fftw-devel pipewire-devel \
systemd-devel clang gcc

Fedora Workstation already ships the runtime daemons. Minimal and Server installs need:

sudo dnf install pipewire-pulseaudio wireplumber NetworkManager bluez upower \
power-profiles-daemon
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon

Build and launch:

git clone https://github.com/DigitalPals/Lumen.git Lumen
cd Lumen
cargo install --path lumen
cargo install --path crates/lumen-settings
lumen icons setup
lumen panel start

On a different distro? See lumen.cybex.net/guide/getting-started for the library-version reference.

Configuration

The config file is at ~/.config/lumen/config.toml. Changes reload on save:

[bar]
location = "top"scale = 1.25
[[bar.layout]]
monitor = "*"left = ["dashboard"]
center = ["clock"]
right = ["volume", "network", "bluetooth", "battery"]
[modules.clock]
format = "%H:%M"

Every field is documented at lumen.cybex.net/config.

Requirements

A Wayland compositor that implements the wlr-layer-shell protocol. Compositor-specific modules currently target Hyprland, Niri and Mango; Sway support is planned.

License

MIT

About

A Wayland desktop shell with the bar, notifications, OSD, wallpaper, and device controls built in.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - DigitalPals/Lumen: A Wayland desktop shell with the bar, notifications, OSD, wallpaper, and device controls built in. · GitHub
Skip to content

Repository files navigation

Lumen

Lumen

A Wayland desktop shell with the bar, notifications, OSD, wallpaper, and device controls built in. Written in Rust with GTK4 and Relm4.

Lumen is arranged as a single Rust workspace. The service crates live locally under crates/, so app and service changes can be developed from one checkout.

Configure it in config.toml, through the lumen-settings GUI, or with the lumen config CLI.

Lumen desktop shell

Lumen settings GUI

Documentation

Full guides, reference, and walkthroughs are at lumen.cybex.net.

Install

Lumen isn't packaged for any distro yet, so install it from source. Native packages (AUR and others) are planned.

First install the system dependencies for your distro:

Arch

Install Rust via rustup, then the system libraries:

sudo pacman -S --needed git gtk4 gtk4-layer-shell gtksourceview5 \
libpulse fftw libpipewire systemd-libs clang base-devel

Runtime daemons for the battery, bluetooth, network, power, and audio modules (skip any you don't need):

sudo pacman -S --needed bluez bluez-utils networkmanager upower \
power-profiles-daemon pipewire wireplumber pipewire-pulse
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon
Debian / Ubuntu

Ubuntu 24.04 LTS does not package libgtk4-layer-shell-dev. Use Ubuntu 25.04+ or Debian 13 (trixie).

Install Rust via rustup, then the system libraries:

sudo apt install git pkg-config cmake libgtk-4-dev libgtk4-layer-shell-dev \
libgtksourceview-5-dev libpulse-dev libfftw3-dev libpipewire-0.3-dev \
libudev-dev clang build-essential

Runtime daemons:

sudo apt install dbus-user-session bluez network-manager \
upower power-profiles-daemon pipewire-pulse wireplumber
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon
Fedora

Requires Fedora 42 or later.

Install Rust via rustup, then the system libraries:

sudo dnf install git cmake pkgconf-pkg-config gtk4-devel gtk4-layer-shell-devel \
gtksourceview5-devel pulseaudio-libs-devel fftw-devel pipewire-devel \
systemd-devel clang gcc

Fedora Workstation already ships the runtime daemons. Minimal and Server installs need:

sudo dnf install pipewire-pulseaudio wireplumber NetworkManager bluez upower \
power-profiles-daemon
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemon

Build and launch:

git clone https://github.com/DigitalPals/Lumen.git Lumen
cd Lumen
cargo install --path lumen
cargo install --path crates/lumen-settings
lumen icons setup
lumen panel start

On a different distro? See lumen.cybex.net/guide/getting-started for the library-version reference.

Configuration

The config file is at ~/.config/lumen/config.toml. Changes reload on save:

[bar]
location = "top"scale = 1.25
[[bar.layout]]
monitor = "*"left = ["dashboard"]
center = ["clock"]
right = ["volume", "network", "bluetooth", "battery"]
[modules.clock]
format = "%H:%M"

Every field is documented at lumen.cybex.net/config.

Requirements

A Wayland compositor that implements the wlr-layer-shell protocol. Compositor-specific modules currently target Hyprland, Niri and Mango; Sway support is planned.

License

MIT

About

A Wayland desktop shell with the bar, notifications, OSD, wallpaper, and device controls built in.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages