mirror of
https://github.com/basecamp/omarchy.git
synced 2026-02-17 15:25:37 +00:00
Compare commits
9 Commits
super-copy
...
fix-omarch
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
63aff7cd71 | ||
|
|
a6aec518a5 | ||
|
|
a7a6ac1d21 | ||
|
|
af564ed07d | ||
|
|
eb74a97a0c | ||
|
|
883cb66f99 | ||
|
|
2c74696735 | ||
|
|
a54044ea30 | ||
|
|
1e859d37cb |
@@ -1,9 +0,0 @@
|
|||||||
root = true
|
|
||||||
|
|
||||||
[*]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
||||||
insert_final_newline = true
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
end_of_line = lf
|
|
||||||
charset = utf-8
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
[Desktop Entry]
|
|
||||||
Hidden=true
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
[Desktop Entry]
|
|
||||||
Hidden=true
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
[Desktop Entry]
|
|
||||||
Hidden=true
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
[Desktop Entry]
|
|
||||||
Hidden=true
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
[Desktop Entry]
|
|
||||||
Hidden=true
|
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
Name=Neovim
|
Name=Neovim
|
||||||
GenericName=Text Editor
|
GenericName=Text Editor
|
||||||
Comment=Edit text files
|
Comment=Edit text files
|
||||||
Exec=omarchy-launch-editor %F
|
Exec=$TERMINAL --class=nvim --title=nvim -e nvim -- %F
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
Keywords=Text;editor;
|
Keywords=Text;editor;
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ if [[ -f "$FIRST_RUN_MODE" ]]; then
|
|||||||
|
|
||||||
bash "$OMARCHY_PATH/install/first-run/battery-monitor.sh"
|
bash "$OMARCHY_PATH/install/first-run/battery-monitor.sh"
|
||||||
bash "$OMARCHY_PATH/install/first-run/firewall.sh"
|
bash "$OMARCHY_PATH/install/first-run/firewall.sh"
|
||||||
bash "$OMARCHY_PATH/install/first-run/dns-resolver.sh"
|
|
||||||
bash "$OMARCHY_PATH/install/first-run/gnome-theme.sh"
|
bash "$OMARCHY_PATH/install/first-run/gnome-theme.sh"
|
||||||
sudo rm -f /etc/sudoers.d/first-run
|
sudo rm -f /etc/sudoers.d/first-run
|
||||||
|
|
||||||
|
|||||||
@@ -8,31 +8,82 @@ if [[ ! -d "$OUTPUT_DIR" ]]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Selects region or output
|
SCOPE=""
|
||||||
SCOPE="$1"
|
AUDIO="false"
|
||||||
|
WEBCAM="false"
|
||||||
|
|
||||||
# Selects audio inclusion or not
|
for arg in "$@"; do
|
||||||
AUDIO=$([[ $2 == "audio" ]] && echo "--audio")
|
case "$arg" in
|
||||||
|
--with-audio) AUDIO="true" ;;
|
||||||
|
--with-webcam) WEBCAM="true" ;;
|
||||||
|
output|region) SCOPE="$arg" ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
cleanup_webcam() {
|
||||||
|
pkill -f "WebcamOverlay" 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
start_webcam_overlay() {
|
||||||
|
cleanup_webcam
|
||||||
|
|
||||||
|
# Get monitor scale
|
||||||
|
local scale=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .scale')
|
||||||
|
|
||||||
|
# Target width (base 360px, scaled to monitor)
|
||||||
|
local target_width=$(awk "BEGIN {printf \"%.0f\", 360 * $scale}")
|
||||||
|
|
||||||
|
# Try preferred 16:9 resolutions in order, use first available
|
||||||
|
local preferred_resolutions=("640x360" "1280x720" "1920x1080")
|
||||||
|
local video_size_arg=""
|
||||||
|
local available_formats=$(v4l2-ctl --list-formats-ext -d /dev/video0 2>/dev/null)
|
||||||
|
|
||||||
|
for resolution in "${preferred_resolutions[@]}"; do
|
||||||
|
if echo "$available_formats" | grep -q "$resolution"; then
|
||||||
|
video_size_arg="-video_size $resolution"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
ffplay -f v4l2 $video_size_arg -framerate 30 /dev/video0 \
|
||||||
|
-vf "scale=${target_width}:-1" \
|
||||||
|
-window_title "WebcamOverlay" \
|
||||||
|
-noborder \
|
||||||
|
-fflags nobuffer -flags low_delay \
|
||||||
|
-probesize 32 -analyzeduration 0 \
|
||||||
|
-loglevel quiet &
|
||||||
|
sleep 1
|
||||||
|
}
|
||||||
|
|
||||||
start_screenrecording() {
|
start_screenrecording() {
|
||||||
local filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
|
local filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
|
||||||
|
local audio_args=""
|
||||||
|
|
||||||
if lspci | grep -qi 'nvidia'; then
|
# Merge audio tracks into one - separate tracks only play one at a time in most players
|
||||||
wf-recorder $AUDIO -f "$filename" -c libx264 -p crf=23 -p preset=medium -p movflags=+faststart "$@" &
|
[[ "$AUDIO" == "true" ]] && audio_args="-a default_output|default_input"
|
||||||
else
|
|
||||||
wl-screenrec $AUDIO -f "$filename" --ffmpeg-encoder-options="-c:v libx264 -crf 23 -preset medium -movflags +faststart" "$@" &
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
gpu-screen-recorder -w "$@" -f 60 -c mp4 -o "$filename" $audio_args &
|
||||||
toggle_screenrecording_indicator
|
toggle_screenrecording_indicator
|
||||||
}
|
}
|
||||||
|
|
||||||
stop_screenrecording() {
|
stop_screenrecording() {
|
||||||
pkill -x wl-screenrec
|
pkill -SIGINT -f "gpu-screen-recorder" # SIGINT required to save video properly
|
||||||
pkill -x wf-recorder
|
|
||||||
|
|
||||||
notify-send "Screen recording saved to $OUTPUT_DIR" -t 2000
|
# Wait a maximum of 5 seconds to finish before hard killing
|
||||||
|
local count=0
|
||||||
|
while pgrep -f "gpu-screen-recorder" >/dev/null && [ $count -lt 50 ]; do
|
||||||
|
sleep 0.1
|
||||||
|
count=$((count + 1))
|
||||||
|
done
|
||||||
|
|
||||||
sleep 0.2 # ensures the process is actually dead before we check
|
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
|
||||||
|
notify-send "Screen recording saved to $OUTPUT_DIR" -t 2000
|
||||||
|
fi
|
||||||
toggle_screenrecording_indicator
|
toggle_screenrecording_indicator
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -41,15 +92,51 @@ toggle_screenrecording_indicator() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
screenrecording_active() {
|
screenrecording_active() {
|
||||||
pgrep -x wl-screenrec >/dev/null || pgrep -x wf-recorder >/dev/null
|
pgrep -f "gpu-screen-recorder" >/dev/null || pgrep -x slurp >/dev/null || pgrep -f "WebcamOverlay" >/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
if screenrecording_active; then
|
if screenrecording_active; then
|
||||||
stop_screenrecording
|
if pgrep -x slurp >/dev/null; then
|
||||||
|
pkill -x slurp 2>/dev/null
|
||||||
|
elif pgrep -f "WebcamOverlay" >/dev/null && ! pgrep -f "gpu-screen-recorder" >/dev/null; then
|
||||||
|
cleanup_webcam
|
||||||
|
else
|
||||||
|
stop_screenrecording
|
||||||
|
fi
|
||||||
elif [[ "$SCOPE" == "output" ]]; then
|
elif [[ "$SCOPE" == "output" ]]; then
|
||||||
output=$(slurp -o) || exit 1
|
[[ "$WEBCAM" == "true" ]] && start_webcam_overlay
|
||||||
start_screenrecording -g "$output"
|
|
||||||
|
if ! output=$(slurp -o -f "%o"); then
|
||||||
|
[[ "$WEBCAM" == "true" ]] && cleanup_webcam
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "$output" ]]; then
|
||||||
|
notify-send "Error" "Could not detect monitor" -u critical
|
||||||
|
[[ "$WEBCAM" == "true" ]] && cleanup_webcam
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
start_screenrecording "$output"
|
||||||
else
|
else
|
||||||
region=$(slurp) || exit 1
|
[[ "$WEBCAM" == "true" ]] && start_webcam_overlay
|
||||||
start_screenrecording -g "$region"
|
|
||||||
|
scale=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .scale')
|
||||||
|
|
||||||
|
if ! region=$(slurp -f "%wx%h+%x+%y"); then
|
||||||
|
[[ "$WEBCAM" == "true" ]] && cleanup_webcam
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$region" =~ ^([0-9]+)x([0-9]+)\+([0-9]+)\+([0-9]+)$ ]]; then
|
||||||
|
w=$(awk "BEGIN {printf \"%.0f\", ${BASH_REMATCH[1]} * $scale}")
|
||||||
|
h=$(awk "BEGIN {printf \"%.0f\", ${BASH_REMATCH[2]} * $scale}")
|
||||||
|
x=$(awk "BEGIN {printf \"%.0f\", ${BASH_REMATCH[3]} * $scale}")
|
||||||
|
y=$(awk "BEGIN {printf \"%.0f\", ${BASH_REMATCH[4]} * $scale}")
|
||||||
|
scaled_region="${w}x${h}+${x}+${y}"
|
||||||
|
else
|
||||||
|
scaled_region="$region"
|
||||||
|
fi
|
||||||
|
|
||||||
|
start_screenrecording region -region "$scaled_region"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ hyprctl keyword cursor:invisible true
|
|||||||
while true; do
|
while true; do
|
||||||
effect=$(tte 2>&1 | grep -oP '{\K[^}]+' | tr ',' ' ' | tr ' ' '\n' | sed -n '/^beams$/,$p' | sort -u | shuf -n1)
|
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 \
|
tte -i ~/.config/omarchy/branding/screensaver.txt \
|
||||||
--frame-rate 240 --canvas-width 0 --canvas-height $(($(tput lines) - 1)) --anchor-canvas c --anchor-text c \
|
--frame-rate 240 --canvas-width 0 --canvas-height $(($(tput lines) - 2)) --anchor-canvas c --anchor-text c \
|
||||||
"$effect" &
|
"$effect" &
|
||||||
|
|
||||||
while pgrep -x tte >/dev/null; do
|
while pgrep -x tte >/dev/null; do
|
||||||
|
|||||||
@@ -5,13 +5,7 @@ terminal_pid=$(hyprctl activewindow | awk '/pid:/ {print $2}')
|
|||||||
shell_pid=$(pgrep -P "$terminal_pid" | head -n1)
|
shell_pid=$(pgrep -P "$terminal_pid" | head -n1)
|
||||||
|
|
||||||
if [[ -n $shell_pid ]]; then
|
if [[ -n $shell_pid ]]; then
|
||||||
cwd=$(readlink -f "/proc/$shell_pid/cwd" 2>/dev/null)
|
readlink -f "/proc/$shell_pid/cwd" 2>/dev/null || echo "$HOME"
|
||||||
|
|
||||||
if [[ -d $cwd ]]; then
|
|
||||||
echo "$cwd"
|
|
||||||
else
|
|
||||||
echo "$HOME"
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "$HOME"
|
echo "$HOME"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
options=("MySQL" "PostgreSQL" "Redis" "MongoDB" "MariaDB")
|
options=("MySQL" "PostgreSQL" "Redis" "MongoDB" "MariaDB")
|
||||||
|
|
||||||
if [[ "$#" -eq 0 ]]; then
|
if [[ "$#" -eq 0 ]]; then
|
||||||
choices=$(printf "%s\n" "${options[@]}" | gum choose --header "Select database (return to install, esc to cancel)") || main_menu
|
choices=$(printf "%s\n" "${options[@]}" | gum choose --header "Select databases (space to select, return to install, esc to cancel)") || main_menu
|
||||||
else
|
else
|
||||||
choices="$@"
|
choices="$@"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -4,5 +4,5 @@ echo "Installing all dependencies..."
|
|||||||
omarchy-pkg-add dropbox dropbox-cli libappindicator-gtk3 python-gpgme nautilus-dropbox
|
omarchy-pkg-add dropbox dropbox-cli libappindicator-gtk3 python-gpgme nautilus-dropbox
|
||||||
|
|
||||||
echo "Starting Dropbox..."
|
echo "Starting Dropbox..."
|
||||||
uwsm-app -- dropbox-cli start &>/dev/null &
|
uwsm app -- dropbox-cli start &>/dev/null &
|
||||||
echo "See Dropbox icon behind hover tray in top right and right-click for setup."
|
echo "See Dropbox icon behind hover tray in top right and right-click for setup."
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
echo "Installing VSCode..."
|
|
||||||
omarchy-pkg-add visual-studio-code-bin
|
|
||||||
|
|
||||||
mkdir -p ~/.vscode
|
|
||||||
|
|
||||||
cat > ~/.vscode/argv.json << 'EOF'
|
|
||||||
// This configuration file allows you to pass permanent command line arguments to VS Code.
|
|
||||||
// Only a subset of arguments is currently supported to reduce the likelihood of breaking
|
|
||||||
// the installation.
|
|
||||||
//
|
|
||||||
// PLEASE DO NOT CHANGE WITHOUT UNDERSTANDING THE IMPACT
|
|
||||||
//
|
|
||||||
// NOTE: Changing this file requires a restart of VS Code.
|
|
||||||
{
|
|
||||||
"password-store":"gnome-libsecret"
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
setsid gtk-launch code
|
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
exec setsid uwsm-app -- alacritty --class=Omarchy -o font.size=9 -e bash -c 'fastfetch; read -n 1 -s'
|
exec setsid uwsm app -- alacritty --class=Omarchy -o font.size=9 -e bash -c 'fastfetch; read -n 1 -s'
|
||||||
|
|||||||
@@ -9,4 +9,4 @@ else
|
|||||||
private_flag="--incognito"
|
private_flag="--incognito"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec setsid uwsm-app -- "$browser_exec" "${@/--private/$private_flag}"
|
exec setsid uwsm app -- "$browser_exec" "${@/--private/$private_flag}"
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
case "${EDITOR:-nvim}" in
|
case "${EDITOR:-nvim}" in
|
||||||
nvim | vim | nano | micro | hx | helix)
|
nvim | vim | nano | micro | hx)
|
||||||
exec setsid uwsm-app -- "$TERMINAL" -e "$EDITOR" "$@"
|
exec setsid uwsm app -- "$TERMINAL" -e "$EDITOR" "$@"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
exec setsid uwsm-app -- "$EDITOR" "$@"
|
exec setsid uwsm app -- "$EDITOR" "$@"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cmd="$*"
|
cmd="$*"
|
||||||
exec setsid uwsm-app -- alacritty -o font.size=9 --class=Omarchy --title=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"
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ if (($# == 0)); then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
WINDOW_PATTERN="$1"
|
WINDOW_PATTERN="$1"
|
||||||
LAUNCH_COMMAND="${2:-"uwsm-app -- $WINDOW_PATTERN"}"
|
LAUNCH_COMMAND="${2:-"uwsm app -- $WINDOW_PATTERN"}"
|
||||||
WINDOW_ADDRESS=$(hyprctl clients -j | jq -r --arg p "$WINDOW_PATTERN" '.[]|select((.class|test("\\b" + $p + "\\b";"i")) or (.title|test("\\b" + $p + "\\b";"i")))|.address' | head -n1)
|
WINDOW_ADDRESS=$(hyprctl clients -j | jq -r --arg p "$WINDOW_PATTERN" '.[]|select((.class|test("\\b" + $p + "\\b";"i")) or (.title|test("\\b" + $p + "\\b";"i")))|.address' | head -n1)
|
||||||
|
|
||||||
if [[ -n $WINDOW_ADDRESS ]]; then
|
if [[ -n $WINDOW_ADDRESS ]]; then
|
||||||
|
|||||||
@@ -1,12 +1,8 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
if (($# == 0)); then
|
if (($# == 0)); then
|
||||||
echo "Usage: omarchy-launch-or-focus-webapp [window-pattern] [url-and-flags...]"
|
echo "Usage: omarchy-launch-or-focus-webapp [window-pattern] [url]"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
WINDOW_PATTERN="$1"
|
exec omarchy-launch-or-focus "$1" "omarchy-launch-webapp '$2'"
|
||||||
shift
|
|
||||||
LAUNCH_COMMAND="omarchy-launch-webapp $@"
|
|
||||||
|
|
||||||
exec omarchy-launch-or-focus "$WINDOW_PATTERN" "$LAUNCH_COMMAND"
|
|
||||||
|
|||||||
@@ -7,4 +7,4 @@ google-chrome* | brave-browser* | microsoft-edge* | opera* | vivaldi* | helium-b
|
|||||||
*) browser="chromium.desktop" ;;
|
*) browser="chromium.desktop" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
exec setsid uwsm-app -- $(sed -n 's/^Exec=\([^ ]*\).*/\1/p' {~/.local,~/.nix-profile,/usr}/share/applications/$browser 2>/dev/null | head -1) --app="$1" "${@:2}"
|
exec setsid uwsm app -- $(sed -n 's/^Exec=\([^ ]*\).*/\1/p' {~/.local,~/.nix-profile,/usr}/share/applications/$browser 2>/dev/null | head -1) --app="$1" "${@:2}"
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
exec setsid uwsm-app -- "$TERMINAL" --class=Impala -e impala "$@"
|
exec setsid uwsm app -- "$TERMINAL" --class=Impala -e impala "$@"
|
||||||
|
|||||||
@@ -9,4 +9,4 @@ if pgrep -x "1password" >/dev/null; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Avoid running screensaver when locked
|
# Avoid running screensaver when locked
|
||||||
pkill -f "alacritty --class Screensaver"
|
pkill -f "$TERMINAL --class Screensaver"
|
||||||
|
|||||||
@@ -260,7 +260,7 @@ show_install_service_menu() {
|
|||||||
|
|
||||||
show_install_editor_menu() {
|
show_install_editor_menu() {
|
||||||
case $(menu "Install" " VSCode\n Cursor\n Zed\n Sublime Text\n Helix\n Emacs") in
|
case $(menu "Install" " VSCode\n Cursor\n Zed\n Sublime Text\n Helix\n Emacs") in
|
||||||
*VSCode*) present_terminal omarchy-install-vscode ;;
|
*VSCode*) install_and_launch "VSCode" "visual-studio-code-bin" "code" ;;
|
||||||
*Cursor*) install_and_launch "Cursor" "cursor-bin" "cursor" ;;
|
*Cursor*) install_and_launch "Cursor" "cursor-bin" "cursor" ;;
|
||||||
*Zed*) install_and_launch "Zed" "zed" "dev.zed.Zed" ;;
|
*Zed*) install_and_launch "Zed" "zed" "dev.zed.Zed" ;;
|
||||||
*Sublime*) aur_install_and_launch "Sublime Text" "sublime-text-4" "sublime_text" ;;
|
*Sublime*) aur_install_and_launch "Sublime Text" "sublime-text-4" "sublime_text" ;;
|
||||||
@@ -286,9 +286,8 @@ show_install_ai_menu() {
|
|||||||
echo ollama
|
echo ollama
|
||||||
)
|
)
|
||||||
|
|
||||||
case $(menu "Install" " Claude Code\n Cursor CLI [AUR]\n Gemini [AUR]\n OpenAI Codex [AUR]\n LM Studio\n Ollama\n Crush\n opencode") in
|
case $(menu "Install" " Claude Code\n Gemini [AUR]\n OpenAI Codex [AUR]\n LM Studio\n Ollama\n Crush\n opencode") in
|
||||||
*Claude*) install "Claude Code" "claude-code" ;;
|
*Claude*) install "Claude Code" "claude-code" ;;
|
||||||
*Cursor*) aur_install "Cursor CLI" "cursor-cli" ;;
|
|
||||||
*OpenAI*) aur_install "OpenAI Codex" "openai-codex-bin" ;;
|
*OpenAI*) aur_install "OpenAI Codex" "openai-codex-bin" ;;
|
||||||
*Gemini*) aur_install "Gemini" "gemini-cli" ;;
|
*Gemini*) aur_install "Gemini" "gemini-cli" ;;
|
||||||
*Studio*) install "LM Studio" "lmstudio" ;;
|
*Studio*) install "LM Studio" "lmstudio" ;;
|
||||||
@@ -452,9 +451,9 @@ show_system_menu() {
|
|||||||
*Lock*) omarchy-lock-screen ;;
|
*Lock*) omarchy-lock-screen ;;
|
||||||
*Screensaver*) omarchy-launch-screensaver force ;;
|
*Screensaver*) omarchy-launch-screensaver force ;;
|
||||||
*Suspend*) systemctl suspend ;;
|
*Suspend*) systemctl suspend ;;
|
||||||
*Relaunch*) omarchy-state clear relaunch-required && sudo systemctl restart sddm ;;
|
*Relaunch*) uwsm stop ;;
|
||||||
*Restart*) omarchy-state clear re*-required && systemctl reboot ;;
|
*Restart*) systemctl reboot ;;
|
||||||
*Shutdown*) omarchy-state clear re*-required && systemctl poweroff ;;
|
*Shutdown*) systemctl poweroff ;;
|
||||||
*) back_to show_main_menu ;;
|
*) back_to show_main_menu ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,69 +3,6 @@
|
|||||||
# A script to display Hyprland keybindings defined in your configuration
|
# A script to display Hyprland keybindings defined in your configuration
|
||||||
# using walker for an interactive search menu.
|
# using walker for an interactive search menu.
|
||||||
|
|
||||||
declare -A KEYCODE_SYM_MAP
|
|
||||||
|
|
||||||
build_keymap_cache() {
|
|
||||||
local keymap
|
|
||||||
keymap="$(xkbcli compile-keymap)" || {
|
|
||||||
echo "Failed to compile keymap" >&2
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
while IFS=, read -r code sym; do
|
|
||||||
[[ -z "$code" || -z "$sym" ]] && continue
|
|
||||||
KEYCODE_SYM_MAP["$code"]="$sym"
|
|
||||||
done < <(
|
|
||||||
awk '
|
|
||||||
BEGIN { sec = "" }
|
|
||||||
/xkb_keycodes/ { sec = "codes"; next }
|
|
||||||
/xkb_symbols/ { sec = "syms"; next }
|
|
||||||
sec == "codes" {
|
|
||||||
if (match($0, /<([A-Za-z0-9_]+)>\s*=\s*([0-9]+)\s*;/, m)) code_by_name[m[1]] = m[2]
|
|
||||||
}
|
|
||||||
sec == "syms" {
|
|
||||||
if (match($0, /key\s*<([A-Za-z0-9_]+)>\s*\{\s*\[\s*([^, \]]+)/, m)) sym_by_name[m[1]] = m[2]
|
|
||||||
}
|
|
||||||
END {
|
|
||||||
for (k in code_by_name) {
|
|
||||||
c = code_by_name[k]
|
|
||||||
s = sym_by_name[k]
|
|
||||||
if (c != "" && s != "" && s != "NoSymbol") print c "," s
|
|
||||||
}
|
|
||||||
}
|
|
||||||
' <<<"$keymap"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
lookup_keycode_cached() {
|
|
||||||
printf '%s\n' "${KEYCODE_SYM_MAP[$1]}"
|
|
||||||
}
|
|
||||||
|
|
||||||
parse_keycodes() {
|
|
||||||
local start end elapsed
|
|
||||||
[[ "${DEBUG:-0}" == "1" ]] && start=$(date +%s.%N)
|
|
||||||
while IFS= read -r line; do
|
|
||||||
if [[ "$line" =~ code:([0-9]+) ]]; then
|
|
||||||
code="${BASH_REMATCH[1]}"
|
|
||||||
symbol=$(lookup_keycode_cached "$code" "$XKB_KEYMAP_CACHE")
|
|
||||||
echo "${line/code:${code}/$symbol}"
|
|
||||||
else
|
|
||||||
echo "$line"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [[ "$DEBUG" == "1" ]]; then
|
|
||||||
end=$(date +%s.%N)
|
|
||||||
# fall back to awk if bc is missing
|
|
||||||
if command -v bc >/dev/null 2>&1; then
|
|
||||||
elapsed=$(echo "$end - $start" | bc)
|
|
||||||
else
|
|
||||||
elapsed=$(awk -v s="$start" -v e="$end" 'BEGIN{printf "%.6f", (e - s)}')
|
|
||||||
fi
|
|
||||||
echo "[DEBUG] parse_keycodes elapsed: ${elapsed}s" >&2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Fetch dynamic keybindings from Hyprland
|
# Fetch dynamic keybindings from Hyprland
|
||||||
#
|
#
|
||||||
# Also do some pre-processing:
|
# Also do some pre-processing:
|
||||||
@@ -74,31 +11,30 @@ parse_keycodes() {
|
|||||||
# - Map numeric modifier key mask to a textual rendition
|
# - Map numeric modifier key mask to a textual rendition
|
||||||
# - Output comma-separated values that the parser can understand
|
# - Output comma-separated values that the parser can understand
|
||||||
dynamic_bindings() {
|
dynamic_bindings() {
|
||||||
hyprctl -j binds |
|
hyprctl -j binds | \
|
||||||
jq -r '.[] | {modmask, key, keycode, description, dispatcher, arg} | "\(.modmask),\(.key)@\(.keycode),\(.description),\(.dispatcher),\(.arg)"' |
|
jq -r '.[] | {modmask, key, keycode, description, dispatcher, arg} | "\(.modmask),\(.key)@\(.keycode),\(.description),\(.dispatcher),\(.arg)"' | \
|
||||||
sed -r \
|
sed -r \
|
||||||
-e 's/null//' \
|
-e 's/null//' \
|
||||||
-e 's,~/.local/share/omarchy/bin/,,' \
|
-e 's,~/.local/share/omarchy/bin/,,' \
|
||||||
-e 's,uwsm app -- ,,' \
|
-e 's,uwsm app -- ,,' \
|
||||||
-e 's,uwsm-app -- ,,' \
|
-e 's/@0//' \
|
||||||
-e 's/@0//' \
|
-e 's/,@/,code:/' \
|
||||||
-e 's/,@/,code:/' \
|
-e 's/^0,/,/' \
|
||||||
-e 's/^0,/,/' \
|
-e 's/^1,/SHIFT,/' \
|
||||||
-e 's/^1,/SHIFT,/' \
|
-e 's/^4,/CTRL,/' \
|
||||||
-e 's/^4,/CTRL,/' \
|
-e 's/^5,/SHIFT CTRL,/' \
|
||||||
-e 's/^5,/SHIFT CTRL,/' \
|
-e 's/^8,/ALT,/' \
|
||||||
-e 's/^8,/ALT,/' \
|
-e 's/^9,/SHIFT ALT,/' \
|
||||||
-e 's/^9,/SHIFT ALT,/' \
|
-e 's/^12,/CTRL ALT,/' \
|
||||||
-e 's/^12,/CTRL ALT,/' \
|
-e 's/^13,/SHIFT CTRL ALT,/' \
|
||||||
-e 's/^13,/SHIFT CTRL ALT,/' \
|
-e 's/^64,/SUPER,/' \
|
||||||
-e 's/^64,/SUPER,/' \
|
-e 's/^65,/SUPER SHIFT,/' \
|
||||||
-e 's/^65,/SUPER SHIFT,/' \
|
-e 's/^68,/SUPER CTRL,/' \
|
||||||
-e 's/^68,/SUPER CTRL,/' \
|
-e 's/^69,/SUPER SHIFT CTRL,/' \
|
||||||
-e 's/^69,/SUPER SHIFT CTRL,/' \
|
-e 's/^72,/SUPER ALT,/' \
|
||||||
-e 's/^72,/SUPER ALT,/' \
|
-e 's/^73,/SUPER SHIFT ALT,/' \
|
||||||
-e 's/^73,/SUPER SHIFT ALT,/' \
|
-e 's/^76,/SUPER CTRL ALT,/' \
|
||||||
-e 's/^76,/SUPER CTRL ALT,/' \
|
-e 's/^77,/SUPER SHIFT CTRL ALT,/'
|
||||||
-e 's/^77,/SUPER SHIFT CTRL ALT,/'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Parse and format keybindings
|
# Parse and format keybindings
|
||||||
@@ -150,10 +86,8 @@ parse_bindings() {
|
|||||||
monitor_height=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .height')
|
monitor_height=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .height')
|
||||||
menu_height=$((monitor_height * 40 / 100))
|
menu_height=$((monitor_height * 40 / 100))
|
||||||
|
|
||||||
build_keymap_cache
|
dynamic_bindings | \
|
||||||
|
sort -u | \
|
||||||
dynamic_bindings |
|
parse_bindings | \
|
||||||
sort -u |
|
|
||||||
parse_keycodes |
|
|
||||||
parse_bindings |
|
|
||||||
walker --dmenu --theme keybindings -p 'Keybindings' -w 800 -h "$menu_height"
|
walker --dmenu --theme keybindings -p 'Keybindings' -w 800 -h "$menu_height"
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,8 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
sudo pacman -S --noconfirm --needed "$@" || exit 1
|
|
||||||
|
|
||||||
for pkg in "$@"; do
|
for pkg in "$@"; do
|
||||||
# Secondary check to handle states where pacman doesn't actually register an error
|
|
||||||
if ! pacman -Q "$pkg" &>/dev/null; then
|
if ! pacman -Q "$pkg" &>/dev/null; then
|
||||||
echo -e "\033[31mError: Package '$pkg' did not install\033[0m" >&2
|
sudo pacman -S --noconfirm "$pkg" || exit 1
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
pkill -x $1
|
pkill -x $1
|
||||||
setsid uwsm-app -- $1 >/dev/null 2>&1 &
|
setsid uwsm app -- $1 >/dev/null 2>&1 &
|
||||||
|
|||||||
@@ -3,5 +3,5 @@
|
|||||||
pkill walker
|
pkill walker
|
||||||
# FIXME: Just deal with the memory leak for now.
|
# FIXME: Just deal with the memory leak for now.
|
||||||
# See https://github.com/basecamp/omarchy/issues/698
|
# 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
|
echo # Always end in success so we don't terminate further running
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ print_info() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
check_fingerprint_hardware() {
|
check_fingerprint_hardware() {
|
||||||
if ! lsusb | grep -Eiq 'fingerprint|synaptics|goodix|elan|validity|FPC'; then
|
if ! lsusb | grep -Eiq 'fingerprint|synaptics|goodix|elan|validity'; then
|
||||||
print_error "\nNo fingerprint sensor detected."
|
print_error "\nNo fingerprint sensor detected."
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ TOTAL=${#BACKGROUNDS[@]}
|
|||||||
if [[ $TOTAL -eq 0 ]]; then
|
if [[ $TOTAL -eq 0 ]]; then
|
||||||
notify-send "No background was found for theme" -t 2000
|
notify-send "No background was found for theme" -t 2000
|
||||||
pkill -x swaybg
|
pkill -x swaybg
|
||||||
setsid uwsm-app -- swaybg --color '#000000' >/dev/null 2>&1 &
|
setsid uwsm app -- swaybg --color '#000000' >/dev/null 2>&1 &
|
||||||
else
|
else
|
||||||
# Get current background from symlink
|
# Get current background from symlink
|
||||||
if [[ -L "$CURRENT_BACKGROUND_LINK" ]]; then
|
if [[ -L "$CURRENT_BACKGROUND_LINK" ]]; then
|
||||||
@@ -44,5 +44,5 @@ else
|
|||||||
|
|
||||||
# Relaunch swaybg
|
# Relaunch swaybg
|
||||||
pkill -x swaybg
|
pkill -x swaybg
|
||||||
setsid uwsm-app -- swaybg -i "$CURRENT_BACKGROUND_LINK" -m fill >/dev/null 2>&1 &
|
setsid uwsm app -- swaybg -i "$CURRENT_BACKGROUND_LINK" -m fill >/dev/null 2>&1 &
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -30,10 +30,9 @@ hyprctl reload
|
|||||||
pkill -SIGUSR2 btop
|
pkill -SIGUSR2 btop
|
||||||
makoctl reload
|
makoctl reload
|
||||||
|
|
||||||
# Change gnome, browser, vscode, cursor themes
|
# Change gnome, browser, vscode themes
|
||||||
omarchy-theme-set-terminal
|
omarchy-theme-set-terminal
|
||||||
omarchy-theme-set-gnome
|
omarchy-theme-set-gnome
|
||||||
omarchy-theme-set-eza
|
omarchy-theme-set-eza
|
||||||
omarchy-theme-set-browser
|
omarchy-theme-set-browser
|
||||||
omarchy-theme-set-vscode
|
omarchy-theme-set-vscode
|
||||||
omarchy-theme-set-cursor
|
|
||||||
|
|||||||
@@ -4,17 +4,16 @@ CHROMIUM_THEME=~/.config/omarchy/current/theme/chromium.theme
|
|||||||
|
|
||||||
if omarchy-cmd-present chromium || omarchy-cmd-present brave; then
|
if omarchy-cmd-present chromium || omarchy-cmd-present brave; then
|
||||||
if [[ -f $CHROMIUM_THEME ]]; then
|
if [[ -f $CHROMIUM_THEME ]]; then
|
||||||
THEME_RGB_COLOR=$(<$CHROMIUM_THEME)
|
rgb=$(<$CHROMIUM_THEME)
|
||||||
THEME_HEX_COLOR=$(printf '#%02x%02x%02x' ${rgb//,/ })
|
THEME_HEX_COLOR=$(printf '#%02x%02x%02x' ${rgb//,/ })
|
||||||
else
|
else
|
||||||
# Use a default, neutral grey if theme doesn't have a color
|
# Use a default, neutral grey if theme doesn't have a color
|
||||||
THEME_RGB_COLOR="28,32,39"
|
|
||||||
THEME_HEX_COLOR="#1c2027"
|
THEME_HEX_COLOR="#1c2027"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if omarchy-cmd-present chromium; then
|
if omarchy-cmd-present chromium; then
|
||||||
rm -f /etc/chromium/policies/managed/color.json
|
echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\"}" | tee "/etc/chromium/policies/managed/color.json" >/dev/null
|
||||||
chromium --no-startup-window --set-theme-color="$THEME_RGB_COLOR"
|
chromium --refresh-platform-policy --no-startup-window
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if omarchy-cmd-present brave; then
|
if omarchy-cmd-present brave; then
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Call the VSCode theme setter with Cursor-specific parameters
|
|
||||||
omarchy-theme-set-vscode cursor "$HOME/.config/Cursor/User/settings.json" "$HOME/.local/state/omarchy/toggles/skip-cursor-theme-changes" Cursor
|
|
||||||
@@ -3,47 +3,43 @@
|
|||||||
# Note: We cannot use `jq` to update settings.json because it’s JSONC (allows comments),
|
# Note: We cannot use `jq` to update settings.json because it’s JSONC (allows comments),
|
||||||
# which jq doesn’t support.
|
# which jq doesn’t support.
|
||||||
|
|
||||||
# Parameters: EDITOR_CMD SETTINGS_PATH SKIP_FLAG EDITOR_NAME
|
|
||||||
EDITOR_CMD="${1:-code}"
|
|
||||||
SETTINGS_PATH="${2:-$HOME/.config/Code/User/settings.json}"
|
|
||||||
SKIP_FLAG="${3:-$HOME/.local/state/omarchy/toggles/skip-vscode-theme-changes}"
|
|
||||||
EDITOR_NAME="${4:-VS Code}"
|
|
||||||
|
|
||||||
VS_CODE_THEME="$HOME/.config/omarchy/current/theme/vscode.json"
|
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 "$EDITOR_CMD" && [[ ! -f "$SKIP_FLAG" ]]; then
|
if omarchy-cmd-present code && [[ ! -f "$VS_CODE_SKIP_FLAG" ]]; then
|
||||||
if [[ -f "$VS_CODE_THEME" ]]; then
|
if [[ -f "$VS_CODE_THEME" ]]; then
|
||||||
theme_name=$(jq -r '.name' "$VS_CODE_THEME")
|
theme_name=$(jq -r '.name' "$VS_CODE_THEME")
|
||||||
extension=$(jq -r '.extension' "$VS_CODE_THEME")
|
extension=$(jq -r '.extension' "$VS_CODE_THEME")
|
||||||
|
|
||||||
# Install $EDITOR_NAME theme extension
|
# Install VS Code theme extension
|
||||||
if [[ -n "$extension" ]] && ! "$EDITOR_CMD" --list-extensions | grep -Fxq "$extension"; then
|
if [[ -n "$extension" ]] && ! code --list-extensions | grep -Fxq "$extension"; then
|
||||||
notify-send " Installing $EDITOR_NAME theme for $theme_name"
|
notify-send " Installing VS Code theme for $theme_name"
|
||||||
"$EDITOR_CMD" --install-extension "$extension" >/dev/null
|
code --install-extension "$extension" >/dev/null
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create config file if there isn't already one
|
# Create config file if there isn't already one
|
||||||
mkdir -p "$(dirname "$SETTINGS_PATH")"
|
mkdir -p "$(dirname "$VS_CODE_SETTINGS")"
|
||||||
if [[ ! -f "$SETTINGS_PATH" ]]; then
|
if [[ ! -f "$VS_CODE_SETTINGS" ]]; then
|
||||||
printf '{\n}\n' > "$SETTINGS_PATH"
|
printf '{\n}\n' > "$VS_CODE_SETTINGS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create a `workbench.colorTheme` entry in settings.
|
# Create a `workbench.colorTheme` entry in settings.
|
||||||
if ! grep -q '"workbench.colorTheme"' "$SETTINGS_PATH"; then
|
if ! grep -q '"workbench.colorTheme"' "$VS_CODE_SETTINGS"; then
|
||||||
# Insert `"workbench.colorTheme": "",` immediately after the first `{`
|
# Insert `"workbench.colorTheme": "",` immediately after the first `{`
|
||||||
# Use sed's first-match range (0,/{/) to only replace the first `{`
|
# Use sed's first-match range (0,/{/) to only replace the first `{`
|
||||||
sed -i --follow-symlinks -E '0,/\{/{s/\{/{\
|
sed -i --follow-symlinks -E '0,/\{/{s/\{/{\
|
||||||
"workbench.colorTheme": "",/}' "$SETTINGS_PATH"
|
"workbench.colorTheme": "",/}' "$VS_CODE_SETTINGS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Update theme
|
# Update theme
|
||||||
sed -i --follow-symlinks -E \
|
sed -i --follow-symlinks -E \
|
||||||
"s/(\"workbench.colorTheme\"[[:space:]]*:[[:space:]]*\")[^\"]*(\")/\1$theme_name\2/" \
|
"s/(\"workbench.colorTheme\"[[:space:]]*:[[:space:]]*\")[^\"]*(\")/\1$theme_name\2/" \
|
||||||
"$SETTINGS_PATH"
|
"$VS_CODE_SETTINGS"
|
||||||
else
|
else
|
||||||
# Remove theme from settings.json when the theme doesn't have $EDITOR_NAME support
|
# Remove theme from settings.json when the theme doesn't have vscode support
|
||||||
if [[ -f "$SETTINGS_PATH" ]]; then
|
if [[ -f "$VS_CODE_SETTINGS" ]]; then
|
||||||
sed -i --follow-symlinks -E '/"workbench\.colorTheme"[[:space:]]*:[^,}]*,?/d' "$SETTINGS_PATH"
|
sed -i --follow-symlinks -E '/"workbench\.colorTheme"[[:space:]]*:[^,}]*,?/d' "$VS_CODE_SETTINGS"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ if pgrep -x hypridle >/dev/null; then
|
|||||||
pkill -x hypridle
|
pkill -x hypridle
|
||||||
notify-send "Stop locking computer when idle"
|
notify-send "Stop locking computer when idle"
|
||||||
else
|
else
|
||||||
uwsm-app -- hypridle >/dev/null 2>&1 &
|
uwsm app -- hypridle >/dev/null 2>&1 &
|
||||||
notify-send "Now locking computer when idle"
|
notify-send "Now locking computer when idle"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ OFF_TEMP=6000
|
|||||||
|
|
||||||
# Ensure hyprsunset is running
|
# Ensure hyprsunset is running
|
||||||
if ! pgrep -x hyprsunset; then
|
if ! pgrep -x hyprsunset; then
|
||||||
setsid uwsm-app -- hyprsunset &
|
setsid uwsm app -- hyprsunset &
|
||||||
sleep 1 # Give it time to register
|
sleep 1 # Give it time to register
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -3,5 +3,5 @@
|
|||||||
if pgrep -x waybar >/dev/null; then
|
if pgrep -x waybar >/dev/null; then
|
||||||
pkill -x waybar
|
pkill -x waybar
|
||||||
else
|
else
|
||||||
uwsm-app -- waybar >/dev/null 2>&1 &
|
uwsm app -- waybar >/dev/null 2>&1 &
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,2 +1,3 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
cat $OMARCHY_PATH/version
|
|
||||||
|
git -C "$OMARCHY_PATH" describe --tags $(git -C "$OMARCHY_PATH" rev-list --tags --max-count=1)
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
url="$1"
|
|
||||||
web_url="https://app.hey.com"
|
|
||||||
|
|
||||||
# Handle mailto: URLs
|
|
||||||
if [[ $url =~ ^mailto: ]]; then
|
|
||||||
email=$(echo "$url" | sed 's/mailto://')
|
|
||||||
web_url="https://app.hey.com/messages/new?to=$email"
|
|
||||||
fi
|
|
||||||
|
|
||||||
exec omarchy-launch-webapp "$web_url"
|
|
||||||
@@ -6,7 +6,7 @@ DESKTOP_DIR="$HOME/.local/share/applications/"
|
|||||||
if [ "$#" -eq 0 ]; then
|
if [ "$#" -eq 0 ]; then
|
||||||
# Find all web apps
|
# Find all web apps
|
||||||
while IFS= read -r -d '' file; do
|
while IFS= read -r -d '' file; do
|
||||||
if grep -q '^Exec=.*\(omarchy-launch-webapp\|omarchy-webapp-handler\).*' "$file"; then
|
if grep -q '^Exec=.*omarchy-launch-webapp.*' "$file"; then
|
||||||
WEB_APPS+=("$(basename "${file%.desktop}")")
|
WEB_APPS+=("$(basename "${file%.desktop}")")
|
||||||
fi
|
fi
|
||||||
done < <(find "$DESKTOP_DIR" -name '*.desktop' -print0)
|
done < <(find "$DESKTOP_DIR" -name '*.desktop' -print0)
|
||||||
|
|||||||
@@ -16,6 +16,5 @@ decorations = "None"
|
|||||||
|
|
||||||
[keyboard]
|
[keyboard]
|
||||||
bindings = [
|
bindings = [
|
||||||
{ key = "F11", action = "ToggleFullscreen" },
|
{ key = "F11", action = "ToggleFullscreen" }
|
||||||
{ key = "Insert", mods = "Shift", action = "Paste" }
|
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -7,12 +7,10 @@ font-style = Regular
|
|||||||
font-size = 9
|
font-size = 9
|
||||||
|
|
||||||
# Window
|
# Window
|
||||||
window-theme = ghostty
|
|
||||||
window-padding-x = 14
|
window-padding-x = 14
|
||||||
window-padding-y = 14
|
window-padding-y = 14
|
||||||
confirm-close-surface=false
|
confirm-close-surface=false
|
||||||
resize-overlay = never
|
resize-overlay = never
|
||||||
gtk-toolbar-style = flat
|
|
||||||
|
|
||||||
# Cursor styling
|
# Cursor styling
|
||||||
cursor-style = "block"
|
cursor-style = "block"
|
||||||
@@ -21,7 +19,3 @@ shell-integration-features = no-cursor
|
|||||||
|
|
||||||
# Keyboard bindings
|
# Keyboard bindings
|
||||||
keybind = f11=toggle_fullscreen
|
keybind = f11=toggle_fullscreen
|
||||||
keybind = shift+insert=paste_from_clipboard
|
|
||||||
|
|
||||||
# SSH session terminfo
|
|
||||||
shell-integration-features = ssh-env
|
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
# Extra autostart processes
|
# Extra autostart processes
|
||||||
# exec-once = uwsm-app -- my-service
|
# exec-once = uwsm app -- my-service
|
||||||
|
|||||||
@@ -1,23 +1,23 @@
|
|||||||
# Application bindings
|
# Application bindings
|
||||||
$terminal = uwsm-app -- $TERMINAL
|
$terminal = uwsm app -- $TERMINAL
|
||||||
$browser = omarchy-launch-browser
|
$browser = omarchy-launch-browser
|
||||||
|
|
||||||
bindd = SUPER, RETURN, Terminal, exec, $terminal --working-directory="$(omarchy-cmd-terminal-cwd)"
|
bindd = SUPER, return, Terminal, exec, $terminal --working-directory="$(omarchy-cmd-terminal-cwd)"
|
||||||
bindd = SUPER, F, File manager, exec, uwsm-app -- nautilus --new-window
|
bindd = SUPER, F, File manager, exec, uwsm app -- nautilus --new-window
|
||||||
bindd = SUPER, B, Browser, exec, $browser
|
bindd = SUPER, B, Browser, exec, $browser
|
||||||
bindd = SUPER SHIFT, B, Browser (private), exec, $browser --private
|
bindd = SUPER SHIFT, B, Browser (private), exec, $browser --private
|
||||||
bindd = SUPER, M, Music, exec, omarchy-launch-or-focus spotify
|
bindd = SUPER, M, Music, exec, omarchy-launch-or-focus spotify
|
||||||
bindd = SUPER, N, Editor, exec, omarchy-launch-editor
|
bindd = SUPER, N, Editor, exec, omarchy-launch-editor
|
||||||
bindd = SUPER, T, Activity, exec, $terminal -e btop
|
bindd = SUPER, T, Activity, exec, $terminal -e btop
|
||||||
bindd = SUPER, D, Docker, exec, $terminal -e lazydocker
|
bindd = SUPER, D, Docker, exec, $terminal -e lazydocker
|
||||||
bindd = SUPER, G, Signal, exec, omarchy-launch-or-focus signal "uwsm-app -- signal-desktop"
|
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, O, Obsidian, exec, omarchy-launch-or-focus obsidian "uwsm app -- obsidian -disable-gpu --enable-wayland-ime"
|
||||||
bindd = SUPER, SLASH, Passwords, exec, uwsm-app -- 1password
|
bindd = SUPER, slash, Passwords, exec, uwsm app -- 1password
|
||||||
|
|
||||||
# If your web app url contains #, type it as ## to prevent hyprland from treating it as a comment
|
# If your web app url contains #, type it as ## to prevent hyperland treat it as comments
|
||||||
bindd = SUPER, A, ChatGPT, exec, omarchy-launch-webapp "https://chatgpt.com"
|
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 SHIFT, A, Grok, exec, omarchy-launch-webapp "https://grok.com"
|
||||||
bindd = SUPER SHIFT, C, Calendar, exec, omarchy-launch-webapp "https://app.hey.com/calendar/weeks/"
|
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, E, Email, exec, omarchy-launch-webapp "https://app.hey.com"
|
||||||
bindd = SUPER, Y, YouTube, exec, omarchy-launch-or-focus-webapp YouTube "https://youtube.com/"
|
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 SHIFT, G, WhatsApp, exec, omarchy-launch-or-focus-webapp WhatsApp "https://web.whatsapp.com/"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
input {
|
input {
|
||||||
# Use multiple keyboard layouts and switch between them with Left Alt + Right Alt
|
# Use multiple keyboard layouts and switch between them with Left Alt + Right Alt
|
||||||
# kb_layout = us,dk,eu
|
# kb_layout = us,dk,eu
|
||||||
kb_options = compose:caps # ,grp:shifts_toggle
|
kb_options = compose:caps # ,grp:alts_toggle
|
||||||
|
|
||||||
# Change speed of keyboard repeat
|
# Change speed of keyboard repeat
|
||||||
repeat_rate = 40
|
repeat_rate = 40
|
||||||
@@ -12,7 +12,7 @@ input {
|
|||||||
# Start with numlock on by default
|
# Start with numlock on by default
|
||||||
numlock_by_default = true
|
numlock_by_default = true
|
||||||
|
|
||||||
# Increase sensitivity for mouse/trackpad (default: 0)
|
# Increase sensitity for mouse/trackpack (default: 0)
|
||||||
# sensitivity = 0.35
|
# sensitivity = 0.35
|
||||||
|
|
||||||
touchpad {
|
touchpad {
|
||||||
|
|||||||
@@ -1,56 +0,0 @@
|
|||||||
return {
|
|
||||||
-- Load all theme plugins but don't apply them
|
|
||||||
-- This ensures all colorschemes are available for hot-reloading
|
|
||||||
{
|
|
||||||
"ribru17/bamboo.nvim",
|
|
||||||
lazy = true,
|
|
||||||
priority = 1000,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"catppuccin/nvim",
|
|
||||||
name = "catppuccin",
|
|
||||||
lazy = true,
|
|
||||||
priority = 1000,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"sainnhe/everforest",
|
|
||||||
lazy = true,
|
|
||||||
priority = 1000,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ellisonleao/gruvbox.nvim",
|
|
||||||
lazy = true,
|
|
||||||
priority = 1000,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"rebelot/kanagawa.nvim",
|
|
||||||
lazy = true,
|
|
||||||
priority = 1000,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tahayvr/matteblack.nvim",
|
|
||||||
lazy = true,
|
|
||||||
priority = 1000,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"loctvl842/monokai-pro.nvim",
|
|
||||||
lazy = true,
|
|
||||||
priority = 1000,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shaunsingh/nord.nvim",
|
|
||||||
lazy = true,
|
|
||||||
priority = 1000,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"rose-pine/neovim",
|
|
||||||
name = "rose-pine",
|
|
||||||
lazy = true,
|
|
||||||
priority = 1000,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"folke/tokyonight.nvim",
|
|
||||||
lazy = true,
|
|
||||||
priority = 1000,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
return {
|
|
||||||
{
|
|
||||||
name = "theme-hotreload",
|
|
||||||
dir = vim.fn.stdpath("config"),
|
|
||||||
lazy = false,
|
|
||||||
priority = 1000,
|
|
||||||
config = function()
|
|
||||||
local transparency_file = vim.fn.stdpath("config") .. "/plugin/after/transparency.lua"
|
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd("User", {
|
|
||||||
pattern = "LazyReload",
|
|
||||||
callback = function()
|
|
||||||
package.loaded["plugins.theme"] = nil
|
|
||||||
|
|
||||||
vim.schedule(function()
|
|
||||||
local ok, theme_spec = pcall(require, "plugins.theme")
|
|
||||||
if not ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
for _, spec in ipairs(theme_spec) do
|
|
||||||
if spec[1] == "LazyVim/LazyVim" and spec.opts and spec.opts.colorscheme then
|
|
||||||
local colorscheme = spec.opts.colorscheme
|
|
||||||
|
|
||||||
require("lazy.core.loader").colorscheme(colorscheme)
|
|
||||||
|
|
||||||
vim.defer_fn(function()
|
|
||||||
pcall(vim.cmd.colorscheme, colorscheme)
|
|
||||||
|
|
||||||
if vim.fn.filereadable(transparency_file) == 1 then
|
|
||||||
vim.defer_fn(function()
|
|
||||||
vim.cmd.source(transparency_file)
|
|
||||||
end, 5)
|
|
||||||
end
|
|
||||||
end, 5)
|
|
||||||
|
|
||||||
break
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
8
config/nvim/lua/plugins/theme.lua
Normal file
8
config/nvim/lua/plugins/theme.lua
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"LazyVim/LazyVim",
|
||||||
|
opts = {
|
||||||
|
colorscheme = "tokyonight",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -21,7 +21,7 @@ path = "~/.config/hypr/hyprland.conf"
|
|||||||
hidden = true
|
hidden = true
|
||||||
|
|
||||||
[builtins.applications]
|
[builtins.applications]
|
||||||
launch_prefix = "uwsm-app -- "
|
launch_prefix = "uwsm app -- "
|
||||||
placeholder = " Search..."
|
placeholder = " Search..."
|
||||||
prioritize_new = false
|
prioritize_new = false
|
||||||
context_aware = false
|
context_aware = false
|
||||||
|
|||||||
@@ -12,3 +12,4 @@ 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/system.conf
|
||||||
source = ~/.local/share/omarchy/default/hypr/apps/terminals.conf
|
source = ~/.local/share/omarchy/default/hypr/apps/terminals.conf
|
||||||
source = ~/.local/share/omarchy/default/hypr/apps/walker.conf
|
source = ~/.local/share/omarchy/default/hypr/apps/walker.conf
|
||||||
|
source = ~/.local/share/omarchy/default/hypr/apps/webcam-overlay.conf
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# Browser types
|
# Browser types
|
||||||
windowrule = tag +chromium-based-browser, class:([cC]hrom(e|ium)|[bB]rave-browser|Microsoft-edge|Vivaldi-stable|helium)
|
windowrule = tag +chromium-based-browser, class:([cC]hrom(e|ium)|[bB]rave-browser|Microsoft-edge|Vivaldi-stable)
|
||||||
windowrule = tag +firefox-based-browser, class:([fF]irefox|zen|librewolf)
|
windowrule = tag +firefox-based-browser, class:([fF]irefox|zen|librewolf)
|
||||||
|
|
||||||
# Force chromium-based browsers into a tile to deal with --app bug
|
# Force chromium-based browsers into a tile to deal with --app bug
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ windowrule = size 800 600, tag:floating-window
|
|||||||
|
|
||||||
windowrule = tag +floating-window, class:(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty|Omarchy|About|TUI.float)
|
windowrule = tag +floating-window, class:(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty|Omarchy|About|TUI.float)
|
||||||
windowrule = tag +floating-window, class:(xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), title:^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files)
|
windowrule = tag +floating-window, class:(xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), title:^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files)
|
||||||
windowrule = float, class:org.gnome.Calculator
|
|
||||||
|
|
||||||
# Fullscreen screensaver
|
# Fullscreen screensaver
|
||||||
windowrule = fullscreen, class:Screensaver
|
windowrule = fullscreen, class:Screensaver
|
||||||
|
|||||||
6
default/hypr/apps/webcam-overlay.conf
Normal file
6
default/hypr/apps/webcam-overlay.conf
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# Webcam overlay for screen recording
|
||||||
|
windowrule = float, title:WebcamOverlay
|
||||||
|
windowrule = pin, title:WebcamOverlay
|
||||||
|
windowrule = noinitialfocus, title:WebcamOverlay
|
||||||
|
windowrule = nodim, title:WebcamOverlay
|
||||||
|
windowrule = move 100%-w-40 100%-w-40, title:WebcamOverlay # There's a typo in the hyprland rule so 100%-w on the height param is actually correct here
|
||||||
@@ -4,7 +4,7 @@ exec-once = uwsm app -- waybar
|
|||||||
exec-once = uwsm app -- fcitx5
|
exec-once = uwsm app -- fcitx5
|
||||||
exec-once = uwsm app -- swaybg -i ~/.config/omarchy/current/background -m fill
|
exec-once = uwsm app -- swaybg -i ~/.config/omarchy/current/background -m fill
|
||||||
exec-once = uwsm app -- swayosd-server
|
exec-once = uwsm app -- swayosd-server
|
||||||
exec-once = uwsm app -- walker --gapplication-service
|
exec-once = uwsm app -- walker --gapplication-service &
|
||||||
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
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 = wl-clip-persist --clipboard regular --all-mime-type-regex '^(?!x-kde-passwordManagerHint).+'
|
||||||
exec-once = omarchy-cmd-first-run
|
exec-once = omarchy-cmd-first-run
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Deprecated bindings file. New installations include everything directly.
|
# Deprecated bindings file. New installations include everything directly.
|
||||||
|
|
||||||
bindd = SUPER, RETURN, Terminal, exec, $terminal
|
bindd = SUPER, return, Terminal, exec, $terminal
|
||||||
bindd = SUPER, F, File manager, exec, $fileManager
|
bindd = SUPER, F, File manager, exec, $fileManager
|
||||||
bindd = SUPER, B, Web browser, exec, $browser
|
bindd = SUPER, B, Web browser, exec, $browser
|
||||||
bindd = SUPER, M, Music player, exec, $music
|
bindd = SUPER, M, Music player, exec, $music
|
||||||
@@ -9,7 +9,7 @@ bindd = SUPER, T, Top, exec, $terminal -e btop
|
|||||||
bindd = SUPER, D, Lazy Docker, exec, $terminal -e lazydocker
|
bindd = SUPER, D, Lazy Docker, exec, $terminal -e lazydocker
|
||||||
bindd = SUPER, G, Messenger, exec, $messenger
|
bindd = SUPER, G, Messenger, exec, $messenger
|
||||||
bindd = SUPER, O, Obsidian, exec, obsidian -disable-gpu
|
bindd = SUPER, O, Obsidian, exec, obsidian -disable-gpu
|
||||||
bindd = SUPER, SLASH, Password manager, exec, $passwordManager
|
bindd = SUPER, slash, Password manager, exec, $passwordManager
|
||||||
|
|
||||||
source = ~/.local/share/omarchy/default/hypr/bindings/media.conf
|
source = ~/.local/share/omarchy/default/hypr/bindings/media.conf
|
||||||
source = ~/.local/share/omarchy/default/hypr/bindings/tiling.conf
|
source = ~/.local/share/omarchy/default/hypr/bindings/tiling.conf
|
||||||
|
|||||||
@@ -5,15 +5,15 @@ bindd = CTRL ALT, DELETE, Close all Windows, exec, omarchy-cmd-close-all-windows
|
|||||||
# Control tiling
|
# Control tiling
|
||||||
bindd = SUPER, J, Toggle split, togglesplit, # dwindle
|
bindd = SUPER, J, Toggle split, togglesplit, # dwindle
|
||||||
bindd = SUPER, P, Pseudo window, pseudo, # dwindle
|
bindd = SUPER, P, Pseudo window, pseudo, # dwindle
|
||||||
bindd = SUPER SHIFT, V, Toggle floating, togglefloating,
|
bindd = SUPER, V, Toggle floating, togglefloating,
|
||||||
bindd = SHIFT, F11, Force full screen, fullscreen, 0
|
bindd = SHIFT, F11, Force full screen, fullscreen, 0
|
||||||
bindd = ALT, F11, Full width, fullscreen, 1
|
bindd = ALT, F11, Full width, fullscreen, 1
|
||||||
|
|
||||||
# Move focus with SUPER + arrow keys
|
# Move focus with SUPER + arrow keys
|
||||||
bindd = SUPER, LEFT, Move focus left, movefocus, l
|
bindd = SUPER, left, Move focus left, movefocus, l
|
||||||
bindd = SUPER, RIGHT, Move focus right, movefocus, r
|
bindd = SUPER, right, Move focus right, movefocus, r
|
||||||
bindd = SUPER, UP, Move focus up, movefocus, u
|
bindd = SUPER, up, Move focus up, movefocus, u
|
||||||
bindd = SUPER, DOWN, Move focus down, movefocus, d
|
bindd = SUPER, down, Move focus down, movefocus, d
|
||||||
|
|
||||||
# Switch workspaces with SUPER + [0-9]
|
# Switch workspaces with SUPER + [0-9]
|
||||||
bindd = SUPER, code:10, Switch to workspace 1, workspace, 1
|
bindd = SUPER, code:10, Switch to workspace 1, workspace, 1
|
||||||
@@ -39,22 +39,22 @@ bindd = SUPER SHIFT, code:17, Move window to workspace 8, movetoworkspace, 8
|
|||||||
bindd = SUPER SHIFT, code:18, Move window to workspace 9, movetoworkspace, 9
|
bindd = SUPER SHIFT, code:18, Move window to workspace 9, movetoworkspace, 9
|
||||||
bindd = SUPER SHIFT, code:19, Move window to workspace 10, movetoworkspace, 10
|
bindd = SUPER SHIFT, code:19, Move window to workspace 10, movetoworkspace, 10
|
||||||
|
|
||||||
# TAB between workspaces
|
# Tab between workspaces
|
||||||
bindd = SUPER, TAB, Next workspace, workspace, e+1
|
bindd = SUPER, TAB, Next workspace, workspace, e+1
|
||||||
bindd = SUPER SHIFT, TAB, Previous workspace, workspace, e-1
|
bindd = SUPER SHIFT, TAB, Previous workspace, workspace, e-1
|
||||||
bindd = SUPER CTRL, TAB, Former workspace, workspace, previous
|
bindd = SUPER CTRL, TAB, Former workspace, workspace, previous
|
||||||
|
|
||||||
# Swap active window with the one next to it with SUPER + SHIFT + arrow keys
|
# 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
|
bindd = SUPER SHIFT, left, Swap window to the left, swapwindow, l
|
||||||
bindd = SUPER SHIFT, RIGHT, Swap window to the right, swapwindow, r
|
bindd = SUPER SHIFT, right, Swap window to the right, swapwindow, r
|
||||||
bindd = SUPER SHIFT, UP, Swap window up, swapwindow, u
|
bindd = SUPER SHIFT, up, Swap window up, swapwindow, u
|
||||||
bindd = SUPER SHIFT, DOWN, Swap window down, swapwindow, d
|
bindd = SUPER SHIFT, down, Swap window down, swapwindow, d
|
||||||
|
|
||||||
# Cycle through applications on active workspace
|
# Cycle through applications on active workspace
|
||||||
bindd = ALT, TAB, Cycle to next window, cyclenext
|
bindd = ALT, Tab, Cycle to next window, cyclenext
|
||||||
bindd = ALT SHIFT, TAB, Cycle to prev window, cyclenext, prev
|
bindd = ALT SHIFT, Tab, Cycle to prev window, cyclenext, prev
|
||||||
bindd = ALT, TAB, Reveal active window on top, bringactivetotop
|
bindd = ALT, Tab, Reveal active window on top, bringactivetotop
|
||||||
bindd = ALT SHIFT, TAB, Reveal active window on top, bringactivetotop
|
bindd = ALT SHIFT, Tab, Reveal active window on top, bringactivetotop
|
||||||
|
|
||||||
# Resize active window
|
# Resize active window
|
||||||
bindd = SUPER, code:20, Expand window left, resizeactive, -100 0 # - key
|
bindd = SUPER, code:20, Expand window left, resizeactive, -100 0 # - key
|
||||||
@@ -63,30 +63,9 @@ bindd = SUPER SHIFT, code:20, Shrink window up, resizeactive, 0 -100
|
|||||||
bindd = SUPER SHIFT, code:21, Expand window down, resizeactive, 0 100
|
bindd = SUPER SHIFT, code:21, Expand window down, resizeactive, 0 100
|
||||||
|
|
||||||
# Scroll through existing workspaces with SUPER + scroll
|
# Scroll through existing workspaces with SUPER + scroll
|
||||||
bindd = SUPER, MOUSE_DOWN, Scroll active workspace forward, workspace, e+1
|
bindd = SUPER, mouse_down, Scroll active workspace forward, workspace, e+1
|
||||||
bindd = SUPER, MOUSE_UP, Scroll active workspace backward, workspace, e-1
|
bindd = SUPER, mouse_up, Scroll active workspace backward, workspace, e-1
|
||||||
|
|
||||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||||
bindmd = SUPER, mouse:272, Move window, movewindow
|
bindmd = SUPER, mouse:272, Move window, movewindow
|
||||||
bindmd = SUPER, mouse:273, Resize window, resizewindow
|
bindmd = SUPER, mouse:273, Resize window, resizewindow
|
||||||
|
|
||||||
# Toggle groups
|
|
||||||
bindd = SUPER ALT, RETURN, Toggle window grouping, togglegroup
|
|
||||||
bindd = SUPER ALT, BACKSPACE, Move active window out of group, moveoutofgroup
|
|
||||||
|
|
||||||
# Join groups
|
|
||||||
bindd = SUPER ALT, LEFT, Move window to group on left, moveintogroup, l
|
|
||||||
bindd = SUPER ALT, RIGHT, Move window to group on right, moveintogroup, r
|
|
||||||
bindd = SUPER ALT, UP, Move window to group on top, moveintogroup, u
|
|
||||||
bindd = SUPER ALT, DOWN, Move window to group on bottom, moveintogroup, d
|
|
||||||
|
|
||||||
# Navigate a single set of grouped windows
|
|
||||||
bindd = SUPER ALT, TAB, Next window in group, changegroupactive, f
|
|
||||||
bindd = SUPER ALT SHIFT, TAB, Previous window in group, changegroupactive, b
|
|
||||||
|
|
||||||
# Activate window in a group by number
|
|
||||||
bindd = SUPER ALT, 1, Switch to group window 1, changegroupactive, 1
|
|
||||||
bindd = SUPER ALT, 2, Switch to group window 2, changegroupactive, 2
|
|
||||||
bindd = SUPER ALT, 3, Switch to group window 3, changegroupactive, 3
|
|
||||||
bindd = SUPER ALT, 4, Switch to group window 4, changegroupactive, 4
|
|
||||||
bindd = SUPER ALT, 5, Switch to group window 5, changegroupactive, 5
|
|
||||||
|
|||||||
@@ -36,16 +36,12 @@ bindd = CTRL, PRINT, Screenshot of display, exec, omarchy-cmd-screenshot output
|
|||||||
|
|
||||||
# Screen recordings
|
# Screen recordings
|
||||||
bindd = ALT, PRINT, Screen record a region, exec, omarchy-cmd-screenrecord region
|
bindd = ALT, PRINT, Screen record a region, exec, omarchy-cmd-screenrecord region
|
||||||
bindd = ALT SHIFT, PRINT, Screen record a region with audio, exec, omarchy-cmd-screenrecord region audio
|
bindd = ALT SHIFT, PRINT, Screen record a region with audio, exec, omarchy-cmd-screenrecord region --with-audio
|
||||||
bindd = CTRL ALT, PRINT, Screen record display, exec, omarchy-cmd-screenrecord output
|
bindd = CTRL ALT, PRINT, Screen record display, exec, omarchy-cmd-screenrecord output
|
||||||
bindd = CTRL ALT SHIFT, PRINT, Screen record display with audio, exec, omarchy-cmd-screenrecord output audio
|
bindd = CTRL ALT SHIFT, PRINT, Screen record display with audio, exec, omarchy-cmd-screenrecord output --with-audio
|
||||||
|
|
||||||
# Color picker
|
# Color picker
|
||||||
bindd = SUPER, PRINT, Color picker, exec, pkill hyprpicker || hyprpicker -a
|
bindd = SUPER, PRINT, Color picker, exec, pkill hyprpicker || hyprpicker -a
|
||||||
|
|
||||||
# File sharing
|
# File sharing
|
||||||
bindd = CTRL SUPER, S, Share, exec, omarchy-menu share
|
bindd = CTRL SUPER, S, Share, exec, omarchy-menu share
|
||||||
|
|
||||||
# Copy / Paste
|
|
||||||
bind = SUPER, C, sendshortcut, CTRL, Insert,
|
|
||||||
bind = SUPER, V, sendshortcut, SHIFT, Insert,
|
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
# Refer to https://wiki.hyprland.org/Configuring/Variables/
|
# Refer to https://wiki.hyprland.org/Configuring/Variables/
|
||||||
|
|
||||||
# Variables
|
|
||||||
$activeBorderColor = rgba(33ccffee) rgba(00ff99ee) 45deg
|
|
||||||
$inactiveBorderColor = rgba(595959aa)
|
|
||||||
|
|
||||||
# https://wiki.hyprland.org/Configuring/Variables/#general
|
# https://wiki.hyprland.org/Configuring/Variables/#general
|
||||||
general {
|
general {
|
||||||
gaps_in = 5
|
gaps_in = 5
|
||||||
@@ -12,8 +8,8 @@ general {
|
|||||||
border_size = 2
|
border_size = 2
|
||||||
|
|
||||||
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
|
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
|
||||||
col.active_border = $activeBorderColor
|
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||||
col.inactive_border = $inactiveBorderColor
|
col.inactive_border = rgba(595959aa)
|
||||||
|
|
||||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||||
resize_on_border = false
|
resize_on_border = false
|
||||||
@@ -45,38 +41,6 @@ decoration {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# https://wiki.hypr.land/Configuring/Variables/#group
|
|
||||||
group {
|
|
||||||
col.border_active = $activeBorderColor
|
|
||||||
col.border_inactive = $inactiveBorderColor
|
|
||||||
col.border_locked_active = -1
|
|
||||||
col.border_locked_inactive = -1
|
|
||||||
|
|
||||||
groupbar {
|
|
||||||
font_size = 12
|
|
||||||
font_family = monospace
|
|
||||||
font_weight_active = ultraheavy
|
|
||||||
font_weight_inactive = normal
|
|
||||||
|
|
||||||
indicator_height = 0
|
|
||||||
indicator_gap = 5
|
|
||||||
height = 22
|
|
||||||
gaps_in = 5
|
|
||||||
gaps_out = 0
|
|
||||||
|
|
||||||
text_color = rgb(ffffff)
|
|
||||||
text_color_inactive = rgba(ffffff90)
|
|
||||||
col.active = rgba(00000040)
|
|
||||||
col.inactive = rgba(00000020)
|
|
||||||
|
|
||||||
gradients = true
|
|
||||||
gradient_rounding = 0
|
|
||||||
gradient_round_only_edges = false
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# https://wiki.hyprland.org/Configuring/Variables/#animations
|
# https://wiki.hyprland.org/Configuring/Variables/#animations
|
||||||
animations {
|
animations {
|
||||||
enabled = yes, please :)
|
enabled = yes, please :)
|
||||||
@@ -122,7 +86,6 @@ misc {
|
|||||||
disable_hyprland_logo = true
|
disable_hyprland_logo = true
|
||||||
disable_splash_rendering = true
|
disable_splash_rendering = true
|
||||||
focus_on_activate = true
|
focus_on_activate = true
|
||||||
anr_missed_pings = 3
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# https://wiki.hypr.land/Configuring/Variables/#cursor
|
# https://wiki.hypr.land/Configuring/Variables/#cursor
|
||||||
|
|||||||
@@ -2,12 +2,6 @@ anchor=top-right
|
|||||||
default-timeout=5000
|
default-timeout=5000
|
||||||
width=420
|
width=420
|
||||||
height=110
|
height=110
|
||||||
outer-margin=20
|
|
||||||
padding=10,15
|
|
||||||
border-size=2
|
|
||||||
max-icon-size=32
|
|
||||||
font=sans-serif 14px
|
|
||||||
format=<span line_height="1.2"><b>%s</b>\n%b</span>
|
|
||||||
|
|
||||||
[app-name=Spotify]
|
[app-name=Spotify]
|
||||||
invisible=1
|
invisible=1
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
if pgrep -x wl-screenrec >/dev/null || pgrep -x wf-recorder >/dev/null; then
|
if pgrep -f "gpu-screen-recorder" >/dev/null; then
|
||||||
echo '{"text": "", "tooltip": "Stop recording", "class": "active"}'
|
echo '{"text": "", "tooltip": "Stop recording", "class": "active"}'
|
||||||
else
|
else
|
||||||
echo '{"text": ""}'
|
echo '{"text": ""}'
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ run_logged $OMARCHY_INSTALL/config/fix-powerprofilesctl-shebang.sh
|
|||||||
run_logged $OMARCHY_INSTALL/config/docker.sh
|
run_logged $OMARCHY_INSTALL/config/docker.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/mimetypes.sh
|
run_logged $OMARCHY_INSTALL/config/mimetypes.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/localdb.sh
|
run_logged $OMARCHY_INSTALL/config/localdb.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/fast-shutdown.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/sudoless-asdcontrol.sh
|
run_logged $OMARCHY_INSTALL/config/sudoless-asdcontrol.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
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
sudo mkdir -p /etc/systemd/system.conf.d
|
|
||||||
|
|
||||||
cat <<EOF | sudo tee /etc/systemd/system.conf.d/10-faster-shutdown.conf
|
|
||||||
[Manager]
|
|
||||||
DefaultTimeoutStopSec=5s
|
|
||||||
EOF
|
|
||||||
sudo systemctl daemon-reload
|
|
||||||
@@ -33,6 +33,3 @@ xdg-mime default mpv.desktop video/x-ms-asf
|
|||||||
xdg-mime default mpv.desktop video/x-ogm+ogg
|
xdg-mime default mpv.desktop video/x-ogm+ogg
|
||||||
xdg-mime default mpv.desktop video/x-theora+ogg
|
xdg-mime default mpv.desktop video/x-theora+ogg
|
||||||
xdg-mime default mpv.desktop application/ogg
|
xdg-mime default mpv.desktop application/ogg
|
||||||
|
|
||||||
# Use Hey for mailto: links
|
|
||||||
xdg-mime default HEY.desktop x-scheme-handler/mailto
|
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
# Setup sudo-less controls for controlling brightness on Apple Displays
|
# Setup sudo-less controls for controlling brightness on Apple Displays
|
||||||
echo "$USER ALL=(ALL) NOPASSWD: /usr/bin/asdcontrol" | sudo tee /etc/sudoers.d/asdcontrol
|
echo "$USER ALL=(ALL) NOPASSWD: /usr/local/bin/asdcontrol" | sudo tee /etc/sudoers.d/asdcontrol
|
||||||
sudo chmod 440 /etc/sudoers.d/asdcontrol
|
sudo chmod 440 /etc/sudoers.d/asdcontrol
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
# https://wiki.archlinux.org/title/Systemd-resolved
|
|
||||||
echo "Symlink resolved stub-resolv to /etc/resolv.conf"
|
|
||||||
|
|
||||||
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
|
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
if ! ping -c3 -W1 1.1.1.1 >/dev/null 2>&1; then
|
if ! ping -c3 -W1 1.1.1.1 >/dev/null 2>&1; then
|
||||||
notify-send " Click to Setup Wi-Fi" "Tab to navigate, Space to select, ? for help." -u critical -t 30000
|
notify-send " Click to Setup Wi-Fi" "Tab between sections, space selects, ? for help." -u critical -t 30000
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
run_logged $OMARCHY_INSTALL/login/plymouth.sh
|
run_logged $OMARCHY_INSTALL/login/plymouth.sh
|
||||||
run_logged $OMARCHY_INSTALL/login/default-keyring.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/login/sddm.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/login/limine-snapper.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
|
||||||
|
|||||||
115
install/login/alt-bootloaders.sh
Normal file
115
install/login/alt-bootloaders.sh
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
if ! command -v limine &>/dev/null; then
|
||||||
|
# Add kernel hooks
|
||||||
|
if ! grep -Eq '^HOOKS=.*plymouth' /etc/mkinitcpio.conf; then
|
||||||
|
# Backup original mkinitcpio.conf just in case
|
||||||
|
backup_timestamp=$(date +"%Y%m%d%H%M%S")
|
||||||
|
sudo cp /etc/mkinitcpio.conf "/etc/mkinitcpio.conf.bak.${backup_timestamp}"
|
||||||
|
|
||||||
|
# Add plymouth to HOOKS array after 'base udev' or 'base systemd'
|
||||||
|
if grep "^HOOKS=" /etc/mkinitcpio.conf | grep -q "base systemd"; then
|
||||||
|
sudo sed -i '/^HOOKS=/s/base systemd/base systemd plymouth/' /etc/mkinitcpio.conf
|
||||||
|
elif grep "^HOOKS=" /etc/mkinitcpio.conf | grep -q "base udev"; then
|
||||||
|
sudo sed -i '/^HOOKS=/s/base udev/base udev plymouth/' /etc/mkinitcpio.conf
|
||||||
|
else
|
||||||
|
echo "Couldn't add the Plymouth hook"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Regenerate initramfs
|
||||||
|
sudo mkinitcpio -P
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add kernel parameters for Plymouth
|
||||||
|
if [ -d "/boot/loader/entries" ]; then # systemd-boot
|
||||||
|
echo "Detected systemd-boot"
|
||||||
|
|
||||||
|
for entry in /boot/loader/entries/*.conf; do
|
||||||
|
if [ -f "$entry" ]; then
|
||||||
|
# Skip fallback entries
|
||||||
|
if [[ "$(basename "$entry")" == *"fallback"* ]]; then
|
||||||
|
echo "Skipped: $(basename "$entry") (fallback entry)"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Skip if splash it already present for some reason
|
||||||
|
if ! grep -q "splash" "$entry"; then
|
||||||
|
sudo sed -i '/^options/ s/$/ splash quiet/' "$entry"
|
||||||
|
else
|
||||||
|
echo "Skipped: $(basename "$entry") (splash already present)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
elif [ -f "/etc/default/grub" ]; then # Grub
|
||||||
|
echo "Detected grub"
|
||||||
|
|
||||||
|
# Backup GRUB config before modifying
|
||||||
|
backup_timestamp=$(date +"%Y%m%d%H%M%S")
|
||||||
|
sudo cp /etc/default/grub "/etc/default/grub.bak.${backup_timestamp}"
|
||||||
|
|
||||||
|
# Check if splash is already in GRUB_CMDLINE_LINUX_DEFAULT
|
||||||
|
if ! grep -q "GRUB_CMDLINE_LINUX_DEFAULT.*splash" /etc/default/grub; then
|
||||||
|
# Get current GRUB_CMDLINE_LINUX_DEFAULT value
|
||||||
|
current_cmdline=$(grep "^GRUB_CMDLINE_LINUX_DEFAULT=" /etc/default/grub | cut -d'"' -f2)
|
||||||
|
|
||||||
|
# Add splash and quiet if not present
|
||||||
|
new_cmdline="$current_cmdline"
|
||||||
|
if [[ ! "$current_cmdline" =~ splash ]]; then
|
||||||
|
new_cmdline="$new_cmdline splash"
|
||||||
|
fi
|
||||||
|
if [[ ! "$current_cmdline" =~ quiet ]]; then
|
||||||
|
new_cmdline="$new_cmdline quiet"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Trim any leading/trailing spaces
|
||||||
|
new_cmdline=$(echo "$new_cmdline" | xargs)
|
||||||
|
|
||||||
|
sudo sed -i "s/^GRUB_CMDLINE_LINUX_DEFAULT=\".*\"/GRUB_CMDLINE_LINUX_DEFAULT=\"$new_cmdline\"/" /etc/default/grub
|
||||||
|
|
||||||
|
# Regenerate grub config
|
||||||
|
sudo grub-mkconfig -o /boot/grub/grub.cfg
|
||||||
|
else
|
||||||
|
echo "GRUB already configured with splash kernel parameters"
|
||||||
|
fi
|
||||||
|
elif [ -d "/etc/cmdline.d" ]; then # UKI
|
||||||
|
echo "Detected a UKI setup"
|
||||||
|
# Relying on mkinitcpio to assemble a UKI
|
||||||
|
# https://wiki.archlinux.org/title/Unified_kernel_image
|
||||||
|
if ! grep -q splash /etc/cmdline.d/*.conf; then
|
||||||
|
# Need splash, create the omarchy file
|
||||||
|
echo "splash" | sudo tee -a /etc/cmdline.d/omarchy.conf
|
||||||
|
fi
|
||||||
|
if ! grep -q quiet /etc/cmdline.d/*.conf; then
|
||||||
|
# Need quiet, create or append the omarchy file
|
||||||
|
echo "quiet" | sudo tee -a /etc/cmdline.d/omarchy.conf
|
||||||
|
fi
|
||||||
|
elif [ -f "/etc/kernel/cmdline" ]; then # UKI Alternate
|
||||||
|
# Alternate UKI kernel cmdline location
|
||||||
|
echo "Detected a UKI setup"
|
||||||
|
|
||||||
|
# Backup kernel cmdline config before modifying
|
||||||
|
backup_timestamp=$(date +"%Y%m%d%H%M%S")
|
||||||
|
sudo cp /etc/kernel/cmdline "/etc/kernel/cmdline.bak.${backup_timestamp}"
|
||||||
|
|
||||||
|
current_cmdline=$(cat /etc/kernel/cmdline)
|
||||||
|
|
||||||
|
# Add splash and quiet if not present
|
||||||
|
new_cmdline="$current_cmdline"
|
||||||
|
if [[ ! "$current_cmdline" =~ splash ]]; then
|
||||||
|
new_cmdline="$new_cmdline splash"
|
||||||
|
fi
|
||||||
|
if [[ ! "$current_cmdline" =~ quiet ]]; then
|
||||||
|
new_cmdline="$new_cmdline quiet"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Trim any leading/trailing spaces
|
||||||
|
new_cmdline=$(echo "$new_cmdline" | xargs)
|
||||||
|
|
||||||
|
# Write new file
|
||||||
|
echo $new_cmdline | sudo tee /etc/kernel/cmdline
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
echo " None of systemd-boot, GRUB, or UKI detected. Please manually add these kernel parameters:"
|
||||||
|
echo " - splash (to see the graphical splash screen)"
|
||||||
|
echo " - quiet (for silent boot)"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
fi
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
KEYRING_DIR="$HOME/.local/share/keyrings"
|
|
||||||
KEYRING_FILE="$KEYRING_DIR/Default_keyring.keyring"
|
|
||||||
DEFAULT_FILE="$KEYRING_DIR/default"
|
|
||||||
|
|
||||||
cat << EOF | tee "$KEYRING_FILE"
|
|
||||||
[keyring]
|
|
||||||
display-name=Default keyring
|
|
||||||
ctime=$(date +%s)
|
|
||||||
mtime=0
|
|
||||||
lock-on-idle=false
|
|
||||||
lock-after=false
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat << EOF | tee "$DEFAULT_FILE"
|
|
||||||
Default_keyring
|
|
||||||
EOF
|
|
||||||
|
|
||||||
chmod 700 "$KEYRING_DIR"
|
|
||||||
chmod 600 "$KEYRING_FILE"
|
|
||||||
chmod 644 "$DEFAULT_FILE"
|
|
||||||
18
install/login/enable-mkinitcpio.sh
Normal file
18
install/login/enable-mkinitcpio.sh
Normal file
@@ -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
|
||||||
@@ -1,6 +1,4 @@
|
|||||||
if command -v limine &>/dev/null; then
|
if command -v limine &>/dev/null; then
|
||||||
sudo pacman -S --noconfirm --needed limine-snapper-sync limine-mkinitcpio-hook
|
|
||||||
|
|
||||||
sudo tee /etc/mkinitcpio.conf.d/omarchy_hooks.conf <<EOF >/dev/null
|
sudo tee /etc/mkinitcpio.conf.d/omarchy_hooks.conf <<EOF >/dev/null
|
||||||
HOOKS=(base udev plymouth keyboard autodetect microcode modconf kms keymap consolefont block encrypt filesystems fsck btrfs-overlayfs)
|
HOOKS=(base udev plymouth keyboard autodetect microcode modconf kms keymap consolefont block encrypt filesystems fsck btrfs-overlayfs)
|
||||||
EOF
|
EOF
|
||||||
@@ -36,7 +34,6 @@ KERNEL_CMDLINE[default]="$CMDLINE"
|
|||||||
KERNEL_CMDLINE[default]+="quiet splash"
|
KERNEL_CMDLINE[default]+="quiet splash"
|
||||||
|
|
||||||
ENABLE_UKI=yes
|
ENABLE_UKI=yes
|
||||||
CUSTOM_UKI_NAME="omarchy"
|
|
||||||
|
|
||||||
ENABLE_LIMINE_FALLBACK=yes
|
ENABLE_LIMINE_FALLBACK=yes
|
||||||
|
|
||||||
@@ -78,6 +75,7 @@ term_background_bright: 24283b
|
|||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
sudo pacman -S --noconfirm --needed limine-snapper-sync limine-mkinitcpio-hook
|
||||||
|
|
||||||
# Match Snapper configs if not installing from the ISO
|
# Match Snapper configs if not installing from the ISO
|
||||||
if [[ -z ${OMARCHY_CHROOT_INSTALL:-} ]]; then
|
if [[ -z ${OMARCHY_CHROOT_INSTALL:-} ]]; then
|
||||||
@@ -98,39 +96,13 @@ EOF
|
|||||||
chrootable_systemctl_enable limine-snapper-sync.service
|
chrootable_systemctl_enable limine-snapper-sync.service
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Re-enabling mkinitcpio hooks..."
|
# Add UKI entry to UEFI machines to skip bootloader showing on normal boot
|
||||||
|
if [[ -n $EFI ]] && efibootmgr &>/dev/null && ! efibootmgr | grep -q Omarchy &&
|
||||||
# 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"
|
|
||||||
|
|
||||||
sudo limine-update
|
|
||||||
|
|
||||||
if [[ -n $EFI ]] && efibootmgr &>/dev/null; then
|
|
||||||
# Remove the archinstall-created Limine entry
|
|
||||||
while IFS= read -r bootnum; do
|
|
||||||
sudo efibootmgr -b "$bootnum" -B >/dev/null 2>&1
|
|
||||||
done < <(efibootmgr | grep -E "^Boot[0-9]{4}\*? Arch Linux Limine" | sed 's/^Boot\([0-9]\{4\}\).*/\1/')
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n $EFI ]] && efibootmgr &>/dev/null &&
|
|
||||||
! cat /sys/class/dmi/id/bios_vendor 2>/dev/null | grep -qi "American Megatrends" &&
|
! cat /sys/class/dmi/id/bios_vendor 2>/dev/null | grep -qi "American Megatrends" &&
|
||||||
! cat /sys/class/dmi/id/bios_vendor 2>/dev/null | grep -qi "Apple"; then
|
! cat /sys/class/dmi/id/bios_vendor 2>/dev/null | grep -qi "Apple"; then
|
||||||
|
sudo efibootmgr --create \
|
||||||
uki_file=$(find /boot/EFI/Linux/ -name "omarchy*.efi" -printf "%f\n" 2>/dev/null | head -1)
|
--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//')" \
|
||||||
if [[ -n "$uki_file" ]]; then
|
--label "Omarchy" \
|
||||||
sudo efibootmgr --create \
|
--loader "\\EFI\\Linux\\$(cat /etc/machine-id)_linux.efi"
|
||||||
--disk "$(findmnt -n -o SOURCE /boot | sed 's/p\?[0-9]*$//')" \
|
|
||||||
--part "$(findmnt -n -o SOURCE /boot | grep -o 'p\?[0-9]*$' | sed 's/^p//')" \
|
|
||||||
--label "Omarchy" \
|
|
||||||
--loader "\\EFI\\Linux\\$uki_file"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,4 +1,151 @@
|
|||||||
|
# Hyprland launched via UWSM and login directly as user, rely on disk encryption + hyprlock for security
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# PLYMOUTH SETUP
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
if [ "$(plymouth-set-default-theme)" != "omarchy" ]; then
|
if [ "$(plymouth-set-default-theme)" != "omarchy" ]; then
|
||||||
sudo cp -r "$HOME/.local/share/omarchy/default/plymouth" /usr/share/plymouth/themes/omarchy/
|
sudo cp -r "$HOME/.local/share/omarchy/default/plymouth" /usr/share/plymouth/themes/omarchy/
|
||||||
sudo plymouth-set-default-theme omarchy
|
sudo plymouth-set-default-theme omarchy
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# SEAMLESS LOGIN
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
if [ ! -x /usr/local/bin/seamless-login ]; then
|
||||||
|
# Compile the seamless login helper -- needed to prevent seeing terminal between loader and desktop
|
||||||
|
cat <<'CCODE' >/tmp/seamless-login.c
|
||||||
|
/*
|
||||||
|
* Seamless Login - Minimal SDDM-style Plymouth transition
|
||||||
|
* Replicates SDDM's VT management for seamless auto-login
|
||||||
|
*/
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#include <linux/kd.h>
|
||||||
|
#include <linux/vt.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
int vt_fd;
|
||||||
|
int vt_num = 1; // TTY1
|
||||||
|
char vt_path[32];
|
||||||
|
|
||||||
|
if (argc < 2) {
|
||||||
|
fprintf(stderr, "Usage: %s <session_command>\n", argv[0]);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Open the VT (simple approach like SDDM)
|
||||||
|
snprintf(vt_path, sizeof(vt_path), "/dev/tty%d", vt_num);
|
||||||
|
vt_fd = open(vt_path, O_RDWR);
|
||||||
|
if (vt_fd < 0) {
|
||||||
|
perror("Failed to open VT");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Activate the VT
|
||||||
|
if (ioctl(vt_fd, VT_ACTIVATE, vt_num) < 0) {
|
||||||
|
perror("VT_ACTIVATE failed");
|
||||||
|
close(vt_fd);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wait for VT to be active
|
||||||
|
if (ioctl(vt_fd, VT_WAITACTIVE, vt_num) < 0) {
|
||||||
|
perror("VT_WAITACTIVE failed");
|
||||||
|
close(vt_fd);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Critical: Set graphics mode to prevent console text
|
||||||
|
if (ioctl(vt_fd, KDSETMODE, KD_GRAPHICS) < 0) {
|
||||||
|
perror("KDSETMODE KD_GRAPHICS failed");
|
||||||
|
close(vt_fd);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clear VT and close (like SDDM does)
|
||||||
|
const char *clear_seq = "\33[H\33[2J";
|
||||||
|
if (write(vt_fd, clear_seq, strlen(clear_seq)) < 0) {
|
||||||
|
perror("Failed to clear VT");
|
||||||
|
}
|
||||||
|
|
||||||
|
close(vt_fd);
|
||||||
|
|
||||||
|
// Set working directory to user's home
|
||||||
|
const char *home = getenv("HOME");
|
||||||
|
if (home) chdir(home);
|
||||||
|
|
||||||
|
// Now execute the session command
|
||||||
|
execvp(argv[1], &argv[1]);
|
||||||
|
perror("Failed to exec session");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
CCODE
|
||||||
|
|
||||||
|
gcc -o /tmp/seamless-login /tmp/seamless-login.c
|
||||||
|
sudo mv /tmp/seamless-login /usr/local/bin/seamless-login
|
||||||
|
sudo chmod +x /usr/local/bin/seamless-login
|
||||||
|
rm /tmp/seamless-login.c
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f /etc/systemd/system/omarchy-seamless-login.service ]; then
|
||||||
|
cat <<EOF | sudo tee /etc/systemd/system/omarchy-seamless-login.service
|
||||||
|
[Unit]
|
||||||
|
Description=Omarchy Seamless Auto-Login
|
||||||
|
Documentation=https://github.com/basecamp/omarchy
|
||||||
|
Conflicts=getty@tty1.service
|
||||||
|
After=systemd-user-sessions.service getty@tty1.service plymouth-quit.service systemd-logind.service
|
||||||
|
PartOf=graphical.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usr/local/bin/seamless-login uwsm start -- hyprland.desktop
|
||||||
|
Restart=always
|
||||||
|
RestartSec=2
|
||||||
|
StartLimitIntervalSec=30
|
||||||
|
StartLimitBurst=2
|
||||||
|
User=$USER
|
||||||
|
TTYPath=/dev/tty1
|
||||||
|
TTYReset=yes
|
||||||
|
TTYVHangup=yes
|
||||||
|
TTYVTDisallocate=yes
|
||||||
|
StandardInput=tty
|
||||||
|
StandardOutput=journal
|
||||||
|
StandardError=journal+console
|
||||||
|
PAMName=login
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=graphical.target
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f /etc/systemd/system/plymouth-quit.service.d/wait-for-graphical.conf ]; then
|
||||||
|
# Make plymouth remain until graphical.target
|
||||||
|
sudo mkdir -p /etc/systemd/system/plymouth-quit.service.d
|
||||||
|
sudo tee /etc/systemd/system/plymouth-quit.service.d/wait-for-graphical.conf <<'EOF'
|
||||||
|
[Unit]
|
||||||
|
After=multi-user.target
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Mask plymouth-quit-wait.service only if not already masked
|
||||||
|
if ! systemctl is-enabled plymouth-quit-wait.service | grep -q masked; then
|
||||||
|
sudo systemctl mask plymouth-quit-wait.service
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Enable omarchy-seamless-login.service only if not already enabled
|
||||||
|
if ! systemctl is-enabled omarchy-seamless-login.service | grep -q enabled; then
|
||||||
|
sudo systemctl enable omarchy-seamless-login.service
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Disable getty@tty1.service only if not already disabled
|
||||||
|
if ! systemctl is-enabled getty@tty1.service | grep -q disabled; then
|
||||||
|
sudo systemctl disable getty@tty1.service
|
||||||
|
fi
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
sudo mkdir -p /etc/sddm.conf.d
|
|
||||||
|
|
||||||
if [ ! -f /etc/sddm.conf.d/autologin.conf ]; then
|
|
||||||
cat <<EOF | sudo tee /etc/sddm.conf.d/autologin.conf
|
|
||||||
[Autologin]
|
|
||||||
User=$USER
|
|
||||||
Session=hyprland-uwsm
|
|
||||||
|
|
||||||
[Theme]
|
|
||||||
Current=breeze
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$USER ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart sddm" | sudo tee /etc/sudoers.d/allow-passwordless-restart-sddm
|
|
||||||
|
|
||||||
chrootable_systemctl_enable sddm.service
|
|
||||||
@@ -35,6 +35,7 @@ github-cli
|
|||||||
gnome-calculator
|
gnome-calculator
|
||||||
gnome-keyring
|
gnome-keyring
|
||||||
gnome-themes-extra
|
gnome-themes-extra
|
||||||
|
gpu-screen-recorder
|
||||||
gum
|
gum
|
||||||
gvfs-mtp
|
gvfs-mtp
|
||||||
gvfs-smb
|
gvfs-smb
|
||||||
@@ -56,7 +57,6 @@ kvantum-qt5
|
|||||||
lazydocker
|
lazydocker
|
||||||
lazygit
|
lazygit
|
||||||
less
|
less
|
||||||
libsecret
|
|
||||||
libyaml
|
libyaml
|
||||||
libqalculate
|
libqalculate
|
||||||
libreoffice
|
libreoffice
|
||||||
@@ -69,7 +69,6 @@ mariadb-libs
|
|||||||
mise
|
mise
|
||||||
mpv
|
mpv
|
||||||
nautilus
|
nautilus
|
||||||
gnome-disk-utility
|
|
||||||
noto-fonts
|
noto-fonts
|
||||||
noto-fonts-cjk
|
noto-fonts-cjk
|
||||||
noto-fonts-emoji
|
noto-fonts-emoji
|
||||||
@@ -94,7 +93,6 @@ python-terminaltexteffects
|
|||||||
qt5-wayland
|
qt5-wayland
|
||||||
ripgrep
|
ripgrep
|
||||||
satty
|
satty
|
||||||
sddm
|
|
||||||
signal-desktop
|
signal-desktop
|
||||||
slurp
|
slurp
|
||||||
spotify
|
spotify
|
||||||
@@ -116,14 +114,12 @@ unzip
|
|||||||
uwsm
|
uwsm
|
||||||
walker-bin
|
walker-bin
|
||||||
waybar
|
waybar
|
||||||
wf-recorder
|
|
||||||
whois
|
whois
|
||||||
wireless-regdb
|
wireless-regdb
|
||||||
wiremix
|
wiremix
|
||||||
wireplumber
|
wireplumber
|
||||||
wl-clip-persist
|
wl-clip-persist
|
||||||
wl-clipboard
|
wl-clipboard
|
||||||
wl-screenrec
|
|
||||||
woff2-font-awesome
|
woff2-font-awesome
|
||||||
xdg-desktop-portal-gtk
|
xdg-desktop-portal-gtk
|
||||||
xdg-desktop-portal-hyprland
|
xdg-desktop-portal-hyprland
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
omarchy-webapp-install "HEY" https://app.hey.com HEY.png "omarchy-webapp-handler-hey %u" "x-scheme-handler/mailto"
|
omarchy-webapp-install "HEY" https://app.hey.com HEY.png
|
||||||
omarchy-webapp-install "Basecamp" https://launchpad.37signals.com Basecamp.png
|
omarchy-webapp-install "Basecamp" https://launchpad.37signals.com Basecamp.png
|
||||||
omarchy-webapp-install "WhatsApp" https://web.whatsapp.com/ WhatsApp.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 Photos" https://photos.google.com/ "Google Photos.png"
|
||||||
|
|||||||
@@ -5,11 +5,9 @@ touch ~/.local/state/omarchy/first-run.mode
|
|||||||
# Setup sudo-less access for first-run
|
# Setup sudo-less access for first-run
|
||||||
sudo tee /etc/sudoers.d/first-run >/dev/null <<EOF
|
sudo tee /etc/sudoers.d/first-run >/dev/null <<EOF
|
||||||
Cmnd_Alias FIRST_RUN_CLEANUP = /bin/rm -f /etc/sudoers.d/first-run
|
Cmnd_Alias FIRST_RUN_CLEANUP = /bin/rm -f /etc/sudoers.d/first-run
|
||||||
Cmnd_Alias SYMLINK_RESOLVED = /usr/bin/ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
|
|
||||||
$USER ALL=(ALL) NOPASSWD: /usr/bin/ufw
|
$USER ALL=(ALL) NOPASSWD: /usr/bin/ufw
|
||||||
$USER ALL=(ALL) NOPASSWD: /usr/bin/ufw-docker
|
$USER ALL=(ALL) NOPASSWD: /usr/bin/ufw-docker
|
||||||
$USER ALL=(ALL) NOPASSWD: /usr/bin/gtk-update-icon-cache
|
$USER ALL=(ALL) NOPASSWD: /usr/bin/gtk-update-icon-cache
|
||||||
$USER ALL=(ALL) NOPASSWD: SYMLINK_RESOLVED
|
|
||||||
$USER ALL=(ALL) NOPASSWD: FIRST_RUN_CLEANUP
|
$USER ALL=(ALL) NOPASSWD: FIRST_RUN_CLEANUP
|
||||||
EOF
|
EOF
|
||||||
sudo chmod 440 /etc/sudoers.d/first-run
|
sudo chmod 440 /etc/sudoers.d/first-run
|
||||||
|
|||||||
@@ -5,42 +5,22 @@ abort() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Must be an Arch distro
|
# Must be an Arch distro
|
||||||
if [[ ! -f /etc/arch-release ]]; then
|
[[ -f /etc/arch-release ]] || abort "Vanilla Arch"
|
||||||
abort "Vanilla Arch"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Must not be an Arch derivative distro
|
# Must not be an Arch derivative distro
|
||||||
for marker in /etc/cachyos-release /etc/eos-release /etc/garuda-release /etc/manjaro-release; do
|
for marker in /etc/cachyos-release /etc/eos-release /etc/garuda-release /etc/manjaro-release; do
|
||||||
if [[ -f "$marker" ]]; then
|
[[ -f "$marker" ]] && abort "Vanilla Arch"
|
||||||
abort "Vanilla Arch"
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
|
|
||||||
# Must not be running as root
|
# Must not be running as root
|
||||||
if [ "$EUID" -eq 0 ]; then
|
[ "$EUID" -eq 0 ] && abort "Running as root (not user)"
|
||||||
abort "Running as root (not user)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Must be x86 only to fully work
|
# Must be x86 only to fully work
|
||||||
if [ "$(uname -m)" != "x86_64" ]; then
|
[ "$(uname -m)" != "x86_64" ] && abort "x86_64 CPU"
|
||||||
abort "x86_64 CPU"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Must have secure boot disabled
|
|
||||||
if bootctl status 2>/dev/null | grep -q 'Secure Boot: enabled'; then
|
|
||||||
abort "Secure Boot disabled"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Must not have Gnome or KDE already install
|
# Must not have Gnome or KDE already install
|
||||||
if pacman -Qe gnome-shell &>/dev/null || pacman -Qe plasma-desktop &>/dev/null; then
|
pacman -Qe gnome-shell &>/dev/null && abort "Fresh + Vanilla Arch"
|
||||||
abort "Fresh + Vanilla Arch"
|
pacman -Qe plasma-desktop &>/dev/null && abort "Fresh + Vanilla Arch"
|
||||||
fi
|
|
||||||
|
|
||||||
# Must have limine installed
|
|
||||||
command -v limine &>/dev/null || abort "Limine bootloader"
|
|
||||||
|
|
||||||
# Must have btrfs root filesystem
|
|
||||||
[ "$(findmnt -n -o FSTYPE /)" = "btrfs" ] || abort "Btrfs root filesystem"
|
|
||||||
|
|
||||||
# Cleared all guards
|
# Cleared all guards
|
||||||
echo "Guards: OK"
|
echo "Guards: OK"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
echo "Use current terminal shell cwd for new terminal working directories"
|
echo "Use current terminal shell cwd for new terminal working directories"
|
||||||
|
|
||||||
if ! grep -q "working-directory" ~/.config/hypr/bindings.conf; then
|
if ! grep -q "working-directory" ~/.config/hypr/bindings.conf; then
|
||||||
sed -i '/bindd = SUPER, RETURN, Terminal, exec, \$terminal/ s|$| --working-directory=$(omarchy-cmd-terminal-cwd)|' ~/.config/hypr/bindings.conf
|
sed -i '/bindd = SUPER, return, Terminal, exec, \$terminal/ s|$| --working-directory=$(omarchy-cmd-terminal-cwd)|' ~/.config/hypr/bindings.conf
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
echo "Add live themeing to neovim"
|
|
||||||
|
|
||||||
cp -f $OMARCHY_PATH/config/nvim/lua/plugins/all-themes.lua ~/.config/nvim/lua/plugins/
|
|
||||||
cp -f $OMARCHY_PATH/config/nvim/lua/plugins/omarchy-theme-hotreload.lua ~/.config/nvim/lua/plugins/
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
error_exit() {
|
|
||||||
echo -e "\033[31mERROR: Migration failed! Manual intervention required.\033[0m" >&2
|
|
||||||
echo -e "\033[31mDO NOT REBOOT - System may be in inconsistent state until the error is fixed.\033[0m" >&2
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
trap error_exit ERR
|
|
||||||
|
|
||||||
echo "Change display manager to SDDM"
|
|
||||||
|
|
||||||
omarchy-pkg-add sddm libsecret gnome-keyring || error_exit
|
|
||||||
|
|
||||||
sudo mkdir -p /etc/sddm.conf.d
|
|
||||||
|
|
||||||
cat <<EOF | sudo tee /etc/sddm.conf.d/autologin.conf
|
|
||||||
[Autologin]
|
|
||||||
User=$USER
|
|
||||||
Session=hyprland-uwsm
|
|
||||||
|
|
||||||
[Theme]
|
|
||||||
Current=breeze
|
|
||||||
EOF
|
|
||||||
|
|
||||||
sudo systemctl disable omarchy-seamless-login.service
|
|
||||||
sudo systemctl unmask plymouth-quit-wait.service
|
|
||||||
sudo systemctl enable getty@tty1.service
|
|
||||||
sudo systemctl enable sddm.service
|
|
||||||
sudo systemctl daemon-reload
|
|
||||||
|
|
||||||
if systemctl is-enabled omarchy-seamless-login.service >/dev/null 2>&1; then
|
|
||||||
echo -e "\033[31mError: omarchy-seamless-login.service is still enabled\033[0m" >&2
|
|
||||||
error_exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
if systemctl is-masked plymouth-quit-wait.service >/dev/null 2>&1; then
|
|
||||||
echo -e "\033[31mError: plymouth-quit-wait.service is still masked\033[0m" >&2
|
|
||||||
error_exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! systemctl is-enabled getty@tty1.service >/dev/null 2>&1; then
|
|
||||||
echo -e "\033[31mError: getty@tty1.service is not enabled\033[0m" >&2
|
|
||||||
error_exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! systemctl is-enabled sddm.service >/dev/null 2>&1; then
|
|
||||||
echo -e "\033[31mError: sddm.service is not enabled\033[0m" >&2
|
|
||||||
error_exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
sudo rm -f /usr/local/bin/seamless-login
|
|
||||||
sudo rm -f /etc/systemd/system/plymouth-quit.service.d/wait-for-graphical.conf
|
|
||||||
sudo rm -f /etc/systemd/system/omarchy-seamless-login.service
|
|
||||||
|
|
||||||
echo "Migration completed successfully"
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
echo "Update UKI to custom named entry"
|
|
||||||
|
|
||||||
if command -v limine &>/dev/null && [[ -f /etc/default/limine ]]; then
|
|
||||||
if grep -q "^ENABLE_UKI=yes" /etc/default/limine; then
|
|
||||||
if ! grep -q "^CUSTOM_UKI_NAME=" /etc/default/limine; then
|
|
||||||
sudo sed -i '/^ENABLE_UKI=yes/a CUSTOM_UKI_NAME="omarchy"' /etc/default/limine
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Remove the archinstall-created Limine entry
|
|
||||||
while IFS= read -r bootnum; do
|
|
||||||
sudo efibootmgr -b "$bootnum" -B >/dev/null 2>&1
|
|
||||||
done < <(efibootmgr | grep -E "^Boot[0-9]{4}\*? Arch Linux Limine" | sed 's/^Boot\([0-9]\{4\}\).*/\1/')
|
|
||||||
|
|
||||||
sudo limine-update
|
|
||||||
|
|
||||||
uki_file=$(find /boot/EFI/Linux/ -name "omarchy*.efi" -printf "%f\n" 2>/dev/null | head -1)
|
|
||||||
|
|
||||||
if [[ -n "$uki_file" ]]; then
|
|
||||||
while IFS= read -r bootnum; do
|
|
||||||
sudo efibootmgr -b "$bootnum" -B >/dev/null 2>&1
|
|
||||||
done < <(efibootmgr | grep -E "^Boot[0-9]{4}\*? Omarchy" | sed 's/^Boot\([0-9]\{4\}\).*/\1/')
|
|
||||||
|
|
||||||
# Skip EFI entry creation on Apple hardware
|
|
||||||
if ! 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//')" \
|
|
||||||
--label "Omarchy" \
|
|
||||||
--loader "\\EFI\\Linux\\$uki_file"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "Not using UKI. Not making any changes."
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "Boot config is non-standard. Not making any changes."
|
|
||||||
fi
|
|
||||||
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
echo "Enable fast shutdown"
|
|
||||||
source $OMARCHY_PATH/install/config/fast-shutdown.sh
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
echo "Adding hidden entries for electron apps"
|
|
||||||
|
|
||||||
cp $OMARCHY_PATH/applications/hidden/electron*.desktop ~/.local/share/applications/
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
echo "Correct path for sudoless asdcontrol for working Apple Display hotkeys"
|
|
||||||
|
|
||||||
if [[ $(command -v asdcontrol) == "/usr/bin/asdcontrol" ]]; then
|
|
||||||
echo "$USER ALL=(ALL) NOPASSWD: /usr/bin/asdcontrol" | sudo tee /etc/sudoers.d/asdcontrol
|
|
||||||
fi
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
echo "Hide OpenJDK applications from app launcher"
|
|
||||||
|
|
||||||
cp $OMARCHY_PATH/applications/hidden/*openjdk.desktop ~/.local/share/applications/
|
|
||||||
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
echo "Fix opening in nvim from files manager"
|
|
||||||
|
|
||||||
cp -f $OMARCHY_PATH/applications/nvim.desktop ~/.local/share/applications/nvim.desktop
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
echo "Make shift+insert paste from clipboard"
|
|
||||||
sed -i '/keybind = f11=toggle_fullscreen/a keybind = shift+insert=paste_from_clipboard' ~/.config/ghostty/config
|
|
||||||
sed -i 's/{ key = "F11", action = "ToggleFullscreen" }/{ key = "F11", action = "ToggleFullscreen" },\n{ key = "Insert", mods = "Shift", action = "Paste" }/' ~/.config/alacritty/alacritty.toml
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
echo "Move calendar to SUPER + SHIFT + C"
|
|
||||||
sed -i 's/bindd = SUPER, C, Calendar, exec, omarchy-launch-webapp "https:\/\/app\.hey\.com\/calendar\/weeks\/"/bindd = SUPER SHIFT, C, Calendar, exec, omarchy-launch-webapp "https:\/\/app.hey.com\/calendar\/weeks\/"/' ~/.config/hypr/*.conf
|
|
||||||
3
migrations/1760144906.sh
Normal file
3
migrations/1760144906.sh
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
echo "Change omarchy-screenrecord to use gpu-screen-recorder"
|
||||||
|
omarchy-pkg-drop wf-recorder wl-screenrec
|
||||||
|
omarchy-pkg-add gpu-screen-recorder
|
||||||
@@ -3,3 +3,8 @@ include=~/.local/share/omarchy/default/mako/core.ini
|
|||||||
text-color=#4c4f69
|
text-color=#4c4f69
|
||||||
border-color=#1e66f5
|
border-color=#1e66f5
|
||||||
background-color=#eff1f5
|
background-color=#eff1f5
|
||||||
|
padding=10
|
||||||
|
border-size=2
|
||||||
|
font=Liberation Sans 11
|
||||||
|
max-icon-size=32
|
||||||
|
outer-margin=20
|
||||||
@@ -3,9 +3,12 @@ return {
|
|||||||
"catppuccin/nvim",
|
"catppuccin/nvim",
|
||||||
name = "catppuccin",
|
name = "catppuccin",
|
||||||
priority = 1000,
|
priority = 1000,
|
||||||
opts = {
|
config = function()
|
||||||
flavour = "latte",
|
require("catppuccin").setup({
|
||||||
},
|
flavour = "latte", -- other options: "mocha", "frappe", "macchiato"
|
||||||
|
})
|
||||||
|
vim.cmd.colorscheme("catppuccin-latte")
|
||||||
|
end,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"LazyVim/LazyVim",
|
"LazyVim/LazyVim",
|
||||||
|
|||||||
@@ -3,3 +3,8 @@ include=~/.local/share/omarchy/default/mako/core.ini
|
|||||||
text-color=#cad3f5
|
text-color=#cad3f5
|
||||||
border-color=#c6d0f5
|
border-color=#c6d0f5
|
||||||
background-color=#24273a
|
background-color=#24273a
|
||||||
|
padding=10
|
||||||
|
border-size=2
|
||||||
|
font=Liberation Sans 11
|
||||||
|
max-icon-size=32
|
||||||
|
outer-margin=20
|
||||||
@@ -1,9 +1,4 @@
|
|||||||
return {
|
return {
|
||||||
{
|
|
||||||
"catppuccin/nvim",
|
|
||||||
name = "catppuccin",
|
|
||||||
priority = 1000,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"LazyVim/LazyVim",
|
"LazyVim/LazyVim",
|
||||||
opts = {
|
opts = {
|
||||||
|
|||||||
@@ -3,3 +3,8 @@ include=~/.local/share/omarchy/default/mako/core.ini
|
|||||||
text-color=#d3c6aa
|
text-color=#d3c6aa
|
||||||
border-color=#d3c6aa
|
border-color=#d3c6aa
|
||||||
background-color=#2d353b
|
background-color=#2d353b
|
||||||
|
padding=10
|
||||||
|
border-size=2
|
||||||
|
font=Liberation Sans 11
|
||||||
|
max-icon-size=32
|
||||||
|
outer-margin=20
|
||||||
@@ -3,3 +3,8 @@ include=~/.local/share/omarchy/default/mako/core.ini
|
|||||||
text-color=#d4be98
|
text-color=#d4be98
|
||||||
border-color=#a89984
|
border-color=#a89984
|
||||||
background-color=#282828
|
background-color=#282828
|
||||||
|
padding=10
|
||||||
|
border-size=2
|
||||||
|
font=Liberation Sans 11
|
||||||
|
max-icon-size=32
|
||||||
|
outer-margin=20
|
||||||
@@ -3,3 +3,8 @@ include=~/.local/share/omarchy/default/mako/core.ini
|
|||||||
text-color=#dcd7ba
|
text-color=#dcd7ba
|
||||||
border-color=#dcd7ba
|
border-color=#dcd7ba
|
||||||
background-color=#1f1f28
|
background-color=#1f1f28
|
||||||
|
padding=10
|
||||||
|
border-size=2
|
||||||
|
font=Liberation Sans 11
|
||||||
|
max-icon-size=32
|
||||||
|
outer-margin=20
|
||||||
@@ -3,3 +3,8 @@ include=~/.local/share/omarchy/default/mako/core.ini
|
|||||||
text-color=#8a8a8d
|
text-color=#8a8a8d
|
||||||
border-color=#8A8A8D
|
border-color=#8A8A8D
|
||||||
background-color=#1e1e1e
|
background-color=#1e1e1e
|
||||||
|
padding=10
|
||||||
|
border-size=2
|
||||||
|
font=Liberation Sans 11
|
||||||
|
max-icon-size=32
|
||||||
|
outer-margin=20
|
||||||
|
|||||||
@@ -3,3 +3,8 @@ include=~/.local/share/omarchy/default/mako/core.ini
|
|||||||
text-color=#d8dee9
|
text-color=#d8dee9
|
||||||
border-color=#D8DEE9
|
border-color=#D8DEE9
|
||||||
background-color=#2e3440
|
background-color=#2e3440
|
||||||
|
padding=10
|
||||||
|
border-size=2
|
||||||
|
font=Liberation Sans 11
|
||||||
|
max-icon-size=32
|
||||||
|
outer-margin=20
|
||||||
@@ -16,7 +16,7 @@ white = "#F6F5DD"
|
|||||||
[colors.bright]
|
[colors.bright]
|
||||||
black = "#53685B"
|
black = "#53685B"
|
||||||
red = "#db9f9c"
|
red = "#db9f9c"
|
||||||
green = "#63b07a"
|
green = "#143614"
|
||||||
yellow = "#E5C736"
|
yellow = "#E5C736"
|
||||||
blue = "#ACD4CF"
|
blue = "#ACD4CF"
|
||||||
magenta = "#75bbb3"
|
magenta = "#75bbb3"
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ palette = 7=#F6F5DD
|
|||||||
# bright colors
|
# bright colors
|
||||||
palette = 8=#53685B
|
palette = 8=#53685B
|
||||||
palette = 9=#db9f9c
|
palette = 9=#db9f9c
|
||||||
palette = 10=#63b07a
|
palette = 10=#143614
|
||||||
palette = 11=#E5C736
|
palette = 11=#E5C736
|
||||||
palette = 12=#ACD4CF
|
palette = 12=#ACD4CF
|
||||||
palette = 13=#75bbb3
|
palette = 13=#75bbb3
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user