feat: unify monospace typography and style the One Ring greeter
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
# Render the actual packaged greeter in an isolated X server, never live SDDM.
|
||||
{ config, pkgs }:
|
||||
let
|
||||
inherit (pkgs) lib;
|
||||
font = "JetBrainsMono Nerd Font";
|
||||
hm = config.home-manager.users.dev;
|
||||
theme = import ./greeter-theme.nix { inherit pkgs font; };
|
||||
sddm = config.services.displayManager.sddm.package.override {
|
||||
extraPackages = config.services.displayManager.sddm.extraPackages;
|
||||
};
|
||||
fontConfig = pkgs.makeFontsConf {
|
||||
fontDirectories = config.fonts.packages;
|
||||
impureFontDirectories = [ ];
|
||||
includes = [ "${config.environment.etc.fonts.source}/conf.d" ];
|
||||
};
|
||||
in
|
||||
assert lib.all (family: builtins.head config.fonts.fontconfig.defaultFonts.${family} == font) [
|
||||
"sansSerif"
|
||||
"serif"
|
||||
"monospace"
|
||||
];
|
||||
assert hm.gtk.font.name == font;
|
||||
assert hm.qt.platformTheme.name == "gtk3";
|
||||
assert hm.programs.kitty.font.name == font;
|
||||
assert hm.programs.ashell.settings.appearance.font_name == font;
|
||||
assert hm.dconf.settings."org/gnome/desktop/interface".font-name == "${font} 11";
|
||||
assert lib.all (label: label.font_family == font) hm.programs.hyprlock.settings.label;
|
||||
assert lib.hasInfix font hm.programs.anyrun.extraCss;
|
||||
assert lib.hasInfix font hm.services.swaync.style;
|
||||
assert config.services.displayManager.sddm.theme == "sddm-astronaut-theme";
|
||||
assert config.services.displayManager.sddm.settings.Theme.Font == font;
|
||||
assert !config.services.displayManager.autoLogin.enable;
|
||||
assert !config.services.desktopManager.plasma6.enable;
|
||||
pkgs.runCommand "desktop-appearance-check"
|
||||
{
|
||||
nativeBuildInputs = with pkgs; [
|
||||
fontconfig
|
||||
xvfb-run
|
||||
xdotool
|
||||
imagemagick
|
||||
gnugrep
|
||||
];
|
||||
}
|
||||
''
|
||||
export HOME="$TMPDIR/home" XDG_CACHE_HOME="$TMPDIR/cache" XDG_RUNTIME_DIR="$TMPDIR/runtime"
|
||||
mkdir -m 700 -p "$HOME" "$XDG_CACHE_HOME" "$XDG_RUNTIME_DIR" "$out"
|
||||
export FONTCONFIG_FILE=${fontConfig}
|
||||
for family in sans-serif serif monospace; do
|
||||
fc-match --format='%{family}' "$family" | grep -Fq '${font}'
|
||||
done
|
||||
fc-match --format='%{family}' emoji | grep -Fq 'Noto Color Emoji'
|
||||
fc-match --format='%{family}' ':charset=4e00' | grep -Fq 'Noto Sans CJK'
|
||||
test -r ${theme}/share/sddm/themes/sddm-astronaut-theme/Backgrounds/one-ring.jpg
|
||||
export QT_QUICK_BACKEND=software LIBGL_ALWAYS_SOFTWARE=1 QT_QPA_PLATFORM=xcb
|
||||
xvfb-run -a -s '-screen 0 1920x1080x24' ${pkgs.runtimeShell} -euc '
|
||||
${sddm}/bin/sddm-greeter-qt6 --test-mode \
|
||||
--theme ${theme}/share/sddm/themes/sddm-astronaut-theme > "$out/greeter.log" 2>&1 &
|
||||
pid=$!
|
||||
trap "kill $pid 2>/dev/null || true" EXIT
|
||||
for attempt in $(seq 1 40); do
|
||||
kill -0 "$pid"
|
||||
if xdotool search --onlyvisible --pid "$pid" > /dev/null 2>&1; then break; fi
|
||||
sleep 0.5
|
||||
done
|
||||
sleep 3
|
||||
kill -0 "$pid"
|
||||
xdotool search --onlyvisible --pid "$pid" > /dev/null
|
||||
magick import -window root "$out/greeter.png"
|
||||
# Check the focused password field and enabled-button appearance, without login.
|
||||
window=$(xdotool search --onlyvisible --pid "$pid" | head -n 1)
|
||||
xdotool windowfocus --sync "$window"
|
||||
xdotool type --clearmodifiers "preview-only"
|
||||
sleep 1
|
||||
magick import -window root "$out/greeter-password.png"
|
||||
if grep -Ei "(module .* is not installed|failed to load|is not a type|ReferenceError|TypeError|cannot assign)" "$out/greeter.log"; then
|
||||
exit 1
|
||||
fi
|
||||
'
|
||||
''
|
||||
Reference in New Issue
Block a user