mirror of
https://github.com/basecamp/omarchy.git
synced 2026-02-17 15:25:37 +00:00
Compare commits
10 Commits
omarchy-do
...
add-t2-sup
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1d38781a1f | ||
|
|
8e3bb40da2 | ||
|
|
b880a2c2e2 | ||
|
|
b35591790f | ||
|
|
cbeaa56300 | ||
|
|
634e30b3a5 | ||
|
|
990dc5c7dd | ||
|
|
d48d4d7324 | ||
|
|
e9a3114b39 | ||
|
|
9b15c56a68 |
@@ -1,6 +1,6 @@
|
|||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Name=Image Viewer
|
Name=Image Viewer
|
||||||
Exec=imv %F
|
Exec=sh -c 'imv -n "$1" "$(dirname "$1")"' sh %f
|
||||||
Icon=imv
|
Icon=imv
|
||||||
Type=Application
|
Type=Application
|
||||||
MimeType=image/png;image/jpeg;image/jpg;image/gif;image/bmp;image/webp;image/tiff;image/x-xcf;image/x-portable-pixmap;image/x-xbitmap;
|
MimeType=image/png;image/jpeg;image/jpg;image/gif;image/bmp;image/webp;image/tiff;image/x-xcf;image/x-portable-pixmap;image/x-xbitmap;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
Name=Neovim
|
Name=Neovim
|
||||||
GenericName=Text Editor
|
GenericName=Text Editor
|
||||||
Comment=Edit text files
|
Comment=Edit text files
|
||||||
Exec=$TERMINAL --class=nvim --title=nvim -e nvim -- %F
|
Exec=alacritty --class=nvim --title=nvim -e nvim -- %F
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
Keywords=Text;editor;
|
Keywords=Text;editor;
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ AUDIO=$([[ $2 == "audio" ]] && echo "--audio")
|
|||||||
start_screenrecording() {
|
start_screenrecording() {
|
||||||
filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
|
filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
|
||||||
|
|
||||||
if lspci | grep -qi 'nvidia'; then
|
if lspci | grep -Eqi 'nvidia|intel.*graphics'; then
|
||||||
wf-recorder $AUDIO -f "$filename" -c libx264 -p crf=23 -p preset=medium -p movflags=+faststart "$@" &
|
wf-recorder $AUDIO -f "$filename" -c libx264 -p crf=23 -p preset=medium -p movflags=+faststart "$@" &
|
||||||
else
|
else
|
||||||
wl-screenrec $AUDIO -f "$filename" --ffmpeg-encoder-options="-c:v libx264 -crf 23 -preset medium -movflags +faststart" "$@" &
|
wl-screenrec $AUDIO -f "$filename" --ffmpeg-encoder-options="-c:v libx264 -crf 23 -preset medium -movflags +faststart" "$@" &
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
screensaver_in_focus() {
|
function exit_screensaver {
|
||||||
hyprctl activewindow -j | jq -e '.class == "Screensaver"' >/dev/null 2>&1
|
|
||||||
}
|
|
||||||
|
|
||||||
exit_screensaver() {
|
|
||||||
hyprctl keyword cursor:invisible false
|
hyprctl keyword cursor:invisible false
|
||||||
pkill -x tte 2>/dev/null
|
pkill -x tte 2>/dev/null
|
||||||
pkill -f "alacritty --class Screensaver" 2>/dev/null
|
pkill -f "alacritty --class Screensaver" 2>/dev/null
|
||||||
@@ -22,7 +18,7 @@ while true; do
|
|||||||
"$effect" &
|
"$effect" &
|
||||||
|
|
||||||
while pgrep -x tte >/dev/null; do
|
while pgrep -x tte >/dev/null; do
|
||||||
if read -n 1 -t 3 || ! screensaver_in_focus; then
|
if read -n 1 -t 3; then
|
||||||
exit_screensaver
|
exit_screensaver
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
if (($# == 0)); then
|
|
||||||
echo "Usage: omarchy-cmd-share [clipboard|file|folder]"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
MODE="$1"
|
|
||||||
shift
|
|
||||||
|
|
||||||
if [[ $MODE == "clipboard" ]]; then
|
|
||||||
TEMP_FILE=$(mktemp --suffix=.txt)
|
|
||||||
wl-paste >"$TEMP_FILE"
|
|
||||||
FILES="$TEMP_FILE"
|
|
||||||
else
|
|
||||||
if (($# > 0)); then
|
|
||||||
FILES="$*"
|
|
||||||
else
|
|
||||||
if [[ $MODE == "folder" ]]; then
|
|
||||||
# Pick a single folder from home directory
|
|
||||||
FILES=$(find "$HOME" -type d 2>/dev/null | fzf)
|
|
||||||
else
|
|
||||||
# Pick one or more files from home directory
|
|
||||||
FILES=$(find "$HOME" -type f 2>/dev/null | fzf --multi)
|
|
||||||
fi
|
|
||||||
[ -z "$FILES" ] && exit 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Run LocalSend in its own systemd service (detached from terminal)
|
|
||||||
# Convert newline-separated files to space-separated arguments
|
|
||||||
if [[ $MODE != "clipboard" ]] && echo "$FILES" | grep -q $'\n'; then
|
|
||||||
# Multiple files selected - convert newlines to array
|
|
||||||
readarray -t FILE_ARRAY <<<"$FILES"
|
|
||||||
systemd-run --user --quiet --collect localsend --headless send "${FILE_ARRAY[@]}"
|
|
||||||
else
|
|
||||||
# Single file or clipboard mode
|
|
||||||
systemd-run --user --quiet --collect localsend --headless send "$FILES"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Note: Temporary file will remain until system cleanup for clipboard mode
|
|
||||||
# This ensures the file content is available for the LocalSend GUI
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
@@ -1,161 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Request sudo upfront to avoid prompts during checks
|
|
||||||
sudo -v
|
|
||||||
|
|
||||||
# Keep sudo alive during the script
|
|
||||||
(while true; do sudo -v; sleep 50; done) &
|
|
||||||
SUDO_REFRESH_PID=$!
|
|
||||||
trap "kill $SUDO_REFRESH_PID 2>/dev/null" EXIT
|
|
||||||
|
|
||||||
# Define Omarchy locations
|
|
||||||
export OMARCHY_PATH="/home/ryan/Work/omarchy/omarchy-installer"
|
|
||||||
export OMARCHY_INSTALL="$OMARCHY_PATH/install"
|
|
||||||
|
|
||||||
# Track results
|
|
||||||
failed_checks=0
|
|
||||||
passed_checks=0
|
|
||||||
skipped_checks=0
|
|
||||||
total_checks=0
|
|
||||||
|
|
||||||
# Function to display a message with icon
|
|
||||||
show_message() {
|
|
||||||
local type="$1"
|
|
||||||
local msg="$2"
|
|
||||||
case "$type" in
|
|
||||||
error) printf " ❌ ERROR %s\n" "$msg" ;;
|
|
||||||
warning) printf " ⚠️ WARNING %s\n" "$msg" ;;
|
|
||||||
info) printf " ✅ OK %s\n" "$msg" ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to check a single script
|
|
||||||
check_script() {
|
|
||||||
local script="$1"
|
|
||||||
local script_name="${script#$OMARCHY_INSTALL/}"
|
|
||||||
|
|
||||||
# Check if script has verify function
|
|
||||||
if ! bash -c "source '$script' && declare -f omarchy_verify" >/dev/null 2>&1; then
|
|
||||||
((skipped_checks++))
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
((total_checks++))
|
|
||||||
|
|
||||||
# Get friendly name
|
|
||||||
local friendly_name=$(bash -c "source '$script' 2>/dev/null; echo \"\${OMARCHY_DESCRIPTION:-$script_name}\"")
|
|
||||||
|
|
||||||
# Run verification in subshell and capture output
|
|
||||||
local output
|
|
||||||
output=$(
|
|
||||||
errors=()
|
|
||||||
warnings=()
|
|
||||||
infos=()
|
|
||||||
|
|
||||||
add_error() { errors+=("$1"); }
|
|
||||||
add_warning() { warnings+=("$1"); }
|
|
||||||
add_info() { infos+=("$1"); }
|
|
||||||
|
|
||||||
source "$script"
|
|
||||||
omarchy_verify
|
|
||||||
exit_code=$?
|
|
||||||
|
|
||||||
# Output results with delimiters
|
|
||||||
echo "EXIT:$exit_code"
|
|
||||||
for e in "${errors[@]}"; do echo "ERROR:$e"; done
|
|
||||||
for w in "${warnings[@]}"; do echo "WARNING:$w"; done
|
|
||||||
for i in "${infos[@]}"; do echo "INFO:$i"; done
|
|
||||||
)
|
|
||||||
|
|
||||||
# Parse output
|
|
||||||
local exit_code errors=() warnings=() infos=()
|
|
||||||
while IFS= read -r line; do
|
|
||||||
case "$line" in
|
|
||||||
EXIT:*) exit_code="${line#EXIT:}" ;;
|
|
||||||
ERROR:*) errors+=("${line#ERROR:}") ;;
|
|
||||||
WARNING:*) warnings+=("${line#WARNING:}") ;;
|
|
||||||
INFO:*) infos+=("${line#INFO:}") ;;
|
|
||||||
esac
|
|
||||||
done <<< "$output"
|
|
||||||
|
|
||||||
# Handle skipped (return code 2)
|
|
||||||
if [[ $exit_code -eq 2 ]]; then
|
|
||||||
((skipped_checks++))
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Count messages
|
|
||||||
local error_count=${#errors[@]}
|
|
||||||
local warning_count=${#warnings[@]}
|
|
||||||
|
|
||||||
# Determine status
|
|
||||||
local status_icon status_color
|
|
||||||
if [[ $error_count -gt 0 ]]; then
|
|
||||||
status_icon="❌"
|
|
||||||
status_color="1" # Red
|
|
||||||
((failed_checks++))
|
|
||||||
elif [[ $warning_count -gt 0 ]]; then
|
|
||||||
status_icon="⚠️"
|
|
||||||
status_color="3" # Yellow
|
|
||||||
((passed_checks++))
|
|
||||||
else
|
|
||||||
status_icon="✅"
|
|
||||||
status_color="2" # Green
|
|
||||||
((passed_checks++))
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Display result
|
|
||||||
printf "%s %s\n" "$status_icon" "$(gum style --foreground "$status_color" --bold "$friendly_name")"
|
|
||||||
|
|
||||||
# Display messages if any errors or warnings
|
|
||||||
if [[ $error_count -gt 0 || $warning_count -gt 0 ]]; then
|
|
||||||
for msg in "${errors[@]}"; do
|
|
||||||
show_message error "$msg"
|
|
||||||
done
|
|
||||||
|
|
||||||
for msg in "${warnings[@]}"; do
|
|
||||||
show_message warning "$msg"
|
|
||||||
done
|
|
||||||
|
|
||||||
for msg in "${infos[@]}"; do
|
|
||||||
show_message info "$msg"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo
|
|
||||||
}
|
|
||||||
|
|
||||||
# Main execution
|
|
||||||
echo
|
|
||||||
gum style --italic --foreground 7 "Running health checks..."
|
|
||||||
echo
|
|
||||||
|
|
||||||
# Process all scripts
|
|
||||||
while IFS= read -r script; do
|
|
||||||
# Skip certain directories
|
|
||||||
if [[ "$script" == */all.sh ]] ||
|
|
||||||
[[ "$script" == */helpers/* ]] ||
|
|
||||||
[[ "$script" == */preflight/* ]] ||
|
|
||||||
[[ "$script" == */first-run/* ]] ||
|
|
||||||
[[ "$script" == */post-install/* ]]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
check_script "$script"
|
|
||||||
done < <(find "$OMARCHY_INSTALL" -type f -name "*.sh" | sort)
|
|
||||||
|
|
||||||
# Display summary
|
|
||||||
echo
|
|
||||||
echo "Summary:"
|
|
||||||
echo " Passed: $passed_checks/$total_checks"
|
|
||||||
[[ $failed_checks -gt 0 ]] && echo " Failed: $failed_checks/$total_checks"
|
|
||||||
[[ $skipped_checks -gt 0 ]] && echo " Skipped: $skipped_checks"
|
|
||||||
|
|
||||||
echo
|
|
||||||
|
|
||||||
if [[ $failed_checks -gt 0 ]]; then
|
|
||||||
echo "❌ Some checks failed. Please review the errors above."
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
echo "✅ All checks passed!"
|
|
||||||
fi
|
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
grep -oP 'font-family:\s*["'\'']?\K[^;"'\'']+' ~/.config/waybar/style.css | head -n1
|
grep -oP 'family\s*=\s*"\K[^"]+' ~/.config/alacritty/alacritty.toml | head -n1
|
||||||
|
|||||||
@@ -4,20 +4,7 @@ font_name="$1"
|
|||||||
|
|
||||||
if [[ -n "$font_name" && "$font_name" != "CNCLD" ]]; then
|
if [[ -n "$font_name" && "$font_name" != "CNCLD" ]]; then
|
||||||
if fc-list | grep -iq "$font_name"; then
|
if fc-list | grep -iq "$font_name"; then
|
||||||
if [[ -f ~/.config/alacritty/alacritty.toml ]]; then
|
sed -i "s/family = \".*\"/family = \"$font_name\"/g" ~/.config/alacritty/alacritty.toml
|
||||||
sed -i "s/family = \".*\"/family = \"$font_name\"/g" ~/.config/alacritty/alacritty.toml
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -f ~/.config/kitty/kitty.conf ]]; then
|
|
||||||
sed -i "s/^font_family .*/font_family $font_name/g" ~/.config/kitty/kitty.conf
|
|
||||||
pkill -USR1 kitty
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -f ~/.config/ghostty/config ]]; then
|
|
||||||
sed -i "s/font-family = \".*\"/font-family = \"$font_name\"/g" ~/.config/ghostty/config
|
|
||||||
pkill -SIGUSR2 ghostty
|
|
||||||
fi
|
|
||||||
|
|
||||||
sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/waybar/style.css
|
sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/waybar/style.css
|
||||||
sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/swayosd/style.css
|
sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/swayosd/style.css
|
||||||
xmlstarlet ed -L \
|
xmlstarlet ed -L \
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
if [[ -f ~/.config/chromium-flags.conf ]]; then
|
|
||||||
CONF=~/.config/chromium-flags.conf
|
|
||||||
|
|
||||||
grep -qxF -- "--oauth2-client-id=77185425430.apps.googleusercontent.com" "$CONF" ||
|
|
||||||
echo "--oauth2-client-id=77185425430.apps.googleusercontent.com" >>"$CONF"
|
|
||||||
|
|
||||||
grep -qxF -- "--oauth2-client-secret=OTJgUOQcT7lO7GsGZq2G4IlT" "$CONF" ||
|
|
||||||
echo "--oauth2-client-secret=OTJgUOQcT7lO7GsGZq2G4IlT" >>"$CONF"
|
|
||||||
|
|
||||||
echo "Now you can login to your Google Account in Chromium."
|
|
||||||
fi
|
|
||||||
@@ -47,7 +47,6 @@ install_node() {
|
|||||||
case "$1" in
|
case "$1" in
|
||||||
ruby)
|
ruby)
|
||||||
echo -e "Installing Ruby on Rails...\n"
|
echo -e "Installing Ruby on Rails...\n"
|
||||||
omarchy-pkg-add libyaml
|
|
||||||
mise use --global ruby@latest
|
mise use --global ruby@latest
|
||||||
mise settings add idiomatic_version_file_enable_tools ruby
|
mise settings add idiomatic_version_file_enable_tools ruby
|
||||||
mise x ruby -- gem install rails --no-document
|
mise x ruby -- gem install rails --no-document
|
||||||
@@ -120,7 +119,6 @@ java)
|
|||||||
zig)
|
zig)
|
||||||
echo -e "Installing Zig...\n"
|
echo -e "Installing Zig...\n"
|
||||||
mise use --global zig@latest
|
mise use --global zig@latest
|
||||||
mise use -g zls@latest
|
|
||||||
;;
|
;;
|
||||||
ocaml)
|
ocaml)
|
||||||
echo -e "Installing OCaml...\n"
|
echo -e "Installing OCaml...\n"
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
if (($# == 0)); then
|
|
||||||
echo "Usage: omarchy-install-terminal [alacritty|ghostty|kitty]"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
package="$1"
|
|
||||||
|
|
||||||
# Install package
|
|
||||||
omarchy-pkg-add $package
|
|
||||||
|
|
||||||
# Set as default terminal
|
|
||||||
echo "Setting $package as new default terminal..."
|
|
||||||
sed -i "/export TERMINAL=/ c\export TERMINAL=$package" ~/.config/uwsm/default
|
|
||||||
|
|
||||||
# Relaunch is needed for new default to take effect
|
|
||||||
echo
|
|
||||||
gum confirm "Relaunch Hyprland to use new terminal?" && uwsm stop
|
|
||||||
@@ -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 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
exec setsid uwsm app -- alacritty --class=Omarchy -o font.size=9 -e bash -c 'fastfetch; read -n 1 -s'
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
case "${EDITOR:-nvim}" in
|
|
||||||
nvim | vim | nano | micro | hx)
|
|
||||||
exec setsid uwsm app -- "$TERMINAL" -e "$EDITOR" "$@"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
exec setsid uwsm app -- "$EDITOR" "$@"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cmd="$*"
|
cmd="$*"
|
||||||
exec setsid uwsm app -- alacritty --class=Omarchy --title=Omarchy -e bash -c "omarchy-show-logo; $cmd; omarchy-show-done"
|
setsid alacritty --class Omarchy -e bash -c "omarchy-show-logo; $cmd; omarchy-show-done"
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
if (($# == 0)); then
|
|
||||||
echo "Usage: omarchy-launch-or-focus [window-pattern] [launch-command]"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
WINDOW_PATTERN="$1"
|
|
||||||
LAUNCH_COMMAND="${2:-"uwsm app -- $WINDOW_PATTERN"}"
|
|
||||||
WINDOW_ADDRESS=$(hyprctl clients -j | jq -r --arg p "$WINDOW_PATTERN" '.[]|select((.class|test("\\b" + $p + "\\b";"i")) or (.title|test("\\b" + $p + "\\b";"i")))|.address' | head -n1)
|
|
||||||
|
|
||||||
if [[ -n $WINDOW_ADDRESS ]]; then
|
|
||||||
hyprctl dispatch focuswindow "address:$WINDOW_ADDRESS"
|
|
||||||
else
|
|
||||||
eval exec $LAUNCH_COMMAND
|
|
||||||
fi
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
if (($# == 0)); then
|
|
||||||
echo "Usage: omarchy-launch-or-focus-webapp [window-pattern] [url]"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
exec omarchy-launch-or-focus "$1" "omarchy-launch-webapp '$2'"
|
|
||||||
@@ -17,8 +17,6 @@ focused=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')
|
|||||||
|
|
||||||
for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do
|
for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do
|
||||||
hyprctl dispatch focusmonitor $m
|
hyprctl dispatch focusmonitor $m
|
||||||
|
|
||||||
# FIXME: Find a way to make this generic where we it can work for kitty + ghostty
|
|
||||||
hyprctl dispatch exec -- \
|
hyprctl dispatch exec -- \
|
||||||
alacritty --class Screensaver \
|
alacritty --class Screensaver \
|
||||||
--config-file ~/.local/share/omarchy/default/alacritty/screensaver.toml \
|
--config-file ~/.local/share/omarchy/default/alacritty/screensaver.toml \
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
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 "$TERMINAL --class Screensaver"
|
pkill -f "alacritty --class Screensaver"
|
||||||
|
|||||||
189
bin/omarchy-menu
189
bin/omarchy-menu
@@ -37,16 +37,16 @@ menu() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
terminal() {
|
terminal() {
|
||||||
alacritty --class=Omarchy -e "$@"
|
alacritty --class Omarchy -e "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
present_terminal() {
|
present_terminal() {
|
||||||
omarchy-launch-floating-terminal-with-presentation $1
|
omarchy-launch-floating-terminal-with-presentation $1
|
||||||
}
|
}
|
||||||
|
|
||||||
open_in_editor() {
|
edit_in_nvim() {
|
||||||
notify-send "Editing config file" "$1"
|
notify-send "Editing config file" "$1"
|
||||||
omarchy-launch-editor "$1"
|
alacritty -e nvim "$1"
|
||||||
}
|
}
|
||||||
|
|
||||||
install() {
|
install() {
|
||||||
@@ -61,10 +61,6 @@ install_font() {
|
|||||||
present_terminal "echo 'Installing $1...'; sudo pacman -S --noconfirm --needed $2 && sleep 2 && omarchy-font-set '$3'"
|
present_terminal "echo 'Installing $1...'; sudo pacman -S --noconfirm --needed $2 && sleep 2 && omarchy-font-set '$3'"
|
||||||
}
|
}
|
||||||
|
|
||||||
install_terminal() {
|
|
||||||
present_terminal "omarchy-install-terminal $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
aur_install() {
|
aur_install() {
|
||||||
present_terminal "echo 'Installing $1 from AUR...'; yay -S --noconfirm $2"
|
present_terminal "echo 'Installing $1 from AUR...'; yay -S --noconfirm $2"
|
||||||
}
|
}
|
||||||
@@ -85,70 +81,13 @@ show_learn_menu() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
show_trigger_menu() {
|
|
||||||
case $(menu "Trigger" " Capture\n Share\n Toggle") in
|
|
||||||
*Capture*) show_capture_menu ;;
|
|
||||||
*Share*) show_share_menu ;;
|
|
||||||
*Toggle*) show_toggle_menu ;;
|
|
||||||
*) show_main_menu ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
show_capture_menu() {
|
|
||||||
case $(menu "Capture" " Screenshot\n Screenrecord\n Color") in
|
|
||||||
*Screenshot*) show_screenshot_menu ;;
|
|
||||||
*Screenrecord*) show_screenrecord_menu ;;
|
|
||||||
*Color*) pkill hyprpicker || hyprpicker -a ;;
|
|
||||||
*) show_trigger_menu ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
show_screenshot_menu() {
|
|
||||||
case $(menu "Screenshot" " Region\n Window\n Display") in
|
|
||||||
*Region*) omarchy-cmd-screenshot ;;
|
|
||||||
*Window*) omarchy-cmd-screenshot window ;;
|
|
||||||
*Display*) omarchy-cmd-screenshot output ;;
|
|
||||||
*) show_capture_menu ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
show_screenrecord_menu() {
|
|
||||||
case $(menu "Screenrecord" " Region\n Region + Audio\n Display\n Display + Audio") in
|
|
||||||
*"Region + Audio"*) omarchy-cmd-screenrecord region audio ;;
|
|
||||||
*Region*) omarchy-cmd-screenrecord ;;
|
|
||||||
*"Display + Audio"*) omarchy-cmd-screenrecord output audio ;;
|
|
||||||
*Display*) omarchy-cmd-screenrecord output ;;
|
|
||||||
*) show_capture_menu ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
show_share_menu() {
|
|
||||||
case $(menu "Share" " Clipboard\n File \n Folder") in
|
|
||||||
*Clipboard*) terminal bash -c "omarchy-cmd-share clipboard" ;;
|
|
||||||
*File*) terminal bash -c "omarchy-cmd-share file" ;;
|
|
||||||
*Folder*) terminal bash -c "omarchy-cmd-share folder" ;;
|
|
||||||
*) back_to show_trigger_menu ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
show_toggle_menu() {
|
|
||||||
case $(menu "Toggle" " Screensaver\n Nightlight\n Idle Lock\n Top Bar") in
|
|
||||||
*Screensaver*) omarchy-toggle-screensaver ;;
|
|
||||||
*Nightlight*) omarchy-toggle-nightlight ;;
|
|
||||||
*Idle*) omarchy-toggle-idle ;;
|
|
||||||
*Bar*) omarchy-toggle-waybar ;;
|
|
||||||
*) show_trigger_menu ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
show_style_menu() {
|
show_style_menu() {
|
||||||
case $(menu "Style" " Theme\n Font\n Background\n Hyprland\n Screensaver\n About") in
|
case $(menu "Style" " Theme\n Font\n Background\n Screensaver\n About") in
|
||||||
*Theme*) show_theme_menu ;;
|
*Theme*) show_theme_menu ;;
|
||||||
*Font*) show_font_menu ;;
|
*Font*) show_font_menu ;;
|
||||||
*Background*) omarchy-theme-bg-next ;;
|
*Background*) omarchy-theme-bg-next ;;
|
||||||
*Hyprland*) open_in_editor ~/.config/hypr/looknfeel.conf ;;
|
*Screensaver*) edit_in_nvim ~/.config/omarchy/branding/screensaver.txt ;;
|
||||||
*Screensaver*) open_in_editor ~/.config/omarchy/branding/screensaver.txt ;;
|
*About*) edit_in_nvim ~/.config/omarchy/branding/about.txt ;;
|
||||||
*About*) open_in_editor ~/.config/omarchy/branding/about.txt ;;
|
|
||||||
*) show_main_menu ;;
|
*) show_main_menu ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
@@ -171,30 +110,68 @@ show_font_menu() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
show_capture_menu() {
|
||||||
|
case $(menu "Capture" " Screenshot\n Screenrecord\n Color") in
|
||||||
|
*Screenshot*) show_screenshot_menu ;;
|
||||||
|
*Screenrecord*) show_screenrecord_menu ;;
|
||||||
|
*Color*) pkill hyprpicker || hyprpicker -a ;;
|
||||||
|
*) show_main_menu ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
show_screenshot_menu() {
|
||||||
|
case $(menu "Screenshot" " Region\n Window\n Display") in
|
||||||
|
*Region*) omarchy-cmd-screenshot ;;
|
||||||
|
*Window*) omarchy-cmd-screenshot window ;;
|
||||||
|
*Display*) omarchy-cmd-screenshot output ;;
|
||||||
|
*) show_capture_menu ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
show_screenrecord_menu() {
|
||||||
|
case $(menu "Screenrecord" " Region\n Region + Audio\n Display\n Display + Audio") in
|
||||||
|
*"Region + Audio"*) omarchy-cmd-screenrecord region audio ;;
|
||||||
|
*Region*) omarchy-cmd-screenrecord ;;
|
||||||
|
*"Display + Audio"*) omarchy-cmd-screenrecord output audio ;;
|
||||||
|
*Display*) omarchy-cmd-screenrecord output ;;
|
||||||
|
*) show_capture_menu ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
show_toggle_menu() {
|
||||||
|
case $(menu "Toggle" " Screensaver\n Nightlight\n Idle Lock\n Top Bar") in
|
||||||
|
*Screensaver*) omarchy-toggle-screensaver ;;
|
||||||
|
*Nightlight*) omarchy-toggle-nightlight ;;
|
||||||
|
*Idle*) omarchy-toggle-idle ;;
|
||||||
|
*Bar*) omarchy-toggle-waybar ;;
|
||||||
|
*) show_main_menu ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
show_setup_menu() {
|
show_setup_menu() {
|
||||||
local options=" Audio\n Wifi\n Bluetooth\n Power Profile\n Monitors"
|
local options=" Audio\n Wifi\n Bluetooth\n Power Profile\n Monitors"
|
||||||
[ -f ~/.config/hypr/bindings.conf ] && options="$options\n Keybindings"
|
[ -f ~/.config/hypr/bindings.conf ] && options="$options\n Keybindings"
|
||||||
[ -f ~/.config/hypr/input.conf ] && options="$options\n Input"
|
[ -f ~/.config/hypr/input.conf ] && options="$options\n Input"
|
||||||
options="$options\n Defaults\n DNS\n Security\n Config"
|
options="$options\n DNS\n Config\n Fingerprint\n Fido2"
|
||||||
|
|
||||||
case $(menu "Setup" "$options") in
|
case $(menu "Setup" "$options") in
|
||||||
*Audio*) $TERMINAL --class=Wiremix -e wiremix ;;
|
*Audio*) alacritty --class=Wiremix -e wiremix ;;
|
||||||
*Wifi*)
|
*Wifi*)
|
||||||
rfkill unblock wifi
|
rfkill unblock wifi
|
||||||
omarchy-launch-wifi
|
alacritty --class=Impala -e impala
|
||||||
;;
|
;;
|
||||||
*Bluetooth*)
|
*Bluetooth*)
|
||||||
rfkill unblock bluetooth
|
rfkill unblock bluetooth
|
||||||
blueberry
|
blueberry
|
||||||
;;
|
;;
|
||||||
*Power*) show_setup_power_menu ;;
|
*Power*) show_setup_power_menu ;;
|
||||||
*Monitors*) open_in_editor ~/.config/hypr/monitors.conf ;;
|
*Monitors*) edit_in_nvim ~/.config/hypr/monitors.conf ;;
|
||||||
*Keybindings*) open_in_editor ~/.config/hypr/bindings.conf ;;
|
*Keybindings*) edit_in_nvim ~/.config/hypr/bindings.conf ;;
|
||||||
*Input*) open_in_editor ~/.config/hypr/input.conf ;;
|
*Input*) edit_in_nvim ~/.config/hypr/input.conf ;;
|
||||||
*Defaults*) open_in_editor ~/.config/uwsm/default ;;
|
|
||||||
*DNS*) present_terminal omarchy-setup-dns ;;
|
*DNS*) present_terminal omarchy-setup-dns ;;
|
||||||
*Security*) show_setup_security_menu ;;
|
|
||||||
*Config*) show_setup_config_menu ;;
|
*Config*) show_setup_config_menu ;;
|
||||||
|
*Fingerprint*) present_terminal omarchy-setup-fingerprint ;;
|
||||||
|
*Fido2*) present_terminal omarchy-setup-fido2 ;;
|
||||||
*) show_main_menu ;;
|
*) show_main_menu ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
@@ -211,28 +188,20 @@ show_setup_power_menu() {
|
|||||||
|
|
||||||
show_setup_config_menu() {
|
show_setup_config_menu() {
|
||||||
case $(menu "Setup" " Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n Swayosd\n Walker\n Waybar\n XCompose") in
|
case $(menu "Setup" " Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n Swayosd\n Walker\n Waybar\n XCompose") in
|
||||||
*Hyprland*) open_in_editor ~/.config/hypr/hyprland.conf ;;
|
*Hyprland*) edit_in_nvim ~/.config/hypr/hyprland.conf ;;
|
||||||
*Hypridle*) open_in_editor ~/.config/hypr/hypridle.conf && omarchy-restart-hypridle ;;
|
*Hypridle*) edit_in_nvim ~/.config/hypr/hypridle.conf && omarchy-restart-hypridle ;;
|
||||||
*Hyprlock*) open_in_editor ~/.config/hypr/hyprlock.conf ;;
|
*Hyprlock*) edit_in_nvim ~/.config/hypr/hyprlock.conf ;;
|
||||||
*Hyprsunset*) open_in_editor ~/.config/hypr/hyprsunset.conf && omarchy-restart-hyprsunset ;;
|
*Hyprsunset*) edit_in_nvim ~/.config/hypr/hyprsunset.conf && omarchy-restart-hyprsunset ;;
|
||||||
*Swayosd*) open_in_editor ~/.config/swayosd/config.toml && omarchy-restart-swayosd ;;
|
*Swayosd*) edit_in_nvim ~/.config/swayosd/config.toml && omarchy-restart-swayosd ;;
|
||||||
*Walker*) open_in_editor ~/.config/walker/config.toml && omarchy-restart-walker ;;
|
*Walker*) edit_in_nvim ~/.config/walker/config.toml && omarchy-restart-walker ;;
|
||||||
*Waybar*) open_in_editor ~/.config/waybar/config.jsonc && omarchy-restart-waybar ;;
|
*Waybar*) edit_in_nvim ~/.config/waybar/config.jsonc && omarchy-restart-waybar ;;
|
||||||
*XCompose*) open_in_editor ~/.XCompose && omarchy-restart-xcompose ;;
|
*XCompose*) edit_in_nvim ~/.XCompose && omarchy-restart-xcompose ;;
|
||||||
*) show_main_menu ;;
|
*) show_main_menu ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
show_setup_security_menu() {
|
|
||||||
case $(menu "Setup" " Fingerprint\n Fido2") in
|
|
||||||
*Fingerprint*) present_terminal omarchy-setup-fingerprint ;;
|
|
||||||
*Fido2*) present_terminal omarchy-setup-fido2 ;;
|
|
||||||
*) show_setup_menu ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
show_install_menu() {
|
show_install_menu() {
|
||||||
case $(menu "Install" " Package\n AUR\n Web App\n TUI\n Service\n Style\n Development\n Editor\n Terminal\n AI\n Gaming") in
|
case $(menu "Install" " Package\n AUR\n Web App\n TUI\n Service\n Style\n Development\n Editor\n AI\n Gaming") in
|
||||||
*Package*) terminal omarchy-pkg-install ;;
|
*Package*) terminal omarchy-pkg-install ;;
|
||||||
*AUR*) terminal omarchy-pkg-aur-install ;;
|
*AUR*) terminal omarchy-pkg-aur-install ;;
|
||||||
*Web*) present_terminal omarchy-webapp-install ;;
|
*Web*) present_terminal omarchy-webapp-install ;;
|
||||||
@@ -241,7 +210,6 @@ show_install_menu() {
|
|||||||
*Style*) show_install_style_menu ;;
|
*Style*) show_install_style_menu ;;
|
||||||
*Development*) show_install_development_menu ;;
|
*Development*) show_install_development_menu ;;
|
||||||
*Editor*) show_install_editor_menu ;;
|
*Editor*) show_install_editor_menu ;;
|
||||||
*Terminal*) show_install_terminal_menu ;;
|
|
||||||
*AI*) show_install_ai_menu ;;
|
*AI*) show_install_ai_menu ;;
|
||||||
*Gaming*) show_install_gaming_menu ;;
|
*Gaming*) show_install_gaming_menu ;;
|
||||||
*) show_main_menu ;;
|
*) show_main_menu ;;
|
||||||
@@ -249,18 +217,17 @@ show_install_menu() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
show_install_service_menu() {
|
show_install_service_menu() {
|
||||||
case $(menu "Install" " Dropbox\n Tailscale\n Bitwarden\n Chromium Account") in
|
case $(menu "Install" " Dropbox\n Tailscale\n Bitwarden") in
|
||||||
*Dropbox*) present_terminal omarchy-install-dropbox ;;
|
*Dropbox*) present_terminal omarchy-install-dropbox ;;
|
||||||
*Tailscale*) present_terminal omarchy-install-tailscale ;;
|
*Tailscale*) present_terminal omarchy-install-tailscale ;;
|
||||||
*Bitwarden*) install_and_launch "Bitwarden" "bitwarden bitwarden-cli" "bitwarden" ;;
|
*Bitwarden*) install_and_launch "Bitwarden" "bitwarden bitwarden-cli" "bitwarden" ;;
|
||||||
*Chromium*) present_terminal omarchy-install-chromium-google-account ;;
|
|
||||||
*) show_install_menu ;;
|
*) show_install_menu ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
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" ;;
|
||||||
@@ -270,15 +237,6 @@ show_install_editor_menu() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
show_install_terminal_menu() {
|
|
||||||
case $(menu "Install" " Alacritty\n Ghostty\n Kitty") in
|
|
||||||
*Alacritty*) install_terminal "alacritty" ;;
|
|
||||||
*Ghostty*) install_terminal "ghostty" ;;
|
|
||||||
*Kitty*) install_terminal "kitty" ;;
|
|
||||||
*) show_install_menu ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
show_install_ai_menu() {
|
show_install_ai_menu() {
|
||||||
ollama_pkg=$(
|
ollama_pkg=$(
|
||||||
(command -v nvidia-smi &>/dev/null && echo ollama-cuda) ||
|
(command -v nvidia-smi &>/dev/null && echo ollama-cuda) ||
|
||||||
@@ -384,9 +342,8 @@ show_remove_menu() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
show_update_menu() {
|
show_update_menu() {
|
||||||
case $(menu "Update" " Omarchy\n Branch\n Config\n Extra Themes\n Process\n Hardware\n Password\n Timezone") in
|
case $(menu "Update" " Omarchy\n Config\n Themes\n Process\n Hardware\n Password\n Timezone") in
|
||||||
*Omarchy*) present_terminal omarchy-update ;;
|
*Omarchy*) present_terminal omarchy-update ;;
|
||||||
*Branch*) show_update_branch_menu ;;
|
|
||||||
*Config*) show_update_config_menu ;;
|
*Config*) show_update_config_menu ;;
|
||||||
*Themes*) present_terminal omarchy-theme-update ;;
|
*Themes*) present_terminal omarchy-theme-update ;;
|
||||||
*Process*) show_update_process_menu ;;
|
*Process*) show_update_process_menu ;;
|
||||||
@@ -397,13 +354,6 @@ show_update_menu() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
show_update_branch_menu() {
|
|
||||||
case $(menu "Branch" "master\ndev" "" "$(omarchy-version-branch)") in
|
|
||||||
*master*) present_terminal "omarchy-update-branch master" ;;
|
|
||||||
*dev*) present_terminal "omarchy-update-branch dev" ;;
|
|
||||||
*) show_update_menu ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
show_update_process_menu() {
|
show_update_process_menu() {
|
||||||
case $(menu "Restart" " Hypridle\n Hyprsunset\n Swayosd\n Walker\n Waybar") in
|
case $(menu "Restart" " Hypridle\n Hyprsunset\n Swayosd\n Walker\n Waybar") in
|
||||||
*Hypridle*) omarchy-restart-hypridle ;;
|
*Hypridle*) omarchy-restart-hypridle ;;
|
||||||
@@ -430,8 +380,7 @@ show_update_config_menu() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
show_update_hardware_menu() {
|
show_update_hardware_menu() {
|
||||||
case $(menu "Restart" " Audio\n Wi-Fi\n Bluetooth") in
|
case $(menu "Restart" " Wi-Fi\n Bluetooth") in
|
||||||
*Audio*) present_terminal omarchy-restart-pipewire ;;
|
|
||||||
*Wi-Fi*) present_terminal omarchy-restart-wifi ;;
|
*Wi-Fi*) present_terminal omarchy-restart-wifi ;;
|
||||||
*Bluetooth*) present_terminal omarchy-restart-bluetooth ;;
|
*Bluetooth*) present_terminal omarchy-restart-bluetooth ;;
|
||||||
*) show_update_menu ;;
|
*) show_update_menu ;;
|
||||||
@@ -459,25 +408,25 @@ show_system_menu() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
show_main_menu() {
|
show_main_menu() {
|
||||||
go_to_menu "$(menu "Go" " Apps\n Learn\n Trigger\n Style\n Setup\n Install\n Remove\n Update\n About\n System")"
|
go_to_menu "$(menu "Go" " Apps\n Learn\n Capture\n Toggle\n Style\n Setup\n Install\n Remove\n Update\n About\n System")"
|
||||||
}
|
}
|
||||||
|
|
||||||
go_to_menu() {
|
go_to_menu() {
|
||||||
case "${1,,}" in
|
case "${1,,}" in
|
||||||
*apps*) walker -p "Launch…" ;;
|
*apps*) walker -p "Launch…" ;;
|
||||||
*learn*) show_learn_menu ;;
|
*learn*) show_learn_menu ;;
|
||||||
*trigger*) show_trigger_menu ;;
|
|
||||||
*share*) show_share_menu ;;
|
|
||||||
*style*) show_style_menu ;;
|
*style*) show_style_menu ;;
|
||||||
*theme*) show_theme_menu ;;
|
*theme*) show_theme_menu ;;
|
||||||
|
*capture*) show_capture_menu ;;
|
||||||
*screenshot*) show_screenshot_menu ;;
|
*screenshot*) show_screenshot_menu ;;
|
||||||
*screenrecord*) show_screenrecord_menu ;;
|
*screenrecord*) show_screenrecord_menu ;;
|
||||||
|
*toggle*) show_toggle_menu ;;
|
||||||
*setup*) show_setup_menu ;;
|
*setup*) show_setup_menu ;;
|
||||||
*power*) show_setup_power_menu ;;
|
*power*) show_setup_power_menu ;;
|
||||||
*install*) show_install_menu ;;
|
*install*) show_install_menu ;;
|
||||||
*remove*) show_remove_menu ;;
|
*remove*) show_remove_menu ;;
|
||||||
*update*) show_update_menu ;;
|
*update*) show_update_menu ;;
|
||||||
*about*) omarchy-launch-about ;;
|
*about*) alacritty --class Omarchy -o font.size=9 -e bash -c 'fastfetch; read -n 1 -s' ;;
|
||||||
*system*) show_system_menu ;;
|
*system*) show_system_menu ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
if (($# == 0)); then
|
|
||||||
echo "Usage: omarchy-notification-dismiss <summary>"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Find the first notification whose 'summary' matches the regex in $1
|
|
||||||
notification_id=$(makoctl list | grep -F "$1" | head -n1 | sed -E 's/^Notification ([0-9]+):.*/\1/')
|
|
||||||
|
|
||||||
if [[ -n $notification_id ]]; then
|
|
||||||
makoctl dismiss -n $notification_id
|
|
||||||
fi
|
|
||||||
@@ -2,15 +2,13 @@
|
|||||||
|
|
||||||
fzf_args=(
|
fzf_args=(
|
||||||
--multi
|
--multi
|
||||||
--preview 'yay -Siia {1}'
|
--preview 'yay -Sii {1}'
|
||||||
--preview-label='alt-p: toggle description, alt-b/B: toggle PKGBUILD, alt-j/k: scroll, tab: multi-select, F11: maximize'
|
--preview-label='alt-p: toggle description, alt-j/k: scroll, tab: multi-select, F11: maximize'
|
||||||
--preview-label-pos='bottom'
|
--preview-label-pos='bottom'
|
||||||
--preview-window 'down:65%:wrap'
|
--preview-window 'down:65%:wrap'
|
||||||
--bind 'alt-p:toggle-preview'
|
--bind 'alt-p:toggle-preview'
|
||||||
--bind 'alt-d:preview-half-page-down,alt-u:preview-half-page-up'
|
--bind 'alt-d:preview-half-page-down,alt-u:preview-half-page-up'
|
||||||
--bind 'alt-k:preview-up,alt-j:preview-down'
|
--bind 'alt-k:preview-up,alt-j:preview-down'
|
||||||
--bind 'alt-b:change-preview:yay -Gpa {1} | tail -n +5'
|
|
||||||
--bind 'alt-B:change-preview:yay -Siia {1}'
|
|
||||||
--color 'pointer:green,marker:green'
|
--color 'pointer:green,marker:green'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
echo -e "Unblocking bluetooth...\n"
|
|
||||||
rfkill unblock bluetooth
|
rfkill unblock bluetooth
|
||||||
rfkill list bluetooth
|
rfkill list bluetooth
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
echo -e "Restarting pirewire audio service...\n"
|
|
||||||
systemctl --user restart pipewire.service
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
pkill walker
|
pkill walker
|
||||||
# FIXME: Just deal with the memory leak for now.
|
# FIXME: Reenable the walker service once the memory leak has been fixed
|
||||||
# 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
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
echo -e "Unblocking wifi...\n"
|
|
||||||
rfkill unblock wifi
|
rfkill unblock wifi
|
||||||
rfkill list wifi
|
rfkill list wifi
|
||||||
|
|||||||
@@ -20,19 +20,52 @@ fi
|
|||||||
# Update theme symlinks
|
# Update theme symlinks
|
||||||
ln -nsf "$THEME_PATH" "$CURRENT_THEME_DIR"
|
ln -nsf "$THEME_PATH" "$CURRENT_THEME_DIR"
|
||||||
|
|
||||||
# Change background with theme
|
# Change gnome modes
|
||||||
omarchy-theme-bg-next
|
if [[ -f ~/.config/omarchy/current/theme/light.mode ]]; then
|
||||||
|
gsettings set org.gnome.desktop.interface color-scheme "prefer-light"
|
||||||
|
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita"
|
||||||
|
else
|
||||||
|
gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
|
||||||
|
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Change gnome icon theme color
|
||||||
|
if [[ -f ~/.config/omarchy/current/theme/icons.theme ]]; then
|
||||||
|
gsettings set org.gnome.desktop.interface icon-theme "$(<~/.config/omarchy/current/theme/icons.theme)"
|
||||||
|
else
|
||||||
|
gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Change browser colors via policies
|
||||||
|
if omarchy-cmd-present chromium || omarchy-cmd-present brave; then
|
||||||
|
if [[ -f ~/.config/omarchy/current/theme/chromium.theme ]]; then
|
||||||
|
rgb=$(<~/.config/omarchy/current/theme/chromium.theme)
|
||||||
|
THEME_HEX_COLOR=$(printf '#%02x%02x%02x' ${rgb//,/ })
|
||||||
|
else
|
||||||
|
# Use a default, neutral grey if theme doesn't have a color
|
||||||
|
THEME_HEX_COLOR="#1c2027"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if omarchy-cmd-present chromium; then
|
||||||
|
echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\"}" | tee "/etc/chromium/policies/managed/color.json" >/dev/null
|
||||||
|
chromium --refresh-platform-policy --no-startup-window
|
||||||
|
fi
|
||||||
|
|
||||||
|
if omarchy-cmd-present brave; then
|
||||||
|
echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\"}" | tee "/etc/brave/policies/managed/color.json" >/dev/null
|
||||||
|
brave --refresh-platform-policy --no-startup-window
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Trigger alacritty config reload
|
||||||
|
touch "$HOME/.config/alacritty/alacritty.toml"
|
||||||
|
|
||||||
# Restart components to apply new theme
|
# Restart components to apply new theme
|
||||||
|
pkill -SIGUSR2 btop
|
||||||
omarchy-restart-waybar
|
omarchy-restart-waybar
|
||||||
omarchy-restart-swayosd
|
omarchy-restart-swayosd
|
||||||
hyprctl reload
|
|
||||||
pkill -SIGUSR2 btop
|
|
||||||
makoctl reload
|
makoctl reload
|
||||||
|
hyprctl reload
|
||||||
|
|
||||||
# Change gnome, browser, vscode themes
|
# Set new background
|
||||||
omarchy-theme-set-terminal
|
omarchy-theme-bg-next
|
||||||
omarchy-theme-set-gnome
|
|
||||||
omarchy-theme-set-eza
|
|
||||||
omarchy-theme-set-browser
|
|
||||||
omarchy-theme-set-vscode
|
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
CHROMIUM_THEME=~/.config/omarchy/current/theme/chromium.theme
|
|
||||||
|
|
||||||
if omarchy-cmd-present chromium || omarchy-cmd-present brave; then
|
|
||||||
if [[ -f $CHROMIUM_THEME ]]; then
|
|
||||||
rgb=$(<$CHROMIUM_THEME)
|
|
||||||
THEME_HEX_COLOR=$(printf '#%02x%02x%02x' ${rgb//,/ })
|
|
||||||
else
|
|
||||||
# Use a default, neutral grey if theme doesn't have a color
|
|
||||||
THEME_HEX_COLOR="#1c2027"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if omarchy-cmd-present chromium; then
|
|
||||||
echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\"}" | tee "/etc/chromium/policies/managed/color.json" >/dev/null
|
|
||||||
chromium --refresh-platform-policy --no-startup-window
|
|
||||||
fi
|
|
||||||
|
|
||||||
if omarchy-cmd-present brave; then
|
|
||||||
echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\"}" | tee "/etc/brave/policies/managed/color.json" >/dev/null
|
|
||||||
brave --refresh-platform-policy --no-startup-window
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
if [ -f ~/.config/omarchy/current/theme/eza.yml ]; then
|
|
||||||
ln -snf ~/.config/omarchy/current/theme/eza.yml ~/.config/eza/theme.yml
|
|
||||||
else
|
|
||||||
rm -f ~/.config/eza/theme.yml
|
|
||||||
fi
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Change gnome modes
|
|
||||||
if [[ -f ~/.config/omarchy/current/theme/light.mode ]]; then
|
|
||||||
gsettings set org.gnome.desktop.interface color-scheme "prefer-light"
|
|
||||||
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita"
|
|
||||||
else
|
|
||||||
gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
|
|
||||||
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Change gnome icon theme color
|
|
||||||
GNOME_ICONS_THEME=~/.config/omarchy/current/theme/icons.theme
|
|
||||||
if [[ -f $GNOME_ICONS_THEME ]]; then
|
|
||||||
gsettings set org.gnome.desktop.interface icon-theme "$(<$GNOME_ICONS_THEME)"
|
|
||||||
else
|
|
||||||
gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue"
|
|
||||||
fi
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
case "$TERMINAL" in
|
|
||||||
"alacritty") touch ~/.config/alacritty/alacritty.toml ;;
|
|
||||||
"kitty") killall -SIGUSR1 kitty ;;
|
|
||||||
"ghostty") killall -SIGUSR2 ghostty ;;
|
|
||||||
esac
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Note: We cannot use `jq` to update settings.json because it’s JSONC (allows comments),
|
|
||||||
# which jq doesn’t support.
|
|
||||||
|
|
||||||
VS_CODE_THEME="$HOME/.config/omarchy/current/theme/vscode.json"
|
|
||||||
VS_CODE_SETTINGS="$HOME/.config/Code/User/settings.json"
|
|
||||||
VS_CODE_SKIP_FLAG="$HOME/.local/state/omarchy/toggles/skip-vscode-theme-changes"
|
|
||||||
|
|
||||||
if omarchy-cmd-present code && [[ ! -f "$VS_CODE_SKIP_FLAG" ]]; then
|
|
||||||
if [[ -f "$VS_CODE_THEME" ]]; then
|
|
||||||
theme_name=$(jq -r '.name' "$VS_CODE_THEME")
|
|
||||||
extension=$(jq -r '.extension' "$VS_CODE_THEME")
|
|
||||||
|
|
||||||
# Install VS Code theme extension
|
|
||||||
if [[ -n "$extension" ]] && ! code --list-extensions | grep -Fxq "$extension"; then
|
|
||||||
notify-send " Installing VS Code theme for $theme_name"
|
|
||||||
code --install-extension "$extension" >/dev/null
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Create config file if there isn't already one
|
|
||||||
mkdir -p "$(dirname "$VS_CODE_SETTINGS")"
|
|
||||||
if [[ ! -f "$VS_CODE_SETTINGS" ]]; then
|
|
||||||
printf '{\n}\n' > "$VS_CODE_SETTINGS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Create a `workbench.colorTheme` entry in settings.
|
|
||||||
if ! grep -q '"workbench.colorTheme"' "$VS_CODE_SETTINGS"; then
|
|
||||||
# Insert `"workbench.colorTheme": "",` immediately after the first `{`
|
|
||||||
# Use sed's first-match range (0,/{/) to only replace the first `{`
|
|
||||||
sed -i --follow-symlinks -E '0,/\{/{s/\{/{\
|
|
||||||
"workbench.colorTheme": "",/}' "$VS_CODE_SETTINGS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Update theme
|
|
||||||
sed -i --follow-symlinks -E \
|
|
||||||
"s/(\"workbench.colorTheme\"[[:space:]]*:[[:space:]]*\")[^\"]*(\")/\1$theme_name\2/" \
|
|
||||||
"$VS_CODE_SETTINGS"
|
|
||||||
else
|
|
||||||
# Remove theme from settings.json when the theme doesn't have vscode support
|
|
||||||
if [[ -f "$VS_CODE_SETTINGS" ]]; then
|
|
||||||
sed -i --follow-symlinks -E '/"workbench\.colorTheme"[[:space:]]*:[^,}]*,?/d' "$VS_CODE_SETTINGS"
|
|
||||||
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
@@ -43,7 +43,7 @@ cat >"$DESKTOP_FILE" <<EOF
|
|||||||
Version=1.0
|
Version=1.0
|
||||||
Name=$APP_NAME
|
Name=$APP_NAME
|
||||||
Comment=$APP_NAME
|
Comment=$APP_NAME
|
||||||
Exec=$TERMINAL --class $APP_CLASS -e $APP_EXEC
|
Exec=alacritty --class $APP_CLASS -e $APP_EXEC
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
Icon=$ICON_PATH
|
Icon=$ICON_PATH
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ DESKTOP_DIR="$HOME/.local/share/applications/"
|
|||||||
if [ "$#" -eq 0 ]; then
|
if [ "$#" -eq 0 ]; then
|
||||||
# Find all TUIs
|
# Find all TUIs
|
||||||
while IFS= read -r -d '' file; do
|
while IFS= read -r -d '' file; do
|
||||||
if grep -q '^Exec=.*$TERMINAL.*-e' "$file"; then
|
if grep -q '^Exec=.*alacritty.*-e' "$file"; then
|
||||||
TUIS+=("$(basename "${file%.desktop}")")
|
TUIS+=("$(basename "${file%.desktop}")")
|
||||||
fi
|
fi
|
||||||
done < <(find "$DESKTOP_DIR" -name '*.desktop' -print0)
|
done < <(find "$DESKTOP_DIR" -name '*.desktop' -print0)
|
||||||
|
|||||||
@@ -4,4 +4,7 @@ set -e
|
|||||||
|
|
||||||
omarchy-snapshot create || [ $? -eq 127 ]
|
omarchy-snapshot create || [ $? -eq 127 ]
|
||||||
omarchy-update-git
|
omarchy-update-git
|
||||||
omarchy-update-perform
|
omarchy-migrate
|
||||||
|
omarchy-update-system-pkgs
|
||||||
|
omarchy-update-restart
|
||||||
|
omarchy-update-available-reset
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
if (($# == 0)); then
|
|
||||||
echo "Usage: omarchy-verion-branch-set [master|dev]"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
branch="$1"
|
|
||||||
|
|
||||||
# Snapshot before switching branch
|
|
||||||
omarchy-snapshot create || [ $? -eq 127 ]
|
|
||||||
|
|
||||||
if ! git -C "$OMARCHY_PATH" diff --quiet || ! git -C "$OMARCHY_PATH" diff --cached --quiet; then
|
|
||||||
stashed=true
|
|
||||||
git -C "$OMARCHY_PATH" stash push -u -m "Autostash before switching to $branch"
|
|
||||||
else
|
|
||||||
stashed=false
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Switch branches
|
|
||||||
git -C "$OMARCHY_PATH" switch "$branch"
|
|
||||||
|
|
||||||
# Reapply stash if we made one
|
|
||||||
if [[ $stashed == true ]]; then
|
|
||||||
if ! git -C "$OMARCHY_PATH" stash pop; then
|
|
||||||
echo "⚠️ Conflicts when applying stash — stash kept"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Update the system from the new branch
|
|
||||||
omarchy-update-perform
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
omarchy-update-available-reset
|
|
||||||
omarchy-update-system-pkgs
|
|
||||||
omarchy-migrate
|
|
||||||
omarchy-update-restart
|
|
||||||
@@ -24,9 +24,7 @@ if [[ -z "$APP_NAME" || -z "$APP_URL" || -z "$ICON_REF" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Refer to local icon or fetch remotely from URL
|
# Refer to local icon or fetch remotely from URL
|
||||||
ICON_DIR="$HOME/.local/share/applications/icons"
|
|
||||||
if [[ $ICON_REF =~ ^https?:// ]]; then
|
if [[ $ICON_REF =~ ^https?:// ]]; then
|
||||||
ICON_PATH="$ICON_DIR/$APP_NAME.png"
|
|
||||||
if curl -sL -o "$ICON_PATH" "$ICON_REF"; then
|
if curl -sL -o "$ICON_PATH" "$ICON_REF"; then
|
||||||
ICON_PATH="$ICON_DIR/$APP_NAME.png"
|
ICON_PATH="$ICON_DIR/$APP_NAME.png"
|
||||||
else
|
else
|
||||||
@@ -34,7 +32,7 @@ if [[ $ICON_REF =~ ^https?:// ]]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
ICON_PATH="$ICON_DIR/$ICON_REF"
|
ICON_PATH="$HOME/.local/share/applications/icons/$ICON_REF"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Use custom exec if provided, otherwise default behavior
|
# Use custom exec if provided, otherwise default behavior
|
||||||
|
|||||||
2
boot.sh
2
boot.sh
@@ -29,7 +29,7 @@ git clone "https://github.com/${OMARCHY_REPO}.git" ~/.local/share/omarchy >/dev/
|
|||||||
# Use custom branch if instructed, otherwise default to master
|
# Use custom branch if instructed, otherwise default to master
|
||||||
OMARCHY_REF="${OMARCHY_REF:-master}"
|
OMARCHY_REF="${OMARCHY_REF:-master}"
|
||||||
if [[ $OMARCHY_REF != "master" ]]; then
|
if [[ $OMARCHY_REF != "master" ]]; then
|
||||||
echo -e "\e[32mUsing branch: $OMARCHY_REF\e[0m"
|
echo -e "\eUsing branch: $OMARCHY_REF"
|
||||||
cd ~/.local/share/omarchy
|
cd ~/.local/share/omarchy
|
||||||
git fetch origin "${OMARCHY_REF}" && git checkout "${OMARCHY_REF}"
|
git fetch origin "${OMARCHY_REF}" && git checkout "${OMARCHY_REF}"
|
||||||
cd -
|
cd -
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
--ozone-platform=wayland
|
--ozone-platform=wayland
|
||||||
--ozone-platform-hint=wayland
|
--ozone-platform-hint=wayland
|
||||||
--enable-features=TouchpadOverscrollHistoryNavigation
|
--enable-features=TouchpadOverscrollHistoryNavigation
|
||||||
--load-extension=~/.local/share/omarchy/default/chromium/extensions/copy-url
|
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
# Dynamic theme colors
|
|
||||||
config-file = ?"~/.config/omarchy/current/theme/ghostty.conf"
|
|
||||||
|
|
||||||
# Font
|
|
||||||
font-family = "CaskaydiaMono Nerd Font"
|
|
||||||
font-style = Regular
|
|
||||||
font-size = 9
|
|
||||||
|
|
||||||
# Window
|
|
||||||
window-padding-x = 14
|
|
||||||
window-padding-y = 14
|
|
||||||
confirm-close-surface=false
|
|
||||||
resize-overlay = never
|
|
||||||
|
|
||||||
# Cursor styling
|
|
||||||
cursor-style = "block"
|
|
||||||
cursor-style-blink = false
|
|
||||||
shell-integration-features = no-cursor
|
|
||||||
|
|
||||||
# Keyboard bindings
|
|
||||||
keybind = f11=toggle_fullscreen
|
|
||||||
@@ -1,17 +1,17 @@
|
|||||||
# Application bindings
|
# Application bindings
|
||||||
$terminal = uwsm app -- $TERMINAL
|
$terminal = uwsm app -- alacritty
|
||||||
$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, uwsm app -- spotify
|
||||||
bindd = SUPER, N, Editor, exec, omarchy-launch-editor
|
bindd = SUPER, N, Neovim, exec, $terminal -e nvim
|
||||||
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, 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, uwsm app -- obsidian -disable-gpu
|
||||||
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 hyperland treat it as comments
|
# If your web app url contains #, type it as ## to prevent hyperland treat it as comments
|
||||||
@@ -19,9 +19,9 @@ bindd = SUPER, A, ChatGPT, exec, omarchy-launch-webapp "https://chatgpt.com"
|
|||||||
bindd = SUPER SHIFT, A, Grok, exec, omarchy-launch-webapp "https://grok.com"
|
bindd = SUPER SHIFT, A, Grok, exec, omarchy-launch-webapp "https://grok.com"
|
||||||
bindd = SUPER, C, Calendar, exec, omarchy-launch-webapp "https://app.hey.com/calendar/weeks/"
|
bindd = SUPER, 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-webapp "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-webapp "https://web.whatsapp.com/"
|
||||||
bindd = SUPER ALT, G, Google Messages, exec, omarchy-launch-or-focus-webapp "Google Messages" "https://messages.google.com/web/conversations"
|
bindd = SUPER ALT, G, Google Messages, exec, omarchy-launch-webapp "https://messages.google.com/web/conversations"
|
||||||
bindd = SUPER, X, X, exec, omarchy-launch-webapp "https://x.com/"
|
bindd = SUPER, X, X, exec, omarchy-launch-webapp "https://x.com/"
|
||||||
bindd = SUPER SHIFT, X, X Post, exec, omarchy-launch-webapp "https://x.com/compose/post"
|
bindd = SUPER SHIFT, X, X Post, exec, omarchy-launch-webapp "https://x.com/compose/post"
|
||||||
|
|
||||||
|
|||||||
@@ -1,2 +1,3 @@
|
|||||||
# Extra env variables
|
# Extra env variables
|
||||||
|
# Note: You must relaunch Hyprland after changing envs (use Super+Esc, then Relaunch)
|
||||||
# env = MY_GLOBAL_ENV,setting
|
# env = MY_GLOBAL_ENV,setting
|
||||||
|
|||||||
@@ -27,9 +27,8 @@ input {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Scroll nicely in the terminal
|
# Scroll faster in the terminal
|
||||||
windowrule = scrolltouchpad 1.5, class:(Alacritty|kitty)
|
windowrule = scrolltouchpad 1.5, class:Alacritty
|
||||||
windowrule = scrolltouchpad 0.2, class:com.mitchellh.ghostty
|
|
||||||
|
|
||||||
# Enable touchpad gestures for changing workspaces
|
# Enable touchpad gestures for changing workspaces
|
||||||
# See https://wiki.hyprland.org/Configuring/Gestures/
|
# See https://wiki.hyprland.org/Configuring/Gestures/
|
||||||
|
|||||||
@@ -1,30 +0,0 @@
|
|||||||
include ~/.config/omarchy/current/theme/kitty.conf
|
|
||||||
|
|
||||||
# Font
|
|
||||||
font_family CaskaydiaMono Nerd Font
|
|
||||||
bold_italic_font auto
|
|
||||||
font_size 9.0
|
|
||||||
|
|
||||||
# Window
|
|
||||||
window_padding_width 14
|
|
||||||
window_padding_height 14
|
|
||||||
hide_window_decorations yes
|
|
||||||
show_window_resize_notification no
|
|
||||||
confirm_os_window_close 0
|
|
||||||
|
|
||||||
# Keybindings
|
|
||||||
map F11 toggle_fullscreen
|
|
||||||
|
|
||||||
# Allow remote access
|
|
||||||
single_instance yes
|
|
||||||
allow_remote_control yes
|
|
||||||
|
|
||||||
# Aesthetics
|
|
||||||
cursor_shape block
|
|
||||||
enable_audio_bell no
|
|
||||||
|
|
||||||
# Minimal Tab bar styling
|
|
||||||
tab_bar_edge bottom
|
|
||||||
tab_bar_style powerline
|
|
||||||
tab_powerline_style slanted
|
|
||||||
tab_title_template {title}{' :{}:'.format(num_windows) if num_windows > 1 else ''}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
# Changes require a relaunch of Hyprland to take effect.
|
|
||||||
|
|
||||||
export TERMINAL=alacritty
|
|
||||||
export EDITOR=nvim
|
|
||||||
@@ -1,11 +1,7 @@
|
|||||||
# Changes require a relaunch of Hyprland to take effect.
|
|
||||||
|
|
||||||
# Ensure Omarchy bins are in the path
|
|
||||||
export OMARCHY_PATH=$HOME/.local/share/omarchy
|
export OMARCHY_PATH=$HOME/.local/share/omarchy
|
||||||
export PATH=$OMARCHY_PATH/bin/:$PATH
|
export PATH=$OMARCHY_PATH/bin/:$PATH
|
||||||
|
export TERMINAL=alacritty
|
||||||
|
|
||||||
# Set default terminal and editor
|
if command -v mise &> /dev/null; then
|
||||||
source ~/.config/uwsm/default
|
eval "$(mise activate bash)"
|
||||||
|
fi
|
||||||
# Activate mise if present on the system
|
|
||||||
omarchy-cmd-present mise && eval "$(mise activate bash)"
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
"cpu": {
|
"cpu": {
|
||||||
"interval": 5,
|
"interval": 5,
|
||||||
"format": "",
|
"format": "",
|
||||||
"on-click": "$TERMINAL -e btop"
|
"on-click": "alacritty -e btop"
|
||||||
},
|
},
|
||||||
"clock": {
|
"clock": {
|
||||||
"format": "{:L%A %H:%M}",
|
"format": "{:L%A %H:%M}",
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
"tooltip-format-disconnected": "Disconnected",
|
"tooltip-format-disconnected": "Disconnected",
|
||||||
"interval": 3,
|
"interval": 3,
|
||||||
"spacing": 1,
|
"spacing": 1,
|
||||||
"on-click": "omarchy-launch-wifi"
|
"on-click": "alacritty --class=Impala -e impala"
|
||||||
},
|
},
|
||||||
"battery": {
|
"battery": {
|
||||||
"format": "{capacity}% {icon}",
|
"format": "{capacity}% {icon}",
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
},
|
},
|
||||||
"pulseaudio": {
|
"pulseaudio": {
|
||||||
"format": "{icon}",
|
"format": "{icon}",
|
||||||
"on-click": "$TERMINAL --class=Wiremix -e wiremix",
|
"on-click": "alacritty --class=Wiremix -e wiremix",
|
||||||
"on-click-right": "pamixer -t",
|
"on-click-right": "pamixer -t",
|
||||||
"tooltip-format": "Playing at {volume}%",
|
"tooltip-format": "Playing at {volume}%",
|
||||||
"scroll-step": 5,
|
"scroll-step": 5,
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
# Editor used by CLI
|
# Editor used by CLI
|
||||||
|
export EDITOR="nvim"
|
||||||
export SUDO_EDITOR="$EDITOR"
|
export SUDO_EDITOR="$EDITOR"
|
||||||
export BAT_THEME=ansi
|
export BAT_THEME=ansi
|
||||||
|
|||||||
@@ -6,3 +6,9 @@ source ~/.local/share/omarchy/default/bash/rc
|
|||||||
#
|
#
|
||||||
# Make an alias for invoking commands you use constantly
|
# Make an alias for invoking commands you use constantly
|
||||||
# alias p='python'
|
# alias p='python'
|
||||||
|
#
|
||||||
|
# Use VSCode instead of neovim as your default editor
|
||||||
|
# export EDITOR="code"
|
||||||
|
#
|
||||||
|
# Set a custom prompt with the directory revealed (alternatively use https://starship.rs)
|
||||||
|
# PS1="\W \[\e]0;\w\a\]$PS1"
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
chrome.commands.onCommand.addListener((command) => {
|
|
||||||
if (command === 'copy-url') {
|
|
||||||
chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => {
|
|
||||||
const currentTab = tabs[0];
|
|
||||||
|
|
||||||
chrome.scripting.executeScript({
|
|
||||||
target: { tabId: currentTab.id },
|
|
||||||
func: () => {
|
|
||||||
navigator.clipboard.writeText(window.location.href);
|
|
||||||
}
|
|
||||||
}).then(() => {
|
|
||||||
chrome.notifications.create({
|
|
||||||
type: 'basic',
|
|
||||||
iconUrl: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==',
|
|
||||||
title: ' URL copied to clipboard',
|
|
||||||
message: ''
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../../../icon.png
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
"manifest_version": 4,
|
|
||||||
"name": "Copy URL",
|
|
||||||
"version": "1.0",
|
|
||||||
"description": "Copy current URL to clipboard, this extension is installed by Omarchy",
|
|
||||||
"permissions": ["activeTab", "scripting", "notifications"],
|
|
||||||
"icons": {
|
|
||||||
"16": "icon.png",
|
|
||||||
"48": "icon.png",
|
|
||||||
"128": "icon.png"
|
|
||||||
},
|
|
||||||
"commands": {
|
|
||||||
"copy-url": {
|
|
||||||
"suggested_key": {"default": "Alt+Shift+L"},
|
|
||||||
"description": "Copy URL"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"background": {"service_worker": "background.js"}
|
|
||||||
}
|
|
||||||
@@ -4,11 +4,9 @@ source = ~/.local/share/omarchy/default/hypr/apps/bitwarden.conf
|
|||||||
source = ~/.local/share/omarchy/default/hypr/apps/browser.conf
|
source = ~/.local/share/omarchy/default/hypr/apps/browser.conf
|
||||||
source = ~/.local/share/omarchy/default/hypr/apps/hyprshot.conf
|
source = ~/.local/share/omarchy/default/hypr/apps/hyprshot.conf
|
||||||
source = ~/.local/share/omarchy/default/hypr/apps/jetbrains.conf
|
source = ~/.local/share/omarchy/default/hypr/apps/jetbrains.conf
|
||||||
source = ~/.local/share/omarchy/default/hypr/apps/localsend.conf
|
|
||||||
source = ~/.local/share/omarchy/default/hypr/apps/pip.conf
|
source = ~/.local/share/omarchy/default/hypr/apps/pip.conf
|
||||||
source = ~/.local/share/omarchy/default/hypr/apps/qemu.conf
|
source = ~/.local/share/omarchy/default/hypr/apps/qemu.conf
|
||||||
source = ~/.local/share/omarchy/default/hypr/apps/retroarch.conf
|
source = ~/.local/share/omarchy/default/hypr/apps/retroarch.conf
|
||||||
source = ~/.local/share/omarchy/default/hypr/apps/steam.conf
|
source = ~/.local/share/omarchy/default/hypr/apps/steam.conf
|
||||||
source = ~/.local/share/omarchy/default/hypr/apps/system.conf
|
source = ~/.local/share/omarchy/default/hypr/apps/system.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
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
# Float LocalSend and fzf file picker
|
|
||||||
windowrule = float, class:(Share|localsend)
|
|
||||||
windowrule = center, class:(Share|localsend)
|
|
||||||
@@ -4,7 +4,7 @@ windowrule = center, tag:floating-window
|
|||||||
windowrule = size 800 600, tag:floating-window
|
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 Folder|Save.*Files?|Save.*As|Save|All Files)
|
||||||
|
|
||||||
# Fullscreen screensaver
|
# Fullscreen screensaver
|
||||||
windowrule = fullscreen, class:Screensaver
|
windowrule = fullscreen, class:Screensaver
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
# Define terminal tag to style them uniformly
|
|
||||||
windowrule = tag +terminal, class:(Alacritty|kitty|com.mitchellh.ghostty)
|
|
||||||
@@ -4,7 +4,6 @@ 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 = /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
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ bindd = SUPER, J, Toggle split, togglesplit, # dwindle
|
|||||||
bindd = SUPER, P, Pseudo window, pseudo, # dwindle
|
bindd = SUPER, P, Pseudo window, pseudo, # dwindle
|
||||||
bindd = SUPER, 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
|
|
||||||
|
|
||||||
# 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
|
||||||
@@ -42,7 +41,6 @@ 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
|
|
||||||
|
|
||||||
# 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
|
||||||
|
|||||||
@@ -42,6 +42,3 @@ bindd = CTRL ALT SHIFT, PRINT, Screen record display with audio, exec, omarchy-c
|
|||||||
|
|
||||||
# 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
|
|
||||||
bindd = CTRL SUPER, S, Share, exec, omarchy-menu share
|
|
||||||
|
|||||||
@@ -87,8 +87,3 @@ misc {
|
|||||||
disable_splash_rendering = true
|
disable_splash_rendering = true
|
||||||
focus_on_activate = true
|
focus_on_activate = true
|
||||||
}
|
}
|
||||||
|
|
||||||
# https://wiki.hypr.land/Configuring/Variables/#cursor
|
|
||||||
cursor {
|
|
||||||
hide_on_key_press = true
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -16,7 +16,4 @@ invisible=false
|
|||||||
default-timeout=0
|
default-timeout=0
|
||||||
|
|
||||||
[summary~="Setup Wi-Fi"]
|
[summary~="Setup Wi-Fi"]
|
||||||
on-button-left=exec sh -c 'omarchy-notification-dismiss "Setup Wi-Fi"; omarchy-launch-wifi'
|
on-button-left=exec sh -c 'alacritty --class=Impala -e impala & makoctl dismiss -n "$id"'
|
||||||
|
|
||||||
[summary~="Update System"]
|
|
||||||
on-button-left=exec sh -c 'omarchy-notification-dismiss "Update System"; omarchy-launch-floating-terminal-with-presentation omarchy-update'
|
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
OMARCHY_DESCRIPTION="Firewall Configuration"
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
# Check if UFW is enabled
|
|
||||||
sudo ufw status | grep -q "Status: active" || add_error "UFW firewall not active"
|
|
||||||
|
|
||||||
# Check if UFW service is enabled
|
|
||||||
systemctl is-enabled ufw &>/dev/null || add_error "UFW service not enabled"
|
|
||||||
|
|
||||||
# Check default policies - they're on one line as "Default: deny (incoming), allow (outgoing), deny (routed)"
|
|
||||||
sudo ufw status verbose | grep -q "Default:.*deny (incoming)" || add_error "UFW default incoming policy not set to deny"
|
|
||||||
sudo ufw status verbose | grep -q "Default:.*allow (outgoing)" || add_error "UFW default outgoing policy not set to allow"
|
|
||||||
|
|
||||||
# Check specific rules are present
|
|
||||||
sudo ufw status numbered | grep -q "53317/udp" || add_error "LocalSend UDP port 53317 not allowed"
|
|
||||||
sudo ufw status numbered | grep -q "53317/tcp" || add_error "LocalSend TCP port 53317 not allowed"
|
|
||||||
sudo ufw status numbered | grep -q "22/tcp" || add_error "SSH port 22 not allowed"
|
|
||||||
|
|
||||||
# Check Docker DNS rule
|
|
||||||
sudo ufw status numbered | grep -q "allow-docker-dns" || add_error "Docker DNS rule not configured"
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
OMARCHY_DESCRIPTION="GNOME Theme Settings"
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
gsettings get org.gnome.desktop.interface gtk-theme &>/dev/null || add_error "Cannot access GTK theme setting"
|
|
||||||
gsettings get org.gnome.desktop.interface color-scheme &>/dev/null || add_error "Cannot access color scheme setting"
|
|
||||||
gsettings get org.gnome.desktop.interface icon-theme &>/dev/null || add_error "Cannot access icon theme setting"
|
|
||||||
|
|
||||||
[[ -d /usr/share/icons ]] || add_error "Icon themes directory missing"
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
OMARCHY_DESCRIPTION="Power Profile & Battery Settings"
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
if ls /sys/class/power_supply/BAT* &>/dev/null; then
|
|
||||||
current_profile=$(powerprofilesctl get 2>/dev/null)
|
|
||||||
[[ "$current_profile" == "balanced" ]] || add_error "Power profile not set to balanced for battery device"
|
|
||||||
|
|
||||||
systemctl --user is-enabled omarchy-battery-monitor.timer &>/dev/null || add_error "Battery monitor timer not enabled"
|
|
||||||
else
|
|
||||||
current_profile=$(powerprofilesctl get 2>/dev/null)
|
|
||||||
[[ "$current_profile" == "performance" ]] || add_error "Power profile not set to performance for AC device"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
@@ -9,8 +9,8 @@ run_logged $OMARCHY_INSTALL/config/increase-lockout-limit.sh
|
|||||||
run_logged $OMARCHY_INSTALL/config/ssh-flakiness.sh
|
run_logged $OMARCHY_INSTALL/config/ssh-flakiness.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/detect-keyboard-layout.sh
|
run_logged $OMARCHY_INSTALL/config/detect-keyboard-layout.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/xcompose.sh
|
run_logged $OMARCHY_INSTALL/config/xcompose.sh
|
||||||
|
run_logged $OMARCHY_INSTALL/config/mise-ruby.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/mise-work.sh
|
run_logged $OMARCHY_INSTALL/config/mise-work.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/fix-powerprofilesctl-shebang.sh
|
|
||||||
run_logged $OMARCHY_INSTALL/config/docker.sh
|
run_logged $OMARCHY_INSTALL/config/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
|
||||||
|
|||||||
@@ -1,13 +1,4 @@
|
|||||||
OMARCHY_DESCRIPTION="Branding Config"
|
# Allow the user to change the branding for fastfetch and screensaver
|
||||||
|
mkdir -p ~/.config/omarchy/branding
|
||||||
omarchy_install() {
|
cp ~/.local/share/omarchy/icon.txt ~/.config/omarchy/branding/about.txt
|
||||||
mkdir -p ~/.config/omarchy/branding
|
cp ~/.local/share/omarchy/logo.txt ~/.config/omarchy/branding/screensaver.txt
|
||||||
cp ~/.local/share/omarchy/icon.txt ~/.config/omarchy/branding/about.txt
|
|
||||||
cp ~/.local/share/omarchy/logo.txt ~/.config/omarchy/branding/screensaver.txt
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
[[ -d ~/.config/omarchy/branding ]] || add_error "Branding directory missing"
|
|
||||||
[[ -f ~/.config/omarchy/branding/about.txt ]] || add_error "About branding file missing"
|
|
||||||
[[ -f ~/.config/omarchy/branding/screensaver.txt ]] || add_error "Screensaver branding file missing"
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,18 +1,6 @@
|
|||||||
OMARCHY_DESCRIPTION="Config Files"
|
# Copy over Omarchy configs
|
||||||
|
mkdir -p ~/.config
|
||||||
|
cp -R ~/.local/share/omarchy/config/* ~/.config/
|
||||||
|
|
||||||
omarchy_install() {
|
# Use default bashrc from Omarchy
|
||||||
# Copy over Omarchy configs
|
cp ~/.local/share/omarchy/default/bashrc ~/.bashrc
|
||||||
mkdir -p ~/.config
|
|
||||||
cp -R ~/.local/share/omarchy/config/* ~/.config/
|
|
||||||
|
|
||||||
# Use default bashrc from Omarchy
|
|
||||||
cp ~/.local/share/omarchy/default/bashrc ~/.bashrc
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
[[ -d ~/.config ]] || add_error "Config directory missing"
|
|
||||||
[[ -f ~/.bashrc ]] || add_error "Bashrc file missing"
|
|
||||||
|
|
||||||
[[ -d ~/.config/hypr ]] || add_error "Hypr config missing"
|
|
||||||
[[ -d ~/.config/waybar ]] || add_error "Waybar config missing"
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,29 +1,13 @@
|
|||||||
OMARCHY_DESCRIPTION="Keyboard Layout Config"
|
# Copy over the keyboard layout that's been set in Arch during install to Hyprland
|
||||||
|
conf="/etc/vconsole.conf"
|
||||||
|
hyprconf="$HOME/.config/hypr/input.conf"
|
||||||
|
|
||||||
omarchy_install() {
|
if grep -q '^XKBLAYOUT=' "$conf"; then
|
||||||
# Copy over the keyboard layout that's been set in Arch during install to Hyprland
|
layout=$(grep '^XKBLAYOUT=' "$conf" | cut -d= -f2 | tr -d '"')
|
||||||
conf="/etc/vconsole.conf"
|
sed -i "/^[[:space:]]*kb_options *=/i\ kb_layout = $layout" "$hyprconf"
|
||||||
hyprconf="$HOME/.config/hypr/input.conf"
|
fi
|
||||||
|
|
||||||
if grep -q '^XKBLAYOUT=' "$conf"; then
|
if grep -q '^XKBVARIANT=' "$conf"; then
|
||||||
layout=$(grep '^XKBLAYOUT=' "$conf" | cut -d= -f2 | tr -d '"')
|
variant=$(grep '^XKBVARIANT=' "$conf" | cut -d= -f2 | tr -d '"')
|
||||||
sed -i "/^[[:space:]]*kb_options *=/i\ kb_layout = $layout" "$hyprconf"
|
sed -i "/^[[:space:]]*kb_options *=/i\ kb_variant = $variant" "$hyprconf"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if grep -q '^XKBVARIANT=' "$conf"; then
|
|
||||||
variant=$(grep '^XKBVARIANT=' "$conf" | cut -d= -f2 | tr -d '"')
|
|
||||||
sed -i "/^[[:space:]]*kb_options *=/i\ kb_variant = $variant" "$hyprconf"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
[[ -f "$HOME/.config/hypr/input.conf" ]] || add_error "Hyprland input config missing"
|
|
||||||
|
|
||||||
# If vconsole.conf has keyboard layout, check if it's in hypr config
|
|
||||||
if [[ -f "/etc/vconsole.conf" ]] && grep -q '^XKBLAYOUT=' "/etc/vconsole.conf"; then
|
|
||||||
layout=$(grep '^XKBLAYOUT=' "/etc/vconsole.conf" | cut -d= -f2 | tr -d '"')
|
|
||||||
if [[ -f "$HOME/.config/hypr/input.conf" ]]; then
|
|
||||||
grep -q "kb_layout = $layout" "$HOME/.config/hypr/input.conf" || add_error "Keyboard layout not configured in Hyprland"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,52 +1,32 @@
|
|||||||
OMARCHY_DESCRIPTION="Docker Configuration"
|
# Configure Docker daemon:
|
||||||
|
# - limit log size to avoid running out of disk
|
||||||
omarchy_install() {
|
# - use host's DNS resolver
|
||||||
# Configure Docker daemon:
|
sudo mkdir -p /etc/docker
|
||||||
# - limit log size to avoid running out of disk
|
sudo tee /etc/docker/daemon.json >/dev/null <<'EOF'
|
||||||
# - use host's DNS resolver
|
|
||||||
sudo mkdir -p /etc/docker
|
|
||||||
sudo tee /etc/docker/daemon.json >/dev/null <<'EOF'
|
|
||||||
{
|
{
|
||||||
"log-driver": "json-file",
|
"log-driver": "json-file",
|
||||||
"log-opts": { "max-size": "10m", "max-file": "5" },
|
"log-opts": { "max-size": "10m", "max-file": "5" },
|
||||||
"dns": ["172.17.0.1"],
|
"dns": ["172.17.0.1"],
|
||||||
"bip": "172.17.0.1/16"
|
"bip": "172.17.0.1/16"
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Expose systemd-resolved to our Docker network
|
# Expose systemd-resolved to our Docker network
|
||||||
sudo mkdir -p /etc/systemd/resolved.conf.d
|
sudo mkdir -p /etc/systemd/resolved.conf.d
|
||||||
echo -e '[Resolve]\nDNSStubListenerExtra=172.17.0.1' | sudo tee /etc/systemd/resolved.conf.d/20-docker-dns.conf >/dev/null
|
echo -e '[Resolve]\nDNSStubListenerExtra=172.17.0.1' | sudo tee /etc/systemd/resolved.conf.d/20-docker-dns.conf >/dev/null
|
||||||
sudo systemctl restart systemd-resolved
|
sudo systemctl restart systemd-resolved
|
||||||
|
|
||||||
# Start Docker automatically
|
# Start Docker automatically
|
||||||
sudo systemctl enable docker
|
sudo systemctl enable docker
|
||||||
|
|
||||||
# Give this user privileged Docker access
|
# Give this user privileged Docker access
|
||||||
sudo usermod -aG docker ${USER}
|
sudo usermod -aG docker ${USER}
|
||||||
|
|
||||||
# Prevent Docker from preventing boot for network-online.target
|
# Prevent Docker from preventing boot for network-online.target
|
||||||
sudo mkdir -p /etc/systemd/system/docker.service.d
|
sudo mkdir -p /etc/systemd/system/docker.service.d
|
||||||
sudo tee /etc/systemd/system/docker.service.d/no-block-boot.conf <<'EOF'
|
sudo tee /etc/systemd/system/docker.service.d/no-block-boot.conf <<'EOF'
|
||||||
[Unit]
|
[Unit]
|
||||||
DefaultDependencies=no
|
DefaultDependencies=no
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
sudo systemctl daemon-reload
|
sudo systemctl daemon-reload
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
[[ -f /etc/docker/daemon.json ]] || add_error "Docker daemon.json missing"
|
|
||||||
[[ -f /etc/systemd/resolved.conf.d/20-docker-dns.conf ]] || add_error "Docker DNS config missing"
|
|
||||||
[[ -f /etc/systemd/system/docker.service.d/no-block-boot.conf ]] || add_error "Docker boot config missing"
|
|
||||||
|
|
||||||
getent group docker >/dev/null 2>&1 || add_error "Docker group does not exist"
|
|
||||||
|
|
||||||
groups "$USER" | grep -q docker || add_error "User $USER not in docker group"
|
|
||||||
|
|
||||||
if systemctl list-unit-files | grep -q docker.service; then
|
|
||||||
systemctl is-enabled docker >/dev/null 2>&1 || add_error "Docker service not enabled"
|
|
||||||
|
|
||||||
systemctl is-active docker >/dev/null 2>&1 || add_warning "Docker service is not running (may be intentional)"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
OMARCHY_DESCRIPTION="Powerprofilesctl"
|
|
||||||
|
|
||||||
omarchy_install() {
|
|
||||||
# Ensure we use system python3 and not mise's python3
|
|
||||||
sudo sed -i '/env python3/ c\#!/bin/python3' /usr/bin/powerprofilesctl
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
[[ -f /usr/bin/powerprofilesctl ]] || add_error "powerprofilesctl not found"
|
|
||||||
|
|
||||||
if [[ -f /usr/bin/powerprofilesctl ]]; then
|
|
||||||
head -n1 /usr/bin/powerprofilesctl | grep -q "^#!/bin/python3$" || add_error "powerprofilesctl shebang not fixed"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
@@ -1,41 +1,20 @@
|
|||||||
OMARCHY_DESCRIPTION="Git"
|
# Ensure git settings live under ~/.config
|
||||||
|
mkdir -p ~/.config/git
|
||||||
|
touch ~/.config/git/config
|
||||||
|
|
||||||
omarchy_install() {
|
# Set common git aliases
|
||||||
# Ensure git settings live under ~/.config
|
git config --global alias.co checkout
|
||||||
mkdir -p ~/.config/git
|
git config --global alias.br branch
|
||||||
touch ~/.config/git/config
|
git config --global alias.ci commit
|
||||||
|
git config --global alias.st status
|
||||||
|
git config --global pull.rebase true
|
||||||
|
git config --global init.defaultBranch master
|
||||||
|
|
||||||
# Set common git aliases
|
# Set identification from install inputs
|
||||||
git config --global alias.co checkout
|
if [[ -n "${OMARCHY_USER_NAME//[[:space:]]/}" ]]; then
|
||||||
git config --global alias.br branch
|
git config --global user.name "$OMARCHY_USER_NAME"
|
||||||
git config --global alias.ci commit
|
fi
|
||||||
git config --global alias.st status
|
|
||||||
git config --global pull.rebase true
|
|
||||||
git config --global init.defaultBranch master
|
|
||||||
|
|
||||||
# Set identification from install inputs
|
if [[ -n "${OMARCHY_USER_EMAIL//[[:space:]]/}" ]]; then
|
||||||
if [[ -n "${OMARCHY_USER_NAME//[[:space:]]/}" ]]; then
|
git config --global user.email "$OMARCHY_USER_EMAIL"
|
||||||
git config --global user.name "$OMARCHY_USER_NAME"
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n "${OMARCHY_USER_EMAIL//[[:space:]]/}" ]]; then
|
|
||||||
git config --global user.email "$OMARCHY_USER_EMAIL"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
[[ -d ~/.config/git ]] || add_error "Git config directory missing"
|
|
||||||
[[ -f ~/.config/git/config ]] || add_error "Git config file missing"
|
|
||||||
|
|
||||||
command -v git >/dev/null 2>&1 || add_error "Git not installed"
|
|
||||||
|
|
||||||
if command -v git >/dev/null 2>&1; then
|
|
||||||
git config --global pull.rebase >/dev/null || add_error "Git pull.rebase not configured"
|
|
||||||
git config --global init.defaultBranch >/dev/null || add_error "Git defaultBranch not configured"
|
|
||||||
|
|
||||||
git config --global alias.co >/dev/null || add_error "Git alias 'co' not configured"
|
|
||||||
git config --global alias.br >/dev/null || add_error "Git alias 'br' not configured"
|
|
||||||
git config --global alias.ci >/dev/null || add_error "Git alias 'ci' not configured"
|
|
||||||
git config --global alias.st >/dev/null || add_error "Git alias 'st' not configured"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,20 +1,6 @@
|
|||||||
OMARCHY_DESCRIPTION="GPG"
|
# Setup GPG configuration with multiple keyservers for better reliability
|
||||||
|
sudo mkdir -p /etc/gnupg
|
||||||
omarchy_install() {
|
sudo cp ~/.local/share/omarchy/default/gpg/dirmngr.conf /etc/gnupg/
|
||||||
# Setup GPG configuration with multiple keyservers for better reliability
|
sudo chmod 644 /etc/gnupg/dirmngr.conf
|
||||||
sudo mkdir -p /etc/gnupg
|
sudo gpgconf --kill dirmngr || true
|
||||||
sudo cp ~/.local/share/omarchy/default/gpg/dirmngr.conf /etc/gnupg/
|
sudo gpgconf --launch dirmngr || true
|
||||||
sudo chmod 644 /etc/gnupg/dirmngr.conf
|
|
||||||
sudo gpgconf --kill dirmngr || true
|
|
||||||
sudo gpgconf --launch dirmngr || true
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
[[ -d /etc/gnupg ]] || add_error "GPG config directory missing"
|
|
||||||
[[ -f /etc/gnupg/dirmngr.conf ]] || add_error "GPG dirmngr.conf missing"
|
|
||||||
|
|
||||||
if [[ -f /etc/gnupg/dirmngr.conf ]]; then
|
|
||||||
local perms=$(stat -c %a /etc/gnupg/dirmngr.conf)
|
|
||||||
[[ "$perms" == "644" ]] || add_error "GPG dirmngr.conf has incorrect permissions: $perms (should be 644)"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,9 +1,2 @@
|
|||||||
OMARCHY_DESCRIPTION="Enable Bluetooth Service"
|
# Turn on bluetooth by default
|
||||||
|
chrootable_systemctl_enable bluetooth.service
|
||||||
omarchy_install() {
|
|
||||||
chrootable_systemctl_enable bluetooth.service
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
systemctl is-enabled bluetooth.service >/dev/null 2>&1 || add_error "Bluetooth service not enabled"
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,18 +1,5 @@
|
|||||||
OMARCHY_DESCRIPTION="Apple BCM4360 WiFi Driver"
|
# Install wifi drivers for 2013-2015 MacBooks using the BCM4360 chip
|
||||||
|
if lspci -nnv | grep -A2 "14e4:43a0" | grep -q "106b:"; then
|
||||||
should_run() {
|
|
||||||
lspci -nnv | grep -A2 "14e4:43a0" | grep -q "106b:"
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_install() {
|
|
||||||
should_run || return 0
|
|
||||||
|
|
||||||
echo "Apple BCM4360 detected"
|
echo "Apple BCM4360 detected"
|
||||||
sudo pacman -S --noconfirm --needed broadcom-wl dkms linux-headers
|
sudo pacman -S --noconfirm --needed broadcom-wl dkms linux-headers
|
||||||
}
|
fi
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
should_run || return 2
|
|
||||||
|
|
||||||
omarchy-pkg-present broadcom-wl || add_error "Broadcom wireless driver not installed"
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,23 +1,7 @@
|
|||||||
OMARCHY_DESCRIPTION="MacBook SPI Keyboard Support"
|
# Detect MacBook models that need SPI keyboard modules
|
||||||
|
if [[ "$(cat /sys/class/dmi/id/product_name 2>/dev/null)" =~ MacBook12,1|MacBookPro13,[123]|MacBookPro14,[123] ]]; then
|
||||||
should_run() {
|
|
||||||
[[ "$(cat /sys/class/dmi/id/product_name 2>/dev/null)" =~ MacBook12,1|MacBookPro13,[123]|MacBookPro14,[123] ]]
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_install() {
|
|
||||||
should_run || return 0
|
|
||||||
|
|
||||||
echo "Detected MacBook with SPI keyboard"
|
echo "Detected MacBook with SPI keyboard"
|
||||||
|
|
||||||
sudo pacman -S --noconfirm --needed macbook12-spi-driver-dkms
|
sudo pacman -S --noconfirm --needed macbook12-spi-driver-dkms
|
||||||
echo "MODULES=(applespi intel_lpss_pci spi_pxa2xx_platform)" | sudo tee /etc/mkinitcpio.conf.d/macbook_spi_modules.conf >/dev/null
|
echo "MODULES=(applespi intel_lpss_pci spi_pxa2xx_platform)" | sudo tee /etc/mkinitcpio.conf.d/macbook_spi_modules.conf >/dev/null
|
||||||
}
|
fi
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
should_run || return 2 # Return 2 to indicate "not applicable"
|
|
||||||
|
|
||||||
# Check if driver is installed
|
|
||||||
pacman -Q macbook12-spi-driver-dkms &>/dev/null || add_error "MacBook SPI driver not installed"
|
|
||||||
|
|
||||||
# Check if mkinitcpio config exists
|
|
||||||
[[ -f /etc/mkinitcpio.conf.d/macbook_spi_modules.conf ]] || add_error "MacBook SPI modules config missing"
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,23 +1,15 @@
|
|||||||
OMARCHY_DESCRIPTION="Apple T2 MacBook Support"
|
# Detect T2 MacBook models using PCI IDs
|
||||||
|
# Vendor: 106b (Apple), Device IDs: 1801 or 1802 (T2 Security Chip)
|
||||||
# Detect T2 MacBook models using PCI IDs: 106b:1801 or 106b:1802
|
if lspci -nn | grep -q "106b:180[12]"; then
|
||||||
should_run() {
|
|
||||||
lspci -nn | grep -q "106b:180[12]"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Installation function
|
|
||||||
omarchy_install() {
|
|
||||||
should_run || return 0
|
|
||||||
|
|
||||||
echo "Detected MacBook with T2 chip. Installing support items..."
|
echo "Detected MacBook with T2 chip. Installing support items..."
|
||||||
|
|
||||||
sudo pacman -S --noconfirm --needed \
|
sudo pacman -S --noconfirm --needed \
|
||||||
linux-t2 \
|
linux-t2 \
|
||||||
linux-t2-headers \
|
linux-t2-headers \
|
||||||
apple-t2-audio-config \
|
apple-t2-audio-config \
|
||||||
apple-bcm-firmware \
|
apple-bcm-firmware \
|
||||||
t2fanrd \
|
t2fanrd \
|
||||||
tiny-dfr
|
tiny-dfr
|
||||||
|
|
||||||
echo "apple-bce" | sudo tee /etc/modules-load.d/t2.conf >/dev/null
|
echo "apple-bce" | sudo tee /etc/modules-load.d/t2.conf >/dev/null
|
||||||
|
|
||||||
@@ -28,22 +20,9 @@ omarchy_install() {
|
|||||||
options brcmfmac feature_disable=0x82000
|
options brcmfmac feature_disable=0x82000
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
sudo mkdir -p /etc/limine-entry-tool.d
|
sudo mkdir -p /etc/limine-entry-tool.d
|
||||||
cat <<EOF | sudo tee /etc/limine-entry-tool.d/t2-mac.conf >/dev/null
|
cat <<EOF | sudo tee /etc/limine-entry-tool.d/t2-mac.conf >/dev/null
|
||||||
# Generated by Omarchy installer for T2 Mac support
|
# Generated by Omarchy installer for T2 Mac support
|
||||||
KERNEL_CMDLINE[default]+="intel_iommu=on iommu=pt pcie_ports=compat"
|
KERNEL_CMDLINE[default]+="intel_iommu=on iommu=pt pcie_ports=compat"
|
||||||
EOF
|
EOF
|
||||||
}
|
fi
|
||||||
|
|
||||||
# Verification function
|
|
||||||
omarchy_verify() {
|
|
||||||
should_run || return 2
|
|
||||||
|
|
||||||
pacman -Q linux-t2 &>/dev/null || add_error "T2 Linux kernel not installed"
|
|
||||||
|
|
||||||
# Check if config files exist
|
|
||||||
[[ -f /etc/modules-load.d/t2.conf ]] || add_error "T2 modules config missing"
|
|
||||||
[[ -f /etc/mkinitcpio.conf.d/apple-t2.conf ]] || add_error "T2 mkinitcpio config missing"
|
|
||||||
[[ -f /etc/modprobe.d/brcmfmac.conf ]] || add_error "T2 WiFi fix config missing"
|
|
||||||
[[ -f /etc/limine-entry-tool.d/t2-mac.conf ]] || add_error "T2 boot config missing"
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,18 +1,5 @@
|
|||||||
OMARCHY_DESCRIPTION="Framework 13 AMD Audio Input Fix"
|
AMD_AUDIO_CARD=$(pactl list cards 2>/dev/null | grep -B20 "Family 17h/19h" | grep "Name: " | awk '{print $2}' || true)
|
||||||
|
|
||||||
should_run() {
|
|
||||||
AMD_AUDIO_CARD=$(pactl list cards 2>/dev/null | grep -B20 "Family 17h/19h" | grep "Name: " | awk '{print $2}' || true)
|
|
||||||
[[ -n "$AMD_AUDIO_CARD" ]]
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_install() {
|
|
||||||
should_run || return 0
|
|
||||||
|
|
||||||
|
if [[ -n $AMD_AUDIO_CARD ]]; then
|
||||||
pactl set-card-profile "$AMD_AUDIO_CARD" "HiFi (Mic1, Mic2, Speaker)" 2>/dev/null || true
|
pactl set-card-profile "$AMD_AUDIO_CARD" "HiFi (Mic1, Mic2, Speaker)" 2>/dev/null || true
|
||||||
}
|
fi
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
should_run || return 2
|
|
||||||
|
|
||||||
pactl list cards | grep -A10 "$AMD_AUDIO_CARD" | grep -q "Active Profile:" || add_error "AMD audio profile not configured"
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,16 +1,4 @@
|
|||||||
OMARCHY_DESCRIPTION="Set F-keys as F-keys by default"
|
# Ensure that F-keys on Apple-like keyboards (such as Lofree Flow84) are always F-keys
|
||||||
|
if [[ ! -f /etc/modprobe.d/hid_apple.conf ]]; then
|
||||||
omarchy_install() {
|
echo "options hid_apple fnmode=2" | sudo tee /etc/modprobe.d/hid_apple.conf
|
||||||
# Ensure that F-keys on Apple-like keyboards (such as Lofree Flow84) are always F-keys
|
fi
|
||||||
if [[ ! -f /etc/modprobe.d/hid_apple.conf ]]; then
|
|
||||||
echo "options hid_apple fnmode=2" | sudo tee /etc/modprobe.d/hid_apple.conf
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
[[ -f /etc/modprobe.d/hid_apple.conf ]] || add_error "Apple HID config missing"
|
|
||||||
|
|
||||||
if [[ -f /etc/modprobe.d/hid_apple.conf ]]; then
|
|
||||||
grep -q "options hid_apple fnmode=2" /etc/modprobe.d/hid_apple.conf || add_error "F-key mode not configured"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,15 +1,2 @@
|
|||||||
OMARCHY_DESCRIPTION="Disable power button"
|
# Disable shutting system down on power button to bind it to power menu afterwards
|
||||||
|
sudo sed -i 's/.*HandlePowerKey=.*/HandlePowerKey=ignore/' /etc/systemd/logind.conf
|
||||||
omarchy_install() {
|
|
||||||
# Disable shutting system down on power button to bind it to power menu afterwards
|
|
||||||
sudo sed -i 's/.*HandlePowerKey=.*/HandlePowerKey=ignore/' /etc/systemd/logind.conf
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
[[ -f /etc/systemd/logind.conf ]] || add_error "Logind config missing"
|
|
||||||
|
|
||||||
# Check if power button is set to ignore
|
|
||||||
if [[ -f /etc/systemd/logind.conf ]]; then
|
|
||||||
grep -q "^HandlePowerKey=ignore" /etc/systemd/logind.conf || add_error "Power button not set to ignore"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,30 +1,11 @@
|
|||||||
OMARCHY_DESCRIPTION="Setup Intel video acceleration"
|
# This installs hardware video acceleration for Intel GPUs
|
||||||
|
# Check if we have an Intel GPU at all
|
||||||
should_run() {
|
if INTEL_GPU=$(lspci | grep -iE 'vga|3d|display' | grep -i 'intel'); then
|
||||||
INTEL_GPU=$(lspci | grep -iE 'vga|3d|display' | grep -i 'intel' || true)
|
|
||||||
[[ -n "$INTEL_GPU" ]]
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_install() {
|
|
||||||
should_run || return 0
|
|
||||||
|
|
||||||
# HD Graphics and newer uses intel-media-driver
|
# HD Graphics and newer uses intel-media-driver
|
||||||
if [[ "${INTEL_GPU,,}" =~ "hd graphics"|"xe"|"iris" ]]; then
|
if [[ "${INTEL_GPU,,}" =~ "hd graphics"|"xe"|"iris" ]]; then
|
||||||
sudo pacman -S --needed --noconfirm intel-media-driver
|
sudo pacman -S --needed --noconfirm intel-media-driver
|
||||||
elif [[ "${INTEL_GPU,,}" =~ "gma" ]]; then
|
elif [[ "${INTEL_GPU,,}" =~ "gma" ]]; then
|
||||||
# Older generations from 2008 to ~2014-2017 use libva-intel-driver
|
# Older generations from 2008 to ~2014-2017 use libva-intel-driver
|
||||||
sudo pacman -S --needed --noconfirm libva-intel-driver
|
sudo pacman -S --needed --noconfirm libva-intel-driver
|
||||||
fi
|
fi
|
||||||
}
|
fi
|
||||||
|
|
||||||
# Verification function
|
|
||||||
omarchy_verify() {
|
|
||||||
should_run || return 2
|
|
||||||
|
|
||||||
# Check if appropriate driver is installed
|
|
||||||
if [[ "${INTEL_GPU,,}" =~ "hd graphics"|"xe"|"iris" ]]; then
|
|
||||||
pacman -Q intel-media-driver &>/dev/null || add_error "Intel media driver not installed"
|
|
||||||
elif [[ "${INTEL_GPU,,}" =~ "gma" ]]; then
|
|
||||||
pacman -Q libva-intel-driver &>/dev/null || add_error "Intel VA-API driver not installed"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,14 +1,6 @@
|
|||||||
OMARCHY_DESCRIPTION="Network Config"
|
# Ensure iwd service will be started
|
||||||
|
sudo systemctl enable iwd.service
|
||||||
|
|
||||||
omarchy_install() {
|
# Prevent systemd-networkd-wait-online timeout on boot
|
||||||
sudo systemctl enable iwd.service
|
sudo systemctl disable systemd-networkd-wait-online.service
|
||||||
|
sudo systemctl mask systemd-networkd-wait-online.service
|
||||||
sudo systemctl disable systemd-networkd-wait-online.service
|
|
||||||
sudo systemctl mask systemd-networkd-wait-online.service
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
systemctl is-enabled iwd.service >/dev/null 2>&1 || add_error "IWD service not enabled"
|
|
||||||
|
|
||||||
systemctl is-enabled systemd-networkd-wait-online.service 2>&1 | grep -q "masked" || add_error "systemd-networkd-wait-online not masked"
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,28 +1,31 @@
|
|||||||
OMARCHY_DESCRIPTION="NVIDIA GPU Configuration"
|
# ==============================================================================
|
||||||
|
# Hyprland NVIDIA Setup Script for Arch Linux
|
||||||
should_run() {
|
# ==============================================================================
|
||||||
NVIDIA_GPU=$(lspci | grep -i 'nvidia' || true)
|
# This script automates the installation and configuration of NVIDIA drivers
|
||||||
[[ -n "$NVIDIA_GPU" ]]
|
# for use with Hyprland on Arch Linux, following the official Hyprland wiki.
|
||||||
}
|
#
|
||||||
|
# Author: https://github.com/Kn0ax
|
||||||
omarchy_install() {
|
#
|
||||||
should_run || return 0
|
# ==============================================================================
|
||||||
|
|
||||||
|
# --- GPU Detection ---
|
||||||
|
if [ -n "$(lspci | grep -i 'nvidia')" ]; then
|
||||||
|
# --- Driver Selection ---
|
||||||
# Turing (16xx, 20xx), Ampere (30xx), Ada (40xx), and newer recommend the open-source kernel modules
|
# Turing (16xx, 20xx), Ampere (30xx), Ada (40xx), and newer recommend the open-source kernel modules
|
||||||
if echo "$NVIDIA_GPU" | grep -q -E "RTX [2-9][0-9]|GTX 16"; then
|
if echo "$(lspci | grep -i 'nvidia')" | grep -q -E "RTX [2-9][0-9]|GTX 16"; then
|
||||||
NVIDIA_DRIVER_PACKAGE="nvidia-open-dkms"
|
NVIDIA_DRIVER_PACKAGE="nvidia-open-dkms"
|
||||||
else
|
else
|
||||||
NVIDIA_DRIVER_PACKAGE="nvidia-dkms"
|
NVIDIA_DRIVER_PACKAGE="nvidia-dkms"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check which kernel is installed and set appropriate headers package
|
# Check which kernel is installed and set appropriate headers package
|
||||||
KERNEL_HEADERS="linux-headers" # Default
|
KERNEL_HEADERS="linux-headers" # Default
|
||||||
if pacman -Q linux-zen &>/dev/null; then
|
if pacman -Q linux-zen &>/dev/null; then
|
||||||
KERNEL_HEADERS="linux-zen-headers"
|
KERNEL_HEADERS="linux-zen-headers"
|
||||||
elif pacman -Q linux-lts &>/dev/null; then
|
elif pacman -Q linux-lts &>/dev/null; then
|
||||||
KERNEL_HEADERS="linux-lts-headers"
|
KERNEL_HEADERS="linux-lts-headers"
|
||||||
elif pacman -Q linux-hardened &>/dev/null; then
|
elif pacman -Q linux-hardened &>/dev/null; then
|
||||||
KERNEL_HEADERS="linux-hardened-headers"
|
KERNEL_HEADERS="linux-hardened-headers"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# force package database refresh
|
# force package database refresh
|
||||||
@@ -64,9 +67,9 @@ omarchy_install() {
|
|||||||
sudo mkinitcpio -P
|
sudo mkinitcpio -P
|
||||||
|
|
||||||
# Add NVIDIA environment variables to hyprland.conf
|
# Add NVIDIA environment variables to hyprland.conf
|
||||||
HYPRLAND_CONF="$HOME/.config/hypr/envs.conf"
|
HYPRLAND_CONF="$HOME/.config/hypr/hyprland.conf"
|
||||||
if [ -f "$HYPRLAND_CONF" ]; then
|
if [ -f "$HYPRLAND_CONF" ]; then
|
||||||
cat >>"$HYPRLAND_CONF" <<'EOF'
|
cat >>"$HYPRLAND_CONF" <<'EOF'
|
||||||
|
|
||||||
# NVIDIA environment variables
|
# NVIDIA environment variables
|
||||||
env = NVD_BACKEND,direct
|
env = NVD_BACKEND,direct
|
||||||
@@ -74,22 +77,4 @@ env = LIBVA_DRIVER_NAME,nvidia
|
|||||||
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
|
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
}
|
fi
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
should_run || return 2
|
|
||||||
|
|
||||||
pacman -Q nvidia-dkms &>/dev/null || pacman -Q nvidia-open-dkms &>/dev/null || add_error "NVIDIA driver not installed"
|
|
||||||
|
|
||||||
[[ -f /etc/modprobe.d/nvidia.conf ]] || add_error "NVIDIA modprobe config missing"
|
|
||||||
|
|
||||||
if [[ -f /etc/modprobe.d/nvidia.conf ]]; then
|
|
||||||
grep -q "options nvidia_drm modeset=1" /etc/modprobe.d/nvidia.conf || add_error "NVIDIA DRM modeset not enabled"
|
|
||||||
fi
|
|
||||||
|
|
||||||
grep -q "nvidia" /etc/mkinitcpio.conf || add_error "NVIDIA modules not in mkinitcpio.conf"
|
|
||||||
|
|
||||||
if [[ -f "$HOME/.config/hypr/hyprland.conf" ]]; then
|
|
||||||
grep -q "LIBVA_DRIVER_NAME,nvidia" "$HOME/.config/hypr/hyprland.conf" || add_error "NVIDIA env vars not in Hyprland config"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,32 +1,16 @@
|
|||||||
OMARCHY_DESCRIPTION="Printer Config"
|
chrootable_systemctl_enable cups.service
|
||||||
|
|
||||||
omarchy_install() {
|
# Disable multicast dns in resolved. Avahi will provide this for better network printer discovery
|
||||||
chrootable_systemctl_enable cups.service
|
sudo mkdir -p /etc/systemd/resolved.conf.d
|
||||||
|
echo -e "[Resolve]\nMulticastDNS=no" | sudo tee /etc/systemd/resolved.conf.d/10-disable-multicast.conf
|
||||||
|
chrootable_systemctl_enable avahi-daemon.service
|
||||||
|
|
||||||
# Disable multicast dns in resolved. Avahi will provide this for better network printer discovery
|
# Enable mDNS resolution for .local domains
|
||||||
sudo mkdir -p /etc/systemd/resolved.conf.d
|
sudo sed -i 's/^hosts:.*/hosts: mymachines mdns_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] files myhostname dns/' /etc/nsswitch.conf
|
||||||
echo -e "[Resolve]\nMulticastDNS=no" | sudo tee /etc/systemd/resolved.conf.d/10-disable-multicast.conf
|
|
||||||
chrootable_systemctl_enable avahi-daemon.service
|
|
||||||
|
|
||||||
# Enable mDNS resolution for .local domains
|
# Enable automatically adding remote printers
|
||||||
sudo sed -i 's/^hosts:.*/hosts: mymachines mdns_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] files myhostname dns/' /etc/nsswitch.conf
|
if ! grep -q '^CreateRemotePrinters Yes' /etc/cups/cups-browsed.conf; then
|
||||||
|
echo 'CreateRemotePrinters Yes' | sudo tee -a /etc/cups/cups-browsed.conf
|
||||||
|
fi
|
||||||
|
|
||||||
# Enable automatically adding remote printers
|
chrootable_systemctl_enable cups-browsed.service
|
||||||
if ! grep -q '^CreateRemotePrinters Yes' /etc/cups/cups-browsed.conf; then
|
|
||||||
echo 'CreateRemotePrinters Yes' | sudo tee -a /etc/cups/cups-browsed.conf
|
|
||||||
fi
|
|
||||||
|
|
||||||
chrootable_systemctl_enable cups-browsed.service
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
systemctl is-enabled cups.service >/dev/null 2>&1 || add_error "CUPS service not enabled"
|
|
||||||
systemctl is-enabled avahi-daemon.service >/dev/null 2>&1 || add_error "Avahi daemon not enabled"
|
|
||||||
systemctl is-enabled cups-browsed.service >/dev/null 2>&1 || add_error "CUPS browsed service not enabled"
|
|
||||||
|
|
||||||
[[ -f /etc/systemd/resolved.conf.d/10-disable-multicast.conf ]] || add_error "Multicast DNS config missing"
|
|
||||||
|
|
||||||
grep -q "mdns_minimal" /etc/nsswitch.conf || add_error "mDNS not configured in nsswitch.conf"
|
|
||||||
|
|
||||||
[[ -f /etc/cups/cups-browsed.conf ]] && grep -q '^CreateRemotePrinters Yes' /etc/cups/cups-browsed.conf || add_error "Remote printers not enabled in CUPS"
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,37 +1,33 @@
|
|||||||
OMARCHY_DESCRIPTION="Wireless Regdom"
|
# First check that wireless-regdb is there
|
||||||
|
if [ -f "/etc/conf.d/wireless-regdom" ]; then
|
||||||
|
unset WIRELESS_REGDOM
|
||||||
|
. /etc/conf.d/wireless-regdom
|
||||||
|
fi
|
||||||
|
|
||||||
omarchy_install() {
|
# If the region is already set, we're done
|
||||||
if [ -f "/etc/conf.d/wireless-regdom" ]; then
|
if [ ! -n "${WIRELESS_REGDOM}" ]; then
|
||||||
unset WIRELESS_REGDOM
|
# Get the current timezone
|
||||||
. /etc/conf.d/wireless-regdom
|
if [ -e "/etc/localtime" ]; then
|
||||||
fi
|
TIMEZONE=$(readlink -f /etc/localtime)
|
||||||
|
TIMEZONE=${TIMEZONE#/usr/share/zoneinfo/}
|
||||||
|
|
||||||
if [ ! -n "${WIRELESS_REGDOM}" ]; then
|
# Some timezones are formatted with the two letter country code at the start
|
||||||
if [ -e "/etc/localtime" ]; then
|
COUNTRY="${TIMEZONE%%/*}"
|
||||||
TIMEZONE=$(readlink -f /etc/localtime)
|
|
||||||
TIMEZONE=${TIMEZONE#/usr/share/zoneinfo/}
|
|
||||||
|
|
||||||
COUNTRY="${TIMEZONE%%/*}"
|
# If we don't have a two letter country, get it from the timezone table
|
||||||
|
if [[ ! "$COUNTRY" =~ ^[A-Z]{2}$ ]] && [ -f "/usr/share/zoneinfo/zone.tab" ]; then
|
||||||
|
COUNTRY=$(awk -v tz="$TIMEZONE" '$3 == tz {print $1; exit}' /usr/share/zoneinfo/zone.tab)
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ ! "$COUNTRY" =~ ^[A-Z]{2}$ ]] && [ -f "/usr/share/zoneinfo/zone.tab" ]; then
|
# Check if we have a two letter country code
|
||||||
COUNTRY=$(awk -v tz="$TIMEZONE" '$3 == tz {print $1; exit}' /usr/share/zoneinfo/zone.tab)
|
if [[ "$COUNTRY" =~ ^[A-Z]{2}$ ]]; then
|
||||||
fi
|
# Append it to the wireless-regdom conf file that is used at boot
|
||||||
|
echo "WIRELESS_REGDOM=\"$COUNTRY\"" | sudo tee -a /etc/conf.d/wireless-regdom >/dev/null
|
||||||
|
|
||||||
if [[ "$COUNTRY" =~ ^[A-Z]{2}$ ]]; then
|
# Also set it one off now
|
||||||
echo "WIRELESS_REGDOM=\"$COUNTRY\"" | sudo tee -a /etc/conf.d/wireless-regdom >/dev/null
|
if command -v iw &>/dev/null; then
|
||||||
|
sudo iw reg set ${COUNTRY}
|
||||||
if command -v iw &>/dev/null; then
|
|
||||||
sudo iw reg set ${COUNTRY}
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
fi
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
[[ -f /etc/conf.d/wireless-regdom ]] || add_error "Wireless regdom config missing"
|
|
||||||
|
|
||||||
if [[ -f /etc/conf.d/wireless-regdom ]]; then
|
|
||||||
grep -q "^WIRELESS_REGDOM=" /etc/conf.d/wireless-regdom || add_error "Wireless regulatory domain not configured"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,16 +1,5 @@
|
|||||||
OMARCHY_DESCRIPTION="USB Autosuspend"
|
# Disable USB autosuspend to prevent peripheral disconnection issues
|
||||||
|
if [[ ! -f /etc/modprobe.d/disable-usb-autosuspend.conf ]]; then
|
||||||
|
echo "options usbcore autosuspend=-1" | sudo tee /etc/modprobe.d/disable-usb-autosuspend.conf
|
||||||
|
fi
|
||||||
|
|
||||||
omarchy_install() {
|
|
||||||
# Disable USB autosuspend to prevent peripheral disconnection issues
|
|
||||||
if [[ ! -f /etc/modprobe.d/disable-usb-autosuspend.conf ]]; then
|
|
||||||
echo "options usbcore autosuspend=-1" | sudo tee /etc/modprobe.d/disable-usb-autosuspend.conf
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
[[ -f /etc/modprobe.d/disable-usb-autosuspend.conf ]] || add_error "USB autosuspend config missing"
|
|
||||||
|
|
||||||
if [[ -f /etc/modprobe.d/disable-usb-autosuspend.conf ]]; then
|
|
||||||
grep -q "options usbcore autosuspend=-1" /etc/modprobe.d/disable-usb-autosuspend.conf || add_error "USB autosuspend not disabled"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,16 +1,3 @@
|
|||||||
OMARCHY_DESCRIPTION="Lockout Limit"
|
# Increase lockout limit to 10 and decrease timeout to 2 minutes
|
||||||
|
sudo sed -i 's|^\(auth\s\+required\s\+pam_faillock.so\)\s\+preauth.*$|\1 preauth silent deny=10 unlock_time=120|' "/etc/pam.d/system-auth"
|
||||||
omarchy_install() {
|
sudo sed -i 's|^\(auth\s\+\[default=die\]\s\+pam_faillock.so\)\s\+authfail.*$|\1 authfail deny=10 unlock_time=120|' "/etc/pam.d/system-auth"
|
||||||
# Increase lockout limit to 10 and decrease timeout to 2 minutes
|
|
||||||
sudo sed -i 's|^\(auth\s\+required\s\+pam_faillock.so\)\s\+preauth.*$|\1 preauth silent deny=10 unlock_time=120|' "/etc/pam.d/system-auth"
|
|
||||||
sudo sed -i 's|^\(auth\s\+\[default=die\]\s\+pam_faillock.so\)\s\+authfail.*$|\1 authfail deny=10 unlock_time=120|' "/etc/pam.d/system-auth"
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
[[ -f /etc/pam.d/system-auth ]] || add_error "PAM system-auth file missing"
|
|
||||||
|
|
||||||
if [[ -f /etc/pam.d/system-auth ]]; then
|
|
||||||
grep -q "pam_faillock.so.*deny=10" /etc/pam.d/system-auth || add_error "Faillock deny limit not set to 10"
|
|
||||||
grep -q "pam_faillock.so.*unlock_time=120" /etc/pam.d/system-auth || add_error "Faillock unlock time not set to 120"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,18 +1,3 @@
|
|||||||
OMARCHY_DESCRIPTION="Sudo lockout limit"
|
# Give the user 10 instead of 3 tries to fat finger their password before lockout
|
||||||
|
echo "Defaults passwd_tries=10" | sudo tee /etc/sudoers.d/passwd-tries
|
||||||
omarchy_install() {
|
sudo chmod 440 /etc/sudoers.d/passwd-tries
|
||||||
# Give the user 10 instead of 3 tries to fat finger their password before lockout
|
|
||||||
echo "Defaults passwd_tries=10" | sudo tee /etc/sudoers.d/passwd-tries
|
|
||||||
sudo chmod 440 /etc/sudoers.d/passwd-tries
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
sudo test -f /etc/sudoers.d/passwd-tries || add_error "Sudoers passwd-tries file missing"
|
|
||||||
|
|
||||||
if sudo test -f /etc/sudoers.d/passwd-tries; then
|
|
||||||
local perms=$(sudo stat -c %a /etc/sudoers.d/passwd-tries)
|
|
||||||
[[ "$perms" == "440" ]] || add_error "Sudoers file has incorrect permissions: $perms (should be 440)"
|
|
||||||
|
|
||||||
sudo grep -q "passwd_tries=10" /etc/sudoers.d/passwd-tries || add_error "Passwd tries not set to 10"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,10 +1 @@
|
|||||||
OMARCHY_DESCRIPTION="LazyVim"
|
omarchy-lazyvim-setup
|
||||||
|
|
||||||
omarchy_install() {
|
|
||||||
omarchy-lazyvim-setup
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
[[ -d ~/.config/nvim ]] || add_error "Neovim config directory missing"
|
|
||||||
[[ -d ~/.local/share/nvim/lazy ]] || add_error "LazyVim plugins directory missing"
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,12 +1,2 @@
|
|||||||
OMARCHY_DESCRIPTION="LocalDB"
|
# Update localdb so that locate will find everything installed
|
||||||
|
sudo updatedb
|
||||||
omarchy_install() {
|
|
||||||
# Update localdb so that locate will find everything installed
|
|
||||||
sudo updatedb
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
[[ -f /var/lib/mlocate/mlocate.db ]] || [[ -f /var/lib/plocate/plocate.db ]] || add_error "Locate database missing"
|
|
||||||
|
|
||||||
command -v locate >/dev/null 2>&1 || add_error "Locate command not available"
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,48 +1,35 @@
|
|||||||
OMARCHY_DESCRIPTION="Mimetypes"
|
omarchy-refresh-applications
|
||||||
|
update-desktop-database ~/.local/share/applications
|
||||||
|
|
||||||
omarchy_install() {
|
# Open all images with imv
|
||||||
omarchy-refresh-applications
|
xdg-mime default imv.desktop image/png
|
||||||
update-desktop-database ~/.local/share/applications
|
xdg-mime default imv.desktop image/jpeg
|
||||||
|
xdg-mime default imv.desktop image/gif
|
||||||
|
xdg-mime default imv.desktop image/webp
|
||||||
|
xdg-mime default imv.desktop image/bmp
|
||||||
|
xdg-mime default imv.desktop image/tiff
|
||||||
|
|
||||||
# Open all images with imv
|
# Open PDFs with the Document Viewer
|
||||||
xdg-mime default imv.desktop image/png
|
xdg-mime default org.gnome.Evince.desktop application/pdf
|
||||||
xdg-mime default imv.desktop image/jpeg
|
|
||||||
xdg-mime default imv.desktop image/gif
|
|
||||||
xdg-mime default imv.desktop image/webp
|
|
||||||
xdg-mime default imv.desktop image/bmp
|
|
||||||
xdg-mime default imv.desktop image/tiff
|
|
||||||
|
|
||||||
# Open PDFs with the Document Viewer
|
# Use Chromium as the default browser
|
||||||
xdg-mime default org.gnome.Evince.desktop application/pdf
|
xdg-settings set default-web-browser chromium.desktop
|
||||||
|
xdg-mime default chromium.desktop x-scheme-handler/http
|
||||||
|
xdg-mime default chromium.desktop x-scheme-handler/https
|
||||||
|
|
||||||
# Use Chromium as the default browser
|
# Open video files with mpv
|
||||||
xdg-settings set default-web-browser chromium.desktop
|
xdg-mime default mpv.desktop video/mp4
|
||||||
xdg-mime default chromium.desktop x-scheme-handler/http
|
xdg-mime default mpv.desktop video/x-msvideo
|
||||||
xdg-mime default chromium.desktop x-scheme-handler/https
|
xdg-mime default mpv.desktop video/x-matroska
|
||||||
|
xdg-mime default mpv.desktop video/x-flv
|
||||||
# Open video files with mpv
|
xdg-mime default mpv.desktop video/x-ms-wmv
|
||||||
xdg-mime default mpv.desktop video/mp4
|
xdg-mime default mpv.desktop video/mpeg
|
||||||
xdg-mime default mpv.desktop video/x-msvideo
|
xdg-mime default mpv.desktop video/ogg
|
||||||
xdg-mime default mpv.desktop video/x-matroska
|
xdg-mime default mpv.desktop video/webm
|
||||||
xdg-mime default mpv.desktop video/x-flv
|
xdg-mime default mpv.desktop video/quicktime
|
||||||
xdg-mime default mpv.desktop video/x-ms-wmv
|
xdg-mime default mpv.desktop video/3gpp
|
||||||
xdg-mime default mpv.desktop video/mpeg
|
xdg-mime default mpv.desktop video/3gpp2
|
||||||
xdg-mime default mpv.desktop video/ogg
|
xdg-mime default mpv.desktop video/x-ms-asf
|
||||||
xdg-mime default mpv.desktop video/webm
|
xdg-mime default mpv.desktop video/x-ogm+ogg
|
||||||
xdg-mime default mpv.desktop video/quicktime
|
xdg-mime default mpv.desktop video/x-theora+ogg
|
||||||
xdg-mime default mpv.desktop video/3gpp
|
xdg-mime default mpv.desktop application/ogg
|
||||||
xdg-mime default mpv.desktop video/3gpp2
|
|
||||||
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-theora+ogg
|
|
||||||
xdg-mime default mpv.desktop application/ogg
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
[[ -d ~/.local/share/applications ]] || add_error "Applications directory missing"
|
|
||||||
|
|
||||||
xdg-mime query default image/png | grep -q "imv.desktop" || add_error "Image viewer not set for PNG"
|
|
||||||
xdg-mime query default application/pdf | grep -q "Evince.desktop" || add_error "PDF viewer not set"
|
|
||||||
xdg-mime query default x-scheme-handler/http | grep -q "chromium.desktop" || add_warning "Browser not set to Chromium"
|
|
||||||
xdg-mime query default video/mp4 | grep -q "mpv.desktop" || add_error "Video player not set for MP4"
|
|
||||||
}
|
|
||||||
|
|||||||
26
install/config/mise-ruby.sh
Normal file
26
install/config/mise-ruby.sh
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
# Install Ruby using gcc-14 for compatibility
|
||||||
|
mise settings set ruby.ruby_build_opts "CC=gcc-14 CXX=g++-14"
|
||||||
|
|
||||||
|
# Trust .ruby-version
|
||||||
|
mise settings add idiomatic_version_file_enable_tools ruby
|
||||||
|
|
||||||
|
# Install pre-built Ruby + Rails for x86_64
|
||||||
|
if [[ $(uname -m) == "x86_64" ]]; then
|
||||||
|
RUBY_VERSION="3.4.5"
|
||||||
|
RUBY_TARBALL="ruby-$RUBY_VERSION-rails-8.0.2.1-x86_64.tar.gz"
|
||||||
|
RUBY_URL="https://pkgs.omarchy.org/ruby/$RUBY_TARBALL"
|
||||||
|
MISE_RUBY_DIR="$HOME/.local/share/mise/installs/ruby"
|
||||||
|
OFFLINE_CACHE="/var/cache/omarchy/ruby"
|
||||||
|
|
||||||
|
mkdir -p "$MISE_RUBY_DIR"
|
||||||
|
|
||||||
|
if [[ -n ${OMARCHY_ONLINE_INSTALL:-} ]]; then
|
||||||
|
echo "Downloading pre-built Ruby $RUBY_VERSION..."
|
||||||
|
curl -fsSL "$RUBY_URL" | tar -xz -C "$MISE_RUBY_DIR"
|
||||||
|
else
|
||||||
|
echo "Installing Ruby from offline cache..."
|
||||||
|
tar -xzf "$OFFLINE_CACHE/$RUBY_TARBALL" -C "$MISE_RUBY_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mise use --global "ruby@${RUBY_VERSION}"
|
||||||
|
fi
|
||||||
@@ -1,23 +1,9 @@
|
|||||||
OMARCHY_DESCRIPTION="Mise"
|
# Add ./bin to path for all items in ~/Work
|
||||||
|
mkdir -p "$HOME/Work"
|
||||||
|
|
||||||
omarchy_install() {
|
cat >"$HOME/Work/.mise.toml" <<'EOF'
|
||||||
# Add ./bin to path for all items in ~/Work
|
|
||||||
mkdir -p "$HOME/Work"
|
|
||||||
|
|
||||||
cat >"$HOME/Work/.mise.toml" <<'EOF'
|
|
||||||
[env]
|
[env]
|
||||||
_.path = "{{ cwd }}/bin"
|
_.path = "{{ cwd }}/bin"
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
mise trust ~/Work/.mise.toml
|
mise trust ~/Work/.mise.toml
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
[[ -d "$HOME/Work" ]] || add_error "Work directory missing"
|
|
||||||
|
|
||||||
[[ -f "$HOME/Work/.mise.toml" ]] || add_error "Mise config missing in Work directory"
|
|
||||||
|
|
||||||
if [[ -f "$HOME/Work/.mise.toml" ]]; then
|
|
||||||
grep -q '_.path' "$HOME/Work/.mise.toml" || add_error "Mise path configuration missing"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,14 +1,2 @@
|
|||||||
OMARCHY_DESCRIPTION="SSH Flakiness Fix"
|
# Solve common flakiness with SSH
|
||||||
|
echo "net.ipv4.tcp_mtu_probing=1" | sudo tee -a /etc/sysctl.d/99-sysctl.conf
|
||||||
omarchy_install() {
|
|
||||||
# Solve common flakiness with SSH
|
|
||||||
echo "net.ipv4.tcp_mtu_probing=1" | sudo tee -a /etc/sysctl.d/99-sysctl.conf
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
[[ -f /etc/sysctl.d/99-sysctl.conf ]] || add_error "Sysctl config file missing"
|
|
||||||
|
|
||||||
if [[ -f /etc/sysctl.d/99-sysctl.conf ]]; then
|
|
||||||
grep -q "net.ipv4.tcp_mtu_probing=1" /etc/sysctl.d/99-sysctl.conf || add_error "TCP MTU probing not configured"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,18 +1,3 @@
|
|||||||
OMARCHY_DESCRIPTION="ASDControl Sudoless Brightness Control"
|
# Setup sudo-less controls for controlling brightness on Apple Displays
|
||||||
|
echo "$USER ALL=(ALL) NOPASSWD: /usr/local/bin/asdcontrol" | sudo tee /etc/sudoers.d/asdcontrol
|
||||||
omarchy_install() {
|
sudo chmod 440 /etc/sudoers.d/asdcontrol
|
||||||
# Setup sudo-less controls for controlling brightness on Apple Displays
|
|
||||||
echo "$USER ALL=(ALL) NOPASSWD: /usr/local/bin/asdcontrol" | sudo tee /etc/sudoers.d/asdcontrol
|
|
||||||
sudo chmod 440 /etc/sudoers.d/asdcontrol
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
sudo test -f /etc/sudoers.d/asdcontrol || add_error "ASDControl sudoers file missing"
|
|
||||||
|
|
||||||
if sudo test -f /etc/sudoers.d/asdcontrol; then
|
|
||||||
local perms=$(sudo stat -c %a /etc/sudoers.d/asdcontrol)
|
|
||||||
[[ "$perms" == "440" ]] || add_error "Sudoers file has incorrect permissions: $perms (should be 440)"
|
|
||||||
|
|
||||||
sudo grep -q "NOPASSWD: /usr/local/bin/asdcontrol" /etc/sudoers.d/asdcontrol || add_error "ASDControl sudoers rule not configured"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,52 +1,28 @@
|
|||||||
OMARCHY_DESCRIPTION="Theme"
|
# Set links for Nautilius action icons
|
||||||
|
sudo ln -snf /usr/share/icons/Adwaita/symbolic/actions/go-previous-symbolic.svg /usr/share/icons/Yaru/scalable/actions/go-previous-symbolic.svg
|
||||||
|
sudo ln -snf /usr/share/icons/Adwaita/symbolic/actions/go-next-symbolic.svg /usr/share/icons/Yaru/scalable/actions/go-next-symbolic.svg
|
||||||
|
|
||||||
omarchy_install() {
|
# Setup theme links
|
||||||
# Set links for Nautilius action icons
|
mkdir -p ~/.config/omarchy/themes
|
||||||
sudo ln -snf /usr/share/icons/Adwaita/symbolic/actions/go-previous-symbolic.svg /usr/share/icons/Yaru/scalable/actions/go-previous-symbolic.svg
|
for f in ~/.local/share/omarchy/themes/*; do ln -nfs "$f" ~/.config/omarchy/themes/; done
|
||||||
sudo ln -snf /usr/share/icons/Adwaita/symbolic/actions/go-next-symbolic.svg /usr/share/icons/Yaru/scalable/actions/go-next-symbolic.svg
|
|
||||||
|
|
||||||
# Setup theme links
|
# Set initial theme
|
||||||
mkdir -p ~/.config/omarchy/themes
|
mkdir -p ~/.config/omarchy/current
|
||||||
for f in ~/.local/share/omarchy/themes/*; do ln -nfs "$f" ~/.config/omarchy/themes/; done
|
ln -snf ~/.config/omarchy/themes/tokyo-night ~/.config/omarchy/current/theme
|
||||||
|
ln -snf ~/.config/omarchy/current/theme/backgrounds/1-scenery-pink-lakeside-sunset-lake-landscape-scenic-panorama-7680x3215-144.png ~/.config/omarchy/current/background
|
||||||
|
|
||||||
# Set initial theme
|
# Set specific app links for current theme
|
||||||
mkdir -p ~/.config/omarchy/current
|
ln -snf ~/.config/omarchy/current/theme/neovim.lua ~/.config/nvim/lua/plugins/theme.lua
|
||||||
ln -snf ~/.config/omarchy/themes/tokyo-night ~/.config/omarchy/current/theme
|
|
||||||
ln -snf ~/.config/omarchy/current/theme/backgrounds/1-scenery-pink-lakeside-sunset-lake-landscape-scenic-panorama-7680x3215-144.png ~/.config/omarchy/current/background
|
|
||||||
|
|
||||||
# Set specific app links for current theme
|
mkdir -p ~/.config/btop/themes
|
||||||
ln -snf ~/.config/omarchy/current/theme/neovim.lua ~/.config/nvim/lua/plugins/theme.lua
|
ln -snf ~/.config/omarchy/current/theme/btop.theme ~/.config/btop/themes/current.theme
|
||||||
|
|
||||||
mkdir -p ~/.config/btop/themes
|
mkdir -p ~/.config/mako
|
||||||
ln -snf ~/.config/omarchy/current/theme/btop.theme ~/.config/btop/themes/current.theme
|
ln -snf ~/.config/omarchy/current/theme/mako.ini ~/.config/mako/config
|
||||||
|
|
||||||
mkdir -p ~/.config/mako
|
# Add managed policy directories for Chromium and Brave for theme changes
|
||||||
ln -snf ~/.config/omarchy/current/theme/mako.ini ~/.config/mako/config
|
sudo mkdir -p /etc/chromium/policies/managed
|
||||||
|
sudo chmod a+rw /etc/chromium/policies/managed
|
||||||
|
|
||||||
mkdir -p ~/.config/eza
|
sudo mkdir -p /etc/brave/policies/managed
|
||||||
ln -snf ~/.config/omarchy/current/theme/eza.yml ~/.config/eza/theme.yml
|
sudo chmod a+rw /etc/brave/policies/managed
|
||||||
|
|
||||||
# Add managed policy directories for Chromium and Brave for theme changes
|
|
||||||
sudo mkdir -p /etc/chromium/policies/managed
|
|
||||||
sudo chmod a+rw /etc/chromium/policies/managed
|
|
||||||
|
|
||||||
sudo mkdir -p /etc/brave/policies/managed
|
|
||||||
sudo chmod a+rw /etc/brave/policies/managed
|
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
[[ -d ~/.config/omarchy/themes ]] || add_error "Theme directory missing: ~/.config/omarchy/themes"
|
|
||||||
[[ -L ~/.config/omarchy/current/theme ]] || add_error "Current theme symlink missing"
|
|
||||||
[[ -L ~/.config/omarchy/current/background ]] || add_error "Background symlink missing"
|
|
||||||
|
|
||||||
[[ -L /usr/share/icons/Yaru/scalable/actions/go-previous-symbolic.svg ]] || add_error "Nautilus previous icon not linked"
|
|
||||||
[[ -L /usr/share/icons/Yaru/scalable/actions/go-next-symbolic.svg ]] || add_error "Nautilus next icon not linked"
|
|
||||||
|
|
||||||
[[ -L ~/.config/nvim/lua/plugins/theme.lua ]] || add_error "Neovim theme link missing"
|
|
||||||
[[ -L ~/.config/btop/themes/current.theme ]] || add_error "btop theme link missing"
|
|
||||||
[[ -L ~/.config/mako/config ]] || add_error "mako config link missing"
|
|
||||||
[[ -L ~/.config/eza/theme.yml ]] || add_error "eza theme link missing"
|
|
||||||
|
|
||||||
[[ -d /etc/chromium/policies/managed ]] || add_error "Chromium policy directory missing"
|
|
||||||
[[ -d /etc/brave/policies/managed ]] || add_error "Brave policy directory missing"
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,20 +1,5 @@
|
|||||||
OMARCHY_DESCRIPTION="Timezone Update Permissions"
|
# Ensure timezone can be updated without needing to sudo
|
||||||
|
sudo tee /etc/sudoers.d/omarchy-tzupdate >/dev/null <<EOF
|
||||||
omarchy_install() {
|
|
||||||
# Ensure timezone can be updated without needing to sudo
|
|
||||||
sudo tee /etc/sudoers.d/omarchy-tzupdate >/dev/null <<EOF
|
|
||||||
%wheel ALL=(root) NOPASSWD: /usr/bin/tzupdate, /usr/bin/timedatectl
|
%wheel ALL=(root) NOPASSWD: /usr/bin/tzupdate, /usr/bin/timedatectl
|
||||||
EOF
|
EOF
|
||||||
sudo chmod 0440 /etc/sudoers.d/omarchy-tzupdate
|
sudo chmod 0440 /etc/sudoers.d/omarchy-tzupdate
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
sudo test -f /etc/sudoers.d/omarchy-tzupdate || add_error "Timezone sudoers file missing"
|
|
||||||
|
|
||||||
if sudo test -f /etc/sudoers.d/omarchy-tzupdate; then
|
|
||||||
local perms=$(sudo stat -c %a /etc/sudoers.d/omarchy-tzupdate)
|
|
||||||
[[ "$perms" == "440" ]] || add_error "Sudoers file has incorrect permissions: $perms (should be 440)"
|
|
||||||
|
|
||||||
sudo grep -q "NOPASSWD: /usr/bin/tzupdate, /usr/bin/timedatectl" /etc/sudoers.d/omarchy-tzupdate || add_error "Timezone sudoers rule not configured"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,20 +1,8 @@
|
|||||||
OMARCHY_DESCRIPTION="XCompose"
|
# Set default XCompose that is triggered with CapsLock
|
||||||
|
tee ~/.XCompose >/dev/null <<EOF
|
||||||
omarchy_install() {
|
|
||||||
# Set default XCompose that is triggered with CapsLock
|
|
||||||
tee ~/.XCompose >/dev/null <<EOF
|
|
||||||
include "%H/.local/share/omarchy/default/xcompose"
|
include "%H/.local/share/omarchy/default/xcompose"
|
||||||
|
|
||||||
# Identification
|
# Identification
|
||||||
<Multi_key> <space> <n> : "$OMARCHY_USER_NAME"
|
<Multi_key> <space> <n> : "$OMARCHY_USER_NAME"
|
||||||
<Multi_key> <space> <e> : "$OMARCHY_USER_EMAIL"
|
<Multi_key> <space> <e> : "$OMARCHY_USER_EMAIL"
|
||||||
EOF
|
EOF
|
||||||
}
|
|
||||||
|
|
||||||
omarchy_verify() {
|
|
||||||
[[ -f ~/.XCompose ]] || add_error "XCompose file missing"
|
|
||||||
|
|
||||||
if [[ -f ~/.XCompose ]]; then
|
|
||||||
grep -q "include.*xcompose" ~/.XCompose || add_error "XCompose include directive missing"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user