
Wifi can sometimes get turned off by computers when running on low power or in some sleep modes
368 lines
13 KiB
Bash
Executable File
368 lines
13 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
export PATH="$HOME/.local/share/omarchy/bin:$PATH"
|
|
|
|
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+=("-a" "$index")
|
|
fi
|
|
fi
|
|
|
|
echo -e "$options" | walker --dmenu --theme dmenu_250 -p "$prompt…" "${args[@]}"
|
|
}
|
|
|
|
terminal() {
|
|
alacritty --class Omarchy -e $1
|
|
}
|
|
|
|
present_terminal() {
|
|
alacritty --class Omarchy -e bash -c "omarchy-show-logo; eval \"$1\"; omarchy-show-done;"
|
|
}
|
|
|
|
edit_in_nvim() {
|
|
notify-send "Editing config file" "$1"
|
|
alacritty -e nvim "$1"
|
|
}
|
|
|
|
open_web() {
|
|
setsid chromium --new-window --app="$1" &
|
|
}
|
|
|
|
install() {
|
|
present_terminal "echo 'Installing $1...'; yay -Sy --noconfirm $2"
|
|
}
|
|
|
|
install_and_launch() {
|
|
present_terminal "echo 'Installing $1...'; yay -Sy --noconfirm $2 && setsid gtk-launch $3"
|
|
}
|
|
|
|
install_font() {
|
|
present_terminal "echo 'Installing $1...'; yay -Sy --noconfirm --needed $2 && sleep 2 && omarchy-font-set '$3'"
|
|
}
|
|
|
|
show_learn_menu() {
|
|
case $(menu "Learn" " Keybindings\n Omarchy\n Hyprland\n Arch\n Neovim\n Bash") in
|
|
*Keybindings*) omarchy-menu-keybindings ;;
|
|
*Omarchy*) open_web "https://manuals.omamix.org/2/the-omarchy-manual" ;;
|
|
*Hyprland*) open_web "https://wiki.hypr.land/" ;;
|
|
*Arch*) open_web "https://wiki.archlinux.org/title/Main_page" ;;
|
|
*Bash*) open_web "https://devhints.io/bash" ;;
|
|
*Neovim*) open_web "https://www.lazyvim.org/keymaps" ;;
|
|
*) show_main_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_style_menu() {
|
|
case $(menu "Style" " Theme\n Font\n Background") in
|
|
*Theme*) show_theme_menu ;;
|
|
*Font*) show_font_menu ;;
|
|
*Background*) omarchy-theme-bg-next ;;
|
|
*) show_main_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_theme_menu() {
|
|
theme=$(menu "Theme" "$(omarchy-theme-list)" "" "$(omarchy-theme-current)")
|
|
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
|
|
show_main_menu
|
|
else
|
|
omarchy-theme-set "$theme"
|
|
fi
|
|
}
|
|
|
|
show_font_menu() {
|
|
theme=$(menu "Font" "$(omarchy-font-list)" "-w 350" "$(omarchy-font-current)")
|
|
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
|
|
show_main_menu
|
|
else
|
|
omarchy-font-set "$theme"
|
|
fi
|
|
}
|
|
|
|
show_capture_menu() {
|
|
case $(menu "Capture" " Screenshot\n Screenrecord\n Color") in
|
|
*Screenshot*) show_screenshot_menu ;;
|
|
*Screenrecord*) show_screenrecord_menu ;;
|
|
*Color*) pkill hyprpicker || hyprpicker -a ;;
|
|
*) show_main_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_screenshot_menu() {
|
|
case $(menu "Screenshot" " Region\n Window\n Display") in
|
|
*Region*) omarchy-cmd-screenshot ;;
|
|
*Window*) omarchy-cmd-screenshot window ;;
|
|
*Display*) omarchy-cmd-screenshot output ;;
|
|
*) show_capture_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_screenrecord_menu() {
|
|
case $(menu "Screenrecord" " Region\n Display") in
|
|
*Region*) omarchy-cmd-screenrecord ;;
|
|
*Display*) omarchy-cmd-screenrecord output ;;
|
|
*) show_capture_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_toggle_menu() {
|
|
case $(menu "Toggle" " Screensaver\n Nightlight\n Idle Lock\n Top Bar") in
|
|
*Screensaver*) omarchy-launch-screensaver ;;
|
|
*Nightlight*) omarchy-toggle-nightlight ;;
|
|
*Idle*) omarchy-toggle-idle ;;
|
|
*Bar*) pkill -SIGUSR1 waybar ;;
|
|
*) show_main_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_setup_menu() {
|
|
local options=" Audio\n Wifi\n Bluetooth\n Power Profile\n Monitors"
|
|
[ -f ~/.config/hypr/bindings.conf ] && options="$options\n Keybindings"
|
|
[ -f ~/.config/hypr/input.conf ] && options="$options\n Input"
|
|
options="$options\n Config\n Fingerprint\n Fido2"
|
|
|
|
case $(menu "Setup" "$options") in
|
|
*Audio*) alacritty --class=Wiremix -e wiremix ;;
|
|
*Wifi*) alacritty --class=Impala -e bash -c "rfkill unblock wifi; impala" ;;
|
|
*Bluetooth*) blueberry ;;
|
|
*Power*) show_setup_power_menu ;;
|
|
*Monitors*) edit_in_nvim ~/.config/hypr/monitors.conf ;;
|
|
*Keybindings*) edit_in_nvim ~/.config/hypr/bindings.conf ;;
|
|
*Input*) edit_in_nvim ~/.config/hypr/input.conf ;;
|
|
*Config*) show_setup_config_menu ;;
|
|
*Fingerprint*) present_terminal omarchy-setup-fingerprint ;;
|
|
*Fido2*) present_terminal omarchy-setup-fido2 ;;
|
|
*) show_main_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_setup_power_menu() {
|
|
profile=$(menu "Power Profile" "$(omarchy-powerprofiles-list)" "" "$(powerprofilesctl get)")
|
|
|
|
if [[ "$profile" == "CNCLD" || -z "$profile" ]]; then
|
|
show_main_menu
|
|
else
|
|
powerprofilesctl set "$profile"
|
|
fi
|
|
}
|
|
|
|
show_setup_config_menu() {
|
|
case $(menu "Setup" " Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n Swayosd\n Walker\n Waybar\n XCompose") in
|
|
*Hyprland*) edit_in_nvim ~/.config/hypr/hyprland.conf ;;
|
|
*Hypridle*) edit_in_nvim ~/.config/hypr/hypridle.conf && omarchy-restart-hypridle ;;
|
|
*Hyprlock*) edit_in_nvim ~/.config/hypr/hyprlock.conf ;;
|
|
*Hyprsunset*) edit_in_nvim ~/.config/hypr/hyprsunset.conf && omarchy-restart-hyprsunset ;;
|
|
*Swayosd*) edit_in_nvim ~/.config/swayosd/config.toml && omarchy-restart-swayosd ;;
|
|
*Walker*) edit_in_nvim ~/.config/walker/config.toml && omarchy-restart-walker ;;
|
|
*Waybar*) edit_in_nvim ~/.config/waybar/config.jsonc && omarchy-restart-waybar ;;
|
|
*XCompose*) edit_in_nvim ~/.XCompose && omarchy-restart-xcompose ;;
|
|
*) show_main_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_install_menu() {
|
|
case $(menu "Install" " Package\n Web App\n Service\n Style\n Development\n Editor\n AI\n Gaming") in
|
|
*Package*) terminal omarchy-pkg-install ;;
|
|
*Web*) present_terminal omarchy-webapp-install ;;
|
|
*Service*) show_install_service_menu ;;
|
|
*Style*) show_install_style_menu ;;
|
|
*Development*) show_install_development_menu ;;
|
|
*Editor*) show_install_editor_menu ;;
|
|
*AI*) show_install_ai_menu ;;
|
|
*Gaming*) show_install_gaming_menu ;;
|
|
*) show_main_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_install_service_menu() {
|
|
case $(menu "Install" " Dropbox\n Tailscale") in
|
|
*Dropbox*) present_terminal omarchy-install-dropbox ;;
|
|
*Tailscale*) present_terminal omarchy-install-tailscale ;;
|
|
*) show_install_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_install_editor_menu() {
|
|
case $(menu "Install" " VSCode\n Cursor\n Zed\n Sublime Text\n Helix") in
|
|
*VSCode*) install_and_launch "VSCode" "visual-studio-code-bin" "code" ;;
|
|
*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" ;;
|
|
*) show_install_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_install_ai_menu() {
|
|
case $(menu "Install" " Claude Code\n Gemini\n LM Studio\n Ollama\n Crush\n opencode") in
|
|
*Claude*) install "Claude Code" "claude-code" ;;
|
|
*Gemini*) install "Gemini" "gemini-cli-bin" ;;
|
|
*Studio*) install "LM Studio" "lmstudio" ;;
|
|
*Ollama*) install "Ollama" "ollama" ;;
|
|
*Crush*) install "Crush" "crush-bin" ;;
|
|
*opencode*) install "opencode" "opencode-bin" ;;
|
|
*) show_install_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_install_gaming_menu() {
|
|
case $(menu "Install" " Steam\n RetroArch\n Minecraft") in
|
|
*Steam*) present_terminal omarchy-install-steam ;;
|
|
*RetroArch*) install_and_launch "RetroArch" "retroarch retroarch-assets libretro libretro-fbneo" "com.libretro.RetroArch.desktop" ;;
|
|
*Minecraft*) install_and_launch "Minecraft" "minecraft-launcher" "minecraft-launcher" ;;
|
|
*) show_install_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_install_style_menu() {
|
|
case $(menu "Install" " Theme\n Background\n Font") in
|
|
*Theme*) present_terminal omarchy-theme-install ;;
|
|
*Background*) nautilus ~/.config/omarchy/current/theme/backgrounds ;;
|
|
*Font*) show_install_font_menu ;;
|
|
*) show_install_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_install_font_menu() {
|
|
case $(menu "Install" " Meslo LG Mono\n Fira Code\n Victor Code\n Bistream Vera Mono" "-w 350") in
|
|
*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" ;;
|
|
*) 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") 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*) present_terminal "omarchy-install-dev-env elixir" ;;
|
|
*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" ;;
|
|
*) 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_remove_menu() {
|
|
case $(menu "Remove" " Package\n Web App\n Theme\n Fingerprint\n Fido2") in
|
|
*Package*) terminal omarchy-pkg-remove ;;
|
|
*Web*) present_terminal omarchy-webapp-remove ;;
|
|
*Theme*) present_terminal omarchy-theme-remove ;;
|
|
*Fingerprint*) present_terminal "omarchy-setup-fingerprint --remove" ;;
|
|
*Fido2*) present_terminal "omarchy-setup-fido2 --remove" ;;
|
|
*) show_main_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_update_menu() {
|
|
case $(menu "Update" " Omarchy\n Config\n Themes\n Process\n Timezone") in
|
|
*Omarchy*) present_terminal omarchy-update ;;
|
|
*Config*) show_update_config_menu ;;
|
|
*Themes*) present_terminal omarchy-theme-update ;;
|
|
*Process*) show_update_process_menu ;;
|
|
*Timezone*) omarchy-cmd-tzupdate ;;
|
|
*) show_main_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_main_menu ;;
|
|
esac
|
|
}
|
|
|
|
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
|
|
*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 ;;
|
|
*Walker*) present_terminal omarchy-refresh-walker ;;
|
|
*Waybar*) present_terminal omarchy-refresh-waybar ;;
|
|
*) show_main_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_system_menu() {
|
|
case $(menu "System" " Lock\n Suspend\n Relaunch\n Restart\n Shutdown") in
|
|
*Lock*) omarchy-lock-screen ;;
|
|
*Suspend*) systemctl suspend ;;
|
|
*Relaunch*) uwsm stop ;;
|
|
*Restart*) systemctl reboot ;;
|
|
*Shutdown*) systemctl poweroff ;;
|
|
*) show_main_menu ;;
|
|
esac
|
|
}
|
|
|
|
show_main_menu() {
|
|
go_to_menu "$(menu "Go" " Apps\n Learn\n Capture\n Toggle\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 ;;
|
|
*style*) show_style_menu ;;
|
|
*theme*) show_theme_menu ;;
|
|
*capture*) show_capture_menu ;;
|
|
*screenshot*) show_screenshot_menu ;;
|
|
*screenrecord*) show_screenrecord_menu ;;
|
|
*toggle*) show_toggle_menu ;;
|
|
*setup*) show_setup_menu ;;
|
|
*install*) show_install_menu ;;
|
|
*remove*) show_remove_menu ;;
|
|
*update*) show_update_menu ;;
|
|
*system*) show_system_menu ;;
|
|
*about*) gtk-launch About.desktop ;;
|
|
esac
|
|
}
|
|
|
|
if [[ -n "$1" ]]; then
|
|
go_to_menu "$1"
|
|
else
|
|
show_main_menu
|
|
fi
|