Initial commit — TANINUX (camel): management app + distro packaging
- app: GTK System Settings (tsettings) + Software Hub (thub) + TUI - distro/: camel.toml manifest + MANIFEST.md (Arch + [tanin] repo model) - packaging/: taninux, tanin-desktop (niri metapackage), tanin-greet, tanin-libadwaita, tanin-setup - docs/, data/, LICENSE (GPL-3.0-or-later) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Executable
+54
@@ -0,0 +1,54 @@
|
||||
#!/usr/bin/env python3
|
||||
# Minimal greetd IPC mock — just enough for tanin-greet to render and dry-run a
|
||||
# login WITHOUT real auth. greetd framing: native-endian u32 length + JSON.
|
||||
# Usage: python3 mockgreetd.py /tmp/mock-greetd.sock
|
||||
import json, os, socket, struct, sys
|
||||
|
||||
SOCK = sys.argv[1] if len(sys.argv) > 1 else "/tmp/mock-greetd.sock"
|
||||
try:
|
||||
os.unlink(SOCK)
|
||||
except FileNotFoundError:
|
||||
pass
|
||||
|
||||
srv = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
||||
srv.bind(SOCK)
|
||||
srv.listen(8)
|
||||
print(f"mock greetd listening on {SOCK}", flush=True)
|
||||
|
||||
|
||||
def recv(conn):
|
||||
hdr = conn.recv(4)
|
||||
if len(hdr) < 4:
|
||||
return None
|
||||
n = struct.unpack("=I", hdr)[0]
|
||||
buf = b""
|
||||
while len(buf) < n:
|
||||
chunk = conn.recv(n - len(buf))
|
||||
if not chunk:
|
||||
break
|
||||
buf += chunk
|
||||
return json.loads(buf)
|
||||
|
||||
|
||||
def send(conn, obj):
|
||||
data = json.dumps(obj).encode()
|
||||
conn.sendall(struct.pack("=I", len(data)) + data)
|
||||
|
||||
|
||||
while True:
|
||||
conn, _ = srv.accept()
|
||||
try:
|
||||
while True:
|
||||
req = recv(conn)
|
||||
if req is None:
|
||||
break
|
||||
if req.get("type") == "create_session":
|
||||
send(conn, {"type": "auth_message",
|
||||
"auth_message_type": "secret",
|
||||
"auth_message": "Password:"})
|
||||
else: # post_auth_message_response / start_session / cancel_session
|
||||
send(conn, {"type": "success"})
|
||||
except Exception as e: # noqa: BLE001
|
||||
print("conn error:", e, flush=True)
|
||||
finally:
|
||||
conn.close()
|
||||
Executable
+22
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env bash
|
||||
# Preview tanin-greet from the repo in a nested cage window (no logout, no real
|
||||
# auth) and screenshot it. Uses the mock greetd socket so the UI fully renders.
|
||||
# ./dev/preview.sh [wallpaper.jpg]
|
||||
set -euo pipefail
|
||||
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
SOCK=/tmp/mock-greetd.sock
|
||||
SHOT=/tmp/tanin-greet.png
|
||||
|
||||
export GREETD_SOCK="$SOCK"
|
||||
export TANIN_GREET_CSS="$HERE/tanin-greet.css"
|
||||
export TANIN_GREET_BG="${1:-$HOME/Downloads/karen-z-OW5F_DMfb0E-unsplash.jpg}"
|
||||
|
||||
python3 "$HERE/dev/mockgreetd.py" "$SOCK" >/tmp/mockgreetd.log 2>&1 &
|
||||
MOCK=$!
|
||||
trap 'kill "$MOCK" 2>/dev/null; pkill -x cage 2>/dev/null' EXIT
|
||||
sleep 0.4
|
||||
|
||||
timeout 8 cage -s -- python3 "$HERE/tanin-greet" >/tmp/tanin-greet.log 2>&1 &
|
||||
sleep 4.5
|
||||
grim -o "${GREET_OUTPUT:-DP-3}" "$SHOT" && echo "screenshot: $SHOT"
|
||||
pkill -x cage 2>/dev/null || true
|
||||
Reference in New Issue
Block a user