# Web Greeter for LightDM A modern, visually appealing greeter for LightDM, that allows to create web based themes with HTML, CSS and JavaScript. This is a try to update the [Antergos web-greeter](https://github.com/Antergos/web-greeter), following what they left. As this is based on the [master release](https://github.com/Antergos/web-greeter/tree/master), which does some API changes, actual themes would need to do changes to work correctly. Checkout [nody-greeter][nody-greeter], a greeter made in **Node.js** with **Electron**! (Actually, faster than Web Greeter) ## [See Live Demo][live_demo] 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 - AUR: https://aur.archlinux.org/packages/web-greeter/ ```sh yay -S web-greeter ``` ### Ubuntu Download from the [latest release](https://github.com/JezerM/web-greeter/releases/latest) and install with apt. ```sh apt install ./web-greeter-VER.deb ``` ## Dependencies | | arch | ubuntu | fedora | openSUSE | |--------------------------|---------------------|----------------------|---------------------|----------------------| |**liblightdm-gobject** |lightdm |liblightdm-gobject-dev|lightdm-gobject-devel|liblightdm-gobject-1-0| |**pygobject** |python-gobject |python3-gi |pygobject3 |python3-gobject | |**pyqt5** |python-pyqt5 |python3-pyqt5 |python3-qt5 |python3-qt5 | |**qt5-webengine** |qt5-webengine |libqt5webengine5 |qt5-qtwebengine |libqt5-qtwebengine | |**gobject-introspection** |gobject-introspection|gobject-introspection |gobject-introspection|gobject-introspection | ### Build dependencies - rsync - zip - make - pyrcc5 (Should be installed with above dependencies) - [cx_freeze](https://cx-freeze.readthedocs.io/en/latest/installation.html) (and patchelf) (Optional) ### PIP - PyGObject - PyQt5 - PyQtWebEngine - ruamel.yaml - python-xlib Install PIP dependencies with: ```sh pip install -r requirements.txt ``` > ***NOTE*** Be sure to install pip libraries as root too, or use a venv to install these dependencies ## Download & Install ```sh git clone https://github.com/JezerM/web-greeter.git cd web-greeter sudo pip install -r requirements.txt sudo make install ``` This will build and install **web-greeter** in a zippy way, which compresses the python code as a zip and uses it as a binary. Either `sudo make install_freeze` to build and install with cx_freeze. The zippy method depends on the actual python interpreter and its libraries, so you could have problems when updating python or removing any dependency, while the cx_freeze method tries to fix this "problem". See [latest release][releases]. ## Theme JavaScript API [Antergos][Antergos] documentation is no longer available, although it is accesible through [Web Archive][WebArchive]. Current and updated documentation is available at [gh-pages][gh-pages]. You can access the man-pages `man web-greeter` for some documentation and explanation. Also, you can explore the provided [themes](./themes) for real use cases. Aditionally, you can install the TypeScript types definitions inside your theme with npm: ```sh npm install nody-greeter-types ``` ## Enable features ### Brightness control To control the brightness inside the greeter, I recommend to use [acpilight][acpilight] replacement for `xbacklight`. udev rules are needed to be applied before using it. Then, lightdm will need to be allowed to change backlight values, to do so add lightdm user to **video** group: `sudo usermod -a -G video lightdm` If you don't want to or don't have a compatible device, disable it inside `/etc/lightdm/web-greeter.yml` (disabled by default) ### Battery status `acpi` is the only tool you need (and a battery). You can disable it inside `/etc/lightdm/web-greeter.yml` (disabled by default) ## 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.yml`. Or, you could run the `web-greeter` with the parameter `--debug`. I recommend to use the last one, as it is easier and handy. ```sh web-greeter --debug ``` > ***Note:*** Do not use `lightdm --test-mode` as it is not supported. ## Troubleshooting Before setting **web-greeter** as your LightDM Greeter, you should make sure it does work also with LightDM: - Run **web-greeter** as root - Run `lightdm --test-mode`. Although it's not supported, 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. ### Import errors If you see something like this: `ImportError: libQt5WebEngineCore.so.5: undefined symbol: _ZNSt12out_of_rangeC1EPKc, version Qt_5`, check out this [StackOverflow response](https://stackoverflow.com/a/68811630). With some PyQt5 import errors like `ModuleNotFoundError: No module named 'PyQt5.QtWebEngineWidgets'`, check out this [GitHub response](https://github.com/spyder-ide/spyder/issues/8952#issuecomment-499418456). web-greeter related import errors: - `AttributeError: module 'globals' has no attribute 'greeter'` means some exception happened inside the Browser constructor, maybe related to LightDM or PyQt5. - `ModuleNotFoundError: No module named 'resources'` could mean `path/to/web-greeter-clone/web-greeter/resources.py` was not compiled with pyrcc5 in the build/install methods. [antergos]: https://github.com/Antergos "Antergos" [nody-greeter]: https://github.com/JezerM/nody-greeter "Nody Greeter" [cx_freeze]: https://github.com/marcelotduarte/cx_Freeze "cx_Freeze" [acpilight]: https://gitlab.com/wavexx/acpilight "acpilight" [WebArchive]: https://web.archive.org/web/20190524032923/https://doclets.io/Antergos/web-greeter/stable "Web Archive" [gh-pages]: https://jezerm.github.io/web-greeter/ "API Documentation" [live_demo]: https://jezerm.github.io/web-greeter-themes/ "Live Demo" [releases]: https://github.com/JezerM/web-greeter/releases "Releases"