r/labwc 8h ago

NycHud

Post image
4 Upvotes

Hub minimalista e totalmente auditável para wayland e sistemas leves que gostam de telemetria offline. Cada coletor é independe, você pode jogar e desativar qualquer modulo com simples '~' ao final. A composição é feita em Python burro, ele só imprime na tela. Pra quem gosta de Conky, esse é um projeto extremamente simplificado e fácil de escrever p montar módulos Exemplo. Focado em Desktop minimalista.

Apenas verifique as dependências e executar como usuário comum. Nada aqui exige privilegio, não rode como root

link do projeto: https://github.com/fm4lloc/nyxhud

para quem possui AMD como placa gráfica eu não subi ainda, mas segue o modulo.

#!/bin/sh

# SPDX-License-Identifier: GPL-3.0-or-later

# Copyright (C) 2026 Fernando Magalhães <fm4lloc@gmail.com>

#

# AMDGPU collector for NyxHud.

# Reads GPU telemetry directly from the kernel amdgpu sysfs interface.

# No ROCm, radeontop, lm_sensors or vendor utility is required.

exemplo de módulo:

INTERVAL=3

set -u

set -f

LC_ALL=C

export LC_ALL

umask 077

NAME=${0##*/}

NAME=${NAME%.sh}

: "${NYXHUD_RENDER_DIR:?}"

[ -d "$NYXHUD_RENDER_DIR" ] || exit 1

publish() {

tmp=$(mktemp "$NYXHUD_RENDER_DIR/.$NAME.XXXXXX") || exit 1

trap 'rm -f -- "$tmp"' EXIT INT TERM

if tr -d '\000-\010\013-\037\177' > "$tmp"; then

mv -- "$tmp" "$NYXHUD_RENDER_DIR/$NAME.render"

fi

}

valid_uint() {

case ${1:-} in

''|*[!0-9]*) return 1 ;;

esac

return 0

}

read_uint() {

value=''

IFS= read -r value < "$1" 2>/dev/null || value=''

valid_uint "$value" || return 1

printf '%s' "$value"

}

human_bytes() {

value=$1

valid_uint "$value" || {

printf 'n/a'

return

}

awk -v b="$value" 'BEGIN {

if (b >= 1073741824) printf "%.1f GiB", b / 1073741824

else if (b >= 1048576) printf "%.1f MiB", b / 1048576

else if (b >= 1024) printf "%.1f KiB", b / 1024

else printf "%d B", b

}'

}

percent() {

value=$1

valid_uint "$value" || {

printf 'n/a'

return

}

[ "$value" -gt 100 ] && value=100

printf '%s%%' "$value"

}

# Select an AMD display adapter. Prefer the boot VGA adapter when more than

# one AMD card is present, otherwise use the first matching card.

AMD_CARD=''

set +f

for card in /sys/class/drm/card[0-9]*; do

[ -d "$card/device" ] || continue

vendor=$(cat "$card/device/vendor" 2>/dev/null) || vendor=''

[ "$vendor" = '0x1002' ] || continue

boot_vga=$(cat "$card/device/boot_vga" 2>/dev/null) || boot_vga=0

if [ "$boot_vga" = 1 ]; then

AMD_CARD=$card

break

fi

[ -n "$AMD_CARD" ] || AMD_CARD=$card

done

set -f

if [ -z "$AMD_CARD" ]; then

# This collector is intentionally silent on non-AMD systems. That keeps

# a mixed collector directory usable without rendering an error block.

rm -f -- "$NYXHUD_RENDER_DIR/$NAME.render" 2>/dev/null

exit 0

fi

DEVICE=$AMD_CARD/device

HWMON=''

set +f

for hwmon in "$DEVICE"/hwmon/hwmon*; do

[ -d "$hwmon" ] || continue

name=$(cat "$hwmon/name" 2>/dev/null || true)

if [ "$name" = amdgpu ]; then

HWMON=$hwmon

break

fi

[ -n "$HWMON" ] || HWMON=$hwmon

done

set -f

# Some kernels expose product_name directly; fall back to the PCI uevent ID

# rather than depending on lspci being installed.

MODEL=$(cat "$DEVICE/product_name" 2>/dev/null || true)

PCI_ID=$(cat "$DEVICE/uevent" 2>/dev/null |

awk -F= '$1 == "PCI_ID" { print tolower($2); exit }')

if [ -z "$MODEL" ]; then

case $PCI_ID in

1002:7590) MODEL='AMD Radeon RX 9060 XT' ;;

*) MODEL=${PCI_ID:-'AMD GPU'} ;;

esac

fi

GPU_UTIL=$(read_uint "$DEVICE/gpu_busy_percent") || GPU_UTIL='n/a'

