From a7364eb64216bd9be8b51d4d9974e2edb77e1727 Mon Sep 17 00:00:00 2001 From: SirBlobby Date: Fri, 21 Aug 2026 15:22:18 -0400 Subject: [PATCH] Render the Blob icon for the fastfetch About screen --- README.md | 8 +- fastfetch/config.jsonc | 162 ++++++++++++++++++++++++++++++++++++++++ install.sh | 2 + omarchy/hooks/theme-set | 19 +++++ 4 files changed, 189 insertions(+), 2 deletions(-) create mode 100644 fastfetch/config.jsonc diff --git a/README.md b/README.md index a395d2f..167ede0 100644 --- a/README.md +++ b/README.md @@ -23,12 +23,16 @@ My current setup is built around these core components: ### Directory Structure - **`hypr/`**: Hyprland configurations (keybindings, window rules, animations, monitor layout, lid-close display handling, and autostart). See [`hypr/keybinds.md`](hypr/keybinds.md) for custom keybindings. -- **`omarchy/`**: Omarchy 4 configuration — `shell.json` (bar layout, custom bar modules, and idle/lock timings), `extensions/` (entries added to the Omarchy menu), `hooks/` (event hooks such as retinting AGS on theme change), `plugins/` (forked shell plugins: the bar itself, the menu, and the workspace switcher), and `themed/` (extra theme templates). See [`omarchy/README.md`](omarchy/README.md) for the bar layout and the plugin clones. +- **`omarchy/`**: Omarchy 4 configuration — `shell.json` (bar layout, custom bar modules, and idle/lock timings), `extensions/` (entries added to the Omarchy menu), `hooks/` (event hooks such as retinting AGS and re-rendering the Blob icon on theme change), `plugins/` (forked shell plugins: the bar itself, the menu, and the workspace switcher), and `themed/` (extra theme templates). See [`omarchy/README.md`](omarchy/README.md) for the bar layout and the plugin clones. - **`ags/`**: Custom desktop widgets built with TypeScript and GTK — media player, notification hub, quick settings, system monitor, wallpaper picker, theme picker, and Claude Code usage. - **`scripts/`**: Global utility scripts seamlessly exposed as commands by the installer. See [`commands.md`](commands.md). - **`wallpapers/`**: A collection of local custom wallpapers for dynamic theming. See [`wallpaper-gallery/`](wallpaper-gallery/index.md) for the full gallery (split alphabetically across multiple pages). - **`themes/`**: Drop-in local color themes (one `colors.toml` per theme) that `install.sh` deploys into Omarchy's theme directory. See [`themes/README.md`](themes/README.md). -- **`branding/`**: Custom ASCII art and system branding assets. +- **`branding/`**: Custom ASCII art and system branding assets. `blob_icon.svg` is the source for both + the bar menu button and the About screen logo; the `theme-set` hook recolors it to the active theme and + renders it to `~/.local/state/omarchy/branding/blob_icon.png` for fastfetch. +- **`fastfetch/`**: The About screen config (`Super+Alt+Space` > About), a copy of Omarchy's + `/etc/fastfetch/config.jsonc` with the ASCII logo swapped for the sixel Blob icon. - **`kitty/`**: kitty terminal config and its color theme, applied by hand rather than by `install.sh`. See [`kitty/README.md`](kitty/README.md). ## Docs diff --git a/fastfetch/config.jsonc b/fastfetch/config.jsonc new file mode 100644 index 0000000..53518b5 --- /dev/null +++ b/fastfetch/config.jsonc @@ -0,0 +1,162 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "type": "sixel", + "source": "~/.local/state/omarchy/branding/blob_icon.png", + "width": 52, + "height": 26, + "padding": { + "top": 2, + "right": 6, + "left": 2 + } + }, + "display": { + "disableLinewrap": true + }, + "modules": [ + "break", + "break", + { + "type": "custom", + "format": "\u001b[90m┌──────────────────────Hardware──────────────────────┐" + }, + { + "type": "host", + "key": " PC", + "keyColor": "green" + }, + { + "type": "cpu", + "key": "│ ├", + "showPeCoreCount": true, + "keyColor": "green" + }, + { + "type": "gpu", + "key": "│ ├", + "detectionMethod": "pci", + "format": "{name}", + "keyColor": "green" + }, + { + "type": "display", + "key": "│ ├󱄄", + "keyColor": "green" + }, + { + "type": "disk", + "key": "│ ├󰋊", + "keyColor": "green" + }, + { + "type": "memory", + "key": "│ ├", + "keyColor": "green" + }, + { + "type": "swap", + "key": "└ └󰓡 ", + "keyColor": "green" + }, + { + "type": "custom", + "format": "\u001b[90m└────────────────────────────────────────────────────┘" + }, + "break", + { + "type": "custom", + "format": "\u001b[90m┌──────────────────────Software──────────────────────┐" + }, + { + "type": "command", + "key": "\ue900 OS", + "keyColor": "blue", + "text": "version=$(omarchy-version) && echo \"Omarchy $version\"" + }, + { + "type": "command", + "key": "│ ├󰘬", + "keyColor": "blue", + "text": "omarchy-version-branch" + }, + { + "type": "command", + "key": "│ ├󰔫", + "keyColor": "blue", + "text": "channel=$(omarchy-version-channel); echo \"$channel\"" + }, + { + "type": "kernel", + "key": "│ ├", + "keyColor": "blue" + }, + { + "type": "wm", + "key": "│ ├", + "keyColor": "blue" + }, + { + "type": "de", + "key": " DE", + "keyColor": "blue" + }, + { + "type": "terminal", + "key": "│ ├", + "keyColor": "blue" + }, + { + "type": "packages", + "key": "│ ├󰏖", + "keyColor": "blue" + }, + { + "type": "wmtheme", + "key": "│ ├󰉼", + "keyColor": "blue" + }, + { + "type": "command", + "key": "│ ├󰸌", + "keyColor": "blue", + "text": "theme=$(omarchy-theme-current); echo -e \"$theme \\e[38m●\\e[37m●\\e[36m●\\e[35m●\\e[34m●\\e[33m●\\e[32m●\\e[31m●\"" + }, + { + "type": "terminalfont", + "key": "└ └", + "keyColor": "blue" + }, + { + "type": "custom", + "format": "\u001b[90m└────────────────────────────────────────────────────┘" + }, + "break", + { + "type": "custom", + "format": "\u001b[90m┌────────────────Age / Uptime / Update───────────────┐" + }, + { + "type": "command", + "key": "󱦟 OS Age", + "keyColor": "magenta", + "text": "echo $(( ($(date +%s) - $(stat -c %W /)) / 86400 )) days" + }, + { + "type": "uptime", + "key": "󱫐 Uptime", + "keyColor": "magenta" + }, + { + "type": "command", + "key": " Update", + "keyColor": "magenta", + "text": "updated=$(omarchy-version-pkgs); echo \"$updated\"" + }, + { + "type": "custom", + "format": "\u001b[90m└────────────────────────────────────────────────────┘" + }, + "break" + ] +} diff --git a/install.sh b/install.sh index f4e06ff..124f28c 100755 --- a/install.sh +++ b/install.sh @@ -208,6 +208,7 @@ check_file "$SCRIPT_DIR/omarchy/plugins/blob.menu/Menu.qml" "$HOME_DIR/.config/o check_file "$SCRIPT_DIR/omarchy/plugins/blob.bar/Bar.qml" "$HOME_DIR/.config/omarchy/plugins/blob.bar/Bar.qml" "omarchy/plugins/blob.bar" || check_status=1 check_file "$SCRIPT_DIR/omarchy/plugins/blob.lock/LockView.qml" "$HOME_DIR/.config/omarchy/plugins/blob.lock/LockView.qml" "omarchy/plugins/blob.lock" || check_status=1 check_file "$SCRIPT_DIR/omarchy/hooks/theme-set" "$HOME_DIR/.config/omarchy/hooks/theme-set" "omarchy/hooks/theme-set" || check_status=1 +check_file "$SCRIPT_DIR/fastfetch/config.jsonc" "$HOME_DIR/.config/fastfetch/config.jsonc" "fastfetch/config.jsonc" || check_status=1 check_file "$SCRIPT_DIR/omarchy/themed/zen.css.tpl" "$HOME_DIR/.config/omarchy/themed/zen.css.tpl" "omarchy/themed/zen.css.tpl" || check_status=1 check_file "$SCRIPT_DIR/ags/app.ts" "$HOME_DIR/.config/ags/app.ts" "ags/app.ts" || check_status=1 check_file "$SCRIPT_DIR/ags/style.css" "$HOME_DIR/.config/ags/style.css" "ags/style.css" || check_status=1 @@ -269,6 +270,7 @@ backup_and_copy "$SCRIPT_DIR/ags" "$HOME_DIR/.config/ags" "AGS config" backup_and_copy "$SCRIPT_DIR/hypr" "$HOME_DIR/.config/hypr" "Hyprland config" backup_and_copy "$SCRIPT_DIR/branding" "$HOME_DIR/.config/omarchy/branding" "Branding files" backup_and_copy "$SCRIPT_DIR/omarchy/hooks" "$HOME_DIR/.config/omarchy/hooks" "Omarchy hooks" +backup_and_copy "$SCRIPT_DIR/fastfetch" "$HOME_DIR/.config/fastfetch" "Fastfetch config" backup_and_copy "$SCRIPT_DIR/omarchy/themed" "$HOME_DIR/.config/omarchy/themed" "Omarchy custom templates" backup_and_copy "$SCRIPT_DIR/omarchy/extensions" "$HOME_DIR/.config/omarchy/extensions" "Omarchy menu extensions" backup_and_copy "$SCRIPT_DIR/omarchy/plugins" "$HOME_DIR/.config/omarchy/plugins" "Omarchy shell plugins" diff --git a/omarchy/hooks/theme-set b/omarchy/hooks/theme-set index 6d3d978..c0a0de0 100755 --- a/omarchy/hooks/theme-set +++ b/omarchy/hooks/theme-set @@ -14,6 +14,25 @@ else awk -F '=' 'NF==2 { gsub(/"/,"",$2); gsub(/ /,"",$1); gsub(/ /,"",$2); print $1 "\t" $2 }' "$COLORS_FILE" fi | awk -F '\t' '$2 ~ /^#/ { print "@define-color " $1 " " $2 ";" }' > "$AGS_COLORS_FILE" +ICON_SOURCE="$HOME/.config/omarchy/branding/blob_icon.svg" +ICON_RENDER_DIR="$HOME/.local/state/omarchy/branding" +ICON_RENDER="$ICON_RENDER_DIR/blob_icon.png" + +theme_color() { + awk -F '=' -v key="$1" '$1 ~ "^[ \t]*" key "[ \t]*$" { gsub(/["[:space:]]/,"",$2); print $2; exit }' "$COLORS_FILE" +} + +if [ -f "$ICON_SOURCE" ] && command -v magick &> /dev/null; then + icon_foreground=$(theme_color foreground) + icon_background=$(theme_color background) + [ -n "$icon_foreground" ] || icon_foreground="#ffffff" + [ -n "$icon_background" ] || icon_background="#000000" + + mkdir -p "$ICON_RENDER_DIR" + sed "s/fill=\"#000000\"/fill=\"$icon_foreground\"/" "$ICON_SOURCE" \ + | magick -background none svg:- -resize 480x480 -background "$icon_background" -flatten "$ICON_RENDER" +fi + if command -v ags &> /dev/null; then ags quit >/dev/null 2>&1 || true sleep 0.5