diff --git a/bin/omarchy-install-dev-env b/bin/omarchy-install-dev-env index 1e8480a..1865992 100755 --- a/bin/omarchy-install-dev-env +++ b/bin/omarchy-install-dev-env @@ -6,7 +6,7 @@ if [[ -z "$1" ]]; then fi install_php() { - sudo pacman -Sy php composer php-sqlite --noconfirm + sudo pacman -S php composer php-sqlite --noconfirm # Install Path for Composer if [[ ":$PATH:" != *":$HOME/.config/composer/vendor/bin:"* ]]; then @@ -33,6 +33,11 @@ install_php() { done } +install_node() { + echo -e "Installing Node.js...\n" + mise use --global node@lts +} + case "$1" in ruby) echo -e "Installing Ruby on Rails...\n" @@ -42,8 +47,7 @@ ruby) echo -e "\nYou can now run: rails new myproject" ;; node) - echo -e "Installing Node.js...\n" - mise use --global node@lts + install_node ;; bun) echo -e "Installing Bun...\n" @@ -64,6 +68,7 @@ php) laravel) echo -e "Installing PHP and Laravel...\n" install_php + install_node composer global require laravel/installer echo -e "\nYou can now run: laravel new myproject" ;; diff --git a/bin/omarchy-install-steam b/bin/omarchy-install-steam index 9eb826d..1d58845 100755 --- a/bin/omarchy-install-steam +++ b/bin/omarchy-install-steam @@ -2,8 +2,7 @@ echo "Adding multilib repository for 32-bit compatibility" sudo sed -i '/^\s*#\[multilib\]/,/^$/{s/^\s*#//}' /etc/pacman.conf -sudo pacman -Sy echo "Now pick dependencies matching your graphics card" -sudo pacman -S steam +sudo pacman -Syu --noconfirm steam setsid gtk-launch steam >/dev/null 2>&1 & diff --git a/bin/omarchy-launch-floating-terminal-with-presentation b/bin/omarchy-launch-floating-terminal-with-presentation new file mode 100755 index 0000000..ecba263 --- /dev/null +++ b/bin/omarchy-launch-floating-terminal-with-presentation @@ -0,0 +1,4 @@ +#!/bin/bash + +cmd="$*" +setsid alacritty --class Omarchy -e bash -c "omarchy-show-logo; $cmd; omarchy-show-done" diff --git a/bin/omarchy-menu b/bin/omarchy-menu index f5179cb..1b2bbfa 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -26,7 +26,7 @@ terminal() { } present_terminal() { - alacritty --class Omarchy -e bash -c "omarchy-show-logo; eval \"$1\"; omarchy-show-done;" + omarchy-launch-floating-terminal-with-presentation $1 } edit_in_nvim() { @@ -35,23 +35,23 @@ edit_in_nvim() { } install() { - present_terminal "echo 'Installing $1...'; sudo pacman -Sy --noconfirm $2" + present_terminal "echo 'Installing $1...'; sudo pacman -S --noconfirm $2" } install_and_launch() { - present_terminal "echo 'Installing $1...'; sudo pacman -Sy --noconfirm $2 && setsid gtk-launch $3" + present_terminal "echo 'Installing $1...'; sudo pacman -S --noconfirm $2 && setsid gtk-launch $3" } install_font() { - present_terminal "echo 'Installing $1...'; sudo pacman -Sy --noconfirm --needed $2 && sleep 2 && omarchy-font-set '$3'" + present_terminal "echo 'Installing $1...'; sudo pacman -S --noconfirm --needed $2 && sleep 2 && omarchy-font-set '$3'" } aur_install() { - present_terminal "echo 'Installing $1 from AUR...'; yay -Sy --noconfirm $2" + present_terminal "echo 'Installing $1 from AUR...'; yay -S --noconfirm $2" } aur_install_and_launch() { - present_terminal "echo 'Installing $1 from AUR...'; yay -Sy --noconfirm $2 && setsid gtk-launch $3" + present_terminal "echo 'Installing $1 from AUR...'; yay -S --noconfirm $2 && setsid gtk-launch $3" } show_learn_menu() { @@ -377,11 +377,12 @@ go_to_menu() { *screenrecord*) show_screenrecord_menu ;; *toggle*) show_toggle_menu ;; *setup*) show_setup_menu ;; + *power*) show_setup_power_menu ;; *install*) show_install_menu ;; *remove*) show_remove_menu ;; *update*) show_update_menu ;; - *system*) show_system_menu ;; *about*) alacritty --class Omarchy -o font.size=9 -e bash -c 'fastfetch; read -n 1 -s' ;; + *system*) show_system_menu ;; esac } diff --git a/bin/omarchy-pkg-aur-install b/bin/omarchy-pkg-aur-install index 25aff21..c99ee71 100755 --- a/bin/omarchy-pkg-aur-install +++ b/bin/omarchy-pkg-aur-install @@ -18,7 +18,7 @@ pkg_names=$(yay -Slqa | fzf "${fzf_args[@]}") if [[ -n "$pkg_names" ]]; then # Convert newline-separated selections to space-separated for yay - echo "$pkg_names" | tr '\n' ' ' | xargs yay -Sy --noconfirm + echo "$pkg_names" | tr '\n' ' ' | xargs yay -S --noconfirm sudo updatedb omarchy-show-done fi diff --git a/bin/omarchy-pkg-ignored b/bin/omarchy-pkg-ignored new file mode 100755 index 0000000..765fe69 --- /dev/null +++ b/bin/omarchy-pkg-ignored @@ -0,0 +1,7 @@ +#!/bin/bash + +IGNORED_PACKAGES_FILE="$OMARCHY_PATH/install/packages.ignored" + +if [[ -f $IGNORED_PACKAGES_FILE ]]; then + tr '\r\n' ',' <"$IGNORED_PACKAGES_FILE" | sed 's/,$//' +fi diff --git a/bin/omarchy-pkg-install b/bin/omarchy-pkg-install index 7f86106..8a6c1ce 100755 --- a/bin/omarchy-pkg-install +++ b/bin/omarchy-pkg-install @@ -14,12 +14,11 @@ fzf_args=( --color 'pointer:green,marker:green' ) -sudo pacman -Sy pkg_names=$(pacman -Slq | fzf "${fzf_args[@]}") if [[ -n "$pkg_names" ]]; then # Convert newline-separated selections to space-separated for yay - echo "$pkg_names" | tr '\n' ' ' | xargs sudo pacman -Sy --noconfirm + echo "$pkg_names" | tr '\n' ' ' | xargs sudo pacman -S --noconfirm sudo updatedb omarchy-show-done fi diff --git a/bin/omarchy-pkg-pinned b/bin/omarchy-pkg-pinned new file mode 100755 index 0000000..503d5c7 --- /dev/null +++ b/bin/omarchy-pkg-pinned @@ -0,0 +1,7 @@ +#!/bin/bash + +PINNED_PACKAGES_FILE="$OMARCHY_PATH/install/packages.pinned" + +if [[ -f $PINNED_PACKAGES_FILE ]]; then + tr '\r\n' ',' <"$PINNED_PACKAGES_FILE" | sed 's/,$//' +fi diff --git a/bin/omarchy-refresh-fastfetch b/bin/omarchy-refresh-fastfetch new file mode 100755 index 0000000..879c327 --- /dev/null +++ b/bin/omarchy-refresh-fastfetch @@ -0,0 +1,3 @@ +#!/bin/bash + +omarchy-refresh-config fastfetch/config.jsonc diff --git a/bin/omarchy-reset-sudo b/bin/omarchy-reset-sudo index 1829496..9482262 100755 --- a/bin/omarchy-reset-sudo +++ b/bin/omarchy-reset-sudo @@ -1,4 +1,4 @@ #!/bin/bash -echo "Resetting sudo lockout for user: $USER" +# Resetting sudo lockout for user su -c "faillock --reset --user $USER" diff --git a/bin/omarchy-snapshot b/bin/omarchy-snapshot index 3813ef5..7174081 100755 --- a/bin/omarchy-snapshot +++ b/bin/omarchy-snapshot @@ -16,12 +16,15 @@ case "$COMMAND" in 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}') for config in "${CONFIGS[@]}"; do sudo snapper -c "$config" create -c number -d "$DESC" done + echo ;; restore) sudo limine-snapper-restore diff --git a/bin/omarchy-update-available b/bin/omarchy-update-available index 808513e..2555821 100755 --- a/bin/omarchy-update-available +++ b/bin/omarchy-update-available @@ -1,13 +1,18 @@ #!/bin/bash -# Ensure remote is reachable -if ! git -C "$OMARCHY_PATH" ls-remote &>/dev/null; then - echo "Error: Unable to reach remote repository." +# Get remote tag +latest_tag=$(git -C "$OMARCHY_PATH" ls-remote --tags origin | grep -v "{}" | awk '{print $2}' | sed 's#refs/tags/##' | sort -V | tail -n 1) +if [[ -z "$latest_tag" ]]; then + echo "Error: Could not retrieve latest tag." exit 1 fi -latest_tag=$(git -C "$OMARCHY_PATH" ls-remote --tags origin | grep -v "{}" | awk '{print $2}' | sed 's#refs/tags/##' | sort -V | tail -n 1) +# Get local tag current_tag=$(git -C "$OMARCHY_PATH" describe --tags $(git -C "$OMARCHY_PATH" rev-list --tags --max-count=1)) +if [[ -z "$current_tag" ]]; then + echo "Error: Could not retrieve current tag." + exit 1 +fi if [[ "$current_tag" != "$latest_tag" ]]; then echo "Omarchy update available ($latest_tag)" diff --git a/bin/omarchy-update-system-pkgs b/bin/omarchy-update-system-pkgs index e3a12fa..2c41d73 100755 --- a/bin/omarchy-update-system-pkgs +++ b/bin/omarchy-update-system-pkgs @@ -1,12 +1,13 @@ #!/bin/bash echo -e "\e[32m\nUpdate system packages\e[0m" -sudo pacman -Syu --noconfirm -echo +echo "sudo pacman -Syu --noconfirm --ignore \"$(omarchy-pkg-ignored)\"" +sudo pacman -Syu --noconfirm --ignore "$(omarchy-pkg-ignored)" if omarchy-pkg-aur-accessible; then echo -e "\e[32m\nUpdate AUR packages\e[0m" - yay -Syu --noconfirm + echo "yay -Syu --noconfirm --ignore \"$(omarchy-pkg-ignored)\"" + yay -Syu --noconfirm --ignore "$(omarchy-pkg-ignored)" echo else echo -e "\e[31m\nAUR is unavailable (so skipping updates)\e[0m" diff --git a/bin/omarchy-version-branch b/bin/omarchy-version-branch new file mode 100755 index 0000000..43281d9 --- /dev/null +++ b/bin/omarchy-version-branch @@ -0,0 +1,3 @@ +#!/bin/bash + +echo $(git -C "$OMARCHY_PATH" rev-parse --abbrev-ref HEAD) diff --git a/boot.sh b/boot.sh index 17ad668..98df4e4 100755 --- a/boot.sh +++ b/boot.sh @@ -14,7 +14,7 @@ ansi_art=' ▄▄▄ clear echo -e "\n$ansi_art\n" -sudo pacman -Sy --noconfirm --needed git +sudo pacman -Syu --noconfirm --needed git # Use custom repo if specified, otherwise default to basecamp/omarchy OMARCHY_REPO="${OMARCHY_REPO:-basecamp/omarchy}" diff --git a/config/fastfetch/config.jsonc b/config/fastfetch/config.jsonc index c7a5739..b2cad35 100644 --- a/config/fastfetch/config.jsonc +++ b/config/fastfetch/config.jsonc @@ -66,7 +66,13 @@ "type": "command", "key": "\ue900 OS", "keyColor": "blue", - "text": "version=$(git -C ~/.local/share/omarchy describe --tags --abbrev=0 2>/dev/null); echo \"Omarchy $version\"" + "text": "version=$(omarchy-version); echo \"Omarchy $version\"" + }, + { + "type": "command", + "key": "│ ├󰘬", + "keyColor": "blue", + "text": "branch=$(omarchy-version-branch); echo \"$branch\"" }, { "type": "kernel", diff --git a/config/hypr/bindings.conf b/config/hypr/bindings.conf index 6164ec0..fc6d9ce 100644 --- a/config/hypr/bindings.conf +++ b/config/hypr/bindings.conf @@ -2,7 +2,7 @@ $terminal = uwsm app -- alacritty $browser = omarchy-launch-browser -bindd = SUPER, return, Terminal, exec, $terminal --working-directory $(omarchy-cmd-terminal-cwd) +bindd = SUPER, return, Terminal, exec, $terminal --working-directory=$(omarchy-cmd-terminal-cwd) 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 diff --git a/config/waybar/config.jsonc b/config/waybar/config.jsonc index 7ff8c0e..93873b7 100644 --- a/config/waybar/config.jsonc +++ b/config/waybar/config.jsonc @@ -46,7 +46,7 @@ "custom/update": { "format": "", "exec": "omarchy-update-available", - "on-click": "alacritty --class Omarchy --title Omarchy -e omarchy-update", + "on-click": "omarchy-launch-floating-terminal-with-presentation omarchy-update", "tooltip-format": "Omarchy update available", "interval": 3600 }, @@ -88,6 +88,7 @@ "tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%", "tooltip-format-charging": "{power:>1.0f}W↑ {capacity}%", "interval": 5, + "on-click": "omarchy-menu power", "states": { "warning": 20, "critical": 10 diff --git a/install.sh b/install.sh index 95035ba..794aad4 100755 --- a/install.sh +++ b/install.sh @@ -38,6 +38,7 @@ source $OMARCHY_INSTALL/config/xcompose.sh source $OMARCHY_INSTALL/config/mise-ruby.sh source $OMARCHY_INSTALL/config/docker.sh source $OMARCHY_INSTALL/config/mimetypes.sh +source $OMARCHY_INSTALL/config/localdb.sh source $OMARCHY_INSTALL/config/hardware/network.sh source $OMARCHY_INSTALL/config/hardware/fix-fkeys.sh source $OMARCHY_INSTALL/config/hardware/bluetooth.sh @@ -51,12 +52,6 @@ source $OMARCHY_INSTALL/login/plymouth.sh source $OMARCHY_INSTALL/login/limine-snapper.sh source $OMARCHY_INSTALL/login/alt-bootloaders.sh -# Updates -sudo updatedb - -# Update system packages -sudo pacman -Syu --noconfirm - # Reboot clear tte -i ~/.local/share/omarchy/logo.txt --frame-rate 920 laseretch diff --git a/install/config/detect-keyboard-layout.sh b/install/config/detect-keyboard-layout.sh index fcee66b..a6cbf82 100755 --- a/install/config/detect-keyboard-layout.sh +++ b/install/config/detect-keyboard-layout.sh @@ -2,7 +2,7 @@ # Copy over the keyboard layout that's been set in Arch during install to Hyprland conf="/etc/vconsole.conf" -hyprconf="$HOME/.config/hypr/hyprland.conf" +hyprconf="$HOME/.config/hypr/input.conf" layout=$(grep '^XKBLAYOUT=' "$conf" | cut -d= -f2 | tr -d '"') variant=$(grep '^XKBVARIANT=' "$conf" | cut -d= -f2 | tr -d '"') diff --git a/install/config/hardware/network.sh b/install/config/hardware/network.sh index 7013883..ff2e03e 100755 --- a/install/config/hardware/network.sh +++ b/install/config/hardware/network.sh @@ -4,7 +4,7 @@ # This can happen if archinstall used ethernet if ! command -v iwctl &>/dev/null; then sudo pacman -S --noconfirm --needed iwd - chrootable_systemctl_enable iwd.service + sudo systemctl enable iwd.service fi # Prevent systemd-networkd-wait-online timeout on boot diff --git a/install/config/hardware/nvidia.sh b/install/config/hardware/nvidia.sh index 6623de6..c2b54e5 100755 --- a/install/config/hardware/nvidia.sh +++ b/install/config/hardware/nvidia.sh @@ -36,7 +36,7 @@ if [ -n "$(lspci | grep -i 'nvidia')" ]; then fi # force package database refresh - sudo pacman -Syy + sudo pacman -Syu --noconfirm # Install packages PACKAGES_TO_INSTALL=( diff --git a/install/config/localdb.sh b/install/config/localdb.sh new file mode 100755 index 0000000..7372148 --- /dev/null +++ b/install/config/localdb.sh @@ -0,0 +1,2 @@ +# Update localdb so that locate will find everything installed +sudo updatedb diff --git a/install/packages.ignored b/install/packages.ignored new file mode 100644 index 0000000..e69de29 diff --git a/install/packages.pinned b/install/packages.pinned new file mode 100644 index 0000000..e69de29 diff --git a/install/packages.sh b/install/packages.sh index 7800d23..f50233a 100644 --- a/install/packages.sh +++ b/install/packages.sh @@ -95,7 +95,6 @@ sudo pacman -S --noconfirm --needed \ tldr \ tree-sitter-cli \ ttf-cascadia-mono-nerd \ - ttf-font-awesome \ ttf-ia-writer \ ttf-jetbrains-mono \ typora \ @@ -113,6 +112,7 @@ sudo pacman -S --noconfirm --needed \ wl-clip-persist \ wl-clipboard \ wl-screenrec \ + woff2-font-awesome \ xdg-desktop-portal-gtk \ xdg-desktop-portal-hyprland \ xmlstarlet \ diff --git a/install/packaging/pins.sh b/install/packaging/pins.sh new file mode 100755 index 0000000..bacb616 --- /dev/null +++ b/install/packaging/pins.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +# We pin explicit packages that are bad upstream here +pinned_packages=$(omarchy-pkg-pinned) + +if [[ -n $pinned_packages ]]; then + echo -e "\e[32m\nInstall pinned system packages\e[0m" + + for pinned in $pinned_packages; do + echo "sudo pacman -U --noconfirm $pinned" + sudo pacman -U --noconfirm $pinned + done +fi diff --git a/install/preflight/repositories.sh b/install/preflight/repositories.sh index 59c18f3..0e53313 100755 --- a/install/preflight/repositories.sh +++ b/install/preflight/repositories.sh @@ -1,16 +1,16 @@ #!/bin/bash # Install build tools -sudo pacman -Sy --needed --noconfirm base-devel +sudo pacman -S --needed --noconfirm base-devel # Add fun and color and verbosity to the pacman installer if ! grep -q "ILoveCandy" /etc/pacman.conf; then sudo sed -i '/^\[options\]/a Color\nILoveCandy\nVerbosePkgLists' /etc/pacman.conf fi -# Add the Omarchy repository as first choice +# Add the Omarchy repository if ! grep -q "omarchy" /etc/pacman.conf; then - sudo sed -i '/^\[core\]/i [omarchy]\nSigLevel = Optional TrustAll\nServer = https:\/\/pkgs.omarchy.org\/$arch\/\n' /etc/pacman.conf + echo -e "\n[omarchy]\nSigLevel = Optional TrustAll\nServer = https://pkgs.omarchy.org/\$arch/\n" | sudo tee -a /etc/pacman.conf >/dev/null fi # Set mirrors to global ones only @@ -30,16 +30,10 @@ if [[ "$(uname -m)" == "x86_64" ]] && [ -z "$DISABLE_CHAOTIC" ]; then if ! grep -q "chaotic-aur" /etc/pacman.conf; then echo -e '\n[chaotic-aur]\nInclude = /etc/pacman.d/chaotic-mirrorlist' | sudo tee -a /etc/pacman.conf >/dev/null fi - - # Refresh all repos - sudo pacman -Sy else echo -e "Failed to install Chaotic-AUR, so won't include it in pacman config!" fi fi -# Allow repository index updates without sudo -sudo tee /etc/sudoers.d/repositories >/dev/null </dev/null; then - sudo pacman -Sy --noconfirm --needed walker-bin libqalculate + sudo pacman -S --noconfirm --needed walker-bin libqalculate sudo pacman -Rns --noconfirm wofi rm -rf ~/.config/wofi diff --git a/migrations/1753352057.sh b/migrations/1753352057.sh index 3c3b915..3265f6a 100755 --- a/migrations/1753352057.sh +++ b/migrations/1753352057.sh @@ -11,7 +11,7 @@ if [[ "$(uname -m)" == "x86_64" ]] && ! grep -q '^\[chaotic-aur\]' /etc/pacman.c echo -e '\n[chaotic-aur]\nInclude = /etc/pacman.d/chaotic-mirrorlist' | sudo tee -a /etc/pacman.conf >/dev/null # Refresh pacman package databases - sudo pacman -Sy + sudo pacman -Syu --noconfirm else echo "Failed to install Chaotic-AUR, so won't include it in pacman config!" fi diff --git a/migrations/1754509222.sh b/migrations/1754509222.sh index 8ad7ad4..ced63c6 100644 --- a/migrations/1754509222.sh +++ b/migrations/1754509222.sh @@ -1,3 +1,3 @@ echo "Add xmlstarlet needed for updating fonts via Omarchy menu" -sudo pacman -Sy --noconfirm --needed xmlstarlet +sudo pacman -S --noconfirm --needed xmlstarlet diff --git a/migrations/1754515289.sh b/migrations/1754515289.sh index 17a3d56..23f4db5 100644 --- a/migrations/1754515289.sh +++ b/migrations/1754515289.sh @@ -1,4 +1,4 @@ echo "Update and restart Walker to resolve stuck Omarchy menu" -sudo pacman -Sy --noconfirm walker-bin +sudo pacman -Syu --noconfirm walker-bin omarchy-restart-walker diff --git a/migrations/1755164105.sh b/migrations/1755164105.sh index 17dd2a7..a17ac58 100644 --- a/migrations/1755164105.sh +++ b/migrations/1755164105.sh @@ -11,7 +11,7 @@ set_theme_colors() { if command -v chromium &>/dev/null; then sudo pacman -Rns --noconfirm chromium || true - sudo pacman -Sy --noconfirm omarchy-chromium + sudo pacman -S --noconfirm omarchy-chromium if pgrep -x chromium; then if gum confirm "Chromium must be restarted. Ready?"; then diff --git a/migrations/1755795450.sh b/migrations/1755795450.sh index 96df3fc..3e2b3e6 100644 --- a/migrations/1755795450.sh +++ b/migrations/1755795450.sh @@ -1,3 +1,3 @@ echo "Ensure latest uwsm is installed" -sudo pacman -Sy --noconfirm uwsm +sudo pacman -Syu --noconfirm uwsm diff --git a/migrations/1755870033.sh b/migrations/1755870033.sh index e1a0be0..fde865b 100644 --- a/migrations/1755870033.sh +++ b/migrations/1755870033.sh @@ -1,3 +1,5 @@ echo "Use current terminal shell cwd for new terminal working directories" -sed -i 's|bindd = SUPER, return, Terminal, exec, \$terminal|bindd = SUPER, return, Terminal, exec, $terminal --working-directory $(omarchy-cmd-terminal-cwd)|' ~/.config/hypr/bindings.conf +if ! grep -q "working-directory" ~/.config/hypr/bindings.conf; then + sed -i '/bindd = SUPER, return, Terminal, exec, \$terminal/ s|$| --working-directory=$(omarchy-cmd-terminal-cwd)|' ~/.config/hypr/bindings.conf +fi diff --git a/migrations/1756103168.sh b/migrations/1756103168.sh deleted file mode 100644 index bef59f4..0000000 --- a/migrations/1756103168.sh +++ /dev/null @@ -1,6 +0,0 @@ -echo "Allow pacman -Sy without sudo to easier installs" - -sudo tee /etc/sudoers.d/repositories >/dev/null <> /etc/pacman.conf' diff --git a/migrations/1756363651.sh b/migrations/1756363651.sh new file mode 100644 index 0000000..3df0985 --- /dev/null +++ b/migrations/1756363651.sh @@ -0,0 +1,3 @@ +echo "Update About config to include the Omarchy branch name" + +omarchy-refresh-fastfetch diff --git a/migrations/1756365707.sh b/migrations/1756365707.sh new file mode 100644 index 0000000..dc8c60d --- /dev/null +++ b/migrations/1756365707.sh @@ -0,0 +1,4 @@ +# FIXME: This really shouldn't happen, need to find out why! +echo "Ensure walker is present" + +sudo pacman -Syu --needed --noconfirm walker-bin