Files
moonarch/defaults/xdg/gtklock/config.ini
T
nevaforget 8d31ff26e0 feat(lock): gtklock replaces swaylock
moonix switched first; this follows so the two distributions agree again
and moonix can drop the two substitute derivations that were rewriting
these configs at deploy time.

Two things made it worth doing. gtklock's modules show an avatar, a clock
and power buttons, none of which swaylock can do at all. And the old
objection is gone: 4.0.0 links libgtk-session-lock.so.0, so it speaks
ext-session-lock-v1 exactly like swaylock and the compositor still holds
the lock if the process dies. Only the <=2.x versions used layer-shell,
where a crash unlocked the screen.

The config location is the real prize. gtklock searches $XDG_CONFIG_DIRS,
so defaults/xdg/gtklock/config.ini rides the generic sweep and takes effect
through the package alone. Everything built for swaylock in 2026-08-18 goes
with it: the explicit install line in the PKGBUILD, the pre_upgrade
retirement of seeded home copies, check_swaylock_config in moonarch-doctor,
the comment in post-install.sh. swaylock needed all of that because its
sysconfdir was not an XDG path.

The blur stays baked into the wallpaper. gtklock cannot blur either — GTK3
has no filter CSS property and it takes no screenshot of the session, so
there is nothing to blur at lock time.

playerctl-module is deliberately not installed; it needs playerctld, which
nothing here starts. The other two are named bare in modules= because
gtklock's compiled-in module directory really is /usr/lib/gtklock on Arch.
All three packages are in extra, so official.txt covers them.

Both callers keep spawning the locker directly. There is no Wayland
protocol for "lock the session" — ext-session-lock-v1 is how a client
becomes the lock — and no portal either; logind's Session.Lock only emits a
signal nothing here subscribes to. Routing the popout through `stasis
trigger lock-screen` would name the locker once instead of twice, at the
price of a Lock button that fails silently whenever stasis is down. The
reason to want it does not exist: the plan continues after a manual lock
anyway, because stasis takes the state from logind's LockedHint rather than
from having started the locker.

The PKGBUILD side of this is a separate commit in moonarch-pkgbuilds, and
it carries the part that fails silently if forgotten: pre_upgrade rewrites
already-seeded ~/.config/stasis/stasis.rune, which is copied once and never
overwritten. Without it an existing install keeps calling a locker that is
no longer there.
2026-09-12 02:25:00 +02:00

35 lines
1.7 KiB
INI

# ABOUTME: Moonarch default gtklock configuration.
# ABOUTME: Installed to /etc/xdg/gtklock/config.ini; callers pass -d themselves.
#
# gtklock searches $XDG_CONFIG_HOME/gtklock/config.ini and gtklock/config.ini
# under every $XDG_CONFIG_DIRS entry, so /etc/xdg is enough and this file takes
# effect through the package alone. It goes through the generic defaults/xdg/
# sweep in the PKGBUILD like any other XDG config -- unlike swaylock before it,
# whose sysconfdir was not an XDG path and needed an install line of its own.
#
# Every option here is also a command-line flag; `gtklock --help-config` lists
# them. A user copy in ~/.config/gtklock/config.ini wins over this one.
[main]
# Blurred variant of the default wallpaper. gtklock has no blur of its own --
# GTK3 has no `filter` CSS property at all -- and it takes no screenshot of the
# session, so there is nothing to blur at lock time either way. The blur is
# baked into the image at build time, as it was for swaylock.
background=/usr/share/moonarch/wallpaper-blur.jpg
# Bare names resolve against gtklock's compiled-in module directory, which is
# /usr/lib/gtklock here. playerctl-module is deliberately absent: it needs
# playerctld, which nothing in moonarch starts.
modules=userinfo-module;powerbar-module
# No gtk-theme key on purpose. gtklock is GTK3 and reads the session theme from
# /etc/xdg/gtk-3.0/settings.ini, so the theme name lives in exactly one place.
#
# powerbar needs no configuration: its built-in commands are `systemctl reboot`,
# `systemctl -i poweroff` and `systemctl suspend`.
#
# userinfo takes the avatar from AccountsService, which resolves to ~/.face.
# With no such file it warns once and falls back to avatar-default-symbolic from
# the icon theme; there is no option for the path.