Add ~/.local/share/omarchy/bin to systemwide PATH (#602)

* Add omarchy to system path

* Remove unnecessary duplicate

* Remove path def since it's global now

* Migration for system-wide path

* Remove debug code

* Refresh after update

* Add common state script

* Restart on state detected

* Set state instead

* Export own path for menu
This commit is contained in:
Ryan Hughes 2025-08-10 19:58:44 +02:00 committed by GitHub
parent 94aa9b688f
commit b2eb1b08a4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 98 additions and 59 deletions

View File

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
OMARCHY_BIN_PATH=~/.local/share/omarchy/bin export PATH="$HOME/.local/share/omarchy/bin:$PATH"
menu() { menu() {
local prompt="$1" local prompt="$1"
@ -52,7 +52,7 @@ install_font() {
show_learn_menu() { show_learn_menu() {
case $(menu "Learn" " Keybindings\n Omarchy\n Hyprland\n󰣇 Arch\n Neovim\n󱆃 Bash") in case $(menu "Learn" " Keybindings\n Omarchy\n Hyprland\n󰣇 Arch\n Neovim\n󱆃 Bash") in
*Keybindings*) $OMARCHY_BIN_PATH/omarchy-menu-keybindings ;; *Keybindings*) omarchy-menu-keybindings ;;
*Omarchy*) open_web "https://manuals.omamix.org/2/the-omarchy-manual" ;; *Omarchy*) open_web "https://manuals.omamix.org/2/the-omarchy-manual" ;;
*Hyprland*) open_web "https://wiki.hypr.land/" ;; *Hyprland*) open_web "https://wiki.hypr.land/" ;;
*Arch*) open_web "https://wiki.archlinux.org/title/Main_page" ;; *Arch*) open_web "https://wiki.archlinux.org/title/Main_page" ;;
@ -66,26 +66,26 @@ show_style_menu() {
case $(menu "Style" "󰸌 Theme\n Font\n Background") in case $(menu "Style" "󰸌 Theme\n Font\n Background") in
*Theme*) show_theme_menu ;; *Theme*) show_theme_menu ;;
*Font*) show_font_menu ;; *Font*) show_font_menu ;;
*Background*) $OMARCHY_BIN_PATH/omarchy-theme-bg-next ;; *Background*) omarchy-theme-bg-next ;;
*) show_main_menu ;; *) show_main_menu ;;
esac esac
} }
show_theme_menu() { show_theme_menu() {
theme=$(menu "Theme" "$($OMARCHY_BIN_PATH/omarchy-theme-list)" "" "$($OMARCHY_BIN_PATH/omarchy-theme-current)") theme=$(menu "Theme" "$(omarchy-theme-list)" "" "$(omarchy-theme-current)")
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
show_main_menu show_main_menu
else else
$OMARCHY_BIN_PATH/omarchy-theme-set "$theme" omarchy-theme-set "$theme"
fi fi
} }
show_font_menu() { show_font_menu() {
theme=$(menu "Font" "$($OMARCHY_BIN_PATH/omarchy-font-list)" "-w 350" "$($OMARCHY_BIN_PATH/omarchy-font-current)") theme=$(menu "Font" "$(omarchy-font-list)" "-w 350" "$(omarchy-font-current)")
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
show_main_menu show_main_menu
else else
$OMARCHY_BIN_PATH/omarchy-font-set "$theme" omarchy-font-set "$theme"
fi fi
} }
@ -100,26 +100,26 @@ show_capture_menu() {
show_screenshot_menu() { show_screenshot_menu() {
case $(menu "Screenshot" " Region\n Window\n Display") in case $(menu "Screenshot" " Region\n Window\n Display") in
*Region*) $OMARCHY_BIN_PATH/omarchy-cmd-screenshot ;; *Region*) omarchy-cmd-screenshot ;;
*Window*) $OMARCHY_BIN_PATH/omarchy-cmd-screenshot window ;; *Window*) omarchy-cmd-screenshot window ;;
*Display*) $OMARCHY_BIN_PATH/omarchy-cmd-screenshot output ;; *Display*) omarchy-cmd-screenshot output ;;
*) show_capture_menu ;; *) show_capture_menu ;;
esac esac
} }
show_screenrecord_menu() { show_screenrecord_menu() {
case $(menu "Screenrecord" " Region\n Display") in case $(menu "Screenrecord" " Region\n Display") in
*Region*) $OMARCHY_BIN_PATH/omarchy-cmd-screenrecord ;; *Region*) omarchy-cmd-screenrecord ;;
*Display*) $OMARCHY_BIN_PATH/omarchy-cmd-screenrecord output ;; *Display*) omarchy-cmd-screenrecord output ;;
*) show_capture_menu ;; *) show_capture_menu ;;
esac esac
} }
show_toggle_menu() { show_toggle_menu() {
case $(menu "Toggle" "󱄄 Screensaver\n󰔎 Nightlight\n󱫖 Idle Lock\n󰍜 Top Bar") in case $(menu "Toggle" "󱄄 Screensaver\n󰔎 Nightlight\n󱫖 Idle Lock\n󰍜 Top Bar") in
*Screensaver*) $OMARCHY_BIN_PATH/omarchy-launch-screensaver ;; *Screensaver*) omarchy-launch-screensaver ;;
*Nightlight*) $OMARCHY_BIN_PATH/omarchy-toggle-nightlight ;; *Nightlight*) omarchy-toggle-nightlight ;;
*Idle*) $OMARCHY_BIN_PATH/omarchy-toggle-idle ;; *Idle*) omarchy-toggle-idle ;;
*Bar*) pkill -SIGUSR1 waybar ;; *Bar*) pkill -SIGUSR1 waybar ;;
*) show_main_menu ;; *) show_main_menu ;;
esac esac
@ -140,14 +140,14 @@ show_setup_menu() {
*Keybindings*) edit_in_nvim ~/.config/hypr/bindings.conf ;; *Keybindings*) edit_in_nvim ~/.config/hypr/bindings.conf ;;
*Input*) edit_in_nvim ~/.config/hypr/input.conf ;; *Input*) edit_in_nvim ~/.config/hypr/input.conf ;;
*Config*) show_setup_config_menu ;; *Config*) show_setup_config_menu ;;
*Fingerprint*) present_terminal $OMARCHY_BIN_PATH/omarchy-setup-fingerprint ;; *Fingerprint*) present_terminal omarchy-setup-fingerprint ;;
*Fido2*) present_terminal $OMARCHY_BIN_PATH/omarchy-setup-fido2 ;; *Fido2*) present_terminal omarchy-setup-fido2 ;;
*) show_main_menu ;; *) show_main_menu ;;
esac esac
} }
show_setup_power_menu() { show_setup_power_menu() {
profile=$(menu "Power Profile" "$($OMARCHY_BIN_PATH/omarchy-powerprofiles-list)" "" "$(powerprofilesctl get)") profile=$(menu "Power Profile" "$(omarchy-powerprofiles-list)" "" "$(powerprofilesctl get)")
if [[ "$profile" == "CNCLD" || -z "$profile" ]]; then if [[ "$profile" == "CNCLD" || -z "$profile" ]]; then
show_main_menu show_main_menu
@ -172,8 +172,8 @@ show_setup_config_menu() {
show_install_menu() { show_install_menu() {
case $(menu "Install" "󰣇 Package\n Web App\n Service\n Style\n󰵮 Development\n Editor\n󱚤 AI") in case $(menu "Install" "󰣇 Package\n Web App\n Service\n Style\n󰵮 Development\n Editor\n󱚤 AI") in
*Package*) terminal $OMARCHY_BIN_PATH/omarchy-pkg-install ;; *Package*) terminal omarchy-pkg-install ;;
*Web*) present_terminal $OMARCHY_BIN_PATH/omarchy-webapp-install ;; *Web*) present_terminal omarchy-webapp-install ;;
*Service*) show_install_service_menu ;; *Service*) show_install_service_menu ;;
*Style*) show_install_style_menu ;; *Style*) show_install_style_menu ;;
*Development*) show_install_development_menu ;; *Development*) show_install_development_menu ;;
@ -185,9 +185,9 @@ show_install_menu() {
show_install_service_menu() { show_install_service_menu() {
case $(menu "Install" " Dropbox\n Steam\n Tailscale") in case $(menu "Install" " Dropbox\n Steam\n Tailscale") in
*Dropbox*) present_terminal $OMARCHY_BIN_PATH/omarchy-install-dropbox ;; *Dropbox*) present_terminal omarchy-install-dropbox ;;
*Steam*) present_terminal $OMARCHY_BIN_PATH/omarchy-install-steam ;; *Steam*) present_terminal omarchy-install-steam ;;
*Tailscale*) present_terminal $OMARCHY_BIN_PATH/omarchy-install-tailscale ;; *Tailscale*) present_terminal omarchy-install-tailscale ;;
*) show_install_menu ;; *) show_install_menu ;;
esac esac
} }
@ -217,7 +217,7 @@ show_install_ai_menu() {
show_install_style_menu() { show_install_style_menu() {
case $(menu "Install" "󰸌 Theme\n Background\n Font") in case $(menu "Install" "󰸌 Theme\n Background\n Font") in
*Theme*) present_terminal $OMARCHY_BIN_PATH/omarchy-theme-install ;; *Theme*) present_terminal omarchy-theme-install ;;
*Background*) nautilus ~/.config/omarchy/current/theme/backgrounds ;; *Background*) nautilus ~/.config/omarchy/current/theme/backgrounds ;;
*Font*) show_install_font_menu ;; *Font*) show_install_font_menu ;;
*) show_install_menu ;; *) show_install_menu ;;
@ -236,71 +236,71 @@ show_install_font_menu() {
show_install_development_menu() { show_install_development_menu() {
case $(menu "Install" "󰫏 Ruby on Rails\n Docker DB\n Node.js\n Bun\n Go\n Laravel\n Python\n Elixir\n Rust\n Java\n Ocaml") in case $(menu "Install" "󰫏 Ruby on Rails\n Docker DB\n Node.js\n Bun\n Go\n Laravel\n Python\n Elixir\n Rust\n Java\n Ocaml") in
*Rails*) present_terminal "$OMARCHY_BIN_PATH/omarchy-install-dev-env ruby" ;; *Rails*) present_terminal "omarchy-install-dev-env ruby" ;;
*Docker*) present_terminal $OMARCHY_BIN_PATH/omarchy-install-docker-dbs ;; *Docker*) present_terminal omarchy-install-docker-dbs ;;
*Node*) present_terminal "$OMARCHY_BIN_PATH/omarchy-install-dev-env node" ;; *Node*) present_terminal "omarchy-install-dev-env node" ;;
*Bun*) present_terminal "$OMARCHY_BIN_PATH/omarchy-install-dev-env bun" ;; *Bun*) present_terminal "omarchy-install-dev-env bun" ;;
*Go*) present_terminal "$OMARCHY_BIN_PATH/omarchy-install-dev-env go" ;; *Go*) present_terminal "omarchy-install-dev-env go" ;;
*Laravel*) present_terminal "$OMARCHY_BIN_PATH/omarchy-install-dev-env laravel" ;; *Laravel*) present_terminal "omarchy-install-dev-env laravel" ;;
*Python*) present_terminal "$OMARCHY_BIN_PATH/omarchy-install-dev-env python" ;; *Python*) present_terminal "omarchy-install-dev-env python" ;;
*Elixir*) present_terminal "$OMARCHY_BIN_PATH/omarchy-install-dev-env elixir" ;; *Elixir*) present_terminal "omarchy-install-dev-env elixir" ;;
*Rust*) present_terminal "$OMARCHY_BIN_PATH/omarchy-install-dev-env rust" ;; *Rust*) present_terminal "omarchy-install-dev-env rust" ;;
*Java*) present_terminal "$OMARCHY_BIN_PATH/omarchy-install-dev-env java" ;; *Java*) present_terminal "omarchy-install-dev-env java" ;;
*Ocaml*) present_terminal "$OMARCHY_BIN_PATH/omarchy-install-dev-env ocaml" ;; *Ocaml*) present_terminal "omarchy-install-dev-env ocaml" ;;
*) show_install_menu ;; *) show_install_menu ;;
esac esac
} }
show_remove_menu() { show_remove_menu() {
case $(menu "Remove" "󰣇 Package\n Web App\n󰸌 Theme\n󰈷 Fingerprint\n Fido2") in case $(menu "Remove" "󰣇 Package\n Web App\n󰸌 Theme\n󰈷 Fingerprint\n Fido2") in
*Package*) terminal $OMARCHY_BIN_PATH/omarchy-pkg-remove ;; *Package*) terminal omarchy-pkg-remove ;;
*Web*) present_terminal $OMARCHY_BIN_PATH/omarchy-webapp-remove ;; *Web*) present_terminal omarchy-webapp-remove ;;
*Theme*) present_terminal $OMARCHY_BIN_PATH/omarchy-theme-remove ;; *Theme*) present_terminal omarchy-theme-remove ;;
*Fingerprint*) present_terminal "$OMARCHY_BIN_PATH/omarchy-setup-fingerprint --remove" ;; *Fingerprint*) present_terminal "omarchy-setup-fingerprint --remove" ;;
*Fido2*) present_terminal "$OMARCHY_BIN_PATH/omarchy-setup-fido2 --remove" ;; *Fido2*) present_terminal "omarchy-setup-fido2 --remove" ;;
*) show_main_menu ;; *) show_main_menu ;;
esac esac
} }
show_update_menu() { show_update_menu() {
case $(menu "Update" "󰣇 Omarchy\n Config\n Process\n󰸌 Themes\n Timezone") in case $(menu "Update" "󰣇 Omarchy\n Config\n Process\n󰸌 Themes\n Timezone") in
*Omarchy*) present_terminal $OMARCHY_BIN_PATH/omarchy-update ;; *Omarchy*) present_terminal omarchy-update ;;
*Config*) show_update_config_menu ;; *Config*) show_update_config_menu ;;
*Process*) show_update_process_menu ;; *Process*) show_update_process_menu ;;
*Themes*) present_terminal $OMARCHY_BIN_PATH/omarchy-theme-update ;; *Themes*) present_terminal omarchy-theme-update ;;
*Timezone*) $OMARCHY_BIN_PATH/omarchy-cmd-tzupdate ;; *Timezone*) omarchy-cmd-tzupdate ;;
*) show_main_menu ;; *) show_main_menu ;;
esac esac
} }
show_update_process_menu() { show_update_process_menu() {
case $(menu "Restart" " Hypridle\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar") in case $(menu "Restart" " Hypridle\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar") in
*Hypridle*) $OMARCHY_BIN_PATH/omarchy-restart-hypridle ;; *Hypridle*) omarchy-restart-hypridle ;;
*Hyprsunset*) $OMARCHY_BIN_PATH/omarchy-restart-hyprsunset ;; *Hyprsunset*) omarchy-restart-hyprsunset ;;
*Swayosd*) $OMARCHY_BIN_PATH/omarchy-restart-swayosd ;; *Swayosd*) omarchy-restart-swayosd ;;
*Walker*) $OMARCHY_BIN_PATH/omarchy-restart-walker ;; *Walker*) omarchy-restart-walker ;;
*Waybar*) $OMARCHY_BIN_PATH/omarchy-restart-waybar ;; *Waybar*) omarchy-restart-waybar ;;
*) show_main_menu ;; *) show_main_menu ;;
esac esac
} }
show_update_config_menu() { show_update_config_menu() {
case $(menu "Use default config" " Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n󱣴 Plymouth\n Swayosd\n󰌧 Walker\n󰍜 Waybar") in case $(menu "Use default config" " Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n󱣴 Plymouth\n Swayosd\n󰌧 Walker\n󰍜 Waybar") in
*Hyprland*) present_terminal $OMARCHY_BIN_PATH/omarchy-refresh-hyprland ;; *Hyprland*) present_terminal omarchy-refresh-hyprland ;;
*Hypridle*) present_terminal $OMARCHY_BIN_PATH/omarchy-refresh-hypridle ;; *Hypridle*) present_terminal omarchy-refresh-hypridle ;;
*Hyprlock*) present_terminal $OMARCHY_BIN_PATH/omarchy-refresh-hyprlock ;; *Hyprlock*) present_terminal omarchy-refresh-hyprlock ;;
*Hyprsunset*) present_terminal $OMARCHY_BIN_PATH/omarchy-refresh-hyprsunset ;; *Hyprsunset*) present_terminal omarchy-refresh-hyprsunset ;;
*Plymouth*) present_terminal $OMARCHY_BIN_PATH/omarchy-refresh-plymouth ;; *Plymouth*) present_terminal omarchy-refresh-plymouth ;;
*Swayosd*) present_terminal $OMARCHY_BIN_PATH/omarchy-refresh-swayosd ;; *Swayosd*) present_terminal omarchy-refresh-swayosd ;;
*Walker*) present_terminal $OMARCHY_BIN_PATH/omarchy-refresh-walker ;; *Walker*) present_terminal omarchy-refresh-walker ;;
*Waybar*) present_terminal $OMARCHY_BIN_PATH/omarchy-refresh-waybar ;; *Waybar*) present_terminal omarchy-refresh-waybar ;;
*) show_main_menu ;; *) show_main_menu ;;
esac esac
} }
show_system_menu() { show_system_menu() {
case $(menu "System" " Lock\n󰤄 Suspend\n Relaunch\n󰜉 Restart\n󰐥 Shutdown") in case $(menu "System" " Lock\n󰤄 Suspend\n Relaunch\n󰜉 Restart\n󰐥 Shutdown") in
*Lock*) $OMARCHY_BIN_PATH/omarchy-lock-screen ;; *Lock*) omarchy-lock-screen ;;
*Suspend*) systemctl suspend ;; *Suspend*) systemctl suspend ;;
*Relaunch*) uwsm stop ;; *Relaunch*) uwsm stop ;;
*Restart*) systemctl reboot ;; *Restart*) systemctl reboot ;;

