diff --git a/bin/omarchy-battery-monitor b/bin/omarchy-battery-monitor index fd16afb1..20d6a1e1 100755 --- a/bin/omarchy-battery-monitor +++ b/bin/omarchy-battery-monitor @@ -4,33 +4,18 @@ BATTERY_THRESHOLD=10 NOTIFICATION_FLAG="/run/user/$UID/omarchy_battery_notified" - -get_battery_percentage() { - upower -i "$(upower -e | grep 'BAT')" \ - | awk -F: '/percentage/ { - gsub(/[%[:space:]]/, "", $2); - val=$2; - printf("%d\n", (val+0.5)) - exit - }' -} - -get_battery_state() { - upower -i $(upower -e | grep 'BAT') | grep -E "state" | awk '{print $2}' -} +BATTERY_LEVEL=$(omarchy-battery-remaining) +BATTERY_STATE=$(upower -i $(upower -e | grep 'BAT') | grep -E "state" | awk '{print $2}') send_notification() { notify-send -u critical "󱐋 Time to recharge!" "Battery is down to ${1}%" -i battery-caution -t 30000 } -BATTERY_LEVEL=$(get_battery_percentage) -BATTERY_STATE=$(get_battery_state) - -if [[ "$BATTERY_STATE" == "discharging" && "$BATTERY_LEVEL" -le "$BATTERY_THRESHOLD" ]]; then - if [[ ! -f "$NOTIFICATION_FLAG" ]]; then - send_notification "$BATTERY_LEVEL" - touch "$NOTIFICATION_FLAG" +if [[ $BATTERY_STATE == "discharging" && $BATTERY_LEVEL -le $BATTERY_THRESHOLD ]]; then + if [[ ! -f $NOTIFICATION_FLAG ]]; then + send_notification $BATTERY_LEVEL + touch $NOTIFICATION_FLAG fi else - rm -f "$NOTIFICATION_FLAG" + rm -f $NOTIFICATION_FLAG fi diff --git a/bin/omarchy-battery-remaining b/bin/omarchy-battery-remaining new file mode 100755 index 00000000..855b4c6b --- /dev/null +++ b/bin/omarchy-battery-remaining @@ -0,0 +1,11 @@ +#!/bin/bash + +# Returns the battery percentage remaining as an integer. + +upower -i $(upower -e | grep BAT) \ +| awk -F: '/percentage/ { + gsub(/[%[:space:]]/, "", $2); + val=$2; + printf("%d\n", (val+0.5)) + exit + }' diff --git a/bin/omarchy-debug b/bin/omarchy-debug new file mode 100755 index 00000000..05c35df8 --- /dev/null +++ b/bin/omarchy-debug @@ -0,0 +1,61 @@ +#!/bin/bash + +LOG_FILE="/tmp/omarchy-debug.log" + +cat > "$LOG_FILE" </dev/null || echo "unknown") + +========================================= +SYSTEM INFORMATION +========================================= +$(inxi -Farz) + +========================================= +DMESG +========================================= +$(sudo dmesg) + +========================================= +JOURNALCTL (CURRENT BOOT, ERRORS ONLY) +========================================= +$(journalctl -b -p 4..1) + +========================================= +INSTALLED PACKAGES +========================================= +$({ expac -S '%n %v (%r)' $(pacman -Qqe) 2>/dev/null; comm -13 <(pacman -Sql | sort) <(pacman -Qqe | sort) | xargs -r expac -Q '%n %v (AUR)'; } | sort) +EOF + +OPTIONS=("View log" "Save in current directory") +if ping -c 1 8.8.8.8 >/dev/null 2>&1; then + OPTIONS=("Upload log" "${OPTIONS[@]}") +fi + +ACTION=$(gum choose "${OPTIONS[@]}") + +case "$ACTION" in + "Upload log") + echo "Uploading debug log to 0x0.st..." + URL=$(curl -sF "file=@$LOG_FILE" -Fexpires=24 https://0x0.st) + if [ $? -eq 0 ] && [ -n "$URL" ]; then + echo "✓ Log uploaded successfully!" + echo "Share this URL:" + echo "" + echo " $URL" + echo "" + echo "This link will expire in 24 hours." + else + echo "Error: Failed to upload log file" + exit 1 + fi + ;; + "View log") + less "$LOG_FILE" + ;; + "Save in current directory") + cp "$LOG_FILE" "./omarchy-debug.log" + echo "✓ Log saved to $(pwd)/omarchy-debug.log" + ;; +esac diff --git a/bin/omarchy-hook b/bin/omarchy-hook index caa83988..30b7b1f6 100755 --- a/bin/omarchy-hook +++ b/bin/omarchy-hook @@ -1,5 +1,7 @@ #!/bin/bash +set -e + if [[ $# -lt 1 ]]; then echo "Usage: omarchy-hook [name] [args...]" exit 1 diff --git a/bin/omarchy-cmd-close-all-windows b/bin/omarchy-hyprland-window-close-all similarity index 100% rename from bin/omarchy-cmd-close-all-windows rename to bin/omarchy-hyprland-window-close-all diff --git a/bin/omarchy-hyprland-workspace-toggle-gaps b/bin/omarchy-hyprland-workspace-toggle-gaps new file mode 100755 index 00000000..4304758a --- /dev/null +++ b/bin/omarchy-hyprland-workspace-toggle-gaps @@ -0,0 +1,10 @@ +#!/bin/bash + +workspace_id=$(hyprctl activeworkspace -j | jq -r .id) +gaps=$(hyprctl workspacerules -j | jq -r ".[] | select(.workspaceString==\"$workspace_id\") | .gapsOut[0] // 0") + +if [[ $gaps == "0" ]]; then + hyprctl keyword "workspace $workspace_id, gapsout:10, gapsin:5, border:true" +else \ + hyprctl keyword "workspace $workspace_id, gapsout:0, gapsin:0, border:false" +fi diff --git a/bin/omarchy-install-vscode b/bin/omarchy-install-vscode index 644a8eb7..9ac4cd5a 100755 --- a/bin/omarchy-install-vscode +++ b/bin/omarchy-install-vscode @@ -3,7 +3,7 @@ echo "Installing VSCode..." omarchy-pkg-add visual-studio-code-bin -mkdir -p ~/.vscode +mkdir -p ~/.vscode ~/.config/Code/User cat > ~/.vscode/argv.json << 'EOF' // This configuration file allows you to pass permanent command line arguments to VS Code. diff --git a/bin/omarchy-launch-terminal b/bin/omarchy-launch-terminal new file mode 100755 index 00000000..67bb2919 --- /dev/null +++ b/bin/omarchy-launch-terminal @@ -0,0 +1,3 @@ +#!/bin/bash + +exec setsid uwsm-app -- "${TERMINAL:-alacritty}" "$@" diff --git a/bin/omarchy-menu b/bin/omarchy-menu index e9c4a692..6b989ca9 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -387,27 +387,20 @@ show_remove_menu() { } show_update_menu() { - case $(menu "Update" " Omarchy\n Branch\n Config\n󰸌 Extra Themes\n Process\n󰇅 Hardware\n Firmware\n Password\n Timezone") in + case $(menu "Update" " Omarchy\n Config\n󰸌 Extra Themes\n Process\n󰇅 Hardware\n Firmware\n Password\n Timezone\n Time") in *Omarchy*) present_terminal omarchy-update ;; - *Branch*) show_update_branch_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-reset-time ;; *Password*) show_update_password_menu ;; *) show_main_menu ;; esac } -show_update_branch_menu() { - case $(menu "Branch" "master\ndev" "" "$(omarchy-version-branch)") in - *master*) present_terminal "omarchy-update-branch master" ;; - *dev*) present_terminal "omarchy-update-branch 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 ;; diff --git a/bin/omarchy-refresh-limine b/bin/omarchy-refresh-limine new file mode 100755 index 00000000..0e1bf7f2 --- /dev/null +++ b/bin/omarchy-refresh-limine @@ -0,0 +1,34 @@ +#!/bin/bash + +if [[ -f /boot/EFI/linux/omarchy_linux.efi ]] && [[ -f /boot/EFI/linux/$(cat /etc/machine-id)_linux.efi ]]; then + echo "Cleanup extra UKI" + sudo rm -f /boot/EFI/Linux/$(cat /etc/machine-id)_linux.efi +fi +echo "Resetting limine config" + +sudo mv /boot/limine.conf /boot/limine.conf.bak + +sudo tee /boot/limine.conf </dev/null +### Read more at config document: https://github.com/limine-bootloader/limine/blob/trunk/CONFIG.md +#timeout: 3 +default_entry: 2 +interface_branding: Omarchy Bootloader +interface_branding_color: 2 +hash_mismatch_panic: no + +term_background: 1a1b26 +backdrop: 1a1b26 + +# Terminal colors (Tokyo Night palette) +term_palette: 15161e;f7768e;9ece6a;e0af68;7aa2f7;bb9af7;7dcfff;a9b1d6 +term_palette_bright: 414868;f7768e;9ece6a;e0af68;7aa2f7;bb9af7;7dcfff;c0caf5 + +# Text colors +term_foreground: c0caf5 +term_foreground_bright: c0caf5 +term_background_bright: 24283b + +EOF + +sudo limine-update +sudo limine-snapper-sync diff --git a/bin/omarchy-reinstall b/bin/omarchy-reinstall new file mode 100755 index 00000000..52c826ca --- /dev/null +++ b/bin/omarchy-reinstall @@ -0,0 +1,33 @@ +#!/bin/bash + +set -e + +if [ "$EUID" -eq 0 ]; then + echo "Error: This script should not be run as root" + exit 1 +fi + +echo -e "This will reinstall all the default Omarchy packages and reset all default configs.\nWarning: All changes to configs will be lost.\n" + +if gum confirm "Are you sure you want to reinstall and lose all config changes?"; then + echo "Resetting Omarchy repository" + git clone "https://github.com/basecamp/omarchy.git" ~/.local/share/omarchy-new >/dev/null + rm -rf $OMARCHY_PATH + mv ~/.local/share/omarchy-new $OMARCHY_PATH + + echo "Reinstalling missing Omarchy packages" + mapfile -t packages < <(grep -v '^#' "$OMARCHY_PATH/install/omarchy-base.packages" | grep -v '^$') + sudo pacman -Syu --noconfirm --needed "${packages[@]}" + + echo "Resetting all Omarchy configs" + cp -R ~/.local/share/omarchy/config/* ~/.config/ + cp ~/.local/share/omarchy/default/bashrc ~/.bashrc + echo '[[ -f ~/.bashrc ]] && . ~/.bashrc' | tee ~/.bash_profile >/dev/null + + $(bash $OMARCHY_PATH/install/config/theme.sh) + $(bash $OMARCHY_PATH/install/config/git.sh) + + omarchy-refresh-limine + omarchy-refresh-plymouth + omarchy-nvim-setup +fi diff --git a/bin/omarchy-reset-time b/bin/omarchy-reset-time new file mode 100755 index 00000000..14fc8b6f --- /dev/null +++ b/bin/omarchy-reset-time @@ -0,0 +1,4 @@ +#!/bin/bash + +echo "Updating time..." +sudo systemctl restart systemd-timesyncd diff --git a/bin/omarchy-snapshot b/bin/omarchy-snapshot index 7174081b..ee79512a 100755 --- a/bin/omarchy-snapshot +++ b/bin/omarchy-snapshot @@ -1,5 +1,7 @@ #!/bin/bash +set -e + COMMAND="$1" OMARCHY_PATH=${OMARCHY_PATH:-$HOME/.local/share/omarchy} @@ -17,7 +19,7 @@ create) DESC="$(omarchy-version)" echo -e "\e[32mCreate system snapshot\e[0m" - + # Get existing snapper config names from CSV output mapfile -t CONFIGS < <(sudo snapper --csvout list-configs | awk -F, 'NR>1 {print $1}') diff --git a/bin/omarchy-theme-set-obsidian b/bin/omarchy-theme-set-obsidian index e67f0b62..5bb1b7b8 100755 --- a/bin/omarchy-theme-set-obsidian +++ b/bin/omarchy-theme-set-obsidian @@ -3,7 +3,7 @@ # omarchy-theme-set-obsidian: Bootstrap and update Omarchy theme for Obsidian # # - Ensures registry at ~/.local/state/omarchy/obsidian-vaults -# - If missing/empty, bootstraps by scanning ~/Documents/*/.obsidian and ~/Dropbox/*/.obsidian +# - Populates by extracting vault paths from ~/.config/obsidian/obsidian.json # - For each valid vault: # - Ensures .obsidian/themes/Omarchy/{manifest.json, theme.css} # - Updates theme.css (uses current theme’s obsidian.css if present; otherwise generates -- see below) @@ -26,30 +26,18 @@ VAULTS_FILE="$HOME/.local/state/omarchy/obsidian-vaults" CURRENT_THEME_DIR="$HOME/.config/omarchy/current/theme" -# Ensure the vaults registry exists, or bootstrap from known locations ensure_vaults_file() { mkdir -p "$(dirname "$VAULTS_FILE")" - # If file exists (even empty), do not scan; treat as authoritative - if [ -f "$VAULTS_FILE" ]; then - return - fi local tmpfile tmpfile="$(mktemp)" - # Scan a couple of common locations for //.obsidian - for base in "$HOME/Documents" "$HOME/Dropbox"; do - [ -d "$base" ] || continue - for d in "$base"/*/.obsidian; do - [ -d "$d" ] || continue - vault_dir="${d%/.obsidian}" - printf "%s\n" "$vault_dir" >>"$tmpfile" - done - done - if [ -s "$tmpfile" ]; then - sort -u "$tmpfile" >"$VAULTS_FILE" - else - : >"$VAULTS_FILE" - fi - rm -f "$tmpfile" + # Extract the Obsidian vault location from config file //.obsidian + jq -r '.vaults | values[].path' ~/.config/obsidian/obsidian.json 2>/dev/null >>"$tmpfile" + if [ -s "$tmpfile" ]; then + sort -u "$tmpfile" >"$VAULTS_FILE" + else + : >"$VAULTS_FILE" + fi + rm "$tmpfile" } # Ensure theme directory and minimal manifest exist in a vault diff --git a/bin/omarchy-theme-update b/bin/omarchy-theme-update index a4ecbde6..aa68f095 100755 --- a/bin/omarchy-theme-update +++ b/bin/omarchy-theme-update @@ -1,5 +1,8 @@ #!/bin/bash for dir in ~/.config/omarchy/themes/*/; do - [ -d "$dir" ] && [ ! -L "${dir%/}" ] && echo "Updating: $(basename "$dir")" && git -C "$dir" pull + if [[ -d $dir ]] && [[ ! -L "${dir%/}" ]] && [[ -d "$dir/.git" ]]; then + echo "Updating: $(basename "$dir")" + git -C "$dir" pull + fi done diff --git a/bin/omarchy-update b/bin/omarchy-update index 3ce5e4e6..0152af0c 100755 --- a/bin/omarchy-update +++ b/bin/omarchy-update @@ -2,6 +2,8 @@ set -e +trap 'echo ""; echo -e "\033[0;31mSomething went wrong during the update!\n\nPlease review the output above carefully, correct the error, and retry the update.\n\nIf you need assistance, get help from the community at https://omarchy.org/discord\033[0m"' ERR + omarchy-snapshot create || [ $? -eq 127 ] omarchy-update-git omarchy-update-perform diff --git a/bin/omarchy-update-available-reset b/bin/omarchy-update-available-reset index 09396f9e..2f136cb0 100755 --- a/bin/omarchy-update-available-reset +++ b/bin/omarchy-update-available-reset @@ -2,3 +2,4 @@ # Ensure Waybar icon offering the available update is removed pkill -RTMIN+7 waybar +exit 0 diff --git a/bin/omarchy-update-git b/bin/omarchy-update-git index 5743e4d1..3eca676f 100755 --- a/bin/omarchy-update-git +++ b/bin/omarchy-update-git @@ -1,5 +1,7 @@ #!/bin/bash +set -e + echo -e "\e[32mUpdate Omarchy\e[0m" git -C $OMARCHY_PATH pull --autostash diff --git a/bin/omarchy-update-system-pkgs b/bin/omarchy-update-system-pkgs index 28baffda..b1928696 100755 --- a/bin/omarchy-update-system-pkgs +++ b/bin/omarchy-update-system-pkgs @@ -1,5 +1,7 @@ #!/bin/bash +set -e + # Used in package emergencies if a bad package has been pushed and we can't revoke. # Requires manually installing the good package using sudo pacman -U ignored_packages=$(omarchy-pkg-ignored) diff --git a/bin/omarchy-windows-vm b/bin/omarchy-windows-vm index eaea4013..2b223df3 100755 --- a/bin/omarchy-windows-vm +++ b/bin/omarchy-windows-vm @@ -273,7 +273,7 @@ launch_windows() { echo "Starting Windows VM..." # Send desktop notification - notify-send "Windows VM" "Starting Windows VM, this may take a moment..." + notify-send " Starting Windows VM" " This can take 15-30 seconds" -t 15000 if ! docker-compose -f "$COMPOSE_FILE" up -d 2>&1; then echo "❌ Failed to start Windows VM!" @@ -298,7 +298,7 @@ launch_windows() { done # Give it a moment more to fully initialize - sleep 3 + sleep 5 fi # Extract credentials from compose file @@ -339,7 +339,7 @@ To stop: omarchy-windows-vm stop" # If scale is less than 130%, don't set any scale (use default 100) # Connect with RDP in fullscreen (auto-detects resolution) - xfreerdp3 /u:"$WIN_USER" /p:"$WIN_PASS" /v:127.0.0.1:3389 +f -grab-keyboard /cert:ignore /title:"Windows VM - Omarchy" /floatbar:sticky:off,default:visible,show:fullscreen $RDP_SCALE + xfreerdp3 /u:"$WIN_USER" /p:"$WIN_PASS" /v:127.0.0.1:3389 -grab-keyboard /sound /microphone /cert:ignore /title:"Windows VM - Omarchy" /dynamic-resolution /gfx:AVC444 /floatbar:sticky:off,default:visible,show:fullscreen $RDP_SCALE # After RDP closes, stop the container unless --keep-alive was specified if [ "$KEEP_ALIVE" = false ]; then diff --git a/config/hypr/bindings.conf b/config/hypr/bindings.conf index 954929ed..d63a8ce8 100644 --- a/config/hypr/bindings.conf +++ b/config/hypr/bindings.conf @@ -12,9 +12,10 @@ bindd = SUPER SHIFT, T, Activity, exec, $terminal -e btop bindd = SUPER SHIFT, D, Docker, exec, $terminal -e lazydocker bindd = SUPER SHIFT, G, Signal, exec, omarchy-launch-or-focus signal "uwsm-app -- signal-desktop" bindd = SUPER SHIFT, O, Obsidian, exec, omarchy-launch-or-focus "^obsidian$" "uwsm-app -- obsidian -disable-gpu --enable-wayland-ime" +bindd = SUPER SHIFT, W, Typora, exec, uwsm-app -- typora bindd = SUPER SHIFT, SLASH, Passwords, exec, uwsm-app -- 1password -# If your web app url contains #, type it as ## to prevent hyperland treat it as comments +# If your web app url contains #, type it as ## to prevent hyprland treating it as a comment bindd = SUPER SHIFT, A, ChatGPT, exec, omarchy-launch-webapp "https://chatgpt.com" bindd = SUPER SHIFT ALT, A, Grok, exec, omarchy-launch-webapp "https://grok.com" bindd = SUPER SHIFT, C, Calendar, exec, omarchy-launch-webapp "https://app.hey.com/calendar/weeks/" @@ -22,6 +23,7 @@ bindd = SUPER SHIFT, E, Email, exec, omarchy-launch-webapp "https://app.hey.com" bindd = SUPER SHIFT, Y, YouTube, exec, omarchy-launch-webapp "https://youtube.com/" bindd = SUPER SHIFT ALT, G, WhatsApp, exec, omarchy-launch-or-focus-webapp WhatsApp "https://web.whatsapp.com/" bindd = SUPER SHIFT CTRL, G, Google Messages, exec, omarchy-launch-or-focus-webapp "Google Messages" "https://messages.google.com/web/conversations" +bindd = SUPER SHIFT, P, Google Photos, exec, omarchy-launch-or-focus-webapp "Google Photos" "https://photos.google.com/" bindd = SUPER SHIFT, X, X, exec, omarchy-launch-webapp "https://x.com/" bindd = SUPER SHIFT ALT, X, X Post, exec, omarchy-launch-webapp "https://x.com/compose/post" diff --git a/config/uwsm/default b/config/uwsm/default index fa7f656d..72868eb7 100644 --- a/config/uwsm/default +++ b/config/uwsm/default @@ -1,4 +1,13 @@ # Changes require a restart to take effect. +# Install other terminals via Install > Terminal export TERMINAL=alacritty + +# Use code for VSCode export EDITOR=nvim + +# Use a custom directory for screenshots (remember to make the directory!) +# export OMARCHY_SCREENSHOT_DIR="$HOME/Pictures/Screenshots" + +# Use a custom directory for screenrecordings (remember to make the directory!) +# export OMARCHY_SCREENRECORD_DIR="$HOME/Videos/Screencasts" diff --git a/config/waybar/config.jsonc b/config/waybar/config.jsonc index 8fe19a3c..54f74d63 100644 --- a/config/waybar/config.jsonc +++ b/config/waybar/config.jsonc @@ -41,6 +41,7 @@ "custom/omarchy": { "format": "\ue900", "on-click": "omarchy-menu", + "on-click-right": "omarchy-launch-terminal", "tooltip-format": "Omarchy Menu\n\nSuper + Alt + Space" }, "custom/update": { diff --git a/default/bash/shell b/default/bash/shell index 7b39de7b..7eb48672 100644 --- a/default/bash/shell +++ b/default/bash/shell @@ -9,6 +9,5 @@ if [[ ! -v BASH_COMPLETION_VERSINFO && -f /usr/share/bash-completion/bash_comple source /usr/share/bash-completion/bash_completion fi -# Set complete path -export PATH="$HOME/.local/bin:$PATH" +# Ensure command hashing is off for mise set +h diff --git a/default/bashrc b/default/bashrc index f9ea4fd4..eaf13c66 100644 --- a/default/bashrc +++ b/default/bashrc @@ -1,3 +1,6 @@ +# If not running interactively, don't do anything (leave this at the top of this file) +[[ $- != *i* ]] && return + # All the default Omarchy aliases and functions # (don't mess with these directly, just overwrite them here!) source ~/.local/share/omarchy/default/bash/rc diff --git a/default/hypr/bindings/tiling-v2.conf b/default/hypr/bindings/tiling-v2.conf index b933f09e..2e5e15ba 100644 --- a/default/hypr/bindings/tiling-v2.conf +++ b/default/hypr/bindings/tiling-v2.conf @@ -1,6 +1,6 @@ # Close windows bindd = SUPER, W, Close active window, killactive, -bindd = CTRL ALT, DELETE, Close all Windows, exec, omarchy-cmd-close-all-windows +bindd = CTRL ALT, DELETE, Close all Windows, exec, omarchy-hyprland-window-close-all # Control tiling bindd = SUPER, J, Toggle split, togglesplit, # dwindle @@ -85,6 +85,10 @@ bindd = SUPER ALT, DOWN, Move window to group on bottom, moveintogroup, d bindd = SUPER ALT, TAB, Next window in group, changegroupactive, f bindd = SUPER ALT SHIFT, TAB, Previous window in group, changegroupactive, b +# Scroll through a set of grouped windows with SUPER + ALT + scroll +bindd = SUPER ALT, mouse_down, Next window in group, changegroupactive, f +bindd = SUPER ALT, mouse_up, Previous window in group, changegroupactive, b + # Activate window in a group by number bindd = SUPER ALT, 1, Switch to group window 1, changegroupactive, 1 bindd = SUPER ALT, 2, Switch to group window 2, changegroupactive, 2 diff --git a/default/hypr/bindings/tiling.conf b/default/hypr/bindings/tiling.conf index f0c0190b..2007b3b0 100644 --- a/default/hypr/bindings/tiling.conf +++ b/default/hypr/bindings/tiling.conf @@ -3,7 +3,7 @@ # Close windows bindd = SUPER, W, Close active window, killactive, -bindd = CTRL ALT, DELETE, Close all Windows, exec, omarchy-cmd-close-all-windows +bindd = CTRL ALT, DELETE, Close all Windows, exec, omarchy-hyprland-window-close-all # Control tiling bindd = SUPER, J, Toggle split, togglesplit, # dwindle diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index ed44654e..b7b533e4 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -12,6 +12,7 @@ bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, omarchy-toggle-waybar bindd = SUPER CTRL, SPACE, Next background in theme, exec, omarchy-theme-bg-next bindd = SUPER SHIFT CTRL, SPACE, Pick new theme, exec, omarchy-menu theme bindd = SUPER, BACKSPACE, Toggle window transparency, exec, hyprctl dispatch setprop "address:$(hyprctl activewindow -j | jq -r '.address')" opaque toggle +bindd = SUPER SHIFT, BACKSPACE, Toggle workspace gaps, exec, omarchy-hyprland-workspace-toggle-gaps # Notifications bindd = SUPER, COMMA, Dismiss last notification, exec, makoctl dismiss @@ -30,10 +31,14 @@ bindd = CTRL, F2, Apple Display brightness up, exec, omarchy-cmd-apple-display-b bindd = SHIFT CTRL, F2, Apple Display full brightness, exec, omarchy-cmd-apple-display-brightness +60000 # Captures -bindd = , PRINT, Screenshot, exec, omarchy-cmd-screenshot -bindd = SHIFT, PRINT, Screenshot, exec, omarchy-cmd-screenshot smart clipboard +bindd = , PRINT, Screenshot with Editing, exec, omarchy-cmd-screenshot +bindd = SHIFT, PRINT, Screenshot to Clipboard, exec, omarchy-cmd-screenshot smart clipboard bindd = ALT, PRINT, Screenrecording, exec, omarchy-menu screenrecord bindd = SUPER, PRINT, Color picking, exec, pkill hyprpicker || hyprpicker -a # File sharing -bindd = CTRL SUPER, S, Share, exec, omarchy-menu share +bindd = SUPER CTRL, S, Share, exec, omarchy-menu share + +# Waybar-less information +bindd = SUPER CTRL, T, Show time, exec, notify-send " $(date +"%A %H:%M — %d %B W%V %Y")" +bindd = SUPER CTRL, B, Show battery remaining, exec, notify-send "󰁹 Battery is at $(omarchy-battery-remaining)%" diff --git a/install/login/limine-snapper.sh b/install/login/limine-snapper.sh index 6a037207..e837b01f 100644 --- a/install/login/limine-snapper.sh +++ b/install/login/limine-snapper.sh @@ -75,7 +75,7 @@ term_palette_bright: 414868;f7768e;9ece6a;e0af68;7aa2f7;bb9af7;7dcfff;c0caf5 term_foreground: c0caf5 term_foreground_bright: c0caf5 term_background_bright: 24283b - + EOF @@ -120,17 +120,18 @@ if [[ -n $EFI ]] && efibootmgr &>/dev/null; then done < <(efibootmgr | grep -E "^Boot[0-9]{4}\*? Arch Linux Limine" | sed 's/^Boot\([0-9]\{4\}\).*/\1/') fi -if [[ -n $EFI ]] && efibootmgr &>/dev/null && - ! cat /sys/class/dmi/id/bios_vendor 2>/dev/null | grep -qi "American Megatrends" && - ! cat /sys/class/dmi/id/bios_vendor 2>/dev/null | grep -qi "Apple"; then - - uki_file=$(find /boot/EFI/Linux/ -name "omarchy*.efi" -printf "%f\n" 2>/dev/null | head -1) - - if [[ -n "$uki_file" ]]; then - sudo efibootmgr --create \ - --disk "$(findmnt -n -o SOURCE /boot | sed 's/p\?[0-9]*$//')" \ - --part "$(findmnt -n -o SOURCE /boot | grep -o 'p\?[0-9]*$' | sed 's/^p//')" \ - --label "Omarchy" \ - --loader "\\EFI\\Linux\\$uki_file" - fi -fi +# Move this to a utility to allow manual activation +# if [[ -n $EFI ]] && efibootmgr &>/dev/null && +# ! cat /sys/class/dmi/id/bios_vendor 2>/dev/null | grep -qi "American Megatrends" && +# ! cat /sys/class/dmi/id/bios_vendor 2>/dev/null | grep -qi "Apple"; then +# +# uki_file=$(find /boot/EFI/Linux/ -name "omarchy*.efi" -printf "%f\n" 2>/dev/null | head -1) +# +# if [[ -n "$uki_file" ]]; then +# sudo efibootmgr --create \ +# --disk "$(findmnt -n -o SOURCE /boot | sed 's/p\?[0-9]*$//')" \ +# --part "$(findmnt -n -o SOURCE /boot | grep -o 'p\?[0-9]*$' | sed 's/^p//')" \ +# --label "Omarchy" \ +# --loader "\\EFI\\Linux\\$uki_file" +# fi +# fi diff --git a/install/omarchy-base.packages b/install/omarchy-base.packages index 7b3b2082..f9d53bc8 100644 --- a/install/omarchy-base.packages +++ b/install/omarchy-base.packages @@ -36,6 +36,7 @@ elephant-todo elephant-unicode elephant-websearch evince +expac eza fastfetch fcitx5 @@ -65,6 +66,7 @@ imagemagick impala imv inetutils +inxi iwd jq kdenlive @@ -132,7 +134,7 @@ unzip uwsm walker waybar -wayfreeze-git +wayfreeze whois wireless-regdb wiremix diff --git a/migrations/1758019332.sh b/migrations/1758019332.sh index defe97ab..50caed1e 100644 --- a/migrations/1758019332.sh +++ b/migrations/1758019332.sh @@ -17,5 +17,5 @@ fi # Use default terminal for keybinding if grep -q "terminal = uwsm app" ~/.config/hypr/bindings.conf; then - sed -i '/terminal = uwsm-app -- alacritty/ c\$terminal = uwsm-app -- $TERMINAL' ~/.config/hypr/bindings.conf + sed -Ei '/terminal = uwsm[- ]app -- alacritty/ c\$terminal = uwsm-app -- $TERMINAL' ~/.config/hypr/bindings.conf fi diff --git a/migrations/1760974946.sh b/migrations/1760974946.sh new file mode 100644 index 00000000..ef800abc --- /dev/null +++ b/migrations/1760974946.sh @@ -0,0 +1,21 @@ +echo "Turn off VSCode's own auto-update feature (we rely on pacman)" + +# Note: We cannot use `jq` to update settings.json because it’s JSONC (allows comments), +# which jq doesn’t support. + +VS_CODE_SETTINGS="$HOME/.config/Code/User/settings.json" + +# If VSCode is installed, ensure that the "update.mode" setting is set to "none" +if omarchy-cmd-present code; then + mkdir -p "$(dirname "$VS_CODE_SETTINGS")" + + if [[ ! -f "$VS_CODE_SETTINGS" ]]; then + # If settings.json doesn't exist, create it with just the update.mode setting + printf '{\n "update.mode": "none"\n}\n' > "$VS_CODE_SETTINGS" + elif ! grep -q '"update.mode"' "$VS_CODE_SETTINGS"; then + # Insert "update.mode": "none", immediately after the first "{" + # Use sed's first-match range (0,/{/) to only replace the first "{ + sed -i --follow-symlinks -E '0,/\{/{s/\{/{\ + "update.mode": "none",/}' "$VS_CODE_SETTINGS" + fi +fi diff --git a/migrations/1761180745.sh b/migrations/1761180745.sh new file mode 100644 index 00000000..5a6b1e0f --- /dev/null +++ b/migrations/1761180745.sh @@ -0,0 +1,7 @@ +echo "Ensure interactive shell check is at the top of .bashrc" + +BASHRC="$HOME/.bashrc" + +if [ -f "$BASHRC" ] && ! grep -q '\[\[ $- != \*i\* \]\] && return' "$BASHRC"; then + sed -i '1i# If not running interactively, don'\''t do anything (leave this at the top of this file)\n[[ $- != *i* ]] && return\n' "$BASHRC" +fi diff --git a/migrations/1761181166.sh b/migrations/1761181166.sh new file mode 100644 index 00000000..fb7c54e4 --- /dev/null +++ b/migrations/1761181166.sh @@ -0,0 +1,3 @@ +echo "Change to pinned version of wayfreeze" +omarchy-pkg-drop wayfreeze-git +omarchy-pkg-add wayfreeze diff --git a/migrations/1761241493.sh b/migrations/1761241493.sh new file mode 100644 index 00000000..c4b977f0 --- /dev/null +++ b/migrations/1761241493.sh @@ -0,0 +1,33 @@ +echo "Cleanup extra UKI if needed to prevent errors" +if [[ -f /boot/EFI/linux/omarchy_linux.efi ]] && [[ -f /boot/EFI/linux/$(cat /etc/machine-id)_linux.efi ]]; then + sudo rm -f /boot/EFI/Linux/$(cat /etc/machine-id)_linux.efi + + if grep -q "/boot/EFI/Linux/$(cat /etc/machine-id)_linux.efi" /boot/limine.conf; then + echo -e "Resetting limine config\n(you may need to re-add other entries via sudo limine-update)" + + sudo mv /boot/limine.conf /boot/limine.conf.bak + sudo tee /boot/limine.conf </dev/null +### Read more at config document: https://github.com/limine-bootloader/limine/blob/trunk/CONFIG.md +#timeout: 3 +default_entry: 2 +interface_branding: Omarchy Bootloader +interface_branding_color: 2 +hash_mismatch_panic: no + +term_background: 1a1b26 +backdrop: 1a1b26 + +# Terminal colors (Tokyo Night palette) +term_palette: 15161e;f7768e;9ece6a;e0af68;7aa2f7;bb9af7;7dcfff;a9b1d6 +term_palette_bright: 414868;f7768e;9ece6a;e0af68;7aa2f7;bb9af7;7dcfff;c0caf5 + +# Text colors +term_foreground: c0caf5 +term_foreground_bright: c0caf5 +term_background_bright: 24283b + +EOF + sudo limine-update + sudo limine-snapper-sync + fi +fi diff --git a/migrations/1761247569.sh b/migrations/1761247569.sh new file mode 100644 index 00000000..eff3980d --- /dev/null +++ b/migrations/1761247569.sh @@ -0,0 +1,2 @@ +echo "Install expac and inxi for omarchy-debug" +omarchy-pkg-add expac inxi diff --git a/migrations/1761269603.sh b/migrations/1761269603.sh new file mode 100644 index 00000000..35a8b06c --- /dev/null +++ b/migrations/1761269603.sh @@ -0,0 +1,8 @@ +echo "Add right-click terminal action to waybar omarchy menu icon" + +WAYBAR_CONFIG="$HOME/.config/waybar/config.jsonc" + +if [[ -f "$WAYBAR_CONFIG" ]] && ! grep -A5 '"custom/omarchy"' "$WAYBAR_CONFIG" | grep -q '"on-click-right"'; then + sed -i '/"on-click": "omarchy-menu",/a\ "on-click-right": "omarchy-launch-terminal",' "$WAYBAR_CONFIG" + omarchy-state set restart-waybar-required +fi diff --git a/migrations/1761274806.sh b/migrations/1761274806.sh new file mode 100644 index 00000000..7d0f5657 --- /dev/null +++ b/migrations/1761274806.sh @@ -0,0 +1,5 @@ +echo "Ensure node is available via mise (for treesitter cli)" + +if omarchy-cmd-missing node; then + mise use -g node@latest +fi diff --git a/migrations/1761274980.sh b/migrations/1761274980.sh new file mode 100644 index 00000000..5c85b362 --- /dev/null +++ b/migrations/1761274980.sh @@ -0,0 +1,11 @@ +echo "Migrate to proper packages for localsend and asdcontrol" + +if omarchy-pkg-present localsend-bin; then + omarchy-pkg-drop localsend-bin + omarchy-pkg-add localsend +fi + +if omarchy-pkg-present asdcontrol-git; then + omarchy-pkg-drop asdcontrol-git + omarchy-pkg-add asdcontrol +fi diff --git a/themes/flexoki-light/preview.png b/themes/flexoki-light/preview.png new file mode 100644 index 00000000..558b6c55 Binary files /dev/null and b/themes/flexoki-light/preview.png differ diff --git a/version b/version index 94ff29cc..ef538c28 100644 --- a/version +++ b/version @@ -1 +1 @@ -3.1.1 +3.1.2