diff --git a/bin/omarchy b/bin/omarchy index a013a0c..d3074eb 100755 --- a/bin/omarchy +++ b/bin/omarchy @@ -21,41 +21,16 @@ main_menu() { ack_command main_menu ;; - Update) update_menu ;; + Update) + omarchy-update + main_menu + ;; Setup) setup_menu ;; Manual) open_manual ;; Exit) clear && exit 0 ;; esac } -update_menu() { - show_ascii_art - local menu=("Omarchy" "Waybar" "Walker" "Plymouth" "SwayOSD" "Desktop apps" "Back") - local commands=( - "omarchy-update" - "omarchy-refresh-waybar" - "omarchy-refresh-walker" - "omarchy-refresh-plymouth" - "omarchy-refresh-swayosd" - "omarchy-refresh-applications" - "main_menu" - ) - local choice - choice=$(printf "%s\n" "${menu[@]}" | gum choose --header="Update") || main_menu - for i in "${!menu[@]}"; do - if [[ "${menu[$i]}" == "$choice" ]]; then - if [[ "$choice" == "Back" ]]; then - main_menu - else - eval "${commands[$i]}" - ack_command - main_menu - fi - break - fi - done -} - theme_menu() { show_ascii_art local menu=("Pick" "Install" "Update" "Remove" "Back") diff --git a/bin/omarchy-battery-monitor b/bin/omarchy-battery-monitor index 6ac71cb..05f4a44 100755 --- a/bin/omarchy-battery-monitor +++ b/bin/omarchy-battery-monitor @@ -14,7 +14,7 @@ get_battery_state() { } send_notification() { - notify-send -u critical "Battery Low" "Time to recharge! (battery is at ${1}%)" -i battery-caution + notify-send -u critical "󱐋 Time to recharge!" "Battery is down to ${1}%" -i battery-caution -t 30000 } BATTERY_LEVEL=$(get_battery_percentage) diff --git a/bin/omarchy-cmd-screensaver b/bin/omarchy-cmd-screensaver index bbe7b33..65bbce2 100755 --- a/bin/omarchy-cmd-screensaver +++ b/bin/omarchy-cmd-screensaver @@ -10,6 +10,7 @@ if command -v tte &>/dev/null; then while pgrep tte >/dev/null; do if read -n 1 -t 0.01; then pkill tte 2>/dev/null + pkill -f "alacritty --class Screensaver" 2>/dev/null exit 0 fi done @@ -17,4 +18,3 @@ if command -v tte &>/dev/null; then else gum spin --title "Can't find tte. Try: pip install terminaltexteffects" -- sleep 2 fi - diff --git a/bin/omarchy-launch-screensaver b/bin/omarchy-launch-screensaver index 4617044..736c702 100755 --- a/bin/omarchy-launch-screensaver +++ b/bin/omarchy-launch-screensaver @@ -1,5 +1,19 @@ #!/bin/bash -pgrep -f "alacritty --class Screensaver" || - alacritty --class Screensaver --title Screensaver -o 'colors.primary.background="#000000"' \ - -o 'colors.cursor.cursor="#000000"' -e ~/.local/share/omarchy/bin/omarchy-cmd-screensaver +# Exit early if screensave is already running +pgrep -f "alacritty --class Screensaver" && exit 0 + +focused=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name') + +for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do + hyprctl dispatch focusmonitor $m + hyprctl dispatch exec -- \ + alacritty --class Screensaver \ + -o 'colors.primary.background="#000000"' \ + -o 'colors.cursor.cursor="#000000"' \ + -o 'font.size=18' \ + -o 'window.opacity=1' \ + -e ~/.local/share/omarchy/bin/omarchy-cmd-screensaver +done + +hyprctl dispatch focusmonitor $focused diff --git a/bin/omarchy-menu-keybindings b/bin/omarchy-menu-keybindings index 622bcff..a851871 100755 --- a/bin/omarchy-menu-keybindings +++ b/bin/omarchy-menu-keybindings @@ -3,34 +3,47 @@ # A script to display Hyprland keybindings defined in your configuration # using walker for an interactive search menu. -USER_HYPRLAND_CONF="$HOME/.config/hypr/hyprland.conf" -OMARCHY_BINDINGS_CONF="$HOME/.local/share/omarchy/default/hypr/bindings.conf \ -$HOME/.local/share/omarchy/default/hypr/bindings/tiling.conf \ -$HOME/.local/share/omarchy/default/hypr/bindings/utilities.conf \ -$HOME/.local/share/omarchy/default/hypr/bindings/media.conf" +# Fetch dynamic keybindings from Hyprland +# +# Also do some pre-processing: +# - Remove standard Omarchy bin path prefix +# - Remove uwsm prefix +# - Map numeric modifier key mask to a textual rendition +# - Output comma-separated values that the parser can understand +dynamic_bindings() { + hyprctl -j binds | \ + jq -r '.[] | {modmask, key, keycode, description, dispatcher, arg} | "\(.modmask),\(.key)@\(.keycode),\(.description),\(.dispatcher),\(.arg)"' | \ + sed -r \ + -e 's/null//' \ + -e 's,~/.local/share/omarchy/bin/,,' \ + -e 's,uwsm app -- ,,' \ + -e 's/@0//' \ + -e 's/,@/,code:/' \ + -e 's/^0,/,/' \ + -e 's/^1,/SHIFT,/' \ + -e 's/^4,/CTRL,/' \ + -e 's/^5,/SHIFT CTRL,/' \ + -e 's/^8,/ALT,/' \ + -e 's/^9,/SHIFT ALT,/' \ + -e 's/^12,/CTRL ALT,/' \ + -e 's/^13,/SHIFT CTRL ALT,/' \ + -e 's/^64,/SUPER,/' \ + -e 's/^65,/SUPER SHIFT,/' \ + -e 's/^68,/SUPER CTRL,/' \ + -e 's/^69,/SUPER SHIFT CTRL,/' \ + -e 's/^72,/SUPER ALT,/' +} -# Process the configuration file to extract and format keybindings -# 1. `grep` finds all lines starting with 'bind' (allowing for leading spaces). -# 2. The first `sed` removes comments (anything after a '#'). -# 3. `awk` does the heavy lifting of formatting the output. -# - It sets the field separator to a comma ','. -# - It removes the 'bind... =' part from the beginning of the line. -# - It joins the key combination (e.g., "SUPER + Q"). -# - It joins the command that the key executes. -# - It prints everything in a nicely aligned format. -# 4. The final `sed` cleans up any leftover commas from the end of lines. -grep -h '^[[:space:]]*bind' $USER_HYPRLAND_CONF $OMARCHY_BINDINGS_CONF | - sed 's/#.*//' | - sed '/^[[:space:]]*$/d' | - sort -u | +# Parse and format keybindings +# +# `awk` does the heavy lifting: +# - Set the field separator to a comma ','. +# - Joins the key combination (e.g., "SUPER + Q"). +# - Joins the command that the key executes. +# - Prints everything in a nicely aligned format. +parse_bindings() { awk -F, ' { - # Strip trailing comments - sub(/#.*/, ""); - - # Remove the "bind... =" part and surrounding whitespace - sub(/^[[:space:]]*bind[^=]*=(\+[[:space:]])?(exec, )?[[:space:]]*/, "", $1); - # Combine the modifier and key (first two fields) key_combo = $1 " + " $2; @@ -38,27 +51,36 @@ grep -h '^[[:space:]]*bind' $USER_HYPRLAND_CONF $OMARCHY_BINDINGS_CONF | gsub(/^[ \t]*\+?[ \t]*/, "", key_combo); gsub(/[ \t]+$/, "", key_combo); - # Reconstruct the command from the remaining fields - action = ""; - for (i = 3; i <= NF; i++) { - action = action $i (i < NF ? "," : ""); - } + # Use description, if set + action = $3; - # Clean up trailing commas, remove leading "exec, ", and trim - sub(/,$/, "", action); - gsub(/(^|,)[[:space:]]*exec[[:space:]]*,?/, "", action); - gsub(/^[ \t]+|[ \t]+$/, "", action); - gsub(/[ \t]+/, " ", key_combo); # Collapse multiple spaces to one + if (action == "") { + # Reconstruct the command from the remaining fields + for (i = 4; i <= NF; i++) { + action = action $i (i < NF ? "," : ""); + } + + # Clean up trailing commas, remove leading "exec, ", and trim + sub(/,$/, "", action); + gsub(/(^|,)[[:space:]]*exec[[:space:]]*,?/, "", action); + gsub(/^[ \t]+|[ \t]+$/, "", action); + gsub(/[ \t]+/, " ", key_combo); # Collapse multiple spaces to one - if (action != "") { # Escape XML entities gsub(/&/, "\\&", action); gsub(//, "\\>", action); gsub(/"/, "\\"", action); gsub(/'"'"'/, "\\'", action); - + } + + if (action != "") { printf "%-35s → %s\n", key_combo, action; } -}' | +}' +} + +dynamic_bindings | \ + sort -u | \ + parse_bindings | \ walker --dmenu --theme keybindings -p 'Keybindings' diff --git a/bin/omarchy-migrate b/bin/omarchy-migrate index f547570..00e6556 100755 --- a/bin/omarchy-migrate +++ b/bin/omarchy-migrate @@ -1,26 +1,18 @@ #!/bin/bash -# Exit immediately if a command exits with a non-zero status set -e -# Create the migrations state directory, we will store an empty file for each migration that has already been performed. +# Where we store an empty file for each migration that has already been performed. STATE_DIR="$HOME/.local/state/omarchy/migrations" mkdir -p "$STATE_DIR" # Run any pending migrations -cd ~/.local/share/omarchy - -for file in migrations/*.sh; do +for file in ~/.local/share/omarchy/migrations/*.sh; do filename=$(basename "$file") - migrate_at="${filename%.sh}" - # Migration already applied, to re-run it simply delete the state file and try again - [ -e "${STATE_DIR}/$filename" ] && continue - - echo -e "\e[32m\nRunning migration (${filename%.sh})\e[0m" - source $file - touch "${STATE_DIR}/$filename" + if [[ ! -f "$STATE_DIR/$filename" ]]; then + echo -e "\e[32m\nRunning migration (${filename%.sh})\e[0m" + source $file + touch "$STATE_DIR/$filename" + fi done - -# Back to where we came from -cd - >/dev/null diff --git a/bin/omarchy-refresh-hypridle b/bin/omarchy-refresh-hypridle index 0e1600c..f555f0f 100755 --- a/bin/omarchy-refresh-hypridle +++ b/bin/omarchy-refresh-hypridle @@ -1,6 +1,4 @@ #!/bin/bash omarchy-refresh-config hypr/hypridle.conf -pkill -x hypridle -uwsm app -- hypridle >/dev/null 2>&1 & - +omarchy-restart-hypridle diff --git a/bin/omarchy-refresh-hyprlock b/bin/omarchy-refresh-hyprlock index 26c1314..e14915a 100755 --- a/bin/omarchy-refresh-hyprlock +++ b/bin/omarchy-refresh-hyprlock @@ -1,4 +1,4 @@ #!/bin/bash -# Overwrite local Hyprlock settings with the latest in Omarchy -omarchy-refresh-config hypr/hyprlock.conf \ No newline at end of file +omarchy-refresh-config hypr/hyprlock.conf + diff --git a/bin/omarchy-refresh-hyprsunset b/bin/omarchy-refresh-hyprsunset new file mode 100755 index 0000000..ca2ab1a --- /dev/null +++ b/bin/omarchy-refresh-hyprsunset @@ -0,0 +1,4 @@ +#!/bin/bash + +omarchy-refresh-config hypr/hyprsunset.conf +omarchy-restart-hyprsunset diff --git a/bin/omarchy-refresh-swayosd b/bin/omarchy-refresh-swayosd index c2c4999..0dd7f0d 100755 --- a/bin/omarchy-refresh-swayosd +++ b/bin/omarchy-refresh-swayosd @@ -2,6 +2,4 @@ omarchy-refresh-config swayosd/config.toml omarchy-refresh-config swayosd/style.css - -pkill swayosd-server -setsid uwsm app -- swayosd-server &>/dev/null & +omarchy-restart-swayosd diff --git a/bin/omarchy-refresh-walker b/bin/omarchy-refresh-walker index e4e3853..aa7a021 100755 --- a/bin/omarchy-refresh-walker +++ b/bin/omarchy-refresh-walker @@ -1,6 +1,4 @@ #!/bin/bash omarchy-refresh-config walker/config.toml - -pkill walker -setsid uwsm app -- walker --gapplication-service & +omarchy-restart-walker diff --git a/bin/omarchy-refresh-waybar b/bin/omarchy-refresh-waybar index 7dfae19..3f6af49 100755 --- a/bin/omarchy-refresh-waybar +++ b/bin/omarchy-refresh-waybar @@ -2,6 +2,4 @@ omarchy-refresh-config waybar/config.jsonc omarchy-refresh-config waybar/style.css - -# Restart waybar omarchy-restart-waybar diff --git a/bin/omarchy-restart-app b/bin/omarchy-restart-app new file mode 100755 index 0000000..8cf2a03 --- /dev/null +++ b/bin/omarchy-restart-app @@ -0,0 +1,4 @@ +#!/bin/bash + +pkill -x $1 +setsid uwsm app -- $1 >/dev/null 2>&1 & diff --git a/bin/omarchy-restart-hypridle b/bin/omarchy-restart-hypridle new file mode 100755 index 0000000..261f0aa --- /dev/null +++ b/bin/omarchy-restart-hypridle @@ -0,0 +1,3 @@ +#!/bin/bash + +omarchy-restart-app hypridle diff --git a/bin/omarchy-restart-hyprsunset b/bin/omarchy-restart-hyprsunset new file mode 100755 index 0000000..0e681bf --- /dev/null +++ b/bin/omarchy-restart-hyprsunset @@ -0,0 +1,3 @@ +#!/bin/bash + +omarchy-restart-app hyprsunset diff --git a/bin/omarchy-restart-swayosd b/bin/omarchy-restart-swayosd new file mode 100755 index 0000000..b155bc2 --- /dev/null +++ b/bin/omarchy-restart-swayosd @@ -0,0 +1,3 @@ +#!/bin/bash + +omarchy-restart-app swayosd-server diff --git a/bin/omarchy-restart-walker b/bin/omarchy-restart-walker new file mode 100755 index 0000000..2d4aa4b --- /dev/null +++ b/bin/omarchy-restart-walker @@ -0,0 +1,4 @@ +#!/bin/bash + +pkill walker +setsid uwsm app -- walker --gapplication-service & diff --git a/bin/omarchy-restart-waybar b/bin/omarchy-restart-waybar index 8d113bd..53b570e 100755 --- a/bin/omarchy-restart-waybar +++ b/bin/omarchy-restart-waybar @@ -1,4 +1,3 @@ #!/bin/bash -killall waybar || true -setsid uwsm app -- waybar &>/dev/null & +omarchy-restart-app waybar diff --git a/bin/omarchy-restart-xcompose b/bin/omarchy-restart-xcompose new file mode 100755 index 0000000..45f7d9a --- /dev/null +++ b/bin/omarchy-restart-xcompose @@ -0,0 +1,3 @@ +#!/bin/bash + +omarchy-restart-app fcitx5 diff --git a/bin/omarchy-toggle-nightlight b/bin/omarchy-toggle-nightlight new file mode 100755 index 0000000..e2371e1 --- /dev/null +++ b/bin/omarchy-toggle-nightlight @@ -0,0 +1,25 @@ +#!/bin/bash + +# Default temperature values +ON_TEMP=4000 +OFF_TEMP=6500 + +# Query the current temperature +CURRENT_TEMP=$(hyprctl hyprsunset temperature 2>/dev/null | grep -oE '[0-9]+') + +restart_nightlighted_waybar() { + if grep -q "custom/nightlight" ~/.config/waybar/config.jsonc; then + omarchy-restart-waybar # restart waybar in case user has waybar module for hyprsunset + fi +} + +if [[ "$CURRENT_TEMP" == "$OFF_TEMP" ]]; then + hyprctl hyprsunset temperature $ON_TEMP + notify-send " Nightlight screen temperature" + restart_nightlighted_waybar +else + hyprctl hyprsunset temperature $OFF_TEMP + notify-send " Daylight screen temperature" + restart_nightlighted_waybar +fi + diff --git a/boot.sh b/boot.sh index 9a79afc..9005487 100755 --- a/boot.sh +++ b/boot.sh @@ -16,9 +16,12 @@ echo -e "\n$ansi_art\n" sudo pacman -Sy --noconfirm --needed git -echo -e "\nCloning Omarchy..." +# Use custom repo if specified, otherwise default to basecamp/omarchy +OMARCHY_REPO="${OMARCHY_REPO:-basecamp/omarchy}" + +echo -e "\nCloning Omarchy from: https://github.com/${OMARCHY_REPO}.git" rm -rf ~/.local/share/omarchy/ -git clone https://github.com/basecamp/omarchy.git ~/.local/share/omarchy >/dev/null +git clone "https://github.com/${OMARCHY_REPO}.git" ~/.local/share/omarchy >/dev/null # Use custom branch if instructed if [[ -n "$OMARCHY_REF" ]]; then diff --git a/config/hypr/hypridle.conf b/config/hypr/hypridle.conf index 6579248..64b9d24 100644 --- a/config/hypr/hypridle.conf +++ b/config/hypr/hypridle.conf @@ -7,8 +7,8 @@ general { } listener { - timeout = 60 # 1min - on-timeout = omarchy-launch-screensaver # start screensaver + timeout = 180 # 2.5min + on-timeout = pidof hyprlock || omarchy-launch-screensaver # start screensaver (if we haven't locked already) } listener { diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf index 4bd9e14..619ecaa 100644 --- a/config/hypr/hyprland.conf +++ b/config/hypr/hyprland.conf @@ -23,26 +23,26 @@ $terminal = uwsm app -- alacritty $browser = uwsm app -- chromium --new-window --ozone-platform=wayland $webapp = $browser --app -bind = SUPER, return, exec, $terminal -bind = SUPER, F, exec, uwsm app -- nautilus --new-window -bind = SUPER, B, exec, $browser -bind = SUPER, M, exec, uwsm app -- spotify -bind = SUPER, N, exec, $terminal -e nvim -bind = SUPER, T, exec, $terminal -e btop -bind = SUPER, D, exec, $terminal -e lazydocker -bind = SUPER, G, exec, uwsm app -- signal-desktop -bind = SUPER, O, exec, uwsm app -- obsidian -disable-gpu -bind = SUPER, slash, exec, uwsm app -- 1password +bindd = SUPER, return, Terminal, exec, $terminal +bindd = SUPER, F, File manager, exec, uwsm app -- nautilus --new-window +bindd = SUPER, B, Browser, exec, $browser +bindd = SUPER, M, Music, exec, uwsm app -- spotify +bindd = SUPER, N, Neovim, exec, $terminal -e nvim +bindd = SUPER, T, Activity, exec, $terminal -e btop +bindd = SUPER, D, Docker, exec, $terminal -e lazydocker +bindd = SUPER, G, Signal, exec, uwsm app -- signal-desktop +bindd = SUPER, O, Obsidian, exec, uwsm app -- obsidian -disable-gpu +bindd = SUPER, slash, Passwords, exec, uwsm app -- 1password -bind = SUPER, A, exec, $webapp="https://chatgpt.com" -bind = SUPER SHIFT, A, exec, $webapp="https://grok.com" -bind = SUPER, C, exec, $webapp="https://app.hey.com/calendar/weeks/" -bind = SUPER, E, exec, $webapp="https://app.hey.com" -bind = SUPER, Y, exec, $webapp="https://youtube.com/" -bind = SUPER SHIFT, G, exec, $webapp="https://web.whatsapp.com/" -bind = SUPER ALT, G, exec, $webapp="https://messages.google.com/web/conversations" -bind = SUPER, X, exec, $webapp="https://x.com/" -bind = SUPER SHIFT, X, exec, $webapp="https://x.com/compose/post" +bindd = SUPER, A, ChatGPT, exec, $webapp="https://chatgpt.com" +bindd = SUPER SHIFT, A, Grok, exec, $webapp="https://grok.com" +bindd = SUPER, C, Calendar, exec, $webapp="https://app.hey.com/calendar/weeks/" +bindd = SUPER, E, Email, exec, $webapp="https://app.hey.com" +bindd = SUPER, Y, YouTube, exec, $webapp="https://youtube.com/" +bindd = SUPER SHIFT, G, WhatsApp, exec, $webapp="https://web.whatsapp.com/" +bindd = SUPER ALT, G, Google Messages, exec, $webapp="https://messages.google.com/web/conversations" +bindd = SUPER, X, X, exec, $webapp="https://x.com/" +bindd = SUPER SHIFT, X, X Post, exec, $webapp="https://x.com/compose/post" # Extra autostart processes # exec-once = uwsm app -- my-service diff --git a/config/hypr/hyprsunset.conf b/config/hypr/hyprsunset.conf new file mode 100644 index 0000000..1827445 --- /dev/null +++ b/config/hypr/hyprsunset.conf @@ -0,0 +1,6 @@ +# Makes hyprsunset do nothing to the screen by default +# Without this, the default applies some tint to the monitor +profile { + time = 00:00 + identity = true +} \ No newline at end of file diff --git a/config/walker/config.toml b/config/walker/config.toml index 9fe4c8b..ff6708f 100644 --- a/config/walker/config.toml +++ b/config/walker/config.toml @@ -42,7 +42,7 @@ on_query_change = "" [list] dynamic_sub = true keyboard_scroll_style = "emacs" -max_entries = 50 +max_entries = 200 show_initial_entries = true single_click = true visibility_threshold = 20 diff --git a/default/bash/functions b/default/bash/functions index b1657c5..8061f71 100644 --- a/default/bash/functions +++ b/default/bash/functions @@ -65,9 +65,3 @@ web2app-remove() { rm "$DESKTOP_FILE" rm "$ICON_PATH" } - -# Ensure changes to ~/.XCompose are immediately available -refresh-xcompose() { - pkill fcitx5 - uwsm app -- fcitx5 >/dev/null 2>&1 & -} diff --git a/default/hypr/apps.conf b/default/hypr/apps.conf new file mode 100644 index 0000000..48c0edf --- /dev/null +++ b/default/hypr/apps.conf @@ -0,0 +1,7 @@ +# App-specific tweaks +source = ~/.local/share/omarchy/default/hypr/apps/chromium.conf +source = ~/.local/share/omarchy/default/hypr/apps/hyprshot.conf +source = ~/.local/share/omarchy/default/hypr/apps/retroarch.conf +source = ~/.local/share/omarchy/default/hypr/apps/steam.conf +source = ~/.local/share/omarchy/default/hypr/apps/system.conf +source = ~/.local/share/omarchy/default/hypr/apps/walker.conf diff --git a/default/hypr/apps/chromium.conf b/default/hypr/apps/chromium.conf new file mode 100644 index 0000000..af69071 --- /dev/null +++ b/default/hypr/apps/chromium.conf @@ -0,0 +1,6 @@ +# Force chromium into a tile to deal with --app bug +windowrule = tile, class:^(Chromium)$ + +# Only slight opacity when unfocused +windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable)$ +windowrule = opacity 1 1, initialTitle:^(youtube.com_/)$ # Youtube diff --git a/default/hypr/apps/hyprshot.conf b/default/hypr/apps/hyprshot.conf new file mode 100644 index 0000000..c900320 --- /dev/null +++ b/default/hypr/apps/hyprshot.conf @@ -0,0 +1,2 @@ +# Remove 1px border around hyprshot screenshots +layerrule = noanim, selection diff --git a/default/hypr/apps/retroarch.conf b/default/hypr/apps/retroarch.conf new file mode 100644 index 0000000..2c019de --- /dev/null +++ b/default/hypr/apps/retroarch.conf @@ -0,0 +1,3 @@ +windowrule = fullscreen, class:com.libretro.RetroArch +windowrule = opacity 1 1, class:com.libretro.RetroArch + diff --git a/default/hypr/apps/steam.conf b/default/hypr/apps/steam.conf new file mode 100644 index 0000000..be76209 --- /dev/null +++ b/default/hypr/apps/steam.conf @@ -0,0 +1,4 @@ +# Float Steam, fullscreen RetroArch +windowrule = float, class:steam +windowrule = center, class:steam, title:Steam +windowrule = opacity 1 1, class:steam diff --git a/default/hypr/apps/system.conf b/default/hypr/apps/system.conf new file mode 100644 index 0000000..9f3af5f --- /dev/null +++ b/default/hypr/apps/system.conf @@ -0,0 +1,16 @@ +# Float and center settings and previews +windowrule = float, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy|About)$ +windowrule = center, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy|About)$ +windowrule = size 800 600, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty)$ +windowrule = size 600 470, class:Omarchy +windowrule = size 700 470 class:About + +# Float and center file pickers +windowrule = float, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save) +windowrule = center, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save) + +# Fullscreen screensaver +windowrule = fullscreen, class:Screensaver + +# No transparency on media windows +windowrule = opacity 1 1, class:^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$ diff --git a/default/hypr/apps/walker.conf b/default/hypr/apps/walker.conf new file mode 100644 index 0000000..9681c09 --- /dev/null +++ b/default/hypr/apps/walker.conf @@ -0,0 +1,2 @@ +# Application-sepcific animation +layerrule = noanim, walker diff --git a/default/hypr/autostart.conf b/default/hypr/autostart.conf index ae9b084..72e64af 100644 --- a/default/hypr/autostart.conf +++ b/default/hypr/autostart.conf @@ -2,6 +2,7 @@ exec-once = uwsm app -- hypridle exec-once = uwsm app -- mako exec-once = uwsm app -- waybar exec-once = uwsm app -- fcitx5 +exec-once = uwsm app -- hyprsunset exec-once = uwsm app -- swaybg -i ~/.config/omarchy/current/background -m fill exec-once = uwsm app -- swayosd-server exec-once = uwsm app -- walker --gapplication-service diff --git a/default/hypr/bindings.conf b/default/hypr/bindings.conf index 15bfb20..0f8e77e 100644 --- a/default/hypr/bindings.conf +++ b/default/hypr/bindings.conf @@ -1,15 +1,15 @@ # Deprecated bindings file. New installations include everything directly. -bind = SUPER, return, exec, $terminal -bind = SUPER, F, exec, $fileManager -bind = SUPER, B, exec, $browser -bind = SUPER, M, exec, $music -bind = SUPER, N, exec, $terminal -e nvim -bind = SUPER, T, exec, $terminal -e btop -bind = SUPER, D, exec, $terminal -e lazydocker -bind = SUPER, G, exec, $messenger -bind = SUPER, O, exec, obsidian -disable-gpu -bind = SUPER, slash, exec, $passwordManager +bindd = SUPER, return, Terminal, exec, $terminal +bindd = SUPER, F, File manager, exec, $fileManager +bindd = SUPER, B, Web browser, exec, $browser +bindd = SUPER, M, Music player, exec, $music +bindd = SUPER, N, Neovim, exec, $terminal -e nvim +bindd = SUPER, T, Top, exec, $terminal -e btop +bindd = SUPER, D, Lazy Docker, exec, $terminal -e lazydocker +bindd = SUPER, G, Messenger, exec, $messenger +bindd = SUPER, O, Obsidian, exec, obsidian -disable-gpu +bindd = SUPER, slash, Pasword manager, exec, $passwordManager source = ~/.local/share/omarchy/default/hypr/bindings/media.conf source = ~/.local/share/omarchy/default/hypr/bindings/tiling.conf diff --git a/default/hypr/bindings/media.conf b/default/hypr/bindings/media.conf index eb86284..cb2c1f8 100644 --- a/default/hypr/bindings/media.conf +++ b/default/hypr/bindings/media.conf @@ -2,15 +2,15 @@ $osdclient = swayosd-client --monitor "$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')" # Laptop multimedia keys for volume and LCD brightness (with OSD) -bindel = ,XF86AudioRaiseVolume, exec, $osdclient --output-volume raise -bindel = ,XF86AudioLowerVolume, exec, $osdclient --output-volume lower -bindel = ,XF86AudioMute, exec, $osdclient --output-volume mute-toggle -bindel = ,XF86AudioMicMute, exec, $osdclient --input-volume mute-toggle -bindel = ,XF86MonBrightnessUp, exec, $osdclient --brightness raise -bindel = ,XF86MonBrightnessDown, exec, $osdclient --brightness lower +bindeld = ,XF86AudioRaiseVolume, Volume up, exec, $osdclient --output-volume raise +bindeld = ,XF86AudioLowerVolume, Volume down, exec, $osdclient --output-volume lower +bindeld = ,XF86AudioMute, Mute, exec, $osdclient --output-volume mute-toggle +bindeld = ,XF86AudioMicMute, Mute microphone, exec, $osdclient --input-volume mute-toggle +bindeld = ,XF86MonBrightnessUp, Brightness up, exec, $osdclient --brightness raise +bindeld = ,XF86MonBrightnessDown, Brightness down, exec, $osdclient --brightness lower # Requires playerctl -bindl = , XF86AudioNext, exec, $osdclient --playerctl next -bindl = , XF86AudioPause, exec, $osdclient --playerctl play-pause -bindl = , XF86AudioPlay, exec, $osdclient --playerctl play-pause -bindl = , XF86AudioPrev, exec, $osdclient --playerctl previous +bindld = , XF86AudioNext, Next track, exec, $osdclient --playerctl next +bindld = , XF86AudioPause, Pause, exec, $osdclient --playerctl play-pause +bindld = , XF86AudioPlay, Play, exec, $osdclient --playerctl play-pause +bindld = , XF86AudioPrev, Previous track, exec, $osdclient --playerctl previous diff --git a/default/hypr/bindings/tiling.conf b/default/hypr/bindings/tiling.conf index 2fb1e90..611dbcf 100644 --- a/default/hypr/bindings/tiling.conf +++ b/default/hypr/bindings/tiling.conf @@ -1,63 +1,62 @@ # Close window -bind = SUPER, W, killactive, +bindd = SUPER, W, Close active window, killactive, # Control tiling -bind = SUPER, J, togglesplit, # dwindle -bind = SUPER, P, pseudo, # dwindle -bind = SUPER, V, togglefloating, -bind = SHIFT, F11, fullscreen, 0 +bindd = SUPER, J, Toggle split, togglesplit, # dwindle +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 -bind = SUPER, left, movefocus, l -bind = SUPER, right, movefocus, r -bind = SUPER, up, movefocus, u -bind = SUPER, down, movefocus, d +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] -bind = SUPER, code:10, workspace, 1 -bind = SUPER, code:11, workspace, 2 -bind = SUPER, code:12, workspace, 3 -bind = SUPER, code:13, workspace, 4 -bind = SUPER, code:14, workspace, 5 -bind = SUPER, code:15, workspace, 6 -bind = SUPER, code:16, workspace, 7 -bind = SUPER, code:17, workspace, 8 -bind = SUPER, code:18, workspace, 9 -bind = SUPER, code:19, workspace, 10 +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 +bindd = SUPER, code:13, Switch to workspace 4, workspace, 4 +bindd = SUPER, code:14, Switch to workspace 5, workspace, 5 +bindd = SUPER, code:15, Switch to workspace 6, workspace, 6 +bindd = SUPER, code:16, Switch to workspace 7, workspace, 7 +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] -bind = SUPER SHIFT, code:10, movetoworkspace, 1 -bind = SUPER SHIFT, code:11, movetoworkspace, 2 -bind = SUPER SHIFT, code:12, movetoworkspace, 3 -bind = SUPER SHIFT, code:13, movetoworkspace, 4 -bind = SUPER SHIFT, code:14, movetoworkspace, 5 -bind = SUPER SHIFT, code:15, movetoworkspace, 6 -bind = SUPER SHIFT, code:16, movetoworkspace, 7 -bind = SUPER SHIFT, code:17, movetoworkspace, 8 -bind = SUPER SHIFT, code:18, movetoworkspace, 9 -bind = SUPER SHIFT, code:19, movetoworkspace, 10 +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 # Swap active window with the one next to it with mainMod + SHIFT + arrow keys -bind = SUPER SHIFT, left, swapwindow, l -bind = SUPER SHIFT, right, swapwindow, r -bind = SUPER SHIFT, up, swapwindow, u -bind = SUPER SHIFT, down, swapwindow, d +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 +bindd = SUPER SHIFT, down, Swap window down, swapwindow, d # Cycle through applications on active workspace -bind = ALT, Tab, cyclenext -bind = ALT, Tab, bringactivetotop +bindd = ALT, Tab, Cycle to next window, cyclenext +bindd = ALT, Tab, Reveal active window on top, bringactivetotop # Resize active window -bind = SUPER, minus, resizeactive, -100 0 -bind = SUPER, equal, resizeactive, 100 0 -bind = SUPER SHIFT, minus, resizeactive, 0 -100 -bind = SUPER SHIFT, equal, resizeactive, 0 100 +bindd = SUPER, minus, Expand window left, resizeactive, -100 0 +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 -bind = SUPER, mouse_down, workspace, e+1 -bind = SUPER, mouse_up, workspace, e-1 +bindd = SUPER, mouse_down, Scroll active worspace forward, workspace, e+1 +bindd = SUPER, mouse_up, Scroll active workspace backward, workspace, e-1 # Move/resize windows with mainMod + LMB/RMB and dragging -bindm = SUPER, mouse:272, movewindow -bindm = SUPER, mouse:273, resizewindow - +bindmd = SUPER, mouse:272, Move window, movewindow +bindmd = SUPER, mouse:273, Resize window, resizewindow diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index fe449cc..50f3cc1 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -1,39 +1,42 @@ # Launching -bind = SUPER, space, exec, walker -bind = SUPER, K, exec, ~/.local/share/omarchy/bin/omarchy-menu-keybindings +bindd = SUPER, space, Launch apps, exec, walker +bindd = SUPER, K, Show key bindings, exec, ~/.local/share/omarchy/bin/omarchy-menu-keybindings # Aesthetics -bind = SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar -bind = SUPER CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-bg-next -bind = SUPER SHIFT CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-menu +bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, pkill -SIGUSR1 waybar +bindd = SUPER CTRL, SPACE, Next background in theme, exec, ~/.local/share/omarchy/bin/omarchy-theme-bg-next +bindd = SUPER SHIFT CTRL, SPACE, Pick new theme, exec, ~/.local/share/omarchy/bin/omarchy-theme-menu # Notifications -bind = SUPER, comma, exec, makoctl dismiss -bind = SUPER SHIFT, comma, exec, makoctl dismiss --all -bind = SUPER CTRL, comma, exec, makoctl mode -t do-not-disturb && makoctl mode | grep -q 'do-not-disturb' && notify-send "Silenced notifications" || notify-send "Enabled notifications" +bindd = SUPER, comma, Dismiss last notification, exec, makoctl dismiss +bindd = SUPER SHIFT, comma, Dismiss all notifications, exec, makoctl dismiss --all +bindd = SUPER CTRL, comma, Toggle silencing notifications, exec, makoctl mode -t do-not-disturb && makoctl mode | grep -q 'do-not-disturb' && notify-send "Silenced notifications" || notify-send "Enabled notifications" # Power menu controls lock, suspend, relaunch, restart, shutdown -bind = SUPER, ESCAPE, exec, ~/.local/share/omarchy/bin/omarchy-menu-power +bindd = SUPER, ESCAPE, Power menu, exec, ~/.local/share/omarchy/bin/omarchy-menu-power # Toggle idling -bind = SUPER CTRL, I, exec, ~/.local/share/omarchy/bin/omarchy-toggle-idle +bindd = SUPER CTRL, I, Toggle locking on idle, exec, ~/.local/share/omarchy/bin/omarchy-toggle-idle + +# Toggle nightlight +bindd = SUPER CTRL, N, Toggle nightlight, exec, ~/.local/share/omarchy/bin/omarchy-toggle-nightlight # Control Apple Display brightness -bind = CTRL, F1, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness -5000 -bind = CTRL, F2, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +5000 -bind = SHIFT CTRL, F2, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +60000 +bindd = CTRL, F1, Apple Display brightness down, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness -5000 +bindd = CTRL, F2, Apple Display brightness up, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +5000 +bindd = SHIFT CTRL, F2, Apple Display full brightness, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +60000 # Screenshots -bind = , PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot -bind = SHIFT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot window -bind = CTRL, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot output +bindd = , PRINT, Screenshot of region, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot +bindd = SHIFT, PRINT, Screenshot of window, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot window +bindd = CTRL, PRINT, Screenshot of display, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot output -# Screenshots -bind = ALT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord -bind = CTRL ALT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord output +# Screen recordings +bindd = ALT, PRINT, Screen record a region, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord +bindd = CTRL ALT, PRINT, Screen record display, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord output # Screensaver -bind = SUPER ALT, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-launch-screensaver +bindd = SUPER ALT, SPACE, Screensaver, exec, ~/.local/share/omarchy/bin/omarchy-launch-screensaver # Color picker -bind = SUPER, PRINT, exec, hyprpicker -a +bindd = SUPER, PRINT, Color picker, exec, hyprpicker -a diff --git a/default/hypr/looknfeel.conf b/default/hypr/looknfeel.conf index 124acc5..d73f677 100644 --- a/default/hypr/looknfeel.conf +++ b/default/hypr/looknfeel.conf @@ -69,12 +69,6 @@ animations { animation = workspaces, 0, 0, ease } -# Application-sepcific animation -layerrule = noanim,walker - -# Remove 1px border around hyprshot screenshots -layerrule = noanim, selection - # Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/ # "Smart gaps" / "No gaps when only" # uncomment all if you wish to use that. diff --git a/default/hypr/windows.conf b/default/hypr/windows.conf index c9d6992..bc665b2 100644 --- a/default/hypr/windows.conf +++ b/default/hypr/windows.conf @@ -1,34 +1,11 @@ # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more windowrule = suppressevent maximize, class:.* -# Force chromium into a tile to deal with --app bug -windowrule = tile, class:^(Chromium)$ - -# Float and center settings and previews -windowrule = float, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy|About)$ -windowrule = center, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy|About)$ -windowrule = size 800 600, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty)$ -windowrule = size 600 470, class:Omarchy -windowrule = size 700 470 class:About - -# Float and center file pickers -windowrule = float, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save) -windowrule = center, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save) - -# Float Steam, fullscreen RetroArch -windowrule = float, class:steam -windowrule = center, class:steam, title:Steam -windowrule = fullscreen, class:^(com.libretro.RetroArch)$ - -# Fullscreen screensaver -windowrule = fullscreen, class:Screensaver - -# Just dash of opacity +# Just dash of opacity by default windowrule = opacity 0.97 0.9, class:.* -windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable)$ -windowrule = opacity 1 1, initialTitle:^(youtube.com_/)$ # Youtube -windowrule = opacity 1 1, class:^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$ -windowrule = opacity 1 1, class:^(com.libretro.RetroArch|steam)$ # Fix some dragging issues with XWayland windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 + +# App-specific tweaks +source = ~/.local/share/omarchy/default/hypr/apps.conf diff --git a/install.sh b/install.sh index 58d2e40..f2a9f03 100755 --- a/install.sh +++ b/install.sh @@ -28,6 +28,7 @@ show_subtext() { # Install prerequisites source $OMARCHY_INSTALL/preflight/aur.sh source $OMARCHY_INSTALL/preflight/presentation.sh +source $OMARCHY_INSTALL/preflight/migrations.sh # Configuration show_logo beams 240 diff --git a/install/apps/webapps.sh b/install/apps/webapps.sh index 6f5c444..8059419 100644 --- a/install/apps/webapps.sh +++ b/install/apps/webapps.sh @@ -12,5 +12,4 @@ if [ -z "$OMARCHY_BARE" ]; then web2app "YouTube" https://youtube.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/youtube.png web2app "GitHub" https://github.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/github-light.png web2app "X" https://x.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/x-light.png - web2app "Omarchy Manual" https://manuals.omamix.org/2/the-omarchy-manual https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/arch-linux.png fi diff --git a/install/desktop/desktop.sh b/install/desktop/desktop.sh index 0b2b320..626b6c2 100644 --- a/install/desktop/desktop.sh +++ b/install/desktop/desktop.sh @@ -3,7 +3,7 @@ yay -S --noconfirm --needed \ brightnessctl playerctl pamixer wiremix wireplumber \ fcitx5 fcitx5-gtk fcitx5-qt wl-clip-persist \ - nautilus sushi ffmpegthumbnailer \ + nautilus sushi ffmpegthumbnailer gvfs-mtp \ slurp satty \ mpv evince imv \ chromium diff --git a/install/desktop/hyprlandia.sh b/install/desktop/hyprlandia.sh index e5d9368..5a7e916 100644 --- a/install/desktop/hyprlandia.sh +++ b/install/desktop/hyprlandia.sh @@ -1,6 +1,6 @@ #!/bin/bash yay -S --noconfirm --needed \ - hyprland hyprshot hyprpicker hyprlock hypridle polkit-gnome hyprland-qtutils \ + hyprland hyprshot hyprpicker hyprlock hypridle hyprsunset polkit-gnome hyprland-qtutils \ walker-bin libqalculate waybar mako swaybg swayosd \ xdg-desktop-portal-hyprland xdg-desktop-portal-gtk diff --git a/install/desktop/printer.sh b/install/desktop/printer.sh index 17b2d31..930eea1 100644 --- a/install/desktop/printer.sh +++ b/install/desktop/printer.sh @@ -1,4 +1,16 @@ #!/bin/bash -sudo pacman -S --noconfirm cups cups-pdf cups-filters system-config-printer +sudo pacman -S --noconfirm cups cups-pdf cups-filters cups-browsed system-config-printer avahi nss-mdns 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 +sudo systemctl enable --now avahi-daemon.service + +# Enable automatically adding remote printers +if ! grep -q '^CreateRemotePrinters Yes' /etc/cups/cups-browsed.conf; then + echo 'CreateRemotePrinters Yes' | sudo tee -a /etc/cups/cups-browsed.conf +fi + +sudo systemctl enable --now cups-browsed.service diff --git a/install/preflight/migrations.sh b/install/preflight/migrations.sh new file mode 100644 index 0000000..8379dc0 --- /dev/null +++ b/install/preflight/migrations.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +omarchy_migrations_state_path=~/.local/state/omarchy/migrations +mkdir -p $omarchy_migrations_state_path + +for file in ~/.local/share/omarchy/migrations/*.sh; do + touch "$omarchy_migrations_state_path/$(basename "$file")" +done diff --git a/migrations/1754109724.sh b/migrations/1754109724.sh new file mode 100644 index 0000000..b8ff909 --- /dev/null +++ b/migrations/1754109724.sh @@ -0,0 +1,6 @@ +echo "Add hyprsunset blue light filter" +if ! command -v hyprsunset &>/dev/null; then + yay -S --noconfirm --needed hyprsunset +fi + +omarchy-refresh-hyprsunset diff --git a/migrations/1754208139.sh b/migrations/1754208139.sh new file mode 100644 index 0000000..d2f4dd5 --- /dev/null +++ b/migrations/1754208139.sh @@ -0,0 +1,4 @@ +echo "Ensure screensaver doesn't start while the computer is locked" +if ! grep -q "pidof hyprlock || omarchy-launch-screensaver" ~/.config/hypr/hypridle.conf; then + omarchy-refresh-hypridle +fi diff --git a/migrations/1754215439.sh b/migrations/1754215439.sh new file mode 100644 index 0000000..90651bb --- /dev/null +++ b/migrations/1754215439.sh @@ -0,0 +1,5 @@ +echo "Update app launcher config to allow enough entries to show all keybindings on SUPER+K" + +if ! grep "max_entries = 200" ~/.config/walker/config.toml; then + omarchy-refresh-walker +fi diff --git a/migrations/1754215533.sh b/migrations/1754215533.sh new file mode 100644 index 0000000..05a0774 --- /dev/null +++ b/migrations/1754215533.sh @@ -0,0 +1,17 @@ +echo "Enable auto-discovery of network printers" + +if [[ ! -f /etc/systemd/resolved.conf.d/10-disable-multicast.conf ]]; then + sudo pacman -S --noconfirm avahi nss-mdns + + # 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 + sudo systemctl enable --now avahi-daemon.service +fi + +if ! grep -q '^CreateRemotePrinters Yes' /etc/cups/cups-browsed.conf; then + sudo pacman -S --noconfirm cups-browsed + # Enable automatically adding remote printers + echo 'CreateRemotePrinters Yes' | sudo tee -a /etc/cups/cups-browsed.conf + sudo systemctl enable --now cups-browsed.service +fi diff --git a/migrations/1754221967.sh b/migrations/1754221967.sh new file mode 100644 index 0000000..8225c6d --- /dev/null +++ b/migrations/1754221967.sh @@ -0,0 +1,2 @@ +echo "Add support for accessing Android phone data via file manager" +yay -S --noconfirm --needed gvfs-mtp diff --git a/migrations/1754228071.sh b/migrations/1754228071.sh new file mode 100644 index 0000000..e7b69b1 --- /dev/null +++ b/migrations/1754228071.sh @@ -0,0 +1,5 @@ +echo "Add auto-update icon to waybar when update available" + +if ! grep -q "custom/update" ~/.config/waybar/config.jsonc; then + omarchy-refresh-waybar +fi diff --git a/migrations/1754228679.sh b/migrations/1754228679.sh new file mode 100644 index 0000000..2a80234 --- /dev/null +++ b/migrations/1754228679.sh @@ -0,0 +1,2 @@ +echo "Increase time before screensaver starts to 2.5 minutes (from 1 minute)" +omarchy-refresh-hypridle