diff --git a/bin/omarchy-cmd-screenrecord b/bin/omarchy-cmd-screenrecord index d9dbdcc7..3ee3d877 100755 --- a/bin/omarchy-cmd-screenrecord +++ b/bin/omarchy-cmd-screenrecord @@ -2,6 +2,8 @@ # Start and stop a screenrecording, which will be saved to ~/Videos by default. # Alternative location can be set via OMARCHY_SCREENRECORD_DIR or XDG_VIDEOS_DIR ENVs. +# Resolution is capped to 4K for monitors above 4K, native otherwise. +# Override via --resolution= (e.g. --resolution=1920x1080, --resolution=0x0 for native). [[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs OUTPUT_DIR="${OMARCHY_SCREENRECORD_DIR:-${XDG_VIDEOS_DIR:-$HOME/Videos}}" @@ -15,28 +17,27 @@ DESKTOP_AUDIO="false" MICROPHONE_AUDIO="false" WEBCAM="false" WEBCAM_DEVICE="" +RESOLUTION="" STOP_RECORDING="false" +RECORDING_FILE="/tmp/omarchy-screenrecord-filename" for arg in "$@"; do case "$arg" in - --with-desktop-audio) DESKTOP_AUDIO="true" ;; - --with-microphone-audio) MICROPHONE_AUDIO="true" ;; - --with-webcam) WEBCAM="true" ;; - --webcam-device=*) WEBCAM_DEVICE="${arg#*=}" ;; - --stop-recording) STOP_RECORDING="true" + --with-desktop-audio) DESKTOP_AUDIO="true" ;; + --with-microphone-audio) MICROPHONE_AUDIO="true" ;; + --with-webcam) WEBCAM="true" ;; + --webcam-device=*) WEBCAM_DEVICE="${arg#*=}" ;; + --resolution=*) RESOLUTION="${arg#*=}" ;; + --stop-recording) STOP_RECORDING="true" ;; esac done -cleanup_webcam() { - pkill -f "WebcamOverlay" 2>/dev/null -} - start_webcam_overlay() { cleanup_webcam # Auto-detect first available webcam if none specified if [[ -z $WEBCAM_DEVICE ]]; then - WEBCAM_DEVICE=$(v4l2-ctl --list-devices 2>/dev/null | grep -m1 "^\s*/dev/video" | tr -d '\t') + WEBCAM_DEVICE=$(v4l2-ctl --list-devices 2>/dev/null | grep -m1 "^[[:space:]]*/dev/video" | tr -d '\t') if [[ -z $WEBCAM_DEVICE ]]; then notify-send "No webcam devices found" -u critical -t 3000 return 1 @@ -71,10 +72,24 @@ start_webcam_overlay() { sleep 1 } +cleanup_webcam() { + pkill -f "WebcamOverlay" 2>/dev/null +} + +default_resolution() { + local width height + read -r width height < <(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | "\(.width) \(.height)"') + if ((width > 3840 || height > 2160)); then + echo "3840x2160" + else + echo "0x0" + fi +} + start_screenrecording() { local filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4" local audio_devices="" - local audio_args="" + local audio_args=() [[ $DESKTOP_AUDIO == "true" ]] && audio_devices+="default_output" @@ -84,15 +99,61 @@ start_screenrecording() { audio_devices+="default_input" fi - [[ -n $audio_devices ]] && audio_args+="-a $audio_devices" + [[ -n $audio_devices ]] && audio_args+=(-a "$audio_devices" -ac aac) + + local resolution="${RESOLUTION:-$(default_resolution)}" + + gpu-screen-recorder -w portal -k auto -s "$resolution" -f 60 -fm cfr -fallback-cpu-encoding yes -o "$filename" "${audio_args[@]}" & + local pid=$! + + # Wait for recording to actually start (file appears after portal selection) + while kill -0 $pid 2>/dev/null && [[ ! -f $filename ]]; do + sleep 0.2 + done + + if kill -0 $pid 2>/dev/null; then + echo "$filename" >"$RECORDING_FILE" + toggle_screenrecording_indicator + fi +} + +stop_screenrecording() { + pkill -SIGINT -f "^gpu-screen-recorder" # SIGINT required to save video properly + + # Wait a maximum of 5 seconds to finish before hard killing + local count=0 + while pgrep -f "^gpu-screen-recorder" >/dev/null && ((count < 50)); do + sleep 0.1 + count=$((count + 1)) + done - gpu-screen-recorder -w portal -k h264 -f 60 -fallback-cpu-encoding yes -o "$filename" $audio_args -ac aac & toggle_screenrecording_indicator + cleanup_webcam + + if pgrep -f "^gpu-screen-recorder" >/dev/null; then + pkill -9 -f "^gpu-screen-recorder" + notify-send "Screen recording error" "Recording process had to be force-killed. Video may be corrupted." -u critical -t 5000 + else + trim_first_frame + notify-send "Screen recording saved to $OUTPUT_DIR" -t 2000 + fi + + rm -f "$RECORDING_FILE" +} + +toggle_screenrecording_indicator() { + pkill -RTMIN+8 waybar +} + +screenrecording_active() { + pgrep -f "^gpu-screen-recorder" >/dev/null } trim_first_frame() { - local latest=$(ls -t "$OUTPUT_DIR"/screenrecording-*.mp4 2>/dev/null | head -1) - if [[ -n $latest ]]; then + local latest + latest=$(cat "$RECORDING_FILE" 2>/dev/null) + + if [[ -n $latest && -f $latest ]]; then local trimmed="${latest%.mp4}-trimmed.mp4" if ffmpeg -y -ss 0.1 -i "$latest" -c copy "$trimmed" -loglevel quiet 2>/dev/null; then mv "$trimmed" "$latest" @@ -102,46 +163,12 @@ trim_first_frame() { fi } -stop_screenrecording() { - pkill -SIGINT -f "^gpu-screen-recorder" # SIGINT required to save video properly - - # Wait a maximum of 5 seconds to finish before hard killing - local count=0 - while pgrep -f "^gpu-screen-recorder" >/dev/null && (( count < 50 )); do - sleep 0.1 - count=$((count + 1)) - done - - if pgrep -f "^gpu-screen-recorder" >/dev/null; then - pkill -9 -f "^gpu-screen-recorder" - cleanup_webcam - notify-send "Screen recording error" "Recording process had to be force-killed. Video may be corrupted." -u critical -t 5000 - else - cleanup_webcam - trim_first_frame - notify-send "Screen recording saved to $OUTPUT_DIR" -t 2000 - fi - toggle_screenrecording_indicator -} - -toggle_screenrecording_indicator() { - pkill -RTMIN+8 waybar -} - -screenrecording_active() { - pgrep -f "^gpu-screen-recorder" >/dev/null || pgrep -f "WebcamOverlay" >/dev/null -} - if screenrecording_active; then - if pgrep -f "WebcamOverlay" >/dev/null && ! pgrep -f "^gpu-screen-recorder" >/dev/null; then - cleanup_webcam - else - stop_screenrecording - fi -elif [[ $STOP_RECORDING == "false" ]]; then + stop_screenrecording +elif [[ $STOP_RECORDING == "true" ]]; then + exit 1 +else [[ $WEBCAM == "true" ]] && start_webcam_overlay start_screenrecording || cleanup_webcam -else - exit 1 fi diff --git a/bin/omarchy-hyprland-monitor-scaling-toggle b/bin/omarchy-hyprland-monitor-scaling-cycle similarity index 100% rename from bin/omarchy-hyprland-monitor-scaling-toggle rename to bin/omarchy-hyprland-monitor-scaling-cycle diff --git a/bin/omarchy-hyprland-workspace-toggle-gaps b/bin/omarchy-hyprland-window-gaps-toggle similarity index 100% rename from bin/omarchy-hyprland-workspace-toggle-gaps rename to bin/omarchy-hyprland-window-gaps-toggle diff --git a/bin/omarchy-hyprland-window-single-square-aspect-toggle b/bin/omarchy-hyprland-window-single-square-aspect-toggle index 423ef0d1..eb747e78 100755 --- a/bin/omarchy-hyprland-window-single-square-aspect-toggle +++ b/bin/omarchy-hyprland-window-single-square-aspect-toggle @@ -1,13 +1,13 @@ #!/bin/bash # Check current single_window_aspect_ratio setting -CURRENT_VALUE=$(hyprctl getoption "dwindle:single_window_aspect_ratio" 2>/dev/null | head -1) +CURRENT_VALUE=$(hyprctl getoption "layout:single_window_aspect_ratio" 2>/dev/null | head -1) # Parse vec2 output: "vec2: [1, 1]" or "vec2: [0, 0]" if [[ $CURRENT_VALUE == *"[1, 1]"* ]]; then - hyprctl keyword dwindle:single_window_aspect_ratio "0 0" + hyprctl keyword layout:single_window_aspect_ratio "0 0" notify-send " Disable single-window square aspect ratio" else - hyprctl keyword dwindle:single_window_aspect_ratio "1 1" + hyprctl keyword layout:single_window_aspect_ratio "1 1" notify-send " Enable single-window square aspect" fi diff --git a/bin/omarchy-hyprland-workspace-layout-toggle b/bin/omarchy-hyprland-workspace-layout-toggle new file mode 100755 index 00000000..96f4f5af --- /dev/null +++ b/bin/omarchy-hyprland-workspace-layout-toggle @@ -0,0 +1,14 @@ +#!/bin/bash + +# Toggle the layout on the current active workspace between dwindle and scrolling + +ACTIVE_WORKSPACE=$(hyprctl activeworkspace -j | jq -r '.id') +CURRENT_LAYOUT=$(hyprctl activeworkspace -j | jq -r '.tiledLayout') + +case "$CURRENT_LAYOUT" in + dwindle) NEW_LAYOUT=scrolling ;; + *) NEW_LAYOUT=dwindle ;; +esac + +hyprctl keyword workspace $ACTIVE_WORKSPACE, layout:$NEW_LAYOUT +notify-send "󱂬 Workspace layout set to $NEW_LAYOUT" diff --git a/bin/omarchy-menu b/bin/omarchy-menu index 8fe6fa4a..6c697a31 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -102,7 +102,7 @@ show_capture_menu() { *Screenshot*) omarchy-cmd-screenshot ;; *Screenrecord*) show_screenrecord_menu ;; *Color*) pkill hyprpicker || hyprpicker -a ;; - *) show_trigger_menu ;; + *) back_to show_trigger_menu ;; esac } @@ -161,12 +161,17 @@ show_share_menu() { } show_toggle_menu() { - case $(menu "Toggle" "󱄄 Screensaver\n󰔎 Nightlight\n󱫖 Idle Lock\n󰍜 Top Bar") in + case $(menu "Toggle" "󱄄 Screensaver\n󰔎 Nightlight\n󱫖 Idle Lock\n󰍜 Top Bar\n󱂬 Workspace Layout\n Window Gaps\n 1-Window Ratio\n󰍹 Display Scaling") in + *Screensaver*) omarchy-toggle-screensaver ;; *Nightlight*) omarchy-toggle-nightlight ;; *Idle*) omarchy-toggle-idle ;; *Bar*) omarchy-toggle-waybar ;; - *) show_trigger_menu ;; + *Layout*) omarchy-hyprland-workspace-layout-toggle ;; + *Ratio*) omarchy-hyprland-window-single-square-aspect-toggle ;; + *Gaps*) omarchy-hyprland-window-gaps-toggle ;; + *Scaling*) omarchy-hyprland-monitor-scaling-cycle ;; + *) back_to show_trigger_menu ;; esac } @@ -593,6 +598,7 @@ go_to_menu() { *apps*) walker -p "Launch…" ;; *learn*) show_learn_menu ;; *trigger*) show_trigger_menu ;; + *toggle*) show_toggle_menu ;; *share*) show_share_menu ;; *background*) show_background_menu ;; *capture*) show_capture_menu ;; diff --git a/bin/omarchy-refresh-tmux b/bin/omarchy-refresh-tmux index 64c7f9f2..560c7fd5 100755 --- a/bin/omarchy-refresh-tmux +++ b/bin/omarchy-refresh-tmux @@ -3,7 +3,4 @@ # Overwrite the user tmux config with the Omarchy default and reload tmux. omarchy-refresh-config tmux/tmux.conf - -if pgrep -x tmux; then - tmux source-file ~/.config/tmux/tmux.conf -fi +omarchy-restart-tmux diff --git a/bin/omarchy-restart-tmux b/bin/omarchy-restart-tmux new file mode 100755 index 00000000..b1ce7603 --- /dev/null +++ b/bin/omarchy-restart-tmux @@ -0,0 +1,7 @@ +#!/bin/bash + +# Restart tmux if running with the latest configuration + +if pgrep -x tmux; then + tmux source-file ~/.config/tmux/tmux.conf +fi diff --git a/bin/omarchy-update-perform b/bin/omarchy-update-perform index c2101c15..5cf6e329 100755 --- a/bin/omarchy-update-perform +++ b/bin/omarchy-update-perform @@ -5,7 +5,8 @@ set -e # Ensure screensaver/sleep doesn't set in during updates hyprctl dispatch tagwindow +noidle &> /dev/null || true -# Capture update logs +# Capture update logs (CLICOLOR_FORCE keeps gum styled when stdout is piped through tee) +export CLICOLOR_FORCE=1 exec > >(tee "/tmp/omarchy-update.log") 2>&1 # Perform all update steps diff --git a/bin/omarchy-update-restart b/bin/omarchy-update-restart index 2e62716b..ee03fbde 100755 --- a/bin/omarchy-update-restart +++ b/bin/omarchy-update-restart @@ -1,11 +1,18 @@ #!/bin/bash +echo + if [[ ! -d /usr/lib/modules/$(uname -r) ]]; then gum confirm "Linux kernel has been updated. Reboot?" && omarchy-system-reboot elif [[ -f $HOME/.local/state/omarchy/reboot-required ]]; then gum confirm "Updates require reboot. Ready?" && omarchy-system-reboot fi +running_hyprland=$(readlink /proc/$(pgrep -x Hyprland)/exe 2>/dev/null) +if [[ $running_hyprland == *"(deleted)"* ]]; then + gum confirm "Hyprland has been updated. Reboot?" && omarchy-system-reboot +fi + for file in "$HOME"/.local/state/omarchy/restart-*-required; do if [[ -f $file ]]; then filename=$(basename "$file") diff --git a/config/hypr/looknfeel.conf b/config/hypr/looknfeel.conf index 8d869813..2d2b7000 100644 --- a/config/hypr/looknfeel.conf +++ b/config/hypr/looknfeel.conf @@ -7,8 +7,8 @@ general { # gaps_out = 0 # border_size = 0 - # Use master layout instead of dwindle - # layout = master + # Change to niri-like side-scrolling layout + # layout = scrolling } # https://wiki.hyprland.org/Configuring/Variables/#decoration @@ -27,8 +27,8 @@ animations { # enabled = no } -# https://wiki.hypr.land/Configuring/Dwindle-Layout/ -dwindle { +# https://wiki.hypr.land/Configuring/Variables/#layout +layout { # Avoid overly wide single-window layouts on wide screens # single_window_aspect_ratio = 1 1 } diff --git a/config/tmux/tmux.conf b/config/tmux/tmux.conf index 5aa42094..56f0ac87 100644 --- a/config/tmux/tmux.conf +++ b/config/tmux/tmux.conf @@ -41,6 +41,9 @@ bind -n M-7 select-window -t 7 bind -n M-8 select-window -t 8 bind -n M-9 select-window -t 9 +bind -n M-Left select-window -t -1 +bind -n M-Right select-window -t +1 + # Session controls bind R command-prompt -I "#S" "rename-session -- '%%'" bind C new-session -c "#{pane_current_path}" @@ -48,6 +51,9 @@ bind K kill-session bind P switch-client -p bind N switch-client -n +bind -n M-Up switch-client -p +bind -n M-Down switch-client -n + # General set -g default-terminal "tmux-256color" set -ag terminal-overrides ",*:RGB" diff --git a/default/bash/envs b/default/bash/envs index ff08817a..ea8510e6 100644 --- a/default/bash/envs +++ b/default/bash/envs @@ -4,4 +4,4 @@ export BAT_THEME=ansi # Duplicated from .config/uwsm/env so SSH works too export OMARCHY_PATH=$HOME/.local/share/omarchy -export PATH=$OMARCHY_PATH/bin:$PATH +export PATH=$OMARCHY_PATH/bin:$PATH:$HOME/.local/bin diff --git a/default/bashrc b/default/bashrc index 77e8d27b..eaf13c66 100644 --- a/default/bashrc +++ b/default/bashrc @@ -9,4 +9,3 @@ source ~/.local/share/omarchy/default/bash/rc # # Make an alias for invoking commands you use constantly # alias p='python' -# alias cx="claude --permission-mode=plan --allow-dangerously-skip-permissions" diff --git a/default/hypr/apps/system.conf b/default/hypr/apps/system.conf index 702388f2..443fb069 100644 --- a/default/hypr/apps/system.conf +++ b/default/hypr/apps/system.conf @@ -10,6 +10,7 @@ windowrule = float on, match:class org.gnome.Calculator # Fullscreen screensaver windowrule = fullscreen on, match:class org.omarchy.screensaver windowrule = float on, match:class org.omarchy.screensaver +windowrule = animation slide, match:class org.omarchy.screensaver # No transparency on media windows windowrule = tag -default-opacity, match:class ^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$ diff --git a/default/hypr/bindings/tiling-v2.conf b/default/hypr/bindings/tiling-v2.conf index 2b4de61c..6b8da1dd 100644 --- a/default/hypr/bindings/tiling-v2.conf +++ b/default/hypr/bindings/tiling-v2.conf @@ -3,13 +3,14 @@ bindd = SUPER, W, Close window, killactive, bindd = CTRL ALT, DELETE, Close all windows, exec, omarchy-hyprland-window-close-all # Control tiling -bindd = SUPER, J, Toggle window split, togglesplit, # dwindle +bindd = SUPER, J, Toggle window split, layoutmsg, togglesplit bindd = SUPER, P, Pseudo window, pseudo, # dwindle bindd = SUPER, T, Toggle window floating/tiling, togglefloating, bindd = SUPER, F, Full screen, fullscreen, 0 bindd = SUPER CTRL, F, Tiled full screen, fullscreenstate, 0 2 bindd = SUPER ALT, F, Full width, fullscreen, 1 bindd = SUPER, O, Pop window out (float & pin), exec, omarchy-hyprland-window-pop +bindd = SUPER, L, Toggle workspace layout, exec, omarchy-hyprland-workspace-layout-toggle # Move focus with SUPER + arrow keys bindd = SUPER, LEFT, Move window focus left, movefocus, l @@ -122,3 +123,6 @@ bindd = SUPER ALT, code:11, Switch to group window 2, changegroupactive, 2 bindd = SUPER ALT, code:12, Switch to group window 3, changegroupactive, 3 bindd = SUPER ALT, code:13, Switch to group window 4, changegroupactive, 4 bindd = SUPER ALT, code:14, Switch to group window 5, changegroupactive, 5 + +# Cycle monitor scaling +bindd = SUPER, Slash, Cycle monitor scaling, exec, omarchy-hyprland-monitor-scaling-cycle diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index 6cd1e21d..bd3ca4ab 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -2,6 +2,7 @@ bindd = SUPER, SPACE, Launch apps, exec, omarchy-launch-walker bindd = SUPER CTRL, E, Emoji picker, exec, omarchy-launch-walker -m symbols bindd = SUPER CTRL, C, Capture menu, exec, omarchy-menu capture +bindd = SUPER CTRL, O, Toggle menu, exec, omarchy-menu toggle bindd = SUPER ALT, SPACE, Omarchy menu, exec, omarchy-menu bindd = SUPER, ESCAPE, System menu, exec, omarchy-menu system bindld = , XF86PowerOff, Power menu, exec, omarchy-menu system @@ -10,10 +11,11 @@ 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-menu background +bindd = SUPER CTRL, SPACE, Theme background menu, exec, omarchy-menu background bindd = SUPER SHIFT CTRL, SPACE, Theme menu, exec, omarchy-menu theme bindd = SUPER, BACKSPACE, Toggle window transparency, exec, hyprctl dispatch setprop "address:$(hyprctl activewindow -j | jq -r '.address')" opaque toggle -bindd = SUPER SHIFT, BACKSPACE, Toggle workspace gaps, exec, omarchy-hyprland-workspace-toggle-gaps +bindd = SUPER SHIFT, BACKSPACE, Toggle window gaps, exec, omarchy-hyprland-window-gaps-toggle +bindd = SUPER CTRL, BACKSPACE, Toggle single-window square aspect, exec, omarchy-hyprland-window-single-square-aspect-toggle # Notifications bindd = SUPER, COMMA, Dismiss last notification, exec, makoctl dismiss @@ -25,8 +27,6 @@ bindd = SUPER SHIFT ALT, COMMA, Restore last notification, exec, makoctl restore # Toggles bindd = SUPER CTRL, I, Toggle locking on idle, exec, omarchy-toggle-idle bindd = SUPER CTRL, N, Toggle nightlight, exec, omarchy-toggle-nightlight -bindd = SUPER CTRL, Backspace, Toggle monitor scaling, exec, omarchy-hyprland-monitor-scaling-toggle -bindd = SUPER CTRL ALT, Backspace, Toggle single-window square aspect, exec, omarchy-hyprland-window-single-square-aspect-toggle # Control Apple Display brightness bindd = CTRL, F1, Apple Display brightness down, exec, omarchy-brightness-display-apple -5000 diff --git a/default/sddm/omarchy/Main.qml b/default/sddm/omarchy/Main.qml index 93ecfb08..d074913e 100644 --- a/default/sddm/omarchy/Main.qml +++ b/default/sddm/omarchy/Main.qml @@ -60,6 +60,7 @@ Rectangle { color: "#000000" border.color: "#ffffff" border.width: 1 + clip: true TextInput { id: password diff --git a/install/config/all.sh b/install/config/all.sh index b80e4ca5..52458a72 100644 --- a/install/config/all.sh +++ b/install/config/all.sh @@ -14,6 +14,7 @@ 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/remove-fcitx5-autostart.sh run_logged $OMARCHY_INSTALL/config/localdb.sh run_logged $OMARCHY_INSTALL/config/walker-elephant.sh run_logged $OMARCHY_INSTALL/config/fast-shutdown.sh diff --git a/install/config/hardware/fix-asus-rog-mic.sh b/install/config/hardware/fix-asus-rog-mic.sh index c50a63f1..d97849c2 100644 --- a/install/config/hardware/fix-asus-rog-mic.sh +++ b/install/config/hardware/fix-asus-rog-mic.sh @@ -7,7 +7,7 @@ if omarchy-hw-asus-rog; then if grep -q "ALC285" "$card" 2>/dev/null; then cardnum=$(echo "$card" | grep -oP 'card\K\d+') amixer -c "$cardnum" set 'Internal Mic Boost' 0 >/dev/null 2>&1 || true - amixer -c "$cardnum" set 'Capture' 70% >/dev/null 2>&1 || true + amixer -c "$cardnum" set 'Capture' 70% unmute >/dev/null 2>&1 || true sudo alsactl store "$cardnum" 2>/dev/null || true break fi diff --git a/install/config/remove-fcitx5-autostart.sh b/install/config/remove-fcitx5-autostart.sh new file mode 100644 index 00000000..62cc1790 --- /dev/null +++ b/install/config/remove-fcitx5-autostart.sh @@ -0,0 +1 @@ +sudo rm -f /etc/xdg/autostart/org.fcitx.Fcitx5.desktop diff --git a/migrations/1772120972.sh b/migrations/1772120972.sh new file mode 100644 index 00000000..7ef79f37 --- /dev/null +++ b/migrations/1772120972.sh @@ -0,0 +1,3 @@ +echo "Remove Fcitx5 XDG autostart desktop entry" + +source $OMARCHY_PATH/install/config/remove-fcitx5-autostart.sh diff --git a/migrations/1772211023.sh b/migrations/1772211023.sh new file mode 100644 index 00000000..fe47860b --- /dev/null +++ b/migrations/1772211023.sh @@ -0,0 +1,3 @@ +echo "Ensure password field doesn't overflow on SDDM login screen" + +omarchy-refresh-sddm diff --git a/migrations/1772293693.sh b/migrations/1772293693.sh new file mode 100644 index 00000000..bc49afff --- /dev/null +++ b/migrations/1772293693.sh @@ -0,0 +1,10 @@ +echo "Move single_window_aspect_ratio from dwindle to layout in user looknfeel.conf" + +looknfeel="$HOME/.config/hypr/looknfeel.conf" + +if [[ -f $looknfeel ]] && grep -q 'single_window_aspect_ratio' "$looknfeel"; then + sed -i \ + -e 's|# https://wiki.hypr.land/Configuring/Dwindle-Layout/|# https://wiki.hypr.land/Configuring/Variables/#layout|' \ + -e 's|^dwindle {|layout {|' \ + "$looknfeel" +fi diff --git a/migrations/1772294096.sh b/migrations/1772294096.sh new file mode 100644 index 00000000..b00383dc --- /dev/null +++ b/migrations/1772294096.sh @@ -0,0 +1,21 @@ +echo "Add Alt+Arrow keybindings for tmux window and session navigation" + +TMUX_CONF=~/.config/tmux/tmux.conf + +if [[ -f $TMUX_CONF ]]; then + # Add M-Left/M-Right after M-9 if not present + if ! grep -q "bind -n M-Left select-window" "$TMUX_CONF"; then + sed -i '/bind -n M-9 select-window -t 9/a\ +bind -n M-Left select-window -t -1\ +bind -n M-Right select-window -t +1' "$TMUX_CONF" + fi + + # Add M-Up/M-Down after "bind N switch-client -n" if not present + if ! grep -q "bind -n M-Up switch-client" "$TMUX_CONF"; then + sed -i '/^bind N switch-client -n$/a\ +bind -n M-Up switch-client -p\ +bind -n M-Down switch-client -n' "$TMUX_CONF" + fi + + omarchy-restart-tmux +fi diff --git a/version b/version index 18091983..47b322c9 100644 --- a/version +++ b/version @@ -1 +1 @@ -3.4.0 +3.4.1