diff --git a/bin/omarchy-font-list b/bin/omarchy-font-list new file mode 100755 index 00000000..6bf504b6 --- /dev/null +++ b/bin/omarchy-font-list @@ -0,0 +1,3 @@ +#!/bin/bash + +fc-list :spacing=100 -f "%{family[0]}\n" | grep -v -i -E 'emoji|signwriting' | sort -u diff --git a/bin/omarchy-font-menu b/bin/omarchy-font-menu deleted file mode 100755 index ce25a10a..00000000 --- a/bin/omarchy-font-menu +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -~/.local/share/omarchy/bin/omarchy-show-logo - -font=$( - fc-list :spacing=100 -f "%{family[0]}\n" | - grep -v -i -E 'emoji|signwriting' | - sort -u | - gum choose --header "Choose terminal font" -) - -if [[ -n "$font" ]]; then - sed -i "s/family = \".*\"/family = \"$font\"/g" ~/.config/alacritty/alacritty.toml -fi - -~/.local/share/omarchy/bin/omarchy-show-done diff --git a/bin/omarchy-font-set b/bin/omarchy-font-set new file mode 100755 index 00000000..c34cb9ea --- /dev/null +++ b/bin/omarchy-font-set @@ -0,0 +1,23 @@ +#!/bin/bash + +font_name="$1" + +if [[ -n "$font_name" && "$font_name" != "CNCLD" ]]; then + if fc-list | grep -iq "$font_name"; then + sed -i "s/family = \".*\"/family = \"$font_name\"/g" ~/.config/alacritty/alacritty.toml + sed -i "s/font-family: .*/font-family: $font_name;/g" ~/.config/waybar/style.css + sed -i "s/font-family: .*/font-family: $font_name;/g" ~/.config/swayosd/style.css + xmlstarlet ed -L \ + -u '//match[@target="pattern"][test/string="monospace"]/edit[@name="family"]/string' \ + -v "$font_name" \ + ~/.config/fontconfig/fonts.conf + + ~/.local/share/omarchy/bin/omarchy-restart-waybar + ~/.local/share/omarchy/bin/omarchy-restart-swayosd + else + echo "Font '$font_name' not found." + exit 1 + fi +else + echo "Usage: omarchy-font-set " +fi diff --git a/bin/omarchy-menu b/bin/omarchy-menu index 5957bb95..fa6c5769 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -3,7 +3,7 @@ OMARCHY_BIN_PATH=~/.local/share/omarchy/bin menu() { - echo -e "$2" | walker --dmenu --theme dmenu_250 -p "$1…" + echo -e "$2" | walker --dmenu --theme dmenu_250 -p "$1…" $3 } terminal() { @@ -19,6 +19,14 @@ edit_in_nvim() { alacritty -e nvim "$1" } +install_and_launch() { + present_terminal "echo 'Installing $1...'; yay -Sy --noconfirm $2 && gtk-launch $3" +} + +install_font() { + present_terminal "echo 'Installing $1...'; yay -Sy --noconfirm --needed $2 && sleep 2 && ~/.local/share/omarchy/bin/omarchy-font-set '$3'" +} + show_learn_menu() { case $(menu "Learn" " Keybindings\n Omarchy\n Hyprland\n󰣇 Arch\n Neovim\n󱆃 Bash") in *Keybindings*) $OMARCHY_BIN_PATH/omarchy-menu-keybindings ;; @@ -34,7 +42,7 @@ show_learn_menu() { show_style_menu() { case $(menu "Style" "󰸌 Theme\n Font\n Background") in *Theme*) show_theme_menu ;; - *Font*) terminal $OMARCHY_BIN_PATH/omarchy-font-menu ;; + *Font*) show_font_menu ;; *Background*) $OMARCHY_BIN_PATH/omarchy-theme-bg-next ;; *) show_main_menu ;; esac @@ -49,6 +57,15 @@ show_theme_menu() { fi } +show_font_menu() { + theme=$(menu "Font" "$($OMARCHY_BIN_PATH/omarchy-font-list)" "-w 350") + if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then + show_main_menu + else + $OMARCHY_BIN_PATH/omarchy-font-set "$theme" + fi +} + show_capture_menu() { case $(menu "Capture" " Screenshot\n Screenrecord\n󰃉 Color") in *Screenshot*) show_screenshot_menu ;; @@ -86,7 +103,7 @@ show_toggle_menu() { } show_setup_menu() { - local options=" Audio\n Wifi\n󰂯 Bluetooth\n󰍹 Monitors" + 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 Configs\n󰈷 Fingerprint\n Fido2" @@ -95,6 +112,7 @@ show_setup_menu() { *Audio*) alacritty --class=Wiremix -e wiremix ;; *Wifi*) alacritty --class=Impala -e 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 ;; @@ -105,6 +123,17 @@ show_setup_menu() { esac } +show_setup_power_menu() { + current_profile=$(powerprofilesctl get) + new_profile=$(menu "Power Profile" "$($OMARCHY_BIN_PATH/omarchy-powerprofiles-list)" "-a '${current_profile}'") + + if [[ "$new_profile" == "CNCLD" || -z "$new_profile" ]]; then + show_main_menu + else + powerprofilesctl set "$new_profile" + fi +} + show_setup_configs_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 ;; @@ -120,11 +149,13 @@ show_setup_configs_menu() { } show_install_menu() { - case $(menu "Install" "󰣇 Package\n Web App\n󰸌 Theme\n Background\n Dropbox\n Steam\n Docker DBs") in + case $(menu "Install" "󰣇 Package\n Web App\n Editor\n󰸌 Theme\n Background\n Font\n Dropbox\n Steam\n Docker DBs") in *Package*) terminal $OMARCHY_BIN_PATH/omarchy-pkg-install ;; *Web*) terminal $OMARCHY_BIN_PATH/omarchy-webapp-install ;; + *Editor*) show_install_editor_menu ;; *Theme*) terminal $OMARCHY_BIN_PATH/omarchy-theme-install ;; *Background*) nautilus ~/.config/omarchy/current/theme/backgrounds ;; + *Font*) show_install_font_menu ;; *Dropbox*) terminal $OMARCHY_BIN_PATH/omarchy-setup-dropbox ;; *Steam*) terminal $OMARCHY_BIN_PATH/omarchy-setup-steam ;; *Docker*) terminal $OMARCHY_BIN_PATH/omarchy-setup-docker-dbs ;; @@ -132,6 +163,25 @@ show_install_menu() { esac } +show_install_editor_menu() { + case $(menu "Install" " VSCode\n Cursor\n Zed") in + *VSCode*) install_and_launch "VSCode" "visual-studio-code-bin" "code" ;; + *Cursor*) install_and_launch "Cursor" "cursor-bin" "cursor-cursor" ;; + *Zed*) install_and_launch "Zed" "zed" "dev.zed.Zed" ;; + *) 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_remove_menu() { case $(menu "Remove" "󰣇 Package\n Web App\n󰸌 Theme\n󰈷 Fingerprint\n Fido2") in *Package*) terminal $OMARCHY_BIN_PATH/omarchy-pkg-remove ;; @@ -179,7 +229,7 @@ show_system_menu() { } show_main_menu() { - go_to_menu "$(menu "Start" "󰀻 Apps\n󰧑 Learning\n Capture\n󰔎 Toggle\n Style\n Setup\n󰉉 Install\n󰭌 Remove\n Update\n About\n System")" + 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() { diff --git a/bin/omarchy-pkg-install b/bin/omarchy-pkg-install index 099f1b1d..b407e35c 100755 --- a/bin/omarchy-pkg-install +++ b/bin/omarchy-pkg-install @@ -1,5 +1,9 @@ #!/bin/bash -yay -Slq | fzf --multi --preview 'yay -Sii {1}' --preview-window=down:75% | xargs -ro yay -S --noconfirm && sudo updatedb +pkg_name=$(yay -Slq | fzf --multi --preview 'yay -Sii {1}' --preview-window=down:75%) -~/.local/share/omarchy/bin/omarchy-show-done +if [[ -n "$pkg_name" ]]; then + yay -Sy --noconfirm "$pkg_name" + sudo updatedb + ~/.local/share/omarchy/bin/omarchy-show-done +fi diff --git a/bin/omarchy-pkg-remove b/bin/omarchy-pkg-remove index 9780fa66..c9286c2e 100755 --- a/bin/omarchy-pkg-remove +++ b/bin/omarchy-pkg-remove @@ -1,5 +1,9 @@ #!/bin/bash -yay -Qqe | fzf --multi --preview 'yay -Qi {1}' --preview-window=down:75% | xargs -ro yay -Rns --noconfirm && sudo updatedb +pkg_name=$(yay -Qqe | fzf --multi --preview 'yay -Qi {1}' --preview-window=down:75%) -~/.local/share/omarchy/bin/omarchy-show-done +if [[ -n "$pkg_name" ]]; then + yay -Rns --noconfirm "$pkg_name" + sudo updatedb + ~/.local/share/omarchy/bin/omarchy-show-done +fi diff --git a/bin/omarchy-powerprofiles-list b/bin/omarchy-powerprofiles-list new file mode 100755 index 00000000..b0b5d82d --- /dev/null +++ b/bin/omarchy-powerprofiles-list @@ -0,0 +1,5 @@ +#!/bin/bash + +powerprofilesctl list | + awk '/^\s*[* ]\s*[a-zA-Z0-9\-]+:$/ { gsub(/^[*[:space:]]+|:$/,""); print }' | + tac diff --git a/bin/omarchy-theme-remove b/bin/omarchy-theme-remove index 42cd5d3c..0fcc00da 100755 --- a/bin/omarchy-theme-remove +++ b/bin/omarchy-theme-remove @@ -4,10 +4,10 @@ # Usage: omarchy-theme-remove if [ -z "$1" ]; then - extra_themes=$(find ~/.config/omarchy/themes -mindepth 1 -maxdepth 1 -type d ! -xtype l -printf '%f\n') + mapfile -t extra_themes < <(find ~/.config/omarchy/themes -mindepth 1 -maxdepth 1 -type d ! -xtype l -printf '%f\n') - if [[ -n "$extra_themes" ]]; then - THEME_NAME=$(gum choose --header="Remove extra theme" "$extra_themes") + if [[ ${#extra_themes[@]} -gt 0 ]]; then + THEME_NAME=$(gum choose --header="Remove extra theme" "${extra_themes[@]}") else echo "No extra themes installed." exit 1 diff --git a/config/swayosd/style.css b/config/swayosd/style.css index 544b6cb3..3c372e6b 100644 --- a/config/swayosd/style.css +++ b/config/swayosd/style.css @@ -9,7 +9,7 @@ window { } label { - font-family: 'CaskaydiaMono Nerd Font', monospace; + font-family: 'CaskaydiaMono Nerd Font'; font-size: 11pt; color: @label; diff --git a/default/bash/functions b/default/bash/functions index 537a451d..c174f8db 100644 --- a/default/bash/functions +++ b/default/bash/functions @@ -35,3 +35,18 @@ format-drive() { fi fi } + +# Transcode a video to a good-balance 1080p that's great for sharing online +transcode-video-1080p() { + ffmpeg -i $1 -vf scale=1920:1080 -c:v libx264 -preset fast -crf 23 -c:a copy ${1%.*}-1080p.mp4 +} + +# Transcode a video to a good-balance 4K that's great for sharing online +transcode-video-4K() { + ffmpeg -i $1 -c:v libx265 -preset slow -crf 24 -c:a aac -b:a 192k ${1%.*}-optimized.mp4 +} + +# Transcode PNG to JPG image that's great for shrinking wallpapers +transcode-png2jpg() { + convert $1 -quality 95 -strip $(1%.*).jpg +} diff --git a/default/hypr/bindings/tiling.conf b/default/hypr/bindings/tiling.conf index 611dbcf5..748db35b 100644 --- a/default/hypr/bindings/tiling.conf +++ b/default/hypr/bindings/tiling.conf @@ -7,13 +7,13 @@ bindd = SUPER, P, Pseudo window, pseudo, # dwindle bindd = SUPER, V, Toggle floating, togglefloating, bindd = SHIFT, F11, Force full screen, fullscreen, 0 -# Move focus with mainMod + arrow keys +# Move focus with SUPER + arrow keys bindd = SUPER, left, Move focus left, movefocus, l bindd = SUPER, right, Move focus right, movefocus, r bindd = SUPER, up, Move focus up, movefocus, u bindd = SUPER, down, Move focus down, movefocus, d -# Switch workspaces with mainMod + [0-9] +# Switch workspaces with SUPER + [0-9] bindd = SUPER, code:10, Switch to workspace 1, workspace, 1 bindd = SUPER, code:11, Switch to workspace 2, workspace, 2 bindd = SUPER, code:12, Switch to workspace 3, workspace, 3 @@ -25,19 +25,19 @@ bindd = SUPER, code:17, Switch to workspace 8, workspace, 8 bindd = SUPER, code:18, Switch to workspace 9, workspace, 9 bindd = SUPER, code:19, Switch to workspace 10, workspace, 10 -# Move active window to a workspace with mainMod + SHIFT + [0-9] +# Move active window to a workspace with SUPER + SHIFT + [0-9] bindd = SUPER SHIFT, code:10, Move window to workspace 1, movetoworkspace, 1 -bindd = SUPER SHIFT, code:11, Move window to workspace 1, movetoworkspace, 2 -bindd = SUPER SHIFT, code:12, Move window to workspace 1, movetoworkspace, 3 -bindd = SUPER SHIFT, code:13, Move window to workspace 1, movetoworkspace, 4 -bindd = SUPER SHIFT, code:14, Move window to workspace 1, movetoworkspace, 5 -bindd = SUPER SHIFT, code:15, Move window to workspace 1, movetoworkspace, 6 -bindd = SUPER SHIFT, code:16, Move window to workspace 1, movetoworkspace, 7 -bindd = SUPER SHIFT, code:17, Move window to workspace 1, movetoworkspace, 8 -bindd = SUPER SHIFT, code:18, Move window to workspace 1, movetoworkspace, 9 -bindd = SUPER SHIFT, code:19, Move window to workspace 1, movetoworkspace, 10 +bindd = SUPER SHIFT, code:11, Move window to workspace 2, movetoworkspace, 2 +bindd = SUPER SHIFT, code:12, Move window to workspace 3, movetoworkspace, 3 +bindd = SUPER SHIFT, code:13, Move window to workspace 4, movetoworkspace, 4 +bindd = SUPER SHIFT, code:14, Move window to workspace 5, movetoworkspace, 5 +bindd = SUPER SHIFT, code:15, Move window to workspace 6, movetoworkspace, 6 +bindd = SUPER SHIFT, code:16, Move window to workspace 7, movetoworkspace, 7 +bindd = SUPER SHIFT, code:17, Move window to workspace 8, movetoworkspace, 8 +bindd = SUPER SHIFT, code:18, Move window to workspace 9, movetoworkspace, 9 +bindd = SUPER SHIFT, code:19, Move window to workspace 10, movetoworkspace, 10 -# Swap active window with the one next to it with mainMod + SHIFT + arrow keys +# Swap active window with the one next to it with SUPER + SHIFT + arrow keys bindd = SUPER SHIFT, left, Swap window to the left, swapwindow, l bindd = SUPER SHIFT, right, Swap window to the right, swapwindow, r bindd = SUPER SHIFT, up, Swap window up, swapwindow, u @@ -53,8 +53,8 @@ bindd = SUPER, equal, Shrink window left, resizeactive, 100 0 bindd = SUPER SHIFT, minus, Shrink window up, resizeactive, 0 -100 bindd = SUPER SHIFT, equal, Expand window down, resizeactive, 0 100 -# Scroll through existing workspaces with mainMod + scroll -bindd = SUPER, mouse_down, Scroll active worspace forward, workspace, e+1 +# Scroll through existing workspaces with SUPER + scroll +bindd = SUPER, mouse_down, Scroll active workspace forward, workspace, e+1 bindd = SUPER, mouse_up, Scroll active workspace backward, workspace, e-1 # Move/resize windows with mainMod + LMB/RMB and dragging diff --git a/install/desktop/printer.sh b/install/desktop/printer.sh index 930eea16..ec379a82 100644 --- a/install/desktop/printer.sh +++ b/install/desktop/printer.sh @@ -5,7 +5,7 @@ sudo systemctl enable --now cups.service # Disable multicast dns in resolved. Avahi will provide this for better network printer discovery sudo mkdir -p /etc/systemd/resolved.conf.d -echo "[Resolve]\nMulticastDNS=no" | sudo tee /etc/systemd/resolved.conf.d/10-disable-multicast.conf +echo -e "[Resolve]\nMulticastDNS=no" | sudo tee /etc/systemd/resolved.conf.d/10-disable-multicast.conf sudo systemctl enable --now avahi-daemon.service # Enable automatically adding remote printers diff --git a/install/development/terminal.sh b/install/development/terminal.sh index 2df35f97..ce2e26f3 100644 --- a/install/development/terminal.sh +++ b/install/development/terminal.sh @@ -2,7 +2,7 @@ yay -S --noconfirm --needed \ wget curl unzip inetutils impala \ - fd eza fzf ripgrep zoxide bat jq \ + fd eza fzf ripgrep zoxide bat jq xmlstarlet \ wl-clipboard fastfetch btop \ man tldr less whois plocate bash-completion \ alacritty diff --git a/migrations/1754480092.sh b/migrations/1754480092.sh new file mode 100644 index 00000000..8337219c --- /dev/null +++ b/migrations/1754480092.sh @@ -0,0 +1,6 @@ +echo "Make new Osaka Jade theme available as new default" + +if [[ ! -L ~/.config/omarchy/themes/osaka-jade ]]; then + rm -rf ~/.local/share/omarchy/themes/osaka-jade + ln -nfs ~/.local/share/omarchy/themes/osaka-jade ~/.config/omarchy/themes/osaka-jade +fi diff --git a/migrations/1754509222.sh b/migrations/1754509222.sh new file mode 100644 index 00000000..799cac38 --- /dev/null +++ b/migrations/1754509222.sh @@ -0,0 +1,3 @@ +echo "Add xmlstarlet needed for updating fonts via Omarchy menu" + +yay -Sy --noconfirm --needed xmlstarlet diff --git a/migrations/1754514972.sh b/migrations/1754514972.sh new file mode 100644 index 00000000..787d8bc7 --- /dev/null +++ b/migrations/1754514972.sh @@ -0,0 +1,3 @@ +echo "Fix multicast dns config for printers" + +echo -e "[Resolve]\nMulticastDNS=no" | sudo tee /etc/systemd/resolved.conf.d/10-disable-multicast.conf diff --git a/migrations/1754515289.sh b/migrations/1754515289.sh new file mode 100644 index 00000000..82aad356 --- /dev/null +++ b/migrations/1754515289.sh @@ -0,0 +1,4 @@ +echo "Update and restart Walker to resolve stuck Omarchy menu" + +yay -Sy --noconfirm walker-bin +~/.local/share/omarchy/bin/omarchy-restart-walker