29
bin/omarchy-state Executable file
View File

@ -0,0 +1,29 @@
#!/bin/bash
STATE_DIR="$HOME/.local/state/omarchy"
mkdir -p "$STATE_DIR"
COMMAND="$1"
STATE_NAME="$2"
case "$COMMAND" in
set)
if [[ -z "$STATE_NAME" ]]; then
echo "Usage: omarchy-state set <state-name>" >&2
exit 1
fi
touch "$STATE_DIR/$STATE_NAME"
;;
clear)
if [[ -z "$STATE_NAME" ]]; then
echo "Usage: omarchy-state clear <state-name-or-pattern>" >&2
exit 1
fi
# Use find with -maxdepth 1 to match files in STATE_DIR
find "$STATE_DIR" -maxdepth 1 -type f -name "$STATE_NAME" -delete
;;
*)
echo "Usage: omarchy-state <set|clear> <state-name-or-pattern>" >&2
exit 1
;;
esac

View File

@ -18,5 +18,9 @@ yay -Syu --noconfirm
# Offer to reboot if the kernel has been changed # Offer to reboot if the kernel has been changed
if [ "$(uname -r | sed 's/-arch/\.arch/')" != "$(pacman -Q linux | awk '{print $2}')" ]; then if [ "$(uname -r | sed 's/-arch/\.arch/')" != "$(pacman -Q linux | awk '{print $2}')" ]; then
gum confirm "Linux kernel has been updated. Reboot?" && sudo reboot now gum confirm "Linux kernel has been updated. Reboot?" && omarchy-state clear re*-required && sudo reboot now
elif [ -f "$HOME/.local/state/omarchy/restart-required" ]; then
gum confirm "Some updates require a system restart to take effect. Would you like to restart now?" && omarchy-state clear re*-required && uwsm stop
elif [ -f "$HOME/.local/state/omarchy/relaunch-required" ]; then
gum confirm "Some updates require Hyprland to be relaunched to take effect. Would you like to relaunch Hyprland now?" && omarchy-state clear relaunch-required && uwsm stop
fi fi

1
config/uwsm/env Normal file
View File

@ -0,0 +1 @@
export PATH=$HOME/.local/share/omarchy/bin/:$PATH

View File

@ -10,7 +10,7 @@ if [[ ! -v BASH_COMPLETION_VERSINFO && -f /usr/share/bash-completion/bash_comple
fi fi
# Set complete path # Set complete path
export PATH="./bin:$HOME/.local/bin:$HOME/.local/share/omarchy/bin:$PATH" export PATH="./bin:$HOME/.local/bin:$PATH"
set +h set +h
# Omarchy path # Omarchy path

5
migrations/1754680295.sh Normal file
View File

@ -0,0 +1,5 @@
echo "Add UWSM env"
mkdir -p "$HOME/.config/uwsm/"
omarchy-refresh-config uwsm/env
omarchy-state set relaunch-required