mirror of
https://github.com/basecamp/omarchy.git
synced 2025-08-03 15:19:24 +00:00
Compare commits
210 Commits
Author | SHA1 | Date | |
---|---|---|---|
f21a808bc5 | |||
2712f268c8 | |||
25ed6460e0 | |||
d3fff87864 | |||
a9b9cbfa34 | |||
d84b521a19 | |||
83e5faf224 | |||
cb08f4ccd2 | |||
1dc8379533 | |||
c78133251a | |||
fb05e59bf6 | |||
5344885176 | |||
2278b400dd | |||
4b027a9242 | |||
e7f086370d | |||
4c650e53de | |||
81aeee437c | |||
9a09d45d6b | |||
933d18fce3 | |||
8f3647c5c5 | |||
8ed29e6ce1 | |||
fe1f6d4c3a | |||
65ba23d0bb | |||
c35311676c | |||
e1f697f914 | |||
8de2566fa4 | |||
3fb1bf9759 | |||
3a5ef9d841 | |||
008ede7bbd | |||
c7020ee875 | |||
1fda1ade8a | |||
cdc37313ad | |||
b8275ca5af | |||
23b9b15936 | |||
2a2c5c90d1 | |||
cf1b671a71 | |||
cb79065e5d | |||
5fda6054ce | |||
f4b684f588 | |||
631b62927a | |||
e923be3f0b | |||
d0c93e3b8a | |||
54d22e9720 | |||
f6a459b26b | |||
f729004306 | |||
63840c6e9a | |||
34f24cb38a | |||
6ecc09abdb | |||
4db468a450 | |||
2823792ba2 | |||
b0b2bf30d8 | |||
343a948ffc | |||
ceee999853 | |||
d56a2bce2b | |||
0a16d502f2 | |||
97dc9e8d50 | |||
8aa8d99d8d | |||
0efd63f021 | |||
06d61be018 | |||
7bca5c1903 | |||
3d22840543 | |||
95de571809 | |||
8673fa41ba | |||
07d88a4b9a | |||
88e62994d1 | |||
1c2b5ea8e0 | |||
f0b1dd286b | |||
7f66623317 | |||
41c40e0e1d | |||
c1a7f5a4e4 | |||
a0aa6862f5 | |||
231438b2ea | |||
a98adc499a | |||
74552b9f6e | |||
49c154cb1f | |||
51f3d15ead | |||
ff5630c64f | |||
d4f6859022 | |||
8c2f51c08c | |||
91f5c4646c | |||
25f4513feb | |||
4c46c2208a | |||
b09d2d68cd | |||
5c98de75d1 | |||
66db3867a6 | |||
4f56efe0e9 | |||
5405d383dc | |||
8ab18c1d38 | |||
c95d14e5e2 | |||
bdf5540cf3 | |||
033b638992 | |||
eb74d4cb6f | |||
1b576eb7f8 | |||
b7cbffc91d | |||
9c5a29def4 | |||
189596cc88 | |||
fbec9b5163 | |||
7f2c9391d2 | |||
bba8802c29 | |||
51fe5bf6e8 | |||
588ce42f08 | |||
c589130d8b | |||
e39ec15197 | |||
7589683cd1 | |||
b1753c1c7c | |||
e8d095c787 | |||
01d6deae34 | |||
478b2da0f1 | |||
9d7ed32fc9 | |||
eca4f65475 | |||
a801fde7b9 | |||
35a603d0d2 | |||
e446c4c71e | |||
2953db18d9 | |||
6e664c84a9 | |||
44925a6085 | |||
a0c90fb3db | |||
008fab9df3 | |||
ffd136cdc6 | |||
0ff139860d | |||
42886f86bb | |||
24e3f752ba | |||
64c6e872fc | |||
65577c1757 | |||
b50a4e7a74 | |||
b322d1cb47 | |||
d503b0cc37 | |||
eeb784d087 | |||
07a16487c0 | |||
c814aa534d | |||
6de445a2a6 | |||
73d8c70e06 | |||
e3bf801654 | |||
b4d75729d9 | |||
68a221e456 | |||
42963368c0 | |||
cf688baa34 | |||
0a8a502cf2 | |||
9844d4ab22 | |||
cec5482483 | |||
bd43aee907 | |||
6afbff2c27 | |||
cc79664efc | |||
162952f102 | |||
f693c33310 | |||
32aa290af5 | |||
fbdbf852eb | |||
5b654d0282 | |||
4929d3e201 | |||
29bfeba5cc | |||
4e9e13f88d | |||
7f3af84a60 | |||
62fb66a74a | |||
cb48956a37 | |||
4e4e82c5b9 | |||
302e92860e | |||
eace29af7d | |||
51e2fa8598 | |||
c081078e72 | |||
3c2559297d | |||
4aa6b6c1f9 | |||
896ad9d97a | |||
83d43a7d8d | |||
1fa2b62fba | |||
d9f9f5212e | |||
ba75889154 | |||
d6ba2af917 | |||
2f12cdc751 | |||
363a9ae4dc | |||
eefb4638e9 | |||
bb2d21c3b7 | |||
ac935bdaed | |||
f25be1d075 | |||
8336788e0a | |||
d60563fe92 | |||
1066415576 | |||
b5f60f78a8 | |||
92c1db9176 | |||
25acc313b1 | |||
0ead8947f7 | |||
37f4d4a411 | |||
c4a08c3c25 | |||
0c36142f8a | |||
65a5bbad82 | |||
165c940df2 | |||
824ba78000 | |||
6d3df204bc | |||
1c14b8eba2 | |||
e01c1bb139 | |||
466fe6caba | |||
10f71885b2 | |||
19c0d2887e | |||
f2b58c2b8e | |||
46d135025e | |||
46e972172c | |||
79df336854 | |||
0d6ea40252 | |||
a76c7ee33b | |||
674c5bfdda | |||
6cd8955409 | |||
db63219398 | |||
42d80f2ce7 | |||
4578d4e418 | |||
7242a57c18 | |||
2d9ed8720b | |||
205bcd7be8 | |||
70da2ecbe8 | |||
66b0fa0227 | |||
d2fffc40ea | |||
8884cc7a5c |
14
ansi.sh
14
ansi.sh
@ -1,14 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
ansi_art=' ▄██████▄ ▄▄▄▄███▄▄▄▄ ▄████████ ▄████████ ▄████████ ▄█ █▄ ▄██ ▄
|
||||
███ ███ ▄██▀▀▀███▀▀▀██▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ██▄
|
||||
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███▄▄▄███
|
||||
███ ███ ███ ███ ███ ███ ███ ▄███▄▄▄▄██▀ ███ ▄███▄▄▄▄███▄▄ ▀▀▀▀▀▀███
|
||||
███ ███ ███ ███ ███ ▀███████████ ▀▀███▀▀▀▀▀ ███ ▀▀███▀▀▀▀███▀ ▄██ ███
|
||||
███ ███ ███ ███ ███ ███ ███ ▀███████████ ███ █▄ ███ ███ ███ ███
|
||||
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
|
||||
▀██████▀ ▀█ ███ █▀ ███ █▀ ███ ███ ████████▀ ███ █▀ ▀█████▀
|
||||
███ ███ '
|
||||
|
||||
clear
|
||||
echo -e "\n$ansi_art\n"
|
55
bin/omarchy
55
bin/omarchy
@ -4,58 +4,40 @@ OMARCHY_VERSION=$(git -C ~/.local/share/omarchy describe --tags --abbrev=0 2>/de
|
||||
PATH="$PATH:$HOME/.local/share/omarchy/bin"
|
||||
|
||||
show_ascii_art() {
|
||||
source ~/.local/share/omarchy/ansi.sh
|
||||
echo " $OMARCHY_VERSION"
|
||||
clear
|
||||
tte -i ~/.local/share/omarchy/logo.txt --frame-rate 640 --no-color expand
|
||||
echo " $OMARCHY_VERSION"
|
||||
}
|
||||
|
||||
main_menu() {
|
||||
show_ascii_art
|
||||
|
||||
local options=("Theme" "Setup" "Update" "Manual" "Exit")
|
||||
local options=("Theme" "Font" "Setup" "Update" "Manual" "Exit")
|
||||
choice=$(printf "%s\n" "${options[@]}" | gum choose --header "") || exit 0
|
||||
case "$choice" in
|
||||
Theme) theme_menu ;;
|
||||
Update) update_menu ;;
|
||||
Font)
|
||||
omarchy-font-menu
|
||||
ack_command
|
||||
main_menu
|
||||
;;
|
||||
Update)
|
||||
omarchy-update
|
||||
main_menu
|
||||
;;
|
||||
Setup) setup_menu ;;
|
||||
Manual) open_manual ;;
|
||||
Exit) clear && exit 0 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
update_menu() {
|
||||
show_ascii_art
|
||||
local menu=("Omarchy" "Waybar" "Walker" "Plymouth" "SwayOSD" "Desktop apps" "Back")
|
||||
local commands=(
|
||||
"omarchy-update"
|
||||
"omarchy-refresh-waybar"
|
||||
"omarchy-refresh-walker"
|
||||
"omarchy-refresh-plymouth"
|
||||
"omarchy-refresh-swayosd"
|
||||
"omarchy-refresh-applications"
|
||||
"main_menu"
|
||||
)
|
||||
local choice
|
||||
choice=$(printf "%s\n" "${menu[@]}" | gum choose --header="Update") || main_menu
|
||||
for i in "${!menu[@]}"; do
|
||||
if [[ "${menu[$i]}" == "$choice" ]]; then
|
||||
if [[ "$choice" == "Back" ]]; then
|
||||
main_menu
|
||||
else
|
||||
eval "${commands[$i]}"
|
||||
ack_command
|
||||
main_menu
|
||||
fi
|
||||
break
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
theme_menu() {
|
||||
show_ascii_art
|
||||
local menu=("Pick" "Install" "Remove" "Back")
|
||||
local menu=("Pick" "Install" "Update" "Remove" "Back")
|
||||
local commands=(
|
||||
"omarchy-theme-menu"
|
||||
"install_theme_prompt"
|
||||
"omarchy-theme-update"
|
||||
"remove_theme_prompt"
|
||||
"main_menu"
|
||||
)
|
||||
@ -95,9 +77,10 @@ remove_theme_prompt() {
|
||||
|
||||
setup_menu() {
|
||||
show_ascii_art
|
||||
local menu=("Dropbox" "Docker DBs" "Fingerprint sensor" "Fido2 device" "Back")
|
||||
local menu=("Dropbox" "Steam" "Docker DBs" "Fingerprint sensor" "Fido2 device" "Back")
|
||||
local commands=(
|
||||
"omarchy-setup-dropbox"
|
||||
"omarchy-setup-steam"
|
||||
"setup_docker_dbs"
|
||||
"omarchy-setup-fingerprint"
|
||||
"omarchy-setup-fido2"
|
||||
@ -126,10 +109,10 @@ setup_docker_dbs() {
|
||||
if [[ -n "$choices" ]]; then
|
||||
for db in $choices; do
|
||||
case $db in
|
||||
MariaDB) sudo docker run -d --restart unless-stopped -p "127.0.0.1:3306:3306" --name=mariadb11 -e MARIADB_ROOT_PASSWORD= -e MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=true mariadb:11.8 ;;
|
||||
MySQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:3306:3306" --name=mysql8 -e MYSQL_ROOT_PASSWORD= -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:8.4 ;;
|
||||
Redis) sudo docker run -d --restart unless-stopped -p "127.0.0.1:6379:6379" --name=redis redis:7 ;;
|
||||
PostgreSQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:5432:5432" --name=postgres16 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:16 ;;
|
||||
MariaDB) sudo docker run -d --restart unless-stopped -p "127.0.0.1:3306:3306" --name=mariadb11 -e MARIADB_ROOT_PASSWORD= -e MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=true mariadb:11.8 ;;
|
||||
Redis) sudo docker run -d --restart unless-stopped -p "127.0.0.1:6379:6379" --name=redis redis:7 ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
@ -14,7 +14,7 @@ get_battery_state() {
|
||||
}
|
||||
|
||||
send_notification() {
|
||||
notify-send -u critical "Battery Low" "Time to recharge! (battery is at ${1}%)" -i battery-caution
|
||||
notify-send -u critical " Time to recharge!" "Battery is down to ${1}%" -i battery-caution -t 30000
|
||||
}
|
||||
|
||||
BATTERY_LEVEL=$(get_battery_percentage)
|
||||
|
@ -2,8 +2,16 @@
|
||||
|
||||
# Set recorder based on GPU
|
||||
|
||||
[[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs
|
||||
OUTPUT_DIR="${OMARCHY_SCREENRECORD_DIR:-${XDG_VIDEOS_DIR:-$HOME/Videos}}"
|
||||
|
||||
if [[ ! -d "$OUTPUT_DIR" ]]; then
|
||||
notify-send "Screen recording directory does not exist: $OUTPUT_DIR" -u critical -t 3000
|
||||
exit 1
|
||||
fi
|
||||
|
||||
screenrecording() {
|
||||
filename="$HOME/Videos/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
|
||||
filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
|
||||
notify-send "Screen recording starting..." -t 1000
|
||||
sleep 1
|
||||
|
||||
@ -17,7 +25,7 @@ screenrecording() {
|
||||
if pgrep -x wl-screenrec >/dev/null || pgrep -x wf-recorder >/dev/null; then
|
||||
pkill -x wl-screenrec
|
||||
pkill -x wf-recorder
|
||||
notify-send "Screen recording saved to ~/Videos" -t 2000
|
||||
notify-send "Screen recording saved to $OUTPUT_DIR" -t 2000
|
||||
elif [[ "$1" == "output" ]]; then
|
||||
screenrecording
|
||||
else
|
||||
|
20
bin/omarchy-cmd-screensaver
Executable file
20
bin/omarchy-cmd-screensaver
Executable file
@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
|
||||
if command -v tte &>/dev/null; then
|
||||
while true; do
|
||||
effect=$(tte 2>&1 | grep -oP '{\K[^}]+' | tr ',' ' ' | tr ' ' '\n' | sed -n '/^beams$/,$p' | sort -u | shuf -n1)
|
||||
tte -i ~/.local/share/omarchy/logo.txt \
|
||||
--frame-rate 240 --canvas-width 0 --canvas-height $(($(tput lines) - 2)) --anchor-canvas c --anchor-text c \
|
||||
"$effect" &
|
||||
|
||||
while pgrep tte >/dev/null; do
|
||||
if read -n 1 -t 0.01; then
|
||||
pkill tte 2>/dev/null
|
||||
pkill -f "alacritty --class Screensaver" 2>/dev/null
|
||||
exit 0
|
||||
fi
|
||||
done
|
||||
done
|
||||
else
|
||||
gum spin --title "Can't find tte. Try: pip install terminaltexteffects" -- sleep 2
|
||||
fi
|
@ -1,8 +1,16 @@
|
||||
#!/bin/bash
|
||||
|
||||
hyprshot -m ${1:-region} --raw |
|
||||
[[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs
|
||||
OUTPUT_DIR="${OMARCHY_SCREENSHOT_DIR:-${XDG_PICTURES_DIR:-$HOME/Pictures}}"
|
||||
|
||||
if [[ ! -d "$OUTPUT_DIR" ]]; then
|
||||
notify-send "Screenshot directory does not exist: $OUTPUT_DIR" -u critical -t 3000
|
||||
exit 1
|
||||
fi
|
||||
|
||||
pkill slurp || hyprshot -m ${1:-region} --raw |
|
||||
satty --filename - \
|
||||
--output-filename ~/Pictures/screenshot-$(date +'%Y-%m-%d_%H-%M-%S').png \
|
||||
--output-filename "$OUTPUT_DIR/screenshot-$(date +'%Y-%m-%d_%H-%M-%S').png" \
|
||||
--early-exit \
|
||||
--actions-on-enter save-to-clipboard \
|
||||
--save-after-copy \
|
||||
|
5
bin/omarchy-cmd-tzupdate
Executable file
5
bin/omarchy-cmd-tzupdate
Executable file
@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
sudo tzupdate
|
||||
new_timezone=$(timedatectl show -p Timezone --value)
|
||||
notify-send "Timezone has been set to $new_timezone"
|
12
bin/omarchy-font-menu
Executable file
12
bin/omarchy-font-menu
Executable file
@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
font=$(
|
||||
fc-list :spacing=100 -f "%{family[0]}\n" |
|
||||
grep -v -i -E 'emoji|signwriting' |
|
||||
sort -u |
|
||||
gum choose --header "Choose terminal font"
|
||||
)
|
||||
|
||||
if [[ -n "$font" ]]; then
|
||||
sed -i "s/family = \".*\"/family = \"$font\"/g" ~/.config/alacritty/alacritty.toml
|
||||
fi
|
19
bin/omarchy-launch-screensaver
Executable file
19
bin/omarchy-launch-screensaver
Executable file
@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Exit early if screensave is already running
|
||||
pgrep -f "alacritty --class Screensaver" && exit 0
|
||||
|
||||
focused=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')
|
||||
|
||||
for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do
|
||||
hyprctl dispatch focusmonitor $m
|
||||
hyprctl dispatch exec -- \
|
||||
alacritty --class Screensaver \
|
||||
-o 'colors.primary.background="#000000"' \
|
||||
-o 'colors.cursor.cursor="#000000"' \
|
||||
-o 'font.size=18' \
|
||||
-o 'window.opacity=1' \
|
||||
-e ~/.local/share/omarchy/bin/omarchy-cmd-screensaver
|
||||
done
|
||||
|
||||
hyprctl dispatch focusmonitor $focused
|
@ -3,34 +3,47 @@
|
||||
# A script to display Hyprland keybindings defined in your configuration
|
||||
# using walker for an interactive search menu.
|
||||
|
||||
USER_HYPRLAND_CONF="$HOME/.config/hypr/hyprland.conf"
|
||||
OMARCHY_BINDINGS_CONF="$HOME/.local/share/omarchy/default/hypr/bindings.conf \
|
||||
$HOME/.local/share/omarchy/default/hypr/bindings/tiling.conf \
|
||||
$HOME/.local/share/omarchy/default/hypr/bindings/utilities.conf \
|
||||
$HOME/.local/share/omarchy/default/hypr/bindings/media.conf"
|
||||
# Fetch dynamic keybindings from Hyprland
|
||||
#
|
||||
# Also do some pre-processing:
|
||||
# - Remove standard Omarchy bin path prefix
|
||||
# - Remove uwsm prefix
|
||||
# - Map numeric modifier key mask to a textual rendition
|
||||
# - Output comma-separated values that the parser can understand
|
||||
dynamic_bindings() {
|
||||
hyprctl -j binds | \
|
||||
jq -r '.[] | {modmask, key, keycode, description, dispatcher, arg} | "\(.modmask),\(.key)@\(.keycode),\(.description),\(.dispatcher),\(.arg)"' | \
|
||||
sed -r \
|
||||
-e 's/null//' \
|
||||
-e 's,~/.local/share/omarchy/bin/,,' \
|
||||
-e 's,uwsm app -- ,,' \
|
||||
-e 's/@0//' \
|
||||
-e 's/,@/,code:/' \
|
||||
-e 's/^0,/,/' \
|
||||
-e 's/^1,/SHIFT,/' \
|
||||
-e 's/^4,/CTRL,/' \
|
||||
-e 's/^5,/SHIFT CTRL,/' \
|
||||
-e 's/^8,/ALT,/' \
|
||||
-e 's/^9,/SHIFT ALT,/' \
|
||||
-e 's/^12,/CTRL ALT,/' \
|
||||
-e 's/^13,/SHIFT CTRL ALT,/' \
|
||||
-e 's/^64,/SUPER,/' \
|
||||
-e 's/^65,/SUPER SHIFT,/' \
|
||||
-e 's/^68,/SUPER CTRL,/' \
|
||||
-e 's/^69,/SUPER SHIFT CTRL,/' \
|
||||
-e 's/^72,/SUPER ALT,/'
|
||||
}
|
||||
|
||||
# Process the configuration file to extract and format keybindings
|
||||
# 1. `grep` finds all lines starting with 'bind' (allowing for leading spaces).
|
||||
# 2. The first `sed` removes comments (anything after a '#').
|
||||
# 3. `awk` does the heavy lifting of formatting the output.
|
||||
# - It sets the field separator to a comma ','.
|
||||
# - It removes the 'bind... =' part from the beginning of the line.
|
||||
# - It joins the key combination (e.g., "SUPER + Q").
|
||||
# - It joins the command that the key executes.
|
||||
# - It prints everything in a nicely aligned format.
|
||||
# 4. The final `sed` cleans up any leftover commas from the end of lines.
|
||||
grep -h '^[[:space:]]*bind' $USER_HYPRLAND_CONF $OMARCHY_BINDINGS_CONF |
|
||||
sed 's/#.*//' |
|
||||
sed '/^[[:space:]]*$/d' |
|
||||
sort -u |
|
||||
# Parse and format keybindings
|
||||
#
|
||||
# `awk` does the heavy lifting:
|
||||
# - Set the field separator to a comma ','.
|
||||
# - Joins the key combination (e.g., "SUPER + Q").
|
||||
# - Joins the command that the key executes.
|
||||
# - Prints everything in a nicely aligned format.
|
||||
parse_bindings() {
|
||||
awk -F, '
|
||||
{
|
||||
# Strip trailing comments
|
||||
sub(/#.*/, "");
|
||||
|
||||
# Remove the "bind... =" part and surrounding whitespace
|
||||
sub(/^[[:space:]]*bind[^=]*=(\+[[:space:]])?(exec, )?[[:space:]]*/, "", $1);
|
||||
|
||||
# Combine the modifier and key (first two fields)
|
||||
key_combo = $1 " + " $2;
|
||||
|
||||
@ -38,27 +51,36 @@ grep -h '^[[:space:]]*bind' $USER_HYPRLAND_CONF $OMARCHY_BINDINGS_CONF |
|
||||
gsub(/^[ \t]*\+?[ \t]*/, "", key_combo);
|
||||
gsub(/[ \t]+$/, "", key_combo);
|
||||
|
||||
# Reconstruct the command from the remaining fields
|
||||
action = "";
|
||||
for (i = 3; i <= NF; i++) {
|
||||
action = action $i (i < NF ? "," : "");
|
||||
}
|
||||
# Use description, if set
|
||||
action = $3;
|
||||
|
||||
# Clean up trailing commas, remove leading "exec, ", and trim
|
||||
sub(/,$/, "", action);
|
||||
gsub(/(^|,)[[:space:]]*exec[[:space:]]*,?/, "", action);
|
||||
gsub(/^[ \t]+|[ \t]+$/, "", action);
|
||||
gsub(/[ \t]+/, " ", key_combo); # Collapse multiple spaces to one
|
||||
if (action == "") {
|
||||
# Reconstruct the command from the remaining fields
|
||||
for (i = 4; i <= NF; i++) {
|
||||
action = action $i (i < NF ? "," : "");
|
||||
}
|
||||
|
||||
# Clean up trailing commas, remove leading "exec, ", and trim
|
||||
sub(/,$/, "", action);
|
||||
gsub(/(^|,)[[:space:]]*exec[[:space:]]*,?/, "", action);
|
||||
gsub(/^[ \t]+|[ \t]+$/, "", action);
|
||||
gsub(/[ \t]+/, " ", key_combo); # Collapse multiple spaces to one
|
||||
|
||||
if (action != "") {
|
||||
# Escape XML entities
|
||||
gsub(/&/, "\\&", action);
|
||||
gsub(/</, "\\<", action);
|
||||
gsub(/>/, "\\>", action);
|
||||
gsub(/"/, "\\"", action);
|
||||
gsub(/'"'"'/, "\\'", action);
|
||||
|
||||
}
|
||||
|
||||
if (action != "") {
|
||||
printf "%-35s → %s\n", key_combo, action;
|
||||
}
|
||||
}' |
|
||||
}'
|
||||
}
|
||||
|
||||
dynamic_bindings | \
|
||||
sort -u | \
|
||||
parse_bindings | \
|
||||
walker --dmenu --theme keybindings -p 'Keybindings'
|
||||
|
@ -2,15 +2,17 @@
|
||||
|
||||
show_power_menu() {
|
||||
# The first characters are invisible sort keys.
|
||||
local menu_options="\u200B Lock
|
||||
\u200C Suspend
|
||||
\u200D Relaunch
|
||||
\u2060 Restart
|
||||
\u2063 Shutdown"
|
||||
local menu_options=" Lock
|
||||
Save
|
||||
Suspend
|
||||
Relaunch
|
||||
Restart
|
||||
Shutdown"
|
||||
local selection=$(echo -e "$menu_options" | walker --dmenu --theme dmenu_150)
|
||||
|
||||
case "$selection" in
|
||||
*Lock*) hyprlock ;;
|
||||
*Save*) ~/.local/share/omarchy/bin/omarchy-launch-screensaver ;;
|
||||
*Suspend*) systemctl suspend ;;
|
||||
*Relaunch*) uwsm stop ;;
|
||||
*Restart*) systemctl reboot ;;
|
||||
|
18
bin/omarchy-migrate
Executable file
18
bin/omarchy-migrate
Executable file
@ -0,0 +1,18 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# Where we store an empty file for each migration that has already been performed.
|
||||
STATE_DIR="$HOME/.local/state/omarchy/migrations"
|
||||
mkdir -p "$STATE_DIR"
|
||||
|
||||
# Run any pending migrations
|
||||
for file in ~/.local/share/omarchy/migrations/*.sh; do
|
||||
filename=$(basename "$file")
|
||||
|
||||
if [[ ! -f "$STATE_DIR/$filename" ]]; then
|
||||
echo -e "\e[32m\nRunning migration (${filename%.sh})\e[0m"
|
||||
source $file
|
||||
touch "$STATE_DIR/$filename"
|
||||
fi
|
||||
done
|
@ -10,7 +10,8 @@ mkdir -p ~/.local/share/applications
|
||||
cp ~/.local/share/omarchy/applications/*.desktop ~/.local/share/applications/
|
||||
cp ~/.local/share/omarchy/applications/hidden/*.desktop ~/.local/share/applications/
|
||||
|
||||
if [ -z "$OMARCHY_BARE" ]; then
|
||||
# Only copy xtras if user is not in bare mode
|
||||
if [[ ! -f ~/.local/state/omarchy/bare.mode ]] && [ -z "$OMARCHY_BARE" ]; then
|
||||
cp ~/.local/share/omarchy/applications/xtras/*.desktop ~/.local/share/applications/
|
||||
fi
|
||||
|
||||
|
35
bin/omarchy-refresh-config
Executable file
35
bin/omarchy-refresh-config
Executable file
@ -0,0 +1,35 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This script deploys ~/.local/share/omarchy/config/X/Y/Z -> ~/.config/X/Y/Z
|
||||
config_file=$1
|
||||
|
||||
if [[ -z "$config_file" ]]; then
|
||||
cat <<USAGE
|
||||
Usage: $0 [config_file]
|
||||
|
||||
Must provide a file path from the .config directory to be refreshed.
|
||||
To copy ~/.local/share/omarchy/config/hypr/hyprlock.conf to ~/.config/hypr/hyprlock.conf
|
||||
|
||||
$0 hypr/hyprlock.conf
|
||||
USAGE
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Backup the destination file (with timestamp) to avoid clobbering (Ex: hyprlock.conf.bak.1753817951)
|
||||
user_config_file="${HOME}/.config/$config_file"
|
||||
default_config_file="${HOME}/.local/share/omarchy/config/$config_file"
|
||||
backup_config_file="$user_config_file.bak.$(date +%s)"
|
||||
|
||||
# Create preliminary backup
|
||||
cp -f "$user_config_file" "$backup_config_file" 2>/dev/null
|
||||
|
||||
# Replace config with new default
|
||||
cp -f "$default_config_file" "$user_config_file" 2>/dev/null
|
||||
|
||||
# Compare and delete/inform accordingly
|
||||
if cmp -s "$user_config_file" "$backup_config_file"; then
|
||||
rm "$backup_config_file"
|
||||
else
|
||||
echo -e "\e[31mReplaced $user_config_file with new Omarchy default.\nSaved backup as ${backup_config_file}.\n\n\e[32mChanges:\e[0m"
|
||||
diff "$user_config_file" "$backup_config_file"
|
||||
fi
|
4
bin/omarchy-refresh-hypridle
Executable file
4
bin/omarchy-refresh-hypridle
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
omarchy-refresh-config hypr/hypridle.conf
|
||||
omarchy-restart-hypridle
|
@ -1,11 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Overwrite local Hyprlock settings with the latest in Omarchy, but create a backup if it differs
|
||||
cp -f ~/.config/hypr/hyprlock.conf ~/.config/hypr/hyprlock.conf.bak 2>/dev/null
|
||||
cp -f ~/.local/share/omarchy/config/hypr/hyprlock.conf ~/.config/hypr/ 2>/dev/null
|
||||
omarchy-refresh-config hypr/hyprlock.conf
|
||||
|
||||
if cmp -s ~/.config/hypr/hyprlock.conf.bak ~/.config/hypr/hyprlock.conf; then
|
||||
rm ~/.config/hypr/hyprlock.conf.bak
|
||||
else
|
||||
echo -e "\e[31mExisting .config/hypr/hyprlock.conf replaced with new Omarchy default, but a .bak file was made.\e[0m"
|
||||
fi
|
||||
|
4
bin/omarchy-refresh-hyprsunset
Executable file
4
bin/omarchy-refresh-hyprsunset
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
omarchy-refresh-config hypr/hyprsunset.conf
|
||||
omarchy-restart-hyprsunset
|
@ -1,13 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
cp -f ~/.config/swayosd/config.toml ~/.config/swayosd/config.toml.bak 2>/dev/null
|
||||
cp -f ~/.local/share/omarchy/config/swayosd/config.toml ~/.config/swayosd/ 3>/dev/null
|
||||
|
||||
if cmp -s ~/.config/swayosd/config.toml.bak ~/.config/swayosd/config.toml; then
|
||||
rm ~/.config/swayosd//config.toml.bak
|
||||
else
|
||||
echo -e "\e[31mExisting .config/swayosd/config.toml replaced with new Omarchy default, but a .bak file was made.\e[0m"
|
||||
fi
|
||||
|
||||
pkill swayosd-server
|
||||
setsid uwsm app -- swayosd-server &>/dev/null &
|
||||
omarchy-refresh-config swayosd/config.toml
|
||||
omarchy-refresh-config swayosd/style.css
|
||||
omarchy-restart-swayosd
|
||||
|
@ -1,13 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
cp -f ~/.config/walker/config.toml ~/.config/walker/config.toml.bak 2>/dev/null
|
||||
cp -f ~/.local/share/omarchy/config/walker/config.toml ~/.config/walker/ 2>/dev/null
|
||||
|
||||
if cmp -s ~/.config/walker/config.toml.bak ~/.config/walker/config.toml; then
|
||||
rm ~/.config/walker/config.toml.bak
|
||||
else
|
||||
echo -e "\e[31mExisting .config/walker/config.toml replaced with new Omarchy default, but a .bak file was made.\e[0m"
|
||||
fi
|
||||
|
||||
pkill walker
|
||||
uwsm app -- walker --gapplication-service &
|
||||
omarchy-refresh-config walker/config.toml
|
||||
omarchy-restart-walker
|
||||
|
@ -1,25 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Backup existing settings
|
||||
cp -f ~/.config/waybar/config.jsonc ~/.config/waybar/config.jsonc.bak 2>/dev/null
|
||||
cp -f ~/.config/waybar/style.css ~/.config/waybar/style.css.bak 2>/dev/null
|
||||
|
||||
# Overwrite local waybar settings with the latest in Omarchy
|
||||
cp -f ~/.local/share/omarchy/config/waybar/config.jsonc ~/.config/waybar/ 2>/dev/null
|
||||
cp -f ~/.local/share/omarchy/config/waybar/style.css ~/.config/waybar/ 2>/dev/null
|
||||
|
||||
# Remove identical backup files
|
||||
if cmp -s ~/.config/waybar/config.jsonc.bak ~/.config/waybar/config.jsonc; then
|
||||
rm ~/.config/waybar/config.jsonc.bak
|
||||
else
|
||||
echo -e "\e[31mExisting .config/waybar/config.jsonc replaced with new Omarchy default, but a .bak file was made.\e[0m"
|
||||
fi
|
||||
|
||||
if cmp -s ~/.config/waybar/style.css.bak ~/.config/waybar/style.css; then
|
||||
rm ~/.config/waybar/style.css.bak
|
||||
else
|
||||
echo -e "\e[31mExisting .config/waybar/style.css replaced with new Omarchy default, but a .bak file was made.\e[0m"
|
||||
fi
|
||||
|
||||
# Restart waybar
|
||||
pkill -SIGUSR2 waybar
|
||||
omarchy-refresh-config waybar/config.jsonc
|
||||
omarchy-refresh-config waybar/style.css
|
||||
omarchy-restart-waybar
|
||||
|
4
bin/omarchy-restart-app
Executable file
4
bin/omarchy-restart-app
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
pkill -x $1
|
||||
setsid uwsm app -- $1 >/dev/null 2>&1 &
|
3
bin/omarchy-restart-hypridle
Executable file
3
bin/omarchy-restart-hypridle
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
|
||||
omarchy-restart-app hypridle
|
3
bin/omarchy-restart-hyprsunset
Executable file
3
bin/omarchy-restart-hyprsunset
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
|
||||
omarchy-restart-app hyprsunset
|
3
bin/omarchy-restart-swayosd
Executable file
3
bin/omarchy-restart-swayosd
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
|
||||
omarchy-restart-app swayosd-server
|
4
bin/omarchy-restart-walker
Executable file
4
bin/omarchy-restart-walker
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
pkill walker
|
||||
setsid uwsm app -- walker --gapplication-service &
|
3
bin/omarchy-restart-waybar
Executable file
3
bin/omarchy-restart-waybar
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
|
||||
omarchy-restart-app waybar
|
3
bin/omarchy-restart-xcompose
Executable file
3
bin/omarchy-restart-xcompose
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
|
||||
omarchy-restart-app fcitx5
|
9
bin/omarchy-setup-steam
Executable file
9
bin/omarchy-setup-steam
Executable file
@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo "Adding multilib repository for 32-bit compatibility"
|
||||
sudo sed -i '/^\s*#\[multilib\]/,/^$/{s/^\s*#//}' /etc/pacman.conf
|
||||
sudo pacman -Sy
|
||||
|
||||
echo "Now pick dependencies matching your graphics card"
|
||||
yay -S steam
|
||||
gtk-launch steam >/dev/null 2>&1 &
|
@ -11,7 +11,7 @@ TOTAL=${#BACKGROUNDS[@]}
|
||||
if [[ $TOTAL -eq 0 ]]; then
|
||||
notify-send "No background was found for theme" -t 2000
|
||||
pkill -x swaybg
|
||||
uwsm app -- swaybg --color '#000000' >/dev/null 2>&1 &
|
||||
setsid uwsm app -- swaybg --color '#000000' >/dev/null 2>&1 &
|
||||
else
|
||||
# Get current background from symlink
|
||||
if [[ -L "$CURRENT_BACKGROUND_LINK" ]]; then
|
||||
@ -44,5 +44,5 @@ else
|
||||
|
||||
# Relaunch swaybg
|
||||
pkill -x swaybg
|
||||
uwsm app -- swaybg -i "$CURRENT_BACKGROUND_LINK" -m fill >/dev/null 2>&1 &
|
||||
setsid uwsm app -- swaybg -i "$CURRENT_BACKGROUND_LINK" -m fill >/dev/null 2>&1 &
|
||||
fi
|
||||
|
@ -12,9 +12,6 @@ REPO_URL="$1"
|
||||
THEMES_DIR="$HOME/.config/omarchy/themes"
|
||||
THEME_NAME=$(basename "$REPO_URL" .git | sed -E 's/^omarchy-//; s/-theme$//')
|
||||
THEME_PATH="$THEMES_DIR/$THEME_NAME"
|
||||
THEME_BACKGROUND_PATH="$THEME_PATH/backgrounds"
|
||||
BACKGROUNDS_PATH="$HOME/.config/omarchy/backgrounds"
|
||||
BACKGROUNDS_THEME_PATH="$BACKGROUNDS_PATH/$THEME_NAME"
|
||||
|
||||
# Remove existing theme if present
|
||||
if [ -d "$THEME_PATH" ]; then
|
||||
@ -27,10 +24,5 @@ if ! git clone "$REPO_URL" "$THEME_PATH"; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Link backgrounds if present
|
||||
if [ -d $THEME_BACKGROUND_PATH ]; then
|
||||
ln -snf $THEME_BACKGROUND_PATH $BACKGROUNDS_THEME_PATH
|
||||
fi
|
||||
|
||||
# Apply the new theme with omarchy-theme-set
|
||||
omarchy-theme-set $THEME_NAME
|
||||
|
@ -6,7 +6,7 @@ CURRENT_THEME_NAME=$(basename "$(realpath "$CURRENT_THEME_DIR")")
|
||||
|
||||
# Build themes list with pretty display names
|
||||
mapfile -t themes < <(
|
||||
find "$THEMES_DIR" -mindepth 1 -maxdepth 1 \( -type d -o -type l \) | while read -r path; do
|
||||
find "$THEMES_DIR" -mindepth 1 -maxdepth 1 \( -type d -o -type l \) | sort | while read -r path; do
|
||||
filename=$(basename "$path")
|
||||
display_name=$(echo "$filename" | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g')
|
||||
|
||||
@ -15,7 +15,7 @@ mapfile -t themes < <(
|
||||
else
|
||||
echo "$display_name"
|
||||
fi
|
||||
done | sort
|
||||
done
|
||||
)
|
||||
|
||||
# Show Walker menu
|
||||
|
@ -32,12 +32,19 @@ else
|
||||
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
|
||||
|
||||
# Trigger alacritty config reload
|
||||
touch "$HOME/.config/alacritty/alacritty.toml"
|
||||
|
||||
# Restart components to apply new theme
|
||||
pkill -SIGUSR2 btop
|
||||
pkill -SIGUSR2 waybar
|
||||
"$HOME/.local/share/omarchy/bin/omarchy-restart-waybar"
|
||||
pkill swayosd-server
|
||||
setsid uwsm app -- swayosd-server &>/dev/null &
|
||||
makoctl reload
|
||||
|
4
bin/omarchy-theme-update
Executable file
4
bin/omarchy-theme-update
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
for dir in ~/.config/omarchy/themes/*/; do
|
||||
[ -d "$dir" ] && [ ! -L "${dir%/}" ] && echo "Updating: $(basename "$dir")" && git -C "$dir" pull
|
||||
done
|
25
bin/omarchy-toggle-nightlight
Executable file
25
bin/omarchy-toggle-nightlight
Executable file
@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Default temperature values
|
||||
ON_TEMP=4000
|
||||
OFF_TEMP=6500
|
||||
|
||||
# Query the current temperature
|
||||
CURRENT_TEMP=$(hyprctl hyprsunset temperature 2>/dev/null | grep -oE '[0-9]+')
|
||||
|
||||
restart_nightlighted_waybar() {
|
||||
if grep -q "custom/nightlight" ~/.config/waybar/config.jsonc; then
|
||||
omarchy-restart-waybar # restart waybar in case user has waybar module for hyprsunset
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ "$CURRENT_TEMP" == "$OFF_TEMP" ]]; then
|
||||
hyprctl hyprsunset temperature $ON_TEMP
|
||||
notify-send " Nightlight screen temperature"
|
||||
restart_nightlighted_waybar
|
||||
else
|
||||
hyprctl hyprsunset temperature $OFF_TEMP
|
||||
notify-send " Daylight screen temperature"
|
||||
restart_nightlighted_waybar
|
||||
fi
|
||||
|
@ -1,31 +1,25 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd ~/.local/share/omarchy
|
||||
# Exit immediately if a command exits with a non-zero status
|
||||
set -e
|
||||
|
||||
if [[ $1 == "all" ]]; then
|
||||
# Run all migrations since the root commit
|
||||
migration_starting_point=$(git log --max-parents=0 --first-parent --format="%H")
|
||||
else
|
||||
# Remember the commit we're at before upgrading in order to only run new migrations
|
||||
migration_starting_point=$(git log -1 --format=%H)
|
||||
fi
|
||||
# Show logo
|
||||
clear
|
||||
cat <~/.local/share/omarchy/logo.txt
|
||||
|
||||
# Get the latest while trying to preserve any modifications
|
||||
git pull --autostash
|
||||
git diff --check || git reset --merge
|
||||
omarchy_path=~/.local/share/omarchy
|
||||
git -C $omarchy_path pull --autostash
|
||||
git -C $omarchy_path diff --check || git -C $omarchy_path reset --merge
|
||||
|
||||
# Run any pending migrations
|
||||
for file in $(git diff --name-only --diff-filter=A $migration_starting_point.. migrations/*.sh); do
|
||||
filename=$(basename "$file")
|
||||
migrate_at="${filename%.sh}"
|
||||
|
||||
echo -e "\e[32m\nRunning migration ($migrate_at)\e[0m"
|
||||
source $file
|
||||
done
|
||||
# Run migrations
|
||||
"$HOME/.local/share/omarchy/bin/omarchy-migrate"
|
||||
|
||||
# Update system packages
|
||||
echo -e "\e[32m\nUpdate system packages\e[0m"
|
||||
yay -Syu --noconfirm
|
||||
|
||||
# Back to where we came from
|
||||
cd - >/dev/null
|
||||
# Offer to reboot if the kernel has been changed
|
||||
if [ "$(uname -r | sed 's/-arch/\.arch/')" != "$(pacman -Q linux | awk '{print $2}')" ]; then
|
||||
gum confirm "Linux kernel has been updated. Reboot?" && sudo reboot now
|
||||
fi
|
||||
|
13
bin/omarchy-update-available
Executable file
13
bin/omarchy-update-available
Executable file
@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
|
||||
omarchy_path="$HOME/.local/share/omarchy"
|
||||
latest_tag=$(git -C $omarchy_path ls-remote --tags origin | grep -v "{}" | awk '{print $2}' | sed 's#refs/tags/##' | sort -V | tail -n 1)
|
||||
current_tag=$(git -C $omarchy_path describe --tags $(git -C $omarchy_path rev-list --tags --max-count=1))
|
||||
|
||||
if [[ "$current_tag" != "$latest_tag" ]]; then
|
||||
echo "Omarchy update available ($latest_tag)"
|
||||
exit 0
|
||||
else
|
||||
echo "Omarchy is up to date ($current_tag)"
|
||||
exit 1
|
||||
fi
|
27
boot.sh
27
boot.sh
@ -1,22 +1,27 @@
|
||||
#!/bin/bash
|
||||
|
||||
ansi_art=' ▄██████▄ ▄▄▄▄███▄▄▄▄ ▄████████ ▄████████ ▄████████ ▄█ █▄ ▄██ ▄
|
||||
███ ███ ▄██▀▀▀███▀▀▀██▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ██▄
|
||||
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███▄▄▄███
|
||||
███ ███ ███ ███ ███ ███ ███ ▄███▄▄▄▄██▀ ███ ▄███▄▄▄▄███▄▄ ▀▀▀▀▀▀███
|
||||
███ ███ ███ ███ ███ ▀███████████ ▀▀███▀▀▀▀▀ ███ ▀▀███▀▀▀▀███▀ ▄██ ███
|
||||
███ ███ ███ ███ ███ ███ ███ ▀███████████ ███ █▄ ███ ███ ███ ███
|
||||
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
|
||||
▀██████▀ ▀█ ███ █▀ ███ █▀ ███ ███ ████████▀ ███ █▀ ▀█████▀
|
||||
███ ███ '
|
||||
ansi_art=' ▄▄▄
|
||||
▄█████▄ ▄███████████▄ ▄███████ ▄███████ ▄███████ ▄█ █▄ ▄█ █▄
|
||||
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
|
||||
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███ ███
|
||||
███ ███ ███ ███ ███ ▄███▄▄▄███ ▄███▄▄▄██▀ ███ ▄███▄▄▄███▄ ███▄▄▄███
|
||||
███ ███ ███ ███ ███ ▀███▀▀▀███ ▀███▀▀▀▀ ███ ▀▀███▀▀▀███ ▀▀▀▀▀▀███
|
||||
███ ███ ███ ███ ███ ███ ███ ██████████ ███ █▄ ███ ███ ▄██ ███
|
||||
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
|
||||
▀█████▀ ▀█ ███ █▀ ███ █▀ ███ ███ ███████▀ ███ █▀ ▀█████▀
|
||||
███ █▀ '
|
||||
|
||||
clear
|
||||
echo -e "\n$ansi_art\n"
|
||||
|
||||
sudo pacman -Sy --noconfirm --needed git
|
||||
|
||||
echo -e "\nCloning Omarchy..."
|
||||
# Use custom repo if specified, otherwise default to basecamp/omarchy
|
||||
OMARCHY_REPO="${OMARCHY_REPO:-basecamp/omarchy}"
|
||||
|
||||
echo -e "\nCloning Omarchy from: https://github.com/${OMARCHY_REPO}.git"
|
||||
rm -rf ~/.local/share/omarchy/
|
||||
git clone https://github.com/basecamp/omarchy.git ~/.local/share/omarchy >/dev/null
|
||||
git clone "https://github.com/${OMARCHY_REPO}.git" ~/.local/share/omarchy >/dev/null
|
||||
|
||||
# Use custom branch if instructed
|
||||
if [[ -n "$OMARCHY_REF" ]]; then
|
||||
|
@ -1,144 +1,149 @@
|
||||
{
|
||||
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
|
||||
"logo": {
|
||||
"padding": {
|
||||
"top": 5,
|
||||
"right": 6
|
||||
}
|
||||
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
|
||||
"logo": {
|
||||
"padding": {
|
||||
"top": 5,
|
||||
"right": 6
|
||||
}
|
||||
},
|
||||
"modules": [
|
||||
"break",
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "\u001b[90m┌──────────────────────Hardware──────────────────────┐"
|
||||
},
|
||||
"modules": [
|
||||
"break",
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "\u001b[90m┌──────────────────────Hardware──────────────────────┐"
|
||||
},
|
||||
{
|
||||
"type": "host",
|
||||
"key": " PC",
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "cpu",
|
||||
"key": "│ ├",
|
||||
"showPeCoreCount": true,
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "gpu",
|
||||
"key": "│ ├",
|
||||
"detectionMethod": "pci",
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "display",
|
||||
"key": "│ ├",
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "disk",
|
||||
"key": "│ ├",
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "memory",
|
||||
"key": "│ ├",
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "swap",
|
||||
"key": "└ └ ",
|
||||
"keyColor": "green",
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "\u001b[90m└────────────────────────────────────────────────────┘"
|
||||
},
|
||||
"break",
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "\u001b[90m┌──────────────────────Software──────────────────────┐"
|
||||
},
|
||||
{
|
||||
"type": "os",
|
||||
"key": " OS",
|
||||
"keyColor": "yellow"
|
||||
},
|
||||
{
|
||||
"type": "kernel",
|
||||
"key": "│ ├",
|
||||
"keyColor": "yellow"
|
||||
},
|
||||
{
|
||||
"type": "packages",
|
||||
"key": "│ ├",
|
||||
"keyColor": "yellow"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"key": "└ └",
|
||||
"keyColor": "yellow"
|
||||
},
|
||||
"break",
|
||||
{
|
||||
"type": "de",
|
||||
"key": " DE",
|
||||
"keyColor": "blue"
|
||||
},
|
||||
{
|
||||
"type": "wm",
|
||||
"key": "│ ├",
|
||||
"keyColor": "blue"
|
||||
},
|
||||
{
|
||||
"type": "wmtheme",
|
||||
"key": "│ ├",
|
||||
"keyColor": "blue"
|
||||
},
|
||||
{
|
||||
"type": "icons",
|
||||
"key": "│ ├",
|
||||
"keyColor": "blue",
|
||||
},
|
||||
{
|
||||
"type": "cursor",
|
||||
"key": "│ ├",
|
||||
"keyColor": "blue",
|
||||
},
|
||||
{
|
||||
"type": "terminalfont",
|
||||
"key": "│ ├",
|
||||
"keyColor": "blue",
|
||||
},
|
||||
{
|
||||
"type": "terminal",
|
||||
"key": "└ └",
|
||||
"keyColor": "blue"
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "\u001b[90m└────────────────────────────────────────────────────┘"
|
||||
},
|
||||
"break",
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "\u001b[90m┌────────────────────Uptime / Age────────────────────┐"
|
||||
},
|
||||
{
|
||||
"type": "command",
|
||||
"key": " OS Age ",
|
||||
"keyColor": "magenta",
|
||||
"text": "birth_install=$(stat -c %W /); current=$(date +%s); time_progression=$((current - birth_install)); days_difference=$((time_progression / 86400)); echo $days_difference days"
|
||||
},
|
||||
{
|
||||
"type": "uptime",
|
||||
"key": " Uptime ",
|
||||
"keyColor": "magenta"
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "\u001b[90m└────────────────────────────────────────────────────┘"
|
||||
},
|
||||
"break",
|
||||
]
|
||||
{
|
||||
"type": "host",
|
||||
"key": " PC",
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "cpu",
|
||||
"key": "│ ├",
|
||||
"showPeCoreCount": true,
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "gpu",
|
||||
"key": "│ ├",
|
||||
"detectionMethod": "pci",
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "display",
|
||||
"key": "│ ├",
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "disk",
|
||||
"key": "│ ├",
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "memory",
|
||||
"key": "│ ├",
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "swap",
|
||||
"key": "└ └ ",
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "\u001b[90m└────────────────────────────────────────────────────┘"
|
||||
},
|
||||
"break",
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "\u001b[90m┌──────────────────────Software──────────────────────┐"
|
||||
},
|
||||
{
|
||||
"type": "os",
|
||||
"key": " OS",
|
||||
"keyColor": "yellow"
|
||||
},
|
||||
{
|
||||
"type": "kernel",
|
||||
"key": "│ ├",
|
||||
"keyColor": "yellow"
|
||||
},
|
||||
{
|
||||
"type": "packages",
|
||||
"key": "│ ├",
|
||||
"keyColor": "yellow"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"key": "└ └",
|
||||
"keyColor": "yellow"
|
||||
},
|
||||
"break",
|
||||
{
|
||||
"type": "command",
|
||||
"key": "│ ├Ø",
|
||||
"keyColor": "blue",
|
||||
"text": "version=$(git -C ~/.local/share/omarchy describe --tags --abbrev=0 2>/dev/null); echo \"Omarchy $version\""
|
||||
},
|
||||
{
|
||||
"type": "de",
|
||||
"key": " DE",
|
||||
"keyColor": "blue"
|
||||
},
|
||||
{
|
||||
"type": "wm",
|
||||
"key": "│ ├",
|
||||
"keyColor": "blue"
|
||||
},
|
||||
{
|
||||
"type": "wmtheme",
|
||||
"key": "│ ├",
|
||||
"keyColor": "blue"
|
||||
},
|
||||
{
|
||||
"type": "icons",
|
||||
"key": "│ ├",
|
||||
"keyColor": "blue"
|
||||
},
|
||||
{
|
||||
"type": "cursor",
|
||||
"key": "│ ├",
|
||||
"keyColor": "blue"
|
||||
},
|
||||
{
|
||||
"type": "terminalfont",
|
||||
"key": "│ ├",
|
||||
"keyColor": "blue"
|
||||
},
|
||||
{
|
||||
"type": "terminal",
|
||||
"key": "└ └",
|
||||
"keyColor": "blue"
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "\u001b[90m└────────────────────────────────────────────────────┘"
|
||||
},
|
||||
"break",
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "\u001b[90m┌────────────────────Uptime / Age────────────────────┐"
|
||||
},
|
||||
{
|
||||
"type": "command",
|
||||
"key": " OS Age ",
|
||||
"keyColor": "magenta",
|
||||
"text": "birth_install=$(stat -c %W /); current=$(date +%s); time_progression=$((current - birth_install)); days_difference=$((time_progression / 86400)); echo $days_difference days"
|
||||
},
|
||||
{
|
||||
"type": "uptime",
|
||||
"key": " Uptime ",
|
||||
"keyColor": "magenta"
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "\u001b[90m└────────────────────────────────────────────────────┘"
|
||||
},
|
||||
"break"
|
||||
]
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,14 @@
|
||||
general {
|
||||
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
|
||||
before_sleep_cmd = loginctl lock-session # lock before suspend.
|
||||
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
|
||||
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
|
||||
before_sleep_cmd = loginctl lock-session # lock before suspend.
|
||||
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
|
||||
on_lock_cmd = pkill -f "alacritty --class Screensaver" # avoid running screensaver when locked
|
||||
on_unlock_cmd = omarchy-restart-waybar # prevent stacking of waybar when waking
|
||||
}
|
||||
|
||||
listener {
|
||||
timeout = 180 # 2.5min
|
||||
on-timeout = pidof hyprlock || omarchy-launch-screensaver # start screensaver (if we haven't locked already)
|
||||
}
|
||||
|
||||
listener {
|
||||
|
@ -23,26 +23,26 @@ $terminal = uwsm app -- alacritty
|
||||
$browser = uwsm app -- chromium --new-window --ozone-platform=wayland
|
||||
$webapp = $browser --app
|
||||
|
||||
bind = SUPER, return, exec, $terminal
|
||||
bind = SUPER, F, exec, uwsm app -- nautilus --new-window
|
||||
bind = SUPER, B, exec, $browser
|
||||
bind = SUPER, M, exec, uwsm app -- spotify
|
||||
bind = SUPER, N, exec, $terminal -e nvim
|
||||
bind = SUPER, T, exec, $terminal -e btop
|
||||
bind = SUPER, D, exec, $terminal -e lazydocker
|
||||
bind = SUPER, G, exec, uwsm app -- signal-desktop
|
||||
bind = SUPER, O, exec, uwsm app -- obsidian -disable-gpu
|
||||
bind = SUPER, slash, exec, uwsm app -- 1password
|
||||
bindd = SUPER, return, Terminal, exec, $terminal
|
||||
bindd = SUPER, F, File manager, exec, uwsm app -- nautilus --new-window
|
||||
bindd = SUPER, B, Browser, exec, $browser
|
||||
bindd = SUPER, M, Music, exec, uwsm app -- spotify
|
||||
bindd = SUPER, N, Neovim, exec, $terminal -e nvim
|
||||
bindd = SUPER, T, Activity, exec, $terminal -e btop
|
||||
bindd = SUPER, D, Docker, exec, $terminal -e lazydocker
|
||||
bindd = SUPER, G, Signal, exec, uwsm app -- signal-desktop
|
||||
bindd = SUPER, O, Obsidian, exec, uwsm app -- obsidian -disable-gpu
|
||||
bindd = SUPER, slash, Passwords, exec, uwsm app -- 1password
|
||||
|
||||
bind = SUPER, A, exec, $webapp="https://chatgpt.com"
|
||||
bind = SUPER SHIFT, A, exec, $webapp="https://grok.com"
|
||||
bind = SUPER, C, exec, $webapp="https://app.hey.com/calendar/weeks/"
|
||||
bind = SUPER, E, exec, $webapp="https://app.hey.com"
|
||||
bind = SUPER, Y, exec, $webapp="https://youtube.com/"
|
||||
bind = SUPER SHIFT, G, exec, $webapp="https://web.whatsapp.com/"
|
||||
bind = SUPER ALT, G, exec, $webapp="https://messages.google.com/web/conversations"
|
||||
bind = SUPER, X, exec, $webapp="https://x.com/"
|
||||
bind = SUPER SHIFT, X, exec, $webapp="https://x.com/compose/post"
|
||||
bindd = SUPER, A, ChatGPT, exec, $webapp="https://chatgpt.com"
|
||||
bindd = SUPER SHIFT, A, Grok, exec, $webapp="https://grok.com"
|
||||
bindd = SUPER, C, Calendar, exec, $webapp="https://app.hey.com/calendar/weeks/"
|
||||
bindd = SUPER, E, Email, exec, $webapp="https://app.hey.com"
|
||||
bindd = SUPER, Y, YouTube, exec, $webapp="https://youtube.com/"
|
||||
bindd = SUPER SHIFT, G, WhatsApp, exec, $webapp="https://web.whatsapp.com/"
|
||||
bindd = SUPER ALT, G, Google Messages, exec, $webapp="https://messages.google.com/web/conversations"
|
||||
bindd = SUPER, X, X, exec, $webapp="https://x.com/"
|
||||
bindd = SUPER SHIFT, X, X Post, exec, $webapp="https://x.com/compose/post"
|
||||
|
||||
# Extra autostart processes
|
||||
# exec-once = uwsm app -- my-service
|
||||
|
6
config/hypr/hyprsunset.conf
Normal file
6
config/hypr/hyprsunset.conf
Normal file
@ -0,0 +1,6 @@
|
||||
# Makes hyprsunset do nothing to the screen by default
|
||||
# Without this, the default applies some tint to the monitor
|
||||
profile {
|
||||
time = 00:00
|
||||
identity = true
|
||||
}
|
@ -1,17 +1,20 @@
|
||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||
|
||||
# Change to 1 if on a 1x display (then change last "auto" to 1 in monitor=)
|
||||
# Change to something like 1.75 for fractional scaling (can work well with 1.66667 monitor scaling)
|
||||
# Note: You must relaunch Hyprland after changing any env like this (use Super+Esc, then Relaunch)
|
||||
env = GDK_SCALE,2
|
||||
|
||||
# Use single default monitor (see all monitors with: hyprctl monitors)
|
||||
# List current monitors and resolutions possible: hyprctl monitors
|
||||
# Format: monitor = [port], resolution, position, scale
|
||||
# You must relaunch Hyprland after changing any envs (use Super+Esc, then Relaunch)
|
||||
|
||||
# Optimized for retina-class 2x displays, like 13" 2.8K, 27" 5K, 32" 6K.
|
||||
env = GDK_SCALE,2
|
||||
monitor=,preferred,auto,auto
|
||||
|
||||
# Exmaple for fractional scaling that works well with GDK_SCALE,1.75
|
||||
# Good compromise for 27" or 32" 4K monitors (but fractional!)
|
||||
# env = GDK_SCALE,1.75
|
||||
# monitor=,preferred,auto,1.666667
|
||||
|
||||
# Straight 1x setup for low-resolution displays like 1080p or 1440p
|
||||
# env = GDK_SCALE,1
|
||||
# monitor=,preferred,auto,1
|
||||
|
||||
# Example for Framework 13 w/ 6K XDR Apple display
|
||||
# monitor = DP-5, 6016x3384@60.00, auto, 2
|
||||
# monitor = eDP-1, 2880x1920@120.00, auto, 2
|
||||
# monitor = DP-5, 6016x3384@60, auto, 2
|
||||
# monitor = eDP-1, 2880x1920@120, auto, 2
|
||||
|
@ -6,7 +6,7 @@ theme = "omarchy-default"
|
||||
theme_base = []
|
||||
theme_location = ["~/.local/share/omarchy/default/walker/themes/"]
|
||||
monitor = ""
|
||||
hotreload_theme = false
|
||||
hotreload_theme = true
|
||||
as_window = false
|
||||
timeout = 0
|
||||
disable_click_to_close = false
|
||||
@ -42,7 +42,7 @@ on_query_change = ""
|
||||
[list]
|
||||
dynamic_sub = true
|
||||
keyboard_scroll_style = "emacs"
|
||||
max_entries = 50
|
||||
max_entries = 200
|
||||
show_initial_entries = true
|
||||
single_click = true
|
||||
visibility_threshold = 20
|
||||
@ -139,6 +139,7 @@ name = "Calculator"
|
||||
icon = "accessories-calculator"
|
||||
placeholder = "Calculator"
|
||||
min_chars = 3 # Min chars to calculate. 3 allows "3+3"
|
||||
prefix = "="
|
||||
|
||||
[builtins.windows]
|
||||
weight = 5
|
||||
@ -198,20 +199,21 @@ typeahead = true
|
||||
hidden = true
|
||||
|
||||
[builtins.finder]
|
||||
use_fd = false
|
||||
use_fd = true
|
||||
fd_flags = "--ignore-vcs --type file --type directory"
|
||||
cmd_alt = "xdg-open $(dirname ~/%RESULT%)"
|
||||
weight = 5
|
||||
icon = "file"
|
||||
name = "finder"
|
||||
name = "Finder"
|
||||
placeholder = "Finder"
|
||||
switcher_only = true
|
||||
ignore_gitignore = true
|
||||
refresh = true
|
||||
concurrency = 8
|
||||
show_icon_when_single = true
|
||||
preview_images = false
|
||||
hidden = true
|
||||
preview_images = true
|
||||
hidden = false
|
||||
prefix = "."
|
||||
|
||||
[builtins.runner]
|
||||
eager_loading = true
|
||||
|
@ -8,7 +8,8 @@
|
||||
"hyprland/workspaces"
|
||||
],
|
||||
"modules-center": [
|
||||
"clock"
|
||||
"clock",
|
||||
"custom/update"
|
||||
],
|
||||
"modules-right": [
|
||||
"group/tray-expander",
|
||||
@ -42,6 +43,12 @@
|
||||
"5": []
|
||||
}
|
||||
},
|
||||
"custom/update": {
|
||||
"format": "",
|
||||
"exec": "~/.local/share/omarchy/bin/omarchy-update-available",
|
||||
"on-click": "alacritty --class Omarchy --title Omarchy -e omarchy-update",
|
||||
"interval": 3600
|
||||
},
|
||||
"cpu": {
|
||||
"interval": 5,
|
||||
"format": "",
|
||||
@ -50,7 +57,8 @@
|
||||
"clock": {
|
||||
"format": "{:%A %H:%M}",
|
||||
"format-alt": "{:%d %B W%V %Y}",
|
||||
"tooltip": false
|
||||
"tooltip": false,
|
||||
"on-click-right": "~/.local/share/omarchy/bin/omarchy-cmd-tzupdate"
|
||||
},
|
||||
"network": {
|
||||
"format-icons": ["","","","",""],
|
||||
|
@ -26,6 +26,10 @@
|
||||
min-width: 9px;
|
||||
}
|
||||
|
||||
#workspaces button.empty {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
#tray,
|
||||
#cpu,
|
||||
#battery,
|
||||
|
@ -1,3 +1,4 @@
|
||||
# Editor used by CLI
|
||||
export EDITOR="nvim"
|
||||
export SUDO_EDITOR="$EDITOR"
|
||||
export BAT_THEME=ansi
|
||||
|
@ -65,9 +65,3 @@ web2app-remove() {
|
||||
rm "$DESKTOP_FILE"
|
||||
rm "$ICON_PATH"
|
||||
}
|
||||
|
||||
# Ensure changes to ~/.XCompose are immediately available
|
||||
refresh-xcompose() {
|
||||
pkill fcitx5
|
||||
uwsm app -- fcitx5 >/dev/null 2>&1 &
|
||||
}
|
||||
|
@ -7,8 +7,8 @@ if command -v zoxide &> /dev/null; then
|
||||
fi
|
||||
|
||||
if command -v fzf &> /dev/null; then
|
||||
if [[ -f /usr/share/bash-completion/completions/fzf ]]; then
|
||||
source /usr/share/bash-completion/completions/fzf
|
||||
if [[ -f /usr/share/fzf/completion.bash ]]; then
|
||||
source /usr/share/fzf/completion.bash
|
||||
fi
|
||||
if [[ -f /usr/share/fzf/key-bindings.bash ]]; then
|
||||
source /usr/share/fzf/key-bindings.bash
|
||||
|
@ -12,3 +12,6 @@ fi
|
||||
# Set complete path
|
||||
export PATH="./bin:$HOME/.local/bin:$HOME/.local/share/omarchy/bin:$PATH"
|
||||
set +h
|
||||
|
||||
# Omarchy path
|
||||
export OMARCHY_PATH="/home/$USER/.local/share/omarchy"
|
||||
|
14
default/bashrc
Normal file
14
default/bashrc
Normal file
@ -0,0 +1,14 @@
|
||||
# All the default Omarchy aliases and functions
|
||||
# (don't mess with these directly, just overwrite them here!)
|
||||
source ~/.local/share/omarchy/default/bash/rc
|
||||
|
||||
# Add your own exports, aliases, and functions here.
|
||||
#
|
||||
# Make an alias for invoking commands you use constantly
|
||||
# alias p='python'
|
||||
#
|
||||
# Use VSCode instead of neovim as your default editor
|
||||
# export EDITOR="code"
|
||||
#
|
||||
# Set a custom prompt with the directory revealed (alternatively use https://starship.rs)
|
||||
# PS1="\W \[\e]0;\w\a\]$PS1"
|
7
default/hypr/apps.conf
Normal file
7
default/hypr/apps.conf
Normal file
@ -0,0 +1,7 @@
|
||||
# App-specific tweaks
|
||||
source = ~/.local/share/omarchy/default/hypr/apps/chromium.conf
|
||||
source = ~/.local/share/omarchy/default/hypr/apps/hyprshot.conf
|
||||
source = ~/.local/share/omarchy/default/hypr/apps/retroarch.conf
|
||||
source = ~/.local/share/omarchy/default/hypr/apps/steam.conf
|
||||
source = ~/.local/share/omarchy/default/hypr/apps/system.conf
|
||||
source = ~/.local/share/omarchy/default/hypr/apps/walker.conf
|
6
default/hypr/apps/chromium.conf
Normal file
6
default/hypr/apps/chromium.conf
Normal file
@ -0,0 +1,6 @@
|
||||
# Force chromium into a tile to deal with --app bug
|
||||
windowrule = tile, class:^(Chromium)$
|
||||
|
||||
# Only slight opacity when unfocused
|
||||
windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable)$
|
||||
windowrule = opacity 1 1, initialTitle:^(youtube.com_/)$ # Youtube
|
2
default/hypr/apps/hyprshot.conf
Normal file
2
default/hypr/apps/hyprshot.conf
Normal file
@ -0,0 +1,2 @@
|
||||
# Remove 1px border around hyprshot screenshots
|
||||
layerrule = noanim, selection
|
3
default/hypr/apps/retroarch.conf
Normal file
3
default/hypr/apps/retroarch.conf
Normal file
@ -0,0 +1,3 @@
|
||||
windowrule = fullscreen, class:com.libretro.RetroArch
|
||||
windowrule = opacity 1 1, class:com.libretro.RetroArch
|
||||
|
4
default/hypr/apps/steam.conf
Normal file
4
default/hypr/apps/steam.conf
Normal file
@ -0,0 +1,4 @@
|
||||
# Float Steam, fullscreen RetroArch
|
||||
windowrule = float, class:steam
|
||||
windowrule = center, class:steam, title:Steam
|
||||
windowrule = opacity 1 1, class:steam
|
16
default/hypr/apps/system.conf
Normal file
16
default/hypr/apps/system.conf
Normal file
@ -0,0 +1,16 @@
|
||||
# Float and center settings and previews
|
||||
windowrule = float, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy|About)$
|
||||
windowrule = center, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy|About)$
|
||||
windowrule = size 800 600, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty)$
|
||||
windowrule = size 600 470, class:Omarchy
|
||||
windowrule = size 700 470 class:About
|
||||
|
||||
# Float and center file pickers
|
||||
windowrule = float, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save)
|
||||
windowrule = center, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save)
|
||||
|
||||
# Fullscreen screensaver
|
||||
windowrule = fullscreen, class:Screensaver
|
||||
|
||||
# No transparency on media windows
|
||||
windowrule = opacity 1 1, class:^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$
|
2
default/hypr/apps/walker.conf
Normal file
2
default/hypr/apps/walker.conf
Normal file
@ -0,0 +1,2 @@
|
||||
# Application-sepcific animation
|
||||
layerrule = noanim, walker
|
@ -2,6 +2,7 @@ exec-once = uwsm app -- hypridle
|
||||
exec-once = uwsm app -- mako
|
||||
exec-once = uwsm app -- waybar
|
||||
exec-once = uwsm app -- fcitx5
|
||||
exec-once = uwsm app -- hyprsunset
|
||||
exec-once = uwsm app -- swaybg -i ~/.config/omarchy/current/background -m fill
|
||||
exec-once = uwsm app -- swayosd-server
|
||||
exec-once = uwsm app -- walker --gapplication-service
|
||||
|
@ -1,15 +1,15 @@
|
||||
# Deprecated bindings file. New installations include everything directly.
|
||||
|
||||
bind = SUPER, return, exec, $terminal
|
||||
bind = SUPER, F, exec, $fileManager
|
||||
bind = SUPER, B, exec, $browser
|
||||
bind = SUPER, M, exec, $music
|
||||
bind = SUPER, N, exec, $terminal -e nvim
|
||||
bind = SUPER, T, exec, $terminal -e btop
|
||||
bind = SUPER, D, exec, $terminal -e lazydocker
|
||||
bind = SUPER, G, exec, $messenger
|
||||
bind = SUPER, O, exec, obsidian -disable-gpu
|
||||
bind = SUPER, slash, exec, $passwordManager
|
||||
bindd = SUPER, return, Terminal, exec, $terminal
|
||||
bindd = SUPER, F, File manager, exec, $fileManager
|
||||
bindd = SUPER, B, Web browser, exec, $browser
|
||||
bindd = SUPER, M, Music player, exec, $music
|
||||
bindd = SUPER, N, Neovim, exec, $terminal -e nvim
|
||||
bindd = SUPER, T, Top, exec, $terminal -e btop
|
||||
bindd = SUPER, D, Lazy Docker, exec, $terminal -e lazydocker
|
||||
bindd = SUPER, G, Messenger, exec, $messenger
|
||||
bindd = SUPER, O, Obsidian, exec, obsidian -disable-gpu
|
||||
bindd = SUPER, slash, Pasword manager, exec, $passwordManager
|
||||
|
||||
source = ~/.local/share/omarchy/default/hypr/bindings/media.conf
|
||||
source = ~/.local/share/omarchy/default/hypr/bindings/tiling.conf
|
||||
|
@ -2,15 +2,15 @@
|
||||
$osdclient = swayosd-client --monitor "$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')"
|
||||
|
||||
# Laptop multimedia keys for volume and LCD brightness (with OSD)
|
||||
bindel = ,XF86AudioRaiseVolume, exec, $osdclient --output-volume raise
|
||||
bindel = ,XF86AudioLowerVolume, exec, $osdclient --output-volume lower
|
||||
bindel = ,XF86AudioMute, exec, $osdclient --output-volume mute-toggle
|
||||
bindel = ,XF86AudioMicMute, exec, $osdclient --input-volume mute-toggle
|
||||
bindel = ,XF86MonBrightnessUp, exec, $osdclient --brightness raise
|
||||
bindel = ,XF86MonBrightnessDown, exec, $osdclient --brightness lower
|
||||
bindeld = ,XF86AudioRaiseVolume, Volume up, exec, $osdclient --output-volume raise
|
||||
bindeld = ,XF86AudioLowerVolume, Volume down, exec, $osdclient --output-volume lower
|
||||
bindeld = ,XF86AudioMute, Mute, exec, $osdclient --output-volume mute-toggle
|
||||
bindeld = ,XF86AudioMicMute, Mute microphone, exec, $osdclient --input-volume mute-toggle
|
||||
bindeld = ,XF86MonBrightnessUp, Brightness up, exec, $osdclient --brightness raise
|
||||
bindeld = ,XF86MonBrightnessDown, Brightness down, exec, $osdclient --brightness lower
|
||||
|
||||
# Requires playerctl
|
||||
bindl = , XF86AudioNext, exec, $osdclient --playerctl next
|
||||
bindl = , XF86AudioPause, exec, $osdclient --playerctl play-pause
|
||||
bindl = , XF86AudioPlay, exec, $osdclient --playerctl play-pause
|
||||
bindl = , XF86AudioPrev, exec, $osdclient --playerctl previous
|
||||
bindld = , XF86AudioNext, Next track, exec, $osdclient --playerctl next
|
||||
bindld = , XF86AudioPause, Pause, exec, $osdclient --playerctl play-pause
|
||||
bindld = , XF86AudioPlay, Play, exec, $osdclient --playerctl play-pause
|
||||
bindld = , XF86AudioPrev, Previous track, exec, $osdclient --playerctl previous
|
||||
|
@ -1,59 +1,62 @@
|
||||
# Close window
|
||||
bind = SUPER, W, killactive,
|
||||
bindd = SUPER, W, Close active window, killactive,
|
||||
|
||||
# Control tiling
|
||||
bind = SUPER, J, togglesplit, # dwindle
|
||||
bind = SUPER, P, pseudo, # dwindle
|
||||
bind = SUPER, V, togglefloating,
|
||||
bind = , F11, fullscreen, 0
|
||||
bindd = SUPER, J, Toggle split, togglesplit, # dwindle
|
||||
bindd = SUPER, P, Pseudo window, pseudo, # dwindle
|
||||
bindd = SUPER, V, Toggle floating, togglefloating,
|
||||
bindd = SHIFT, F11, Force full screen, fullscreen, 0
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
bind = SUPER, left, movefocus, l
|
||||
bind = SUPER, right, movefocus, r
|
||||
bind = SUPER, up, movefocus, u
|
||||
bind = SUPER, down, movefocus, d
|
||||
bindd = SUPER, left, Move focus left, movefocus, l
|
||||
bindd = SUPER, right, Move focus right, movefocus, r
|
||||
bindd = SUPER, up, Move focus up, movefocus, u
|
||||
bindd = SUPER, down, Move focus down, movefocus, d
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
bind = SUPER, code:10, workspace, 1
|
||||
bind = SUPER, code:11, workspace, 2
|
||||
bind = SUPER, code:12, workspace, 3
|
||||
bind = SUPER, code:13, workspace, 4
|
||||
bind = SUPER, code:14, workspace, 5
|
||||
bind = SUPER, code:15, workspace, 6
|
||||
bind = SUPER, code:16, workspace, 7
|
||||
bind = SUPER, code:17, workspace, 8
|
||||
bind = SUPER, code:18, workspace, 9
|
||||
bind = SUPER, code:19, workspace, 10
|
||||
bindd = SUPER, code:10, Switch to workspace 1, workspace, 1
|
||||
bindd = SUPER, code:11, Switch to workspace 2, workspace, 2
|
||||
bindd = SUPER, code:12, Switch to workspace 3, workspace, 3
|
||||
bindd = SUPER, code:13, Switch to workspace 4, workspace, 4
|
||||
bindd = SUPER, code:14, Switch to workspace 5, workspace, 5
|
||||
bindd = SUPER, code:15, Switch to workspace 6, workspace, 6
|
||||
bindd = SUPER, code:16, Switch to workspace 7, workspace, 7
|
||||
bindd = SUPER, code:17, Switch to workspace 8, workspace, 8
|
||||
bindd = SUPER, code:18, Switch to workspace 9, workspace, 9
|
||||
bindd = SUPER, code:19, Switch to workspace 10, workspace, 10
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
bind = SUPER SHIFT, code:10, movetoworkspace, 1
|
||||
bind = SUPER SHIFT, code:11, movetoworkspace, 2
|
||||
bind = SUPER SHIFT, code:12, movetoworkspace, 3
|
||||
bind = SUPER SHIFT, code:13, movetoworkspace, 4
|
||||
bind = SUPER SHIFT, code:14, movetoworkspace, 5
|
||||
bind = SUPER SHIFT, code:15, movetoworkspace, 6
|
||||
bind = SUPER SHIFT, code:16, movetoworkspace, 7
|
||||
bind = SUPER SHIFT, code:17, movetoworkspace, 8
|
||||
bind = SUPER SHIFT, code:18, movetoworkspace, 9
|
||||
bind = SUPER SHIFT, code:19, movetoworkspace, 10
|
||||
bindd = SUPER SHIFT, code:10, Move window to workspace 1, movetoworkspace, 1
|
||||
bindd = SUPER SHIFT, code:11, Move window to workspace 1, movetoworkspace, 2
|
||||
bindd = SUPER SHIFT, code:12, Move window to workspace 1, movetoworkspace, 3
|
||||
bindd = SUPER SHIFT, code:13, Move window to workspace 1, movetoworkspace, 4
|
||||
bindd = SUPER SHIFT, code:14, Move window to workspace 1, movetoworkspace, 5
|
||||
bindd = SUPER SHIFT, code:15, Move window to workspace 1, movetoworkspace, 6
|
||||
bindd = SUPER SHIFT, code:16, Move window to workspace 1, movetoworkspace, 7
|
||||
bindd = SUPER SHIFT, code:17, Move window to workspace 1, movetoworkspace, 8
|
||||
bindd = SUPER SHIFT, code:18, Move window to workspace 1, movetoworkspace, 9
|
||||
bindd = SUPER SHIFT, code:19, Move window to workspace 1, movetoworkspace, 10
|
||||
|
||||
# Swap active window with the one next to it with mainMod + SHIFT + arrow keys
|
||||
bind = SUPER SHIFT, left, swapwindow, l
|
||||
bind = SUPER SHIFT, right, swapwindow, r
|
||||
bind = SUPER SHIFT, up, swapwindow, u
|
||||
bind = SUPER SHIFT, down, swapwindow, d
|
||||
bindd = SUPER SHIFT, left, Swap window to the left, swapwindow, l
|
||||
bindd = SUPER SHIFT, right, Swap window to the right, swapwindow, r
|
||||
bindd = SUPER SHIFT, up, Swap window up, swapwindow, u
|
||||
bindd = SUPER SHIFT, down, Swap window down, swapwindow, d
|
||||
|
||||
# Cycle through applications on active workspace
|
||||
bindd = ALT, Tab, Cycle to next window, cyclenext
|
||||
bindd = ALT, Tab, Reveal active window on top, bringactivetotop
|
||||
|
||||
# Resize active window
|
||||
bind = SUPER, minus, resizeactive, -100 0
|
||||
bind = SUPER, equal, resizeactive, 100 0
|
||||
bind = SUPER SHIFT, minus, resizeactive, 0 -100
|
||||
bind = SUPER SHIFT, equal, resizeactive, 0 100
|
||||
bindd = SUPER, minus, Expand window left, resizeactive, -100 0
|
||||
bindd = SUPER, equal, Shrink window left, resizeactive, 100 0
|
||||
bindd = SUPER SHIFT, minus, Shrink window up, resizeactive, 0 -100
|
||||
bindd = SUPER SHIFT, equal, Expand window down, resizeactive, 0 100
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
bind = SUPER, mouse_down, workspace, e+1
|
||||
bind = SUPER, mouse_up, workspace, e-1
|
||||
bindd = SUPER, mouse_down, Scroll active worspace forward, workspace, e+1
|
||||
bindd = SUPER, mouse_up, Scroll active workspace backward, workspace, e-1
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindm = SUPER, mouse:272, movewindow
|
||||
bindm = SUPER, mouse:273, resizewindow
|
||||
|
||||
bindmd = SUPER, mouse:272, Move window, movewindow
|
||||
bindmd = SUPER, mouse:273, Resize window, resizewindow
|
||||
|
@ -1,36 +1,42 @@
|
||||
# Launching
|
||||
bind = SUPER, space, exec, walker
|
||||
bind = SUPER, K, exec, ~/.local/share/omarchy/bin/omarchy-menu-keybindings
|
||||
bindd = SUPER, space, Launch apps, exec, walker
|
||||
bindd = SUPER, K, Show key bindings, exec, ~/.local/share/omarchy/bin/omarchy-menu-keybindings
|
||||
|
||||
# Aesthetics
|
||||
bind = SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar
|
||||
bind = SUPER CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-bg-next
|
||||
bind = SUPER SHIFT CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-menu
|
||||
bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, pkill -SIGUSR1 waybar
|
||||
bindd = SUPER CTRL, SPACE, Next background in theme, exec, ~/.local/share/omarchy/bin/omarchy-theme-bg-next
|
||||
bindd = SUPER SHIFT CTRL, SPACE, Pick new theme, exec, ~/.local/share/omarchy/bin/omarchy-theme-menu
|
||||
|
||||
# Notifications
|
||||
bind = SUPER, comma, exec, makoctl dismiss
|
||||
bind = SUPER SHIFT, comma, exec, makoctl dismiss --all
|
||||
bind = SUPER CTRL, comma, exec, makoctl mode -t do-not-disturb && makoctl mode | grep -q 'do-not-disturb' && notify-send "Silenced notifications" || notify-send "Enabled notifications"
|
||||
bindd = SUPER, comma, Dismiss last notification, exec, makoctl dismiss
|
||||
bindd = SUPER SHIFT, comma, Dismiss all notifications, exec, makoctl dismiss --all
|
||||
bindd = SUPER CTRL, comma, Toggle silencing notifications, exec, makoctl mode -t do-not-disturb && makoctl mode | grep -q 'do-not-disturb' && notify-send "Silenced notifications" || notify-send "Enabled notifications"
|
||||
|
||||
# Power menu controls lock, suspend, relaunch, restart, shutdown
|
||||
bind = SUPER, ESCAPE, exec, ~/.local/share/omarchy/bin/omarchy-menu-power
|
||||
bindd = SUPER, ESCAPE, Power menu, exec, ~/.local/share/omarchy/bin/omarchy-menu-power
|
||||
|
||||
# Toggle idling
|
||||
bind = SUPER CTRL, I, exec, ~/.local/share/omarchy/bin/omarchy-toggle-idle
|
||||
bindd = SUPER CTRL, I, Toggle locking on idle, exec, ~/.local/share/omarchy/bin/omarchy-toggle-idle
|
||||
|
||||
# Toggle nightlight
|
||||
bindd = SUPER CTRL, N, Toggle nightlight, exec, ~/.local/share/omarchy/bin/omarchy-toggle-nightlight
|
||||
|
||||
# Control Apple Display brightness
|
||||
bind = CTRL, F1, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness -5000
|
||||
bind = CTRL, F2, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +5000
|
||||
bind = SHIFT CTRL, F2, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +60000
|
||||
bindd = CTRL, F1, Apple Display brightness down, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness -5000
|
||||
bindd = CTRL, F2, Apple Display brightness up, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +5000
|
||||
bindd = SHIFT CTRL, F2, Apple Display full brightness, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +60000
|
||||
|
||||
# Screenshots
|
||||
bind = , PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot
|
||||
bind = SHIFT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot window
|
||||
bind = CTRL, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot output
|
||||
bindd = , PRINT, Screenshot of region, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot
|
||||
bindd = SHIFT, PRINT, Screenshot of window, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot window
|
||||
bindd = CTRL, PRINT, Screenshot of display, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot output
|
||||
|
||||
# Screenshots
|
||||
bind = ALT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord
|
||||
bind = CTRL ALT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord output
|
||||
# Screen recordings
|
||||
bindd = ALT, PRINT, Screen record a region, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord
|
||||
bindd = CTRL ALT, PRINT, Screen record display, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord output
|
||||
|
||||
# Screensaver
|
||||
bindd = SUPER ALT, SPACE, Screensaver, exec, ~/.local/share/omarchy/bin/omarchy-launch-screensaver
|
||||
|
||||
# Color picker
|
||||
bind = SUPER, PRINT, exec, hyprpicker -a
|
||||
bindd = SUPER, PRINT, Color picker, exec, hyprpicker -a
|
||||
|
@ -69,12 +69,6 @@ animations {
|
||||
animation = workspaces, 0, 0, ease
|
||||
}
|
||||
|
||||
# Application-sepcific animation
|
||||
layerrule=noanim,walker
|
||||
|
||||
# Remove 1px border around hyprshot screenshots
|
||||
layerrule = noanim, selection
|
||||
|
||||
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
|
||||
# "Smart gaps" / "No gaps when only"
|
||||
# uncomment all if you wish to use that.
|
||||
|
@ -1,29 +1,11 @@
|
||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||
windowrule = suppressevent maximize, class:.*
|
||||
|
||||
# Force chromium into a tile to deal with --app bug
|
||||
windowrule = tile, class:^(Chromium)$
|
||||
|
||||
# Float and center settings and previews
|
||||
windowrule = float, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy)$
|
||||
windowrule = size 800 600, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty)$
|
||||
windowrule = size 645 450, class:Omarchy
|
||||
windowrule = center, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy)$
|
||||
|
||||
# Float and center file pickers
|
||||
windowrule = float, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save)
|
||||
windowrule = center, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save)
|
||||
|
||||
# Float Steam, fullscreen RetroArch
|
||||
windowrule = float, class:^(steam)$
|
||||
windowrule = fullscreen, class:^(com.libretro.RetroArch)$
|
||||
|
||||
# Just dash of opacity
|
||||
# Just dash of opacity by default
|
||||
windowrule = opacity 0.97 0.9, class:.*
|
||||
windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable)$
|
||||
windowrule = opacity 1 1, initialTitle:^(youtube.com_/)$ # Youtube
|
||||
windowrule = opacity 1 1, class:^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$
|
||||
windowrule = opacity 1 1, class:^(com.libretro.RetroArch|steam)$
|
||||
|
||||
# Fix some dragging issues with XWayland
|
||||
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
|
||||
|
||||
# App-specific tweaks
|
||||
source = ~/.local/share/omarchy/default/hypr/apps.conf
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 3.0 KiB |
@ -5,8 +5,8 @@ Window.SetBackgroundBottomColor(0.101, 0.105, 0.149);
|
||||
|
||||
logo.image = Image("logo.png");
|
||||
logo.sprite = Sprite(logo.image);
|
||||
logo.sprite.SetX (Window.GetX() + Window.GetWidth() / 2 - logo.image.GetWidth() / 2);
|
||||
logo.sprite.SetY (Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2);
|
||||
logo.sprite.SetX (Window.GetWidth() / 2 - logo.image.GetWidth() / 2);
|
||||
logo.sprite.SetY (Window.GetHeight() / 2 - logo.image.GetHeight() / 2);
|
||||
logo.sprite.SetOpacity (1);
|
||||
|
||||
# Use these to adjust the progress bar timing
|
||||
@ -119,7 +119,7 @@ entry.image = Image("entry.png");
|
||||
bullet.image = Image("bullet.png");
|
||||
|
||||
entry.sprite = Sprite(entry.image);
|
||||
entry.x = Window.GetX() + Window.GetWidth()/2 - entry.image.GetWidth() / 2;
|
||||
entry.x = Window.GetWidth()/2 - entry.image.GetWidth() / 2;
|
||||
entry.y = logo.sprite.GetY() + logo.image.GetHeight() + 40;
|
||||
entry.sprite.SetPosition(entry.x, entry.y, 10001);
|
||||
entry.sprite.SetOpacity(0);
|
||||
@ -171,8 +171,13 @@ fun display_password_callback (prompt, bullets)
|
||||
for (index = 0; bullet.sprites[index]; index++)
|
||||
bullet.sprites[index].SetOpacity(0);
|
||||
|
||||
# Create and show bullets for current password
|
||||
for (index = 0; index < bullets; index++)
|
||||
# Create and show bullets for current password (max 21)
|
||||
max_bullets = 21;
|
||||
bullets_to_show = bullets;
|
||||
if (bullets_to_show > max_bullets)
|
||||
bullets_to_show = max_bullets;
|
||||
|
||||
for (index = 0; index < bullets_to_show; index++)
|
||||
{
|
||||
if (!bullet.sprites[index])
|
||||
{
|
||||
@ -195,7 +200,7 @@ Plymouth.SetDisplayPasswordFunction(display_password_callback);
|
||||
progress_box.image = Image("progress_box.png");
|
||||
progress_box.sprite = Sprite(progress_box.image);
|
||||
|
||||
progress_box.x = Window.GetX() + Window.GetWidth() / 2 - progress_box.image.GetWidth() / 2;
|
||||
progress_box.x = Window.GetWidth() / 2 - progress_box.image.GetWidth() / 2;
|
||||
progress_box.y = entry.y + entry.image.GetHeight() / 2 - progress_box.image.GetHeight() / 2;
|
||||
progress_box.sprite.SetPosition(progress_box.x, progress_box.y, 0);
|
||||
progress_box.sprite.SetOpacity(0);
|
||||
@ -204,7 +209,7 @@ progress_bar.original_image = Image("progress_bar.png");
|
||||
progress_bar.sprite = Sprite();
|
||||
progress_bar.image = progress_bar.original_image.Scale(1, progress_bar.original_image.GetHeight());
|
||||
|
||||
progress_bar.x = Window.GetX() + Window.GetWidth() / 2 - progress_bar.original_image.GetWidth() / 2;
|
||||
progress_bar.x = Window.GetWidth() / 2 - progress_bar.original_image.GetWidth() / 2;
|
||||
progress_bar.y = progress_box.y + (progress_box.image.GetHeight() - progress_bar.original_image.GetHeight()) / 2;
|
||||
progress_bar.sprite.SetPosition(progress_bar.x, progress_bar.y, 1);
|
||||
progress_bar.sprite.SetOpacity(0);
|
||||
|
75
install.sh
75
install.sh
@ -3,6 +3,8 @@
|
||||
# Exit immediately if a command exits with a non-zero status
|
||||
set -e
|
||||
|
||||
OMARCHY_INSTALL=~/.local/share/omarchy/install
|
||||
|
||||
# Give people a chance to retry running the installation
|
||||
catch_errors() {
|
||||
echo -e "\n\e[31mOmarchy installation failed!\e[0m"
|
||||
@ -12,16 +14,71 @@ catch_errors() {
|
||||
|
||||
trap catch_errors ERR
|
||||
|
||||
# Install everything
|
||||
for f in ~/.local/share/omarchy/install/*.sh; do
|
||||
echo -e "\nRunning installer: $f"
|
||||
source "$f"
|
||||
done
|
||||
show_logo() {
|
||||
clear
|
||||
tte -i ~/.local/share/omarchy/logo.txt --frame-rate ${2:-120} ${1:-expand}
|
||||
echo
|
||||
}
|
||||
|
||||
# Ensure locate is up to date now that everything has been installed
|
||||
show_subtext() {
|
||||
echo "$1" | tte --frame-rate ${3:-640} ${2:-wipe}
|
||||
echo
|
||||
}
|
||||
|
||||
# Install prerequisites
|
||||
source $OMARCHY_INSTALL/preflight/aur.sh
|
||||
source $OMARCHY_INSTALL/preflight/presentation.sh
|
||||
source $OMARCHY_INSTALL/preflight/migrations.sh
|
||||
|
||||
# Configuration
|
||||
show_logo beams 240
|
||||
show_subtext "Let's install Omarchy! [1/5]"
|
||||
source $OMARCHY_INSTALL/config/identification.sh
|
||||
source $OMARCHY_INSTALL/config/config.sh
|
||||
source $OMARCHY_INSTALL/config/detect-keyboard-layout.sh
|
||||
source $OMARCHY_INSTALL/config/fix-fkeys.sh
|
||||
source $OMARCHY_INSTALL/config/network.sh
|
||||
source $OMARCHY_INSTALL/config/power.sh
|
||||
source $OMARCHY_INSTALL/config/timezones.sh
|
||||
source $OMARCHY_INSTALL/config/login.sh
|
||||
source $OMARCHY_INSTALL/config/nvidia.sh
|
||||
|
||||
# Development
|
||||
show_logo decrypt 920
|
||||
show_subtext "Installing terminal tools [2/5]"
|
||||
source $OMARCHY_INSTALL/development/terminal.sh
|
||||
source $OMARCHY_INSTALL/development/development.sh
|
||||
source $OMARCHY_INSTALL/development/nvim.sh
|
||||
source $OMARCHY_INSTALL/development/ruby.sh
|
||||
source $OMARCHY_INSTALL/development/docker.sh
|
||||
source $OMARCHY_INSTALL/development/firewall.sh
|
||||
|
||||
# Desktop
|
||||
show_logo slice 60
|
||||
show_subtext "Installing desktop tools [3/5]"
|
||||
source $OMARCHY_INSTALL/desktop/desktop.sh
|
||||
source $OMARCHY_INSTALL/desktop/hyprlandia.sh
|
||||
source $OMARCHY_INSTALL/desktop/theme.sh
|
||||
source $OMARCHY_INSTALL/desktop/bluetooth.sh
|
||||
source $OMARCHY_INSTALL/desktop/asdcontrol.sh
|
||||
source $OMARCHY_INSTALL/desktop/fonts.sh
|
||||
source $OMARCHY_INSTALL/desktop/printer.sh
|
||||
|
||||
# Apps
|
||||
show_logo expand
|
||||
show_subtext "Installing default applications [4/5]"
|
||||
source $OMARCHY_INSTALL/apps/webapps.sh
|
||||
source $OMARCHY_INSTALL/apps/xtras.sh
|
||||
source $OMARCHY_INSTALL/apps/mimetypes.sh
|
||||
|
||||
# Updates
|
||||
show_logo highlight
|
||||
show_subtext "Updating system packages [5/5]"
|
||||
sudo updatedb
|
||||
|
||||
# Update all built-in packages
|
||||
sudo pacman -Syu --noconfirm
|
||||
|
||||
gum confirm "Reboot to apply all settings?" && reboot
|
||||
# Reboot
|
||||
show_logo laseretch 920
|
||||
show_subtext "You're done! So we'll be rebooting now..."
|
||||
sleep 2
|
||||
reboot
|
||||
|
@ -1,16 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
sudo pacman -S --needed --noconfirm base-devel
|
||||
|
||||
if ! command -v yay &>/dev/null; then
|
||||
cd /tmp
|
||||
git clone https://aur.archlinux.org/yay-bin.git
|
||||
cd yay-bin
|
||||
makepkg -si --noconfirm
|
||||
cd -
|
||||
rm -rf yay-bin
|
||||
cd ~
|
||||
|
||||
# Add fun and color to the pacman installer
|
||||
sudo sed -i '/^\[options\]/a Color\nILoveCandy' /etc/pacman.conf
|
||||
fi
|
@ -12,5 +12,4 @@ if [ -z "$OMARCHY_BARE" ]; then
|
||||
web2app "YouTube" https://youtube.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/youtube.png
|
||||
web2app "GitHub" https://github.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/github-light.png
|
||||
web2app "X" https://x.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/x-light.png
|
||||
web2app "Omarchy Manual" https://manuals.omamix.org/2/the-omarchy-manual https://manuals.omamix.org/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6NDgsInB1ciI6ImJsb2JfaWQifX0=--c26606490139480f5bcb3cf91b09fc45825007f6/omarchy.jpg?disposition=attachment
|
||||
fi
|
@ -4,11 +4,17 @@
|
||||
cp -R ~/.local/share/omarchy/config/* ~/.config/
|
||||
|
||||
# Use default bashrc from Omarchy
|
||||
echo "source ~/.local/share/omarchy/default/bash/rc" >~/.bashrc
|
||||
cp ~/.local/share/omarchy/default/bashrc ~/.bashrc
|
||||
|
||||
# Ensure application directory exists for update-desktop-database
|
||||
mkdir -p ~/.local/share/applications
|
||||
|
||||
# If bare install, allow a way for its exclusions to not get added in updates
|
||||
if [ -n "$OMARCHY_BARE" ]; then
|
||||
mkdir -p ~/.local/state/omarchy
|
||||
touch ~/.local/state/omarchy/bare.mode
|
||||
fi
|
||||
|
||||
# Setup GPG configuration with multiple keyservers for better reliability
|
||||
sudo mkdir -p /etc/gnupg
|
||||
sudo cp ~/.local/share/omarchy/default/gpg/dirmngr.conf /etc/gnupg/
|
@ -3,6 +3,6 @@
|
||||
if [[ ! -f /etc/modprobe.d/hid_apple.conf ]]; then
|
||||
echo "options hid_apple fnmode=2" | sudo tee /etc/modprobe.d/hid_apple.conf
|
||||
|
||||
# Rely on install/plymouth.sh to do the rebuild
|
||||
# Rely on install/login.sh to do the rebuild
|
||||
# sudo mkinitcpio -P
|
||||
fi
|
@ -1,10 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Need gum to query for input
|
||||
yay -S --noconfirm --needed gum
|
||||
|
||||
# Configure identification
|
||||
source ~/.local/share/omarchy/ansi.sh
|
||||
echo -e "\nEnter identification for git and autocomplete..."
|
||||
export OMARCHY_USER_NAME=$(gum input --placeholder "Enter full name" --prompt "Name> ")
|
||||
export OMARCHY_USER_EMAIL=$(gum input --placeholder "Enter email address" --prompt "Email> ")
|
267
install/config/login.sh
Normal file
267
install/config/login.sh
Normal file
@ -0,0 +1,267 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Hyprland launched via UWSM and login directly as user, rely on disk encryption + hyprlock for security
|
||||
if ! command -v uwsm &>/dev/null || ! command -v plymouth &>/dev/null; then
|
||||
yay -S --noconfirm --needed uwsm plymouth
|
||||
fi
|
||||
|
||||
# ==============================================================================
|
||||
# PLYMOUTH SETUP
|
||||
# ==============================================================================
|
||||
|
||||
if ! grep -Eq '^HOOKS=.*plymouth' /etc/mkinitcpio.conf; then
|
||||
# Backup original mkinitcpio.conf just in case
|
||||
backup_timestamp=$(date +"%Y%m%d%H%M%S")
|
||||
sudo cp /etc/mkinitcpio.conf "/etc/mkinitcpio.conf.bak.${backup_timestamp}"
|
||||
|
||||
# Add plymouth to HOOKS array after 'base udev' or 'base systemd'
|
||||
if grep "^HOOKS=" /etc/mkinitcpio.conf | grep -q "base systemd"; then
|
||||
sudo sed -i '/^HOOKS=/s/base systemd/base systemd plymouth/' /etc/mkinitcpio.conf
|
||||
elif grep "^HOOKS=" /etc/mkinitcpio.conf | grep -q "base udev"; then
|
||||
sudo sed -i '/^HOOKS=/s/base udev/base udev plymouth/' /etc/mkinitcpio.conf
|
||||
else
|
||||
echo "Couldn't add the Plymouth hook"
|
||||
fi
|
||||
|
||||
# Regenerate initramfs
|
||||
sudo mkinitcpio -P
|
||||
fi
|
||||
|
||||
# Add kernel parameters for Plymouth
|
||||
if [ -d "/boot/loader/entries" ]; then # systemd-boot
|
||||
echo "Detected systemd-boot"
|
||||
|
||||
for entry in /boot/loader/entries/*.conf; do
|
||||
if [ -f "$entry" ]; then
|
||||
# Skip fallback entries
|
||||
if [[ "$(basename "$entry")" == *"fallback"* ]]; then
|
||||
echo "Skipped: $(basename "$entry") (fallback entry)"
|
||||
continue
|
||||
fi
|
||||
|
||||
# Skip if splash it already present for some reason
|
||||
if ! grep -q "splash" "$entry"; then
|
||||
sudo sed -i '/^options/ s/$/ splash quiet/' "$entry"
|
||||
else
|
||||
echo "Skipped: $(basename "$entry") (splash already present)"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
elif [ -f "/etc/default/grub" ]; then # Grub
|
||||
echo "Detected grub"
|
||||
|
||||
# Backup GRUB config before modifying
|
||||
backup_timestamp=$(date +"%Y%m%d%H%M%S")
|
||||
sudo cp /etc/default/grub "/etc/default/grub.bak.${backup_timestamp}"
|
||||
|
||||
# Check if splash is already in GRUB_CMDLINE_LINUX_DEFAULT
|
||||
if ! grep -q "GRUB_CMDLINE_LINUX_DEFAULT.*splash" /etc/default/grub; then
|
||||
# Get current GRUB_CMDLINE_LINUX_DEFAULT value
|
||||
current_cmdline=$(grep "^GRUB_CMDLINE_LINUX_DEFAULT=" /etc/default/grub | cut -d'"' -f2)
|
||||
|
||||
# Add splash and quiet if not present
|
||||
new_cmdline="$current_cmdline"
|
||||
if [[ ! "$current_cmdline" =~ splash ]]; then
|
||||
new_cmdline="$new_cmdline splash"
|
||||
fi
|
||||
if [[ ! "$current_cmdline" =~ quiet ]]; then
|
||||
new_cmdline="$new_cmdline quiet"
|
||||
fi
|
||||
|
||||
# Trim any leading/trailing spaces
|
||||
new_cmdline=$(echo "$new_cmdline" | xargs)
|
||||
|
||||
sudo sed -i "s/^GRUB_CMDLINE_LINUX_DEFAULT=\".*\"/GRUB_CMDLINE_LINUX_DEFAULT=\"$new_cmdline\"/" /etc/default/grub
|
||||
|
||||
# Regenerate grub config
|
||||
sudo grub-mkconfig -o /boot/grub/grub.cfg
|
||||
else
|
||||
echo "GRUB already configured with splash kernel parameters"
|
||||
fi
|
||||
elif [ -d "/etc/cmdline.d" ]; then # UKI
|
||||
echo "Detected a UKI setup"
|
||||
# Relying on mkinitcpio to assemble a UKI
|
||||
# https://wiki.archlinux.org/title/Unified_kernel_image
|
||||
if ! grep -q splash /etc/cmdline.d/*.conf; then
|
||||
# Need splash, create the omarchy file
|
||||
echo "splash" | sudo tee -a /etc/cmdline.d/omarchy.conf
|
||||
fi
|
||||
if ! grep -q quiet /etc/cmdline.d/*.conf; then
|
||||
# Need quiet, create or append the omarchy file
|
||||
echo "quiet" | sudo tee -a /etc/cmdline.d/omarchy.conf
|
||||
fi
|
||||
elif [ -f "/etc/kernel/cmdline" ]; then # UKI Alternate
|
||||
# Alternate UKI kernel cmdline location
|
||||
echo "Detected a UKI setup"
|
||||
|
||||
# Backup kernel cmdline config before modifying
|
||||
backup_timestamp=$(date +"%Y%m%d%H%M%S")
|
||||
sudo cp /etc/kernel/cmdline "/etc/kernel/cmdline.bak.${backup_timestamp}"
|
||||
|
||||
current_cmdline=$(cat /etc/kernel/cmdline)
|
||||
|
||||
# Add splash and quiet if not present
|
||||
new_cmdline="$current_cmdline"
|
||||
if [[ ! "$current_cmdline" =~ splash ]]; then
|
||||
new_cmdline="$new_cmdline splash"
|
||||
fi
|
||||
if [[ ! "$current_cmdline" =~ quiet ]]; then
|
||||
new_cmdline="$new_cmdline quiet"
|
||||
fi
|
||||
|
||||
# Trim any leading/trailing spaces
|
||||
new_cmdline=$(echo "$new_cmdline" | xargs)
|
||||
|
||||
# Write new file
|
||||
echo $new_cmdline | sudo tee /etc/kernel/cmdline
|
||||
else
|
||||
echo ""
|
||||
echo " None of systemd-boot, GRUB, or UKI detected. Please manually add these kernel parameters:"
|
||||
echo " - splash (to see the graphical splash screen)"
|
||||
echo " - quiet (for silent boot)"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
if [ "$(plymouth-set-default-theme)" != "omarchy" ]; then
|
||||
sudo cp -r "$HOME/.local/share/omarchy/default/plymouth" /usr/share/plymouth/themes/omarchy/
|
||||
sudo plymouth-set-default-theme -R omarchy
|
||||
fi
|
||||
|
||||
# ==============================================================================
|
||||
# SEAMLESS LOGIN
|
||||
# ==============================================================================
|
||||
|
||||
if [ ! -x /usr/local/bin/seamless-login ]; then
|
||||
# Compile the seamless login helper -- needed to prevent seeing terminal between loader and desktop
|
||||
cat <<'CCODE' >/tmp/seamless-login.c
|
||||
/*
|
||||
* Seamless Login - Minimal SDDM-style Plymouth transition
|
||||
* Replicates SDDM's VT management for seamless auto-login
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <linux/kd.h>
|
||||
#include <linux/vt.h>
|
||||
#include <sys/wait.h>
|
||||
#include <string.h>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
int vt_fd;
|
||||
int vt_num = 1; // TTY1
|
||||
char vt_path[32];
|
||||
|
||||
if (argc < 2) {
|
||||
fprintf(stderr, "Usage: %s <session_command>\n", argv[0]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Open the VT (simple approach like SDDM)
|
||||
snprintf(vt_path, sizeof(vt_path), "/dev/tty%d", vt_num);
|
||||
vt_fd = open(vt_path, O_RDWR);
|
||||
if (vt_fd < 0) {
|
||||
perror("Failed to open VT");
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Activate the VT
|
||||
if (ioctl(vt_fd, VT_ACTIVATE, vt_num) < 0) {
|
||||
perror("VT_ACTIVATE failed");
|
||||
close(vt_fd);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Wait for VT to be active
|
||||
if (ioctl(vt_fd, VT_WAITACTIVE, vt_num) < 0) {
|
||||
perror("VT_WAITACTIVE failed");
|
||||
close(vt_fd);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Critical: Set graphics mode to prevent console text
|
||||
if (ioctl(vt_fd, KDSETMODE, KD_GRAPHICS) < 0) {
|
||||
perror("KDSETMODE KD_GRAPHICS failed");
|
||||
close(vt_fd);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Clear VT and close (like SDDM does)
|
||||
const char *clear_seq = "\33[H\33[2J";
|
||||
if (write(vt_fd, clear_seq, strlen(clear_seq)) < 0) {
|
||||
perror("Failed to clear VT");
|
||||
}
|
||||
|
||||
close(vt_fd);
|
||||
|
||||
// Set working directory to user's home
|
||||
const char *home = getenv("HOME");
|
||||
if (home) chdir(home);
|
||||
|
||||
// Now execute the session command
|
||||
execvp(argv[1], &argv[1]);
|
||||
perror("Failed to exec session");
|
||||
return 1;
|
||||
}
|
||||
CCODE
|
||||
|
||||
gcc -o /tmp/seamless-login /tmp/seamless-login.c
|
||||
sudo mv /tmp/seamless-login /usr/local/bin/seamless-login
|
||||
sudo chmod +x /usr/local/bin/seamless-login
|
||||
rm /tmp/seamless-login.c
|
||||
fi
|
||||
|
||||
if [ ! -f /etc/systemd/system/omarchy-seamless-login.service ]; then
|
||||
cat <<EOF | sudo tee /etc/systemd/system/omarchy-seamless-login.service
|
||||
[Unit]
|
||||
Description=Omarchy Seamless Auto-Login
|
||||
Documentation=https://github.com/basecamp/omarchy
|
||||
Conflicts=getty@tty1.service
|
||||
After=systemd-user-sessions.service getty@tty1.service plymouth-quit.service systemd-logind.service
|
||||
PartOf=graphical.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/local/bin/seamless-login uwsm start -- hyprland.desktop
|
||||
Restart=always
|
||||
RestartSec=2
|
||||
User=$USER
|
||||
TTYPath=/dev/tty1
|
||||
TTYReset=yes
|
||||
TTYVHangup=yes
|
||||
TTYVTDisallocate=yes
|
||||
StandardInput=tty
|
||||
StandardOutput=journal
|
||||
StandardError=journal+console
|
||||
PAMName=login
|
||||
|
||||
[Install]
|
||||
WantedBy=graphical.target
|
||||
EOF
|
||||
fi
|
||||
|
||||
if [ ! -f /etc/systemd/system/plymouth-quit.service.d/wait-for-graphical.conf ]; then
|
||||
# Make plymouth remain until graphical.target
|
||||
sudo mkdir -p /etc/systemd/system/plymouth-quit.service.d
|
||||
sudo tee /etc/systemd/system/plymouth-quit.service.d/wait-for-graphical.conf <<'EOF'
|
||||
[Unit]
|
||||
After=multi-user.target
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Mask plymouth-quit-wait.service only if not already masked
|
||||
if ! systemctl is-enabled plymouth-quit-wait.service | grep -q masked; then
|
||||
sudo systemctl mask plymouth-quit-wait.service
|
||||
sudo systemctl daemon-reload
|
||||
fi
|
||||
|
||||
# Enable omarchy-seamless-login.service only if not already enabled
|
||||
if ! systemctl is-enabled omarchy-seamless-login.service | grep -q enabled; then
|
||||
sudo systemctl enable omarchy-seamless-login.service
|
||||
fi
|
||||
|
||||
# Disable getty@tty1.service only if not already disabled
|
||||
if ! systemctl is-enabled getty@tty1.service | grep -q disabled; then
|
||||
sudo systemctl disable getty@tty1.service
|
||||
fi
|
@ -12,6 +12,9 @@
|
||||
|
||||
# --- GPU Detection ---
|
||||
if [ -n "$(lspci | grep -i 'nvidia')" ]; then
|
||||
show_logo
|
||||
show_subtext "Install NVIDIA drivers..."
|
||||
|
||||
# --- Driver Selection ---
|
||||
# Turing (16xx, 20xx), Ampere (30xx), Ada (40xx), and newer recommend the open-source kernel modules
|
||||
if echo "$(lspci | grep -i 'nvidia')" | grep -q -E "RTX [2-9][0-9]|GTX 16"; then
|
9
install/config/timezones.sh
Normal file
9
install/config/timezones.sh
Normal file
@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
|
||||
if ! command -v tzupdate &>/dev/null; then
|
||||
yay -S --noconfirm --needed tzupdate
|
||||
sudo tee /etc/sudoers.d/omarchy-tzupdate >/dev/null <<EOF
|
||||
%wheel ALL=(root) NOPASSWD: /usr/bin/tzupdate, /usr/bin/timedatectl
|
||||
EOF
|
||||
sudo chmod 0440 /etc/sudoers.d/omarchy-tzupdate
|
||||
fi
|
@ -3,7 +3,7 @@
|
||||
yay -S --noconfirm --needed \
|
||||
brightnessctl playerctl pamixer wiremix wireplumber \
|
||||
fcitx5 fcitx5-gtk fcitx5-qt wl-clip-persist \
|
||||
nautilus sushi ffmpegthumbnailer \
|
||||
nautilus sushi ffmpegthumbnailer gvfs-mtp \
|
||||
slurp satty \
|
||||
mpv evince imv \
|
||||
chromium
|
7
install/desktop/fonts.sh
Normal file
7
install/desktop/fonts.sh
Normal file
@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
yay -S --noconfirm --needed ttf-font-awesome ttf-cascadia-mono-nerd ttf-ia-writer noto-fonts noto-fonts-emoji
|
||||
|
||||
if [ -z "$OMARCHY_BARE" ]; then
|
||||
yay -S --noconfirm --needed ttf-jetbrains-mono noto-fonts-cjk noto-fonts-extra
|
||||
fi
|
@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
yay -S --noconfirm --needed \
|
||||
hyprland hyprshot hyprpicker hyprlock hypridle polkit-gnome hyprland-qtutils \
|
||||
hyprland hyprshot hyprpicker hyprlock hypridle hyprsunset polkit-gnome hyprland-qtutils \
|
||||
walker-bin libqalculate waybar mako swaybg swayosd \
|
||||
xdg-desktop-portal-hyprland xdg-desktop-portal-gtk
|
16
install/desktop/printer.sh
Normal file
16
install/desktop/printer.sh
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
|
||||
sudo pacman -S --noconfirm cups cups-pdf cups-filters cups-browsed system-config-printer avahi nss-mdns
|
||||
sudo systemctl enable --now cups.service
|
||||
|
||||
# Disable multicast dns in resolved. Avahi will provide this for better network printer discovery
|
||||
sudo mkdir -p /etc/systemd/resolved.conf.d
|
||||
echo "[Resolve]\nMulticastDNS=no" | sudo tee /etc/systemd/resolved.conf.d/10-disable-multicast.conf
|
||||
sudo systemctl enable --now avahi-daemon.service
|
||||
|
||||
# Enable automatically adding remote printers
|
||||
if ! grep -q '^CreateRemotePrinters Yes' /etc/cups/cups-browsed.conf; then
|
||||
echo 'CreateRemotePrinters Yes' | sudo tee -a /etc/cups/cups-browsed.conf
|
||||
fi
|
||||
|
||||
sudo systemctl enable --now cups-browsed.service
|
@ -1,16 +1,27 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Use dark mode for QT apps too (like kdenlive)
|
||||
sudo pacman -S --noconfirm kvantum-qt5
|
||||
if ! yay -Q kvantum-qt5 &>/dev/null; then
|
||||
yay -S --noconfirm kvantum-qt5
|
||||
fi
|
||||
|
||||
# Prefer dark mode everything
|
||||
sudo pacman -S --noconfirm gnome-themes-extra # Adds Adwaita-dark theme
|
||||
if ! yay -Q gnome-themes-extra &>/dev/null; then
|
||||
yay -S --noconfirm gnome-themes-extra # Adds Adwaita-dark theme
|
||||
fi
|
||||
|
||||
# Allow icons to match the theme
|
||||
if ! yay -! yaru-icon-theme &>/dev/null; then
|
||||
yay -S --noconfirm yaru-icon-theme
|
||||
fi
|
||||
|
||||
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
|
||||
gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
|
||||
gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue"
|
||||
|
||||
# Setup theme links
|
||||
mkdir -p ~/.config/omarchy/themes
|
||||
for f in ~/.local/share/omarchy/themes/*; do ln -s "$f" ~/.config/omarchy/themes/; done
|
||||
for f in ~/.local/share/omarchy/themes/*; do ln -nfs "$f" ~/.config/omarchy/themes/; done
|
||||
|
||||
# Set initial theme
|
||||
mkdir -p ~/.config/omarchy/current
|
@ -1,36 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ -z "$OMARCHY_BARE" ]; then
|
||||
yay -S --noconfirm --needed ttf-font-awesome noto-fonts noto-fonts-emoji noto-fonts-cjk noto-fonts-extra
|
||||
else
|
||||
yay -S --noconfirm --needed ttf-font-awesome noto-fonts noto-fonts-emoji
|
||||
fi
|
||||
|
||||
mkdir -p ~/.local/share/fonts
|
||||
|
||||
if ! fc-list | grep -qi "CaskaydiaMono Nerd Font"; then
|
||||
cd /tmp
|
||||
wget https://github.com/ryanoasis/nerd-fonts/releases/latest/download/CascadiaMono.zip
|
||||
unzip CascadiaMono.zip -d CascadiaFont
|
||||
cp CascadiaFont/CaskaydiaMonoNerdFont-Regular.ttf ~/.local/share/fonts
|
||||
cp CascadiaFont/CaskaydiaMonoNerdFont-Bold.ttf ~/.local/share/fonts
|
||||
cp CascadiaFont/CaskaydiaMonoNerdFont-Italic.ttf ~/.local/share/fonts
|
||||
cp CascadiaFont/CaskaydiaMonoNerdFont-BoldItalic.ttf ~/.local/share/fonts
|
||||
cp CascadiaFont/CaskaydiaMonoNerdFontPropo-Regular.ttf ~/.local/share/fonts
|
||||
cp CascadiaFont/CaskaydiaMonoNerdFontPropo-Bold.ttf ~/.local/share/fonts
|
||||
cp CascadiaFont/CaskaydiaMonoNerdFontPropo-Italic.ttf ~/.local/share/fonts
|
||||
cp CascadiaFont/CaskaydiaMonoNerdFontPropo-BoldItalic.ttf ~/.local/share/fonts
|
||||
rm -rf CascadiaMono.zip CascadiaFont
|
||||
fc-cache
|
||||
cd -
|
||||
fi
|
||||
|
||||
if ! fc-list | grep -qi "iA Writer Mono S"; then
|
||||
cd /tmp
|
||||
wget -O iafonts.zip https://github.com/iaolo/iA-Fonts/archive/refs/heads/master.zip
|
||||
unzip iafonts.zip -d iaFonts
|
||||
cp iaFonts/iA-Fonts-master/iA\ Writer\ Mono/Static/iAWriterMonoS-*.ttf ~/.local/share/fonts
|
||||
rm -rf iafonts.zip iaFonts
|
||||
fc-cache
|
||||
cd -
|
||||
fi
|
126
install/login.sh
126
install/login.sh
@ -1,126 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Hyprland launched via UWSM and login directly as user, rely on disk encryption + hyprlock for security
|
||||
yay -S --noconfirm --needed uwsm
|
||||
|
||||
# Compile the seamless login helper -- needed to prevent seeing terminal between loader and desktop
|
||||
cat <<'CCODE' >/tmp/seamless-login.c
|
||||
/*
|
||||
* Seamless Login - Minimal SDDM-style Plymouth transition
|
||||
* Replicates SDDM's VT management for seamless auto-login
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <linux/kd.h>
|
||||
#include <linux/vt.h>
|
||||
#include <sys/wait.h>
|
||||
#include <string.h>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
int vt_fd;
|
||||
int vt_num = 1; // TTY1
|
||||
char vt_path[32];
|
||||
|
||||
if (argc < 2) {
|
||||
fprintf(stderr, "Usage: %s <session_command>\n", argv[0]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Open the VT (simple approach like SDDM)
|
||||
snprintf(vt_path, sizeof(vt_path), "/dev/tty%d", vt_num);
|
||||
vt_fd = open(vt_path, O_RDWR);
|
||||
if (vt_fd < 0) {
|
||||
perror("Failed to open VT");
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Activate the VT
|
||||
if (ioctl(vt_fd, VT_ACTIVATE, vt_num) < 0) {
|
||||
perror("VT_ACTIVATE failed");
|
||||
close(vt_fd);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Wait for VT to be active
|
||||
if (ioctl(vt_fd, VT_WAITACTIVE, vt_num) < 0) {
|
||||
perror("VT_WAITACTIVE failed");
|
||||
close(vt_fd);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Critical: Set graphics mode to prevent console text
|
||||
if (ioctl(vt_fd, KDSETMODE, KD_GRAPHICS) < 0) {
|
||||
perror("KDSETMODE KD_GRAPHICS failed");
|
||||
close(vt_fd);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Clear VT and close (like SDDM does)
|
||||
const char *clear_seq = "\33[H\33[2J";
|
||||
if (write(vt_fd, clear_seq, strlen(clear_seq)) < 0) {
|
||||
perror("Failed to clear VT");
|
||||
}
|
||||
|
||||
close(vt_fd);
|
||||
|
||||
// Set working directory to user's home
|
||||
const char *home = getenv("HOME");
|
||||
if (home) chdir(home);
|
||||
|
||||
// Now execute the session command
|
||||
execvp(argv[1], &argv[1]);
|
||||
perror("Failed to exec session");
|
||||
return 1;
|
||||
}
|
||||
CCODE
|
||||
|
||||
gcc -o /tmp/seamless-login /tmp/seamless-login.c
|
||||
sudo mv /tmp/seamless-login /usr/local/bin/seamless-login
|
||||
sudo chmod +x /usr/local/bin/seamless-login
|
||||
rm /tmp/seamless-login.c
|
||||
|
||||
cat <<EOF | sudo tee /etc/systemd/system/omarchy-seamless-login.service
|
||||
[Unit]
|
||||
Description=Omarchy Seamless Auto-Login
|
||||
Documentation=https://github.com/basecamp/omarchy
|
||||
Conflicts=getty@tty1.service
|
||||
After=systemd-user-sessions.service getty@tty1.service plymouth-quit.service systemd-logind.service
|
||||
PartOf=graphical.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/local/bin/seamless-login uwsm start -- hyprland.desktop
|
||||
Restart=always
|
||||
RestartSec=2
|
||||
User=$USER
|
||||
TTYPath=/dev/tty1
|
||||
TTYReset=yes
|
||||
TTYVHangup=yes
|
||||
TTYVTDisallocate=yes
|
||||
StandardInput=tty
|
||||
StandardOutput=journal
|
||||
StandardError=journal+console
|
||||
PAMName=login
|
||||
|
||||
[Install]
|
||||
WantedBy=graphical.target
|
||||
EOF
|
||||
|
||||
# Make plymouth remain until graphical.target
|
||||
sudo mkdir -p /etc/systemd/system/plymouth-quit.service.d
|
||||
sudo tee /etc/systemd/system/plymouth-quit.service.d/wait-for-graphical.conf <<'EOF'
|
||||
[Unit]
|
||||
After=multi-user.target
|
||||
EOF
|
||||
|
||||
# Prevent plymouth-quit-wait.service
|
||||
sudo systemctl mask plymouth-quit-wait.service
|
||||
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable omarchy-seamless-login.service
|
||||
|
||||
# Disable getty@tty1 to prevent conflicts
|
||||
sudo systemctl disable getty@tty1.service
|
@ -1,121 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
if ! command -v plymouth &>/dev/null; then
|
||||
yay -S --noconfirm --needed plymouth
|
||||
|
||||
# Skip if plymouth already exists for some reason
|
||||
# Backup original mkinitcpio.conf just in case
|
||||
backup_timestamp=$(date +"%Y%m%d%H%M%S")
|
||||
sudo cp /etc/mkinitcpio.conf "/etc/mkinitcpio.conf.bak.${backup_timestamp}"
|
||||
|
||||
# Add plymouth to HOOKS array after 'base udev' or 'base systemd'
|
||||
if grep "^HOOKS=" /etc/mkinitcpio.conf | grep -q "base systemd"; then
|
||||
sudo sed -i '/^HOOKS=/s/base systemd/base systemd plymouth/' /etc/mkinitcpio.conf
|
||||
elif grep "^HOOKS=" /etc/mkinitcpio.conf | grep -q "base udev"; then
|
||||
sudo sed -i '/^HOOKS=/s/base udev/base udev plymouth/' /etc/mkinitcpio.conf
|
||||
else
|
||||
echo "Couldn't add the Plymouth hook"
|
||||
fi
|
||||
|
||||
# Regenerate initramfs
|
||||
sudo mkinitcpio -P
|
||||
|
||||
# Add kernel parameters for Plymouth (systemd-boot only)
|
||||
if [ -d "/boot/loader/entries" ]; then
|
||||
echo "Detected systemd-boot"
|
||||
|
||||
for entry in /boot/loader/entries/*.conf; do
|
||||
if [ -f "$entry" ]; then
|
||||
# Skip fallback entries
|
||||
if [[ "$(basename "$entry")" == *"fallback"* ]]; then
|
||||
echo "Skipped: $(basename "$entry") (fallback entry)"
|
||||
continue
|
||||
fi
|
||||
|
||||
# Skip if splash it already present for some reason
|
||||
if ! grep -q "splash" "$entry"; then
|
||||
sudo sed -i '/^options/ s/$/ splash quiet/' "$entry"
|
||||
else
|
||||
echo "Skipped: $(basename "$entry") (splash already present)"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
elif [ -f "/etc/default/grub" ]; then
|
||||
echo "Detected grub"
|
||||
# Backup GRUB config before modifying
|
||||
backup_timestamp=$(date +"%Y%m%d%H%M%S")
|
||||
sudo cp /etc/default/grub "/etc/default/grub.bak.${backup_timestamp}"
|
||||
|
||||
# Check if splash is already in GRUB_CMDLINE_LINUX_DEFAULT
|
||||
if ! grep -q "GRUB_CMDLINE_LINUX_DEFAULT.*splash" /etc/default/grub; then
|
||||
# Get current GRUB_CMDLINE_LINUX_DEFAULT value
|
||||
current_cmdline=$(grep "^GRUB_CMDLINE_LINUX_DEFAULT=" /etc/default/grub | cut -d'"' -f2)
|
||||
|
||||
# Add splash and quiet if not present
|
||||
new_cmdline="$current_cmdline"
|
||||
if [[ ! "$current_cmdline" =~ splash ]]; then
|
||||
new_cmdline="$new_cmdline splash"
|
||||
fi
|
||||
if [[ ! "$current_cmdline" =~ quiet ]]; then
|
||||
new_cmdline="$new_cmdline quiet"
|
||||
fi
|
||||
|
||||
# Trim any leading/trailing spaces
|
||||
new_cmdline=$(echo "$new_cmdline" | xargs)
|
||||
|
||||
sudo sed -i "s/^GRUB_CMDLINE_LINUX_DEFAULT=\".*\"/GRUB_CMDLINE_LINUX_DEFAULT=\"$new_cmdline\"/" /etc/default/grub
|
||||
|
||||
# Regenerate grub config
|
||||
sudo grub-mkconfig -o /boot/grub/grub.cfg
|
||||
else
|
||||
echo "GRUB already configured with splash kernel parameters"
|
||||
fi
|
||||
elif [ -d "/etc/cmdline.d" ]; then
|
||||
echo "Detected a UKI setup"
|
||||
# Relying on mkinitcpio to assemble a UKI
|
||||
# https://wiki.archlinux.org/title/Unified_kernel_image
|
||||
if ! grep -q splash /etc/cmdline.d/*.conf; then
|
||||
# Need splash, create the omarchy file
|
||||
echo "splash" | sudo tee -a /etc/cmdline.d/omarchy.conf
|
||||
fi
|
||||
if ! grep -q quiet /etc/cmdline.d/*.conf; then
|
||||
# Need quiet, create or append the omarchy file
|
||||
echo "quiet" | sudo tee -a /etc/cmdline.d/omarchy.conf
|
||||
fi
|
||||
elif [ -f "/etc/kernel/cmdline" ]; then
|
||||
# Alternate UKI kernel cmdline location
|
||||
echo "Detected a UKI setup"
|
||||
|
||||
# Backup kernel cmdline config before modifying
|
||||
backup_timestamp=$(date +"%Y%m%d%H%M%S")
|
||||
sudo cp /etc/kernel/cmdline "/etc/kernel/cmdline.bak.${backup_timestamp}"
|
||||
|
||||
current_cmdline=$(cat /etc/kernel/cmdline)
|
||||
|
||||
# Add splash and quiet if not present
|
||||
new_cmdline="$current_cmdline"
|
||||
if [[ ! "$current_cmdline" =~ splash ]]; then
|
||||
new_cmdline="$new_cmdline splash"
|
||||
fi
|
||||
if [[ ! "$current_cmdline" =~ quiet ]]; then
|
||||
new_cmdline="$new_cmdline quiet"
|
||||
fi
|
||||
|
||||
# Trim any leading/trailing spaces
|
||||
new_cmdline=$(echo "$new_cmdline" | xargs)
|
||||
|
||||
# Write new file
|
||||
echo $new_cmdline | sudo tee /etc/kernel/cmdline
|
||||
else
|
||||
echo ""
|
||||
echo "Neither systemd-boot nor GRUB detected. Please manually add these kernel parameters:"
|
||||
echo " - splash (to see the graphical splash screen)"
|
||||
echo " - quiet (for silent boot)"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# Copy and set the Plymouth theme
|
||||
sudo cp -r "$HOME/.local/share/omarchy/default/plymouth" /usr/share/plymouth/themes/omarchy/
|
||||
|
||||
sudo plymouth-set-default-theme -R omarchy
|
||||
fi
|
41
install/preflight/aur.sh
Normal file
41
install/preflight/aur.sh
Normal file
@ -0,0 +1,41 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Only add Chaotic-AUR if the architecture is x86_64 so ARM users can build the packages
|
||||
if [[ "$(uname -m)" == "x86_64" ]] && ! command -v yay &>/dev/null; then
|
||||
# Try installing Chaotic-AUR keyring and mirrorlist
|
||||
if ! pacman-key --list-keys 3056513887B78AEB >/dev/null 2>&1 &&
|
||||
sudo pacman-key --recv-key 3056513887B78AEB &&
|
||||
sudo pacman-key --lsign-key 3056513887B78AEB &&
|
||||
sudo pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst' &&
|
||||
sudo pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst'; then
|
||||
|
||||
# Add Chaotic-AUR repo to pacman config
|
||||
if ! grep -q "chaotic-aur" /etc/pacman.conf; then
|
||||
echo -e '\n[chaotic-aur]\nInclude = /etc/pacman.d/chaotic-mirrorlist' | sudo tee -a /etc/pacman.conf >/dev/null
|
||||
fi
|
||||
|
||||
# Install yay directly from Chaotic-AUR
|
||||
sudo pacman -Sy --needed --noconfirm yay
|
||||
else
|
||||
echo "Failed to install Chaotic-AUR, so won't include it in pacman config!"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Manually install yay from AUR if not already available
|
||||
if ! command -v yay &>/dev/null; then
|
||||
# Install build tools
|
||||
sudo pacman -Sy --needed --noconfirm base-devel
|
||||
cd /tmp
|
||||
rm -rf yay-bin
|
||||
git clone https://aur.archlinux.org/yay-bin.git
|
||||
cd yay-bin
|
||||
makepkg -si --noconfirm
|
||||
cd -
|
||||
rm -rf yay-bin
|
||||
cd ~
|
||||
fi
|
||||
|
||||
# Add fun and color to the pacman installer
|
||||
if ! grep -q "ILoveCandy" /etc/pacman.conf; then
|
||||
sudo sed -i '/^\[options\]/a Color\nILoveCandy' /etc/pacman.conf
|
||||
fi
|
8
install/preflight/migrations.sh
Normal file
8
install/preflight/migrations.sh
Normal file
@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
|
||||
omarchy_migrations_state_path=~/.local/state/omarchy/migrations
|
||||
mkdir -p $omarchy_migrations_state_path
|
||||
|
||||
for file in ~/.local/share/omarchy/migrations/*.sh; do
|
||||
touch "$omarchy_migrations_state_path/$(basename "$file")"
|
||||
done
|
3
install/preflight/presentation.sh
Normal file
3
install/preflight/presentation.sh
Normal file
@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
|
||||
yay -S --noconfirm --needed gum python-terminaltexteffects
|
@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
sudo pacman -S --noconfirm cups cups-pdf cups-filters system-config-printer
|
||||
sudo systemctl enable --now cups.service
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user