Single namespace is fine
This commit is contained in:
+2
-1
@@ -322,7 +322,8 @@ show_screensaver_menu() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
show_theme_menu() {
|
show_theme_menu() {
|
||||||
omarchy-launch-walker -m menus:omarchythemes --width 800 --minheight 400
|
theme=$(omarchy-theme-switcher)
|
||||||
|
[[ -n $theme ]] && omarchy-theme-set "$theme"
|
||||||
}
|
}
|
||||||
|
|
||||||
show_background_menu() {
|
show_background_menu() {
|
||||||
|
|||||||
+3
-11
@@ -1,14 +1,11 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Open a generic image selector menu
|
# omarchy:summary=Open a generic image selector menu
|
||||||
# omarchy:group=menu
|
# omarchy:args=[--selected <image>] [--colors-file <path>] <image-dir>...
|
||||||
# omarchy:name=images
|
|
||||||
# omarchy:args=[--selected <image>] [--namespace <namespace>] [--colors-file <path>] <image-dir>...
|
|
||||||
|
|
||||||
OMARCHY_PATH=${OMARCHY_PATH:-$HOME/.local/share/omarchy}
|
OMARCHY_PATH=${OMARCHY_PATH:-$HOME/.local/share/omarchy}
|
||||||
|
|
||||||
selected_image=""
|
selected_image=""
|
||||||
namespace="omarchy-image-selector"
|
|
||||||
colors_file=""
|
colors_file=""
|
||||||
image_dirs=()
|
image_dirs=()
|
||||||
|
|
||||||
@@ -18,16 +15,12 @@ while [[ $# -gt 0 ]]; do
|
|||||||
selected_image="$2"
|
selected_image="$2"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
--namespace)
|
|
||||||
namespace="$2"
|
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
--colors-file)
|
--colors-file)
|
||||||
colors_file="$2"
|
colors_file="$2"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
--help|-h)
|
--help|-h)
|
||||||
echo "Usage: omarchy-menu-images [--selected <image>] [--namespace <namespace>] [--colors-file <path>] <image-dir>..."
|
echo "Usage: omarchy-menu-images [--selected <image>] [--colors-file <path>] <image-dir>..."
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@@ -38,7 +31,7 @@ while [[ $# -gt 0 ]]; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
if (( ${#image_dirs[@]} == 0 )); then
|
if (( ${#image_dirs[@]} == 0 )); then
|
||||||
echo "Usage: omarchy-menu-images [--selected <image>] [--namespace <namespace>] [--colors-file <path>] <image-dir>..." >&2
|
echo "Usage: omarchy-menu-images [--selected <image>] [--colors-file <path>] <image-dir>..." >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -85,7 +78,6 @@ done
|
|||||||
OMARCHY_IMAGE_SELECTOR_SELECTION_FILE=$selection_file \
|
OMARCHY_IMAGE_SELECTOR_SELECTION_FILE=$selection_file \
|
||||||
OMARCHY_IMAGE_SELECTOR_DIRS="$image_dirs_env" \
|
OMARCHY_IMAGE_SELECTOR_DIRS="$image_dirs_env" \
|
||||||
OMARCHY_IMAGE_SELECTOR_SELECTED="$selected_list_image" \
|
OMARCHY_IMAGE_SELECTOR_SELECTED="$selected_list_image" \
|
||||||
OMARCHY_IMAGE_SELECTOR_NAMESPACE="$namespace" \
|
|
||||||
OMARCHY_IMAGE_SELECTOR_COLORS_FILE="$colors_file" \
|
OMARCHY_IMAGE_SELECTOR_COLORS_FILE="$colors_file" \
|
||||||
quickshell -p "$OMARCHY_PATH/default/quickshell/wallpaper-switcher.qml" >/dev/null
|
quickshell -p "$OMARCHY_PATH/default/quickshell/wallpaper-switcher.qml" >/dev/null
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,5 @@ current_background=$(readlink -f "$HOME/.config/omarchy/current/background" 2>/d
|
|||||||
|
|
||||||
omarchy-menu-images \
|
omarchy-menu-images \
|
||||||
--selected "$current_background" \
|
--selected "$current_background" \
|
||||||
--namespace "omarchy-wallpaper-switcher" \
|
|
||||||
"$HOME/.config/omarchy/current/theme/backgrounds" \
|
"$HOME/.config/omarchy/current/theme/backgrounds" \
|
||||||
"$HOME/.config/omarchy/backgrounds/$theme_name"
|
"$HOME/.config/omarchy/backgrounds/$theme_name"
|
||||||
|
|||||||
Executable
+62
@@ -0,0 +1,62 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# omarchy:summary=Open the Omarchy theme switcher
|
||||||
|
|
||||||
|
OMARCHY_PATH=${OMARCHY_PATH:-$HOME/.local/share/omarchy}
|
||||||
|
USER_THEMES_PATH="$HOME/.config/omarchy/themes"
|
||||||
|
OMARCHY_THEMES_PATH="$OMARCHY_PATH/themes"
|
||||||
|
|
||||||
|
preview_dir=$(mktemp -d)
|
||||||
|
trap 'rm -rf "$preview_dir"' EXIT
|
||||||
|
|
||||||
|
find_preview() {
|
||||||
|
local theme_path="$1"
|
||||||
|
|
||||||
|
if [[ -f $theme_path/preview.png ]]; then
|
||||||
|
printf '%s\n' "$theme_path/preview.png"
|
||||||
|
elif [[ -f $theme_path/preview.jpg ]]; then
|
||||||
|
printf '%s\n' "$theme_path/preview.jpg"
|
||||||
|
elif [[ -d $theme_path/backgrounds ]]; then
|
||||||
|
find -L "$theme_path/backgrounds" -maxdepth 1 -type f \( -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' -o -iname '*.webp' \) -print -quit 2>/dev/null
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
add_theme_preview() {
|
||||||
|
local theme_name="$1"
|
||||||
|
local preview="$2"
|
||||||
|
local extension="${preview##*.}"
|
||||||
|
|
||||||
|
[[ -n $preview ]] || return
|
||||||
|
[[ -e $preview_dir/$theme_name.$extension ]] && return
|
||||||
|
|
||||||
|
ln -s "$preview" "$preview_dir/$theme_name.$extension"
|
||||||
|
}
|
||||||
|
|
||||||
|
while IFS= read -r theme_path; do
|
||||||
|
theme_name=${theme_path##*/}
|
||||||
|
preview=$(find_preview "$theme_path")
|
||||||
|
|
||||||
|
if [[ -z $preview ]]; then
|
||||||
|
preview=$(find_preview "$OMARCHY_THEMES_PATH/$theme_name")
|
||||||
|
fi
|
||||||
|
|
||||||
|
add_theme_preview "$theme_name" "$preview"
|
||||||
|
done < <(find -L "$USER_THEMES_PATH" -mindepth 1 -maxdepth 1 \( -type d -o -type l \) -print 2>/dev/null | sort)
|
||||||
|
|
||||||
|
while IFS= read -r theme_path; do
|
||||||
|
theme_name=${theme_path##*/}
|
||||||
|
preview=$(find_preview "$theme_path")
|
||||||
|
add_theme_preview "$theme_name" "$preview"
|
||||||
|
done < <(find -L "$OMARCHY_THEMES_PATH" -mindepth 1 -maxdepth 1 -type d -print 2>/dev/null | sort)
|
||||||
|
|
||||||
|
current_theme=$(cat "$HOME/.config/omarchy/current/theme.name" 2>/dev/null)
|
||||||
|
selected_preview=$(find -L "$preview_dir" -maxdepth 1 -type f -name "$current_theme.*" -print -quit 2>/dev/null)
|
||||||
|
selected_preview=$(omarchy-menu-images \
|
||||||
|
--selected "$selected_preview" \
|
||||||
|
"$preview_dir")
|
||||||
|
|
||||||
|
if [[ -n $selected_preview ]]; then
|
||||||
|
selected_theme=${selected_preview##*/}
|
||||||
|
selected_theme=${selected_theme%.*}
|
||||||
|
printf '%s\n' "$selected_theme"
|
||||||
|
fi
|
||||||
@@ -12,7 +12,6 @@ ShellRoot {
|
|||||||
property string selectionFile: Quickshell.env("OMARCHY_IMAGE_SELECTOR_SELECTION_FILE") || Quickshell.env("OMARCHY_WALLPAPER_SELECTION_FILE")
|
property string selectionFile: Quickshell.env("OMARCHY_IMAGE_SELECTOR_SELECTION_FILE") || Quickshell.env("OMARCHY_WALLPAPER_SELECTION_FILE")
|
||||||
property string selectedImage: Quickshell.env("OMARCHY_IMAGE_SELECTOR_SELECTED")
|
property string selectedImage: Quickshell.env("OMARCHY_IMAGE_SELECTOR_SELECTED")
|
||||||
property string colorsFile: Quickshell.env("OMARCHY_IMAGE_SELECTOR_COLORS_FILE") || (Quickshell.env("HOME") + "/.config/omarchy/current/theme/wallpaper-switcher-colors.json")
|
property string colorsFile: Quickshell.env("OMARCHY_IMAGE_SELECTOR_COLORS_FILE") || (Quickshell.env("HOME") + "/.config/omarchy/current/theme/wallpaper-switcher-colors.json")
|
||||||
property string layerNamespace: Quickshell.env("OMARCHY_IMAGE_SELECTOR_NAMESPACE") || "omarchy-image-selector"
|
|
||||||
property int selectedIndex: 0
|
property int selectedIndex: 0
|
||||||
property bool imagesLoaded: false
|
property bool imagesLoaded: false
|
||||||
property color accent: "#798186"
|
property color accent: "#798186"
|
||||||
@@ -134,7 +133,7 @@ ShellRoot {
|
|||||||
visible: root.imagesLoaded
|
visible: root.imagesLoaded
|
||||||
anchors { top: true; bottom: true; left: true; right: true }
|
anchors { top: true; bottom: true; left: true; right: true }
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
WlrLayershell.namespace: root.layerNamespace
|
WlrLayershell.namespace: "omarchy-image-selector"
|
||||||
WlrLayershell.layer: WlrLayer.Overlay
|
WlrLayershell.layer: WlrLayer.Overlay
|
||||||
WlrLayershell.keyboardFocus: WlrKeyboardFocus.Exclusive
|
WlrLayershell.keyboardFocus: WlrKeyboardFocus.Exclusive
|
||||||
exclusionMode: ExclusionMode.Ignore
|
exclusionMode: ExclusionMode.Ignore
|
||||||
|
|||||||
Reference in New Issue
Block a user