mirror of
https://github.com/arthur-pbty/arthur-os.git
synced 2026-08-01 20:28:16 +02:00
Use lmstudio-bin in the AI install menu so installs and reinstalls stay on the current LM Studio package stream instead of reverting to legacy lmstudio.
637 lines
23 KiB
Bash
Executable File
637 lines
23 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Launch the Omarchy Menu or takes a parameter to jump straight to a submenu.
|
|
|
|
export PATH="$HOME/.local/share/omarchy/bin:$PATH"
|
|
|
|
# Set to true when going directly to a submenu, so we can exit directly
|
|
BACK_TO_EXIT=false
|
|
|
|
back_to() {
|
|
local parent_menu="$1"
|
|
|
|
if [[ $BACK_TO_EXIT == "true" ]]; then
|
|
exit 0
|
|
elif [[ -n $parent_menu ]]; then
|
|
"$parent_menu"
|
|
else
|
|
show_main_menu
|
|
fi
|
|
}
|
|
|
|
toggle_existing_menu() {
|
|
if pgrep -f "walker.*--dmenu" > /dev/null; then
|
|
walker --close > /dev/null 2>&1
|
|
exit 0
|
|
fi
|
|
}
|
|
|
|
menu() {
|
|
local prompt="$1"
|
|
local options="$2"
|
|
local extra="$3"
|
|
local preselect="$4"
|
|
|
|
read -r -a args <<<"$extra"
|
|
|
|
if [[ -n $preselect ]]; then
|
|
local index
|
|
index=$(echo -e "$options" | grep -nxF "$preselect" | cut -d: -f1)
|
|
if [[ -n $index ]]; then
|
|
args+=("-c" "$index")
|
|
fi
|
|
fi
|
|
|
|
echo -e "$options" | omarchy-launch-walker --dmenu --width 295 --minheight 1 --maxheight 630 -p "$prompt…" "${args[@]}" 2>/dev/null
|
|
}
|
|
|
|
terminal() {
|
|
xdg-terminal-exec --app-id=org.omarchy.terminal "$@"
|
|
}
|
|
|
|
present_terminal() {
|
|
omarchy-launch-floating-terminal-with-presentation $1
|
|
}
|
|
|
|
open_in_editor() {
|
|
notify-send "Editing config file" "$1"
|
|
omarchy-launch-editor "$1"
|
|
}
|
|
|
|
install() {
|
|
present_terminal "echo 'Installing $1...'; omarchy-pkg-add $2"
|
|
}
|
|
|
|
install_and_launch() {
|
|
present_terminal "echo 'Installing $1...'; omarchy-pkg-add $2 && setsid gtk-launch $3"
|
|
}
|
|
|
|
install_font() {
|
|
present_terminal "echo 'Installing $1...'; omarchy-pkg-add $2 && sleep 2 && omarchy-font-set '$3'"
|
|
}
|
|
|
|
install_terminal() {
|
|
present_terminal "omarchy-install-terminal $1"
|
|
}
|
|
|
|
aur_install() {
|
|
present_terminal "echo 'Installing $1 from AUR...'; omarchy-pkg-aur-add $2"
|
|
}
|
|
|
|
aur_install_and_launch() {
|
|
present_terminal "echo 'Installing $1 from AUR...'; omarchy-pkg-aur-add $2 && setsid gtk-launch $3"
|
|
}
|
|
|
|
show_learn_menu() {
|
|
case $(menu "Learn" " Keybindings\n Omarchy\n Hyprland\n Arch\n Neovim\n Bash") in
|
|
*Keybindings*) omarchy-menu-keybindings ;;
|
|
*Omarchy*) omarchy-launch-webapp "https://learn.omacom.io/2/the-omarchy-manual" ;;
|
|
*Hyprland*) omarchy-launch-webapp "https://wiki.hypr.land/" ;;
|
|
*Arch*) omarchy-launch-webapp "https://wiki.archlinux.org/title/Main_page" ;;
|
|
*Bash*) omarchy-launch-webapp "https://devhints.io/bash" ;;
|
|
*Neovim*) omarchy-launch-webapp "https://www.lazyvim.org/keymaps" ;;
|
|
*) show_main_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_trigger_menu() {
|
|
case $(menu "Trigger" " Capture\n Share\n Toggle\n Hardware") in
|
|
*Capture*) show_capture_menu ;;
|
|
*Share*) show_share_menu ;;
|
|
*Toggle*) show_toggle_menu ;;
|
|
*Hardware*) show_hardware_menu ;;
|
|
*) show_main_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_capture_menu() {
|
|
case $(menu "Capture" " Screenshot\n Screenrecord\n Color") in
|
|
*Screenshot*) omarchy-cmd-screenshot ;;
|
|
*Screenrecord*) show_screenrecord_menu ;;
|
|
*Color*) pkill hyprpicker || hyprpicker -a ;;
|
|
*) back_to show_trigger_menu ;;
|
|
esac
|
|
}
|
|
|
|
get_webcam_list() {
|
|
v4l2-ctl --list-devices 2>/dev/null | while IFS= read -r line; do
|
|
if [[ $line != $'\t'* && -n $line ]]; then
|
|
local name="$line"
|
|
IFS= read -r device || break
|
|
device=$(echo "$device" | tr -d '\t' | head -1)
|
|
[[ -n $device ]] && echo "$device $name"
|
|
fi
|
|
done
|
|
}
|
|
|
|
show_webcam_select_menu() {
|
|
local devices=$(get_webcam_list)
|
|
local count=$(echo "$devices" | grep -c . 2>/dev/null || echo 0)
|
|
|
|
if [[ -z $devices ]] || ((count == 0)); then
|
|
notify-send "No webcam devices found" -u critical -t 3000
|
|
return 1
|
|
fi
|
|
|
|
if ((count == 1)); then
|
|
echo "$devices" | awk '{print $1}'
|
|
else
|
|
menu "Select Webcam" "$devices" | awk '{print $1}'
|
|
fi
|
|
}
|
|
|
|
show_screenrecord_menu() {
|
|
omarchy-cmd-screenrecord --stop-recording && exit 0
|
|
|
|
case $(menu "Screenrecord" " With no audio\n With desktop audio\n With desktop + microphone audio\n With desktop + microphone audio + webcam") in
|
|
*"With no audio") omarchy-cmd-screenrecord ;;
|
|
*"With desktop audio") omarchy-cmd-screenrecord --with-desktop-audio ;;
|
|
*"With desktop + microphone audio") omarchy-cmd-screenrecord --with-desktop-audio --with-microphone-audio ;;
|
|
*"With desktop + microphone audio + webcam")
|
|
local device=$(show_webcam_select_menu) || {
|
|
back_to show_capture_menu
|
|
return
|
|
}
|
|
omarchy-cmd-screenrecord --with-desktop-audio --with-microphone-audio --with-webcam --webcam-device="$device"
|
|
;;
|
|
*) back_to show_capture_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_share_menu() {
|
|
case $(menu "Share" " Clipboard\n File \n Folder") in
|
|
*Clipboard*) omarchy-cmd-share clipboard ;;
|
|
*File*) terminal bash -c "omarchy-cmd-share file" ;;
|
|
*Folder*) terminal bash -c "omarchy-cmd-share folder" ;;
|
|
*) back_to show_trigger_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_toggle_menu() {
|
|
case $(menu "Toggle" " Screensaver\n Nightlight\n Idle Lock\n Top Bar\n Workspace Layout\n Window Gaps\n 1-Window Ratio\n Display Scaling") in
|
|
|
|
*Screensaver*) omarchy-toggle-screensaver ;;
|
|
*Nightlight*) omarchy-toggle-nightlight ;;
|
|
*Idle*) omarchy-toggle-idle ;;
|
|
*Bar*) omarchy-toggle-waybar ;;
|
|
*Layout*) omarchy-hyprland-workspace-layout-toggle ;;
|
|
*Ratio*) omarchy-hyprland-window-single-square-aspect-toggle ;;
|
|
*Gaps*) omarchy-hyprland-window-gaps-toggle ;;
|
|
*Scaling*) omarchy-hyprland-monitor-scaling-cycle ;;
|
|
*) back_to show_trigger_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_hardware_menu() {
|
|
case $(menu "Toggle" " Hybrid GPU") in
|
|
*"Hybrid GPU"*) present_terminal omarchy-toggle-hybrid-gpu ;;
|
|
*) show_trigger_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_style_menu() {
|
|
case $(menu "Style" " Theme\n Font\n Background\n Hyprland\n Screensaver\n About") in
|
|
*Theme*) show_theme_menu ;;
|
|
*Font*) show_font_menu ;;
|
|
*Background*) show_background_menu ;;
|
|
*Hyprland*) open_in_editor ~/.config/hypr/looknfeel.conf ;;
|
|
*Screensaver*) open_in_editor ~/.config/omarchy/branding/screensaver.txt ;;
|
|
*About*) open_in_editor ~/.config/omarchy/branding/about.txt ;;
|
|
*) show_main_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_theme_menu() {
|
|
omarchy-launch-walker -m menus:omarchythemes --width 800 --minheight 400
|
|
}
|
|
|
|
show_background_menu() {
|
|
omarchy-launch-walker -m menus:omarchyBackgroundSelector --width 800 --minheight 400
|
|
}
|
|
|
|
show_font_menu() {
|
|
theme=$(menu "Font" "$(omarchy-font-list)" "--width 350" "$(omarchy-font-current)")
|
|
if [[ $theme == "CNCLD" || -z $theme ]]; then
|
|
back_to show_style_menu
|
|
else
|
|
omarchy-font-set "$theme"
|
|
fi
|
|
}
|
|
|
|
show_setup_menu() {
|
|
local options=" Audio\n Wifi\n Bluetooth\n Power Profile\n System Sleep\n Monitors"
|
|
[[ -f ~/.config/hypr/bindings.conf ]] && options="$options\n Keybindings"
|
|
[[ -f ~/.config/hypr/input.conf ]] && options="$options\n Input"
|
|
options="$options\n DNS\n Security\n Config"
|
|
|
|
case $(menu "Setup" "$options") in
|
|
*Audio*) omarchy-launch-audio ;;
|
|
*Wifi*) omarchy-launch-wifi ;;
|
|
*Bluetooth*) omarchy-launch-bluetooth ;;
|
|
*Power*) show_setup_power_menu ;;
|
|
*System*) show_setup_system_menu ;;
|
|
*Monitors*) open_in_editor ~/.config/hypr/monitors.conf ;;
|
|
*Keybindings*) open_in_editor ~/.config/hypr/bindings.conf ;;
|
|
*Input*) open_in_editor ~/.config/hypr/input.conf ;;
|
|
*DNS*) present_terminal omarchy-setup-dns ;;
|
|
*Security*) show_setup_security_menu ;;
|
|
*Config*) show_setup_config_menu ;;
|
|
*) show_main_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_setup_power_menu() {
|
|
profile=$(menu "Power Profile" "$(omarchy-powerprofiles-list)" "" "$(powerprofilesctl get)")
|
|
|
|
if [[ $profile == "CNCLD" || -z $profile ]]; then
|
|
back_to show_setup_menu
|
|
else
|
|
powerprofilesctl set "$profile"
|
|
fi
|
|
}
|
|
|
|
show_setup_security_menu() {
|
|
case $(menu "Setup" " Fingerprint\n Fido2") in
|
|
*Fingerprint*) present_terminal omarchy-setup-fingerprint ;;
|
|
*Fido2*) present_terminal omarchy-setup-fido2 ;;
|
|
*) show_setup_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_setup_config_menu() {
|
|
case $(menu "Setup" " Defaults\n Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n Swayosd\n Walker\n Waybar\n XCompose") in
|
|
*Defaults*) open_in_editor ~/.config/uwsm/default ;;
|
|
*Hyprland*) open_in_editor ~/.config/hypr/hyprland.conf ;;
|
|
*Hypridle*) open_in_editor ~/.config/hypr/hypridle.conf && omarchy-restart-hypridle ;;
|
|
*Hyprlock*) open_in_editor ~/.config/hypr/hyprlock.conf ;;
|
|
*Hyprsunset*) open_in_editor ~/.config/hypr/hyprsunset.conf && omarchy-restart-hyprsunset ;;
|
|
*Swayosd*) open_in_editor ~/.config/swayosd/config.toml && omarchy-restart-swayosd ;;
|
|
*Walker*) open_in_editor ~/.config/walker/config.toml && omarchy-restart-walker ;;
|
|
*Waybar*) open_in_editor ~/.config/waybar/config.jsonc && omarchy-restart-waybar ;;
|
|
*XCompose*) open_in_editor ~/.XCompose && omarchy-restart-xcompose ;;
|
|
*) show_setup_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_setup_system_menu() {
|
|
local options=""
|
|
|
|
if [[ -f ~/.local/state/omarchy/toggles/suspend-off ]]; then
|
|
options="$options Enable Suspend"
|
|
else
|
|
options="$options Disable Suspend"
|
|
fi
|
|
|
|
if omarchy-hibernation-available; then
|
|
options="$options\n Disable Hibernate"
|
|
else
|
|
options="$options\n Enable Hibernate"
|
|
fi
|
|
|
|
case $(menu "System" "$options") in
|
|
*Suspend*) omarchy-toggle-suspend ;;
|
|
*"Enable Hibernate"*) present_terminal omarchy-hibernation-setup ;;
|
|
*"Disable Hibernate"*) present_terminal omarchy-hibernation-remove ;;
|
|
*) show_setup_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_install_menu() {
|
|
case $(menu "Install" " Package\n AUR\n Web App\n TUI\n Service\n Style\n Development\n Editor\n Terminal\n AI\n Windows\n Gaming") in
|
|
*Package*) terminal omarchy-pkg-install ;;
|
|
*AUR*) terminal omarchy-pkg-aur-install ;;
|
|
*Web*) present_terminal omarchy-webapp-install ;;
|
|
*TUI*) present_terminal omarchy-tui-install ;;
|
|
*Service*) show_install_service_menu ;;
|
|
*Style*) show_install_style_menu ;;
|
|
*Development*) show_install_development_menu ;;
|
|
*Editor*) show_install_editor_menu ;;
|
|
*Terminal*) show_install_terminal_menu ;;
|
|
*AI*) show_install_ai_menu ;;
|
|
*Windows*) present_terminal "omarchy-windows-vm install" ;;
|
|
*Gaming*) show_install_gaming_menu ;;
|
|
*) show_main_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_install_service_menu() {
|
|
case $(menu "Install" " Dropbox\n Tailscale\n NordVPN [AUR]\n Bitwarden\n Chromium Account") in
|
|
*Dropbox*) present_terminal omarchy-install-dropbox ;;
|
|
*Tailscale*) present_terminal omarchy-install-tailscale ;;
|
|
*NordVPN*) present_terminal omarchy-install-nordvpn ;;
|
|
*Bitwarden*) install_and_launch "Bitwarden" "bitwarden bitwarden-cli" "bitwarden" ;;
|
|
*Chromium*) present_terminal omarchy-install-chromium-google-account ;;
|
|
*) show_install_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_install_editor_menu() {
|
|
case $(menu "Install" " VSCode\n Cursor\n Zed\n Sublime Text\n Helix\n Emacs") in
|
|
*VSCode*) present_terminal omarchy-install-vscode ;;
|
|
*Cursor*) install_and_launch "Cursor" "cursor-bin" "cursor" ;;
|
|
*Zed*) install_and_launch "Zed" "zed" "dev.zed.Zed" ;;
|
|
*Sublime*) install_and_launch "Sublime Text" "sublime-text-4" "sublime_text" ;;
|
|
*Helix*) install "Helix" "helix" ;;
|
|
*Emacs*) install "Emacs" "emacs-wayland" && systemctl --user enable --now emacs.service ;;
|
|
*) show_install_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_install_terminal_menu() {
|
|
case $(menu "Install" " Alacritty\n Ghostty\n Kitty") in
|
|
*Alacritty*) install_terminal "alacritty" ;;
|
|
*Ghostty*) install_terminal "ghostty" ;;
|
|
*Kitty*) install_terminal "kitty" ;;
|
|
*) show_install_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_install_ai_menu() {
|
|
ollama_pkg=$(
|
|
(command -v nvidia-smi &>/dev/null && echo ollama-cuda) ||
|
|
(command -v rocminfo &>/dev/null && echo ollama-rocm) ||
|
|
echo ollama
|
|
)
|
|
|
|
case $(menu "Install" " Dictation\n Claude Code\n Codex\n Gemini CLI\n Copilot CLI\n Cursor CLI\n LM Studio\n Ollama\n Crush") in
|
|
*Dictation*) present_terminal omarchy-voxtype-install ;;
|
|
*Claude*) install "Claude Code" "claude-code" ;;
|
|
*Codex*) install "Codex" "openai-codex" ;;
|
|
*Gemini*) install "Gemini CLI" "gemini-cli" ;;
|
|
*Copilot*) install "Copilot CLI" "github-copilot-cli" ;;
|
|
*Cursor*) install "Cursor CLI" "cursor-cli" ;;
|
|
*Studio*) install "LM Studio" "lmstudio-bin" ;;
|
|
*Ollama*) install "Ollama" $ollama_pkg ;;
|
|
*Crush*) install "Crush" "crush-bin" ;;
|
|
*) show_install_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_install_gaming_menu() {
|
|
case $(menu "Install" " Steam\n NVIDIA GeForce NOW\n RetroArch [AUR]\n Minecraft\n Xbox Controller [AUR]") in
|
|
*Steam*) present_terminal omarchy-install-steam ;;
|
|
*GeForce*) present_terminal omarchy-install-geforce-now ;;
|
|
*RetroArch*) aur_install_and_launch "RetroArch" "retroarch retroarch-assets libretro libretro-fbneo" "com.libretro.RetroArch.desktop" ;;
|
|
*Minecraft*) install_and_launch "Minecraft" "minecraft-launcher" "minecraft-launcher" ;;
|
|
*Xbox*) present_terminal omarchy-install-xbox-controllers ;;
|
|
*) show_install_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_install_style_menu() {
|
|
case $(menu "Install" " Theme\n Background\n Font") in
|
|
*Theme*) present_terminal omarchy-theme-install ;;
|
|
*Background*) omarchy-theme-bg-install ;;
|
|
*Font*) show_install_font_menu ;;
|
|
*) show_install_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_install_font_menu() {
|
|
case $(menu "Install" " Cascadia Mono\n Meslo LG Mono\n Fira Code\n Victor Code\n Bistream Vera Mono\n Iosevka" "--width 350") in
|
|
*Cascadia*) install_font "Cascadia Mono" "ttf-cascadia-mono-nerd" "CaskaydiaMono Nerd Font" ;;
|
|
*Meslo*) install_font "Meslo LG Mono" "ttf-meslo-nerd" "MesloLGL Nerd Font" ;;
|
|
*Fira*) install_font "Fira Code" "ttf-firacode-nerd" "FiraCode Nerd Font" ;;
|
|
*Victor*) install_font "Victor Code" "ttf-victor-mono-nerd" "VictorMono Nerd Font" ;;
|
|
*Bistream*) install_font "Bistream Vera Code" "ttf-bitstream-vera-mono-nerd" "BitstromWera Nerd Font" ;;
|
|
*Iosevka*) install_font "Iosevka" "ttf-iosevka-nerd" "Iosevka Nerd Font Mono" ;;
|
|
*) show_install_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_install_development_menu() {
|
|
case $(menu "Install" " Ruby on Rails\n Docker DB\n JavaScript\n Go\n PHP\n Python\n Elixir\n Zig\n Rust\n Java\n .NET\n OCaml\n Clojure\n Scala") in
|
|
*Rails*) present_terminal "omarchy-install-dev-env ruby" ;;
|
|
*Docker*) present_terminal omarchy-install-docker-dbs ;;
|
|
*JavaScript*) show_install_javascript_menu ;;
|
|
*Go*) present_terminal "omarchy-install-dev-env go" ;;
|
|
*PHP*) show_install_php_menu ;;
|
|
*Python*) present_terminal "omarchy-install-dev-env python" ;;
|
|
*Elixir*) show_install_elixir_menu ;;
|
|
*Zig*) present_terminal "omarchy-install-dev-env zig" ;;
|
|
*Rust*) present_terminal "omarchy-install-dev-env rust" ;;
|
|
*Java*) present_terminal "omarchy-install-dev-env java" ;;
|
|
*NET*) present_terminal "omarchy-install-dev-env dotnet" ;;
|
|
*OCaml*) present_terminal "omarchy-install-dev-env ocaml" ;;
|
|
*Clojure*) present_terminal "omarchy-install-dev-env clojure" ;;
|
|
*Scala*) present_terminal "omarchy-install-dev-env scala" ;;
|
|
*) show_install_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_install_javascript_menu() {
|
|
case $(menu "Install" " Node.js\n Bun\n Deno") in
|
|
*Node*) present_terminal "omarchy-install-dev-env node" ;;
|
|
*Bun*) present_terminal "omarchy-install-dev-env bun" ;;
|
|
*Deno*) present_terminal "omarchy-install-dev-env deno" ;;
|
|
*) show_install_development_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_install_php_menu() {
|
|
case $(menu "Install" " PHP\n Laravel\n Symfony") in
|
|
*PHP*) present_terminal "omarchy-install-dev-env php" ;;
|
|
*Laravel*) present_terminal "omarchy-install-dev-env laravel" ;;
|
|
*Symfony*) present_terminal "omarchy-install-dev-env symfony" ;;
|
|
*) show_install_development_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_install_elixir_menu() {
|
|
case $(menu "Install" " Elixir\n Phoenix") in
|
|
*Elixir*) present_terminal "omarchy-install-dev-env elixir" ;;
|
|
*Phoenix*) present_terminal "omarchy-install-dev-env phoenix" ;;
|
|
*) show_install_development_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_remove_menu() {
|
|
case $(menu "Remove" " Package\n Web App\n TUI\n Development\n Preinstalls\n Dictation\n Theme\n Windows\n Fingerprint\n Fido2") in
|
|
*Package*) terminal omarchy-pkg-remove ;;
|
|
*Web*) present_terminal omarchy-webapp-remove ;;
|
|
*TUI*) present_terminal omarchy-tui-remove ;;
|
|
*Development*) show_remove_development_menu ;;
|
|
*Preinstalls*) present_terminal omarchy-remove-preinstalls ;;
|
|
*Dictation*) present_terminal omarchy-voxtype-remove ;;
|
|
*Theme*) present_terminal omarchy-theme-remove ;;
|
|
*Windows*) present_terminal "omarchy-windows-vm remove" ;;
|
|
*Fingerprint*) present_terminal "omarchy-setup-fingerprint --remove" ;;
|
|
*Fido2*) present_terminal "omarchy-setup-fido2 --remove" ;;
|
|
*) show_main_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_remove_development_menu() {
|
|
case $(menu "Remove" " Ruby on Rails\n JavaScript\n Go\n PHP\n Python\n Elixir\n Zig\n Rust\n Java\n .NET\n OCaml\n Clojure\n Scala") in
|
|
*Rails*) present_terminal "omarchy-remove-dev-env ruby" ;;
|
|
*JavaScript*) show_remove_javascript_menu ;;
|
|
*Go*) present_terminal "omarchy-remove-dev-env go" ;;
|
|
*PHP*) show_remove_php_menu ;;
|
|
*Python*) present_terminal "omarchy-remove-dev-env python" ;;
|
|
*Elixir*) show_remove_elixir_menu ;;
|
|
*Zig*) present_terminal "omarchy-remove-dev-env zig" ;;
|
|
*Rust*) present_terminal "omarchy-remove-dev-env rust" ;;
|
|
*Java*) present_terminal "omarchy-remove-dev-env java" ;;
|
|
*NET*) present_terminal "omarchy-remove-dev-env dotnet" ;;
|
|
*OCaml*) present_terminal "omarchy-remove-dev-env ocaml" ;;
|
|
*Clojure*) present_terminal "omarchy-remove-dev-env clojure" ;;
|
|
*Scala*) present_terminal "omarchy-remove-dev-env scala" ;;
|
|
*) show_remove_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_remove_javascript_menu() {
|
|
case $(menu "Remove" " Node.js\n Bun\n Deno") in
|
|
*Node*) present_terminal "omarchy-remove-dev-env node" ;;
|
|
*Bun*) present_terminal "omarchy-remove-dev-env bun" ;;
|
|
*Deno*) present_terminal "omarchy-remove-dev-env deno" ;;
|
|
*) show_remove_development_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_remove_php_menu() {
|
|
case $(menu "Remove" " PHP\n Laravel\n Symfony") in
|
|
*PHP*) present_terminal "omarchy-remove-dev-env php" ;;
|
|
*Laravel*) present_terminal "omarchy-remove-dev-env laravel" ;;
|
|
*Symfony*) present_terminal "omarchy-remove-dev-env symfony" ;;
|
|
*) show_remove_development_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_remove_elixir_menu() {
|
|
case $(menu "Remove" " Elixir\n Phoenix") in
|
|
*Elixir*) present_terminal "omarchy-remove-dev-env elixir" ;;
|
|
*Phoenix*) present_terminal "omarchy-remove-dev-env phoenix" ;;
|
|
*) show_remove_development_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_update_menu() {
|
|
case $(menu "Update" " Omarchy\n Channel\n Config\n Extra Themes\n Process\n Hardware\n Firmware\n Password\n Timezone\n Time") in
|
|
*Omarchy*) present_terminal omarchy-update ;;
|
|
*Channel*) show_update_channel_menu ;;
|
|
*Config*) show_update_config_menu ;;
|
|
*Themes*) present_terminal omarchy-theme-update ;;
|
|
*Process*) show_update_process_menu ;;
|
|
*Hardware*) show_update_hardware_menu ;;
|
|
*Firmware*) present_terminal omarchy-update-firmware ;;
|
|
*Timezone*) present_terminal omarchy-tz-select ;;
|
|
*Time*) present_terminal omarchy-update-time ;;
|
|
*Password*) show_update_password_menu ;;
|
|
*) show_main_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_update_channel_menu() {
|
|
case $(menu "Update channel" "🟢 Stable\n🟡 RC\n🟠 Edge\n🔴 Dev") in
|
|
*Stable*) present_terminal "omarchy-channel-set stable" ;;
|
|
*RC*) present_terminal "omarchy-channel-set rc" ;;
|
|
*Edge*) present_terminal "omarchy-channel-set edge" ;;
|
|
*Dev*) present_terminal "omarchy-channel-set dev" ;;
|
|
*) show_update_menu ;;
|
|
esac
|
|
}
|
|
show_update_process_menu() {
|
|
case $(menu "Restart" " Hypridle\n Hyprsunset\n Swayosd\n Walker\n Waybar") in
|
|
*Hypridle*) omarchy-restart-hypridle ;;
|
|
*Hyprsunset*) omarchy-restart-hyprsunset ;;
|
|
*Swayosd*) omarchy-restart-swayosd ;;
|
|
*Walker*) omarchy-restart-walker ;;
|
|
*Waybar*) omarchy-restart-waybar ;;
|
|
*) show_update_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_update_config_menu() {
|
|
case $(menu "Use default config" " Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n Plymouth\n Swayosd\n Tmux\n Walker\n Waybar") in
|
|
*Hyprland*) present_terminal omarchy-refresh-hyprland ;;
|
|
*Hypridle*) present_terminal omarchy-refresh-hypridle ;;
|
|
*Hyprlock*) present_terminal omarchy-refresh-hyprlock ;;
|
|
*Hyprsunset*) present_terminal omarchy-refresh-hyprsunset ;;
|
|
*Plymouth*) present_terminal omarchy-refresh-plymouth ;;
|
|
*Swayosd*) present_terminal omarchy-refresh-swayosd ;;
|
|
*Tmux*) present_terminal omarchy-refresh-tmux ;;
|
|
*Walker*) present_terminal omarchy-refresh-walker ;;
|
|
*Waybar*) present_terminal omarchy-refresh-waybar ;;
|
|
*) show_update_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_update_hardware_menu() {
|
|
case $(menu "Restart" " Audio\n Wi-Fi\n Bluetooth") in
|
|
*Audio*) present_terminal omarchy-restart-pipewire ;;
|
|
*Wi-Fi*) present_terminal omarchy-restart-wifi ;;
|
|
*Bluetooth*) present_terminal omarchy-restart-bluetooth ;;
|
|
*) show_update_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_update_password_menu() {
|
|
case $(menu "Update Password" " Drive Encryption\n User") in
|
|
*Drive*) present_terminal omarchy-drive-set-password ;;
|
|
*User*) present_terminal passwd ;;
|
|
*) show_update_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_about() {
|
|
omarchy-launch-about
|
|
}
|
|
|
|
show_system_menu() {
|
|
local options=" Screensaver\n Lock"
|
|
[[ ! -f ~/.local/state/omarchy/toggles/suspend-off ]] && options="$options\n Suspend"
|
|
omarchy-hibernation-available && options="$options\n Hibernate"
|
|
options="$options\n Logout\n Restart\n Shutdown"
|
|
|
|
case $(menu "System" "$options") in
|
|
*Screensaver*) omarchy-launch-screensaver force ;;
|
|
*Lock*) omarchy-lock-screen ;;
|
|
*Suspend*) systemctl suspend ;;
|
|
*Hibernate*) systemctl hibernate ;;
|
|
*Logout*) omarchy-system-logout ;;
|
|
*Restart*) omarchy-system-reboot ;;
|
|
*Shutdown*) omarchy-system-shutdown ;;
|
|
*) back_to show_main_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_main_menu() {
|
|
go_to_menu "$(menu "Go" " Apps\n Learn\n Trigger\n Style\n Setup\n Install\n Remove\n Update\n About\n System")"
|
|
}
|
|
|
|
go_to_menu() {
|
|
case "${1,,}" in
|
|
*apps*) walker -p "Launch…" ;;
|
|
*learn*) show_learn_menu ;;
|
|
*trigger*) show_trigger_menu ;;
|
|
*toggle*) show_toggle_menu ;;
|
|
*share*) show_share_menu ;;
|
|
*background*) show_background_menu ;;
|
|
*capture*) show_capture_menu ;;
|
|
*style*) show_style_menu ;;
|
|
*theme*) show_theme_menu ;;
|
|
*screenrecord*) show_screenrecord_menu ;;
|
|
*setup*) show_setup_menu ;;
|
|
*power*) show_setup_power_menu ;;
|
|
*install*) show_install_menu ;;
|
|
*remove*) show_remove_menu ;;
|
|
*update*) show_update_menu ;;
|
|
*about*) show_about ;;
|
|
*system*) show_system_menu ;;
|
|
esac
|
|
}
|
|
|
|
# Allow user extensions and overrides
|
|
USER_EXTENSIONS="$HOME/.config/omarchy/extensions/menu.sh"
|
|
[[ -f $USER_EXTENSIONS ]] && source "$USER_EXTENSIONS"
|
|
|
|
toggle_existing_menu
|
|
|
|
if [[ -n $1 ]]; then
|
|
BACK_TO_EXIT=true
|
|
go_to_menu "$1"
|
|
else
|
|
show_main_menu
|
|
fi
|