Skip to content

JezerM/web-greeter

Repository files navigation

Web Greeter Icon

Web Greeter

A LightDM greeter made with PyQt6

License Information

A modern, visually appealing greeter for LightDM, that allows to create web based themes with HTML, CSS and JavaScript.

Also, check out nody-greeter, a greeter made in Node.js with Electron!

Gruvbox and Dracula themes!

Features

  • Create themes with HTML, CSS and JavaScript!
  • Should work everywhere.
  • JavaScript error handling, allowing to load the default theme.
  • Themes could be simple, or very complex.
  • Battery and brightness control.
  • Tab completion for zsh and bash.

Available distro packages

Arch

yay -S web-greeter

Ubuntu/Debian

Download from the latest release and install with apt.

apt install ./web-greeter-VER-DISTRO.deb

Dependencies

Build dependencies

  • Python 3.13 or above
  • uv (astral.sh)
  • Meson
  • Ninja
  • tsc (npm i -g typescript)
  • base-devel (build-essential)

Ubuntu/Debian

sudo apt install \
    \
    python3 \
    python3-pip \
    meson \
    ninja-build \
    node-typescript \
    build-essential \
    \
    liblightdm-gobject-dev \
    gobject-introspection \
    libxcb1-dev \
    libx11-dev \
    libcairo2-dev \
    libgirepository-2.0-dev

Install uv (astral.sh) according to its manual.

Arch Linux

sudo pacman -Sy \
    \
    meson \
    ninja \
    typescript \
    base-devel \
    \
    lightdm \
    python3 \
    gobject-introspection \
    libxcb \
    libx11 \
    cairo

You can also install web-greeter from the AUR.

Download & Install

git clone --recursive https://github.com/JezerM/web-greeter.git
cd web-greeter
meson build -Dprefix=/usr -Dsysconfdir=/etc
ninja -C build
sudo ninja -C build install

This will build web-greeter with Pyside6 and Nuitka, and then package all the files to be installed.

See latest release.

Uninstall

Use sudo ninja -C build uninstall to uninstall all files.

Theme JavaScript API

Documentation is available at web-greeter-page/docs.

You can access the man-pages man web-greeter for some documentation and explanation. Also, you can explore the provided themes for real use cases.

Additionally, you can install the TypeScript types definitions inside your theme with npm:

npm install nody-greeter-types

Additional features

Brightness control

acpi is the only tool needed to control the brightness, besides a compatible device. This functionality is based on acpilight replacement for xbacklight.

udev rules are needed to be applied before using it, check acpilight rules. Then, lightdm will need to be allowed to change backlight values, to do so add lightdm user to the video group: sudo usermod -a -G video lightdm

Enable it inside /etc/lightdm/web-greeter.toml

Battery status

acpi and acpi_listen are the only tools you need (and a battery). This functionality is based on "bat" widget from "lain" awesome-wm library.

You can enable it inside /etc/lightdm/web-greeter.toml

Debugging

You can run the greeter from within your desktop session if you add the following line to the desktop file for your session located in /usr/share/xsessions/: X-LightDM-Allow-Greeter=true.

You have to log out and log back in after adding that line. Then you can run the greeter from command line.

Themes can be opened with a debug console if you set debug_mode as true inside /etc/lightdm/web-greeter.toml. Or, you could run the web-greeter with the parameter --debug. I recommend to use the last one, as it is easier and handy.

web-greeter --debug

Check web-greeter --help for more commands.

Note: Do not use lightdm --test-mode as it is not supported in some desktop sessions.

Troubleshooting

Before setting web-greeter as your LightDM Greeter, you should make sure it does work also with LightDM:

  • Run web-greeter as root with --no-sandbox flag ("Unable to determine socket to daemon" and "XLib" related errors are expected)
  • Run lightdm --test-mode. Although it's not supported, if it does work then it could help to debug lightdm.

LightDM crashes and tries to recover over and over again

LightDM does this when the greeter crashes, so it could mean web-greeter was not installed correctly, or some dependencies were updated/removed after a distro update.

Known issues

Fedora

I was not able to reproduce the installation process in Fedora Workstation 43, due to some issues related to Nuitka, which resulted in segmentation faults when running web-greeter. As for now, I will not support web-greeter in Fedora; if anyone is able to successfully build and execute it, let me know!

About

A modern, visually appealing greeter for LightDM.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

 
 
 

Contributors