Skip to content

Commit 411e607

Browse files
committed
WIP vimgreetn
1 parent a36a0ec commit 411e607

7 files changed

Lines changed: 197 additions & 15 deletions

File tree

build_files/base/01-base-system.sh

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/bash
22
# Hypercube Base System
3-
# Installs core system components, display manager (greetd + regreet), and hardware support
3+
# Installs core system components, display manager (greetd + vimgreet), and hardware support
44

55
set -ouex pipefail
66

@@ -12,14 +12,16 @@ dnf5 -y clean all
1212
### Enable Hypercube COPR for custom packages
1313
dnf5 -y copr enable binarypie/hypercube
1414

15-
### Display Manager: greetd + regreet
16-
# regreet from binarypie/hypercube COPR
17-
# cage is a minimal Wayland compositor to host regreet and the first-boot wizard
15+
### Display Manager: greetd + vimgreet
16+
# vimgreet from binarypie/hypercube COPR
17+
# cage is a minimal Wayland compositor to host vimgreet and the first-boot wizard
18+
# foot is a lightweight terminal for running vimgreet with proper colors/cursor
1819
dnf5 -y install \
1920
greetd \
2021
greetd-selinux \
2122
cage \
22-
regreet
23+
foot \
24+
vimgreet
2325

2426
### Desktop Portals & Integration
2527
dnf5 -y install \

build_files/hypercube/03-hypercube-configs.sh

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,6 @@ install -Dm644 "${CONFIG_DIR}/gtk-4.0/settings.ini" /etc/xdg/gtk-4.0/settings.in
7878
install -Dm644 "${CONFIG_DIR}/qt6ct/qt6ct.conf" /etc/xdg/qt6ct/qt6ct.conf
7979
install -Dm644 "${CONFIG_DIR}/qt6ct/colors/TokyoNight.conf" /usr/share/qt6ct/colors/TokyoNight.conf
8080

81-
### ReGreet login greeter configuration (Tokyo Night themed)
82-
install -Dm644 "${CONFIG_DIR}/regreet/regreet.toml" /etc/greetd/regreet.toml
83-
install -Dm644 "${CONFIG_DIR}/regreet/regreet.css" /etc/greetd/regreet.css
84-
8581
### Enable xdg-desktop-portal-gtk for dark mode detection (Firefox, etc.)
8682
# This portal provides the org.freedesktop.appearance.color-scheme setting
8783
systemctl --global enable xdg-desktop-portal-gtk.service

