Compare commits

...

12 Commits

Author SHA1 Message Date
David Heinemeier Hansson
fc529b368d Match direction from the sessino list 2026-02-11 16:46:05 +01:00
David Heinemeier Hansson
ce01b6e0d6 Improve navigation ease 2026-02-11 14:17:32 +01:00
David Heinemeier Hansson
450d4dd82b No wifi power saving when connected to power 2026-02-11 14:06:52 +01:00
David Heinemeier Hansson
8895384b0e This is producing double pastes everywhere else 2026-02-11 12:22:58 +01:00
David Heinemeier Hansson
e4b7372666 Cannot get suspend to hibernate to work consistently across different laptops
Too many failures where it's stuck in a suspend-wake-up loop
2026-02-10 14:07:40 +01:00
David Heinemeier Hansson
a30448ceec Allow the ssh forwarding functions to take multiple ports 2026-02-10 13:39:48 +01:00
David Heinemeier Hansson
4fadf666e6 Add nautilus compatibility with the unified clipboard commands
Co-authored-by: @naxels
2026-02-10 12:32:56 +01:00
David Heinemeier Hansson
07ede07193 Add port forwarding functions for web dev
So we can forward a port on localhost to an Omaterm
2026-02-10 12:00:04 +01:00
David Heinemeier Hansson
527819b750 Rely on alt-arrow doing 5s, then shift-arrow does 1s 2026-02-10 11:30:03 +01:00
David Heinemeier Hansson
98bfe20839 Add example of using alacritty with ssh
Since ghostty requires the TERM setting thing which is a bit odd
2026-02-10 10:20:21 +01:00
David Heinemeier Hansson
4d48409926 Just rely on terminal for coloring
We don't need a full theme
2026-02-10 08:31:15 +01:00
David Heinemeier Hansson
ffafe1727e Add Tmux (#4562)
* Add Tmux

Being able to use a unified terminal setup between local and remote
hosts has some real advantages.

* Renaming is more important than reloading

* Self-explanatory, really

* Add alias for it

* Attach to last used session or start a new if we have none

* Just stick to n/p

* Make it a clean 10x

* We don't need this

* Keep similar fixes together

* Keep bindings together

* Hate looking at that 0

* Add way to refresh theme from its templates (when they've changed)

* Fix
2026-02-09 23:01:46 +01:00
15 changed files with 149 additions and 10 deletions

View File

@@ -59,11 +59,7 @@ sudo mkdir -p /etc/mkinitcpio.conf.d
echo "Adding resume hook to $MKINITCPIO_CONF" echo "Adding resume hook to $MKINITCPIO_CONF"
echo "HOOKS+=(resume)" | sudo tee "$MKINITCPIO_CONF" >/dev/null echo "HOOKS+=(resume)" | sudo tee "$MKINITCPIO_CONF" >/dev/null
# Configure suspend-then-hibernate # Ensure keyboard backlight doesn't prevent sleep
echo "Configuring suspend-then-hibernate"
sudo mkdir -p /etc/systemd/logind.conf.d /etc/systemd/sleep.conf.d /usr/lib/systemd/system-sleep
sudo cp "$OMARCHY_PATH/default/systemd/lid.conf" /etc/systemd/logind.conf.d/
sudo cp "$OMARCHY_PATH/default/systemd/hibernate.conf" /etc/systemd/sleep.conf.d/
sudo cp -p "$OMARCHY_PATH/default/systemd/system-sleep/keyboard-backlight" /usr/lib/systemd/system-sleep/ sudo cp -p "$OMARCHY_PATH/default/systemd/system-sleep/keyboard-backlight" /usr/lib/systemd/system-sleep/
# Use ACPI alarm for RTC wakeup on s2idle systems (needed for suspend-then-hibernate) # Use ACPI alarm for RTC wakeup on s2idle systems (needed for suspend-then-hibernate)

5
bin/omarchy-refresh-tmux Executable file
View File

@@ -0,0 +1,5 @@
#!/bin/bash
# Overwrite the user tmux config with the Omarchy default and reload tmux.
omarchy-refresh-config tmux/tmux.conf

9
bin/omarchy-theme-refresh Executable file
View File

@@ -0,0 +1,9 @@
#!/bin/bash
# Refresh the current theme from its templates.
THEME_NAME_PATH="$HOME/.config/omarchy/current/theme.name"
if [[ -f $THEME_NAME_PATH ]]; then
omarchy-theme-set "$(cat $THEME_NAME_PATH)"
fi

5
bin/omarchy-wifi-powersave Executable file
View File

@@ -0,0 +1,5 @@
#!/bin/bash
for iface in /sys/class/net/*/wireless; do
iface="$(basename "$(dirname "$iface")")"
iw dev "$iface" set power_save "$1" 2>/dev/null
done

View File

@@ -25,6 +25,9 @@ bindd = SUPER SHIFT, P, Google Photos, exec, omarchy-launch-or-focus-webapp "Goo
bindd = SUPER SHIFT, X, X, exec, omarchy-launch-webapp "https://x.com/" bindd = SUPER SHIFT, X, X, exec, omarchy-launch-webapp "https://x.com/"
bindd = SUPER SHIFT ALT, X, X Post, exec, omarchy-launch-webapp "https://x.com/compose/post" bindd = SUPER SHIFT ALT, X, X Post, exec, omarchy-launch-webapp "https://x.com/compose/post"
# Add extra bindings
# bind = SUPER SHIFT, R, exec, alacritty -e ssh your-server
# Overwrite existing bindings, like putting Omarchy Menu on Super + Space # Overwrite existing bindings, like putting Omarchy Menu on Super + Space
# unbind = SUPER, SPACE # unbind = SUPER, SPACE
# bindd = SUPER, SPACE, Omarchy menu, exec, omarchy-menu # bindd = SUPER, SPACE, Omarchy menu, exec, omarchy-menu

81
config/tmux/tmux.conf Normal file
View File

@@ -0,0 +1,81 @@
# Prefix
set -g prefix C-Space
set -g prefix2 C-b
bind C-Space send-prefix
# General
set -g default-terminal "tmux-256color"
set -ag terminal-overrides ",*:RGB"
set -g mouse on
set -g base-index 1
setw -g pane-base-index 1
set -g renumber-windows on
set -g history-limit 50000
set -g escape-time 0
set -g focus-events on
set -g set-clipboard on
setw -g aggressive-resize on
set -g detach-on-destroy off
# Status bar
set -g status-position top
set -g status-interval 5
set -g status-left-length 30
set -g status-right-length 50
set -g window-status-separator ""
# Theme
set -g status-style "bg=default,fg=default"
set -g status-left "#[fg=black,bg=blue,bold] #S #[bg=default] "
set -g status-right "#[fg=blue]#{?client_prefix,PREFIX ,}#[fg=brightblack]#h "
set -g window-status-format "#[fg=brightblack] #I:#W "
set -g window-status-current-format "#[fg=blue,bold] #I:#W "
set -g pane-border-style "fg=brightblack"
set -g pane-active-border-style "fg=blue"
set -g message-style "bg=default,fg=blue"
set -g message-command-style "bg=default,fg=blue"
set -g mode-style "bg=blue,fg=black"
setw -g clock-mode-colour blue
# Reload config
bind M-r source-file ~/.config/tmux/tmux.conf
# Rename window / session
bind r command-prompt -I "#W" "rename-window -- '%%'"
bind R command-prompt -I "#S" "rename-session -- '%%'"
# Vi mode for copy
setw -g mode-keys vi
bind -T copy-mode-vi v send -X begin-selection
bind -T copy-mode-vi y send -X copy-selection-and-cancel
# Pane resizing
bind -r S-Left resize-pane -L 1
bind -r S-Down resize-pane -D 1
bind -r S-Up resize-pane -U 1
bind -r S-Right resize-pane -R 1
# Saner splits that open in the same directory
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
# New windows in same directory
bind c new-window -c "#{pane_current_path}"
# Pane navigation
bind -n C-S-Left select-pane -L
bind -n C-S-Right select-pane -R
bind -n C-S-Up select-pane -U
bind -n C-S-Down select-pane -D
# Window navigation
bind -n C-M-Left previous-window
bind -n C-M-Right next-window
# Session navigation
bind -n C-M-Up switch-client -n
bind -n C-M-Down switch-client -p
# Sessions
bind C new-session
bind X kill-session

View File

@@ -34,6 +34,7 @@ alias ....='cd ../../..'
alias c='opencode' alias c='opencode'
alias d='docker' alias d='docker'
alias r='rails' alias r='rails'
alias t='tmux attach || tmux new -s Work'
n() { if [ "$#" -eq 0 ]; then nvim .; else nvim "$@"; fi; } n() { if [ "$#" -eq 0 ]; then nvim .; else nvim "$@"; fi; }
# Git # Git

View File

@@ -87,3 +87,24 @@ img2png() {
-define png:exclude-chunk=all \ -define png:exclude-chunk=all \
"${img%.*}-optimized.png" "${img%.*}-optimized.png"
} }
# SSH Port Forwarding Functions
fip() {
[[ $# -lt 2 ]] && echo "Usage: fip <host> <port1> [port2] ..." && return 1
local host="$1"
shift
for port in "$@"; do
ssh -f -N -L "$port:localhost:$port" "$host" && echo "Forwarding localhost:$port -> $host:$port"
done
}
dip() {
[[ $# -eq 0 ]] && echo "Usage: dip <port1> [port2] ..." && return 1
for port in "$@"; do
pkill -f "ssh.*-L $port:localhost:$port" && echo "Stopped forwarding port $port" || echo "No forwarding on port $port"
done
}
lip() {
pgrep -af "ssh.*-L [0-9]+:localhost:[0-9]+" || echo "No active forwards"
}

View File

@@ -1,3 +0,0 @@
[Sleep]
HibernateDelaySec=90min
SuspendEstimationSec=0

View File

@@ -1,2 +0,0 @@
[Login]
HandleLidSwitch=suspend-then-hibernate

View File

@@ -20,6 +20,7 @@ run_logged $OMARCHY_INSTALL/config/sudoless-asdcontrol.sh
run_logged $OMARCHY_INSTALL/config/input-group.sh run_logged $OMARCHY_INSTALL/config/input-group.sh
run_logged $OMARCHY_INSTALL/config/omarchy-ai-skill.sh run_logged $OMARCHY_INSTALL/config/omarchy-ai-skill.sh
run_logged $OMARCHY_INSTALL/config/powerprofilesctl-rules.sh run_logged $OMARCHY_INSTALL/config/powerprofilesctl-rules.sh
run_logged $OMARCHY_INSTALL/config/wifi-powersave-rules.sh
run_logged $OMARCHY_INSTALL/config/hibernation.sh run_logged $OMARCHY_INSTALL/config/hibernation.sh
run_logged $OMARCHY_INSTALL/config/hardware/network.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/set-wireless-regdom.sh

View File

@@ -0,0 +1,9 @@
if omarchy-battery-present; then
cat <<EOF | sudo tee "/etc/udev/rules.d/99-wifi-powersave.rules"
SUBSYSTEM=="power_supply", ATTR{type}=="Mains", ATTR{online}=="0", RUN+="$HOME/.local/share/omarchy/bin/omarchy-wifi-powersave on"
SUBSYSTEM=="power_supply", ATTR{type}=="Mains", ATTR{online}=="1", RUN+="$HOME/.local/share/omarchy/bin/omarchy-wifi-powersave off"
EOF
sudo udevadm control --reload
sudo udevadm trigger --subsystem-match=power_supply
fi

View File

@@ -120,6 +120,7 @@ swayosd
system-config-printer system-config-printer
tldr tldr
tree-sitter-cli tree-sitter-cli
tmux
tobi-try tobi-try
ttf-cascadia-mono-nerd ttf-cascadia-mono-nerd
ttf-ia-writer ttf-ia-writer

9
migrations/1770638893.sh Normal file
View File

@@ -0,0 +1,9 @@
echo "Add Tmux as an option with themed styling"
omarchy-pkg-add tmux
if [[ ! -f ~/.config/tmux/tmux.conf ]]; then
mkdir -p ~/.config/tmux
cp $OMARCHY_PATH/config/tmux/tmux.conf ~/.config/tmux/tmux.conf
omarchy-theme-refresh
fi

3
migrations/1770811646.sh Normal file
View File

@@ -0,0 +1,3 @@
echo "Disable WiFi power save on AC power"
source $OMARCHY_PATH/install/config/wifi-powersave-rules.sh