aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-18 11:28:14 +0200
committerDanilo M. <danix@danix.xyz>2026-10-18 11:28:14 +0200
commit140e0f906a9e8566b26267d84eb0aa1a7e2f0d94 (patch)
tree3ed4b858789baf9a23530ec932e99f0e8c99a01a
parent75772bed729c7bfe48a309cc39a8a52ec3ac251b (diff)
downloadunified-desktop-theme-140e0f906a9e8566b26267d84eb0aa1a7e2f0d94.tar.gz
unified-desktop-theme-140e0f906a9e8566b26267d84eb0aa1a7e2f0d94.zip
feat(rofi): wallpaper banner and placeholder on the ssh header
The header and search bar share the wallpaper banner the Alt+F2 runner uses, each on a plate so it stays legible over any image, and the entry gets a placeholder. ssh.rasi now carries the @WPAPER@ placeholder, so install.sh generates it like launcher.rasi instead of linking it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
-rw-r--r--AGENTS.md2
-rwxr-xr-xinstall.sh15
-rw-r--r--rofi/udt/ssh.rasi52
3 files changed, 54 insertions, 15 deletions
diff --git a/AGENTS.md b/AGENTS.md
index 51835bc..57f9ea5 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -344,7 +344,7 @@ them by exit code: rofi exits non-zero for ordinary reasons such as Escape.
data (`qt6ct.conf` has an `ignored_applications` list), track only the
theme-relevant keys.
- **Themes that reference an image cannot be committed with a real path.**
- `launcher.rasi` carries an `@WPAPER@` placeholder that `install.sh` rewrites.
+ `launcher.rasi` and `ssh.rasi` carry an `@WPAPER@` placeholder that `install.sh` rewrites.
rofi does not expand `~` inside a `url()`.
- After editing anything under `rofi/udt/` or `palette/`, run `./install.sh`.
- `bin/udt-palette --selftest` resolves every role in every scheme. Run it
diff --git a/install.sh b/install.sh
index 8ca71db..45deb76 100755
--- a/install.sh
+++ b/install.sh
@@ -84,16 +84,17 @@ fi
# Theme files are symlinked individually; accent.rasi is NOT, it points at the
# generated file in the wal cache instead.
-for f in palette.rasi common.rasi menu.rasi list.rasi grid.rasi powermenu.rasi confirm.rasi screenshot.rasi ssh.rasi; do
+for f in palette.rasi common.rasi menu.rasi list.rasi grid.rasi powermenu.rasi confirm.rasi screenshot.rasi; do
ln -sfn "$repo/rofi/udt/$f" "$target/$f"
done
-# launcher.rasi is generated rather than symlinked: its wallpaper path comes
-# from the wal cache and cannot be committed. Regenerating it is why re-running
-# this script after moving the repo is safe.
-rm -f "$target/launcher.rasi"
-sed "s|@WPAPER@|$HOME/.cache/udt/wpaper|" \
- "$repo/rofi/udt/launcher.rasi" > "$target/launcher.rasi"
+# launcher.rasi and ssh.rasi are generated rather than symlinked: their
+# wallpaper path comes from the wal cache and cannot be committed. Regenerating
+# them is why re-running this script after moving the repo is safe.
+for f in launcher.rasi ssh.rasi; do
+ rm -f "$target/$f"
+ sed "s|@WPAPER@|$HOME/.cache/udt/wpaper|" "$repo/rofi/udt/$f" > "$target/$f"
+done
# Seed the generated accent if it does not exist yet, so themes parse on a
# fresh install before any wallpaper has been set.
diff --git a/rofi/udt/ssh.rasi b/rofi/udt/ssh.rasi
index 4c8a88e..c40ac05 100644
--- a/rofi/udt/ssh.rasi
+++ b/rofi/udt/ssh.rasi
@@ -14,19 +14,56 @@ window {
width: 1100px;
anchor: center;
location: center;
- padding: 20px;
+ padding: 0;
}
-/* The prompt is lifted out of the inputbar to sit above it as a header. */
mainbox {
- children: [ prompt, inputbar, listview ];
- spacing: 16px;
+ children: [ header, listview ];
+ spacing: 0;
}
+/* The wallpaper banner, as in launcher.rasi: the header and the search bar
+ * share it. @WPAPER@ is rewritten by the installer, which is why this file
+ * is generated rather than linked. */
+header {
+ expand: false;
+ orientation: vertical;
+ children: [ headrow, inputbar ];
+ spacing: 12px;
+ padding: 2.5em 2em;
+ background-image: url("@WPAPER@", width);
+ background-color: @mantle;
+}
+
+/* The prompt is lifted out of the inputbar to sit above it, and kept to its
+ * own width by the spacer so its plate does not span the banner. */
+headrow {
+ expand: false;
+ orientation: horizontal;
+ children: [ prompt, dummy ];
+}
+
+dummy {
+ expand: true;
+}
+
+/* Both sit on plates so they stay legible over any wallpaper. */
prompt {
- font: "Noto Sans Bold 15";
- text-color: @text;
- padding: 0 4px;
+ font: "Noto Sans Bold 15";
+ text-color: @text;
+ background-color: @base;
+ border-radius: 6px;
+ padding: 6px 12px;
+}
+
+inputbar {
+ background-color: @base;
+ border: 1px;
+ border-color: @accent;
+}
+
+entry {
+ placeholder: "Search hosts, users, addresses";
}
listview {
@@ -35,6 +72,7 @@ listview {
fixed-height: true;
spacing: 12px;
flow: horizontal;
+ padding: 20px;
}
/* Text only: the element spacing otherwise reserves a gap for the icon. */