diff --git a/bin/omarchy-plymouth-current b/bin/omarchy-plymouth-current new file mode 100755 index 00000000..6634d3e4 --- /dev/null +++ b/bin/omarchy-plymouth-current @@ -0,0 +1,26 @@ +#!/bin/bash + +# omarchy:summary=Show which theme is styling the Plymouth boot screen +# omarchy:examples=omarchy plymouth current + +# omarchy-plymouth-set installs the theme's unlock.png as a byte-for-byte +# copy of logo.png, so matching it back identifies the current theme. +installed_logo=/usr/share/plymouth/themes/omarchy/logo.png + +if cmp -s "$OMARCHY_PATH/default/plymouth/logo.png" "$installed_logo"; then + echo default + exit +fi + +omarchy-plymouth-list | while read -r name; do + if [[ -d ~/.config/omarchy/themes/$name ]]; then + theme_dir=~/.config/omarchy/themes/$name + else + theme_dir="$OMARCHY_PATH/themes/$name" + fi + + if cmp -s "$theme_dir/unlock.png" "$installed_logo"; then + echo "$name" + exit + fi +done diff --git a/bin/omarchy-plymouth-list b/bin/omarchy-plymouth-list new file mode 100755 index 00000000..9724d312 --- /dev/null +++ b/bin/omarchy-plymouth-list @@ -0,0 +1,19 @@ +#!/bin/bash + +# omarchy:summary=List themes that can style the Plymouth boot screen +# omarchy:examples=omarchy plymouth list + +{ + find ~/.config/omarchy/themes/ -mindepth 1 -maxdepth 1 \( -type d -o -type l \) -printf '%f\n' 2>/dev/null + find "$OMARCHY_PATH/themes/" -mindepth 1 -maxdepth 1 -type d -printf '%f\n' +} | sort -u | while read -r name; do + if [[ -d ~/.config/omarchy/themes/$name ]]; then + theme_dir=~/.config/omarchy/themes/$name + else + theme_dir="$OMARCHY_PATH/themes/$name" + fi + + if [[ -f $theme_dir/preview-unlock.png ]]; then + echo "$name" + fi +done diff --git a/bin/omarchy-plymouth-switcher b/bin/omarchy-plymouth-switcher new file mode 100755 index 00000000..f1a7bc8f --- /dev/null +++ b/bin/omarchy-plymouth-switcher @@ -0,0 +1,26 @@ +#!/bin/bash + +# omarchy:summary=Open the Plymouth unlock screen switcher + +preview_dir="${XDG_CACHE_HOME:-$HOME/.cache}/omarchy/unlock-selector/previews" + +rm -rf "$preview_dir" +mkdir -p "$preview_dir" + +ln -s "$OMARCHY_PATH/default/plymouth/preview-unlock.png" "$preview_dir/default.png" + +omarchy-plymouth-list | while read -r name; do + if [[ -d ~/.config/omarchy/themes/$name ]]; then + theme_dir=~/.config/omarchy/themes/$name + else + theme_dir="$OMARCHY_PATH/themes/$name" + fi + + ln -s "$theme_dir/preview-unlock.png" "$preview_dir/$name.png" 2>/dev/null +done + +current=$(omarchy-plymouth-current) +selected="" +[[ -n $current && -e $preview_dir/$current.png ]] && selected="$preview_dir/$current.png" + +exec omarchy-menu-images --print-name --show-labels --selected "$selected" "$preview_dir" diff --git a/default/omarchy/omarchy-menu.jsonc b/default/omarchy/omarchy-menu.jsonc index 05126ceb..c9335aa4 100644 --- a/default/omarchy/omarchy-menu.jsonc +++ b/default/omarchy/omarchy-menu.jsonc @@ -85,7 +85,8 @@ "trigger.toggle.one-window-ratio": {"icon":"","label":"1-Window Ratio","action":"omarchy-hyprland-window-single-square-aspect-toggle"}, // Style - "style.theme": {"icon":"󰸌","label":"Theme","aliases":["theme","themes"],"action":"theme=$(omarchy-theme-switcher); [[ -n $theme ]] && omarchy-theme-set \"$theme\""}, + "style.theme": {"icon":"󰸌","label":"Theme","aliases":["theme","themes"],"keywords":"colors","action":"theme=$(omarchy-theme-switcher); [[ -n $theme ]] && omarchy-theme-set \"$theme\""}, + "style.unlock": {"icon":"󰟵","label":"Unlock","aliases":["unlock"],"keywords":"plymouth boot screen","action":"unlock=$(omarchy-plymouth-switcher); if [[ $unlock == default ]]; then omarchy-launch-floating-terminal-with-presentation omarchy-plymouth-reset; elif [[ -n $unlock ]]; then omarchy-launch-floating-terminal-with-presentation \"omarchy-plymouth-set-by-theme '$unlock'\"; fi"}, "style.background": {"icon":"","label":"Background","aliases":["background","wallpaper"],"action":"background=$(omarchy-theme-bg-switcher); [[ -n $background ]] && omarchy-theme-bg-set \"$background\""}, "style.font": {"icon":"","label":"Font","provider":"fonts"}, "style.bar": {"icon":"󰍜","label":"Menu Bar"},