init: seth-linux-theme scaffold with GTK CSS, kitty, and GNOME configs
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
SESSION.default.md
|
||||||
|
GITEA_API.md
|
||||||
|
.backup/
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# DECISIONS.md — <Project Name> Decision Log
|
||||||
|
|
||||||
|
Project-specific decisions. For global/cross-cutting decisions, see `~/bin/DECISIONS.md`.
|
||||||
|
|
||||||
|
Format: `YYYY-MM-DD: <decision> — <why>`
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
## Deferred / Rejected
|
||||||
|
<!-- Decisions NOT to do something are just as valuable -- prevents re-proposing rejected ideas -->
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# IDEA.md — Project Idea
|
||||||
|
|
||||||
|
## What is this?
|
||||||
|
Seth's Linux desktop theme configs — GTK CSS, kitty overrides, GNOME settings, and an install script to deploy them consistently.
|
||||||
|
|
||||||
|
## Problem it solves
|
||||||
|
Reproducible desktop look across reinstalls. Black titlebars, square corners, ultra-thin headerbars, Sethian dark+orange brand. Currently scattered across ~/.config dirs — this centralizes and versions them.
|
||||||
|
|
||||||
|
## Constraints / preferences
|
||||||
|
- GNOME desktop (Wayland or X11)
|
||||||
|
- Kitty terminal
|
||||||
|
- Dark theme, orange accent (#D35400)
|
||||||
|
- Minimal — override only what's needed, stock Adwaita otherwise
|
||||||
|
- Install script deploys to target user's ~/.config
|
||||||
+114
@@ -0,0 +1,114 @@
|
|||||||
|
MAIN OBJECTIVE: Create SESSION.md in your project directory according to the folliwing template. Do NOT modify this source file.
|
||||||
|
# SESSION.md — Persistent AI Session Memory
|
||||||
|
|
||||||
|
This is the template and guide for `SESSION.md` files used across projects in this homelab.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## What SESSION.md is for
|
||||||
|
|
||||||
|
`SESSION.md` is a **persistent memory file** — it accumulates decisions, discoveries, and context across AI coding sessions so the assistant doesn't start cold each time.
|
||||||
|
|
||||||
|
It is **not** a chat transcript.
|
||||||
|
It is **not** static documentation of how something works.
|
||||||
|
It is a living record of *why things are the way they are*, plus a map to the right context files.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Where to put it
|
||||||
|
|
||||||
|
| Scope | Location | Purpose |
|
||||||
|
|---|---|---|
|
||||||
|
| Global homelab | `/root/bin/SESSION.md` ← this file | Cross-project memory, patterns, major decisions |
|
||||||
|
| Per-project | `<project-dir>/SESSION.md` | Project-specific session memory |
|
||||||
|
|
||||||
|
Each project `SESSION.md` should link back here and to any relevant context files.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## How to populate it
|
||||||
|
|
||||||
|
Copy the section structure below into your project's `SESSION.md` and fill it in.
|
||||||
|
|
||||||
|
### Mandatory sections
|
||||||
|
|
||||||
|
**Context pointers** — every `SESSION.md` must list the files the AI should load to understand the project:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
## Context Files
|
||||||
|
|
||||||
|
- `/root/bin/core_homelab.md` — cluster topology, SSH aliases
|
||||||
|
- `/root/bin/services_directory.md` — active service IPs and domains
|
||||||
|
- `/root/bin/SESSION.md` — global session memory (this file's parent)
|
||||||
|
- `./CONTEXT.md` — project-specific infrastructure and config
|
||||||
|
- `./README.md` — project overview
|
||||||
|
```
|
||||||
|
|
||||||
|
**Project summary** — one paragraph. What is this project? What problem does it solve?
|
||||||
|
|
||||||
|
**Gitea repo** — link to the Gitea remote (if version-controlled):
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
## Gitea
|
||||||
|
|
||||||
|
- Repo: https://git.sethpc.xyz/Seth/<repo-name>
|
||||||
|
- Remote: `https://Seth:<token>@git.sethpc.xyz/Seth/<repo-name>.git`
|
||||||
|
- API key: see `/root/bin/GITEA_API.md` (same key for all repos)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Session notes** — the meat of the file. Append here each session.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Session notes format
|
||||||
|
|
||||||
|
Group entries by topic, not by date. Update the relevant section rather than appending raw timestamped blocks. Example:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
## Session Notes
|
||||||
|
|
||||||
|
### Infrastructure decisions
|
||||||
|
- Chose LXC over Docker-in-LXC because the service doesn't need container isolation
|
||||||
|
- Enabled nesting=1 on CT 644 to allow Docker inside
|
||||||
|
|
||||||
|
### Bug fixes & discoveries
|
||||||
|
- Service wasn't starting: mc1 had autoStart=false in MCSManager config
|
||||||
|
(fixed: set eventTask.autoStart=true in InstanceConfig/<id>.json)
|
||||||
|
- tail -F (capital F) is correct — waits for file to appear, handles log rotation
|
||||||
|
|
||||||
|
### Open threads
|
||||||
|
- [ ] Add Redis backend for session persistence (currently SQLite only)
|
||||||
|
- [ ] Web dashboard for recent AI god interactions
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## How to keep it current
|
||||||
|
|
||||||
|
Run `/update-context` in OpenCode at the end of any session. The command will:
|
||||||
|
1. Scan the conversation for decisions, fixes, and discoveries not yet recorded
|
||||||
|
2. Append them to `SESSION.md` (both this file and the project-level one if applicable)
|
||||||
|
3. Commit and push to Gitea
|
||||||
|
|
||||||
|
Command defined at: `~/.config/opencode/commands/update-context.md`
|
||||||
|
|
||||||
|
Mandatory per-reply discipline:
|
||||||
|
- Update `SESSION.md` immediately when a durable fact, decision, or fix is discovered.
|
||||||
|
- Before every final reply, run a memory check and append any missing durable notes.
|
||||||
|
- End every reply with one line: `Session memory: updated` or `Session memory: no new durable facts.`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Global session notes
|
||||||
|
|
||||||
|
### Patterns established across all projects
|
||||||
|
|
||||||
|
- **Gitea backup convention:** commit every meaningful change immediately; push on the same command. No squashing, no batching unrelated changes.
|
||||||
|
- **Session file naming:** `SESSION.md` (not `CONVERSATION.md`, not `CONTEXT.md`). `CONTEXT.md` = static infra facts. `SESSION.md` = accumulated AI memory.
|
||||||
|
- **Context file loading:** Always include `core_homelab.md` and `services_directory.md` in project instructions. Specific project context goes in `CONTEXT.md`.
|
||||||
|
- **autoStart for MCSManager instances:** Must be set in `InstanceConfig/<id>.json` (`eventTask.autoStart: true`), not just in the panel UI, to survive daemon restarts.
|
||||||
|
|
||||||
|
### Infrastructure discoveries
|
||||||
|
|
||||||
|
- `mc-godmode.service` on CT 644: already enabled and using `tail -F` correctly. The MC server itself had `autoStart: false` — that was the real issue.
|
||||||
|
- Gitea runs on port 443 via Caddy at `git.sethpc.xyz` (CT 146, node-173). Direct access to `192.168.0.125:80` does not work from CT 629 — always use the domain.
|
||||||
Executable
+10
@@ -0,0 +1,10 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Apply GNOME desktop settings for Seth Linux Theme
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
|
||||||
|
gsettings set org.gnome.desktop.interface accent-color 'orange'
|
||||||
|
gsettings set org.gnome.desktop.wm.preferences resize-with-right-button true
|
||||||
|
gsettings set org.gnome.desktop.wm.preferences mouse-button-modifier '<Super>'
|
||||||
|
|
||||||
|
echo "GNOME settings applied."
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
/* Black titlebar, square corners, ultra-thin */
|
||||||
|
headerbar {
|
||||||
|
background: #000;
|
||||||
|
border-radius: 0;
|
||||||
|
border-bottom: 1px solid #555;
|
||||||
|
box-shadow: none;
|
||||||
|
min-height: 10px;
|
||||||
|
padding: 0 2px;
|
||||||
|
color: #fff;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
headerbar:backdrop {
|
||||||
|
background: #000;
|
||||||
|
border-bottom: 1px solid #333;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
headerbar button {
|
||||||
|
background: transparent;
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
min-height: 14px;
|
||||||
|
min-width: 14px;
|
||||||
|
padding: 0 2px;
|
||||||
|
margin: 0;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
headerbar button:hover {
|
||||||
|
background: #222;
|
||||||
|
}
|
||||||
|
|
||||||
|
headerbar:backdrop button {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
window, window.background {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.titlebar, decoration {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
Executable
+35
@@ -0,0 +1,35 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Install Seth Linux Theme to target user's ~/.config
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
TARGET_HOME="${1:-$HOME}"
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
|
||||||
|
echo "Installing seth-linux-theme to $TARGET_HOME/.config ..."
|
||||||
|
|
||||||
|
# GTK CSS (same file for both GTK3 and GTK4)
|
||||||
|
mkdir -p "$TARGET_HOME/.config/gtk-3.0" "$TARGET_HOME/.config/gtk-4.0"
|
||||||
|
cp "$SCRIPT_DIR/gtk-3.0/gtk.css" "$TARGET_HOME/.config/gtk-3.0/gtk.css"
|
||||||
|
cp "$SCRIPT_DIR/gtk-3.0/gtk.css" "$TARGET_HOME/.config/gtk-4.0/gtk.css"
|
||||||
|
echo " GTK CSS installed."
|
||||||
|
|
||||||
|
# Kitty theme conf
|
||||||
|
if [ -d "$TARGET_HOME/.config/kitty" ]; then
|
||||||
|
cp "$SCRIPT_DIR/kitty/kitty-theme.conf" "$TARGET_HOME/.config/kitty/kitty-theme.conf"
|
||||||
|
if ! grep -q "include kitty-theme.conf" "$TARGET_HOME/.config/kitty/kitty.conf" 2>/dev/null; then
|
||||||
|
echo "" >> "$TARGET_HOME/.config/kitty/kitty.conf"
|
||||||
|
echo "include kitty-theme.conf" >> "$TARGET_HOME/.config/kitty/kitty.conf"
|
||||||
|
fi
|
||||||
|
echo " Kitty theme installed."
|
||||||
|
else
|
||||||
|
echo " Kitty config dir not found, skipping."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# GNOME settings (only if running a GNOME session)
|
||||||
|
if command -v gsettings &>/dev/null; then
|
||||||
|
bash "$SCRIPT_DIR/gnome/apply-gnome-settings.sh"
|
||||||
|
else
|
||||||
|
echo " gsettings not found, skipping GNOME settings."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Done. Open new windows to see changes. Relaunch kitty for kitty changes."
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# Seth Linux Theme — kitty overrides
|
||||||
|
# Include from kitty.conf: include ~/path/to/kitty-theme.conf
|
||||||
|
|
||||||
|
tab_bar_edge top
|
||||||
|
allow_remote_control yes
|
||||||
|
wayland_titlebar_color #000000
|
||||||
|
macos_titlebar_color #000000
|
||||||
|
hide_window_decorations yes
|
||||||
|
window_border_width 0
|
||||||
|
draw_minimal_borders yes
|
||||||
Reference in New Issue
Block a user