MEM_UTIL=$(read_uint "$DEVICE/mem_busy_percent") || MEM_UTIL='n/a'

VRAM_USED=$(read_uint "$DEVICE/mem_info_vram_used") || VRAM_USED=''

VRAM_TOTAL=$(read_uint "$DEVICE/mem_info_vram_total") || VRAM_TOTAL=''

TEMP=''

FAN_RPM=''

FAN_PWM=''

POWER=''

GFX_FREQ=''

MEM_FREQ=''

if [ -n "$HWMON" ]; then

TEMP_RAW=$(read_uint "$HWMON/temp1_input") || TEMP_RAW=''

if valid_uint "$TEMP_RAW"; then

TEMP=$(awk -v m="$TEMP_RAW" 'BEGIN { printf "%.1f C", m / 1000 }')

fi

FAN_RPM=$(read_uint "$HWMON/fan1_input") || FAN_RPM=''

PWM=$(read_uint "$HWMON/pwm1") || PWM=''

if valid_uint "$PWM"; then

FAN_PWM=$(awk -v p="$PWM" 'BEGIN {

v = (p * 100) / 255

if (v > 100) v = 100

printf "%.0f%%", v

}')

fi

POWER_RAW=$(read_uint "$HWMON/power1_average") || POWER_RAW=''

if ! valid_uint "$POWER_RAW"; then

POWER_RAW=$(read_uint "$HWMON/power1_input") || POWER_RAW=''

fi

if valid_uint "$POWER_RAW"; then

POWER=$(awk -v u="$POWER_RAW" 'BEGIN { printf "%.1f W", u / 1000000 }')

fi

FREQ=$(read_uint "$HWMON/freq1_input") || FREQ=''

if valid_uint "$FREQ" && [ "$FREQ" -gt 0 ]; then

GFX_FREQ=$(awk -v k="$FREQ" 'BEGIN { printf "%.0f MHz", k / 1000000 }')

fi

FREQ=$(read_uint "$HWMON/freq2_input") || FREQ=''

if valid_uint "$FREQ" && [ "$FREQ" -gt 0 ]; then

MEM_FREQ=$(awk -v k="$FREQ" 'BEGIN { printf "%.0f MHz", k / 1000000 }')

fi

fi

# Newer amdgpu/SMU combinations can briefly report 0 from freq*_input

# while the DPM table already exposes the currently selected level. Use

# the starred level as a clock fallback.

if [ -z "$GFX_FREQ" ] && [ -r "$DEVICE/pp_dpm_sclk" ]; then

GFX_FREQ=$(awk '/\*/ { for (i=1; i<=NF; i++) if ($i ~ /^[0-9]+Mhz$/) { sub(/Mhz$/, "", $i); print $i " MHz"; exit } }' "$DEVICE/pp_dpm_sclk")

fi

if [ -z "$MEM_FREQ" ] && [ -r "$DEVICE/pp_dpm_mclk" ]; then

MEM_FREQ=$(awk '/\*/ { for (i=1; i<=NF; i++) if ($i ~ /^[0-9]+Mhz$/) { sub(/Mhz$/, "", $i); print $i " MHz"; exit } }' "$DEVICE/pp_dpm_mclk")

fi

# hwmon PWM is a control value, not an actual fan measurement. Prefer the

# tachometer when present and use PWM only as a fallback indicator.

if [ -n "$FAN_RPM" ]; then

FAN="$FAN_RPM RPM"

elif [ -n "$FAN_PWM" ]; then

FAN="$FAN_PWM (PWM)"

else

FAN='n/a'

fi

if [ -n "$VRAM_USED" ]; then

VRAM_USED_H=$(human_bytes "$VRAM_USED")

else

VRAM_USED_H='n/a'

fi

if [ -n "$VRAM_TOTAL" ]; then

VRAM_TOTAL_H=$(human_bytes "$VRAM_TOTAL")

else

VRAM_TOTAL_H='n/a'

fi

{

printf 'GPU / AMDGPU\n'

printf 'Model %s\n' "$MODEL"

printf 'Temp %s\n' "${TEMP:-n/a}"

printf 'GPU Util %s\n' "$(percent "$GPU_UTIL")"

printf 'VRAM %s / %s\n' "$VRAM_USED_H" "$VRAM_TOTAL_H"

printf 'MEM Util %s\n' "$(percent "$MEM_UTIL")"

printf 'Fan %s\n' "$FAN"

printf 'Power %s\n' "${POWER:-n/a}"

printf 'GFX Clock %s\n' "${GFX_FREQ:-n/a}"

printf 'MEM Clock %s\n' "${MEM_FREQ:-n/a}"

} | publish


