tlwiki-wikijs/dotfiles/greetd.md

2.4 KiB

title description published date tags editor dateCreated
Greetd true 2024-03-30T22:57:04.735Z markdown 2024-03-09T01:26:21.021Z

Kiosk mode

greetd is great for running one full-size app started at boot with the help of cage.

cage works quite well with systemd, and its documentation details how to accomplish this task without greetd if one wishes to. See: https://github.com/cage-kiosk/cage/wiki/Starting-Cage-on-boot-with-systemd {.is-info}

Prerequisites

Package Description Required?
cage Wayland compositor that forces one full-screen window Yes
polkit System privilege control Required if not using seatd service
xorg-server-xwayland X11 support No
{.dense}

Running a browser tab/window

Running bpytop (or any other terminal program)

bpytop is a great little resource monitor. I have a server with a small display that doesn't do much but show a login screen all day, and I figured why not just have the display run a resource monitor?

Don't forget to fix the graphs {.is-info}

Tabs

Method 1: Direct to the VT

You can launch any program directly to the VT and skip the X server or Wayland compositor nonsense. However, keep in mind that the VT can be pretty limited when it comes to the features we expect from a modern terminal program.

Regardless, here's how to configure greetd to do that:

/etc/greetd/config.toml:

[default_session]
command = "bpytop"
user = "thurstylark"

Method 2: Using fbterm

fbterm is a frame buffer terminal emulator which basically boils down to being a better VT.

/etc/greetd/config.toml:

[default_session]
command = "fbterm -- bpytop"
user = "thurstylark"

This should give you more flexibility with font sizing and configuration through fbterm's configuration file.

Method 3: Using cage and a graphical terminal emulator

This will be less performant than the other methods, but will afford you many more features. This is the method I actually use for this use-case.

/etc/greetd/config.toml:

[default_session]
command = "cage -s -- alacritty -e bpytop"
user = "thurstylark"