nwg-piotr / nwg-hello

GTK3-based greeter for greetd written in python
MIT License
35 stars 5 forks source link
greetd gtk3 hyprland swaywm wayland

nwg-hello

This program is a part of the nwg-shell project.

Nwg-hello is a GTK3-based greeter for the greetd daemon, written in python. It is meant to work under a Wayland compositor, like sway or Hyprland (also see: Running on Debian and labwc). The greeter has been developed for the nwg-iso project, but it may be configured for standalone use.

Screenshot

The screen layout is heavily inspired by Sugar Candy SDDM theme by Marian Arlt.

Background

I was looking for a good login manager for the nwg-iso project. I first used SDDM with the Sugar Candy theme, and it worked pretty well. However, it brings QT dependencies, and my stuff is all GTK-based. Also, I know nothing on the QT framework, so couldn't adjust the greeter to my taste. The next choice was LightDM with my modification of the LightDM Elephant Greeter by Maximilian Moser. It looked well, but LightDM would happen to hang way too often. Then I gave a try to greetd, and that was it. I only needed a nice graphical greeter based on GTK3. Since there was no such thing, I had to develop one.

Features

Dependencies

Make dependencies

Installation

Packaging status

First you need to install and start greetd.

The greeter can be installed by cloning this repository and executing the install.sh script (make sure you installed dependencies first). Then you need to edit the /etc/greetd/config.toml file (or greetd.conf - see the tip below).

[terminal]
# The VT to run the greeter on. Can be "next", "current" or a number
# designating the VT.
vt = 1

# The default session, also known as the greeter.
[default_session]

# `agreety` is the bundled agetty/login-lookalike. You can replace `/bin/sh`
# with whatever you want started, such as `sway`.
command = "agreety --cmd /bin/sh"

# The user to run the command as. The privileges this user must have depends
# on the greeter. A graphical greeter may for example require the user to be
# in the `video` group.
user = "greeter"

Replace the line:

command = "agreety --cmd /bin/sh"

with

command = "Hyprland -c /etc/nwg-hello/hyprland.conf"

if you want to use Hyprland, or this line if you prefer sway:

command = "sway -c /etc/nwg-hello/sway-config"

Do not change the user = "greeter" line, or some file-related functions won't work.

Tip

During the greetd package upgrades, the config.toml file may be overwritten with the default one. E.g. on Arch Linux your modified file gets renamed to config.toml.pacsave. This will restore the agreety greeter on your system. To avoid such a situation, you may use the alternative greetd.conf file. This has not been mentioned in docs, but greetd looks for this file first. Just copy config.toml to greetd.conf and make changes to the copy.

Configuration

Copy /etc/nwg-hello/nwg-hello-default.json to /etc/nwg-hello/nwg-hello.json and make your changes there.

{
  "session_dirs": [
    "/usr/share/wayland-sessions",
    "/usr/share/xsessions"
  ],
  "custom_sessions": [
    {
      "name": "Shell",
      "exec": "/usr/bin/bash"
    }
  ],
  "monitor_nums": [],
  "form_on_monitors": [],
  "delay_secs": 1,
  "cmd-sleep": "systemctl suspend",
  "cmd-reboot": "systemctl reboot",
  "cmd-poweroff": "systemctl poweroff",
  "gtk-theme": "Adwaita",
  "gtk-icon-theme": "",
  "gtk-cursor-theme": "",
  "prefer-dark-theme": true,
  "template-name": "",
  "lang": "",
  "env-vars": []
}

Styling

Copy /etc/nwg-hello/nwg-hello-default.css to /etc/nwg-hello/nwg-hello.css and make your changes there.

Custom icons

If you'd like to use own icons, do not replace /usr/share/nwg-hello/*-default.svg files. Place your poweroff.svg, reboot.svg and sleep.svg files in the same directory.

Own language files

You can't translate labels in the .glade file, as the program replaces the values with what's defined in language files. Since the 0.2.4 version, however, you can copy your lang file to /etc/nwg-hello/ and make desired changes there, see https://github.com/nwg-piotr/nwg-hello/issues/19. Be careful with syntax, the JSON format is unforgiving. Test your lang file by running nwg-hello -t -d from terminal.

Running on Debian and labwc

Submitted by @01micko.

configs

/etc/greetd/greetd.conf

[terminal]
# The VT to run the greeter on. Can be "next", "current" or a number
# designating the VT.
vt = 7

# The default session, also known as the greeter.
[default_session]

command = "labwc --config-dir /etc/nwg-hello/labwc-config"

# The user to run the command as. The privileges this user must have depends
# on the greeter. A graphical greeter may for example require the user to be
# in the `video` group.
user = "_greetd"

NOTE: The user _greetd is a debian thing, even though it isn't set up correctly. You have to manually add to 'video' group and chown all the files in /etc/greetd.

/etc/nwg-hello/labwc-config/autostart

# start nwg-hello - full paths aren't required, but saves lookup time
exec /usr/bin/nwg-hello; /usr/bin/labwc --exit

/etc/nwg-hello/labwc-config/rc.xml (optional)

 <?xml version="1.0" ?>
<labwc_config>

  <keyboard>
    <default />
    <keybind key="Print"><action name="Execute" command="grim" /></keybind>
  </keyboard>

</labwc_config>

Acknowledgments