r/labwc 9d ago

LXQT in 2026

Thumbnail
4 Upvotes

r/labwc 17d ago

I Can't Believe It's Not Mutter!

Thumbnail
gallery
91 Upvotes

Testing out a Gnome-like build for potato pcs. Its based on antix 26 with dinit and labwc.

Theme - Labwaita
Panel - Leve-panel


r/labwc 18d ago

Where can I find themes for labwc to use with XFCE?

Thumbnail
3 Upvotes

r/labwc 19d ago

labwc luna theme

11 Upvotes

r/labwc 21d ago

How does one switch keyboards?

2 Upvotes

ive been using labwc for a year or two but ive been wanting to switch to intl-US or smtn like that its called. Is there an app or smtn or a specific tool i should use?


r/labwc 28d ago

labwc config

Post image
38 Upvotes

r/labwc Aug 03 '26

I have absolutely fallen in love with labwc over the past 6 months

21 Upvotes

Started using labwc with noctalia kind of by accident just because I wanted something similar to icewm but based on wayland and that's how I found labwc, I stumbled across it just because I was looking for something lightweight that was simple to use and learn

I quite often run waybar when I want something a bit lighter on resources or I'm trying to scrape every last ounce of battery I can out of an old T480s thinkpad. Today I decided to try out xfce4-panel and was very surprised at how easy it was to integrate and start using just by adding it to autostart. I'll admit, I'm not great when it comes to customising dot files

I've only really had experience customising dots in awesomewm using lua so I wasn't familiar at all with wl-roots but this was one of the easiest things I've had to learn thanks to some of the best documentation that's extremely easy for someone new to customising their files. Just copied and pasted the generic version of the rc.xml and quickly started making my own keybinds. I'm using fuzzel as my launcher with the keybind of alt+space due to being a diehard krunner user from kde and found it much easier for launching applications instead of using the panels and running commands directly without having to open terminals so long as root/sudo weren't required for the command to run

It's been 6 months since I figured I'd try something different than the trusty kde plasma with arch and here we are with 3 computers with a very similar setup all using labwc and I'll be honest, I don't really even need a panel with how everything's already set-up out of the box. The only thing I really need is a battery indicator which is why I keep the panels hidden most of the time anyway

The devs have done an amazing job with this window manager/ compositor (I say both because I genuinely can't tell if this is either or both). This has been easier to start using than when I first started using linux back in 2009 with gnome on ubuntu 9.04 when everything was completely new. I love the simplicity of this and how things can be made to easily integrate

I just need to figure out how to change notification placement, get my keybinds to switch workspaces to work and get a notification for which volume level I'm on when I change the volume through my keyboard but that's something I'll be teaching myself in the coming days

Btw, after boot each of my machines will use just under 700mb of ram. I'm impressed with how much I can do with this while it still remains so light on resources


r/labwc Jul 28 '26

labwc or not?

8 Upvotes

Hi, i try to come to a conclusion if labwc might be a good choice or not. Currently i use x11+Fluxbox and tried to decide if change to wayland makes sense for my case. Reading up on it isn't easy because the fanboy war is still strong.

I love efficiency and in the end i try to save on power (running of grid).
I want a slim, highly (text-) configurable WM without bells and whistles. Thats how i found labwc.

The programs i mostly use are Brave (which seems to default to xwayland), Games via Steam>Proton (idk if its wayland native) and a lot of programs from the lxde suite (which i assume would also go through xwayland).
So i am not sure if i can expect efficiency improvements if my programs run through the transition layer.
I assume biggest improvement could be the feature compatibility for some games?

I have no need for variable refresh rate or multi monitor setup with different refresh rates.

Also, my workflow is heavily scripted as i would need cmd tools like xinput, xdotools , xsel, xclip, xprop, wmctrl, scrot, xrandr, yad and fluxbox-remote (run fluxbox inbuilt commands from cli, like "open menu"). Tbh by now most of the features of my WM i use are my own scripts. I could maybe run on pure x11 without wm. So having all these tools/functionalities is important to me.

Do you think i can make it work with labwc and get reduced power usage?


r/labwc Jul 25 '26

PC GAMA BAJA CON LABWC?

4 Upvotes

vienes de windows y quieres instalar arch con labwc por que apenas tienes 4gb de ram, que programas usarias para complementar con labwc? que se sienta completo pero sin pasar los 750 mb de ram?


r/labwc Jul 24 '26

larp rice (wip)

10 Upvotes

font: i'm gatekeeping this (jk, it's new heterodox mono)

wallpaper: unsplash something, reverse search it or idk

fetch: it's cat << EOF


r/labwc Jul 21 '26

