diff --git a/applications/icons/Basecamp.png b/applications/icons/Basecamp.png new file mode 100644 index 0000000..3edec48 Binary files /dev/null and b/applications/icons/Basecamp.png differ diff --git a/applications/icons/ChatGPT.png b/applications/icons/ChatGPT.png new file mode 100644 index 0000000..cc68d78 Binary files /dev/null and b/applications/icons/ChatGPT.png differ diff --git a/applications/icons/Discord.png b/applications/icons/Discord.png new file mode 100644 index 0000000..a82dbc6 Binary files /dev/null and b/applications/icons/Discord.png differ diff --git a/applications/icons/Disk Usage.png b/applications/icons/Disk Usage.png new file mode 100644 index 0000000..6cc55ba Binary files /dev/null and b/applications/icons/Disk Usage.png differ diff --git a/applications/icons/Docker.png b/applications/icons/Docker.png new file mode 100644 index 0000000..aeadd22 Binary files /dev/null and b/applications/icons/Docker.png differ diff --git a/applications/icons/Figma.png b/applications/icons/Figma.png new file mode 100644 index 0000000..62ffa90 Binary files /dev/null and b/applications/icons/Figma.png differ diff --git a/applications/icons/GitHub.png b/applications/icons/GitHub.png new file mode 100644 index 0000000..f3248e4 Binary files /dev/null and b/applications/icons/GitHub.png differ diff --git a/applications/icons/Google Contacts.png b/applications/icons/Google Contacts.png new file mode 100644 index 0000000..6d99dc8 Binary files /dev/null and b/applications/icons/Google Contacts.png differ diff --git a/applications/icons/Google Messages.png b/applications/icons/Google Messages.png new file mode 100644 index 0000000..bc911a5 Binary files /dev/null and b/applications/icons/Google Messages.png differ diff --git a/applications/icons/Google Photos.png b/applications/icons/Google Photos.png new file mode 100644 index 0000000..8b8c642 Binary files /dev/null and b/applications/icons/Google Photos.png differ diff --git a/applications/icons/HEY.png b/applications/icons/HEY.png new file mode 100644 index 0000000..3ac92d9 Binary files /dev/null and b/applications/icons/HEY.png differ diff --git a/applications/icons/WhatsApp.png b/applications/icons/WhatsApp.png new file mode 100644 index 0000000..10ecdfb Binary files /dev/null and b/applications/icons/WhatsApp.png differ diff --git a/applications/icons/X.png b/applications/icons/X.png new file mode 100644 index 0000000..99131de Binary files /dev/null and b/applications/icons/X.png differ diff --git a/applications/icons/YouTube.png b/applications/icons/YouTube.png new file mode 100644 index 0000000..46ed4ca Binary files /dev/null and b/applications/icons/YouTube.png differ diff --git a/applications/icons/Zoom.png b/applications/icons/Zoom.png new file mode 100644 index 0000000..622db52 Binary files /dev/null and b/applications/icons/Zoom.png differ diff --git a/applications/nvim.desktop b/applications/nvim.desktop index ce0a131..ed11859 100644 --- a/applications/nvim.desktop +++ b/applications/nvim.desktop @@ -2,7 +2,7 @@ Name=Neovim GenericName=Text Editor Comment=Edit text files -Exec=alacritty --class=nvim --title=nvim -e nvim -- %F +Exec=$TERMINAL --class=nvim --title=nvim -e nvim -- %F Terminal=false Type=Application Keywords=Text;editor; diff --git a/bin/omarchy-cmd-audio-switch b/bin/omarchy-cmd-audio-switch index af6d53a..63ce7a1 100755 --- a/bin/omarchy-cmd-audio-switch +++ b/bin/omarchy-cmd-audio-switch @@ -2,7 +2,7 @@ focused_monitor="$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')" -sinks=$(pactl -f json list sinks) +sinks=$(pactl -f json list sinks | jq '[.[] | select((.ports | length == 0) or ([.ports[]? | .availability != "not available"] | any))]') sinks_count=$(echo "$sinks" | jq '. | length') if [ "$sinks_count" -eq 0 ]; then diff --git a/bin/omarchy-cmd-first-run b/bin/omarchy-cmd-first-run index 9334d1d..f9b9d57 100755 --- a/bin/omarchy-cmd-first-run +++ b/bin/omarchy-cmd-first-run @@ -6,7 +6,12 @@ FIRST_RUN_MODE=~/.local/state/omarchy/first-run.mode if [[ -f "$FIRST_RUN_MODE" ]]; then rm -f "$FIRST_RUN_MODE" - $OMARCHY_PATH/install/first-run/battery-monitor.sh - $OMARCHY_PATH/install/first-run/firewall.sh + + bash "$OMARCHY_PATH/install/first-run/battery-monitor.sh" + bash "$OMARCHY_PATH/install/first-run/firewall.sh" + bash "$OMARCHY_PATH/install/first-run/gnome-theme.sh" sudo rm -f /etc/sudoers.d/first-run + + bash "$OMARCHY_PATH/install/first-run/wifi.sh" + bash "$OMARCHY_PATH/install/first-run/welcome.sh" fi diff --git a/bin/omarchy-cmd-screenrecord b/bin/omarchy-cmd-screenrecord index f9a604b..29fda33 100755 --- a/bin/omarchy-cmd-screenrecord +++ b/bin/omarchy-cmd-screenrecord @@ -8,31 +8,47 @@ if [[ ! -d "$OUTPUT_DIR" ]]; then exit 1 fi -if [[ $2 == "audio" ]]; then - AUDIO="--audio" -else - AUDIO="" -fi +# Selects region or output +SCOPE="$1" -screenrecording() { +# Selects audio inclusion or not +AUDIO=$([[ $2 == "audio" ]] && echo "--audio") + +start_screenrecording() { filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4" - notify-send "Screen recording starting..." -t 1000 - sleep 1 - if lspci | grep -Eqi 'nvidia|intel.*graphics'; then - wf-recorder $AUDIO -f "$filename" -c libx264 -p crf=23 -p preset=medium -p movflags=+faststart "$@" + if lspci | grep -qi 'nvidia'; then + wf-recorder $AUDIO -f "$filename" -c libx264 -p crf=23 -p preset=medium -p movflags=+faststart "$@" & else - wl-screenrec $AUDIO -f "$filename" --ffmpeg-encoder-options="-c:v libx264 -crf 23 -preset medium -movflags +faststart" "$@" + wl-screenrec $AUDIO -f "$filename" --ffmpeg-encoder-options="-c:v libx264 -crf 23 -preset medium -movflags +faststart" "$@" & fi + + toggle_screenrecording_indicator } -if pgrep -x wl-screenrec >/dev/null || pgrep -x wf-recorder >/dev/null; then +stop_screenrecording() { pkill -x wl-screenrec pkill -x wf-recorder + notify-send "Screen recording saved to $OUTPUT_DIR" -t 2000 -elif [[ "$1" == "output" ]]; then - screenrecording + + sleep 0.2 # ensures the process is actually dead before we check + toggle_screenrecording_indicator +} + +toggle_screenrecording_indicator() { + pkill -RTMIN+8 waybar +} + +screenrecording_active() { + pgrep -x wl-screenrec >/dev/null || pgrep -x wf-recorder >/dev/null +} + +if screenrecording_active; then + stop_screenrecording +elif [[ "$SCOPE" == "output" ]]; then + start_screenrecording else region=$(slurp) || exit 1 - screenrecording -g "$region" + start_screenrecording -g "$region" fi diff --git a/bin/omarchy-cmd-screenrecord-stop b/bin/omarchy-cmd-screenrecord-stop deleted file mode 100755 index 5631920..0000000 --- a/bin/omarchy-cmd-screenrecord-stop +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -if pgrep -x wl-screenrec >/dev/null || pgrep -x wf-recorder >/dev/null; then - pkill -x wl-screenrec - pkill -x wf-recorder - notify-send "Screen recording stopped" -t 2000 -fi diff --git a/bin/omarchy-cmd-screensaver b/bin/omarchy-cmd-screensaver index 46997e5..e336c8b 100755 --- a/bin/omarchy-cmd-screensaver +++ b/bin/omarchy-cmd-screensaver @@ -1,6 +1,11 @@ #!/bin/bash -function exit_screensaver { +screensaver_in_focus() { + hyprctl activewindow -j | jq -e '.class == "Screensaver"' >/dev/null 2>&1 +} + +exit_screensaver() { + hyprctl keyword cursor:invisible false pkill -x tte 2>/dev/null pkill -f "alacritty --class Screensaver" 2>/dev/null exit 0 @@ -8,6 +13,8 @@ function exit_screensaver { trap exit_screensaver SIGINT SIGTERM SIGHUP SIGQUIT +hyprctl keyword cursor:invisible true + while true; do effect=$(tte 2>&1 | grep -oP '{\K[^}]+' | tr ',' ' ' | tr ' ' '\n' | sed -n '/^beams$/,$p' | sort -u | shuf -n1) tte -i ~/.config/omarchy/branding/screensaver.txt \ @@ -15,7 +22,7 @@ while true; do "$effect" & while pgrep -x tte >/dev/null; do - if read -n 1 -t 3; then + if read -n 1 -t 3 || ! screensaver_in_focus; then exit_screensaver fi done diff --git a/bin/omarchy-cmd-screenshot b/bin/omarchy-cmd-screenshot index 05cce7b..330dde3 100755 --- a/bin/omarchy-cmd-screenshot +++ b/bin/omarchy-cmd-screenshot @@ -8,7 +8,7 @@ if [[ ! -d "$OUTPUT_DIR" ]]; then exit 1 fi -pkill slurp || hyprshot -m ${1:-region} --raw --freeze | +pkill slurp || hyprshot -m ${1:-region} --raw | satty --filename - \ --output-filename "$OUTPUT_DIR/screenshot-$(date +'%Y-%m-%d_%H-%M-%S').png" \ --early-exit \ diff --git a/bin/omarchy-cmd-share b/bin/omarchy-cmd-share new file mode 100755 index 0000000..78113a1 --- /dev/null +++ b/bin/omarchy-cmd-share @@ -0,0 +1,44 @@ +#!/bin/bash + +if (($# == 0)); then + echo "Usage: omarchy-cmd-share [clipboard|file|folder]" + exit 1 +fi + +MODE="$1" +shift + +if [[ $MODE == "clipboard" ]]; then + TEMP_FILE=$(mktemp --suffix=.txt) + wl-paste >"$TEMP_FILE" + FILES="$TEMP_FILE" +else + if (($# > 0)); then + FILES="$*" + else + if [[ $MODE == "folder" ]]; then + # Pick a single folder from home directory + FILES=$(find "$HOME" -type d 2>/dev/null | fzf) + else + # Pick one or more files from home directory + FILES=$(find "$HOME" -type f 2>/dev/null | fzf --multi) + fi + [ -z "$FILES" ] && exit 0 + fi +fi + +# Run LocalSend in its own systemd service (detached from terminal) +# Convert newline-separated files to space-separated arguments +if [[ $MODE != "clipboard" ]] && echo "$FILES" | grep -q $'\n'; then + # Multiple files selected - convert newlines to array + readarray -t FILE_ARRAY <<<"$FILES" + systemd-run --user --quiet --collect localsend --headless send "${FILE_ARRAY[@]}" +else + # Single file or clipboard mode + systemd-run --user --quiet --collect localsend --headless send "$FILES" +fi + +# Note: Temporary file will remain until system cleanup for clipboard mode +# This ensures the file content is available for the LocalSend GUI + +exit 0 diff --git a/bin/omarchy-cmd-tzupdate b/bin/omarchy-cmd-tzupdate index da135e9..eb39bf0 100755 --- a/bin/omarchy-cmd-tzupdate +++ b/bin/omarchy-cmd-tzupdate @@ -1,7 +1,8 @@ #!/bin/bash +notify-send " Updating time and timezone..." sudo systemctl restart systemd-timesyncd sudo tzupdate new_timezone=$(timedatectl show -p Timezone --value) omarchy-restart-waybar -notify-send "Time synced and timezone set to $new_timezone" +notify-send " Time updated and timezone set to $new_timezone" diff --git a/bin/omarchy-font-current b/bin/omarchy-font-current index c3dc4c9..feea8d6 100755 --- a/bin/omarchy-font-current +++ b/bin/omarchy-font-current @@ -1,3 +1,3 @@ #!/bin/bash -grep -oP 'family\s*=\s*"\K[^"]+' ~/.config/alacritty/alacritty.toml | head -n1 +grep -oP 'font-family:\s*["'\'']?\K[^;"'\'']+' ~/.config/waybar/style.css | head -n1 diff --git a/bin/omarchy-font-set b/bin/omarchy-font-set index a45467d..5ac0ef4 100755 --- a/bin/omarchy-font-set +++ b/bin/omarchy-font-set @@ -4,7 +4,20 @@ font_name="$1" if [[ -n "$font_name" && "$font_name" != "CNCLD" ]]; then if fc-list | grep -iq "$font_name"; then - sed -i "s/family = \".*\"/family = \"$font_name\"/g" ~/.config/alacritty/alacritty.toml + if [[ -f ~/.config/alacritty/alacritty.toml ]]; then + sed -i "s/family = \".*\"/family = \"$font_name\"/g" ~/.config/alacritty/alacritty.toml + fi + + if [[ -f ~/.config/kitty/kitty.conf ]]; then + sed -i "s/^font_family .*/font_family $font_name/g" ~/.config/kitty/kitty.conf + pkill -USR1 kitty + fi + + if [[ -f ~/.config/ghostty/config ]]; then + sed -i "s/font-family = \".*\"/font-family = \"$font_name\"/g" ~/.config/ghostty/config + pkill -SIGUSR2 ghostty + fi + sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/waybar/style.css sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/swayosd/style.css xmlstarlet ed -L \ diff --git a/bin/omarchy-install-chromium-google-account b/bin/omarchy-install-chromium-google-account new file mode 100755 index 0000000..5087cee --- /dev/null +++ b/bin/omarchy-install-chromium-google-account @@ -0,0 +1,13 @@ +#!/bin/bash + +if [[ -f ~/.config/chromium-flags.conf ]]; then + CONF=~/.config/chromium-flags.conf + + grep -qxF -- "--oauth2-client-id=77185425430.apps.googleusercontent.com" "$CONF" || + echo "--oauth2-client-id=77185425430.apps.googleusercontent.com" >>"$CONF" + + grep -qxF -- "--oauth2-client-secret=OTJgUOQcT7lO7GsGZq2G4IlT" "$CONF" || + echo "--oauth2-client-secret=OTJgUOQcT7lO7GsGZq2G4IlT" >>"$CONF" + + echo "Now you can login to your Google Account in Chromium." +fi diff --git a/bin/omarchy-install-dev-env b/bin/omarchy-install-dev-env index e538cba..f2b7619 100755 --- a/bin/omarchy-install-dev-env +++ b/bin/omarchy-install-dev-env @@ -119,6 +119,7 @@ java) zig) echo -e "Installing Zig...\n" mise use --global zig@latest + mise use -g zls@latest ;; ocaml) echo -e "Installing OCaml...\n" diff --git a/bin/omarchy-install-steam b/bin/omarchy-install-steam index ec21ff2..7533370 100755 --- a/bin/omarchy-install-steam +++ b/bin/omarchy-install-steam @@ -1,8 +1,5 @@ #!/bin/bash -echo "Adding multilib repository for 32-bit compatibility" -sudo sed -i '/^#\s*\[multilib\]/,/^#\s*Include/ s/^#\s*//' /etc/pacman.conf - echo "Now pick dependencies matching your graphics card" sudo pacman -Syu --noconfirm steam setsid gtk-launch steam >/dev/null 2>&1 & diff --git a/bin/omarchy-install-terminal b/bin/omarchy-install-terminal new file mode 100755 index 0000000..6828506 --- /dev/null +++ b/bin/omarchy-install-terminal @@ -0,0 +1,19 @@ +#!/bin/bash + +if (($# == 0)); then + echo "Usage: omarchy-install-terminal [alacritty|ghostty|kitty]" + exit 1 +fi + +package="$1" + +# Install package +omarchy-pkg-add $package + +# Set as default terminal +echo "Setting $package as new default terminal..." +sed -i "/export TERMINAL=/ c\export TERMINAL=$package" ~/.config/uwsm/default + +# Relaunch is needed for new default to take effect +echo +gum confirm "Relaunch Hyprland to use new terminal?" && uwsm stop diff --git a/bin/omarchy-launch-about b/bin/omarchy-launch-about new file mode 100755 index 0000000..0072222 --- /dev/null +++ b/bin/omarchy-launch-about @@ -0,0 +1,3 @@ +#!/bin/bash + +exec setsid uwsm app -- alacritty --class=Omarchy -o font.size=9 -e bash -c 'fastfetch; read -n 1 -s' diff --git a/bin/omarchy-launch-browser b/bin/omarchy-launch-browser index 86904af..536e212 100755 --- a/bin/omarchy-launch-browser +++ b/bin/omarchy-launch-browser @@ -1,3 +1,12 @@ #!/bin/bash -exec setsid uwsm app -- $(sed -n 's/^Exec=\([^ ]*\).*/\1/p' {~/.local,~/.nix-profile,/usr}/share/applications/$(xdg-settings get default-web-browser) 2>/dev/null | head -1) ${args[@]} $@ +default_browser=$(xdg-settings get default-web-browser) +browser_exec=$(sed -n 's/^Exec=\([^ ]*\).*/\1/p' {~/.local,~/.nix-profile,/usr}/share/applications/$default_browser 2>/dev/null | head -1) + +if [[ $browser_exec =~ (firefox|zen|librewolf) ]]; then + private_flag="--private-window" +else + private_flag="--incognito" +fi + +exec setsid uwsm app -- "$browser_exec" "${@/--private/$private_flag}" diff --git a/bin/omarchy-launch-editor b/bin/omarchy-launch-editor new file mode 100755 index 0000000..157168a --- /dev/null +++ b/bin/omarchy-launch-editor @@ -0,0 +1,10 @@ +#!/bin/bash + +case "${EDITOR:-nvim}" in +nvim | vim | nano | micro | hx) + exec setsid uwsm app -- "$TERMINAL" -e "$EDITOR" "$@" + ;; +*) + exec setsid uwsm app -- "$EDITOR" "$@" + ;; +esac diff --git a/bin/omarchy-launch-floating-terminal-with-presentation b/bin/omarchy-launch-floating-terminal-with-presentation index ecba263..0529f2a 100755 --- a/bin/omarchy-launch-floating-terminal-with-presentation +++ b/bin/omarchy-launch-floating-terminal-with-presentation @@ -1,4 +1,4 @@ #!/bin/bash cmd="$*" -setsid alacritty --class Omarchy -e bash -c "omarchy-show-logo; $cmd; omarchy-show-done" +exec setsid uwsm app -- alacritty --class=Omarchy --title=Omarchy -e bash -c "omarchy-show-logo; $cmd; omarchy-show-done" diff --git a/bin/omarchy-launch-or-focus b/bin/omarchy-launch-or-focus new file mode 100755 index 0000000..af63f00 --- /dev/null +++ b/bin/omarchy-launch-or-focus @@ -0,0 +1,16 @@ +#!/bin/bash + +if (($# == 0)); then + echo "Usage: omarchy-launch-or-focus [window-pattern] [launch-command]" + exit 1 +fi + +WINDOW_PATTERN="$1" +LAUNCH_COMMAND="${2:-"uwsm app -- $WINDOW_PATTERN"}" +WINDOW_ADDRESS=$(hyprctl clients -j | jq -r --arg p "$WINDOW_PATTERN" '.[]|select((.class+" "+.title)|test($p;"i"))|.address' | head -n1) + +if [[ -n $WINDOW_ADDRESS ]]; then + hyprctl dispatch focuswindow "address:$WINDOW_ADDRESS" +else + eval exec $LAUNCH_COMMAND +fi diff --git a/bin/omarchy-launch-or-focus-webapp b/bin/omarchy-launch-or-focus-webapp new file mode 100755 index 0000000..c54159f --- /dev/null +++ b/bin/omarchy-launch-or-focus-webapp @@ -0,0 +1,8 @@ +#!/bin/bash + +if (($# == 0)); then + echo "Usage: omarchy-launch-or-focus-webapp [window-pattern] [url]" + exit 1 +fi + +exec omarchy-launch-or-focus "$1" "omarchy-launch-webapp '$2'" diff --git a/bin/omarchy-launch-screensaver b/bin/omarchy-launch-screensaver index eebef0c..f81b4cd 100755 --- a/bin/omarchy-launch-screensaver +++ b/bin/omarchy-launch-screensaver @@ -17,6 +17,8 @@ focused=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name') for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do hyprctl dispatch focusmonitor $m + + # FIXME: Find a way to make this generic where we it can work for kitty + ghostty hyprctl dispatch exec -- \ alacritty --class Screensaver \ --config-file ~/.local/share/omarchy/default/alacritty/screensaver.toml \ diff --git a/bin/omarchy-launch-wifi b/bin/omarchy-launch-wifi new file mode 100755 index 0000000..fe04f84 --- /dev/null +++ b/bin/omarchy-launch-wifi @@ -0,0 +1,3 @@ +#!/bin/bash + +exec setsid uwsm app -- "$TERMINAL" --class=Impala -e impala "$@" diff --git a/bin/omarchy-lock-screen b/bin/omarchy-lock-screen index d3f6276..cad6f81 100755 --- a/bin/omarchy-lock-screen +++ b/bin/omarchy-lock-screen @@ -9,4 +9,4 @@ if pgrep -x "1password" >/dev/null; then fi # Avoid running screensaver when locked -pkill -f "alacritty --class Screensaver" +pkill -f "$TERMINAL --class Screensaver" diff --git a/bin/omarchy-menu b/bin/omarchy-menu index 7245e1d..b93a498 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -37,16 +37,16 @@ menu() { } terminal() { - alacritty --class Omarchy -e "$@" + alacritty --class=Omarchy -e "$@" } present_terminal() { omarchy-launch-floating-terminal-with-presentation $1 } -edit_in_nvim() { +open_in_editor() { notify-send "Editing config file" "$1" - alacritty -e nvim "$1" + omarchy-launch-editor "$1" } install() { @@ -61,6 +61,10 @@ install_font() { present_terminal "echo 'Installing $1...'; sudo pacman -S --noconfirm --needed $2 && sleep 2 && omarchy-font-set '$3'" } +install_terminal() { + present_terminal "omarchy-install-terminal $1" +} + aur_install() { present_terminal "echo 'Installing $1 from AUR...'; yay -S --noconfirm $2" } @@ -81,41 +85,21 @@ show_learn_menu() { esac } -show_style_menu() { - case $(menu "Style" "󰸌 Theme\n Font\n Background\n󱄄 Screensaver\n About") in - *Theme*) show_theme_menu ;; - *Font*) show_font_menu ;; - *Background*) omarchy-theme-bg-next ;; - *Screensaver*) edit_in_nvim ~/.config/omarchy/branding/screensaver.txt ;; - *About*) edit_in_nvim ~/.config/omarchy/branding/about.txt ;; +show_trigger_menu() { + case $(menu "Trigger" " Capture\n Share\n󰔎 Toggle") in + *Capture*) show_capture_menu ;; + *Share*) show_share_menu ;; + *Toggle*) show_toggle_menu ;; *) show_main_menu ;; esac } -show_theme_menu() { - theme=$(menu "Theme" "$(omarchy-theme-list)" "" "$(omarchy-theme-current)") - if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then - back_to show_style_menu - else - omarchy-theme-set "$theme" - fi -} - -show_font_menu() { - theme=$(menu "Font" "$(omarchy-font-list)" "-w 350" "$(omarchy-font-current)") - if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then - back_to show_style_menu - else - omarchy-font-set "$theme" - fi -} - show_capture_menu() { case $(menu "Capture" " Screenshot\n Screenrecord\n󰃉 Color") in *Screenshot*) show_screenshot_menu ;; *Screenrecord*) show_screenrecord_menu ;; *Color*) pkill hyprpicker || hyprpicker -a ;; - *) show_main_menu ;; + *) show_trigger_menu ;; esac } @@ -138,40 +122,79 @@ show_screenrecord_menu() { esac } +show_share_menu() { + case $(menu "Share" " Clipboard\n File \n Folder") in + *Clipboard*) terminal bash -c "omarchy-cmd-share clipboard" ;; + *File*) terminal bash -c "omarchy-cmd-share file" ;; + *Folder*) terminal bash -c "omarchy-cmd-share folder" ;; + *) back_to show_trigger_menu ;; + esac +} + show_toggle_menu() { case $(menu "Toggle" "󱄄 Screensaver\n󰔎 Nightlight\n󱫖 Idle Lock\n󰍜 Top Bar") in *Screensaver*) omarchy-toggle-screensaver ;; *Nightlight*) omarchy-toggle-nightlight ;; *Idle*) omarchy-toggle-idle ;; *Bar*) omarchy-toggle-waybar ;; + *) show_trigger_menu ;; + esac +} + +show_style_menu() { + case $(menu "Style" "󰸌 Theme\n Font\n Background\n Hyprland\n󱄄 Screensaver\n About") in + *Theme*) show_theme_menu ;; + *Font*) show_font_menu ;; + *Background*) omarchy-theme-bg-next ;; + *Hyprland*) open_in_editor ~/.config/hypr/looknfeel.conf ;; + *Screensaver*) open_in_editor ~/.config/omarchy/branding/screensaver.txt ;; + *About*) open_in_editor ~/.config/omarchy/branding/about.txt ;; *) show_main_menu ;; esac } +show_theme_menu() { + theme=$(menu "Theme" "$(omarchy-theme-list)" "" "$(omarchy-theme-current)") + if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then + back_to show_style_menu + else + omarchy-theme-set "$theme" + fi +} + +show_font_menu() { + theme=$(menu "Font" "$(omarchy-font-list)" "-w 350" "$(omarchy-font-current)") + if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then + back_to show_style_menu + else + omarchy-font-set "$theme" + fi +} + show_setup_menu() { local options=" Audio\n Wifi\n󰂯 Bluetooth\n󱐋 Power Profile\n󰍹 Monitors" [ -f ~/.config/hypr/bindings.conf ] && options="$options\n Keybindings" [ -f ~/.config/hypr/input.conf ] && options="$options\n Input" - options="$options\n󰱔 DNS\n Config\n󰈷 Fingerprint\n Fido2" + options="$options\n Defaults\n󰱔 DNS\n Security\n Config" case $(menu "Setup" "$options") in - *Audio*) alacritty --class=Wiremix -e wiremix ;; + *Audio*) $TERMINAL --class=Wiremix -e wiremix ;; *Wifi*) rfkill unblock wifi - alacritty --class=Impala -e impala + omarchy-launch-wifi ;; *Bluetooth*) rfkill unblock bluetooth blueberry ;; *Power*) show_setup_power_menu ;; - *Monitors*) edit_in_nvim ~/.config/hypr/monitors.conf ;; - *Keybindings*) edit_in_nvim ~/.config/hypr/bindings.conf ;; - *Input*) edit_in_nvim ~/.config/hypr/input.conf ;; + *Monitors*) open_in_editor ~/.config/hypr/monitors.conf ;; + *Keybindings*) open_in_editor ~/.config/hypr/bindings.conf ;; + *Input*) open_in_editor ~/.config/hypr/input.conf ;; + *Defaults*) open_in_editor ~/.config/uwsm/default ;; *DNS*) present_terminal omarchy-setup-dns ;; + *Security*) show_setup_security_menu ;; *Config*) show_setup_config_menu ;; - *Fingerprint*) present_terminal omarchy-setup-fingerprint ;; - *Fido2*) present_terminal omarchy-setup-fido2 ;; *) show_main_menu ;; esac } @@ -188,20 +211,28 @@ show_setup_power_menu() { show_setup_config_menu() { case $(menu "Setup" " Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar\n󰞅 XCompose") in - *Hyprland*) edit_in_nvim ~/.config/hypr/hyprland.conf ;; - *Hypridle*) edit_in_nvim ~/.config/hypr/hypridle.conf && omarchy-restart-hypridle ;; - *Hyprlock*) edit_in_nvim ~/.config/hypr/hyprlock.conf ;; - *Hyprsunset*) edit_in_nvim ~/.config/hypr/hyprsunset.conf && omarchy-restart-hyprsunset ;; - *Swayosd*) edit_in_nvim ~/.config/swayosd/config.toml && omarchy-restart-swayosd ;; - *Walker*) edit_in_nvim ~/.config/walker/config.toml && omarchy-restart-walker ;; - *Waybar*) edit_in_nvim ~/.config/waybar/config.jsonc && omarchy-restart-waybar ;; - *XCompose*) edit_in_nvim ~/.XCompose && omarchy-restart-xcompose ;; + *Hyprland*) open_in_editor ~/.config/hypr/hyprland.conf ;; + *Hypridle*) open_in_editor ~/.config/hypr/hypridle.conf && omarchy-restart-hypridle ;; + *Hyprlock*) open_in_editor ~/.config/hypr/hyprlock.conf ;; + *Hyprsunset*) open_in_editor ~/.config/hypr/hyprsunset.conf && omarchy-restart-hyprsunset ;; + *Swayosd*) open_in_editor ~/.config/swayosd/config.toml && omarchy-restart-swayosd ;; + *Walker*) open_in_editor ~/.config/walker/config.toml && omarchy-restart-walker ;; + *Waybar*) open_in_editor ~/.config/waybar/config.jsonc && omarchy-restart-waybar ;; + *XCompose*) open_in_editor ~/.XCompose && omarchy-restart-xcompose ;; *) show_main_menu ;; esac } +show_setup_security_menu() { + case $(menu "Setup" "󰈷 Fingerprint\n Fido2") in + *Fingerprint*) present_terminal omarchy-setup-fingerprint ;; + *Fido2*) present_terminal omarchy-setup-fido2 ;; + *) show_setup_menu ;; + esac +} + show_install_menu() { - case $(menu "Install" "󰣇 Package\n󰣇 AUR\n Web App\n TUI\n Service\n Style\n󰵮 Development\n Editor\n󱚤 AI\n Gaming") in + case $(menu "Install" "󰣇 Package\n󰣇 AUR\n Web App\n TUI\n Service\n Style\n󰵮 Development\n Editor\n Terminal\n󱚤 AI\n Gaming") in *Package*) terminal omarchy-pkg-install ;; *AUR*) terminal omarchy-pkg-aur-install ;; *Web*) present_terminal omarchy-webapp-install ;; @@ -210,6 +241,7 @@ show_install_menu() { *Style*) show_install_style_menu ;; *Development*) show_install_development_menu ;; *Editor*) show_install_editor_menu ;; + *Terminal*) show_install_terminal_menu ;; *AI*) show_install_ai_menu ;; *Gaming*) show_install_gaming_menu ;; *) show_main_menu ;; @@ -217,10 +249,11 @@ show_install_menu() { } show_install_service_menu() { - case $(menu "Install" " Dropbox\n Tailscale\n󰟵 Bitwarden") in + case $(menu "Install" " Dropbox\n Tailscale\n󰟵 Bitwarden\n Chromium Account") in *Dropbox*) present_terminal omarchy-install-dropbox ;; *Tailscale*) present_terminal omarchy-install-tailscale ;; *Bitwarden*) install_and_launch "Bitwarden" "bitwarden bitwarden-cli" "bitwarden" ;; + *Chromium*) present_terminal omarchy-install-chromium-google-account ;; *) show_install_menu ;; esac } @@ -237,6 +270,15 @@ show_install_editor_menu() { esac } +show_install_terminal_menu() { + case $(menu "Install" " Alacritty\n Ghostty\n Kitty") in + *Alacritty*) install_terminal "alacritty" ;; + *Ghostty*) install_terminal "ghostty" ;; + *Kitty*) install_terminal "kitty" ;; + *) show_install_menu ;; + esac +} + show_install_ai_menu() { ollama_pkg=$( (command -v nvidia-smi &>/dev/null && echo ollama-cuda) || @@ -342,8 +384,9 @@ show_remove_menu() { } show_update_menu() { - case $(menu "Update" " Omarchy\n Config\n󰸌 Themes\n Process\n󰇅 Hardware\n Password\n Timezone") in + case $(menu "Update" " Omarchy\n Branch\n Config\n󰸌 Extra Themes\n Process\n󰇅 Hardware\n Password\n Timezone") 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 ;; @@ -354,6 +397,13 @@ show_update_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 ;; @@ -408,25 +458,25 @@ show_system_menu() { } show_main_menu() { - go_to_menu "$(menu "Go" "󰀻 Apps\n󰧑 Learn\n Capture\n󰔎 Toggle\n Style\n Setup\n󰉉 Install\n󰭌 Remove\n Update\n About\n System")" + go_to_menu "$(menu "Go" "󰀻 Apps\n󰧑 Learn\n󱓞 Trigger\n Style\n Setup\n󰉉 Install\n󰭌 Remove\n Update\n About\n System")" } go_to_menu() { case "${1,,}" in *apps*) walker -p "Launch…" ;; *learn*) show_learn_menu ;; + *trigger*) show_trigger_menu ;; + *share*) show_share_menu ;; *style*) show_style_menu ;; *theme*) show_theme_menu ;; - *capture*) show_capture_menu ;; *screenshot*) show_screenshot_menu ;; *screenrecord*) show_screenrecord_menu ;; - *toggle*) show_toggle_menu ;; *setup*) show_setup_menu ;; *power*) show_setup_power_menu ;; *install*) show_install_menu ;; *remove*) show_remove_menu ;; *update*) show_update_menu ;; - *about*) alacritty --class Omarchy -o font.size=9 -e bash -c 'fastfetch; read -n 1 -s' ;; + *about*) omarchy-launch-about ;; *system*) show_system_menu ;; esac } diff --git a/bin/omarchy-notification-dismiss b/bin/omarchy-notification-dismiss new file mode 100755 index 0000000..ee2a062 --- /dev/null +++ b/bin/omarchy-notification-dismiss @@ -0,0 +1,13 @@ +#!/bin/bash + +if (($# == 0)); then + echo "Usage: omarchy-notification-dismiss " + exit 1 +fi + +# Find the first notification whose 'summary' matches the regex in $1 +notification_id=$(makoctl list | grep -F "$1" | head -n1 | sed -E 's/^Notification ([0-9]+):.*/\1/') + +if [[ -n $notification_id ]]; then + makoctl dismiss -n $notification_id +fi diff --git a/bin/omarchy-pkg-aur-install b/bin/omarchy-pkg-aur-install index 97be84b..41710e0 100755 --- a/bin/omarchy-pkg-aur-install +++ b/bin/omarchy-pkg-aur-install @@ -2,13 +2,15 @@ fzf_args=( --multi - --preview 'yay -Sii {1}' - --preview-label='alt-p: toggle description, alt-j/k: scroll, tab: multi-select, F11: maximize' + --preview 'yay -Siia {1}' + --preview-label='alt-p: toggle description, alt-b/B: toggle PKGBUILD, alt-j/k: scroll, tab: multi-select, F11: maximize' --preview-label-pos='bottom' --preview-window 'down:65%:wrap' --bind 'alt-p:toggle-preview' --bind 'alt-d:preview-half-page-down,alt-u:preview-half-page-up' --bind 'alt-k:preview-up,alt-j:preview-down' + --bind 'alt-b:change-preview:yay -Gpa {1} | tail -n +5' + --bind 'alt-B:change-preview:yay -Siia {1}' --color 'pointer:green,marker:green' ) diff --git a/bin/omarchy-refresh-plymouth b/bin/omarchy-refresh-plymouth index 8e2a825..fce86bf 100755 --- a/bin/omarchy-refresh-plymouth +++ b/bin/omarchy-refresh-plymouth @@ -7,4 +7,4 @@ if command -v limine-mkinitcpio &>/dev/null; then sudo limine-mkinitcpio else sudo mkinitcpio -P -fi \ No newline at end of file +fi diff --git a/bin/omarchy-restart-walker b/bin/omarchy-restart-walker index ae165b3..b2dc9a4 100755 --- a/bin/omarchy-restart-walker +++ b/bin/omarchy-restart-walker @@ -1,7 +1,7 @@ #!/bin/bash pkill walker -# FIXME: Reenable the walker service once the memory leak has been fixed +# FIXME: Just deal with the memory leak for now. # See https://github.com/basecamp/omarchy/issues/698 -# setsid uwsm app -- walker --gapplication-service & +setsid uwsm app -- walker --gapplication-service & echo # Always end in success so we don't terminate further running diff --git a/bin/omarchy-theme-set b/bin/omarchy-theme-set index eeb5009..7305971 100755 --- a/bin/omarchy-theme-set +++ b/bin/omarchy-theme-set @@ -1,10 +1,7 @@ #!/bin/bash -# omarchy-theme-set: Set a theme, specified by its name. -# Usage: omarchy-theme-set - -if [[ -z "$1" && "$1" != "CNCLD" ]]; then - echo "Usage: omarchy-theme-set " >&2 +if [[ -z $1 && $1 != "CNCLD" ]]; then + echo "Usage: omarchy-theme-set " exit 1 fi @@ -16,54 +13,26 @@ THEME_PATH="$THEMES_DIR/$THEME_NAME" # Check if the theme entered exists if [[ ! -d "$THEME_PATH" ]]; then - echo "Theme '$THEME_NAME' does not exist in $THEMES_DIR" >&2 - exit 2 + echo "Theme '$THEME_NAME' does not exist in $THEMES_DIR" + exit 1 fi # Update theme symlinks ln -nsf "$THEME_PATH" "$CURRENT_THEME_DIR" -# Change gnome modes -if [[ -f ~/.config/omarchy/current/theme/light.mode ]]; then - gsettings set org.gnome.desktop.interface color-scheme "prefer-light" - gsettings set org.gnome.desktop.interface gtk-theme "Adwaita" -else - gsettings set org.gnome.desktop.interface color-scheme "prefer-dark" - gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark" -fi - -# Change gnome icon theme color -if [[ -f ~/.config/omarchy/current/theme/icons.theme ]]; then - gsettings set org.gnome.desktop.interface icon-theme "$(<~/.config/omarchy/current/theme/icons.theme)" -else - gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue" -fi - -# Change Chromium colors -if command -v chromium &>/dev/null; then - if [[ -f ~/.config/omarchy/current/theme/light.mode ]]; then - chromium --no-startup-window --set-color-scheme="light" - else - chromium --no-startup-window --set-color-scheme="dark" - fi - - if [[ -f ~/.config/omarchy/current/theme/chromium.theme ]]; then - chromium --no-startup-window --set-theme-color="$(<~/.config/omarchy/current/theme/chromium.theme)" - else - # Use a default, neutral grey if theme doesn't have a color - chromium --no-startup-window --set-theme-color="28,32,39" - fi -fi - -# Trigger alacritty config reload -touch "$HOME/.config/alacritty/alacritty.toml" +# Change background with theme +omarchy-theme-bg-next # Restart components to apply new theme -pkill -SIGUSR2 btop omarchy-restart-waybar omarchy-restart-swayosd -makoctl reload hyprctl reload +pkill -SIGUSR2 btop +makoctl reload -# Set new background -omarchy-theme-bg-next +# Change gnome, browser, vscode themes +omarchy-theme-set-terminal +omarchy-theme-set-gnome +omarchy-theme-set-eza +omarchy-theme-set-browser +omarchy-theme-set-vscode diff --git a/bin/omarchy-theme-set-browser b/bin/omarchy-theme-set-browser new file mode 100755 index 0000000..759d2c4 --- /dev/null +++ b/bin/omarchy-theme-set-browser @@ -0,0 +1,23 @@ +#!/bin/bash + +CHROMIUM_THEME=~/.config/omarchy/current/theme/chromium.theme + +if omarchy-cmd-present chromium || omarchy-cmd-present brave; then + if [[ -f $CHROMIUM_THEME ]]; then + rgb=$(<$CHROMIUM_THEME) + THEME_HEX_COLOR=$(printf '#%02x%02x%02x' ${rgb//,/ }) + else + # Use a default, neutral grey if theme doesn't have a color + THEME_HEX_COLOR="#1c2027" + fi + + if omarchy-cmd-present chromium; then + echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\"}" | tee "/etc/chromium/policies/managed/color.json" >/dev/null + chromium --refresh-platform-policy --no-startup-window + fi + + if omarchy-cmd-present brave; then + echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\"}" | tee "/etc/brave/policies/managed/color.json" >/dev/null + brave --refresh-platform-policy --no-startup-window + fi +fi diff --git a/bin/omarchy-theme-set-eza b/bin/omarchy-theme-set-eza new file mode 100755 index 0000000..cde362c --- /dev/null +++ b/bin/omarchy-theme-set-eza @@ -0,0 +1,7 @@ +#!/bin/bash + +if [ -f ~/.config/omarchy/current/theme/eza.yml ]; then + ln -snf ~/.config/omarchy/current/theme/eza.yml ~/.config/eza/theme.yml +else + rm -f ~/.config/eza/theme.yml +fi diff --git a/bin/omarchy-theme-set-gnome b/bin/omarchy-theme-set-gnome new file mode 100755 index 0000000..da25b66 --- /dev/null +++ b/bin/omarchy-theme-set-gnome @@ -0,0 +1,18 @@ +#!/bin/bash + +# Change gnome modes +if [[ -f ~/.config/omarchy/current/theme/light.mode ]]; then + gsettings set org.gnome.desktop.interface color-scheme "prefer-light" + gsettings set org.gnome.desktop.interface gtk-theme "Adwaita" +else + gsettings set org.gnome.desktop.interface color-scheme "prefer-dark" + gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark" +fi + +# Change gnome icon theme color +GNOME_ICONS_THEME=~/.config/omarchy/current/theme/icons.theme +if [[ -f $GNOME_ICONS_THEME ]]; then + gsettings set org.gnome.desktop.interface icon-theme "$(<$GNOME_ICONS_THEME)" +else + gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue" +fi diff --git a/bin/omarchy-theme-set-terminal b/bin/omarchy-theme-set-terminal new file mode 100755 index 0000000..8a6bdbd --- /dev/null +++ b/bin/omarchy-theme-set-terminal @@ -0,0 +1,7 @@ +#!/bin/bash + +case "$TERMINAL" in +"alacritty") touch ~/.config/alacritty/alacritty.toml ;; +"kitty") killall -SIGUSR1 kitty ;; +"ghostty") killall -SIGUSR2 ghostty ;; +esac diff --git a/bin/omarchy-theme-set-vscode b/bin/omarchy-theme-set-vscode new file mode 100755 index 0000000..635ea28 --- /dev/null +++ b/bin/omarchy-theme-set-vscode @@ -0,0 +1,26 @@ +#!/bin/bash + +VS_CODE_THEME="$HOME/.config/omarchy/current/theme/vscode.json" +VS_CODE_SETTINGS="$HOME/.config/Code/User/settings.json" +VS_CODE_SKIP_FLAG="$HOME/.local/state/omarchy/toggles/skip-vscode-theme-changes" + +if omarchy-cmd-present code && [[ ! -f "$VS_CODE_SKIP_FLAG" ]]; then + if [[ -f "$VS_CODE_THEME" ]]; then + theme_name=$(jq -r '.name' "$VS_CODE_THEME") + extension=$(jq -r '.extension' "$VS_CODE_THEME") + + # Install VS Code theme extension + if [[ -n "$extension" ]] && ! code --list-extensions | grep -Fxq "$extension"; then + notify-send " Installing VS Code theme for $theme_name" + code --install-extension "$extension" >/dev/null + fi + + # Update theme in settings.json + jq -n --arg t "$theme_name" '(input? // {}) | .["workbench.colorTheme"] = $t' "$VS_CODE_SETTINGS" >"${VS_CODE_SETTINGS}.new" + else + # Remove theme from settings.json when the theme doesn't have vscode support + jq 'del(.["workbench.colorTheme"])' "$VS_CODE_SETTINGS" >"${VS_CODE_SETTINGS}.new" + fi + + mv "${VS_CODE_SETTINGS}.new" "$VS_CODE_SETTINGS" +fi diff --git a/bin/omarchy-tui-install b/bin/omarchy-tui-install index a15d364..121ce94 100755 --- a/bin/omarchy-tui-install +++ b/bin/omarchy-tui-install @@ -20,13 +20,16 @@ fi ICON_DIR="$HOME/.local/share/applications/icons" DESKTOP_FILE="$HOME/.local/share/applications/$APP_NAME.desktop" -ICON_PATH="$ICON_DIR/$APP_NAME.png" -mkdir -p "$ICON_DIR" - -if ! curl -sL -o "$ICON_PATH" "$ICON_URL"; then - echo "Error: Failed to download icon." - return 1 +if [[ ! "$ICON_URL" =~ ^https?:// ]] && [ -f "$ICON_URL" ]; then + ICON_PATH="$ICON_URL" +else + ICON_PATH="$ICON_DIR/$APP_NAME.png" + mkdir -p "$ICON_DIR" + if ! curl -sL -o "$ICON_PATH" "$ICON_URL"; then + echo "Error: Failed to download icon." + exit 1 + fi fi if [[ $WINDOW_STYLE == "float" ]]; then @@ -40,7 +43,7 @@ cat >"$DESKTOP_FILE" </dev/null 2>&1; then + { + echo "=========================================" + echo "SYSTEM INFORMATION" + echo "=========================================" + # Use fastfetch with no logo to get clean output + fastfetch --logo none --pipe 2>/dev/null || echo "Failed to get system info" + echo "" + echo "=========================================" + echo "LOG CONTENT" + echo "=========================================" + echo "" + } >"$SYSTEM_INFO" +else + # Fallback to basic info if fastfetch isn't available + { + echo "=========================================" + echo "SYSTEM INFORMATION" + echo "=========================================" + echo "Hostname: $(hostname)" + echo "Kernel: $(uname -r)" + echo "Date: $(date)" + echo "" + echo "=========================================" + echo "LOG CONTENT" + echo "=========================================" + echo "" + } >"$SYSTEM_INFO" +fi + +case "$LOG_TYPE" in +install) + ARCHINSTALL_LOG="/var/log/archinstall/install.log" + OMARCHY_LOG="/var/log/omarchy-install.log" + + # Combine system info with logs + cat "$SYSTEM_INFO" >"$TEMP_LOG" + cat $ARCHINSTALL_LOG $OMARCHY_LOG >>"$TEMP_LOG" 2>/dev/null + + if [ ! -s "$TEMP_LOG" ]; then + echo "Error: No install logs found" + exit 1 + fi + + echo "Uploading installation log to 0x0.st..." + ;; + +this-boot) + # Combine system info with boot logs + cat "$SYSTEM_INFO" >"$TEMP_LOG" + journalctl -b 0 >>"$TEMP_LOG" 2>/dev/null + + if [ ! -s "$TEMP_LOG" ]; then + echo "Error: No logs found for current boot" + exit 1 + fi + + echo "Uploading current boot logs to 0x0.st..." + ;; + +last-boot) + # Combine system info with previous boot logs + cat "$SYSTEM_INFO" >"$TEMP_LOG" + journalctl -b -1 >>"$TEMP_LOG" 2>/dev/null + + if [ ! -s "$TEMP_LOG" ]; then + echo "Error: No logs found for previous boot" + exit 1 + fi + + echo "Uploading previous boot logs to 0x0.st..." + ;; + +installed) + # System info plus all installed packages + cat "$SYSTEM_INFO" >"$TEMP_LOG" + { + echo "" + echo "=========================================" + echo "INSTALLED PACKAGES (pacman -Q)" + echo "=========================================" + pacman -Q 2>/dev/null || echo "Failed to get package list" + } >>"$TEMP_LOG" + + if [ ! -s "$TEMP_LOG" ]; then + echo "Error: Failed to gather system information" + exit 1 + fi + + echo "Uploading system information to 0x0.st..." + ;; + +*) + echo "Usage: $0 [install|this-boot|last-boot|system-info]" + echo " install - Upload installation logs (default)" + echo " this-boot - Upload logs from current boot" + echo " last-boot - Upload logs from previous boot" + echo " installed - Upload system info and installed packages" + exit 1 + ;; +esac + +echo "" + +URL=$(curl -sF "file=@$TEMP_LOG" -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 diff --git a/bin/omarchy-webapp-handler-zoom b/bin/omarchy-webapp-handler-zoom new file mode 100755 index 0000000..a27411e --- /dev/null +++ b/bin/omarchy-webapp-handler-zoom @@ -0,0 +1,20 @@ +#!/bin/bash + +url="$1" +web_url="https://app.zoom.us/wc/home" + +if [[ $url =~ ^zoom(mtg|us):// ]]; then + confno=$(echo "$url" | sed -n 's/.*[?&]confno=\([^&]*\).*/\1/p') + + if [[ -n $confno ]]; then + pwd=$(echo "$url" | sed -n 's/.*[?&]pwd=\([^&]*\).*/\1/p') + + if [[ -n $pwd ]]; then + web_url="https://app.zoom.us/wc/join/$confno?pwd=$pwd" + else + web_url="https://app.zoom.us/wc/join/$confno" + fi + fi +fi + +exec omarchy-launch-webapp "$web_url" diff --git a/bin/omarchy-webapp-install b/bin/omarchy-webapp-install index a75a328..e954e84 100755 --- a/bin/omarchy-webapp-install +++ b/bin/omarchy-webapp-install @@ -1,46 +1,71 @@ #!/bin/bash -if [ "$#" -ne 3 ]; then +if [ "$#" -lt 3 ]; then echo -e "\e[32mLet's create a new web app you can start with the app launcher.\n\e[0m" APP_NAME=$(gum input --prompt "Name> " --placeholder "My favorite web app") APP_URL=$(gum input --prompt "URL> " --placeholder "https://example.com") - ICON_URL=$(gum input --prompt "Icon URL> " --placeholder "See https://dashboardicons.com (must use PNG!)") + ICON_REF=$(gum input --prompt "Icon URL> " --placeholder "See https://dashboardicons.com (must use PNG!)") + CUSTOM_EXEC="" + MIME_TYPES="" + INTERACTIVE_MODE=true else APP_NAME="$1" APP_URL="$2" - ICON_URL="$3" + ICON_REF="$3" + CUSTOM_EXEC="$4" # Optional custom exec command + MIME_TYPES="$5" # Optional mime types + INTERACTIVE_MODE=false fi -if [[ -z "$APP_NAME" || -z "$APP_URL" || -z "$ICON_URL" ]]; then +# Ensure valid execution +if [[ -z "$APP_NAME" || -z "$APP_URL" || -z "$ICON_REF" ]]; then echo "You must set app name, app URL, and icon URL!" exit 1 fi +# Refer to local icon or fetch remotely from URL ICON_DIR="$HOME/.local/share/applications/icons" -DESKTOP_FILE="$HOME/.local/share/applications/$APP_NAME.desktop" -ICON_PATH="$ICON_DIR/$APP_NAME.png" - -mkdir -p "$ICON_DIR" - -if ! curl -sL -o "$ICON_PATH" "$ICON_URL"; then - echo "Error: Failed to download icon." - return 1 +if [[ $ICON_REF =~ ^https?:// ]]; then + ICON_PATH="$ICON_DIR/$APP_NAME.png" + if curl -sL -o "$ICON_PATH" "$ICON_REF"; then + ICON_PATH="$ICON_DIR/$APP_NAME.png" + else + echo "Error: Failed to download icon." + exit 1 + fi +else + ICON_PATH="$ICON_DIR/$ICON_REF" fi +# Use custom exec if provided, otherwise default behavior +if [[ -n $CUSTOM_EXEC ]]; then + EXEC_COMMAND="$CUSTOM_EXEC" +else + EXEC_COMMAND="omarchy-launch-webapp $APP_URL" +fi + +# Create application .desktop file +DESKTOP_FILE="$HOME/.local/share/applications/$APP_NAME.desktop" + cat >"$DESKTOP_FILE" <>"$DESKTOP_FILE" +fi + chmod +x "$DESKTOP_FILE" -if [ "$#" -ne 3 ]; then +if [[ $INTERACTIVE_MODE == true ]]; then echo -e "You can now find $APP_NAME using the app launcher (SUPER + SPACE)\n" fi diff --git a/boot.sh b/boot.sh index 98df4e4..9593f75 100755 --- a/boot.sh +++ b/boot.sh @@ -1,5 +1,8 @@ #!/bin/bash +# Set install mode to online since boot.sh is used for curl installations +export OMARCHY_ONLINE_INSTALL=true + ansi_art=' ▄▄▄ ▄█████▄ ▄███████████▄ ▄███████ ▄███████ ▄███████ ▄█ █▄ ▄█ █▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ @@ -26,7 +29,7 @@ git clone "https://github.com/${OMARCHY_REPO}.git" ~/.local/share/omarchy >/dev/ # Use custom branch if instructed, otherwise default to master OMARCHY_REF="${OMARCHY_REF:-master}" if [[ $OMARCHY_REF != "master" ]]; then - echo -e "\eUsing branch: $OMARCHY_REF" + echo -e "\e[32mUsing branch: $OMARCHY_REF\e[0m" cd ~/.local/share/omarchy git fetch origin "${OMARCHY_REF}" && git checkout "${OMARCHY_REF}" cd - diff --git a/config/chromium-flags.conf b/config/chromium-flags.conf index d6d120e..88c8082 100644 --- a/config/chromium-flags.conf +++ b/config/chromium-flags.conf @@ -1,3 +1,4 @@ --ozone-platform=wayland --ozone-platform-hint=wayland --enable-features=TouchpadOverscrollHistoryNavigation +--load-extension=~/.local/share/omarchy/default/chromium/extensions/copy-url diff --git a/config/ghostty/config b/config/ghostty/config new file mode 100644 index 0000000..ee46b1d --- /dev/null +++ b/config/ghostty/config @@ -0,0 +1,21 @@ +# Dynamic theme colors +config-file = ?"~/.config/omarchy/current/theme/ghostty.conf" + +# Font +font-family = "CaskaydiaMono Nerd Font" +font-style = Regular +font-size = 9 + +# Window +window-padding-x = 14 +window-padding-y = 14 +confirm-close-surface=false +resize-overlay = never + +# Cursor stlying +cursor-style = "block" +cursor-style-blink = false +shell-integration-features = no-cursor + +# Keyboard bindings +keybind = f11=toggle_fullscreen diff --git a/config/hypr/bindings.conf b/config/hypr/bindings.conf index 6990753..6076049 100644 --- a/config/hypr/bindings.conf +++ b/config/hypr/bindings.conf @@ -1,16 +1,17 @@ # Application bindings -$terminal = uwsm app -- alacritty +$terminal = uwsm app -- $TERMINAL $browser = omarchy-launch-browser 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 -bindd = SUPER, N, Neovim, exec, $terminal -e nvim +bindd = SUPER SHIFT, B, Browser (private), exec, $browser --private +bindd = SUPER, M, Music, exec, omarchy-launch-or-focus spotify +bindd = SUPER, N, Editor, exec, omarchy-launch-editor 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, G, Signal, exec, omarchy-launch-or-focus signal "uwsm app -- signal-desktop" +bindd = SUPER, O, Obsidian, exec, omarchy-launch-or-focus obsidian "uwsm app -- obsidian -disable-gpu --enable-wayland-ime" bindd = SUPER, slash, Passwords, exec, uwsm app -- 1password # If your web app url contains #, type it as ## to prevent hyperland treat it as comments @@ -18,9 +19,9 @@ bindd = SUPER, A, ChatGPT, exec, omarchy-launch-webapp "https://chatgpt.com" bindd = SUPER SHIFT, A, Grok, exec, omarchy-launch-webapp "https://grok.com" bindd = SUPER, C, Calendar, exec, omarchy-launch-webapp "https://app.hey.com/calendar/weeks/" bindd = SUPER, E, Email, exec, omarchy-launch-webapp "https://app.hey.com" -bindd = SUPER, Y, YouTube, exec, omarchy-launch-webapp "https://youtube.com/" -bindd = SUPER SHIFT, G, WhatsApp, exec, omarchy-launch-webapp "https://web.whatsapp.com/" -bindd = SUPER ALT, G, Google Messages, exec, omarchy-launch-webapp "https://messages.google.com/web/conversations" +bindd = SUPER, Y, YouTube, exec, omarchy-launch-or-focus-webapp YouTube "https://youtube.com/" +bindd = SUPER SHIFT, G, WhatsApp, exec, omarchy-launch-or-focus-webapp WhatsApp "https://web.whatsapp.com/" +bindd = SUPER ALT, G, Google Messages, exec, omarchy-launch-or-focus-webapp "Google Messages" "https://messages.google.com/web/conversations" bindd = SUPER, X, X, exec, omarchy-launch-webapp "https://x.com/" bindd = SUPER SHIFT, X, X Post, exec, omarchy-launch-webapp "https://x.com/compose/post" diff --git a/config/hypr/envs.conf b/config/hypr/envs.conf index 53e0825..a2a3641 100644 --- a/config/hypr/envs.conf +++ b/config/hypr/envs.conf @@ -1,3 +1,2 @@ # Extra env variables -# Note: You must relaunch Hyprland after changing envs (use Super+Esc, then Relaunch) # env = MY_GLOBAL_ENV,setting diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf index e03c300..3a91c97 100644 --- a/config/hypr/hyprland.conf +++ b/config/hypr/hyprland.conf @@ -16,4 +16,5 @@ source = ~/.config/hypr/monitors.conf source = ~/.config/hypr/input.conf source = ~/.config/hypr/bindings.conf source = ~/.config/hypr/envs.conf +source = ~/.config/hypr/looknfeel.conf source = ~/.config/hypr/autostart.conf diff --git a/config/hypr/hyprlock.conf b/config/hypr/hyprlock.conf index f3e8159..d2df696 100644 --- a/config/hypr/hyprlock.conf +++ b/config/hypr/hyprlock.conf @@ -3,6 +3,8 @@ source = ~/.config/omarchy/current/theme/hyprlock.conf background { monitor = color = $color + path = ~/.config/omarchy/current/background + blur_passes = 3 } animations { diff --git a/config/hypr/hyprsunset.conf b/config/hypr/hyprsunset.conf index 1827445..78bba7d 100644 --- a/config/hypr/hyprsunset.conf +++ b/config/hypr/hyprsunset.conf @@ -1,6 +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 + time = 07:00 identity = true } \ No newline at end of file diff --git a/config/hypr/input.conf b/config/hypr/input.conf index 20d208c..2a2d25c 100644 --- a/config/hypr/input.conf +++ b/config/hypr/input.conf @@ -28,4 +28,8 @@ input { } # Scroll faster in the terminal -windowrule = scrolltouchpad 1.5, class:Alacritty +windowrule = scrolltouchpad 1.5, tag:terminal + +# Enable touchpad gestures for changing workspaces +# See https://wiki.hyprland.org/Configuring/Gestures/ +# gesture = 3, horizontal, workspace diff --git a/config/hypr/looknfeel.conf b/config/hypr/looknfeel.conf new file mode 100644 index 0000000..1816d77 --- /dev/null +++ b/config/hypr/looknfeel.conf @@ -0,0 +1,17 @@ +# Change the default Omarchy look'n'feel + +# https://wiki.hyprland.org/Configuring/Variables/#general +general { + # No gaps between windows + # gaps_in = 0 + # gaps_out = 0 + + # Use master layout instead of dwindle + # layout = master +} + +# https://wiki.hyprland.org/Configuring/Variables/#decoration +decoration { + # Use round window corners + # rounding = 8 +} diff --git a/config/kitty/kitty.conf b/config/kitty/kitty.conf new file mode 100644 index 0000000..5e2faf1 --- /dev/null +++ b/config/kitty/kitty.conf @@ -0,0 +1,30 @@ +include ~/.config/omarchy/current/theme/kitty.conf + +# Font +font_family CaskaydiaMono Nerd Font +bold_italic_font auto +font_size 9.0 + +# Window +window_padding_width 14 +window_padding_height 14 +hide_window_decorations yes +show_window_resize_notification no +confirm_os_window_close 0 + +# Keybindings +map F11 toggle_fullscreen + +# Allow remote access +single_instance yes +allow_remote_control yes + +# Aesthetics +cursor_shape block +enable_audio_bell no + +# Minimal Tab bar styling +tab_bar_edge bottom +tab_bar_style powerline +tab_powerline_style slanted +tab_title_template {title}{' :{}:'.format(num_windows) if num_windows > 1 else ''} diff --git a/config/uwsm/default b/config/uwsm/default new file mode 100644 index 0000000..c072e32 --- /dev/null +++ b/config/uwsm/default @@ -0,0 +1,4 @@ +# Changes require a relaunch of Hyprland to take effect. + +export TERMINAL=alacritty +export EDITOR=nvim diff --git a/config/uwsm/env b/config/uwsm/env index fa70e53..4fbfa76 100644 --- a/config/uwsm/env +++ b/config/uwsm/env @@ -1,7 +1,11 @@ +# Changes require a relaunch of Hyprland to take effect. + +# Ensure Omarchy bins are in the path export OMARCHY_PATH=$HOME/.local/share/omarchy export PATH=$OMARCHY_PATH/bin/:$PATH -export TERMINAL=alacritty -if command -v mise &> /dev/null; then - eval "$(mise activate bash)" -fi +# Set default terminal and editor +source ~/.config/uwsm/default + +# Activate mise if present on the system +omarchy-cmd-present mise && eval "$(mise activate bash)" diff --git a/config/waybar/config.jsonc b/config/waybar/config.jsonc index 0ec9af4..adb981a 100644 --- a/config/waybar/config.jsonc +++ b/config/waybar/config.jsonc @@ -5,7 +5,7 @@ "spacing": 0, "height": 26, "modules-left": ["custom/omarchy", "hyprland/workspaces"], - "modules-center": ["clock", "custom/update"], + "modules-center": ["clock", "custom/update", "custom/screenrecording-indicator"], "modules-right": [ "group/tray-expander", "bluetooth", @@ -48,13 +48,14 @@ "exec": "omarchy-update-available", "on-click": "omarchy-launch-floating-terminal-with-presentation omarchy-update", "tooltip-format": "Omarchy update available", + "signal": 7, "interval": 3600 }, "cpu": { "interval": 5, "format": "󰍛", - "on-click": "alacritty -e btop" + "on-click": "$TERMINAL -e btop" }, "clock": { "format": "{:L%A %H:%M}", @@ -67,13 +68,13 @@ "format": "{icon}", "format-wifi": "{icon}", "format-ethernet": "󰀂", - "format-disconnected": "󰖪", + "format-disconnected": "󰤮", "tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}", "tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}", "tooltip-format-disconnected": "Disconnected", "interval": 3, "spacing": 1, - "on-click": "alacritty --class=Impala -e impala" + "on-click": "omarchy-launch-wifi" }, "battery": { "format": "{capacity}% {icon}", @@ -103,11 +104,11 @@ }, "pulseaudio": { "format": "{icon}", - "on-click": "alacritty --class=Wiremix -e wiremix", + "on-click": "$TERMINAL --class=Wiremix -e wiremix", "on-click-right": "pamixer -t", "tooltip-format": "Playing at {volume}%", "scroll-step": 5, - "format-muted": "󰝟", + "format-muted": "", "format-icons": { "default": ["", "", ""] } @@ -124,6 +125,12 @@ "format": " ", "tooltip": false }, + "custom/screenrecording-indicator": { + "on-click": "omarchy-cmd-screenrecord", + "exec": "$OMARCHY_PATH/default/waybar/indicators/screen-recording.sh", + "signal": 8, + "return-type": "json" + }, "tray": { "icon-size": 12, "spacing": 12 diff --git a/config/waybar/style.css b/config/waybar/style.css index 924e185..2cf371b 100644 --- a/config/waybar/style.css +++ b/config/waybar/style.css @@ -37,6 +37,7 @@ #bluetooth, #pulseaudio, #custom-omarchy, +#custom-screenrecording-indicator, #custom-update { min-width: 12px; margin: 0 7.5px; @@ -61,3 +62,13 @@ tooltip { .hidden { opacity: 0; } + +#custom-screenrecording-indicator { + min-width: 12px; + margin-left: 8.75px; + font-size: 10px; +} + +#custom-screenrecording-indicator.active { + color: #a55555; +} diff --git a/default/bash/envs b/default/bash/envs index 603a896..932ad3e 100644 --- a/default/bash/envs +++ b/default/bash/envs @@ -1,4 +1,3 @@ # Editor used by CLI -export EDITOR="nvim" export SUDO_EDITOR="$EDITOR" export BAT_THEME=ansi diff --git a/default/bash/shell b/default/bash/shell index 672aeb1..7b39de7 100644 --- a/default/bash/shell +++ b/default/bash/shell @@ -10,5 +10,5 @@ if [[ ! -v BASH_COMPLETION_VERSINFO && -f /usr/share/bash-completion/bash_comple fi # Set complete path -export PATH="./bin:$HOME/.local/bin:$PATH" +export PATH="$HOME/.local/bin:$PATH" set +h diff --git a/default/bashrc b/default/bashrc index 03fb323..f9ea4fd 100644 --- a/default/bashrc +++ b/default/bashrc @@ -6,9 +6,3 @@ source ~/.local/share/omarchy/default/bash/rc # # Make an alias for invoking commands you use constantly # alias p='python' -# -# Use VSCode instead of neovim as your default editor -# export EDITOR="code" -# -# Set a custom prompt with the directory revealed (alternatively use https://starship.rs) -# PS1="\W \[\e]0;\w\a\]$PS1" diff --git a/default/chromium/extensions/copy-url/background.js b/default/chromium/extensions/copy-url/background.js new file mode 100644 index 0000000..a2537c5 --- /dev/null +++ b/default/chromium/extensions/copy-url/background.js @@ -0,0 +1,21 @@ +chrome.commands.onCommand.addListener((command) => { + if (command === 'copy-url') { + chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => { + const currentTab = tabs[0]; + + chrome.scripting.executeScript({ + target: { tabId: currentTab.id }, + func: () => { + navigator.clipboard.writeText(window.location.href); + } + }).then(() => { + chrome.notifications.create({ + type: 'basic', + iconUrl: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==', + title: ' URL copied to clipboard', + message: '' + }); + }); + }); + } +}); diff --git a/default/chromium/extensions/copy-url/icon.png b/default/chromium/extensions/copy-url/icon.png new file mode 120000 index 0000000..e088259 --- /dev/null +++ b/default/chromium/extensions/copy-url/icon.png @@ -0,0 +1 @@ +../../../../icon.png \ No newline at end of file diff --git a/default/chromium/extensions/copy-url/manifest.json b/default/chromium/extensions/copy-url/manifest.json new file mode 100644 index 0000000..d1442a1 --- /dev/null +++ b/default/chromium/extensions/copy-url/manifest.json @@ -0,0 +1,19 @@ +{ + "manifest_version": 4, + "name": "Copy URL", + "version": "1.0", + "description": "Copy current URL to clipboard, this extension is installed by Omarchy", + "permissions": ["activeTab", "scripting", "notifications"], + "icons": { + "16": "icon.png", + "48": "icon.png", + "128": "icon.png" + }, + "commands": { + "copy-url": { + "suggested_key": {"default": "Alt+Shift+L"}, + "description": "Copy URL" + } + }, + "background": {"service_worker": "background.js"} +} diff --git a/default/hypr/apps.conf b/default/hypr/apps.conf index b8360ed..6b4ebbb 100644 --- a/default/hypr/apps.conf +++ b/default/hypr/apps.conf @@ -4,9 +4,11 @@ source = ~/.local/share/omarchy/default/hypr/apps/bitwarden.conf source = ~/.local/share/omarchy/default/hypr/apps/browser.conf source = ~/.local/share/omarchy/default/hypr/apps/hyprshot.conf source = ~/.local/share/omarchy/default/hypr/apps/jetbrains.conf +source = ~/.local/share/omarchy/default/hypr/apps/localsend.conf source = ~/.local/share/omarchy/default/hypr/apps/pip.conf source = ~/.local/share/omarchy/default/hypr/apps/qemu.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/terminals.conf source = ~/.local/share/omarchy/default/hypr/apps/walker.conf diff --git a/default/hypr/apps/localsend.conf b/default/hypr/apps/localsend.conf new file mode 100644 index 0000000..4625540 --- /dev/null +++ b/default/hypr/apps/localsend.conf @@ -0,0 +1,3 @@ +# Float LocalSend and fzf file picker +windowrule = float, class:(Share|localsend) +windowrule = center, class:(Share|localsend) diff --git a/default/hypr/apps/terminals.conf b/default/hypr/apps/terminals.conf new file mode 100644 index 0000000..e908e5d --- /dev/null +++ b/default/hypr/apps/terminals.conf @@ -0,0 +1,2 @@ +# Define terminal tag to style them uniformly +windowrule = tag +terminal, class:(Alacritty|kitty|com.mitchellh.ghostty) diff --git a/default/hypr/autostart.conf b/default/hypr/autostart.conf index 476cb14..5c2f60b 100644 --- a/default/hypr/autostart.conf +++ b/default/hypr/autostart.conf @@ -4,6 +4,7 @@ exec-once = uwsm app -- waybar exec-once = uwsm app -- fcitx5 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 & exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 exec-once = wl-clip-persist --clipboard regular --all-mime-type-regex '^(?!x-kde-passwordManagerHint).+' exec-once = omarchy-cmd-first-run diff --git a/default/hypr/bindings/tiling.conf b/default/hypr/bindings/tiling.conf index 0a53b01..ff2437b 100644 --- a/default/hypr/bindings/tiling.conf +++ b/default/hypr/bindings/tiling.conf @@ -7,6 +7,7 @@ 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 +bindd = ALT, F11, Full width, fullscreen, 1 # Move focus with SUPER + arrow keys bindd = SUPER, left, Move focus left, movefocus, l @@ -41,6 +42,7 @@ bindd = SUPER SHIFT, code:19, Move window to workspace 10, movetoworkspace, 10 # Tab between workspaces bindd = SUPER, TAB, Next workspace, workspace, e+1 bindd = SUPER SHIFT, TAB, Previous workspace, workspace, e-1 +bindd = SUPER CTRL, TAB, Former workspace, workspace, previous # Swap active window with the one next to it with SUPER + SHIFT + arrow keys bindd = SUPER SHIFT, left, Swap window to the left, swapwindow, l diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index 7694679..c8b3efd 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -5,11 +5,13 @@ bindd = SUPER ALT, SPACE, Omarchy menu, exec, omarchy-menu bindd = SUPER, ESCAPE, Power menu, exec, omarchy-menu system bindld = , XF86PowerOff, Power menu, exec, omarchy-menu system bindd = SUPER, K, Show key bindings, exec, omarchy-menu-keybindings +bindd = , XF86Calculator, Calculator, exec, gnome-calculator # Aesthetics 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 # Notifications bindd = SUPER, COMMA, Dismiss last notification, exec, makoctl dismiss @@ -40,3 +42,6 @@ bindd = CTRL ALT SHIFT, PRINT, Screen record display with audio, exec, omarchy-c # Color picker bindd = SUPER, PRINT, Color picker, exec, pkill hyprpicker || hyprpicker -a + +# File sharing +bindd = CTRL SUPER, S, Share, exec, omarchy-menu share diff --git a/default/mako/core.ini b/default/mako/core.ini index 0301e82..05f6053 100644 --- a/default/mako/core.ini +++ b/default/mako/core.ini @@ -13,4 +13,10 @@ invisible=true invisible=false [urgency=critical] -default-timeout=0 \ No newline at end of file +default-timeout=0 + +[summary~="Setup Wi-Fi"] +on-button-left=exec sh -c 'omarchy-notification-dismiss "Setup Wi-Fi"; omarchy-launch-wifi' + +[summary~="Update System"] +on-button-left=exec sh -c 'omarchy-notification-dismiss "Update System"; omarchy-launch-floating-terminal-with-presentation omarchy-update' diff --git a/default/pacman/pacman.conf b/default/pacman/pacman.conf index ce84c01..f576087 100644 --- a/default/pacman/pacman.conf +++ b/default/pacman/pacman.conf @@ -22,8 +22,8 @@ Include = /etc/pacman.d/mirrorlist [extra] Include = /etc/pacman.d/mirrorlist -# [multilib] -# Include = /etc/pacman.d/mirrorlist +[multilib] +Include = /etc/pacman.d/mirrorlist [omarchy] SigLevel = Optional TrustAll diff --git a/default/waybar/indicators/screen-recording.sh b/default/waybar/indicators/screen-recording.sh new file mode 100755 index 0000000..d0d0082 --- /dev/null +++ b/default/waybar/indicators/screen-recording.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +if pgrep -x wl-screenrec >/dev/null || pgrep -x wf-recorder >/dev/null; then + echo '{"text": "󰻂", "tooltip": "Stop recording", "class": "active"}' +else + echo '{"text": ""}' +fi diff --git a/icon.png b/icon.png new file mode 100644 index 0000000..09da500 Binary files /dev/null and b/icon.png differ diff --git a/install.sh b/install.sh old mode 100755 new mode 100644 index 3e86f2e..5b1b6bd --- a/install.sh +++ b/install.sh @@ -1,60 +1,18 @@ #!/bin/bash # Exit immediately if a command exits with a non-zero status -set -eE +set -eEo pipefail -OMARCHY_PATH="$HOME/.local/share/omarchy" -OMARCHY_INSTALL="$OMARCHY_PATH/install" +# Define Omarchy locations +export OMARCHY_PATH="$HOME/.local/share/omarchy" +export OMARCHY_INSTALL="$OMARCHY_PATH/install" +export OMARCHY_INSTALL_LOG_FILE="/var/log/omarchy-install.log" export PATH="$OMARCHY_PATH/bin:$PATH" -# Preparation -source $OMARCHY_INSTALL/preflight/show-env.sh -source $OMARCHY_INSTALL/preflight/trap-errors.sh -source $OMARCHY_INSTALL/preflight/guard.sh -source $OMARCHY_INSTALL/preflight/chroot.sh -source $OMARCHY_INSTALL/preflight/pacman.sh -source $OMARCHY_INSTALL/preflight/migrations.sh -source $OMARCHY_INSTALL/preflight/first-run-mode.sh - -# Packaging -source $OMARCHY_INSTALL/packages.sh -source $OMARCHY_INSTALL/packaging/fonts.sh -source $OMARCHY_INSTALL/packaging/lazyvim.sh -source $OMARCHY_INSTALL/packaging/webapps.sh -source $OMARCHY_INSTALL/packaging/tuis.sh - -# Configuration -source $OMARCHY_INSTALL/config/config.sh -source $OMARCHY_INSTALL/config/theme.sh -source $OMARCHY_INSTALL/config/branding.sh -source $OMARCHY_INSTALL/config/git.sh -source $OMARCHY_INSTALL/config/gpg.sh -source $OMARCHY_INSTALL/config/timezones.sh -source $OMARCHY_INSTALL/config/increase-sudo-tries.sh -source $OMARCHY_INSTALL/config/increase-lockout-limit.sh -source $OMARCHY_INSTALL/config/ssh-flakiness.sh -source $OMARCHY_INSTALL/config/detect-keyboard-layout.sh -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/sudoless-asdcontrol.sh -source $OMARCHY_INSTALL/config/hardware/network.sh -source $OMARCHY_INSTALL/config/hardware/set-wireless-regdom.sh -source $OMARCHY_INSTALL/config/hardware/fix-fkeys.sh -source $OMARCHY_INSTALL/config/hardware/bluetooth.sh -source $OMARCHY_INSTALL/config/hardware/printer.sh -source $OMARCHY_INSTALL/config/hardware/usb-autosuspend.sh -source $OMARCHY_INSTALL/config/hardware/ignore-power-button.sh -source $OMARCHY_INSTALL/config/hardware/nvidia.sh -source $OMARCHY_INSTALL/config/hardware/intel.sh -source $OMARCHY_INSTALL/config/hardware/fix-f13-amd-audio-input.sh - -# Login -source $OMARCHY_INSTALL/login/plymouth.sh -source $OMARCHY_INSTALL/login/limine-snapper.sh -source $OMARCHY_INSTALL/login/alt-bootloaders.sh - -# Finishing -source $OMARCHY_INSTALL/reboot.sh +# Install +source "$OMARCHY_INSTALL/helpers/all.sh" +source "$OMARCHY_INSTALL/preflight/all.sh" +source "$OMARCHY_INSTALL/packaging/all.sh" +source "$OMARCHY_INSTALL/config/all.sh" +source "$OMARCHY_INSTALL/login/all.sh" +source "$OMARCHY_INSTALL/post-install/all.sh" diff --git a/install/config/all.sh b/install/config/all.sh new file mode 100644 index 0000000..1336dee --- /dev/null +++ b/install/config/all.sh @@ -0,0 +1,29 @@ +run_logged $OMARCHY_INSTALL/config/config.sh +run_logged $OMARCHY_INSTALL/config/theme.sh +run_logged $OMARCHY_INSTALL/config/branding.sh +run_logged $OMARCHY_INSTALL/config/git.sh +run_logged $OMARCHY_INSTALL/config/gpg.sh +run_logged $OMARCHY_INSTALL/config/timezones.sh +run_logged $OMARCHY_INSTALL/config/increase-sudo-tries.sh +run_logged $OMARCHY_INSTALL/config/increase-lockout-limit.sh +run_logged $OMARCHY_INSTALL/config/ssh-flakiness.sh +run_logged $OMARCHY_INSTALL/config/detect-keyboard-layout.sh +run_logged $OMARCHY_INSTALL/config/xcompose.sh +run_logged $OMARCHY_INSTALL/config/mise-work.sh +run_logged $OMARCHY_INSTALL/config/fix-powerprofilesctl-shebang.sh +run_logged $OMARCHY_INSTALL/config/docker.sh +run_logged $OMARCHY_INSTALL/config/mimetypes.sh +run_logged $OMARCHY_INSTALL/config/localdb.sh +run_logged $OMARCHY_INSTALL/config/sudoless-asdcontrol.sh +run_logged $OMARCHY_INSTALL/config/hardware/network.sh +run_logged $OMARCHY_INSTALL/config/hardware/set-wireless-regdom.sh +run_logged $OMARCHY_INSTALL/config/hardware/fix-fkeys.sh +run_logged $OMARCHY_INSTALL/config/hardware/bluetooth.sh +run_logged $OMARCHY_INSTALL/config/hardware/printer.sh +run_logged $OMARCHY_INSTALL/config/hardware/usb-autosuspend.sh +run_logged $OMARCHY_INSTALL/config/hardware/ignore-power-button.sh +run_logged $OMARCHY_INSTALL/config/hardware/nvidia.sh +run_logged $OMARCHY_INSTALL/config/hardware/fix-f13-amd-audio-input.sh +run_logged $OMARCHY_INSTALL/config/hardware/fix-apple-bcm4360.sh +run_logged $OMARCHY_INSTALL/config/hardware/fix-apple-spi-keyboard.sh +run_logged $OMARCHY_INSTALL/config/hardware/fix-apple-t2.sh diff --git a/install/config/branding.sh b/install/config/branding.sh old mode 100755 new mode 100644 index 6e14fc2..bad55f0 --- a/install/config/branding.sh +++ b/install/config/branding.sh @@ -1,5 +1,3 @@ -#!/bin/bash - # Allow the user to change the branding for fastfetch and screensaver mkdir -p ~/.config/omarchy/branding cp ~/.local/share/omarchy/icon.txt ~/.config/omarchy/branding/about.txt diff --git a/install/config/config.sh b/install/config/config.sh old mode 100755 new mode 100644 index 75e694b..62f1417 --- a/install/config/config.sh +++ b/install/config/config.sh @@ -1,5 +1,3 @@ -#!/bin/bash - # Copy over Omarchy configs mkdir -p ~/.config cp -R ~/.local/share/omarchy/config/* ~/.config/ diff --git a/install/config/detect-keyboard-layout.sh b/install/config/detect-keyboard-layout.sh old mode 100755 new mode 100644 index a6cbf82..aaaee4f --- a/install/config/detect-keyboard-layout.sh +++ b/install/config/detect-keyboard-layout.sh @@ -1,16 +1,13 @@ -#!/bin/bash - # Copy over the keyboard layout that's been set in Arch during install to Hyprland conf="/etc/vconsole.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 '"') - -if [[ -n "$layout" ]]; then +if grep -q '^XKBLAYOUT=' "$conf"; then + layout=$(grep '^XKBLAYOUT=' "$conf" | cut -d= -f2 | tr -d '"') sed -i "/^[[:space:]]*kb_options *=/i\ kb_layout = $layout" "$hyprconf" fi -if [[ -n "$variant" ]]; then +if grep -q '^XKBVARIANT=' "$conf"; then + variant=$(grep '^XKBVARIANT=' "$conf" | cut -d= -f2 | tr -d '"') sed -i "/^[[:space:]]*kb_options *=/i\ kb_variant = $variant" "$hyprconf" fi diff --git a/install/config/docker.sh b/install/config/docker.sh old mode 100755 new mode 100644 index 6a715a7..9909624 --- a/install/config/docker.sh +++ b/install/config/docker.sh @@ -1,5 +1,3 @@ -#!/bin/bash - # Configure Docker daemon: # - limit log size to avoid running out of disk # - use host's DNS resolver diff --git a/install/config/fix-powerprofilesctl-shebang.sh b/install/config/fix-powerprofilesctl-shebang.sh new file mode 100644 index 0000000..61cac43 --- /dev/null +++ b/install/config/fix-powerprofilesctl-shebang.sh @@ -0,0 +1,2 @@ +# Ensure we use system python3 and not mise's python3 +sudo sed -i '/env python3/ c\#!/bin/python3' /usr/bin/powerprofilesctl diff --git a/install/config/git.sh b/install/config/git.sh old mode 100755 new mode 100644 index 4864a29..39f77ed --- a/install/config/git.sh +++ b/install/config/git.sh @@ -1,5 +1,3 @@ -#!/bin/bash - # Ensure git settings live under ~/.config mkdir -p ~/.config/git touch ~/.config/git/config diff --git a/install/config/gpg.sh b/install/config/gpg.sh old mode 100755 new mode 100644 index 174c564..7e209f6 --- a/install/config/gpg.sh +++ b/install/config/gpg.sh @@ -1,5 +1,3 @@ -#!/bin/bash - # Setup GPG configuration with multiple keyservers for better reliability sudo mkdir -p /etc/gnupg sudo cp ~/.local/share/omarchy/default/gpg/dirmngr.conf /etc/gnupg/ diff --git a/install/config/hardware/bluetooth.sh b/install/config/hardware/bluetooth.sh old mode 100755 new mode 100644 index e2c7cd7..65fc90d --- a/install/config/hardware/bluetooth.sh +++ b/install/config/hardware/bluetooth.sh @@ -1,4 +1,2 @@ -#!/bin/bash - # Turn on bluetooth by default chrootable_systemctl_enable bluetooth.service diff --git a/install/config/hardware/fix-apple-bcm4360.sh b/install/config/hardware/fix-apple-bcm4360.sh new file mode 100644 index 0000000..f7d6d32 --- /dev/null +++ b/install/config/hardware/fix-apple-bcm4360.sh @@ -0,0 +1,5 @@ +# Install wifi drivers for 2013-2015 MacBooks using the BCM4360 chip +if lspci -nnv | grep -A2 "14e4:43a0" | grep -q "106b:"; then + echo "Apple BCM4360 detected" + sudo pacman -S --noconfirm --needed broadcom-wl dkms linux-headers +fi diff --git a/install/config/hardware/fix-apple-spi-keyboard.sh b/install/config/hardware/fix-apple-spi-keyboard.sh new file mode 100644 index 0000000..f549669 --- /dev/null +++ b/install/config/hardware/fix-apple-spi-keyboard.sh @@ -0,0 +1,7 @@ +# Detect MacBook models that need SPI keyboard modules +if [[ "$(cat /sys/class/dmi/id/product_name 2>/dev/null)" =~ MacBook12,1|MacBookPro13,[123]|MacBookPro14,[123] ]]; then + echo "Detected MacBook with SPI keyboard" + + sudo pacman -S --noconfirm --needed macbook12-spi-driver-dkms + echo "MODULES=(applespi intel_lpss_pci spi_pxa2xx_platform)" | sudo tee /etc/mkinitcpio.conf.d/macbook_spi_modules.conf >/dev/null +fi diff --git a/install/config/hardware/fix-apple-t2.sh b/install/config/hardware/fix-apple-t2.sh new file mode 100644 index 0000000..51273f2 --- /dev/null +++ b/install/config/hardware/fix-apple-t2.sh @@ -0,0 +1,28 @@ +# Detect T2 MacBook models using PCI IDs +# Vendor: 106b (Apple), Device IDs: 1801 or 1802 (T2 Security Chip) +if lspci -nn | grep -q "106b:180[12]"; then + echo "Detected MacBook with T2 chip. Installing support items..." + + sudo pacman -S --noconfirm --needed \ + linux-t2 \ + linux-t2-headers \ + apple-t2-audio-config \ + apple-bcm-firmware \ + t2fanrd \ + tiny-dfr + + echo "apple-bce" | sudo tee /etc/modules-load.d/t2.conf >/dev/null + + echo "MODULES+=(apple-bce usbhid hid_apple hid_generic xhci_pci xhci_hcd)" | sudo tee /etc/mkinitcpio.conf.d/apple-t2.conf >/dev/null + + cat </dev/null +# Fix for T2 MacBook WiFi connectivity issues +options brcmfmac feature_disable=0x82000 +EOF + + sudo mkdir -p /etc/limine-entry-tool.d + cat </dev/null +# Generated by Omarchy installer for T2 Mac support +KERNEL_CMDLINE[default]+="intel_iommu=on iommu=pt pcie_ports=compat" +EOF +fi diff --git a/install/config/hardware/fix-f13-amd-audio-input.sh b/install/config/hardware/fix-f13-amd-audio-input.sh old mode 100755 new mode 100644 index 32ac686..f443659 --- a/install/config/hardware/fix-f13-amd-audio-input.sh +++ b/install/config/hardware/fix-f13-amd-audio-input.sh @@ -1,6 +1,4 @@ -#!/bin/bash - -AMD_AUDIO_CARD=$(pactl list cards | grep -B20 "Family 17h/19h" | grep "Name: " | awk '{print $2}') +AMD_AUDIO_CARD=$(pactl list cards 2>/dev/null | grep -B20 "Family 17h/19h" | grep "Name: " | awk '{print $2}' || true) if [[ -n $AMD_AUDIO_CARD ]]; then pactl set-card-profile "$AMD_AUDIO_CARD" "HiFi (Mic1, Mic2, Speaker)" 2>/dev/null || true diff --git a/install/config/hardware/fix-fkeys.sh b/install/config/hardware/fix-fkeys.sh old mode 100755 new mode 100644 index b652cbf..d0b4315 --- a/install/config/hardware/fix-fkeys.sh +++ b/install/config/hardware/fix-fkeys.sh @@ -1,5 +1,3 @@ -#!/bin/bash - # Ensure that F-keys on Apple-like keyboards (such as Lofree Flow84) are always F-keys if [[ ! -f /etc/modprobe.d/hid_apple.conf ]]; then echo "options hid_apple fnmode=2" | sudo tee /etc/modprobe.d/hid_apple.conf diff --git a/install/config/hardware/ignore-power-button.sh b/install/config/hardware/ignore-power-button.sh old mode 100755 new mode 100644 index 4166b9b..8e514f6 --- a/install/config/hardware/ignore-power-button.sh +++ b/install/config/hardware/ignore-power-button.sh @@ -1,5 +1,2 @@ -#!/bin/bash - # Disable shutting system down on power button to bind it to power menu afterwards sudo sed -i 's/.*HandlePowerKey=.*/HandlePowerKey=ignore/' /etc/systemd/logind.conf - diff --git a/install/config/hardware/intel.sh b/install/config/hardware/intel.sh old mode 100755 new mode 100644 index 5c45e78..546fe47 --- a/install/config/hardware/intel.sh +++ b/install/config/hardware/intel.sh @@ -1,5 +1,3 @@ -#!/bin/bash - # This installs hardware video acceleration for Intel GPUs # Check if we have an Intel GPU at all if INTEL_GPU=$(lspci | grep -iE 'vga|3d|display' | grep -i 'intel'); then @@ -11,4 +9,3 @@ if INTEL_GPU=$(lspci | grep -iE 'vga|3d|display' | grep -i 'intel'); then sudo pacman -S --needed --noconfirm libva-intel-driver fi fi - diff --git a/install/config/hardware/network.sh b/install/config/hardware/network.sh old mode 100755 new mode 100644 index 04f2f35..65f9fdb --- a/install/config/hardware/network.sh +++ b/install/config/hardware/network.sh @@ -1,5 +1,3 @@ -#!/bin/bash - # Ensure iwd service will be started sudo systemctl enable iwd.service diff --git a/install/config/hardware/nvidia.sh b/install/config/hardware/nvidia.sh old mode 100755 new mode 100644 index 37effa3..494390b --- a/install/config/hardware/nvidia.sh +++ b/install/config/hardware/nvidia.sh @@ -1,5 +1,3 @@ -#!/bin/bash - # ============================================================================== # Hyprland NVIDIA Setup Script for Arch Linux # ============================================================================== @@ -30,11 +28,6 @@ if [ -n "$(lspci | grep -i 'nvidia')" ]; then KERNEL_HEADERS="linux-hardened-headers" fi - # Enable multilib repository for 32-bit libraries - if ! grep -q "^\[multilib\]" /etc/pacman.conf; then - sudo sed -i '/^#\s*\[multilib\]/,/^#\s*Include/ s/^#\s*//' /etc/pacman.conf - fi - # force package database refresh sudo pacman -Syu --noconfirm diff --git a/install/config/hardware/printer.sh b/install/config/hardware/printer.sh old mode 100755 new mode 100644 index b737b49..781a987 --- a/install/config/hardware/printer.sh +++ b/install/config/hardware/printer.sh @@ -1,5 +1,3 @@ -#!/bin/bash - chrootable_systemctl_enable cups.service # Disable multicast dns in resolved. Avahi will provide this for better network printer discovery diff --git a/install/config/hardware/set-wireless-regdom.sh b/install/config/hardware/set-wireless-regdom.sh old mode 100755 new mode 100644 index d4a9362..8f28407 --- a/install/config/hardware/set-wireless-regdom.sh +++ b/install/config/hardware/set-wireless-regdom.sh @@ -1,5 +1,3 @@ -#!/bin/bash - # First check that wireless-regdb is there if [ -f "/etc/conf.d/wireless-regdom" ]; then unset WIRELESS_REGDOM @@ -12,25 +10,24 @@ if [ ! -n "${WIRELESS_REGDOM}" ]; then if [ -e "/etc/localtime" ]; then TIMEZONE=$(readlink -f /etc/localtime) TIMEZONE=${TIMEZONE#/usr/share/zoneinfo/} - + # Some timezones are formatted with the two letter country code at the start COUNTRY="${TIMEZONE%%/*}" - + # If we don't have a two letter country, get it from the timezone table if [[ ! "$COUNTRY" =~ ^[A-Z]{2}$ ]] && [ -f "/usr/share/zoneinfo/zone.tab" ]; then COUNTRY=$(awk -v tz="$TIMEZONE" '$3 == tz {print $1; exit}' /usr/share/zoneinfo/zone.tab) fi - + # Check if we have a two letter country code if [[ "$COUNTRY" =~ ^[A-Z]{2}$ ]]; then # Append it to the wireless-regdom conf file that is used at boot - echo "WIRELESS_REGDOM=\"$COUNTRY\"" | sudo tee -a /etc/conf.d/wireless-regdom > /dev/null - + echo "WIRELESS_REGDOM=\"$COUNTRY\"" | sudo tee -a /etc/conf.d/wireless-regdom >/dev/null + # Also set it one off now - if command -v iw &> /dev/null; then + if command -v iw &>/dev/null; then sudo iw reg set ${COUNTRY} fi fi fi fi - diff --git a/install/config/hardware/usb-autosuspend.sh b/install/config/hardware/usb-autosuspend.sh old mode 100755 new mode 100644 index a7d820e..9132384 --- a/install/config/hardware/usb-autosuspend.sh +++ b/install/config/hardware/usb-autosuspend.sh @@ -1,6 +1,5 @@ -#!/bin/bash - # Disable USB autosuspend to prevent peripheral disconnection issues if [[ ! -f /etc/modprobe.d/disable-usb-autosuspend.conf ]]; then echo "options usbcore autosuspend=-1" | sudo tee /etc/modprobe.d/disable-usb-autosuspend.conf -fi \ No newline at end of file +fi + diff --git a/install/config/increase-lockout-limit.sh b/install/config/increase-lockout-limit.sh old mode 100755 new mode 100644 index 1fdbf7d..522deb7 --- a/install/config/increase-lockout-limit.sh +++ b/install/config/increase-lockout-limit.sh @@ -1,5 +1,3 @@ -#!/bin/bash - # Increase lockout limit to 10 and decrease timeout to 2 minutes sudo sed -i 's|^\(auth\s\+required\s\+pam_faillock.so\)\s\+preauth.*$|\1 preauth silent deny=10 unlock_time=120|' "/etc/pam.d/system-auth" sudo sed -i 's|^\(auth\s\+\[default=die\]\s\+pam_faillock.so\)\s\+authfail.*$|\1 authfail deny=10 unlock_time=120|' "/etc/pam.d/system-auth" diff --git a/install/config/increase-sudo-tries.sh b/install/config/increase-sudo-tries.sh old mode 100755 new mode 100644 index cf3d5ca..5b64b86 --- a/install/config/increase-sudo-tries.sh +++ b/install/config/increase-sudo-tries.sh @@ -1,5 +1,3 @@ -#!/bin/bash - # Give the user 10 instead of 3 tries to fat finger their password before lockout echo "Defaults passwd_tries=10" | sudo tee /etc/sudoers.d/passwd-tries sudo chmod 440 /etc/sudoers.d/passwd-tries diff --git a/install/config/lazyvim.sh b/install/config/lazyvim.sh new file mode 100644 index 0000000..325f631 --- /dev/null +++ b/install/config/lazyvim.sh @@ -0,0 +1 @@ +omarchy-lazyvim-setup diff --git a/install/config/localdb.sh b/install/config/localdb.sh old mode 100755 new mode 100644 diff --git a/install/config/mimetypes.sh b/install/config/mimetypes.sh old mode 100755 new mode 100644 index 4c0b241..48bb8cf --- a/install/config/mimetypes.sh +++ b/install/config/mimetypes.sh @@ -1,5 +1,3 @@ -#!/bin/bash - omarchy-refresh-applications update-desktop-database ~/.local/share/applications diff --git a/install/config/mise-ruby.sh b/install/config/mise-ruby.sh deleted file mode 100755 index 304a10d..0000000 --- a/install/config/mise-ruby.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -# Install Ruby using gcc-14 for compatibility -mise settings set ruby.ruby_build_opts "CC=gcc-14 CXX=g++-14" - -# Trust .ruby-version -mise settings add idiomatic_version_file_enable_tools ruby diff --git a/install/config/mise-work.sh b/install/config/mise-work.sh new file mode 100644 index 0000000..15d7192 --- /dev/null +++ b/install/config/mise-work.sh @@ -0,0 +1,9 @@ +# Add ./bin to path for all items in ~/Work +mkdir -p "$HOME/Work" + +cat >"$HOME/Work/.mise.toml" <<'EOF' +[env] +_.path = "{{ cwd }}/bin" +EOF + +mise trust ~/Work/.mise.toml diff --git a/install/config/ssh-flakiness.sh b/install/config/ssh-flakiness.sh old mode 100755 new mode 100644 index 1746f59..906e68a --- a/install/config/ssh-flakiness.sh +++ b/install/config/ssh-flakiness.sh @@ -1,4 +1,2 @@ -#!/bin/bash - # Solve common flakiness with SSH echo "net.ipv4.tcp_mtu_probing=1" | sudo tee -a /etc/sysctl.d/99-sysctl.conf diff --git a/install/config/sudoless-asdcontrol.sh b/install/config/sudoless-asdcontrol.sh old mode 100755 new mode 100644 index 7c678f7..120c6fc --- a/install/config/sudoless-asdcontrol.sh +++ b/install/config/sudoless-asdcontrol.sh @@ -1,5 +1,3 @@ -#!/bin/bash - # Setup sudo-less controls for controlling brightness on Apple Displays echo "$USER ALL=(ALL) NOPASSWD: /usr/local/bin/asdcontrol" | sudo tee /etc/sudoers.d/asdcontrol sudo chmod 440 /etc/sudoers.d/asdcontrol diff --git a/install/config/theme.sh b/install/config/theme.sh old mode 100755 new mode 100644 index 17cda3c..a0a6a69 --- a/install/config/theme.sh +++ b/install/config/theme.sh @@ -1,13 +1,6 @@ -#!/bin/bash - -gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark" -gsettings set org.gnome.desktop.interface color-scheme "prefer-dark" -gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue" - # Set links for Nautilius action icons sudo ln -snf /usr/share/icons/Adwaita/symbolic/actions/go-previous-symbolic.svg /usr/share/icons/Yaru/scalable/actions/go-previous-symbolic.svg sudo ln -snf /usr/share/icons/Adwaita/symbolic/actions/go-next-symbolic.svg /usr/share/icons/Yaru/scalable/actions/go-next-symbolic.svg -sudo gtk-update-icon-cache /usr/share/icons/Yaru # Setup theme links mkdir -p ~/.config/omarchy/themes @@ -27,3 +20,12 @@ ln -snf ~/.config/omarchy/current/theme/btop.theme ~/.config/btop/themes/current mkdir -p ~/.config/mako ln -snf ~/.config/omarchy/current/theme/mako.ini ~/.config/mako/config +mkdir -p ~/.config/eza +ln -snf ~/.config/omarchy/current/theme/eza.yml ~/.config/eza/theme.yml + +# Add managed policy directories for Chromium and Brave for theme changes +sudo mkdir -p /etc/chromium/policies/managed +sudo chmod a+rw /etc/chromium/policies/managed + +sudo mkdir -p /etc/brave/policies/managed +sudo chmod a+rw /etc/brave/policies/managed diff --git a/install/config/timezones.sh b/install/config/timezones.sh old mode 100755 new mode 100644 index 7aa17fb..24e96a0 --- a/install/config/timezones.sh +++ b/install/config/timezones.sh @@ -1,5 +1,3 @@ -#!/bin/bash - # Ensure timezone can be updated without needing to sudo sudo tee /etc/sudoers.d/omarchy-tzupdate >/dev/null </dev/null </dev/null; then # This computer runs on a battery powerprofilesctl set balanced || true diff --git a/install/first-run/firewall.sh b/install/first-run/firewall.sh old mode 100755 new mode 100644 index c802467..a38f5a5 --- a/install/first-run/firewall.sh +++ b/install/first-run/firewall.sh @@ -1,5 +1,3 @@ -#!/bin/bash - # Allow nothing in, everything out sudo ufw default deny incoming sudo ufw default allow outgoing diff --git a/install/first-run/gnome-theme.sh b/install/first-run/gnome-theme.sh new file mode 100644 index 0000000..2936312 --- /dev/null +++ b/install/first-run/gnome-theme.sh @@ -0,0 +1,5 @@ +gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark" +gsettings set org.gnome.desktop.interface color-scheme "prefer-dark" +gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue" + +sudo gtk-update-icon-cache /usr/share/icons/Yaru diff --git a/install/first-run/welcome.sh b/install/first-run/welcome.sh new file mode 100644 index 0000000..3b84661 --- /dev/null +++ b/install/first-run/welcome.sh @@ -0,0 +1,2 @@ +notify-send " Update System" "When you have internet, click to update the system." -u critical +notify-send "👋 Welcome to Omarchy" "You're in for a great computing adventure. Have fun!" -t 30000 diff --git a/install/first-run/wifi.sh b/install/first-run/wifi.sh new file mode 100644 index 0000000..9d391f1 --- /dev/null +++ b/install/first-run/wifi.sh @@ -0,0 +1,3 @@ +if ! ping -c3 -W1 1.1.1.1 >/dev/null 2>&1; then + notify-send "󰖩 Click to Setup Wi-Fi" "Tab between sections, space selects, ? for help." -u critical -t 30000 +fi diff --git a/install/helpers/all.sh b/install/helpers/all.sh new file mode 100644 index 0000000..0fc4810 --- /dev/null +++ b/install/helpers/all.sh @@ -0,0 +1,4 @@ +source $OMARCHY_INSTALL/helpers/chroot.sh +source $OMARCHY_INSTALL/helpers/presentation.sh +source $OMARCHY_INSTALL/helpers/errors.sh +source $OMARCHY_INSTALL/helpers/logging.sh diff --git a/install/preflight/chroot.sh b/install/helpers/chroot.sh old mode 100755 new mode 100644 similarity index 72% rename from install/preflight/chroot.sh rename to install/helpers/chroot.sh index 4a6d5b8..ab61972 --- a/install/preflight/chroot.sh +++ b/install/helpers/chroot.sh @@ -6,3 +6,6 @@ chrootable_systemctl_enable() { sudo systemctl enable --now $1 fi } + +# Export the function so it's available in subshells +export -f chrootable_systemctl_enable diff --git a/install/helpers/errors.sh b/install/helpers/errors.sh new file mode 100644 index 0000000..2b63409 --- /dev/null +++ b/install/helpers/errors.sh @@ -0,0 +1,163 @@ +# Directs user to Omarchy Discord +QR_CODE=' +█▀▀▀▀▀█ ▄ ▄ ▀▄▄▄█ █▀▀▀▀▀█ +█ ███ █ ▄▄▄▄▀▄▀▄▀ █ ███ █ +█ ▀▀▀ █ ▄█ ▄█▄▄▀ █ ▀▀▀ █ +▀▀▀▀▀▀▀ ▀▄█ █ █ █ ▀▀▀▀▀▀▀ +▀▀█▀▀▄▀▀▀▀▄█▀▀█ ▀ █ ▀ █ +█▄█ ▄▄▀▄▄ ▀ ▄ ▀█▄▄▄▄ ▀ ▀█ +▄ ▄▀█ ▀▄▀▀▀▄ ▄█▀▄█▀▄▀▄▀█▀ +█ ▄▄█▄▀▄█ ▄▄▄ ▀ ▄▀██▀ ▀█ +▀ ▀ ▀ █ ▀▄ ▀▀█▀▀▀█▄▀ +█▀▀▀▀▀█ ▀█ ▄▀▀ █ ▀ █▄▀██ +█ ███ █ █▀▄▄▀ █▀███▀█▄██▄ +█ ▀▀▀ █ ██ ▀ █▄█ ▄▄▄█▀ █ +▀▀▀▀▀▀▀ ▀ ▀ ▀▀▀ ▀ ▀▀▀▀▀▀' + +# Track if we're already handling an error to prevent double-trapping +ERROR_HANDLING=false + +# Cursor is usually hidden while we install +show_cursor() { + printf "\033[?25h" +} + +# Display truncated log lines from the install log +show_log_tail() { + if [[ -f $OMARCHY_INSTALL_LOG_FILE ]]; then + local log_lines=$(($TERM_HEIGHT - $LOGO_HEIGHT - 35)) + local max_line_width=$((LOGO_WIDTH - 4)) + + tail -n $log_lines "$OMARCHY_INSTALL_LOG_FILE" | while IFS= read -r line; do + if ((${#line} > max_line_width)); then + local truncated_line="${line:0:$max_line_width}..." + else + local truncated_line="$line" + fi + + gum style "$truncated_line" + done + + echo + fi +} + +# Display the failed command or script name +show_failed_script_or_command() { + if [[ -n ${CURRENT_SCRIPT:-} ]]; then + gum style "Failed script: $CURRENT_SCRIPT" + else + # Truncate long command lines to fit the display + local cmd="$BASH_COMMAND" + local max_cmd_width=$((LOGO_WIDTH - 4)) + + if ((${#cmd} > max_cmd_width)); then + cmd="${cmd:0:$max_cmd_width}..." + fi + + gum style "$cmd" + fi +} + +# Save original stdout and stderr for trap to use +save_original_outputs() { + exec 3>&1 4>&2 +} + +# Restore stdout and stderr to original (saved in FD 3 and 4) +# This ensures output goes to screen, not log file +restore_outputs() { + if [ -e /proc/self/fd/3 ] && [ -e /proc/self/fd/4 ]; then + exec 1>&3 2>&4 + fi +} + +# Error handler +catch_errors() { + # Prevent recursive error handling + if [[ $ERROR_HANDLING == true ]]; then + return + else + ERROR_HANDLING=true + fi + + # Store exit code immediately before it gets overwritten + local exit_code=$? + + stop_log_output + restore_outputs + + clear_logo + show_cursor + + gum style --foreground 1 --padding "1 0 1 $PADDING_LEFT" "Omarchy installation stopped!" + show_log_tail + + gum style "This command halted with exit code $exit_code:" + show_failed_script_or_command + + gum style "$QR_CODE" + echo + gum style "Get help from the community via QR code or at https://discord.gg/tXFUdasqhY" + + # Offer options menu + while true; do + options=() + + # If online install, show retry first + if [[ -n ${OMARCHY_ONLINE_INSTALL:-} ]]; then + options+=("Retry installation") + fi + + # Add upload option if internet is available + if ping -c 1 -W 1 1.1.1.1 >/dev/null 2>&1; then + options+=("Upload log for support") + fi + + # Add remaining options + options+=("View full log") + options+=("Exit") + + choice=$(gum choose "${options[@]}" --header "What would you like to do?" --height 6 --padding "1 $PADDING_LEFT") + + case "$choice" in + "Retry installation") + bash ~/.local/share/omarchy/install.sh + break + ;; + "View full log") + if command -v less &>/dev/null; then + less "$OMARCHY_INSTALL_LOG_FILE" + else + tail "$OMARCHY_INSTALL_LOG_FILE" + fi + ;; + "Upload log for support") + omarchy-upload-install-log + ;; + "Exit" | "") + exit 1 + ;; + esac + done +} + +# Exit handler - ensures cleanup happens on any exit +exit_handler() { + local exit_code=$? + + # Only run if we're exiting with an error and haven't already handled it + if [[ $exit_code -ne 0 && $ERROR_HANDLING != true ]]; then + catch_errors + else + stop_log_output + show_cursor + fi +} + +# Set up traps +trap catch_errors ERR INT TERM +trap exit_handler EXIT + +# Save original outputs in case we trap +save_original_outputs diff --git a/install/helpers/logging.sh b/install/helpers/logging.sh new file mode 100644 index 0000000..4ebe2a9 --- /dev/null +++ b/install/helpers/logging.sh @@ -0,0 +1,134 @@ +start_log_output() { + local ANSI_SAVE_CURSOR="\033[s" + local ANSI_RESTORE_CURSOR="\033[u" + local ANSI_CLEAR_LINE="\033[2K" + local ANSI_HIDE_CURSOR="\033[?25l" + local ANSI_RESET="\033[0m" + local ANSI_GRAY="\033[90m" + + # Save cursor position and hide cursor + printf $ANSI_SAVE_CURSOR + printf $ANSI_HIDE_CURSOR + + ( + local log_lines=20 + local max_line_width=$((LOGO_WIDTH - 4)) + + while true; do + # Read the last N lines into an array + mapfile -t current_lines < <(tail -n $log_lines "$OMARCHY_INSTALL_LOG_FILE" 2>/dev/null) + + # Build complete output buffer with escape sequences + output="" + for ((i = 0; i < log_lines; i++)); do + line="${current_lines[i]:-}" + + # Truncate if needed + if [ ${#line} -gt $max_line_width ]; then + line="${line:0:$max_line_width}..." + fi + + # Add clear line escape and formatted output for each line + if [ -n "$line" ]; then + output+="${ANSI_CLEAR_LINE}${ANSI_GRAY}${PADDING_LEFT_SPACES} → ${line}${ANSI_RESET}\n" + else + output+="${ANSI_CLEAR_LINE}${PADDING_LEFT_SPACES}\n" + fi + done + + printf "${ANSI_RESTORE_CURSOR}%b" "$output" + + sleep 0.1 + done + ) & + monitor_pid=$! +} + +stop_log_output() { + if [ -n "${monitor_pid:-}" ]; then + kill $monitor_pid 2>/dev/null || true + wait $monitor_pid 2>/dev/null || true + unset monitor_pid + fi +} + +start_install_log() { + sudo touch "$OMARCHY_INSTALL_LOG_FILE" + sudo chmod 666 "$OMARCHY_INSTALL_LOG_FILE" + + export OMARCHY_START_TIME=$(date '+%Y-%m-%d %H:%M:%S') + + echo "=== Omarchy Installation Started: $OMARCHY_START_TIME ===" >>"$OMARCHY_INSTALL_LOG_FILE" + start_log_output +} + +stop_install_log() { + stop_log_output + show_cursor + + if [[ -n ${OMARCHY_INSTALL_LOG_FILE:-} ]]; then + OMARCHY_END_TIME=$(date '+%Y-%m-%d %H:%M:%S') + echo "=== Omarchy Installation Completed: $OMARCHY_END_TIME ===" >>"$OMARCHY_INSTALL_LOG_FILE" + echo "" >>"$OMARCHY_INSTALL_LOG_FILE" + echo "=== Installation Time Summary ===" >>"$OMARCHY_INSTALL_LOG_FILE" + + if [ -f "/var/log/archinstall/install.log" ]; then + ARCHINSTALL_START=$(grep -m1 '^\[' /var/log/archinstall/install.log 2>/dev/null | sed 's/^\[\([^]]*\)\].*/\1/' || true) + ARCHINSTALL_END=$(grep 'Installation completed without any errors' /var/log/archinstall/install.log 2>/dev/null | sed 's/^\[\([^]]*\)\].*/\1/' || true) + + if [ -n "$ARCHINSTALL_START" ] && [ -n "$ARCHINSTALL_END" ]; then + ARCH_START_EPOCH=$(date -d "$ARCHINSTALL_START" +%s) + ARCH_END_EPOCH=$(date -d "$ARCHINSTALL_END" +%s) + ARCH_DURATION=$((ARCH_END_EPOCH - ARCH_START_EPOCH)) + + ARCH_MINS=$((ARCH_DURATION / 60)) + ARCH_SECS=$((ARCH_DURATION % 60)) + + echo "Archinstall: ${ARCH_MINS}m ${ARCH_SECS}s" >>"$OMARCHY_INSTALL_LOG_FILE" + fi + fi + + if [ -n "$OMARCHY_START_TIME" ]; then + OMARCHY_START_EPOCH=$(date -d "$OMARCHY_START_TIME" +%s) + OMARCHY_END_EPOCH=$(date -d "$OMARCHY_END_TIME" +%s) + OMARCHY_DURATION=$((OMARCHY_END_EPOCH - OMARCHY_START_EPOCH)) + + OMARCHY_MINS=$((OMARCHY_DURATION / 60)) + OMARCHY_SECS=$((OMARCHY_DURATION % 60)) + + echo "Omarchy: ${OMARCHY_MINS}m ${OMARCHY_SECS}s" >>"$OMARCHY_INSTALL_LOG_FILE" + + if [ -n "$ARCH_DURATION" ]; then + TOTAL_DURATION=$((ARCH_DURATION + OMARCHY_DURATION)) + TOTAL_MINS=$((TOTAL_DURATION / 60)) + TOTAL_SECS=$((TOTAL_DURATION % 60)) + echo "Total: ${TOTAL_MINS}m ${TOTAL_SECS}s" >>"$OMARCHY_INSTALL_LOG_FILE" + fi + fi + echo "=================================" >>"$OMARCHY_INSTALL_LOG_FILE" + + echo "Rebooting system..." >>"$OMARCHY_INSTALL_LOG_FILE" + fi +} + +run_logged() { + local script="$1" + + export CURRENT_SCRIPT="$script" + + echo "[$(date '+%Y-%m-%d %H:%M:%S')] Starting: $script" >>"$OMARCHY_INSTALL_LOG_FILE" + + # Use bash -c to create a clean subshell + bash -c "source '$script'" >"$OMARCHY_INSTALL_LOG_FILE" 2>&1 + + local exit_code=$? + + if [ $exit_code -eq 0 ]; then + echo "[$(date '+%Y-%m-%d %H:%M:%S')] Completed: $script" >>"$OMARCHY_INSTALL_LOG_FILE" + unset CURRENT_SCRIPT + else + echo "[$(date '+%Y-%m-%d %H:%M:%S')] Failed: $script (exit code: $exit_code)" >>"$OMARCHY_INSTALL_LOG_FILE" + fi + + return $exit_code +} diff --git a/install/helpers/presentation.sh b/install/helpers/presentation.sh new file mode 100644 index 0000000..70cab2e --- /dev/null +++ b/install/helpers/presentation.sh @@ -0,0 +1,48 @@ +# Ensure we have gum available +if ! command -v gum &>/dev/null; then + sudo pacman -S --needed --noconfirm gum +fi + +# Get terminal size from /dev/tty (works in all scenarios: direct, sourced, or piped) +if [ -e /dev/tty ]; then + TERM_SIZE=$(stty size 2>/dev/null max) max = length } END { print max+0 }' "$LOGO_PATH" 2>/dev/null || echo 0) +export LOGO_HEIGHT=$(wc -l <"$LOGO_PATH" 2>/dev/null || echo 0) + +export PADDING_LEFT=$((($TERM_WIDTH - $LOGO_WIDTH) / 2)) +export PADDING_LEFT_SPACES=$(printf "%*s" $PADDING_LEFT "") + +# Tokyo Night theme for gum confirm +export GUM_CONFIRM_PROMPT_FOREGROUND="6" # Cyan for prompt +export GUM_CONFIRM_SELECTED_FOREGROUND="0" # Black text on selected +export GUM_CONFIRM_SELECTED_BACKGROUND="2" # Green background for selected +export GUM_CONFIRM_UNSELECTED_FOREGROUND="7" # White for unselected +export GUM_CONFIRM_UNSELECTED_BACKGROUND="0" # Black background for unselected +export PADDING="0 0 0 $PADDING_LEFT" # Gum Style +export GUM_CHOOSE_PADDING="$PADDING" +export GUM_FILTER_PADDING="$PADDING" +export GUM_INPUT_PADDING="$PADDING" +export GUM_SPIN_PADDING="$PADDING" +export GUM_TABLE_PADDING="$PADDING" +export GUM_CONFIRM_PADDING="$PADDING" + +clear_logo() { + printf "\033[H\033[2J" # Clear screen and move cursor to top-left + gum style --foreground 2 --padding "1 0 0 $PADDING_LEFT" "$(<"$LOGO_PATH")" +} diff --git a/install/iso.sh b/install/iso.sh new file mode 100644 index 0000000..7676ccc --- /dev/null +++ b/install/iso.sh @@ -0,0 +1,14 @@ +# Called by Omarchy ISO setup before starting configurator and archinstall + +source "$OMARCHY_INSTALL/preflight/set-size-vars.sh" +source "$OMARCHY_INSTALL/helpers/logo.sh" +source "$OMARCHY_INSTALL/preflight/gum.sh" +source "$OMARCHY_INSTALL/helpers/tail-log-output.sh" +source "$OMARCHY_INSTALL/helpers/trap-errors.sh" + +source $OMARCHY_INSTALL/helpers/chroot.sh +source $OMARCHY_INSTALL/helpers/logo.sh +source $OMARCHY_INSTALL/helpers/gum.sh +source $OMARCHY_INSTALL/helpers/errors.sh +source $OMARCHY_INSTALL/helpers/logging.sh +source $OMARCHY_INSTALL/helpers/layout.sh diff --git a/install/login/all.sh b/install/login/all.sh new file mode 100644 index 0000000..e4be282 --- /dev/null +++ b/install/login/all.sh @@ -0,0 +1,4 @@ +run_logged $OMARCHY_INSTALL/login/plymouth.sh +run_logged $OMARCHY_INSTALL/login/limine-snapper.sh +run_logged $OMARCHY_INSTALL/login/enable-mkinitcpio.sh +run_logged $OMARCHY_INSTALL/login/alt-bootloaders.sh diff --git a/install/login/alt-bootloaders.sh b/install/login/alt-bootloaders.sh old mode 100755 new mode 100644 index 7476ec7..bb35d9b --- a/install/login/alt-bootloaders.sh +++ b/install/login/alt-bootloaders.sh @@ -1,5 +1,3 @@ -#!/bin/bash - if ! command -v limine &>/dev/null; then # Add kernel hooks if ! grep -Eq '^HOOKS=.*plymouth' /etc/mkinitcpio.conf; then diff --git a/install/login/enable-mkinitcpio.sh b/install/login/enable-mkinitcpio.sh new file mode 100644 index 0000000..7422d8d --- /dev/null +++ b/install/login/enable-mkinitcpio.sh @@ -0,0 +1,18 @@ +echo "Re-enabling mkinitcpio hooks..." + +# Restore the specific mkinitcpio pacman hooks +if [ -f /usr/share/libalpm/hooks/90-mkinitcpio-install.hook.disabled ]; then + sudo mv /usr/share/libalpm/hooks/90-mkinitcpio-install.hook.disabled /usr/share/libalpm/hooks/90-mkinitcpio-install.hook +fi + +if [ -f /usr/share/libalpm/hooks/60-mkinitcpio-remove.hook.disabled ]; then + sudo mv /usr/share/libalpm/hooks/60-mkinitcpio-remove.hook.disabled /usr/share/libalpm/hooks/60-mkinitcpio-remove.hook +fi + +echo "mkinitcpio hooks re-enabled" + +if command -v limine &>/dev/null; then + sudo limine-update +else + sudo mkinitcpio -P +fi diff --git a/install/login/limine-snapper.sh b/install/login/limine-snapper.sh old mode 100755 new mode 100644 index e679851..2d9dc29 --- a/install/login/limine-snapper.sh +++ b/install/login/limine-snapper.sh @@ -1,14 +1,27 @@ -#!/bin/bash - if command -v limine &>/dev/null; then sudo tee /etc/mkinitcpio.conf.d/omarchy_hooks.conf </dev/null HOOKS=(base udev plymouth keyboard autodetect microcode modconf kms keymap consolefont block encrypt filesystems fsck btrfs-overlayfs) EOF - [[ -f /boot/EFI/limine/limine.conf ]] && EFI=true + [[ -f /boot/EFI/limine/limine.conf ]] || [[ -f /boot/EFI/BOOT/limine.conf ]] && EFI=true # Conf location is different between EFI and BIOS - [[ -n "$EFI" ]] && limine_config="/boot/EFI/limine/limine.conf" || limine_config="/boot/limine/limine.conf" + if [[ -n "$EFI" ]]; then + # Check USB location first, then regular EFI location + if [[ -f /boot/EFI/BOOT/limine.conf ]]; then + limine_config="/boot/EFI/BOOT/limine.conf" + else + limine_config="/boot/EFI/limine/limine.conf" + fi + else + limine_config="/boot/limine/limine.conf" + fi + + # Double-check and exit if we don't have a config file for some reason + if [[ ! -f $limine_config ]]; then + echo "Error: Limine config not found at $limine_config" >&2 + exit 1 + fi CMDLINE=$(grep "^[[:space:]]*cmdline:" "$limine_config" | head -1 | sed 's/^[[:space:]]*cmdline:[[:space:]]*//') @@ -63,10 +76,9 @@ term_background_bright: 24283b EOF sudo pacman -S --noconfirm --needed limine-snapper-sync limine-mkinitcpio-hook - sudo limine-update # Match Snapper configs if not installing from the ISO - if [ -z "${OMARCHY_CHROOT_INSTALL:-}" ]; then + if [[ -z ${OMARCHY_CHROOT_INSTALL:-} ]]; then if ! sudo snapper list-configs 2>/dev/null | grep -q "root"; then sudo snapper -c root create-config / fi @@ -85,8 +97,9 @@ EOF fi # Add UKI entry to UEFI machines to skip bootloader showing on normal boot -if [ -n "$EFI" ] && efibootmgr &>/dev/null && ! efibootmgr | grep -q Omarchy && - ! cat /sys/class/dmi/id/bios_vendor 2>/dev/null | grep -qi "American Megatrends"; then +if [[ -n $EFI ]] && efibootmgr &>/dev/null && ! efibootmgr | grep -q Omarchy && + ! 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 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//')" \ diff --git a/install/login/plymouth.sh b/install/login/plymouth.sh old mode 100755 new mode 100644 index 37c0eaf..72102f2 --- a/install/login/plymouth.sh +++ b/install/login/plymouth.sh @@ -1,5 +1,3 @@ -#!/bin/bash - # Hyprland launched via UWSM and login directly as user, rely on disk encryption + hyprlock for security # ============================================================================== @@ -8,7 +6,7 @@ if [ "$(plymouth-set-default-theme)" != "omarchy" ]; then sudo cp -r "$HOME/.local/share/omarchy/default/plymouth" /usr/share/plymouth/themes/omarchy/ - sudo plymouth-set-default-theme -R omarchy + sudo plymouth-set-default-theme omarchy fi # ============================================================================== diff --git a/install/omarchy-base.packages b/install/omarchy-base.packages new file mode 100644 index 0000000..7d408e2 --- /dev/null +++ b/install/omarchy-base.packages @@ -0,0 +1,131 @@ +# Omarchy core package list installed via install/packages.sh +# This file is also used by the ISO builder when determining needs + +1password-beta +1password-cli +alacritty +asdcontrol-git +avahi +bash-completion +bat +blueberry +brightnessctl +btop +cargo +clang +cups +cups-browsed +cups-filters +cups-pdf +docker +docker-buildx +docker-compose +dust +evince +eza +fastfetch +fcitx5 +fcitx5-gtk +fcitx5-qt +fd +ffmpegthumbnailer +fontconfig +fzf +github-cli +gnome-calculator +gnome-keyring +gnome-themes-extra +gum +gvfs-mtp +gvfs-smb +hypridle +hyprland +hyprland-qtutils +hyprlock +hyprpicker +hyprshot +hyprsunset +imagemagick +impala +imv +inetutils +iwd +jq +kdenlive +kvantum-qt5 +lazydocker +lazygit +less +libyaml +libqalculate +libreoffice +llvm +localsend +luarocks +mako +man +mariadb-libs +mise +mpv +nautilus +noto-fonts +noto-fonts-cjk +noto-fonts-emoji +noto-fonts-extra +nss-mdns +nvim +obs-studio +obsidian +omarchy-chromium +omarchy-lazyvim +pamixer +pinta +playerctl +plocate +plymouth +polkit-gnome +postgresql-libs +power-profiles-daemon +python-gobject +python-poetry-core +python-terminaltexteffects +qt5-wayland +ripgrep +satty +signal-desktop +slurp +spotify +starship +sushi +swaybg +swayosd +system-config-printer +tldr +tree-sitter-cli +ttf-cascadia-mono-nerd +ttf-ia-writer +ttf-jetbrains-mono-nerd +typora +tzupdate +ufw +ufw-docker +unzip +uwsm +walker-bin +waybar +wf-recorder +whois +wireless-regdb +wiremix +wireplumber +wl-clip-persist +wl-clipboard +wl-screenrec +woff2-font-awesome +xdg-desktop-portal-gtk +xdg-desktop-portal-hyprland +xmlstarlet +xournalpp +yaru-icon-theme +yay +zoxide diff --git a/install/omarchy-other.packages b/install/omarchy-other.packages new file mode 100644 index 0000000..1ece3ca --- /dev/null +++ b/install/omarchy-other.packages @@ -0,0 +1,53 @@ +# Packages installed outside of install/packages.sh or optional packages +# Utilized by ISO builder to ensure package availability in the ISO + +autoconf-archive +base +base-devel +broadcom-wl +btrfs-progs +dart +dkms +egl-wayland +git +gst-plugin-pipewire +gtk4-layer-shell +htop +intltool +iwd +jdk-openjdk +libpulse +libsass +libva-intel-driver +libva-nvidia-driver +limine +limine-mkinitcpio-hook +limine-snapper-sync +linux +linux-firmware +linux-headers +macbook12-spi-driver-dkms +nvidia-dkms +nvidia-open-dkms +nvidia-utils +lib32-nvidia-utils +pipewire +pipewire-alsa +pipewire-jack +pipewire-pulse +qt5-remoteobjects +qt6-wayland +sassc +snapper +webp-pixbuf-loader +wget +yay-debug +zram-generator + +# T2 MacBook support packages +apple-bcm-firmware +apple-t2-audio-config +linux-t2 +linux-t2-headers +t2fanrd +tiny-dfr diff --git a/install/packages.sh b/install/packages.sh deleted file mode 100644 index e1fd977..0000000 --- a/install/packages.sh +++ /dev/null @@ -1,130 +0,0 @@ -#!/bin/bash - -sudo pacman -S --noconfirm --needed \ - 1password-beta \ - 1password-cli \ - asdcontrol-git \ - alacritty \ - avahi \ - bash-completion \ - bat \ - blueberry \ - brightnessctl \ - btop \ - cargo \ - clang \ - cups \ - cups-browsed \ - cups-filters \ - cups-pdf \ - docker \ - docker-buildx \ - docker-compose \ - dust \ - evince \ - eza \ - fastfetch \ - fcitx5 \ - fcitx5-gtk \ - fcitx5-qt \ - fd \ - ffmpegthumbnailer \ - fontconfig \ - fzf \ - gcc14 \ - github-cli \ - gnome-calculator \ - gnome-keyring \ - gnome-themes-extra \ - gum \ - gvfs-mtp \ - gvfs-smb \ - hypridle \ - hyprland \ - hyprland-qtutils \ - hyprlock \ - hyprpicker \ - hyprshot \ - hyprsunset \ - imagemagick \ - impala \ - imv \ - inetutils \ - iwd \ - jq \ - kdenlive \ - kvantum-qt5 \ - lazydocker \ - lazygit \ - less \ - libqalculate \ - libreoffice \ - llvm \ - localsend \ - luarocks \ - mako \ - man \ - mariadb-libs \ - mise \ - mpv \ - nautilus \ - noto-fonts \ - noto-fonts-cjk \ - noto-fonts-emoji \ - noto-fonts-extra \ - nss-mdns \ - nvim \ - obs-studio \ - obsidian \ - omarchy-chromium \ - pamixer \ - pinta \ - playerctl \ - plocate \ - plymouth \ - polkit-gnome \ - postgresql-libs \ - power-profiles-daemon \ - python-gobject \ - python-poetry-core \ - python-terminaltexteffects \ - qt5-wayland \ - ripgrep \ - satty \ - signal-desktop \ - slurp \ - spotify \ - starship \ - sushi \ - swaybg \ - swayosd \ - system-config-printer \ - tldr \ - tree-sitter-cli \ - ttf-cascadia-mono-nerd \ - ttf-ia-writer \ - ttf-jetbrains-mono-nerd \ - typora \ - tzupdate \ - ufw \ - ufw-docker \ - unzip \ - uwsm \ - walker-bin \ - waybar \ - wf-recorder \ - whois \ - wireless-regdb \ - wiremix \ - wireplumber \ - wl-clip-persist \ - wl-clipboard \ - wl-screenrec \ - woff2-font-awesome \ - xdg-desktop-portal-gtk \ - xdg-desktop-portal-hyprland \ - xmlstarlet \ - xournalpp \ - yaru-icon-theme \ - yay \ - zoxide diff --git a/install/packaging/all.sh b/install/packaging/all.sh new file mode 100644 index 0000000..5278873 --- /dev/null +++ b/install/packaging/all.sh @@ -0,0 +1,6 @@ +run_logged $OMARCHY_INSTALL/packaging/base.sh +run_logged $OMARCHY_INSTALL/packaging/fonts.sh +run_logged $OMARCHY_INSTALL/packaging/lazyvim.sh +run_logged $OMARCHY_INSTALL/packaging/icons.sh +run_logged $OMARCHY_INSTALL/packaging/webapps.sh +run_logged $OMARCHY_INSTALL/packaging/tuis.sh diff --git a/install/packaging/base.sh b/install/packaging/base.sh new file mode 100644 index 0000000..668e4a9 --- /dev/null +++ b/install/packaging/base.sh @@ -0,0 +1,3 @@ +# Install all base packages +mapfile -t packages < <(grep -v '^#' "$OMARCHY_INSTALL/omarchy-base.packages" | grep -v '^$') +sudo pacman -S --noconfirm --needed "${packages[@]}" diff --git a/install/packaging/fonts.sh b/install/packaging/fonts.sh old mode 100755 new mode 100644 index 01f31ed..8d5a35e --- a/install/packaging/fonts.sh +++ b/install/packaging/fonts.sh @@ -1,5 +1,3 @@ -#!/bin/bash - # Omarchy logo in a font for Waybar use mkdir -p ~/.local/share/fonts cp ~/.local/share/omarchy/config/omarchy.ttf ~/.local/share/fonts/ diff --git a/install/packaging/icons.sh b/install/packaging/icons.sh new file mode 100644 index 0000000..3110afc --- /dev/null +++ b/install/packaging/icons.sh @@ -0,0 +1,4 @@ +# Copy all bundled icons to the applications/icons directory +ICON_DIR="$HOME/.local/share/applications/icons" +mkdir -p "$ICON_DIR" +cp ~/.local/share/omarchy/applications/icons/*.png "$ICON_DIR/" diff --git a/install/packaging/lazyvim.sh b/install/packaging/lazyvim.sh old mode 100755 new mode 100644 index 7fad269..f8b8e37 --- a/install/packaging/lazyvim.sh +++ b/install/packaging/lazyvim.sh @@ -1,8 +1,3 @@ -#!/bin/bash - if [[ ! -d "$HOME/.config/nvim" ]]; then - git clone https://github.com/LazyVim/starter ~/.config/nvim - cp -R ~/.local/share/omarchy/config/nvim/* ~/.config/nvim/ - rm -rf ~/.config/nvim/.git - echo "vim.opt.relativenumber = false" >>~/.config/nvim/lua/config/options.lua + omarchy-lazyvim-setup fi diff --git a/install/packaging/pins.sh b/install/packaging/pins.sh deleted file mode 100755 index bacb616..0000000 --- a/install/packaging/pins.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/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/packaging/tuis.sh b/install/packaging/tuis.sh old mode 100755 new mode 100644 index 0aea639..273a5d7 --- a/install/packaging/tuis.sh +++ b/install/packaging/tuis.sh @@ -1,4 +1,4 @@ -#!/bin/bash +ICON_DIR="$HOME/.local/share/applications/icons" -omarchy-tui-install "Disk Usage" "bash -c 'dust -r; read -n 1 -s'" float https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/qdirstat.png -omarchy-tui-install "Docker" "lazydocker" tile https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/docker.png +omarchy-tui-install "Disk Usage" "bash -c 'dust -r; read -n 1 -s'" float "$ICON_DIR/Disk Usage.png" +omarchy-tui-install "Docker" "lazydocker" tile "$ICON_DIR/Docker.png" diff --git a/install/packaging/webapps.sh b/install/packaging/webapps.sh old mode 100755 new mode 100644 index ac6b3ba..df20bd3 --- a/install/packaging/webapps.sh +++ b/install/packaging/webapps.sh @@ -1,15 +1,13 @@ -#!/bin/bash - -omarchy-webapp-install "HEY" https://app.hey.com https://www.hey.com/assets/images/general/hey.png -omarchy-webapp-install "Basecamp" https://launchpad.37signals.com https://basecamp.com/assets/images/general/basecamp.png -omarchy-webapp-install "WhatsApp" https://web.whatsapp.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/whatsapp.png -omarchy-webapp-install "Google Photos" https://photos.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-photos.png -omarchy-webapp-install "Google Contacts" https://contacts.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-contacts.png -omarchy-webapp-install "Google Messages" https://messages.google.com/web/conversations https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-messages.png -omarchy-webapp-install "ChatGPT" https://chatgpt.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/chatgpt.png -omarchy-webapp-install "YouTube" https://youtube.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/youtube.png -omarchy-webapp-install "GitHub" https://github.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/github-light.png -omarchy-webapp-install "X" https://x.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/x-light.png -omarchy-webapp-install "Figma" https://figma.com/ https://www.veryicon.com/download/png/application/app-icon-7/figma-1?s=256 -omarchy-webapp-install "Discord" https://discord.com/channels/@me https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/discord.png -omarchy-webapp-install "Zoom" https://app.zoom.us/wc/home https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/zoom.png +omarchy-webapp-install "HEY" https://app.hey.com HEY.png +omarchy-webapp-install "Basecamp" https://launchpad.37signals.com Basecamp.png +omarchy-webapp-install "WhatsApp" https://web.whatsapp.com/ WhatsApp.png +omarchy-webapp-install "Google Photos" https://photos.google.com/ "Google Photos.png" +omarchy-webapp-install "Google Contacts" https://contacts.google.com/ "Google Contacts.png" +omarchy-webapp-install "Google Messages" https://messages.google.com/web/conversations "Google Messages.png" +omarchy-webapp-install "ChatGPT" https://chatgpt.com/ ChatGPT.png +omarchy-webapp-install "YouTube" https://youtube.com/ YouTube.png +omarchy-webapp-install "GitHub" https://github.com/ GitHub.png +omarchy-webapp-install "X" https://x.com/ X.png +omarchy-webapp-install "Figma" https://figma.com/ Figma.png +omarchy-webapp-install "Discord" https://discord.com/channels/@me Discord.png +omarchy-webapp-install "Zoom" https://app.zoom.us/wc/home Zoom.png "omarchy-webapp-handler-zoom %u" "x-scheme-handler/zoommtg;x-scheme-handler/zoomus" diff --git a/install/post-install/all.sh b/install/post-install/all.sh new file mode 100644 index 0000000..4242b62 --- /dev/null +++ b/install/post-install/all.sh @@ -0,0 +1,2 @@ +run_logged $OMARCHY_INSTALL/post-install/pacman.sh +source $OMARCHY_INSTALL/post-install/finished.sh diff --git a/install/post-install/finished.sh b/install/post-install/finished.sh new file mode 100644 index 0000000..ecd6531 --- /dev/null +++ b/install/post-install/finished.sh @@ -0,0 +1,40 @@ +stop_install_log + +echo_in_style() { + echo "$1" | tte --canvas-width 0 --anchor-text c --frame-rate 640 print +} + +clear +echo +tte -i ~/.local/share/omarchy/logo.txt --canvas-width 0 --anchor-text c --frame-rate 920 laseretch +echo + +# Display installation time if available +if [[ -f $OMARCHY_INSTALL_LOG_FILE ]] && grep -q "Total:" "$OMARCHY_INSTALL_LOG_FILE" 2>/dev/null; then + echo + TOTAL_TIME=$(tail -n 20 "$OMARCHY_INSTALL_LOG_FILE" | grep "^Total:" | sed 's/^Total:[[:space:]]*//') + if [ -n "$TOTAL_TIME" ]; then + echo_in_style "Installed in $TOTAL_TIME" + fi +else + echo_in_style "Finished installing" +fi + +if sudo test -f /etc/sudoers.d/99-omarchy-installer; then + sudo rm -f /etc/sudoers.d/99-omarchy-installer &>/dev/null + echo + echo_in_style "Remember to remove USB installer!" +fi + +# Exit gracefully if user chooses not to reboot +if gum confirm --padding "0 0 0 $((PADDING_LEFT + 32))" --show-help=false --default --affirmative "Reboot Now" --negative "" ""; then + # Clear screen to hide any shutdown messages + clear + + # Use systemctl if available, otherwise fallback to reboot command + if command -v systemctl &>/dev/null; then + systemctl reboot --no-wall 2>/dev/null + else + reboot 2>/dev/null + fi +fi diff --git a/install/post-install/pacman.sh b/install/post-install/pacman.sh new file mode 100644 index 0000000..c91a2c9 --- /dev/null +++ b/install/post-install/pacman.sh @@ -0,0 +1,12 @@ +# Configure pacman +sudo cp -f ~/.local/share/omarchy/default/pacman/pacman.conf /etc/pacman.conf +sudo cp -f ~/.local/share/omarchy/default/pacman/mirrorlist /etc/pacman.d/mirrorlist + +if lspci -nn | grep -q "106b:180[12]"; then + cat </dev/null + +[arch-mact2] +Server = https://github.com/NoaHimesaka1873/arch-mact2-mirror/releases/download/release +SigLevel = Never +EOF +fi diff --git a/install/preflight/all.sh b/install/preflight/all.sh new file mode 100644 index 0000000..8835465 --- /dev/null +++ b/install/preflight/all.sh @@ -0,0 +1,7 @@ +source $OMARCHY_INSTALL/preflight/guard.sh +source $OMARCHY_INSTALL/preflight/begin.sh +run_logged $OMARCHY_INSTALL/preflight/show-env.sh +run_logged $OMARCHY_INSTALL/preflight/pacman.sh +run_logged $OMARCHY_INSTALL/preflight/migrations.sh +run_logged $OMARCHY_INSTALL/preflight/first-run-mode.sh +run_logged $OMARCHY_INSTALL/preflight/disable-mkinitcpio.sh diff --git a/install/preflight/begin.sh b/install/preflight/begin.sh new file mode 100644 index 0000000..f83a7c3 --- /dev/null +++ b/install/preflight/begin.sh @@ -0,0 +1,4 @@ +clear_logo +gum style --foreground 3 --padding "1 0 0 $PADDING_LEFT" "Installing..." +echo +start_install_log diff --git a/install/preflight/disable-mkinitcpio.sh b/install/preflight/disable-mkinitcpio.sh new file mode 100644 index 0000000..a1979c8 --- /dev/null +++ b/install/preflight/disable-mkinitcpio.sh @@ -0,0 +1,16 @@ +# Temporarily disable mkinitcpio hooks to prevent multiple regenerations during package installation +# This speeds up installation significantly + +echo "Temporarily disabling mkinitcpio hooks during installation..." + +# Move the specific mkinitcpio pacman hooks out of the way if they exist +if [ -f /usr/share/libalpm/hooks/90-mkinitcpio-install.hook ]; then + sudo mv /usr/share/libalpm/hooks/90-mkinitcpio-install.hook /usr/share/libalpm/hooks/90-mkinitcpio-install.hook.disabled +fi + +if [ -f /usr/share/libalpm/hooks/60-mkinitcpio-remove.hook ]; then + sudo mv /usr/share/libalpm/hooks/60-mkinitcpio-remove.hook /usr/share/libalpm/hooks/60-mkinitcpio-remove.hook.disabled +fi + +echo "mkinitcpio hooks disabled" + diff --git a/install/preflight/first-run-mode.sh b/install/preflight/first-run-mode.sh old mode 100755 new mode 100644 index 49eee6f..4464949 --- a/install/preflight/first-run-mode.sh +++ b/install/preflight/first-run-mode.sh @@ -1,5 +1,3 @@ -#!/bin/bash - # Set first-run mode marker so we can install stuff post-installation mkdir -p ~/.local/state/omarchy touch ~/.local/state/omarchy/first-run.mode @@ -9,6 +7,7 @@ sudo tee /etc/sudoers.d/first-run >/dev/null </dev/null && gum confirm "Retry installation?"; then - bash ~/.local/share/omarchy/install.sh - else - echo "You can retry later by running: bash ~/.local/share/omarchy/install.sh" - fi -} - -trap catch_errors ERR diff --git a/install/reboot.sh b/install/reboot.sh deleted file mode 100644 index d444c14..0000000 --- a/install/reboot.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -clear -tte -i ~/.local/share/omarchy/logo.txt --frame-rate 920 laseretch -echo -echo "You're done! So we're ready to reboot now..." | tte --frame-rate 640 wipe - -if sudo test -f /etc/sudoers.d/99-omarchy-installer; then - sudo rm -f /etc/sudoers.d/99-omarchy-installer &>/dev/null - echo -e "\nRemember to remove USB installer!\n\n" -fi - -sleep 5 -reboot diff --git a/migrations/1752168292.sh b/migrations/1752168292.sh old mode 100755 new mode 100644 diff --git a/migrations/1753224615.sh b/migrations/1753224615.sh old mode 100755 new mode 100644 diff --git a/migrations/1753495989.sh b/migrations/1753495989.sh index 09f164a..119b432 100644 --- a/migrations/1753495989.sh +++ b/migrations/1753495989.sh @@ -1,6 +1,6 @@ echo "Allow updating of timezone by right-clicking on the clock (or running omarchy-cmd-tzupdate)" if omarchy-cmd-missing tzupdate; then - $OMARCHY_PATH/install/config/timezones.sh + bash "$OMARCHY_PATH/install/config/timezones.sh" omarchy-refresh-waybar fi diff --git a/migrations/1754265453.sh b/migrations/1754265453.sh deleted file mode 100644 index ab2d092..0000000 --- a/migrations/1754265453.sh +++ /dev/null @@ -1,3 +0,0 @@ -echo "Add chromium-flags.conf" - -omarchy-refresh-config chromium-flags.conf diff --git a/migrations/1755109182.sh b/migrations/1755109182.sh old mode 100755 new mode 100644 diff --git a/migrations/1755494432.sh b/migrations/1755494432.sh index 04bbe29..ae6cbc4 100644 --- a/migrations/1755494432.sh +++ b/migrations/1755494432.sh @@ -1,3 +1,3 @@ echo "Disable USB autosuspend" -$OMARCHY_PATH/install/config/hardware/usb-autosuspend.sh +bash "$OMARCHY_PATH/install/config/hardware/usb-autosuspend.sh" diff --git a/migrations/1755507891.sh b/migrations/1755507891.sh old mode 100755 new mode 100644 diff --git a/migrations/1755930114.sh b/migrations/1755930114.sh index 90d44e5..fd491d6 100644 --- a/migrations/1755930114.sh +++ b/migrations/1755930114.sh @@ -3,6 +3,3 @@ echo "Add new Omarchy Menu icon to Waybar" mkdir -p ~/.local/share/fonts cp ~/.local/share/omarchy/config/omarchy.ttf ~/.local/share/fonts/ fc-cache - -echo -gum confirm "Replace current Waybar config (backup will be made)?" && omarchy-refresh-waybar diff --git a/migrations/1756372498.sh b/migrations/1756372498.sh new file mode 100644 index 0000000..40ba5ad --- /dev/null +++ b/migrations/1756372498.sh @@ -0,0 +1,8 @@ +echo "Add eza themeing" + +mkdir -p ~/.config/eza + +if [ -f ~/.config/omarchy/current/theme/eza.yml ]; then + ln -snf ~/.config/omarchy/current/theme/eza.yml ~/.config/eza/theme.yml +fi + diff --git a/migrations/1756491748.sh b/migrations/1756491748.sh old mode 100755 new mode 100644 diff --git a/migrations/1756494998.sh b/migrations/1756494998.sh index e25f38d..1ffe1e8 100644 --- a/migrations/1756494998.sh +++ b/migrations/1756494998.sh @@ -1,3 +1,5 @@ echo "Remove opacity from alacritty.toml so Hyprland can control fully" -sed -i '/opacity = 0.98/d' ~/.config/alacritty/alacritty.toml +if [[ -f ~/.config/alacritty/alacritty.toml ]]; then + sed -i '/opacity = 0.98/d' ~/.config/alacritty/alacritty.toml +fi diff --git a/migrations/1756507384.sh b/migrations/1756507384.sh old mode 100755 new mode 100644 diff --git a/migrations/1756911131.sh b/migrations/1756911131.sh old mode 100755 new mode 100644 diff --git a/migrations/1757021485.sh b/migrations/1757021485.sh new file mode 100755 index 0000000..cb8f4c4 --- /dev/null +++ b/migrations/1757021485.sh @@ -0,0 +1,3 @@ +echo "Install Copy URL extension for Chromium" + +omarchy-refresh-config chromium-flags.conf diff --git a/migrations/1757147211.sh b/migrations/1757147211.sh new file mode 100644 index 0000000..f74afe5 --- /dev/null +++ b/migrations/1757147211.sh @@ -0,0 +1,7 @@ +echo "Create managed policy directories for Chromium and Brave for theme switching" + +sudo mkdir -p /etc/chromium/policies/managed +sudo chmod a+rw /etc/chromium/policies/managed + +sudo mkdir -p /etc/brave/policies/managed +sudo chmod a+rw /etc/brave/policies/managed diff --git a/migrations/1757435811.sh b/migrations/1757435811.sh new file mode 100644 index 0000000..8961559 --- /dev/null +++ b/migrations/1757435811.sh @@ -0,0 +1,3 @@ +echo "Copy Omarchy default app icons to .local/share/icons" + +source $OMARCHY_PATH/install/packaging/icons.sh diff --git a/migrations/1757435812.sh b/migrations/1757435812.sh new file mode 100644 index 0000000..14b308a --- /dev/null +++ b/migrations/1757435812.sh @@ -0,0 +1,6 @@ +echo "Update Zoom webapp to handle zoommtg:// and zoomus:// protocol links" + +if [[ -f ~/.local/share/applications/Zoom.desktop ]]; then + omarchy-webapp-remove Zoom + omarchy-webapp-install Zoom https://app.zoom.us/wc/home Zoom.png "omarchy-webapp-handler-zoom %u" "x-scheme-handler/zoommtg;x-scheme-handler/zoomus" +fi diff --git a/migrations/1757483378.sh b/migrations/1757483378.sh index ed51f32..999e4f0 100644 --- a/migrations/1757483378.sh +++ b/migrations/1757483378.sh @@ -1,4 +1,4 @@ echo "6Ghz Wi-Fi + Intel graphics acceleration for existing installations" -$OMARCHY_PATH/install/config/hardware/set-wireless-regdom.sh -$OMARCHY_PATH/install/config/hardware/intel.sh +bash "$OMARCHY_PATH/install/config/hardware/set-wireless-regdom.sh" +bash "$OMARCHY_PATH/install/config/hardware/intel.sh" diff --git a/migrations/1757511571.sh b/migrations/1757511571.sh new file mode 100644 index 0000000..7753a28 --- /dev/null +++ b/migrations/1757511571.sh @@ -0,0 +1,3 @@ +echo "Add screen recording indicator to Waybar" + +gum confirm "Replace current Waybar config (backup will be made)?" && omarchy-refresh-waybar diff --git a/migrations/1757512135.sh b/migrations/1757512135.sh new file mode 100644 index 0000000..a7314f6 --- /dev/null +++ b/migrations/1757512135.sh @@ -0,0 +1,5 @@ +echo "Make it possible to remove update-available icon with signal in Waybar" + +if ! grep -q '"signal": 7' ~/.config/waybar/config.jsonc; then + sed -i '/"tooltip-format": "Omarchy update available",/a\ "signal": 7,' ~/.config/waybar/config.jsonc +fi diff --git a/migrations/1757783204.sh b/migrations/1757783204.sh new file mode 100644 index 0000000..e5cc9b9 --- /dev/null +++ b/migrations/1757783204.sh @@ -0,0 +1,9 @@ +echo "Create ~/Work with ./bin in the path for contained projects" + +mise_config="$HOME/Work/.mise.toml" + +if [[ -f $mise_config ]]; then + cp $mise_config "$mise_config.bak.$(date +%s)" +fi + +source "$OMARCHY_PATH/install/config/mise-work.sh" diff --git a/migrations/1757861484.sh b/migrations/1757861484.sh new file mode 100644 index 0000000..fa4cec9 --- /dev/null +++ b/migrations/1757861484.sh @@ -0,0 +1,3 @@ +echo "Add a blurred background to the lock screen" + +omarchy-refresh-hyprlock diff --git a/migrations/1757866485.sh b/migrations/1757866485.sh new file mode 100644 index 0000000..ed0905e --- /dev/null +++ b/migrations/1757866485.sh @@ -0,0 +1,6 @@ +echo "Add SUPER + SHIFT + B to start browser in private mode" + +if [[ -f ~/.config/hypr/bindings.conf ]] && grep -q "SUPER, B, Browser, exec" ~/.config/hypr/bindings.conf; then + sed -i '/^bindd = SUPER, B, Browser, exec, \$browser$/a\ +bindd = SUPER SHIFT, B, Browser (private), exec, $browser --private' ~/.config/hypr/bindings.conf +fi diff --git a/migrations/1757877123.sh b/migrations/1757877123.sh new file mode 100644 index 0000000..0a0f3ab --- /dev/null +++ b/migrations/1757877123.sh @@ -0,0 +1,7 @@ +echo "Obsidian should be using Wayland IME for better compatibility with fcitx5 and other languages" + +if [[ -f ~/.config/hypr/bindings.conf ]]; then + sed -i '/^bindd = SUPER, O, Obsidian, exec, uwsm app -- obsidian -disable-gpu/{ + /--enable-wayland-ime/! s/$/ --enable-wayland-ime/ + }' ~/.config/hypr/bindings.conf +fi diff --git a/migrations/1757877852.sh b/migrations/1757877852.sh new file mode 100644 index 0000000..a0b88bd --- /dev/null +++ b/migrations/1757877852.sh @@ -0,0 +1,10 @@ +echo "Switch select bindings to launch or focus mode" + +if [[ -f ~/.config/hypr/bindings.conf ]]; then + sed -i '/SUPER, M, Music, exec/ c\bindd = SUPER, M, Music, exec, omarchy-launch-or-focus spotify' ~/.config/hypr/bindings.conf + sed -i '/SUPER, O, Obsidian, exec/ c\bindd = SUPER, O, Obsidian, exec, omarchy-launch-or-focus obsidian "uwsm app -- obsidian -disable-gpu --enable-wayland-ime"' ~/.config/hypr/bindings.conf + + sed -i '/SUPER, G, Signal, exec/ c\bindd = SUPER, G, Signal, exec, omarchy-launch-or-focus signal "uwsm app -- signal-desktop"' ~/.config/hypr/bindings.conf + sed -i '/SUPER SHIFT, G, WhatsApp, exec/ c\bindd = SUPER SHIFT, G, WhatsApp, exec, omarchy-launch-or-focus-webapp WhatsApp "https://web.whatsapp.com/"' ~/.config/hypr/bindings.conf + sed -i '/SUPER ALT, G, Google Messages, exec/ c\bindd = SUPER ALT, G, Google Messages, exec, omarchy-launch-or-focus-webapp "Google Messages" "https://messages.google.com/web/conversations"' ~/.config/hypr/bindings.conf +fi diff --git a/migrations/1757879836.sh b/migrations/1757879836.sh new file mode 100644 index 0000000..e15c441 --- /dev/null +++ b/migrations/1757879836.sh @@ -0,0 +1,10 @@ +echo "Ensure .config/hypr/looknfeel.conf is available and included" + +if [[ ! -f ~/.config/hypr/looknfeel.conf ]]; then + cp $OMARCHY_PATH/config/hypr/looknfeel.conf ~/.config/hypr/looknfeel.conf +fi + +if [[ -f ~/.config/hypr/hyprland.conf ]]; then + grep -qx 'source = ~/.config/hypr/looknfeel.conf' ~/.config/hypr/hyprland.conf || + sed -i '/^source = ~\/.config\/hypr\/envs\.conf$/a source = ~/.config/hypr/looknfeel.conf' ~/.config/hypr/hyprland.conf +fi diff --git a/migrations/1758019332.sh b/migrations/1758019332.sh new file mode 100644 index 0000000..003acd5 --- /dev/null +++ b/migrations/1758019332.sh @@ -0,0 +1,21 @@ +echo "Set \$TERMINAL and \$EDITOR in ~/.config/uwsm/default so entire system can rely on it" + +# Set terminal and editor default in uwsm +omarchy-refresh-config uwsm/default +omarchy-refresh-config uwsm/env +omarchy-state set relaunch-required + +# Ensure scrolltouchpad setting applies to all terminals +if grep -q "scrolltouchpad 1.5, class:Alacritty" ~/.config/hypr/input.conf; then + sed -i 's/windowrule = scrolltouchpad 1\.5, class:Alacritty/windowrule = scrolltouchpad 1.5, tag:terminal/' ~/.config/hypr/input.conf +fi + +# Use default editor for keybinding +if grep -q "bindd = SUPER, N, Neovim" ~/.config/hypr/bindings.conf; then + sed -i '/SUPER, N, Neovim, exec/ c\bindd = SUPER, N, Editor, exec, omarchy-launch-editor' ~/.config/hypr/bindings.conf +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 +fi diff --git a/migrations/1758051607.sh b/migrations/1758051607.sh new file mode 100644 index 0000000..e30cae7 --- /dev/null +++ b/migrations/1758051607.sh @@ -0,0 +1,11 @@ +echo "Copy configs for ghostty + kitty so they're available as alternative terminal options" + +if [[ ! -f ~/.config/ghostty/config ]]; then + mkdir -p ~/.config/ghostty + cp -Rpf $OMARCHY_PATH/config/ghostty/config ~/.config/ghostty/config +fi + +if [[ ! -f ~/.config/kitty/kitty.conf ]]; then + mkdir -p ~/.config/kitty + cp -Rpf $OMARCHY_PATH/config/kitty/kitty.conf ~/.config/kitty/kitty.conf +fi diff --git a/migrations/1758104201.sh b/migrations/1758104201.sh new file mode 100644 index 0000000..18ac701 --- /dev/null +++ b/migrations/1758104201.sh @@ -0,0 +1,3 @@ +echo "Prevent powerprofilesctl from using Mise python and not working" + +bash $OMARCHY_PATH/install/config/fix-powerprofilesctl-shebang.sh diff --git a/migrations/1758111304.sh b/migrations/1758111304.sh new file mode 100644 index 0000000..75f4dbb --- /dev/null +++ b/migrations/1758111304.sh @@ -0,0 +1,3 @@ +echo "Remove Ruby build options to force GCC14 now that GCC15 is compatible" + +mise settings unset ruby.ruby_build_opts diff --git a/themes/catppuccin-latte/ghostty.conf b/themes/catppuccin-latte/ghostty.conf new file mode 100644 index 0000000..e56f4ea --- /dev/null +++ b/themes/catppuccin-latte/ghostty.conf @@ -0,0 +1 @@ +theme = Catppuccin Latte diff --git a/themes/catppuccin-latte/kitty.conf b/themes/catppuccin-latte/kitty.conf new file mode 100644 index 0000000..43cba92 --- /dev/null +++ b/themes/catppuccin-latte/kitty.conf @@ -0,0 +1,78 @@ +## name: Catppuccin Latte 🐑 +## author: Pocco81 (https://github.com/Pocco81) +## license: MIT +## upstream: https://github.com/catppuccin/kitty/blob/main/latte.conf +## blurb: Soothing pastel theme for the high-spirited! + + + +# The basic colors +foreground #4C4F69 +background #EFF1F5 +selection_foreground #EFF1F5 +selection_background #DC8A78 + +# Cursor colors +cursor #DC8A78 +cursor_text_color #EFF1F5 + +# URL underline color when hovering with mouse +url_color #7287FD + +# Kitty window border colors +active_border_color #8839EF +inactive_border_color #7C7F93 +bell_border_color #E64553 + +# OS Window titlebar colors +wayland_titlebar_color system +macos_titlebar_color system + +# Tab bar colors +active_tab_foreground #EFF1F5 +active_tab_background #8839EF +inactive_tab_foreground #4C4F69 +inactive_tab_background #9CA0B0 +tab_bar_background #BCC0CC + +# Colors for marks (marked text in the terminal) +mark1_foreground #EFF1F5 +mark1_background #1E66F5 +mark2_foreground #EFF1F5 +mark2_background #8839EF +mark3_foreground #EFF1F5 +mark3_background #209FB5 + +# The 16 terminal colors + +# black +color0 #4C4F69 +color8 #6C6F85 + +# red +color1 #D20F39 +color9 #D20F39 + +# green +color2 #40A02B +color10 #40A02B + +# yellow +color3 #DF8E1D +color11 #DF8E1D + +# blue +color4 #1E66F5 +color12 #1E66F5 + +# magenta +color5 #EA76CB +color13 #EA76CB + +# cyan +color6 #179299 +color14 #179299 + +# white +color7 #ACB0BE +color15 #ACB0BE diff --git a/themes/catppuccin-latte/preview.png b/themes/catppuccin-latte/preview.png new file mode 100644 index 0000000..4c594da Binary files /dev/null and b/themes/catppuccin-latte/preview.png differ diff --git a/themes/catppuccin-latte/vscode.json b/themes/catppuccin-latte/vscode.json new file mode 100644 index 0000000..98d1113 --- /dev/null +++ b/themes/catppuccin-latte/vscode.json @@ -0,0 +1,4 @@ +{ + "name": "Catppuccin Latte", + "extension": "catppuccin.catppuccin-vsc" +} diff --git a/themes/catppuccin/eza.yml b/themes/catppuccin/eza.yml new file mode 100644 index 0000000..198febc --- /dev/null +++ b/themes/catppuccin/eza.yml @@ -0,0 +1,104 @@ +# see https://github.com/eza-community/eza-themes/blob/main/themes/catppuccin.yml + +colourful: true + +filekinds: + normal: {foreground: "#BAC2DE"} + directory: {foreground: "#89B4FA"} + symlink: {foreground: "#89DCEB"} + pipe: {foreground: "#7F849C"} + block_device: {foreground: "#EBA0AC"} + char_device: {foreground: "#EBA0AC"} + socket: {foreground: "#585B70"} + special: {foreground: "#CBA6F7"} + executable: {foreground: "#A6E3A1"} + mount_point: {foreground: "#74C7EC"} + +perms: + user_read: {foreground: "#CDD6F4"} + user_write: {foreground: "#F9E2AF"} + user_execute_file: {foreground: "#A6E3A1"} + user_execute_other: {foreground: "#A6E3A1"} + group_read: {foreground: "#BAC2DE"} + group_write: {foreground: "#F9E2AF"} + group_execute: {foreground: "#A6E3A1"} + other_read: {foreground: "#A6ADC8"} + other_write: {foreground: "#F9E2AF"} + other_execute: {foreground: "#A6E3A1"} + special_user_file: {foreground: "#CBA6F7"} + special_other: {foreground: "#585B70"} + attribute: {foreground: "#A6ADC8"} + +size: + major: {foreground: "#A6ADC8"} + minor: {foreground: "#89DCEB"} + number_byte: {foreground: "#CDD6F4"} + number_kilo: {foreground: "#BAC2DE"} + number_mega: {foreground: "#89B4FA"} + number_giga: {foreground: "#CBA6F7"} + number_huge: {foreground: "#CBA6F7"} + unit_byte: {foreground: "#A6ADC8"} + unit_kilo: {foreground: "#89B4FA"} + unit_mega: {foreground: "#CBA6F7"} + unit_giga: {foreground: "#CBA6F7"} + unit_huge: {foreground: "#74C7EC"} + +users: + user_you: {foreground: "#CDD6F4"} + user_root: {foreground: "#F38BA8"} + user_other: {foreground: "#CBA6F7"} + group_yours: {foreground: "#BAC2DE"} + group_other: {foreground: "#7F849C"} + group_root: {foreground: "#F38BA8"} + +links: + normal: {foreground: "#89DCEB"} + multi_link_file: {foreground: "#74C7EC"} + +git: + new: {foreground: "#A6E3A1"} + modified: {foreground: "#F9E2AF"} + deleted: {foreground: "#F38BA8"} + renamed: {foreground: "#94E2D5"} + typechange: {foreground: "#F5C2E7"} + ignored: {foreground: "#7F849C"} + conflicted: {foreground: "#EBA0AC"} + +git_repo: + branch_main: {foreground: "#CDD6F4"} + branch_other: {foreground: "#CBA6F7"} + git_clean: {foreground: "#A6E3A1"} + git_dirty: {foreground: "#F38BA8"} + +security_context: + colon: {foreground: "#7F849C"} + user: {foreground: "#BAC2DE"} + role: {foreground: "#CBA6F7"} + typ: {foreground: "#585B70"} + range: {foreground: "#CBA6F7"} + +file_type: + image: {foreground: "#F9E2AF"} + video: {foreground: "#F38BA8"} + music: {foreground: "#A6E3A1"} + lossless: {foreground: "#94E2D5"} + crypto: {foreground: "#585B70"} + document: {foreground: "#CDD6F4"} + compressed: {foreground: "#F5C2E7"} + temp: {foreground: "#EBA0AC"} + compiled: {foreground: "#74C7EC"} + build: {foreground: "#585B70"} + source: {foreground: "#89B4FA"} + +punctuation: {foreground: "#7F849C"} +date: {foreground: "#F9E2AF"} +inode: {foreground: "#A6ADC8"} +blocks: {foreground: "#9399B2"} +header: {foreground: "#CDD6F4"} +octal: {foreground: "#94E2D5"} +flags: {foreground: "#CBA6F7"} + +symlink_path: {foreground: "#89DCEB"} +control_char: {foreground: "#74C7EC"} +broken_symlink: {foreground: "#F38BA8"} +broken_path_overlay: {foreground: "#585B70"} diff --git a/themes/catppuccin/ghostty.conf b/themes/catppuccin/ghostty.conf new file mode 100644 index 0000000..fe0502b --- /dev/null +++ b/themes/catppuccin/ghostty.conf @@ -0,0 +1 @@ +theme = Catppuccin Mocha diff --git a/themes/catppuccin/kitty.conf b/themes/catppuccin/kitty.conf new file mode 100644 index 0000000..e8ee9a1 --- /dev/null +++ b/themes/catppuccin/kitty.conf @@ -0,0 +1,78 @@ +## name: Catppuccin Mocha 🌿 +## author: Pocco81 (https://github.com/Pocco81) +## license: MIT +## upstream: https://github.com/catppuccin/kitty/blob/main/mocha.conf +## blurb: Soothing pastel theme for the high-spirited! + + + +# The basic colors +foreground #CDD6F4 +background #1E1E2E +selection_foreground #1E1E2E +selection_background #F5E0DC + +# Cursor colors +cursor #F5E0DC +cursor_text_color #1E1E2E + +# URL underline color when hovering with mouse +url_color #B4BEFE + +# Kitty window border colors +active_border_color #CBA6F7 +inactive_border_color #8E95B3 +bell_border_color #EBA0AC + +# OS Window titlebar colors +wayland_titlebar_color system +macos_titlebar_color system + +# Tab bar colors +active_tab_foreground #11111B +active_tab_background #CBA6F7 +inactive_tab_foreground #CDD6F4 +inactive_tab_background #181825 +tab_bar_background #11111B + +# Colors for marks (marked text in the terminal) +mark1_foreground #1E1E2E +mark1_background #87B0F9 +mark2_foreground #1E1E2E +mark2_background #CBA6F7 +mark3_foreground #1E1E2E +mark3_background #74C7EC + +# The 16 terminal colors + +# black +color0 #43465A +color8 #43465A + +# red +color1 #F38BA8 +color9 #F38BA8 + +# green +color2 #A6E3A1 +color10 #A6E3A1 + +# yellow +color3 #F9E2AF +color11 #F9E2AF + +# blue +color4 #87B0F9 +color12 #87B0F9 + +# magenta +color5 #F5C2E7 +color13 #F5C2E7 + +# cyan +color6 #94E2D5 +color14 #94E2D5 + +# white +color7 #CDD6F4 +color15 #A1A8C9 diff --git a/themes/catppuccin/preview.png b/themes/catppuccin/preview.png new file mode 100644 index 0000000..019de1d Binary files /dev/null and b/themes/catppuccin/preview.png differ diff --git a/themes/catppuccin/vscode.json b/themes/catppuccin/vscode.json new file mode 100644 index 0000000..26e1188 --- /dev/null +++ b/themes/catppuccin/vscode.json @@ -0,0 +1,4 @@ +{ + "name": "Catppuccin Macchiato", + "extension": "catppuccin.catppuccin-vsc" +} diff --git a/themes/everforest/ghostty.conf b/themes/everforest/ghostty.conf new file mode 100644 index 0000000..c3b0aad --- /dev/null +++ b/themes/everforest/ghostty.conf @@ -0,0 +1 @@ +theme = Everforest Dark Hard diff --git a/themes/everforest/kitty.conf b/themes/everforest/kitty.conf new file mode 100644 index 0000000..07cea61 --- /dev/null +++ b/themes/everforest/kitty.conf @@ -0,0 +1,69 @@ +## name: Everforest Dark Hard +## author: Sainnhe Park +## license: MIT +## upstream: https://github.com/ewal/kitty-everforest/blob/master/themes/everforest_dark_hard.conf +## blurb: A green based color scheme designed to be warm and soft + +foreground #d3c6aa +background #272e33 +selection_foreground #9da9a0 +selection_background #464e53 + +cursor #d3c6aa +cursor_text_color #2e383c + +url_color #7fbbb3 + +active_border_color #a7c080 +inactive_border_color #4f5b58 +bell_border_color #e69875 +visual_bell_color none + +wayland_titlebar_color system +macos_titlebar_color system + +active_tab_background #272e33 +active_tab_foreground #d3c6aa +inactive_tab_background #374145 +inactive_tab_foreground #9da9a0 +tab_bar_background #2e383c +tab_bar_margin_color none + +mark1_foreground #272e33 +mark1_background #7fbbb3 +mark2_foreground #272e33 +mark2_background #d3c6aa +mark3_foreground #272e33 +mark3_background #d699b6 + +#: black +color0 #343f44 +color8 #868d80 + +#: red +color1 #e67e80 +color9 #e67e80 + +#: green +color2 #a7c080 +color10 #a7c080 + +#: yellow +color3 #dbbc7f +color11 #dbbc7f + +#: blue +color4 #7fbbb3 +color12 #7fbbb3 + +#: magenta +color5 #d699b6 +color13 #d699b6 + +#: cyan +color6 #83c092 +color14 #83c092 + +#: white +color7 #859289 +color15 #9da9a0 diff --git a/themes/everforest/preview.png b/themes/everforest/preview.png new file mode 100644 index 0000000..113396c Binary files /dev/null and b/themes/everforest/preview.png differ diff --git a/themes/everforest/vscode.json b/themes/everforest/vscode.json new file mode 100644 index 0000000..02b107d --- /dev/null +++ b/themes/everforest/vscode.json @@ -0,0 +1,4 @@ +{ + "name": "Everforest Dark", + "extension": "sainnhe.everforest" +} diff --git a/themes/gruvbox/eza.yml b/themes/gruvbox/eza.yml new file mode 100644 index 0000000..68d126d --- /dev/null +++ b/themes/gruvbox/eza.yml @@ -0,0 +1,104 @@ +# see https://github.com/eza-community/eza-themes/blob/main/themes/gruvbox-dark.yml + +colourful: true + +filekinds: + normal: {foreground: "#ebdbb2"} + directory: {foreground: "#83a598"} + symlink: {foreground: "#8ec07c"} + pipe: {foreground: "#928374"} + block_device: {foreground: "#fb4934"} + char_device: {foreground: "#fb4934"} + socket: {foreground: "#665c54"} + special: {foreground: "#d3869b"} + executable: {foreground: "#b8bb26"} + mount_point: {foreground: "#fe8019"} + +perms: + user_read: {foreground: "#ebdbb2"} + user_write: {foreground: "#fabd2f"} + user_execute_file: {foreground: "#b8bb26"} + user_execute_other: {foreground: "#b8bb26"} + group_read: {foreground: "#ebdbb2"} + group_write: {foreground: "#fabd2f"} + group_execute: {foreground: "#b8bb26"} + other_read: {foreground: "#bdae93"} + other_write: {foreground: "#fabd2f"} + other_execute: {foreground: "#b8bb26"} + special_user_file: {foreground: "#d3869b"} + special_other: {foreground: "#928374"} + attribute: {foreground: "#bdae93"} + +size: + major: {foreground: "#bdae93"} + minor: {foreground: "#8ec07c"} + number_byte: {foreground: "#ebdbb2"} + number_kilo: {foreground: "#ebdbb2"} + number_mega: {foreground: "#83a598"} + number_giga: {foreground: "#d3869b"} + number_huge: {foreground: "#d3869b"} + unit_byte: {foreground: "#bdae93"} + unit_kilo: {foreground: "#83a598"} + unit_mega: {foreground: "#d3869b"} + unit_giga: {foreground: "#d3869b"} + unit_huge: {foreground: "#fe8019"} + +users: + user_you: {foreground: "#ebdbb2"} + user_root: {foreground: "#fb4934"} + user_other: {foreground: "#d3869b"} + group_yours: {foreground: "#ebdbb2"} + group_other: {foreground: "#928374"} + group_root: {foreground: "#fb4934"} + +links: + normal: {foreground: "#8ec07c"} + multi_link_file: {foreground: "#fe8019"} + +git: + new: {foreground: "#b8bb26"} + modified: {foreground: "#fabd2f"} + deleted: {foreground: "#fb4934"} + renamed: {foreground: "#8ec07c"} + typechange: {foreground: "#d3869b"} + ignored: {foreground: "#928374"} + conflicted: {foreground: "#cc241d"} + +git_repo: + branch_main: {foreground: "#ebdbb2"} + branch_other: {foreground: "#d3869b"} + git_clean: {foreground: "#b8bb26"} + git_dirty: {foreground: "#fb4934"} + +security_context: + colon: {foreground: "#928374"} + user: {foreground: "#ebdbb2"} + role: {foreground: "#d3869b"} + typ: {foreground: "#665c54"} + range: {foreground: "#d3869b"} + +file_type: + image: {foreground: "#fabd2f"} + video: {foreground: "#fb4934"} + music: {foreground: "#b8bb26"} + lossless: {foreground: "#8ec07c"} + crypto: {foreground: "#928374"} + document: {foreground: "#ebdbb2"} + compressed: {foreground: "#d3869b"} + temp: {foreground: "#cc241d"} + compiled: {foreground: "#83a598"} + build: {foreground: "#928374"} + source: {foreground: "#83a598"} + +punctuation: {foreground: "#928374"} +date: {foreground: "#fabd2f"} +inode: {foreground: "#bdae93"} +blocks: {foreground: "#a89984"} +header: {foreground: "#ebdbb2"} +octal: {foreground: "#8ec07c"} +flags: {foreground: "#d3869b"} + +symlink_path: {foreground: "#8ec07c"} +control_char: {foreground: "#83a598"} +broken_symlink: {foreground: "#fb4934"} +broken_path_overlay: {foreground: "#928374"} diff --git a/themes/gruvbox/ghostty.conf b/themes/gruvbox/ghostty.conf new file mode 100644 index 0000000..dbb7464 --- /dev/null +++ b/themes/gruvbox/ghostty.conf @@ -0,0 +1 @@ +theme = Gruvbox Dark diff --git a/themes/gruvbox/kitty.conf b/themes/gruvbox/kitty.conf new file mode 100644 index 0000000..38b015c --- /dev/null +++ b/themes/gruvbox/kitty.conf @@ -0,0 +1,40 @@ +## name: Gruvbox Dark +## author: Pavel Pertsev +## license: MIT/X11 +## upstream: https://raw.githubusercontent.com/gruvbox-community/gruvbox-contrib/master/kitty/gruvbox-dark.conf + +selection_foreground #ebdbb2 +selection_background #d65d0e + +background #282828 +foreground #ebdbb2 + +color0 #3c3836 +color1 #cc241d +color2 #98971a +color3 #d79921 +color4 #458588 +color5 #b16286 +color6 #689d6a +color7 #a89984 +color8 #928374 +color9 #fb4934 +color10 #b8bb26 +color11 #fabd2f +color12 #83a598 +color13 #d3869b +color14 #8ec07c +color15 #fbf1c7 + +cursor #bdae93 +cursor_text_color #665c54 + +url_color #458588 + +# START_AUTOGENERATED_TAB_STYLE +# Feel free to update these colors manually and remove these comments. +active_tab_foreground #eeeeee +active_tab_background #d65d0e +inactive_tab_foreground #ebdbb2 +inactive_tab_background #202020 +# END_AUTOGENERATED_TAB_STYLE diff --git a/themes/gruvbox/preview.png b/themes/gruvbox/preview.png new file mode 100644 index 0000000..61d13c3 Binary files /dev/null and b/themes/gruvbox/preview.png differ diff --git a/themes/gruvbox/vscode.json b/themes/gruvbox/vscode.json new file mode 100644 index 0000000..e75a9b9 --- /dev/null +++ b/themes/gruvbox/vscode.json @@ -0,0 +1,4 @@ +{ + "name": "Gruvbox Dark Medium", + "extension": "jdinhlife.gruvbox" +} diff --git a/themes/kanagawa/ghostty.conf b/themes/kanagawa/ghostty.conf new file mode 100644 index 0000000..4e26c72 --- /dev/null +++ b/themes/kanagawa/ghostty.conf @@ -0,0 +1 @@ +theme = Kanagawa Wave diff --git a/themes/kanagawa/hyprland.conf b/themes/kanagawa/hyprland.conf index a3dc206..5153e8a 100644 --- a/themes/kanagawa/hyprland.conf +++ b/themes/kanagawa/hyprland.conf @@ -3,4 +3,4 @@ general { } # Kanagawa backdrop is too strong for detault opacity -windowrule = opacity 0.98 0.95, class:Alacritty +windowrule = opacity 0.98 0.95, tag:terminal diff --git a/themes/kanagawa/kitty.conf b/themes/kanagawa/kitty.conf new file mode 100644 index 0000000..7122cea --- /dev/null +++ b/themes/kanagawa/kitty.conf @@ -0,0 +1,68 @@ +## name: Kanagawa +## author: Tommaso Laurenzi +## license: MIT +## upstream: https://github.com/rebelot/kanagawa.nvim/ +## blurb: NeoVim dark colorscheme inspired by the colors of the famous painting +## by Katsushika Hokusai. + +#: The basic colors + +foreground #dcd7ba +background #1f1f28 +selection_foreground #c8c093 +selection_background #2d4f67 + +#: Cursor colors + +cursor #c8c093 + +#: URL underline color when overing with mouse + +url_color #72a7bc + +#: Tab bar colors + +active_tab_foreground #c8c093 +active_tab_background #1f1f28 +inactive_tab_foreground #727169 +inactive_tab_background #1f1f28 + +#: The basic 16 colors + +#: black +color0 #16161d +color8 #727169 + +#: red +color1 #c34043 +color9 #e82424 + +#: green +color2 #76946a +color10 #98bb6c + +#: yellow +color3 #c0a36e +color11 #e6c384 + +#: blue +color4 #7e9cd8 +color12 #7fb4ca + +#: magenta +color5 #957fb8 +color13 #938aa9 + +#: cyan +color6 #6a9589 +color14 #7aa89f + +#: white +color7 #c8c093 +color15 #dcd7ba + + +#: You can set the remaining 240 colors as color16 to color255. + +color16 #ffa066 +color17 #ff5d62 diff --git a/themes/kanagawa/preview.png b/themes/kanagawa/preview.png new file mode 100644 index 0000000..e75e118 Binary files /dev/null and b/themes/kanagawa/preview.png differ diff --git a/themes/kanagawa/vscode.json b/themes/kanagawa/vscode.json new file mode 100644 index 0000000..91f7539 --- /dev/null +++ b/themes/kanagawa/vscode.json @@ -0,0 +1,4 @@ +{ + "name": "Kanagawa", + "extension": "qufiwefefwoyn.kanagawa" +} diff --git a/themes/matte-black/ghostty.conf b/themes/matte-black/ghostty.conf new file mode 100644 index 0000000..574e657 --- /dev/null +++ b/themes/matte-black/ghostty.conf @@ -0,0 +1,19 @@ +# normal colors +palette = 0=#333333 +palette = 1=#D35F5F +palette = 2=#FFC107 +palette = 3=#B91C1C +palette = 4=#E68E0D +palette = 5=#D35F5F +palette = 6=#BEBEBE +palette = 7=#BEBEBE + +# bright colors +palette = 8=#8A8A8D +palette = 9=#B91C1C +palette = 10=#FFC107 +palette = 11=#B90A0A +palette = 12=#F59E0B +palette = 13=#B91C1C +palette = 14=#EAEAEA +palette = 15=#FFFFFF diff --git a/themes/matte-black/kitty.conf b/themes/matte-black/kitty.conf new file mode 100644 index 0000000..b5ee1da --- /dev/null +++ b/themes/matte-black/kitty.conf @@ -0,0 +1,54 @@ +## name: Matte Black + +foreground #bebebe +background #121212 +selection_foreground #121212 +selection_background #333333 + +cursor #eaeaea +cursor_text_color #121212 + +# URL underline color when hovering with mouse +url_color #bebebe + +# Kitty window border colors +active_border_color #595959 +inactive_border_color #595959 +bell_border_color #595959 + +# OS Window titlebar colors +wayland_titlebar_color system +macos_titlebar_color system + +# Tab bar colors +active_tab_foreground #bebebe +active_tab_background #121212 +inactive_tab_foreground #bebebe +inactive_tab_background #121212 +tab_bar_background #bebebe + +# Colors for marks (marked text in the terminal) +mark1_foreground #121212 +mark1_background #404040 +mark2_foreground #121212 +mark2_background #121212 +mark3_foreground #121212 +mark3_background #a6a6a6 + +color0 #333333 +color8 #8a8a8d +color1 #D35F5F +color9 #B91C1C +color2 #FFC107 +color10 #FFC107 +color3 #b91c1c +color11 #b90a0a +color4 #e68e0d +color12 #f59e0b +color5 #D35F5F +color13 #B91C1C +color6 #bebebe +color14 #eaeaea +color7 #bebebe +color15 #ffffff + diff --git a/themes/matte-black/preview.png b/themes/matte-black/preview.png new file mode 100644 index 0000000..63a7cea Binary files /dev/null and b/themes/matte-black/preview.png differ diff --git a/themes/matte-black/vscode.json b/themes/matte-black/vscode.json new file mode 100644 index 0000000..ac592f5 --- /dev/null +++ b/themes/matte-black/vscode.json @@ -0,0 +1,4 @@ +{ + "name": "MatteBlack", + "extension": "TahaYVR.matteblack" +} diff --git a/themes/nord/ghostty.conf b/themes/nord/ghostty.conf new file mode 100644 index 0000000..a93dbc9 --- /dev/null +++ b/themes/nord/ghostty.conf @@ -0,0 +1 @@ +theme = Nord diff --git a/themes/nord/kitty.conf b/themes/nord/kitty.conf new file mode 100644 index 0000000..91b570f --- /dev/null +++ b/themes/nord/kitty.conf @@ -0,0 +1,40 @@ +# Nord Colorscheme for Kitty + +foreground #D8DEE9 +background #2E3440 +selection_foreground #000000 +selection_background #FFFACD +url_color #0087BD +cursor #81A1C1 + +# black +color0 #3B4252 +color8 #4C566A + +# red +color1 #BF616A +color9 #BF616A + +# green +color2 #A3BE8C +color10 #A3BE8C + +# yellow +color3 #EBCB8B +color11 #EBCB8B + +# blue +color4 #81A1C1 +color12 #81A1C1 + +# magenta +color5 #B48EAD +color13 #B48EAD + +# cyan +color6 #88C0D0 +color14 #8FBCBB + +# white +color7 #E5E9F0 +color15 #ECEFF4 diff --git a/themes/nord/preview.png b/themes/nord/preview.png new file mode 100644 index 0000000..4e36427 Binary files /dev/null and b/themes/nord/preview.png differ diff --git a/themes/nord/vscode.json b/themes/nord/vscode.json new file mode 100644 index 0000000..897b8ba --- /dev/null +++ b/themes/nord/vscode.json @@ -0,0 +1,4 @@ +{ + "name": "Nord", + "extension": "arcticicestudio.nord-visual-studio-code" +} diff --git a/themes/osaka-jade/ghostty.conf b/themes/osaka-jade/ghostty.conf new file mode 100644 index 0000000..845659f --- /dev/null +++ b/themes/osaka-jade/ghostty.conf @@ -0,0 +1 @@ +theme = TokyoNight diff --git a/themes/osaka-jade/kitty.conf b/themes/osaka-jade/kitty.conf new file mode 100644 index 0000000..7831722 --- /dev/null +++ b/themes/osaka-jade/kitty.conf @@ -0,0 +1,44 @@ +## name :osaka-jade +foreground #C1C497 +background #111C18 +selection_foreground #111C18 +selection_background #C1C497 +cursor #D7C995 +cursor_text_color #000000 +active_tab_foreground #111C18 +active_tab_background #C1C497 +inactive_tab_foreground #C1C497 +inactive_tab_background #111C18 + +# black +color0 #23372B +color8 #53685B + +# red +color1 #FF5345 +color9 #DB9F9C + +# green +color2 #549E6A +color10 #143614 + +# yellow +color3 #459451 +color11 #E5C736 + +# blue +color4 #509475 +color12 #ACD4CF + +# magenta +color5 #D2689C +color13 #75BBB3 + +# cyan +color6 #2DD5B7 +color14 #8CD3CB + +# white +color7 #F6F5DD +color15 #9EEBB3 + diff --git a/themes/osaka-jade/preview.png b/themes/osaka-jade/preview.png new file mode 100644 index 0000000..bd99eed Binary files /dev/null and b/themes/osaka-jade/preview.png differ diff --git a/themes/osaka-jade/vscode.json b/themes/osaka-jade/vscode.json new file mode 100644 index 0000000..efe2d63 --- /dev/null +++ b/themes/osaka-jade/vscode.json @@ -0,0 +1,4 @@ +{ + "name": "Ocean Green: Dark", + "extension": "jovejonovski.ocean-green" +} diff --git a/themes/ristretto/ghostty.conf b/themes/ristretto/ghostty.conf new file mode 100644 index 0000000..f4ba692 --- /dev/null +++ b/themes/ristretto/ghostty.conf @@ -0,0 +1 @@ +theme = Monokai Pro Ristretto diff --git a/themes/ristretto/kitty.conf b/themes/ristretto/kitty.conf new file mode 100644 index 0000000..7af9143 --- /dev/null +++ b/themes/ristretto/kitty.conf @@ -0,0 +1,53 @@ +## name : Ristretto + +foreground #e6d9db +background #2c2525 + +selection_foreground #e6d9db +selection_background #403e41 + +cursor #c3b7b8 +cursor_text_color #c3b7b8 + +url_color #e6d9db + +active_border_color #595959 +inactive_border_color #595959 +bell_border_color #595959 + +active_tab_foreground #e6d9db +active_tab_background #2c2525 +inactive_tab_foreground #e6d9db +inactive_tab_background #2c2525 +tab_bar_background #e6d9db + +mark1_foreground #2c2525 +mark1_background #404040 +mark2_foreground #2c2525 +mark2_background #2c2525 +mark3_foreground #2c2525 +mark3_background #a6a6a6 + +color0 #72696a +color8 #948a8b + +color1 #fd6883 +color9 #ff8297 + +color2 #adda78 +color10 #c8e292 + +color3 #f9cc6c +color11 #fcd675 + +color4 #f38d70 +color12 #f8a788 + +color5 #a8a9eb +color13 #bebffd + +color6 #85dacc +color14 #9bf1e1 + +color7 #e6d9db +color15 #f1e5e7 diff --git a/themes/ristretto/preview.png b/themes/ristretto/preview.png new file mode 100644 index 0000000..d4ab5ca Binary files /dev/null and b/themes/ristretto/preview.png differ diff --git a/themes/ristretto/vscode.json b/themes/ristretto/vscode.json new file mode 100644 index 0000000..41a587e --- /dev/null +++ b/themes/ristretto/vscode.json @@ -0,0 +1,4 @@ +{ + "name": "Monokai Pro (Filter Ristretto)", + "extension": "monokai.theme-monokai-pro-vscode" +} diff --git a/themes/rose-pine/eza.yml b/themes/rose-pine/eza.yml new file mode 100644 index 0000000..cc65ef0 --- /dev/null +++ b/themes/rose-pine/eza.yml @@ -0,0 +1,123 @@ +# see https://github.com/eza-community/eza-themes/blob/main/themes/rose-pine.yml + +colourful: true + +# Colors are in format of: +# color/paletteRef (Description) #color code + +# Gold (Terminal Yellow) #f6c177 +# Love (Terminal Red) #eb6f92 +# Rose (Terminal Cyan) #ebbcba +# Base (Primary Background) #191724 +# Iris (Terminal Magenta) #c4a7e7 +# Foam (Terminal Blue) #9ccfd8 +# Pine (Terminal Green) #31748f +# Muted (Low Contrast Foreground) #6e6a86 +# Surface (Secondary Background Atop Base) #1f1d2e +# Overlay (Tertiary Background Atop Surface) #26233a +# Subtle (Medium Contrast Foreground) #908caa +# Text (High Contrast Foreground) #e0def4 +# Highlight Low (Low Contrast Highlight) #21202e +# Highlight Med (Medium Contrast Highlight) #403d52 +# Highlight High (High Contrast Highlight) #524f67 + +filekinds: + normal: {foreground: "#e0def4"} + directory: {foreground: "#9ccfd8"} + symlink: {foreground: "#524f67"} + pipe: {foreground: "#908caa"} + block_device: {foreground: "#ebbcba"} + char_device: {foreground: "#f6c177"} + socket: {foreground: "#21202e"} + special: {foreground: "#c4a7e7"} + executable: {foreground: "#c4a7e7"} + mount_point: {foreground: "#403d52"} + +perms: + user_read: {foreground: "#908caa"} + user_write: {foreground: "#403d52"} + user_execute_file: {foreground: "#c4a7e7"} + user_execute_other: {foreground: "#c4a7e7"} + group_read: {foreground: "#908caa"} + group_write: {foreground: "#403d52"} + group_execute: {foreground: "#c4a7e7"} + other_read: {foreground: "#908caa"} + other_write: {foreground: "#403d52"} + other_execute: {foreground: "#c4a7e7"} + special_user_file: {foreground: "#c4a7e7"} + special_other: {foreground: "#403d52"} + attribute: {foreground: "#908caa"} + +size: + major: {foreground: "#908caa"} + minor: {foreground: "#9ccfd8"} + number_byte: {foreground: "#908caa"} + number_kilo: {foreground: "#524f67"} + number_mega: {foreground: "#31748f"} + number_giga: {foreground: "#c4a7e7"} + number_huge: {foreground: "#c4a7e7"} + unit_byte: {foreground: "#908caa"} + unit_kilo: {foreground: "#31748f"} + unit_mega: {foreground: "#c4a7e7"} + unit_giga: {foreground: "#c4a7e7"} + unit_huge: {foreground: "#9ccfd8"} + +users: + user_you: {foreground: "#f6c177"} + user_root: {foreground: "#eb6f92"} + user_other: {foreground: "#c4a7e7"} + group_yours: {foreground: "#524f67"} + group_other: {foreground: "#6e6a86"} + group_root: {foreground: "#eb6f92"} + +links: + normal: {foreground: "#9ccfd8"} + multi_link_file: {foreground: "#31748f"} + +git: + new: {foreground: "#9ccfd8"} + modified: {foreground: "#f6c177"} + deleted: {foreground: "#eb6f92"} + renamed: {foreground: "#31748f"} + typechange: {foreground: "#c4a7e7"} + ignored: {foreground: "#6e6a86"} + conflicted: {foreground: "#ebbcba"} + +git_repo: + branch_main: {foreground: "#908caa"} + branch_other: {foreground: "#c4a7e7"} + git_clean: {foreground: "#9ccfd8"} + git_dirty: {foreground: "#eb6f92"} + +security_context: + colon: {foreground: "#908caa"} + user: {foreground: "#9ccfd8"} + role: {foreground: "#c4a7e7"} + typ: {foreground: "#6e6a86"} + range: {foreground: "#c4a7e7"} + +file_type: + image: {foreground: "#f6c177"} + video: {foreground: "#eb6f92"} + music: {foreground: "#9ccfd8"} + lossless: {foreground: "#6e6a86"} + crypto: {foreground: "#403d52"} + document: {foreground: "#908caa"} + compressed: {foreground: "#c4a7e7"} + temp: {foreground: "#ebbcba"} + compiled: {foreground: "#31748f"} + build: {foreground: "#6e6a86"} + source: {foreground: "#ebbcba"} + +punctuation: {foreground: "#524f67"} +date: {foreground: "#31748f"} +inode: {foreground: "#908caa"} +blocks: {foreground: "#6e6a86"} +header: {foreground: "#908caa"} +octal: {foreground: "#9ccfd8"} +flags: {foreground: "#c4a7e7"} + +symlink_path: {foreground: "#9ccfd8"} +control_char: {foreground: "#31748f"} +broken_symlink: {foreground: "#eb6f92"} +broken_path_overlay: {foreground: "#524f67"} diff --git a/themes/rose-pine/ghostty.conf b/themes/rose-pine/ghostty.conf new file mode 100644 index 0000000..33bbaa7 --- /dev/null +++ b/themes/rose-pine/ghostty.conf @@ -0,0 +1 @@ +theme = Rose Pine Dawn diff --git a/themes/rose-pine/kitty.conf b/themes/rose-pine/kitty.conf new file mode 100644 index 0000000..6c021dc --- /dev/null +++ b/themes/rose-pine/kitty.conf @@ -0,0 +1,51 @@ +## name: Rose-Pine + +foreground #575279 +background #faf4ed + +selection_foreground #575279 +selection_background #dfdad9 + +cursor #cecacd +cursor_text_color #575279 + +url_color #575279 + +active_border_color #595959 +inactive_border_color #595959 +bell_border_color #595959 + +active_tab_foreground #575279 +active_tab_background #fffaf3 +inactive_tab_foreground #575279 +inactive_tab_background #fffaf3 +tab_bar_background #575279 + +mark1_foreground #faf4ed +mark1_background #fffaf3 +mark2_foreground #9893a5 +mark2_background #fffaf3 + +color0 #f2e9e1 +color8 #9893a5 + +color1 #b4637a +color9 #b4637a + +color2 #286983 +color10 #286983 + +color3 #ea9d34 +color11 #ea9d34 + +color4 #56949f +color12 #56949f + +color5 #907aa9 +color13 #907aa9 + +color6 #d7827e +color14 #d7827e + +color7 #575279 +color15 #575279 diff --git a/themes/rose-pine/preview.png b/themes/rose-pine/preview.png new file mode 100644 index 0000000..02d85d0 Binary files /dev/null and b/themes/rose-pine/preview.png differ diff --git a/themes/rose-pine/vscode.json b/themes/rose-pine/vscode.json new file mode 100644 index 0000000..07e0050 --- /dev/null +++ b/themes/rose-pine/vscode.json @@ -0,0 +1,4 @@ +{ + "name": "Rosé Pine Dawn", + "extension": "mvllow.rose-pine" +} diff --git a/themes/tokyo-night/eza.yml b/themes/tokyo-night/eza.yml new file mode 100644 index 0000000..c227123 --- /dev/null +++ b/themes/tokyo-night/eza.yml @@ -0,0 +1,104 @@ +# see https://github.com/eza-community/eza-themes/blob/main/themes/tokyonight.yml + +colourful: true + +filekinds: + normal: { foreground: "#c0caf5" } + directory: { foreground: "#7aa2f7" } + symlink: { foreground: "#2ac3de" } + pipe: { foreground: "#414868" } + block_device: { foreground: "#e0af68" } + char_device: { foreground: "#e0af68" } + socket: { foreground: "#414868" } + special: { foreground: "#9d7cd8" } + executable: { foreground: "#9ece6a" } + mount_point: { foreground: "#b4f9f8" } + +perms: + user_read: { foreground: "#2ac3de" } + user_write: { foreground: "#bb9af7" } + user_execute_file: { foreground: "#9ece6a" } + user_execute_other: { foreground: "#9ece6a" } + group_read: { foreground: "#2ac3de" } + group_write: { foreground: "#ff9e64" } + group_execute: { foreground: "#9ece6a" } + other_read: { foreground: "#2ac3de" } + other_write: { foreground: "#ff007c" } + other_execute: { foreground: "#9ece6a" } + special_user_file: { foreground: "#ff007c" } + special_other: { foreground: "#db4b4b" } + attribute: { foreground: "#737aa2" } + +size: + major: { foreground: "#2ac3de" } + minor: { foreground: "#9d7cd8" } + number_byte: { foreground: "#a9b1d6" } + number_kilo: { foreground: "#89ddff" } + number_mega: { foreground: "#2ac3de" } + number_giga: { foreground: "#ff9e64" } + number_huge: { foreground: "#ff007c" } + unit_byte: { foreground: "#a9b1d6" } + unit_kilo: { foreground: "#89ddff" } + unit_mega: { foreground: "#2ac3de" } + unit_giga: { foreground: "#ff9e64" } + unit_huge: { foreground: "#ff007c" } + +users: + user_you: { foreground: "#3d59a1" } + user_root: { foreground: "#bb9af7" } + user_other: { foreground: "#2ac3de" } + group_yours: { foreground: "#89ddff" } + group_root: { foreground: "#bb9af7" } + group_other: { foreground: "#c0caf5" } + +links: + normal: { foreground: "#89ddff" } + multi_link_file: { foreground: "#2ac3de" } + +git: + new: { foreground: "#9ece6a" } + modified: { foreground: "#bb9af7" } + deleted: { foreground: "#db4b4b" } + renamed: { foreground: "#2ac3de" } + typechange: { foreground: "#2ac3de" } + ignored: { foreground: "#545c7e" } + conflicted: { foreground: "#ff9e64" } + +git_repo: + branch_main: { foreground: "#737aa2" } + branch_other: { foreground: "#b4f9f8" } + git_clean: { foreground: "#292e42" } + git_dirty: { foreground: "#bb9af7" } + +security_context: + colon: { foreground: "#545c7e" } + user: { foreground: "#737aa2" } + role: { foreground: "#2ac3de" } + typ: { foreground: "#3d59a1" } + range: { foreground: "#9d7cd8" } + +file_type: + image: { foreground: "#89ddff" } + video: { foreground: "#b4f9f8" } + music: { foreground: "#73daca" } + lossless: { foreground: "#41a6b5" } + crypto: { foreground: "#db4b4b" } + document: { foreground: "#a9b1d6" } + compressed: { foreground: "#ff9e64" } + temp: { foreground: "#737aa2" } + compiled: { foreground: "#737aa2" } + build: { foreground: "#1abc9c" } + source: { foreground: "#bb9af7" } + +punctuation: { foreground: "#414868" } +date: { foreground: "#e0af68" } +inode: { foreground: "#737aa2" } +blocks: { foreground: "#737aa2" } +header: { foreground: "#a9b1d6" } +octal: { foreground: "#ff9e64" } +flags: { foreground: "#9d7cd8" } + +symlink_path: { foreground: "#89ddff" } +control_char: { foreground: "#ff9e64" } +broken_symlink: { foreground: "#ff007c" } +broken_path_overlay: { foreground: "#ff007c" } diff --git a/themes/tokyo-night/ghostty.conf b/themes/tokyo-night/ghostty.conf new file mode 100644 index 0000000..845659f --- /dev/null +++ b/themes/tokyo-night/ghostty.conf @@ -0,0 +1 @@ +theme = TokyoNight diff --git a/themes/tokyo-night/kitty.conf b/themes/tokyo-night/kitty.conf new file mode 100644 index 0000000..37a5bd2 --- /dev/null +++ b/themes/tokyo-night/kitty.conf @@ -0,0 +1,48 @@ +## name: Tokyo Night +## license: MIT +## author: Folke Lemaitre +## upstream: https://github.com/folke/tokyonight.nvim/raw/main/extras/kitty/tokyonight_night.conf + + +background #1a1b26 +foreground #c0caf5 +selection_background #283457 +selection_foreground #c0caf5 +url_color #73daca +cursor #c0caf5 +cursor_text_color #1a1b26 + +# Tabs +active_tab_background #7aa2f7 +active_tab_foreground #16161e +inactive_tab_background #292e42 +inactive_tab_foreground #545c7e +#tab_bar_background #15161e + +# Windows +active_border_color #7aa2f7 +inactive_border_color #292e42 + +# normal +color0 #15161e +color1 #f7768e +color2 #9ece6a +color3 #e0af68 +color4 #7aa2f7 +color5 #bb9af7 +color6 #7dcfff +color7 #a9b1d6 + +# bright +color8 #414868 +color9 #f7768e +color10 #9ece6a +color11 #e0af68 +color12 #7aa2f7 +color13 #bb9af7 +color14 #7dcfff +color15 #c0caf5 + +# extended colors +color16 #ff9e64 +color17 #db4b4b diff --git a/themes/tokyo-night/preview.png b/themes/tokyo-night/preview.png new file mode 100644 index 0000000..2c0eb4f Binary files /dev/null and b/themes/tokyo-night/preview.png differ diff --git a/themes/tokyo-night/vscode.json b/themes/tokyo-night/vscode.json new file mode 100644 index 0000000..89af98c --- /dev/null +++ b/themes/tokyo-night/vscode.json @@ -0,0 +1,4 @@ +{ + "name": "Tokyo Night", + "extension": "enkia.tokyo-night" +}