build_files/hypercube/99-tests.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ echo "Running Hypercube validation tests..."
1010
REQUIRED_PACKAGES=(
1111
# Display manager
1212
"greetd"
13-
"regreet"
13+
"vimgreet"
1414
"cage"
1515
# Hyprland stack
1616
"hyprland"

dot_files/foot/foot-kiosk.ini

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# Foot Kiosk Mode Configuration
2+
# Used for launching TUI applications as standalone "apps" (e.g., vimgreet)
3+
# - Minimal chrome
4+
# - Tokyo Night Moon color scheme
5+
6+
[main]
7+
font=JetBrains Mono:size=13
8+
dpi-aware=yes
9+
pad=0x0
10+
11+
[scrollback]
12+
lines=0
13+
14+
[cursor]
15+
color=222436 c8d3f5
16+
blink=no
17+
18+
[colors]
19+
background=222436
20+
foreground=c8d3f5
21+
selection-foreground=c8d3f5
22+
selection-background=2f334d
23+
24+
# Black
25+
regular0=1e2030
26+
bright0=444a73
27+
28+
# Red
29+
regular1=ff757f
30+
bright1=ff757f
31+
32+
# Green
33+
regular2=c3e88d
34+
bright2=c3e88d
35+
36+
# Yellow
37+
regular3=ffc777
38+
bright3=ffc777
39+
40+
# Blue
41+
regular4=82aaff
42+
bright4=65bcff
43+
44+
# Magenta/Purple
45+
regular5=c099ff
46+
bright5=fca7ea
47+
48+
# Cyan
49+
regular6=86e1fc
50+
bright6=86e1fc
51+
52+
# White
53+
regular7=c8d3f5
54+
bright7=c8d3f5
55+
56+
[key-bindings]
57+
# Disable all keybindings for kiosk mode
58+
scrollback-up-page=none
59+
scrollback-down-page=none
60+
scrollback-up-half-page=none
61+
scrollback-down-half-page=none
62+
scrollback-up-line=none
63+
scrollback-down-line=none
64+
clipboard-copy=none
65+
clipboard-paste=none
66+
primary-paste=none
67+
search-start=none
68+
font-increase=none
69+
font-decrease=none
70+
font-reset=none
71+
spawn-terminal=none
72+
show-urls-launch=none
73+
show-urls-copy=none
74+
noop=none

dot_files/hypr/hyprland-kiosk.conf

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
# Hyprland Kiosk Mode Configuration
2+
# Used for greetd login (vimgreet) and first-boot wizard (quickshell)
3+
# - No keybindings (locked down)
4+
# - Single fullscreen application
5+
# - Exits when the application closes
6+
#
7+
# Usage: Set KIOSK_CMD environment variable before launching
8+
# KIOSK_CMD="ghostty --config-file=... --command=vimgreet" Hyprland -c /path/to/hyprland-kiosk.conf
9+
10+
################
11+
### MONITORS ###
12+
################
13+
14+
# Enable all monitors - kiosk app shows on primary, others show wallpaper
15+
monitor=,preferred,auto,auto
16+
17+
#################
18+
### AUTOSTART ###
19+
#################
20+
21+
# Wallpaper on all monitors
22+
exec-once = hyprpaper -c /usr/share/hypercube/config/hypr/hyprpaper.conf
23+
24+
# Launch the kiosk application from environment variable
25+
exec-once = $KIOSK_CMD
26+
27+
# Exit Hyprland when the last window closes
28+
exec-once = handle=$(hyprctl -j clients | jq -r '.[0].address // empty'); while [ -n "$handle" ]; do sleep 0.5; handle=$(hyprctl -j clients | jq -r '.[0].address // empty'); done; hyprctl dispatch exit
29+
30+
#############################
31+
### ENVIRONMENT VARIABLES ###
32+
#############################
33+
34+
env = XCURSOR_SIZE,24
35+
env = HYPRCURSOR_SIZE,24
36+
37+
#####################
38+
### LOOK AND FEEL ###
39+
#####################
40+
41+
general {
42+
gaps_in = 0
43+
gaps_out = 0
44+
border_size = 0
45+
col.active_border = rgba(00000000)
46+
col.inactive_border = rgba(00000000)
47+
resize_on_border = false
48+
allow_tearing = false
49+
layout = dwindle
50+
}
51+
52+
decoration {
53+
rounding = 0
54+
active_opacity = 1.0
55+
inactive_opacity = 1.0
56+
shadow {
57+
enabled = false
58+
}
59+
blur {
60+
enabled = false
61+
}
62+
}
63+
64+
animations {
65+
enabled = false
66+
}
67+
68+
dwindle {
69+
pseudotile = false
70+
preserve_split = true
71+
}
72+
73+
misc {
74+
force_default_wallpaper = 0
75+
disable_hyprland_logo = true
76+
}
77+
78+
#############
79+
### INPUT ###
80+
#############
81+
82+
input {
83+
kb_layout = us
84+
kb_variant =
85+
kb_model =
86+
kb_options =
87+
kb_rules =
88+
follow_mouse = 1
89+
sensitivity = 0
90+
touchpad {
91+
natural_scroll = false
92+
}
93+
}
94+
95+
###################
96+
### KEYBINDINGS ###
97+
###################
98+
99+
# No keybindings - kiosk mode is locked down
100+
101+
##############################
102+
### WINDOWS AND WORKSPACES ###
103+
##############################
104+
105+
# Force all windows to fullscreen
106+
windowrule = fullscreen, match:class .*
107+
windowrule = nofocus, match:class ^$, match:title ^$

system_files/shared/etc/greetd/config.toml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,12 @@
33
vt = 1
44

55
[default_session]
6-
# Run regreet in cage (minimal Wayland compositor) with custom CSS
7-
command = "/usr/sbin/cage -s -- /usr/sbin/regreet --style /etc/greetd/regreet.css"
6+
# Run vimgreet in cage with foot (lightweight terminal for colors/cursor support)
7+
command = "cage -s -- foot --config=/usr/share/hypercube/config/foot/foot-kiosk.ini vimgreet"
88
user = "greeter"
99

1010
[initial_session]
11-
# First boot wizard - runs once as root, then exits to show regreet
11+
# First boot wizard - runs once as root, then exits to show vimgreet
1212
# Check if regular users exist (UID >= 1000) - if so, skip wizard and remove this block
13-
# Set XDG_RUNTIME_DIR for quickshell/Qt to work properly as root
14-
command = "sh -c 'if getent passwd | awk -F: \"\\$3 >= 1000 && \\$3 < 65534\" | grep -q .; then sed -i \"/^\\[initial_session\\]/,\\$d\" /etc/greetd/config.toml; exit 0; fi; mkdir -p /run/user/0 && export XDG_RUNTIME_DIR=/run/user/0; /usr/sbin/cage -s -- /usr/sbin/quickshell -p /usr/share/hypercube/config/quickshell/welcome-mode.qml'"
13+
command = "sh -c 'if getent passwd | awk -F: \"\\$3 >= 1000 && \\$3 < 65534\" | grep -q .; then sed -i \"/^\\[initial_session\\]/,\\$d\" /etc/greetd/config.toml; exit 0; fi; mkdir -p /run/user/0 && export XDG_RUNTIME_DIR=/run/user/0; cage -s -- quickshell -p /usr/share/hypercube/config/quickshell/welcome-mode.qml'"
1514
user = "root"
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[Service]
2+
# Ensure pty devices are accessible for terminal emulators like ghostty
3+
# PrivateDevices must be disabled to access the real /dev/pts
4+
PrivateDevices=no

0 commit comments

Comments
 (0)