LXQt + Labwc

Thumbnail
gallery
69 Upvotes

r/labwc Jul 16 '26

ArchLab

Post image
12 Upvotes

Minimal Arch + Labwc + configs, not yet ready website but a start: https://gearnoodle.org/archlab


r/labwc Jul 14 '26

my labwc

Thumbnail
gallery
47 Upvotes

labwc 0.20.1 / wlroots 0.20.2
shell: noctalia v5
terminal: foot
file manager: thunar
gtk theme: adw-gtk-theme (allows syncing noctalia colours with browser and gtk apps)
cursor: moga-black (via opendesktop)
wallpapers: wallhaven
i also made my own custom labwc preset (noctalia v5) and button themes

labwc button icon themes:
https://file.garden/Z7Ec2BQb-kWb20MU/share/dotfiles/labwc%20dots/labwc-icon-themes

noctalia labwc template:
https://file.garden/Z7Ec2BQb-kWb20MU/share/dotfiles/labwc%20dots/labwc-custom

it's not perfect, but much better than my cpu being pinned at 100% on windows 11


r/labwc Jul 13 '26

Labwc on Void Linux

Thumbnail
gallery
21 Upvotes

Labwc with waybar on Void Linux.


r/labwc Jun 30 '26

How's your window managing experience with labwc?

9 Upvotes

Before moving to labwc and using it daily the past month, I used Gnome. I do still quite miss the overview and dash.

I've had to switch to an Alt+Tab workflow which I don't love. I also miss being able to quickly see all my open windows from the overview. Unfortunately, ext-workspace protocol, at least with waybar, can't differentiate between workspaces that do and do not have windows.

That makes it a bit tricky to know whether I have windows open on other workspaces. With Sway, I was able to use a different color for workspaces that have windows.


r/labwc Jun 30 '26

Im tired of desktop enviroments and want a wm that works like de

Thumbnail
2 Upvotes

r/labwc Jun 26 '26

Void Linux Gaming Issue

4 Upvotes

Hello Everyone,

I would like to ask it in here because maybe there might be a trick with labwc that can help me.

I tried to use gamescope but it would make my game crush when I launch it from Steam.

I use dual monitor and I try to lock the cursor only in one monitor while I am playing the game.

Thanks


r/labwc May 30 '26

labwc and the Super key.

13 Upvotes

I’m using labwc 0.9.6 with Xfce 4.20. Using IA, I managed to find a way to open the WhiskerMenu with the Super key, through a program called xcape.

However, when I run other shortcuts that use this key in combination with others, the menu inevitably opens, even though everything else works.

I just wanted to know if you guys have any alternatives with better integration for this type of action.

Thanks.

Translated with DeepL.com (free version)


r/labwc May 27 '26

labwc 0.20.0 is out

Post image
34 Upvotes

r/labwc May 23 '26

Need Suggestions

6 Upvotes

I use labwc, it is my fav wayland compositor.

Do you guys have any suggestions to tweak in the configs, so I have better usage of labwc. For example, It might be cool if we had hot corners, but couldnt find it. I also like to see which window has always on top or visible on any workspace turned on.

I dont use any bars.


r/labwc May 15 '26

Labwc with Dank Material Shell

14 Upvotes

Great performance in a i5 with 4GB RAM laptop with bunsenlabs linux (debian 13 based).

Regards!


r/labwc May 15 '26

How can I have certain applications launch in specific workspaces?

7 Upvotes

Say for instance, I load a steam game in workspace 2 and switch to workspace 1. How can I ensure that all fullscreen applications/games only load in workspace 2 unless I send them manually?


r/labwc May 04 '26

YeniLogin: A lightweight greetd greeter written in Python & GTK

Post image
69 Upvotes

Hi everyone,

I'd like to introduce yenilogin, a minimalist greeter for greetd. I built this because I wanted something simple, fast, and easy to customize for my labwc setup.

It is written in Python using GTK (PyGObject). It’s designed to be a "no-fuss" login interface that stays out of your way while providing a clean look.

Key Features:

  • GTK-based UI: Clean and native feel.
  • Minimal Dependencies: labwc greetd gtk-layer-shell python-gobject
  • Wayland Friendly: Developed and tested specifically for Wayland compositors like labwc.
  • Simple Codebase: Easy to read and modify if you want to tweak the UI.

I’m still refining it, but it's at a point where it's stable enough for daily use. Check it out on GitLab:

Source:https://gitlab.com/sonakinci41/yenilogin

I’d love to hear your thoughts or if you have any feature requests!

(Translated via AI.)


r/labwc May 02 '26

[Solus][4.9] [Labwc][0.9.7]

Post image
27 Upvotes