mirror of
https://github.com/basecamp/omarchy.git
synced 2026-02-17 15:25:37 +00:00
Compare commits
153 Commits
add-t2-sup
...
sddm-uki-c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
52a2081f0a | ||
|
|
4b5f310e51 | ||
|
|
6a2b68c9d2 | ||
|
|
a4a94ff948 | ||
|
|
35c3a38074 | ||
|
|
5aa39c9261 | ||
|
|
5da10be63e | ||
|
|
2316c2f365 | ||
|
|
ea7d98e6b7 | ||
|
|
48004cf741 | ||
|
|
443173e29d | ||
|
|
164fc5ceb1 | ||
|
|
9c24150e69 | ||
|
|
93fe3b27e1 | ||
|
|
479f20d294 | ||
|
|
bb4df39bbd | ||
|
|
d4fddd7c75 | ||
|
|
3cb52c0b38 | ||
|
|
cab70bbe4f | ||
|
|
5f2013a482 | ||
|
|
f2021a95a4 | ||
|
|
2e0064943b | ||
|
|
c7aa0f570a | ||
|
|
a079af948b | ||
|
|
6544d1b970 | ||
|
|
bbe4461c05 | ||
|
|
bba224e9a5 | ||
|
|
4283533858 | ||
|
|
e0f16b9098 | ||
|
|
7819ae354e | ||
|
|
058b233da8 | ||
|
|
1ac8e96df3 | ||
|
|
977103011e | ||
|
|
9903a9b333 | ||
|
|
a51011fbb8 | ||
|
|
1022734a67 | ||
|
|
67011160b2 | ||
|
|
f634bfeeb6 | ||
|
|
ea6b6c6b7f | ||
|
|
499e7383c2 | ||
|
|
9b8819d9b9 | ||
|
|
a8f76783e3 | ||
|
|
796ef67ede | ||
|
|
0eccf22921 | ||
|
|
971422b757 | ||
|
|
076da663f5 | ||
|
|
b92ebff29b | ||
|
|
8e5b59995a | ||
|
|
dc49358a81 | ||
|
|
cd39bbf692 | ||
|
|
fba17b7da4 | ||
|
|
25df782e2f | ||
|
|
d4b0ba5d94 | ||
|
|
a74b426c9f | ||
|
|
e0a50f12a7 | ||
|
|
96b64189a6 | ||
|
|
3376838dfb | ||
|
|
0f3e6f5101 | ||
|
|
4d9f932e6c | ||
|
|
0b172dbef1 | ||
|
|
a84bc4b256 | ||
|
|
ad8d028d3f | ||
|
|
607915a5d1 | ||
|
|
f70a7bc5db | ||
|
|
b64bd47939 | ||
|
|
38d536ba9d | ||
|
|
bdb2ea50ed | ||
|
|
a823d5e835 | ||
|
|
c4d8ef6a15 | ||
|
|
2df8c5f7e0 | ||
|
|
a820b72da9 | ||
|
|
39c27939f3 | ||
|
|
0123cf7917 | ||
|
|
441ee10d70 | ||
|
|
45465d3e7c | ||
|
|
a746812504 | ||
|
|
ad01082a86 | ||
|
|
ba743c623d | ||
|
|
779c1b9ecc | ||
|
|
e4ab5bee14 | ||
|
|
f60b9d1cb4 | ||
|
|
70661d5d5b | ||
|
|
ad155b2545 | ||
|
|
206930def8 | ||
|
|
a965a333ea | ||
|
|
4d50c8bd33 | ||
|
|
ad30ef6339 | ||
|
|
19d1ee2b00 | ||
|
|
ed3b723c7f | ||
|
|
83ab85799b | ||
|
|
ffe7cd5099 | ||
|
|
28c4814f5a | ||
|
|
cf41ecaaa5 | ||
|
|
9aef0ffab6 | ||
|
|
f6383fd3e9 | ||
|
|
e81994f182 | ||
|
|
7ca60bd590 | ||
|
|
dac34aa5e0 | ||
|
|
81165f1947 | ||
|
|
fc3d1a4af5 | ||
|
|
020a4659ec | ||
|
|
d66909de14 | ||
|
|
0e17c419be | ||
|
|
75f035ddb6 | ||
|
|
a039a0fdae | ||
|
|
9a24ca8a36 | ||
|
|
0b8540e663 | ||
|
|
ebb12f187e | ||
|
|
1669832693 | ||
|
|
80bd5e5979 | ||
|
|
832a33eb93 | ||
|
|
a15ccdd1ed | ||
|
|
6d9ae608e5 | ||
|
|
f6df59c9ed | ||
|
|
1514c5c633 | ||
|
|
d92e13143f | ||
|
|
e14d58fe54 | ||
|
|
f592bca968 | ||
|
|
b5b4dea4ff | ||
|
|
4cda82bc98 | ||
|
|
69ec570aad | ||
|
|
a51c58c20c | ||
|
|
761a51fac0 | ||
|
|
654723aa7f | ||
|
|
b9dfbb8f4c | ||
|
|
eec51b1fb5 | ||
|
|
a1228dac6b | ||
|
|
432ffb508c | ||
|
|
bf0c2cc9a5 | ||
|
|
7e1c88b932 | ||
|
|
c8fa96f382 | ||
|
|
2e4c9d0de8 | ||
|
|
facae82630 | ||
|
|
2719db01f9 | ||
|
|
461f8186f6 | ||
|
|
c5d04e8e9c | ||
|
|
c072715ebe | ||
|
|
55911ebf7d | ||
|
|
d3304c4a88 | ||
|
|
f401c72ea2 | ||
|
|
3986afd0c5 | ||
|
|
415896605e | ||
|
|
1e6ddf55ce | ||
|
|
5582c51676 | ||
|
|
5f56f4ccc7 | ||
|
|
e4ca98301b | ||
|
|
e228a987a8 | ||
|
|
f9edbfe10c | ||
|
|
2cb285c267 | ||
|
|
5be0e4de44 | ||
|
|
5f92574586 | ||
|
|
772a75376e | ||
|
|
d5314cecb7 |
2
applications/hidden/electron36.desktop
Normal file
2
applications/hidden/electron36.desktop
Normal file
@@ -0,0 +1,2 @@
|
||||
[Desktop Entry]
|
||||
Hidden=true
|
||||
2
applications/hidden/electron37.desktop
Normal file
2
applications/hidden/electron37.desktop
Normal file
@@ -0,0 +1,2 @@
|
||||
[Desktop Entry]
|
||||
Hidden=true
|
||||
2
applications/hidden/java-java-openjdk.desktop
Normal file
2
applications/hidden/java-java-openjdk.desktop
Normal file
@@ -0,0 +1,2 @@
|
||||
[Desktop Entry]
|
||||
Hidden=true
|
||||
2
applications/hidden/jconsole-java-openjdk.desktop
Normal file
2
applications/hidden/jconsole-java-openjdk.desktop
Normal file
@@ -0,0 +1,2 @@
|
||||
[Desktop Entry]
|
||||
Hidden=true
|
||||
2
applications/hidden/jshell-java-openjdk.desktop
Normal file
2
applications/hidden/jshell-java-openjdk.desktop
Normal file
@@ -0,0 +1,2 @@
|
||||
[Desktop Entry]
|
||||
Hidden=true
|
||||
@@ -1,6 +1,6 @@
|
||||
[Desktop Entry]
|
||||
Name=Image Viewer
|
||||
Exec=sh -c 'imv -n "$1" "$(dirname "$1")"' sh %f
|
||||
Exec=imv %F
|
||||
Icon=imv
|
||||
Type=Application
|
||||
MimeType=image/png;image/jpeg;image/jpg;image/gif;image/bmp;image/webp;image/tiff;image/x-xcf;image/x-portable-pixmap;image/x-xbitmap;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Name=Neovim
|
||||
GenericName=Text Editor
|
||||
Comment=Edit text files
|
||||
Exec=alacritty --class=nvim --title=nvim -e nvim -- %F
|
||||
Exec=sh -c "$TERMINAL --class=nvim --title=nvim -e nvim -- %F"
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Keywords=Text;editor;
|
||||
|
||||
@@ -15,9 +15,9 @@ SCOPE="$1"
|
||||
AUDIO=$([[ $2 == "audio" ]] && echo "--audio")
|
||||
|
||||
start_screenrecording() {
|
||||
filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
|
||||
local filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
|
||||
|
||||
if lspci | grep -Eqi 'nvidia|intel.*graphics'; then
|
||||
if lspci | grep -qi 'nvidia'; then
|
||||
wf-recorder $AUDIO -f "$filename" -c libx264 -p crf=23 -p preset=medium -p movflags=+faststart "$@" &
|
||||
else
|
||||
wl-screenrec $AUDIO -f "$filename" --ffmpeg-encoder-options="-c:v libx264 -crf 23 -preset medium -movflags +faststart" "$@" &
|
||||
@@ -47,7 +47,8 @@ screenrecording_active() {
|
||||
if screenrecording_active; then
|
||||
stop_screenrecording
|
||||
elif [[ "$SCOPE" == "output" ]]; then
|
||||
start_screenrecording
|
||||
output=$(slurp -o) || exit 1
|
||||
start_screenrecording -g "$output"
|
||||
else
|
||||
region=$(slurp) || exit 1
|
||||
start_screenrecording -g "$region"
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
function exit_screensaver {
|
||||
screensaver_in_focus() {
|
||||
hyprctl activewindow -j | jq -e '.class == "Screensaver"' >/dev/null 2>&1
|
||||
}
|
||||
|
||||
exit_screensaver() {
|
||||
hyprctl keyword cursor:invisible false
|
||||
pkill -x tte 2>/dev/null
|
||||
pkill -f "alacritty --class Screensaver" 2>/dev/null
|
||||
@@ -14,11 +18,11 @@ hyprctl keyword cursor:invisible true
|
||||
while true; do
|
||||
effect=$(tte 2>&1 | grep -oP '{\K[^}]+' | tr ',' ' ' | tr ' ' '\n' | sed -n '/^beams$/,$p' | sort -u | shuf -n1)
|
||||
tte -i ~/.config/omarchy/branding/screensaver.txt \
|
||||
--frame-rate 240 --canvas-width 0 --canvas-height $(($(tput lines) - 2)) --anchor-canvas c --anchor-text c \
|
||||
--frame-rate 240 --canvas-width 0 --canvas-height $(($(tput lines) - 1)) --anchor-canvas c --anchor-text c \
|
||||
"$effect" &
|
||||
|
||||
while pgrep -x tte >/dev/null; do
|
||||
if read -n 1 -t 3; then
|
||||
if read -n 1 -t 3 || ! screensaver_in_focus; then
|
||||
exit_screensaver
|
||||
fi
|
||||
done
|
||||
|
||||
44
bin/omarchy-cmd-share
Executable file
44
bin/omarchy-cmd-share
Executable file
@@ -0,0 +1,44 @@
|
||||
#!/bin/bash
|
||||
|
||||
if (($# == 0)); then
|
||||
echo "Usage: omarchy-cmd-share [clipboard|file|folder]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
MODE="$1"
|
||||
shift
|
||||
|
||||
if [[ $MODE == "clipboard" ]]; then
|
||||
TEMP_FILE=$(mktemp --suffix=.txt)
|
||||
wl-paste >"$TEMP_FILE"
|
||||
FILES="$TEMP_FILE"
|
||||
else
|
||||
if (($# > 0)); then
|
||||
FILES="$*"
|
||||
else
|
||||
if [[ $MODE == "folder" ]]; then
|
||||
# Pick a single folder from home directory
|
||||
FILES=$(find "$HOME" -type d 2>/dev/null | fzf)
|
||||
else
|
||||
# Pick one or more files from home directory
|
||||
FILES=$(find "$HOME" -type f 2>/dev/null | fzf --multi)
|
||||
fi
|
||||
[ -z "$FILES" ] && exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# Run LocalSend in its own systemd service (detached from terminal)
|
||||
# Convert newline-separated files to space-separated arguments
|
||||
if [[ $MODE != "clipboard" ]] && echo "$FILES" | grep -q $'\n'; then
|
||||
# Multiple files selected - convert newlines to array
|
||||
readarray -t FILE_ARRAY <<<"$FILES"
|
||||
systemd-run --user --quiet --collect localsend --headless send "${FILE_ARRAY[@]}"
|
||||
else
|
||||
# Single file or clipboard mode
|
||||
systemd-run --user --quiet --collect localsend --headless send "$FILES"
|
||||
fi
|
||||
|
||||
# Note: Temporary file will remain until system cleanup for clipboard mode
|
||||
# This ensures the file content is available for the LocalSend GUI
|
||||
|
||||
exit 0
|
||||
@@ -1,3 +1,3 @@
|
||||
#!/bin/bash
|
||||
|
||||
grep -oP 'family\s*=\s*"\K[^"]+' ~/.config/alacritty/alacritty.toml | head -n1
|
||||
grep -oP 'font-family:\s*["'\'']?\K[^;"'\'']+' ~/.config/waybar/style.css | head -n1
|
||||
|
||||
@@ -4,7 +4,20 @@ font_name="$1"
|
||||
|
||||
if [[ -n "$font_name" && "$font_name" != "CNCLD" ]]; then
|
||||
if fc-list | grep -iq "$font_name"; then
|
||||
sed -i "s/family = \".*\"/family = \"$font_name\"/g" ~/.config/alacritty/alacritty.toml
|
||||
if [[ -f ~/.config/alacritty/alacritty.toml ]]; then
|
||||
sed -i "s/family = \".*\"/family = \"$font_name\"/g" ~/.config/alacritty/alacritty.toml
|
||||
fi
|
||||
|
||||
if [[ -f ~/.config/kitty/kitty.conf ]]; then
|
||||
sed -i "s/^font_family .*/font_family $font_name/g" ~/.config/kitty/kitty.conf
|
||||
pkill -USR1 kitty
|
||||
fi
|
||||
|
||||
if [[ -f ~/.config/ghostty/config ]]; then
|
||||
sed -i "s/font-family = \".*\"/font-family = \"$font_name\"/g" ~/.config/ghostty/config
|
||||
pkill -SIGUSR2 ghostty
|
||||
fi
|
||||
|
||||
sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/waybar/style.css
|
||||
sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/swayosd/style.css
|
||||
xmlstarlet ed -L \
|
||||
|
||||
13
bin/omarchy-install-chromium-google-account
Executable file
13
bin/omarchy-install-chromium-google-account
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ -f ~/.config/chromium-flags.conf ]]; then
|
||||
CONF=~/.config/chromium-flags.conf
|
||||
|
||||
grep -qxF -- "--oauth2-client-id=77185425430.apps.googleusercontent.com" "$CONF" ||
|
||||
echo "--oauth2-client-id=77185425430.apps.googleusercontent.com" >>"$CONF"
|
||||
|
||||
grep -qxF -- "--oauth2-client-secret=OTJgUOQcT7lO7GsGZq2G4IlT" "$CONF" ||
|
||||
echo "--oauth2-client-secret=OTJgUOQcT7lO7GsGZq2G4IlT" >>"$CONF"
|
||||
|
||||
echo "Now you can login to your Google Account in Chromium."
|
||||
fi
|
||||
@@ -47,6 +47,7 @@ install_node() {
|
||||
case "$1" in
|
||||
ruby)
|
||||
echo -e "Installing Ruby on Rails...\n"
|
||||
omarchy-pkg-add libyaml
|
||||
mise use --global ruby@latest
|
||||
mise settings add idiomatic_version_file_enable_tools ruby
|
||||
mise x ruby -- gem install rails --no-document
|
||||
@@ -119,6 +120,7 @@ java)
|
||||
zig)
|
||||
echo -e "Installing Zig...\n"
|
||||
mise use --global zig@latest
|
||||
mise use -g zls@latest
|
||||
;;
|
||||
ocaml)
|
||||
echo -e "Installing OCaml...\n"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
options=("MySQL" "PostgreSQL" "Redis" "MongoDB" "MariaDB")
|
||||
|
||||
if [[ "$#" -eq 0 ]]; then
|
||||
choices=$(printf "%s\n" "${options[@]}" | gum choose --header "Select databases (space to select, return to install, esc to cancel)") || main_menu
|
||||
choices=$(printf "%s\n" "${options[@]}" | gum choose --header "Select database (return to install, esc to cancel)") || main_menu
|
||||
else
|
||||
choices="$@"
|
||||
fi
|
||||
|
||||
19
bin/omarchy-install-terminal
Executable file
19
bin/omarchy-install-terminal
Executable file
@@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
|
||||
if (($# == 0)); then
|
||||
echo "Usage: omarchy-install-terminal [alacritty|ghostty|kitty]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
package="$1"
|
||||
|
||||
# Install package
|
||||
omarchy-pkg-add $package
|
||||
|
||||
# Set as default terminal
|
||||
echo "Setting $package as new default terminal..."
|
||||
sed -i "/export TERMINAL=/ c\export TERMINAL=$package" ~/.config/uwsm/default
|
||||
|
||||
# Relaunch is needed for new default to take effect
|
||||
echo
|
||||
gum confirm "Relaunch Hyprland to use new terminal?" && uwsm stop
|
||||
21
bin/omarchy-install-vscode
Executable file
21
bin/omarchy-install-vscode
Executable file
@@ -0,0 +1,21 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo "Installing VSCode..."
|
||||
omarchy-pkg-add visual-studio-code-bin
|
||||
|
||||
mkdir -p ~/.vscode
|
||||
|
||||
cat > ~/.vscode/argv.json << 'EOF'
|
||||
// This configuration file allows you to pass permanent command line arguments to VS Code.
|
||||
// Only a subset of arguments is currently supported to reduce the likelihood of breaking
|
||||
// the installation.
|
||||
//
|
||||
// PLEASE DO NOT CHANGE WITHOUT UNDERSTANDING THE IMPACT
|
||||
//
|
||||
// NOTE: Changing this file requires a restart of VS Code.
|
||||
{
|
||||
"password-store":"gnome-libsecret"
|
||||
}
|
||||
EOF
|
||||
|
||||
setsid gtk-launch code
|
||||
3
bin/omarchy-launch-about
Executable file
3
bin/omarchy-launch-about
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
|
||||
exec setsid uwsm app -- alacritty --class=Omarchy -o font.size=9 -e bash -c 'fastfetch; read -n 1 -s'
|
||||
10
bin/omarchy-launch-editor
Executable file
10
bin/omarchy-launch-editor
Executable file
@@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
case "${EDITOR:-nvim}" in
|
||||
nvim | vim | nano | micro | hx)
|
||||
exec setsid uwsm app -- "$TERMINAL" -e "$EDITOR" "$@"
|
||||
;;
|
||||
*)
|
||||
exec setsid uwsm app -- "$EDITOR" "$@"
|
||||
;;
|
||||
esac
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
cmd="$*"
|
||||
setsid alacritty --class Omarchy -e bash -c "omarchy-show-logo; $cmd; omarchy-show-done"
|
||||
exec setsid uwsm app -- alacritty --class=Omarchy --title=Omarchy -e bash -c "omarchy-show-logo; $cmd; omarchy-show-done"
|
||||
|
||||
16
bin/omarchy-launch-or-focus
Executable file
16
bin/omarchy-launch-or-focus
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
|
||||
if (($# == 0)); then
|
||||
echo "Usage: omarchy-launch-or-focus [window-pattern] [launch-command]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
WINDOW_PATTERN="$1"
|
||||
LAUNCH_COMMAND="${2:-"uwsm app -- $WINDOW_PATTERN"}"
|
||||
WINDOW_ADDRESS=$(hyprctl clients -j | jq -r --arg p "$WINDOW_PATTERN" '.[]|select((.class|test("\\b" + $p + "\\b";"i")) or (.title|test("\\b" + $p + "\\b";"i")))|.address' | head -n1)
|
||||
|
||||
if [[ -n $WINDOW_ADDRESS ]]; then
|
||||
hyprctl dispatch focuswindow "address:$WINDOW_ADDRESS"
|
||||
else
|
||||
eval exec $LAUNCH_COMMAND
|
||||
fi
|
||||
8
bin/omarchy-launch-or-focus-webapp
Executable file
8
bin/omarchy-launch-or-focus-webapp
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
|
||||
if (($# == 0)); then
|
||||
echo "Usage: omarchy-launch-or-focus-webapp [window-pattern] [url]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exec omarchy-launch-or-focus "$1" "omarchy-launch-webapp '$2'"
|
||||
@@ -17,6 +17,8 @@ focused=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')
|
||||
|
||||
for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do
|
||||
hyprctl dispatch focusmonitor $m
|
||||
|
||||
# FIXME: Find a way to make this generic where we it can work for kitty + ghostty
|
||||
hyprctl dispatch exec -- \
|
||||
alacritty --class Screensaver \
|
||||
--config-file ~/.local/share/omarchy/default/alacritty/screensaver.toml \
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
browser=$(xdg-settings get default-web-browser)
|
||||
|
||||
case $browser in
|
||||
google-chrome* | brave-browser* | microsoft-edge* | opera* | vivaldi*) ;;
|
||||
google-chrome* | brave-browser* | microsoft-edge* | opera* | vivaldi* | helium-browser*) ;;
|
||||
*) browser="chromium.desktop" ;;
|
||||
esac
|
||||
|
||||
|
||||
3
bin/omarchy-launch-wifi
Executable file
3
bin/omarchy-launch-wifi
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
|
||||
exec setsid uwsm app -- "$TERMINAL" --class=Impala -e impala "$@"
|
||||
@@ -9,4 +9,4 @@ if pgrep -x "1password" >/dev/null; then
|
||||
fi
|
||||
|
||||
# Avoid running screensaver when locked
|
||||
pkill -f "alacritty --class Screensaver"
|
||||
pkill -f "$TERMINAL --class Screensaver"
|
||||
|
||||
165
bin/omarchy-menu
165
bin/omarchy-menu
@@ -37,16 +37,16 @@ menu() {
|
||||
}
|
||||
|
||||
terminal() {
|
||||
alacritty --class Omarchy -e "$@"
|
||||
alacritty --class=Omarchy -e "$@"
|
||||
}
|
||||
|
||||
present_terminal() {
|
||||
omarchy-launch-floating-terminal-with-presentation $1
|
||||
}
|
||||
|
||||
edit_in_nvim() {
|
||||
open_in_editor() {
|
||||
notify-send "Editing config file" "$1"
|
||||
alacritty -e nvim "$1"
|
||||
omarchy-launch-editor "$1"
|
||||
}
|
||||
|
||||
install() {
|
||||
@@ -61,6 +61,10 @@ install_font() {
|
||||
present_terminal "echo 'Installing $1...'; sudo pacman -S --noconfirm --needed $2 && sleep 2 && omarchy-font-set '$3'"
|
||||
}
|
||||
|
||||
install_terminal() {
|
||||
present_terminal "omarchy-install-terminal $1"
|
||||
}
|
||||
|
||||
aur_install() {
|
||||
present_terminal "echo 'Installing $1 from AUR...'; yay -S --noconfirm $2"
|
||||
}
|
||||
@@ -81,41 +85,21 @@ show_learn_menu() {
|
||||
esac
|
||||
}
|
||||
|
||||
show_style_menu() {
|
||||
case $(menu "Style" " Theme\n Font\n Background\n Screensaver\n About") in
|
||||
*Theme*) show_theme_menu ;;
|
||||
*Font*) show_font_menu ;;
|
||||
*Background*) omarchy-theme-bg-next ;;
|
||||
*Screensaver*) edit_in_nvim ~/.config/omarchy/branding/screensaver.txt ;;
|
||||
*About*) edit_in_nvim ~/.config/omarchy/branding/about.txt ;;
|
||||
show_trigger_menu() {
|
||||
case $(menu "Trigger" " Capture\n Share\n Toggle") in
|
||||
*Capture*) show_capture_menu ;;
|
||||
*Share*) show_share_menu ;;
|
||||
*Toggle*) show_toggle_menu ;;
|
||||
*) show_main_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_theme_menu() {
|
||||
theme=$(menu "Theme" "$(omarchy-theme-list)" "" "$(omarchy-theme-current)")
|
||||
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
|
||||
back_to show_style_menu
|
||||
else
|
||||
omarchy-theme-set "$theme"
|
||||
fi
|
||||
}
|
||||
|
||||
show_font_menu() {
|
||||
theme=$(menu "Font" "$(omarchy-font-list)" "-w 350" "$(omarchy-font-current)")
|
||||
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
|
||||
back_to show_style_menu
|
||||
else
|
||||
omarchy-font-set "$theme"
|
||||
fi
|
||||
}
|
||||
|
||||
show_capture_menu() {
|
||||
case $(menu "Capture" " Screenshot\n Screenrecord\n Color") in
|
||||
*Screenshot*) show_screenshot_menu ;;
|
||||
*Screenrecord*) show_screenrecord_menu ;;
|
||||
*Color*) pkill hyprpicker || hyprpicker -a ;;
|
||||
*) show_main_menu ;;
|
||||
*) show_trigger_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
@@ -138,40 +122,79 @@ show_screenrecord_menu() {
|
||||
esac
|
||||
}
|
||||
|
||||
show_share_menu() {
|
||||
case $(menu "Share" " Clipboard\n File \n Folder") in
|
||||
*Clipboard*) terminal bash -c "omarchy-cmd-share clipboard" ;;
|
||||
*File*) terminal bash -c "omarchy-cmd-share file" ;;
|
||||
*Folder*) terminal bash -c "omarchy-cmd-share folder" ;;
|
||||
*) back_to show_trigger_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_toggle_menu() {
|
||||
case $(menu "Toggle" " Screensaver\n Nightlight\n Idle Lock\n Top Bar") in
|
||||
*Screensaver*) omarchy-toggle-screensaver ;;
|
||||
*Nightlight*) omarchy-toggle-nightlight ;;
|
||||
*Idle*) omarchy-toggle-idle ;;
|
||||
*Bar*) omarchy-toggle-waybar ;;
|
||||
*) show_trigger_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_style_menu() {
|
||||
case $(menu "Style" " Theme\n Font\n Background\n Hyprland\n Screensaver\n About") in
|
||||
*Theme*) show_theme_menu ;;
|
||||
*Font*) show_font_menu ;;
|
||||
*Background*) omarchy-theme-bg-next ;;
|
||||
*Hyprland*) open_in_editor ~/.config/hypr/looknfeel.conf ;;
|
||||
*Screensaver*) open_in_editor ~/.config/omarchy/branding/screensaver.txt ;;
|
||||
*About*) open_in_editor ~/.config/omarchy/branding/about.txt ;;
|
||||
*) show_main_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_theme_menu() {
|
||||
theme=$(menu "Theme" "$(omarchy-theme-list)" "" "$(omarchy-theme-current)")
|
||||
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
|
||||
back_to show_style_menu
|
||||
else
|
||||
omarchy-theme-set "$theme"
|
||||
fi
|
||||
}
|
||||
|
||||
show_font_menu() {
|
||||
theme=$(menu "Font" "$(omarchy-font-list)" "-w 350" "$(omarchy-font-current)")
|
||||
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
|
||||
back_to show_style_menu
|
||||
else
|
||||
omarchy-font-set "$theme"
|
||||
fi
|
||||
}
|
||||
|
||||
show_setup_menu() {
|
||||
local options=" Audio\n Wifi\n Bluetooth\n Power Profile\n Monitors"
|
||||
[ -f ~/.config/hypr/bindings.conf ] && options="$options\n Keybindings"
|
||||
[ -f ~/.config/hypr/input.conf ] && options="$options\n Input"
|
||||
options="$options\n DNS\n Config\n Fingerprint\n Fido2"
|
||||
options="$options\n Defaults\n DNS\n Security\n Config"
|
||||
|
||||
case $(menu "Setup" "$options") in
|
||||
*Audio*) alacritty --class=Wiremix -e wiremix ;;
|
||||
*Audio*) $TERMINAL --class=Wiremix -e wiremix ;;
|
||||
*Wifi*)
|
||||
rfkill unblock wifi
|
||||
alacritty --class=Impala -e impala
|
||||
omarchy-launch-wifi
|
||||
;;
|
||||
*Bluetooth*)
|
||||
rfkill unblock bluetooth
|
||||
blueberry
|
||||
;;
|
||||
*Power*) show_setup_power_menu ;;
|
||||
*Monitors*) edit_in_nvim ~/.config/hypr/monitors.conf ;;
|
||||
*Keybindings*) edit_in_nvim ~/.config/hypr/bindings.conf ;;
|
||||
*Input*) edit_in_nvim ~/.config/hypr/input.conf ;;
|
||||
*Monitors*) open_in_editor ~/.config/hypr/monitors.conf ;;
|
||||
*Keybindings*) open_in_editor ~/.config/hypr/bindings.conf ;;
|
||||
*Input*) open_in_editor ~/.config/hypr/input.conf ;;
|
||||
*Defaults*) open_in_editor ~/.config/uwsm/default ;;
|
||||
*DNS*) present_terminal omarchy-setup-dns ;;
|
||||
*Security*) show_setup_security_menu ;;
|
||||
*Config*) show_setup_config_menu ;;
|
||||
*Fingerprint*) present_terminal omarchy-setup-fingerprint ;;
|
||||
*Fido2*) present_terminal omarchy-setup-fido2 ;;
|
||||
*) show_main_menu ;;
|
||||
esac
|
||||
}
|
||||
@@ -188,20 +211,28 @@ show_setup_power_menu() {
|
||||
|
||||
show_setup_config_menu() {
|
||||
case $(menu "Setup" " Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n Swayosd\n Walker\n Waybar\n XCompose") in
|
||||
*Hyprland*) edit_in_nvim ~/.config/hypr/hyprland.conf ;;
|
||||
*Hypridle*) edit_in_nvim ~/.config/hypr/hypridle.conf && omarchy-restart-hypridle ;;
|
||||
*Hyprlock*) edit_in_nvim ~/.config/hypr/hyprlock.conf ;;
|
||||
*Hyprsunset*) edit_in_nvim ~/.config/hypr/hyprsunset.conf && omarchy-restart-hyprsunset ;;
|
||||
*Swayosd*) edit_in_nvim ~/.config/swayosd/config.toml && omarchy-restart-swayosd ;;
|
||||
*Walker*) edit_in_nvim ~/.config/walker/config.toml && omarchy-restart-walker ;;
|
||||
*Waybar*) edit_in_nvim ~/.config/waybar/config.jsonc && omarchy-restart-waybar ;;
|
||||
*XCompose*) edit_in_nvim ~/.XCompose && omarchy-restart-xcompose ;;
|
||||
*Hyprland*) open_in_editor ~/.config/hypr/hyprland.conf ;;
|
||||
*Hypridle*) open_in_editor ~/.config/hypr/hypridle.conf && omarchy-restart-hypridle ;;
|
||||
*Hyprlock*) open_in_editor ~/.config/hypr/hyprlock.conf ;;
|
||||
*Hyprsunset*) open_in_editor ~/.config/hypr/hyprsunset.conf && omarchy-restart-hyprsunset ;;
|
||||
*Swayosd*) open_in_editor ~/.config/swayosd/config.toml && omarchy-restart-swayosd ;;
|
||||
*Walker*) open_in_editor ~/.config/walker/config.toml && omarchy-restart-walker ;;
|
||||
*Waybar*) open_in_editor ~/.config/waybar/config.jsonc && omarchy-restart-waybar ;;
|
||||
*XCompose*) open_in_editor ~/.XCompose && omarchy-restart-xcompose ;;
|
||||
*) show_main_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_setup_security_menu() {
|
||||
case $(menu "Setup" " Fingerprint\n Fido2") in
|
||||
*Fingerprint*) present_terminal omarchy-setup-fingerprint ;;
|
||||
*Fido2*) present_terminal omarchy-setup-fido2 ;;
|
||||
*) show_setup_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_install_menu() {
|
||||
case $(menu "Install" " Package\n AUR\n Web App\n TUI\n Service\n Style\n Development\n Editor\n AI\n Gaming") in
|
||||
case $(menu "Install" " Package\n AUR\n Web App\n TUI\n Service\n Style\n Development\n Editor\n Terminal\n AI\n Gaming") in
|
||||
*Package*) terminal omarchy-pkg-install ;;
|
||||
*AUR*) terminal omarchy-pkg-aur-install ;;
|
||||
*Web*) present_terminal omarchy-webapp-install ;;
|
||||
@@ -210,6 +241,7 @@ show_install_menu() {
|
||||
*Style*) show_install_style_menu ;;
|
||||
*Development*) show_install_development_menu ;;
|
||||
*Editor*) show_install_editor_menu ;;
|
||||
*Terminal*) show_install_terminal_menu ;;
|
||||
*AI*) show_install_ai_menu ;;
|
||||
*Gaming*) show_install_gaming_menu ;;
|
||||
*) show_main_menu ;;
|
||||
@@ -217,17 +249,18 @@ show_install_menu() {
|
||||
}
|
||||
|
||||
show_install_service_menu() {
|
||||
case $(menu "Install" " Dropbox\n Tailscale\n Bitwarden") in
|
||||
case $(menu "Install" " Dropbox\n Tailscale\n Bitwarden\n Chromium Account") in
|
||||
*Dropbox*) present_terminal omarchy-install-dropbox ;;
|
||||
*Tailscale*) present_terminal omarchy-install-tailscale ;;
|
||||
*Bitwarden*) install_and_launch "Bitwarden" "bitwarden bitwarden-cli" "bitwarden" ;;
|
||||
*Chromium*) present_terminal omarchy-install-chromium-google-account ;;
|
||||
*) show_install_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_install_editor_menu() {
|
||||
case $(menu "Install" " VSCode\n Cursor\n Zed\n Sublime Text\n Helix\n Emacs") in
|
||||
*VSCode*) install_and_launch "VSCode" "visual-studio-code-bin" "code" ;;
|
||||
*VSCode*) present_terminal omarchy-install-vscode ;;
|
||||
*Cursor*) install_and_launch "Cursor" "cursor-bin" "cursor" ;;
|
||||
*Zed*) install_and_launch "Zed" "zed" "dev.zed.Zed" ;;
|
||||
*Sublime*) aur_install_and_launch "Sublime Text" "sublime-text-4" "sublime_text" ;;
|
||||
@@ -237,6 +270,15 @@ show_install_editor_menu() {
|
||||
esac
|
||||
}
|
||||
|
||||
show_install_terminal_menu() {
|
||||
case $(menu "Install" " Alacritty\n Ghostty\n Kitty") in
|
||||
*Alacritty*) install_terminal "alacritty" ;;
|
||||
*Ghostty*) install_terminal "ghostty" ;;
|
||||
*Kitty*) install_terminal "kitty" ;;
|
||||
*) show_install_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_install_ai_menu() {
|
||||
ollama_pkg=$(
|
||||
(command -v nvidia-smi &>/dev/null && echo ollama-cuda) ||
|
||||
@@ -342,8 +384,9 @@ show_remove_menu() {
|
||||
}
|
||||
|
||||
show_update_menu() {
|
||||
case $(menu "Update" " Omarchy\n Config\n Themes\n Process\n Hardware\n Password\n Timezone") in
|
||||
case $(menu "Update" " Omarchy\n Branch\n Config\n Extra Themes\n Process\n Hardware\n Password\n Timezone") in
|
||||
*Omarchy*) present_terminal omarchy-update ;;
|
||||
*Branch*) show_update_branch_menu ;;
|
||||
*Config*) show_update_config_menu ;;
|
||||
*Themes*) present_terminal omarchy-theme-update ;;
|
||||
*Process*) show_update_process_menu ;;
|
||||
@@ -354,6 +397,13 @@ show_update_menu() {
|
||||
esac
|
||||
}
|
||||
|
||||
show_update_branch_menu() {
|
||||
case $(menu "Branch" "master\ndev" "" "$(omarchy-version-branch)") in
|
||||
*master*) present_terminal "omarchy-update-branch master" ;;
|
||||
*dev*) present_terminal "omarchy-update-branch dev" ;;
|
||||
*) show_update_menu ;;
|
||||
esac
|
||||
}
|
||||
show_update_process_menu() {
|
||||
case $(menu "Restart" " Hypridle\n Hyprsunset\n Swayosd\n Walker\n Waybar") in
|
||||
*Hypridle*) omarchy-restart-hypridle ;;
|
||||
@@ -380,7 +430,8 @@ show_update_config_menu() {
|
||||
}
|
||||
|
||||
show_update_hardware_menu() {
|
||||
case $(menu "Restart" " Wi-Fi\n Bluetooth") in
|
||||
case $(menu "Restart" " Audio\n Wi-Fi\n Bluetooth") in
|
||||
*Audio*) present_terminal omarchy-restart-pipewire ;;
|
||||
*Wi-Fi*) present_terminal omarchy-restart-wifi ;;
|
||||
*Bluetooth*) present_terminal omarchy-restart-bluetooth ;;
|
||||
*) show_update_menu ;;
|
||||
@@ -400,33 +451,33 @@ show_system_menu() {
|
||||
*Lock*) omarchy-lock-screen ;;
|
||||
*Screensaver*) omarchy-launch-screensaver force ;;
|
||||
*Suspend*) systemctl suspend ;;
|
||||
*Relaunch*) uwsm stop ;;
|
||||
*Restart*) systemctl reboot ;;
|
||||
*Shutdown*) systemctl poweroff ;;
|
||||
*Relaunch*) omarchy-state clear relaunch-required && sudo systemctl restart sddm ;;
|
||||
*Restart*) omarchy-state clear re*-required && systemctl reboot ;;
|
||||
*Shutdown*) omarchy-state clear re*-required && systemctl poweroff ;;
|
||||
*) back_to show_main_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_main_menu() {
|
||||
go_to_menu "$(menu "Go" " Apps\n Learn\n Capture\n Toggle\n Style\n Setup\n Install\n Remove\n Update\n About\n System")"
|
||||
go_to_menu "$(menu "Go" " Apps\n Learn\n Trigger\n Style\n Setup\n Install\n Remove\n Update\n About\n System")"
|
||||
}
|
||||
|
||||
go_to_menu() {
|
||||
case "${1,,}" in
|
||||
*apps*) walker -p "Launch…" ;;
|
||||
*learn*) show_learn_menu ;;
|
||||
*trigger*) show_trigger_menu ;;
|
||||
*share*) show_share_menu ;;
|
||||
*style*) show_style_menu ;;
|
||||
*theme*) show_theme_menu ;;
|
||||
*capture*) show_capture_menu ;;
|
||||
*screenshot*) show_screenshot_menu ;;
|
||||
*screenrecord*) show_screenrecord_menu ;;
|
||||
*toggle*) show_toggle_menu ;;
|
||||
*setup*) show_setup_menu ;;
|
||||
*power*) show_setup_power_menu ;;
|
||||
*install*) show_install_menu ;;
|
||||
*remove*) show_remove_menu ;;
|
||||
*update*) show_update_menu ;;
|
||||
*about*) alacritty --class Omarchy -o font.size=9 -e bash -c 'fastfetch; read -n 1 -s' ;;
|
||||
*about*) omarchy-launch-about ;;
|
||||
*system*) show_system_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
@@ -3,6 +3,69 @@
|
||||
# A script to display Hyprland keybindings defined in your configuration
|
||||
# using walker for an interactive search menu.
|
||||
|
||||
declare -A KEYCODE_SYM_MAP
|
||||
|
||||
build_keymap_cache() {
|
||||
local keymap
|
||||
keymap="$(xkbcli compile-keymap)" || {
|
||||
echo "Failed to compile keymap" >&2
|
||||
return 1
|
||||
}
|
||||
|
||||
while IFS=, read -r code sym; do
|
||||
[[ -z "$code" || -z "$sym" ]] && continue
|
||||
KEYCODE_SYM_MAP["$code"]="$sym"
|
||||
done < <(
|
||||
awk '
|
||||
BEGIN { sec = "" }
|
||||
/xkb_keycodes/ { sec = "codes"; next }
|
||||
/xkb_symbols/ { sec = "syms"; next }
|
||||
sec == "codes" {
|
||||
if (match($0, /<([A-Za-z0-9_]+)>\s*=\s*([0-9]+)\s*;/, m)) code_by_name[m[1]] = m[2]
|
||||
}
|
||||
sec == "syms" {
|
||||
if (match($0, /key\s*<([A-Za-z0-9_]+)>\s*\{\s*\[\s*([^, \]]+)/, m)) sym_by_name[m[1]] = m[2]
|
||||
}
|
||||
END {
|
||||
for (k in code_by_name) {
|
||||
c = code_by_name[k]
|
||||
s = sym_by_name[k]
|
||||
if (c != "" && s != "" && s != "NoSymbol") print c "," s
|
||||
}
|
||||
}
|
||||
' <<<"$keymap"
|
||||
)
|
||||
}
|
||||
|
||||
lookup_keycode_cached() {
|
||||
printf '%s\n' "${KEYCODE_SYM_MAP[$1]}"
|
||||
}
|
||||
|
||||
parse_keycodes() {
|
||||
local start end elapsed
|
||||
[[ "${DEBUG:-0}" == "1" ]] && start=$(date +%s.%N)
|
||||
while IFS= read -r line; do
|
||||
if [[ "$line" =~ code:([0-9]+) ]]; then
|
||||
code="${BASH_REMATCH[1]}"
|
||||
symbol=$(lookup_keycode_cached "$code" "$XKB_KEYMAP_CACHE")
|
||||
echo "${line/code:${code}/$symbol}"
|
||||
else
|
||||
echo "$line"
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ "$DEBUG" == "1" ]]; then
|
||||
end=$(date +%s.%N)
|
||||
# fall back to awk if bc is missing
|
||||
if command -v bc >/dev/null 2>&1; then
|
||||
elapsed=$(echo "$end - $start" | bc)
|
||||
else
|
||||
elapsed=$(awk -v s="$start" -v e="$end" 'BEGIN{printf "%.6f", (e - s)}')
|
||||
fi
|
||||
echo "[DEBUG] parse_keycodes elapsed: ${elapsed}s" >&2
|
||||
fi
|
||||
}
|
||||
|
||||
# Fetch dynamic keybindings from Hyprland
|
||||
#
|
||||
# Also do some pre-processing:
|
||||
@@ -11,30 +74,30 @@
|
||||
# - 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)"' | \
|
||||
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,/' \
|
||||
-e 's/^73,/SUPER SHIFT ALT,/' \
|
||||
-e 's/^76,/SUPER CTRL ALT,/' \
|
||||
-e 's/^77,/SUPER SHIFT CTRL ALT,/'
|
||||
-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,/' \
|
||||
-e 's/^73,/SUPER SHIFT ALT,/' \
|
||||
-e 's/^76,/SUPER CTRL ALT,/' \
|
||||
-e 's/^77,/SUPER SHIFT CTRL ALT,/'
|
||||
}
|
||||
|
||||
# Parse and format keybindings
|
||||
@@ -86,8 +149,10 @@ parse_bindings() {
|
||||
monitor_height=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .height')
|
||||
menu_height=$((monitor_height * 40 / 100))
|
||||
|
||||
dynamic_bindings | \
|
||||
sort -u | \
|
||||
parse_bindings | \
|
||||
walker --dmenu --theme keybindings -p 'Keybindings' -w 800 -h "$menu_height"
|
||||
build_keymap_cache
|
||||
|
||||
dynamic_bindings |
|
||||
sort -u |
|
||||
parse_keycodes |
|
||||
parse_bindings |
|
||||
walker --dmenu --theme keybindings -p 'Keybindings' -w 800 -h "$menu_height"
|
||||
|
||||
13
bin/omarchy-notification-dismiss
Executable file
13
bin/omarchy-notification-dismiss
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
|
||||
if (($# == 0)); then
|
||||
echo "Usage: omarchy-notification-dismiss <summary>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Find the first notification whose 'summary' matches the regex in $1
|
||||
notification_id=$(makoctl list | grep -F "$1" | head -n1 | sed -E 's/^Notification ([0-9]+):.*/\1/')
|
||||
|
||||
if [[ -n $notification_id ]]; then
|
||||
makoctl dismiss -n $notification_id
|
||||
fi
|
||||
@@ -1,8 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
sudo pacman -S --noconfirm --needed "$@" || exit 1
|
||||
|
||||
for pkg in "$@"; do
|
||||
# Secondary check to handle states where pacman doesn't actually register an error
|
||||
if ! pacman -Q "$pkg" &>/dev/null; then
|
||||
sudo pacman -S --noconfirm "$pkg" || exit 1
|
||||
echo -e "\033[31mError: Package '$pkg' did not install\033[0m" >&2
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
@@ -2,13 +2,15 @@
|
||||
|
||||
fzf_args=(
|
||||
--multi
|
||||
--preview 'yay -Sii {1}'
|
||||
--preview-label='alt-p: toggle description, alt-j/k: scroll, tab: multi-select, F11: maximize'
|
||||
--preview 'yay -Siia {1}'
|
||||
--preview-label='alt-p: toggle description, alt-b/B: toggle PKGBUILD, alt-j/k: scroll, tab: multi-select, F11: maximize'
|
||||
--preview-label-pos='bottom'
|
||||
--preview-window 'down:65%:wrap'
|
||||
--bind 'alt-p:toggle-preview'
|
||||
--bind 'alt-d:preview-half-page-down,alt-u:preview-half-page-up'
|
||||
--bind 'alt-k:preview-up,alt-j:preview-down'
|
||||
--bind 'alt-b:change-preview:yay -Gpa {1} | tail -n +5'
|
||||
--bind 'alt-B:change-preview:yay -Siia {1}'
|
||||
--color 'pointer:green,marker:green'
|
||||
)
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo -e "Unblocking bluetooth...\n"
|
||||
rfkill unblock bluetooth
|
||||
rfkill list bluetooth
|
||||
|
||||
4
bin/omarchy-restart-pipewire
Executable file
4
bin/omarchy-restart-pipewire
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo -e "Restarting pipewire audio service...\n"
|
||||
systemctl --user restart pipewire.service
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
pkill walker
|
||||
# FIXME: Reenable the walker service once the memory leak has been fixed
|
||||
# FIXME: Just deal with the memory leak for now.
|
||||
# See https://github.com/basecamp/omarchy/issues/698
|
||||
# setsid uwsm app -- walker --gapplication-service &
|
||||
setsid uwsm app -- walker --gapplication-service &
|
||||
echo # Always end in success so we don't terminate further running
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo -e "Unblocking wifi...\n"
|
||||
rfkill unblock wifi
|
||||
rfkill list wifi
|
||||
|
||||
@@ -20,7 +20,7 @@ print_info() {
|
||||
}
|
||||
|
||||
check_fingerprint_hardware() {
|
||||
if ! lsusb | grep -Eiq 'fingerprint|synaptics|goodix|elan|validity'; then
|
||||
if ! lsusb | grep -Eiq 'fingerprint|synaptics|goodix|elan|validity|FPC'; then
|
||||
print_error "\nNo fingerprint sensor detected."
|
||||
return 1
|
||||
fi
|
||||
|
||||
@@ -20,52 +20,19 @@ fi
|
||||
# Update theme symlinks
|
||||
ln -nsf "$THEME_PATH" "$CURRENT_THEME_DIR"
|
||||
|
||||
# Change gnome modes
|
||||
if [[ -f ~/.config/omarchy/current/theme/light.mode ]]; then
|
||||
gsettings set org.gnome.desktop.interface color-scheme "prefer-light"
|
||||
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita"
|
||||
else
|
||||
gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
|
||||
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
|
||||
fi
|
||||
|
||||
# Change gnome icon theme color
|
||||
if [[ -f ~/.config/omarchy/current/theme/icons.theme ]]; then
|
||||
gsettings set org.gnome.desktop.interface icon-theme "$(<~/.config/omarchy/current/theme/icons.theme)"
|
||||
else
|
||||
gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue"
|
||||
fi
|
||||
|
||||
# Change browser colors via policies
|
||||
if omarchy-cmd-present chromium || omarchy-cmd-present brave; then
|
||||
if [[ -f ~/.config/omarchy/current/theme/chromium.theme ]]; then
|
||||
rgb=$(<~/.config/omarchy/current/theme/chromium.theme)
|
||||
THEME_HEX_COLOR=$(printf '#%02x%02x%02x' ${rgb//,/ })
|
||||
else
|
||||
# Use a default, neutral grey if theme doesn't have a color
|
||||
THEME_HEX_COLOR="#1c2027"
|
||||
fi
|
||||
|
||||
if omarchy-cmd-present chromium; then
|
||||
echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\"}" | tee "/etc/chromium/policies/managed/color.json" >/dev/null
|
||||
chromium --refresh-platform-policy --no-startup-window
|
||||
fi
|
||||
|
||||
if omarchy-cmd-present brave; then
|
||||
echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\"}" | tee "/etc/brave/policies/managed/color.json" >/dev/null
|
||||
brave --refresh-platform-policy --no-startup-window
|
||||
fi
|
||||
fi
|
||||
|
||||
# Trigger alacritty config reload
|
||||
touch "$HOME/.config/alacritty/alacritty.toml"
|
||||
# Change background with theme
|
||||
omarchy-theme-bg-next
|
||||
|
||||
# Restart components to apply new theme
|
||||
pkill -SIGUSR2 btop
|
||||
omarchy-restart-waybar
|
||||
omarchy-restart-swayosd
|
||||
makoctl reload
|
||||
hyprctl reload
|
||||
pkill -SIGUSR2 btop
|
||||
makoctl reload
|
||||
|
||||
# Set new background
|
||||
omarchy-theme-bg-next
|
||||
# Change gnome, browser, vscode themes
|
||||
omarchy-theme-set-terminal
|
||||
omarchy-theme-set-gnome
|
||||
omarchy-theme-set-eza
|
||||
omarchy-theme-set-browser
|
||||
omarchy-theme-set-vscode
|
||||
|
||||
24
bin/omarchy-theme-set-browser
Executable file
24
bin/omarchy-theme-set-browser
Executable file
@@ -0,0 +1,24 @@
|
||||
#!/bin/bash
|
||||
|
||||
CHROMIUM_THEME=~/.config/omarchy/current/theme/chromium.theme
|
||||
|
||||
if omarchy-cmd-present chromium || omarchy-cmd-present brave; then
|
||||
if [[ -f $CHROMIUM_THEME ]]; then
|
||||
THEME_RGB_COLOR=$(<$CHROMIUM_THEME)
|
||||
THEME_HEX_COLOR=$(printf '#%02x%02x%02x' ${rgb//,/ })
|
||||
else
|
||||
# Use a default, neutral grey if theme doesn't have a color
|
||||
THEME_RGB_COLOR="28,32,39"
|
||||
THEME_HEX_COLOR="#1c2027"
|
||||
fi
|
||||
|
||||
if omarchy-cmd-present chromium; then
|
||||
rm -f /etc/chromium/policies/managed/color.json
|
||||
chromium --no-startup-window --set-theme-color="$THEME_RGB_COLOR"
|
||||
fi
|
||||
|
||||
if omarchy-cmd-present brave; then
|
||||
echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\"}" | tee "/etc/brave/policies/managed/color.json" >/dev/null
|
||||
brave --refresh-platform-policy --no-startup-window
|
||||
fi
|
||||
fi
|
||||
7
bin/omarchy-theme-set-eza
Executable file
7
bin/omarchy-theme-set-eza
Executable file
@@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ -f ~/.config/omarchy/current/theme/eza.yml ]; then
|
||||
ln -snf ~/.config/omarchy/current/theme/eza.yml ~/.config/eza/theme.yml
|
||||
else
|
||||
rm -f ~/.config/eza/theme.yml
|
||||
fi
|
||||
18
bin/omarchy-theme-set-gnome
Executable file
18
bin/omarchy-theme-set-gnome
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Change gnome modes
|
||||
if [[ -f ~/.config/omarchy/current/theme/light.mode ]]; then
|
||||
gsettings set org.gnome.desktop.interface color-scheme "prefer-light"
|
||||
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita"
|
||||
else
|
||||
gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
|
||||
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
|
||||
fi
|
||||
|
||||
# Change gnome icon theme color
|
||||
GNOME_ICONS_THEME=~/.config/omarchy/current/theme/icons.theme
|
||||
if [[ -f $GNOME_ICONS_THEME ]]; then
|
||||
gsettings set org.gnome.desktop.interface icon-theme "$(<$GNOME_ICONS_THEME)"
|
||||
else
|
||||
gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue"
|
||||
fi
|
||||
7
bin/omarchy-theme-set-terminal
Executable file
7
bin/omarchy-theme-set-terminal
Executable file
@@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
case "$TERMINAL" in
|
||||
"alacritty") touch ~/.config/alacritty/alacritty.toml ;;
|
||||
"kitty") killall -SIGUSR1 kitty ;;
|
||||
"ghostty") killall -SIGUSR2 ghostty ;;
|
||||
esac
|
||||
46
bin/omarchy-theme-set-vscode
Executable file
46
bin/omarchy-theme-set-vscode
Executable file
@@ -0,0 +1,46 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Note: We cannot use `jq` to update settings.json because it’s JSONC (allows comments),
|
||||
# which jq doesn’t support.
|
||||
|
||||
VS_CODE_THEME="$HOME/.config/omarchy/current/theme/vscode.json"
|
||||
VS_CODE_SETTINGS="$HOME/.config/Code/User/settings.json"
|
||||
VS_CODE_SKIP_FLAG="$HOME/.local/state/omarchy/toggles/skip-vscode-theme-changes"
|
||||
|
||||
if omarchy-cmd-present code && [[ ! -f "$VS_CODE_SKIP_FLAG" ]]; then
|
||||
if [[ -f "$VS_CODE_THEME" ]]; then
|
||||
theme_name=$(jq -r '.name' "$VS_CODE_THEME")
|
||||
extension=$(jq -r '.extension' "$VS_CODE_THEME")
|
||||
|
||||
# Install VS Code theme extension
|
||||
if [[ -n "$extension" ]] && ! code --list-extensions | grep -Fxq "$extension"; then
|
||||
notify-send " Installing VS Code theme for $theme_name"
|
||||
code --install-extension "$extension" >/dev/null
|
||||
fi
|
||||
|
||||
# Create config file if there isn't already one
|
||||
mkdir -p "$(dirname "$VS_CODE_SETTINGS")"
|
||||
if [[ ! -f "$VS_CODE_SETTINGS" ]]; then
|
||||
printf '{\n}\n' > "$VS_CODE_SETTINGS"
|
||||
fi
|
||||
|
||||
# Create a `workbench.colorTheme` entry in settings.
|
||||
if ! grep -q '"workbench.colorTheme"' "$VS_CODE_SETTINGS"; then
|
||||
# Insert `"workbench.colorTheme": "",` immediately after the first `{`
|
||||
# Use sed's first-match range (0,/{/) to only replace the first `{`
|
||||
sed -i --follow-symlinks -E '0,/\{/{s/\{/{\
|
||||
"workbench.colorTheme": "",/}' "$VS_CODE_SETTINGS"
|
||||
fi
|
||||
|
||||
# Update theme
|
||||
sed -i --follow-symlinks -E \
|
||||
"s/(\"workbench.colorTheme\"[[:space:]]*:[[:space:]]*\")[^\"]*(\")/\1$theme_name\2/" \
|
||||
"$VS_CODE_SETTINGS"
|
||||
else
|
||||
# Remove theme from settings.json when the theme doesn't have vscode support
|
||||
if [[ -f "$VS_CODE_SETTINGS" ]]; then
|
||||
sed -i --follow-symlinks -E '/"workbench\.colorTheme"[[:space:]]*:[^,}]*,?/d' "$VS_CODE_SETTINGS"
|
||||
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
@@ -43,7 +43,7 @@ cat >"$DESKTOP_FILE" <<EOF
|
||||
Version=1.0
|
||||
Name=$APP_NAME
|
||||
Comment=$APP_NAME
|
||||
Exec=alacritty --class $APP_CLASS -e $APP_EXEC
|
||||
Exec=\$TERMINAL --class=$APP_CLASS -e $APP_EXEC
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=$ICON_PATH
|
||||
|
||||
@@ -6,7 +6,7 @@ DESKTOP_DIR="$HOME/.local/share/applications/"
|
||||
if [ "$#" -eq 0 ]; then
|
||||
# Find all TUIs
|
||||
while IFS= read -r -d '' file; do
|
||||
if grep -q '^Exec=.*alacritty.*-e' "$file"; then
|
||||
if grep -q '^Exec=.*$TERMINAL.*-e' "$file"; then
|
||||
TUIS+=("$(basename "${file%.desktop}")")
|
||||
fi
|
||||
done < <(find "$DESKTOP_DIR" -name '*.desktop' -print0)
|
||||
|
||||
@@ -4,7 +4,4 @@ set -e
|
||||
|
||||
omarchy-snapshot create || [ $? -eq 127 ]
|
||||
omarchy-update-git
|
||||
omarchy-migrate
|
||||
omarchy-update-system-pkgs
|
||||
omarchy-update-restart
|
||||
omarchy-update-available-reset
|
||||
omarchy-update-perform
|
||||
|
||||
33
bin/omarchy-update-branch
Executable file
33
bin/omarchy-update-branch
Executable file
@@ -0,0 +1,33 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
if (($# == 0)); then
|
||||
echo "Usage: omarchy-verion-branch-set [master|dev]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
branch="$1"
|
||||
|
||||
# Snapshot before switching branch
|
||||
omarchy-snapshot create || [ $? -eq 127 ]
|
||||
|
||||
if ! git -C "$OMARCHY_PATH" diff --quiet || ! git -C "$OMARCHY_PATH" diff --cached --quiet; then
|
||||
stashed=true
|
||||
git -C "$OMARCHY_PATH" stash push -u -m "Autostash before switching to $branch"
|
||||
else
|
||||
stashed=false
|
||||
fi
|
||||
|
||||
# Switch branches
|
||||
git -C "$OMARCHY_PATH" switch "$branch"
|
||||
|
||||
# Reapply stash if we made one
|
||||
if [[ $stashed == true ]]; then
|
||||
if ! git -C "$OMARCHY_PATH" stash pop; then
|
||||
echo "⚠️ Conflicts when applying stash — stash kept"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Update the system from the new branch
|
||||
omarchy-update-perform
|
||||
8
bin/omarchy-update-perform
Executable file
8
bin/omarchy-update-perform
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
omarchy-update-available-reset
|
||||
omarchy-update-system-pkgs
|
||||
omarchy-migrate
|
||||
omarchy-update-restart
|
||||
@@ -1,3 +1,2 @@
|
||||
#!/bin/bash
|
||||
|
||||
git -C "$OMARCHY_PATH" describe --tags $(git -C "$OMARCHY_PATH" rev-list --tags --max-count=1)
|
||||
cat $OMARCHY_PATH/version
|
||||
|
||||
11
bin/omarchy-webapp-handler-hey
Executable file
11
bin/omarchy-webapp-handler-hey
Executable file
@@ -0,0 +1,11 @@
|
||||
#!/bin/bash
|
||||
url="$1"
|
||||
web_url="https://app.hey.com"
|
||||
|
||||
# Handle mailto: URLs
|
||||
if [[ $url =~ ^mailto: ]]; then
|
||||
email=$(echo "$url" | sed 's/mailto://')
|
||||
web_url="https://app.hey.com/messages/new?to=$email"
|
||||
fi
|
||||
|
||||
exec omarchy-launch-webapp "$web_url"
|
||||
@@ -24,7 +24,9 @@ if [[ -z "$APP_NAME" || -z "$APP_URL" || -z "$ICON_REF" ]]; then
|
||||
fi
|
||||
|
||||
# Refer to local icon or fetch remotely from URL
|
||||
ICON_DIR="$HOME/.local/share/applications/icons"
|
||||
if [[ $ICON_REF =~ ^https?:// ]]; then
|
||||
ICON_PATH="$ICON_DIR/$APP_NAME.png"
|
||||
if curl -sL -o "$ICON_PATH" "$ICON_REF"; then
|
||||
ICON_PATH="$ICON_DIR/$APP_NAME.png"
|
||||
else
|
||||
@@ -32,7 +34,7 @@ if [[ $ICON_REF =~ ^https?:// ]]; then
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
ICON_PATH="$HOME/.local/share/applications/icons/$ICON_REF"
|
||||
ICON_PATH="$ICON_DIR/$ICON_REF"
|
||||
fi
|
||||
|
||||
# Use custom exec if provided, otherwise default behavior
|
||||
|
||||
@@ -6,7 +6,7 @@ DESKTOP_DIR="$HOME/.local/share/applications/"
|
||||
if [ "$#" -eq 0 ]; then
|
||||
# Find all web apps
|
||||
while IFS= read -r -d '' file; do
|
||||
if grep -q '^Exec=.*omarchy-launch-webapp.*' "$file"; then
|
||||
if grep -q '^Exec=.*\(omarchy-launch-webapp\|omarchy-webapp-handler\).*' "$file"; then
|
||||
WEB_APPS+=("$(basename "${file%.desktop}")")
|
||||
fi
|
||||
done < <(find "$DESKTOP_DIR" -name '*.desktop' -print0)
|
||||
|
||||
2
boot.sh
2
boot.sh
@@ -29,7 +29,7 @@ git clone "https://github.com/${OMARCHY_REPO}.git" ~/.local/share/omarchy >/dev/
|
||||
# Use custom branch if instructed, otherwise default to master
|
||||
OMARCHY_REF="${OMARCHY_REF:-master}"
|
||||
if [[ $OMARCHY_REF != "master" ]]; then
|
||||
echo -e "\eUsing branch: $OMARCHY_REF"
|
||||
echo -e "\e[32mUsing branch: $OMARCHY_REF\e[0m"
|
||||
cd ~/.local/share/omarchy
|
||||
git fetch origin "${OMARCHY_REF}" && git checkout "${OMARCHY_REF}"
|
||||
cd -
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
--ozone-platform=wayland
|
||||
--ozone-platform-hint=wayland
|
||||
--enable-features=TouchpadOverscrollHistoryNavigation
|
||||
--load-extension=~/.local/share/omarchy/default/chromium/extensions/copy-url
|
||||
|
||||
21
config/ghostty/config
Normal file
21
config/ghostty/config
Normal file
@@ -0,0 +1,21 @@
|
||||
# Dynamic theme colors
|
||||
config-file = ?"~/.config/omarchy/current/theme/ghostty.conf"
|
||||
|
||||
# Font
|
||||
font-family = "CaskaydiaMono Nerd Font"
|
||||
font-style = Regular
|
||||
font-size = 9
|
||||
|
||||
# Window
|
||||
window-padding-x = 14
|
||||
window-padding-y = 14
|
||||
confirm-close-surface=false
|
||||
resize-overlay = never
|
||||
|
||||
# Cursor styling
|
||||
cursor-style = "block"
|
||||
cursor-style-blink = false
|
||||
shell-integration-features = no-cursor
|
||||
|
||||
# Keyboard bindings
|
||||
keybind = f11=toggle_fullscreen
|
||||
@@ -1,27 +1,27 @@
|
||||
# Application bindings
|
||||
$terminal = uwsm app -- alacritty
|
||||
$terminal = uwsm app -- $TERMINAL
|
||||
$browser = omarchy-launch-browser
|
||||
|
||||
bindd = SUPER, return, Terminal, exec, $terminal --working-directory="$(omarchy-cmd-terminal-cwd)"
|
||||
bindd = SUPER, RETURN, Terminal, exec, $terminal --working-directory="$(omarchy-cmd-terminal-cwd)"
|
||||
bindd = SUPER, F, File manager, exec, uwsm app -- nautilus --new-window
|
||||
bindd = SUPER, B, Browser, exec, $browser
|
||||
bindd = SUPER SHIFT, B, Browser (private), exec, $browser --private
|
||||
bindd = SUPER, M, Music, exec, uwsm app -- spotify
|
||||
bindd = SUPER, N, Neovim, exec, $terminal -e nvim
|
||||
bindd = SUPER, M, Music, exec, omarchy-launch-or-focus spotify
|
||||
bindd = SUPER, N, Editor, exec, omarchy-launch-editor
|
||||
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
|
||||
bindd = SUPER, G, Signal, exec, omarchy-launch-or-focus signal "uwsm app -- signal-desktop"
|
||||
bindd = SUPER, O, Obsidian, exec, omarchy-launch-or-focus obsidian "uwsm app -- obsidian -disable-gpu --enable-wayland-ime"
|
||||
bindd = SUPER, SLASH, Passwords, exec, uwsm app -- 1password
|
||||
|
||||
# If your web app url contains #, type it as ## to prevent hyperland treat it as comments
|
||||
bindd = SUPER, A, ChatGPT, exec, omarchy-launch-webapp "https://chatgpt.com"
|
||||
bindd = SUPER SHIFT, A, Grok, exec, omarchy-launch-webapp "https://grok.com"
|
||||
bindd = SUPER, C, Calendar, exec, omarchy-launch-webapp "https://app.hey.com/calendar/weeks/"
|
||||
bindd = SUPER, E, Email, exec, omarchy-launch-webapp "https://app.hey.com"
|
||||
bindd = SUPER, Y, YouTube, exec, omarchy-launch-webapp "https://youtube.com/"
|
||||
bindd = SUPER SHIFT, G, WhatsApp, exec, omarchy-launch-webapp "https://web.whatsapp.com/"
|
||||
bindd = SUPER ALT, G, Google Messages, exec, omarchy-launch-webapp "https://messages.google.com/web/conversations"
|
||||
bindd = SUPER, Y, YouTube, exec, omarchy-launch-or-focus-webapp YouTube "https://youtube.com/"
|
||||
bindd = SUPER SHIFT, G, WhatsApp, exec, omarchy-launch-or-focus-webapp WhatsApp "https://web.whatsapp.com/"
|
||||
bindd = SUPER ALT, G, Google Messages, exec, omarchy-launch-or-focus-webapp "Google Messages" "https://messages.google.com/web/conversations"
|
||||
bindd = SUPER, X, X, exec, omarchy-launch-webapp "https://x.com/"
|
||||
bindd = SUPER SHIFT, X, X Post, exec, omarchy-launch-webapp "https://x.com/compose/post"
|
||||
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
# Extra env variables
|
||||
# Note: You must relaunch Hyprland after changing envs (use Super+Esc, then Relaunch)
|
||||
# env = MY_GLOBAL_ENV,setting
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
input {
|
||||
# Use multiple keyboard layouts and switch between them with Left Alt + Right Alt
|
||||
# kb_layout = us,dk,eu
|
||||
kb_options = compose:caps # ,grp:alts_toggle
|
||||
kb_options = compose:caps # ,grp:shifts_toggle
|
||||
|
||||
# Change speed of keyboard repeat
|
||||
repeat_rate = 40
|
||||
@@ -12,7 +12,7 @@ input {
|
||||
# Start with numlock on by default
|
||||
numlock_by_default = true
|
||||
|
||||
# Increase sensitity for mouse/trackpack (default: 0)
|
||||
# Increase sensitivity for mouse/trackpad (default: 0)
|
||||
# sensitivity = 0.35
|
||||
|
||||
touchpad {
|
||||
@@ -27,8 +27,9 @@ input {
|
||||
}
|
||||
}
|
||||
|
||||
# Scroll faster in the terminal
|
||||
windowrule = scrolltouchpad 1.5, class:Alacritty
|
||||
# Scroll nicely in the terminal
|
||||
windowrule = scrolltouchpad 1.5, class:(Alacritty|kitty)
|
||||
windowrule = scrolltouchpad 0.2, class:com.mitchellh.ghostty
|
||||
|
||||
# Enable touchpad gestures for changing workspaces
|
||||
# See https://wiki.hyprland.org/Configuring/Gestures/
|
||||
|
||||
@@ -15,3 +15,9 @@ decoration {
|
||||
# Use round window corners
|
||||
# rounding = 8
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Dwindle-Layout/
|
||||
dwindle {
|
||||
# Avoid overly wide single-window layouts on wide screens
|
||||
# single_window_aspect_ratio = 1 1
|
||||
}
|
||||
|
||||
30
config/kitty/kitty.conf
Normal file
30
config/kitty/kitty.conf
Normal file
@@ -0,0 +1,30 @@
|
||||
include ~/.config/omarchy/current/theme/kitty.conf
|
||||
|
||||
# Font
|
||||
font_family CaskaydiaMono Nerd Font
|
||||
bold_italic_font auto
|
||||
font_size 9.0
|
||||
|
||||
# Window
|
||||
window_padding_width 14
|
||||
window_padding_height 14
|
||||
hide_window_decorations yes
|
||||
show_window_resize_notification no
|
||||
confirm_os_window_close 0
|
||||
|
||||
# Keybindings
|
||||
map F11 toggle_fullscreen
|
||||
|
||||
# Allow remote access
|
||||
single_instance yes
|
||||
allow_remote_control yes
|
||||
|
||||
# Aesthetics
|
||||
cursor_shape block
|
||||
enable_audio_bell no
|
||||
|
||||
# Minimal Tab bar styling
|
||||
tab_bar_edge bottom
|
||||
tab_bar_style powerline
|
||||
tab_powerline_style slanted
|
||||
tab_title_template {title}{' :{}:'.format(num_windows) if num_windows > 1 else ''}
|
||||
56
config/nvim/lua/plugins/all-themes.lua
Normal file
56
config/nvim/lua/plugins/all-themes.lua
Normal file
@@ -0,0 +1,56 @@
|
||||
return {
|
||||
-- Load all theme plugins but don't apply them
|
||||
-- This ensures all colorschemes are available for hot-reloading
|
||||
{
|
||||
"ribru17/bamboo.nvim",
|
||||
lazy = true,
|
||||
priority = 1000,
|
||||
},
|
||||
{
|
||||
"catppuccin/nvim",
|
||||
name = "catppuccin",
|
||||
lazy = true,
|
||||
priority = 1000,
|
||||
},
|
||||
{
|
||||
"sainnhe/everforest",
|
||||
lazy = true,
|
||||
priority = 1000,
|
||||
},
|
||||
{
|
||||
"ellisonleao/gruvbox.nvim",
|
||||
lazy = true,
|
||||
priority = 1000,
|
||||
},
|
||||
{
|
||||
"rebelot/kanagawa.nvim",
|
||||
lazy = true,
|
||||
priority = 1000,
|
||||
},
|
||||
{
|
||||
"tahayvr/matteblack.nvim",
|
||||
lazy = true,
|
||||
priority = 1000,
|
||||
},
|
||||
{
|
||||
"loctvl842/monokai-pro.nvim",
|
||||
lazy = true,
|
||||
priority = 1000,
|
||||
},
|
||||
{
|
||||
"shaunsingh/nord.nvim",
|
||||
lazy = true,
|
||||
priority = 1000,
|
||||
},
|
||||
{
|
||||
"rose-pine/neovim",
|
||||
name = "rose-pine",
|
||||
lazy = true,
|
||||
priority = 1000,
|
||||
},
|
||||
{
|
||||
"folke/tokyonight.nvim",
|
||||
lazy = true,
|
||||
priority = 1000,
|
||||
},
|
||||
}
|
||||
45
config/nvim/lua/plugins/omarchy-theme-hotreload.lua
Normal file
45
config/nvim/lua/plugins/omarchy-theme-hotreload.lua
Normal file
@@ -0,0 +1,45 @@
|
||||
return {
|
||||
{
|
||||
name = "theme-hotreload",
|
||||
dir = vim.fn.stdpath("config"),
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
config = function()
|
||||
local transparency_file = vim.fn.stdpath("config") .. "/plugin/after/transparency.lua"
|
||||
|
||||
vim.api.nvim_create_autocmd("User", {
|
||||
pattern = "LazyReload",
|
||||
callback = function()
|
||||
package.loaded["plugins.theme"] = nil
|
||||
|
||||
vim.schedule(function()
|
||||
local ok, theme_spec = pcall(require, "plugins.theme")
|
||||
if not ok then
|
||||
return
|
||||
end
|
||||
|
||||
for _, spec in ipairs(theme_spec) do
|
||||
if spec[1] == "LazyVim/LazyVim" and spec.opts and spec.opts.colorscheme then
|
||||
local colorscheme = spec.opts.colorscheme
|
||||
|
||||
require("lazy.core.loader").colorscheme(colorscheme)
|
||||
|
||||
vim.defer_fn(function()
|
||||
pcall(vim.cmd.colorscheme, colorscheme)
|
||||
|
||||
if vim.fn.filereadable(transparency_file) == 1 then
|
||||
vim.defer_fn(function()
|
||||
vim.cmd.source(transparency_file)
|
||||
end, 5)
|
||||
end
|
||||
end, 5)
|
||||
|
||||
break
|
||||
end
|
||||
end
|
||||
end)
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
return {
|
||||
{
|
||||
"LazyVim/LazyVim",
|
||||
opts = {
|
||||
colorscheme = "tokyonight",
|
||||
},
|
||||
},
|
||||
}
|
||||
4
config/uwsm/default
Normal file
4
config/uwsm/default
Normal file
@@ -0,0 +1,4 @@
|
||||
# Changes require a relaunch of Hyprland to take effect.
|
||||
|
||||
export TERMINAL=alacritty
|
||||
export EDITOR=nvim
|
||||
@@ -1,7 +1,11 @@
|
||||
# Changes require a relaunch of Hyprland to take effect.
|
||||
|
||||
# Ensure Omarchy bins are in the path
|
||||
export OMARCHY_PATH=$HOME/.local/share/omarchy
|
||||
export PATH=$OMARCHY_PATH/bin/:$PATH
|
||||
export TERMINAL=alacritty
|
||||
|
||||
if command -v mise &> /dev/null; then
|
||||
eval "$(mise activate bash)"
|
||||
fi
|
||||
# Set default terminal and editor
|
||||
source ~/.config/uwsm/default
|
||||
|
||||
# Activate mise if present on the system
|
||||
omarchy-cmd-present mise && eval "$(mise activate bash)"
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
"cpu": {
|
||||
"interval": 5,
|
||||
"format": "",
|
||||
"on-click": "alacritty -e btop"
|
||||
"on-click": "$TERMINAL -e btop"
|
||||
},
|
||||
"clock": {
|
||||
"format": "{:L%A %H:%M}",
|
||||
@@ -74,7 +74,7 @@
|
||||
"tooltip-format-disconnected": "Disconnected",
|
||||
"interval": 3,
|
||||
"spacing": 1,
|
||||
"on-click": "alacritty --class=Impala -e impala"
|
||||
"on-click": "omarchy-launch-wifi"
|
||||
},
|
||||
"battery": {
|
||||
"format": "{capacity}% {icon}",
|
||||
@@ -104,7 +104,7 @@
|
||||
},
|
||||
"pulseaudio": {
|
||||
"format": "{icon}",
|
||||
"on-click": "alacritty --class=Wiremix -e wiremix",
|
||||
"on-click": "$TERMINAL --class=Wiremix -e wiremix",
|
||||
"on-click-right": "pamixer -t",
|
||||
"tooltip-format": "Playing at {volume}%",
|
||||
"scroll-step": 5,
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# Editor used by CLI
|
||||
export EDITOR="nvim"
|
||||
export SUDO_EDITOR="$EDITOR"
|
||||
export BAT_THEME=ansi
|
||||
|
||||
@@ -6,9 +6,3 @@ source ~/.local/share/omarchy/default/bash/rc
|
||||
#
|
||||
# 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"
|
||||
|
||||
21
default/chromium/extensions/copy-url/background.js
Normal file
21
default/chromium/extensions/copy-url/background.js
Normal file
@@ -0,0 +1,21 @@
|
||||
chrome.commands.onCommand.addListener((command) => {
|
||||
if (command === 'copy-url') {
|
||||
chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => {
|
||||
const currentTab = tabs[0];
|
||||
|
||||
chrome.scripting.executeScript({
|
||||
target: { tabId: currentTab.id },
|
||||
func: () => {
|
||||
navigator.clipboard.writeText(window.location.href);
|
||||
}
|
||||
}).then(() => {
|
||||
chrome.notifications.create({
|
||||
type: 'basic',
|
||||
iconUrl: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==',
|
||||
title: ' URL copied to clipboard',
|
||||
message: ''
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
1
default/chromium/extensions/copy-url/icon.png
Symbolic link
1
default/chromium/extensions/copy-url/icon.png
Symbolic link
@@ -0,0 +1 @@
|
||||
../../../../icon.png
|
||||
19
default/chromium/extensions/copy-url/manifest.json
Normal file
19
default/chromium/extensions/copy-url/manifest.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"manifest_version": 4,
|
||||
"name": "Copy URL",
|
||||
"version": "1.0",
|
||||
"description": "Copy current URL to clipboard, this extension is installed by Omarchy",
|
||||
"permissions": ["activeTab", "scripting", "notifications"],
|
||||
"icons": {
|
||||
"16": "icon.png",
|
||||
"48": "icon.png",
|
||||
"128": "icon.png"
|
||||
},
|
||||
"commands": {
|
||||
"copy-url": {
|
||||
"suggested_key": {"default": "Alt+Shift+L"},
|
||||
"description": "Copy URL"
|
||||
}
|
||||
},
|
||||
"background": {"service_worker": "background.js"}
|
||||
}
|
||||
@@ -4,9 +4,11 @@ source = ~/.local/share/omarchy/default/hypr/apps/bitwarden.conf
|
||||
source = ~/.local/share/omarchy/default/hypr/apps/browser.conf
|
||||
source = ~/.local/share/omarchy/default/hypr/apps/hyprshot.conf
|
||||
source = ~/.local/share/omarchy/default/hypr/apps/jetbrains.conf
|
||||
source = ~/.local/share/omarchy/default/hypr/apps/localsend.conf
|
||||
source = ~/.local/share/omarchy/default/hypr/apps/pip.conf
|
||||
source = ~/.local/share/omarchy/default/hypr/apps/qemu.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/terminals.conf
|
||||
source = ~/.local/share/omarchy/default/hypr/apps/walker.conf
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Browser types
|
||||
windowrule = tag +chromium-based-browser, class:([cC]hrom(e|ium)|[bB]rave-browser|Microsoft-edge|Vivaldi-stable)
|
||||
windowrule = tag +chromium-based-browser, class:([cC]hrom(e|ium)|[bB]rave-browser|Microsoft-edge|Vivaldi-stable|helium)
|
||||
windowrule = tag +firefox-based-browser, class:([fF]irefox|zen|librewolf)
|
||||
|
||||
# Force chromium-based browsers into a tile to deal with --app bug
|
||||
|
||||
3
default/hypr/apps/localsend.conf
Normal file
3
default/hypr/apps/localsend.conf
Normal file
@@ -0,0 +1,3 @@
|
||||
# Float LocalSend and fzf file picker
|
||||
windowrule = float, class:(Share|localsend)
|
||||
windowrule = center, class:(Share|localsend)
|
||||
@@ -1,4 +1,4 @@
|
||||
# Float Steam, fullscreen RetroArch
|
||||
# Float Steam
|
||||
windowrule = float, class:steam
|
||||
windowrule = center, class:steam, title:Steam
|
||||
windowrule = opacity 1 1, class:steam
|
||||
|
||||
@@ -4,7 +4,7 @@ windowrule = center, tag:floating-window
|
||||
windowrule = size 800 600, tag:floating-window
|
||||
|
||||
windowrule = tag +floating-window, class:(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty|Omarchy|About|TUI.float)
|
||||
windowrule = tag +floating-window, class:(xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), title:^(Open.*Files?|Open Folder|Save.*Files?|Save.*As|Save|All Files)
|
||||
windowrule = tag +floating-window, class:(xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), title:^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files)
|
||||
|
||||
# Fullscreen screensaver
|
||||
windowrule = fullscreen, class:Screensaver
|
||||
|
||||
2
default/hypr/apps/terminals.conf
Normal file
2
default/hypr/apps/terminals.conf
Normal file
@@ -0,0 +1,2 @@
|
||||
# Define terminal tag to style them uniformly
|
||||
windowrule = tag +terminal, class:(Alacritty|kitty|com.mitchellh.ghostty)
|
||||
@@ -4,6 +4,7 @@ exec-once = uwsm app -- waybar
|
||||
exec-once = uwsm app -- fcitx5
|
||||
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
|
||||
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||
exec-once = wl-clip-persist --clipboard regular --all-mime-type-regex '^(?!x-kde-passwordManagerHint).+'
|
||||
exec-once = omarchy-cmd-first-run
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Deprecated bindings file. New installations include everything directly.
|
||||
|
||||
bindd = SUPER, return, Terminal, exec, $terminal
|
||||
bindd = SUPER, RETURN, Terminal, exec, $terminal
|
||||
bindd = SUPER, F, File manager, exec, $fileManager
|
||||
bindd = SUPER, B, Web browser, exec, $browser
|
||||
bindd = SUPER, M, Music player, exec, $music
|
||||
@@ -9,7 +9,7 @@ bindd = SUPER, T, Top, exec, $terminal -e btop
|
||||
bindd = SUPER, D, Lazy Docker, exec, $terminal -e lazydocker
|
||||
bindd = SUPER, G, Messenger, exec, $messenger
|
||||
bindd = SUPER, O, Obsidian, exec, obsidian -disable-gpu
|
||||
bindd = SUPER, slash, Password manager, exec, $passwordManager
|
||||
bindd = SUPER, SLASH, Password manager, exec, $passwordManager
|
||||
|
||||
source = ~/.local/share/omarchy/default/hypr/bindings/media.conf
|
||||
source = ~/.local/share/omarchy/default/hypr/bindings/tiling.conf
|
||||
|
||||
@@ -7,12 +7,13 @@ 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
|
||||
bindd = ALT, F11, Full width, fullscreen, 1
|
||||
|
||||
# Move focus with SUPER + arrow keys
|
||||
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
|
||||
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 SUPER + [0-9]
|
||||
bindd = SUPER, code:10, Switch to workspace 1, workspace, 1
|
||||
@@ -38,21 +39,22 @@ bindd = SUPER SHIFT, code:17, Move window to workspace 8, movetoworkspace, 8
|
||||
bindd = SUPER SHIFT, code:18, Move window to workspace 9, movetoworkspace, 9
|
||||
bindd = SUPER SHIFT, code:19, Move window to workspace 10, movetoworkspace, 10
|
||||
|
||||
# Tab between workspaces
|
||||
# TAB between workspaces
|
||||
bindd = SUPER, TAB, Next workspace, workspace, e+1
|
||||
bindd = SUPER SHIFT, TAB, Previous workspace, workspace, e-1
|
||||
bindd = SUPER CTRL, TAB, Former workspace, workspace, previous
|
||||
|
||||
# Swap active window with the one next to it with SUPER + SHIFT + arrow keys
|
||||
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
|
||||
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 SHIFT, Tab, Cycle to prev window, cyclenext, prev
|
||||
bindd = ALT, Tab, Reveal active window on top, bringactivetotop
|
||||
bindd = ALT SHIFT, Tab, Reveal active window on top, bringactivetotop
|
||||
bindd = ALT, TAB, Cycle to next window, cyclenext
|
||||
bindd = ALT SHIFT, TAB, Cycle to prev window, cyclenext, prev
|
||||
bindd = ALT, TAB, Reveal active window on top, bringactivetotop
|
||||
bindd = ALT SHIFT, TAB, Reveal active window on top, bringactivetotop
|
||||
|
||||
# Resize active window
|
||||
bindd = SUPER, code:20, Expand window left, resizeactive, -100 0 # - key
|
||||
@@ -61,8 +63,8 @@ bindd = SUPER SHIFT, code:20, Shrink window up, resizeactive, 0 -100
|
||||
bindd = SUPER SHIFT, code:21, Expand window down, resizeactive, 0 100
|
||||
|
||||
# Scroll through existing workspaces with SUPER + scroll
|
||||
bindd = SUPER, mouse_down, Scroll active workspace forward, workspace, e+1
|
||||
bindd = SUPER, mouse_up, Scroll active workspace backward, workspace, e-1
|
||||
bindd = SUPER, MOUSE_DOWN, Scroll active workspace forward, workspace, e+1
|
||||
bindd = SUPER, MOUSE_UP, Scroll active workspace backward, workspace, e-1
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindmd = SUPER, mouse:272, Move window, movewindow
|
||||
|
||||
@@ -42,3 +42,6 @@ bindd = CTRL ALT SHIFT, PRINT, Screen record display with audio, exec, omarchy-c
|
||||
|
||||
# Color picker
|
||||
bindd = SUPER, PRINT, Color picker, exec, pkill hyprpicker || hyprpicker -a
|
||||
|
||||
# File sharing
|
||||
bindd = CTRL SUPER, S, Share, exec, omarchy-menu share
|
||||
|
||||
@@ -86,4 +86,10 @@ misc {
|
||||
disable_hyprland_logo = true
|
||||
disable_splash_rendering = true
|
||||
focus_on_activate = true
|
||||
anr_missed_pings = 3
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#cursor
|
||||
cursor {
|
||||
hide_on_key_press = true
|
||||
}
|
||||
|
||||
@@ -16,4 +16,7 @@ invisible=false
|
||||
default-timeout=0
|
||||
|
||||
[summary~="Setup Wi-Fi"]
|
||||
on-button-left=exec sh -c 'alacritty --class=Impala -e impala & makoctl dismiss -n "$id"'
|
||||
on-button-left=exec sh -c 'omarchy-notification-dismiss "Setup Wi-Fi"; omarchy-launch-wifi'
|
||||
|
||||
[summary~="Update System"]
|
||||
on-button-left=exec sh -c 'omarchy-notification-dismiss "Update System"; omarchy-launch-floating-terminal-with-presentation omarchy-update'
|
||||
|
||||
@@ -9,11 +9,12 @@ run_logged $OMARCHY_INSTALL/config/increase-lockout-limit.sh
|
||||
run_logged $OMARCHY_INSTALL/config/ssh-flakiness.sh
|
||||
run_logged $OMARCHY_INSTALL/config/detect-keyboard-layout.sh
|
||||
run_logged $OMARCHY_INSTALL/config/xcompose.sh
|
||||
run_logged $OMARCHY_INSTALL/config/mise-ruby.sh
|
||||
run_logged $OMARCHY_INSTALL/config/mise-work.sh
|
||||
run_logged $OMARCHY_INSTALL/config/fix-powerprofilesctl-shebang.sh
|
||||
run_logged $OMARCHY_INSTALL/config/docker.sh
|
||||
run_logged $OMARCHY_INSTALL/config/mimetypes.sh
|
||||
run_logged $OMARCHY_INSTALL/config/localdb.sh
|
||||
run_logged $OMARCHY_INSTALL/config/fast-shutdown.sh
|
||||
run_logged $OMARCHY_INSTALL/config/sudoless-asdcontrol.sh
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/network.sh
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/set-wireless-regdom.sh
|
||||
@@ -24,5 +25,6 @@ run_logged $OMARCHY_INSTALL/config/hardware/usb-autosuspend.sh
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/ignore-power-button.sh
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/nvidia.sh
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/fix-f13-amd-audio-input.sh
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/fix-apple-bcm4360.sh
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/fix-apple-bcm43xx.sh
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/fix-apple-spi-keyboard.sh
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/fix-apple-t2.sh
|
||||
|
||||
7
install/config/fast-shutdown.sh
Executable file
7
install/config/fast-shutdown.sh
Executable file
@@ -0,0 +1,7 @@
|
||||
sudo mkdir -p /etc/systemd/system.conf.d
|
||||
|
||||
cat <<EOF | sudo tee /etc/systemd/system.conf.d/10-faster-shutdown.conf
|
||||
[Manager]
|
||||
DefaultTimeoutStopSec=5s
|
||||
EOF
|
||||
sudo systemctl daemon-reload
|
||||
2
install/config/fix-powerprofilesctl-shebang.sh
Normal file
2
install/config/fix-powerprofilesctl-shebang.sh
Normal file
@@ -0,0 +1,2 @@
|
||||
# Ensure we use system python3 and not mise's python3
|
||||
sudo sed -i '/env python3/ c\#!/bin/python3' /usr/bin/powerprofilesctl
|
||||
@@ -1,5 +0,0 @@
|
||||
# Install wifi drivers for 2013-2015 MacBooks using the BCM4360 chip
|
||||
if lspci -nnv | grep -A2 "14e4:43a0" | grep -q "106b:"; then
|
||||
echo "Apple BCM4360 detected"
|
||||
sudo pacman -S --noconfirm --needed broadcom-wl dkms linux-headers
|
||||
fi
|
||||
11
install/config/hardware/fix-apple-bcm43xx.sh
Normal file
11
install/config/hardware/fix-apple-bcm43xx.sh
Normal file
@@ -0,0 +1,11 @@
|
||||
# Install Wi-Fi drivers for Broadcom chips on MacBooks:
|
||||
# - BCM4360 (2013–2015)
|
||||
# - BCM4331 (2012, early 2013)
|
||||
|
||||
pci_info=$(lspci -nnv)
|
||||
|
||||
if echo "$pci_info" | grep -q "106b:" &&
|
||||
(echo "$pci_info" | grep -q "14e4:43a0" || echo "$pci_info" | grep -q "14e4:4331"); then
|
||||
echo "Apple BCM4360 / BCM4331 detected"
|
||||
sudo pacman -S --noconfirm --needed broadcom-wl dkms linux-headers
|
||||
fi
|
||||
@@ -1,7 +1,12 @@
|
||||
# Detect MacBook models that need SPI keyboard modules
|
||||
if [[ "$(cat /sys/class/dmi/id/product_name 2>/dev/null)" =~ MacBook12,1|MacBookPro13,[123]|MacBookPro14,[123] ]]; then
|
||||
product_name="$(cat /sys/class/dmi/id/product_name 2>/dev/null)"
|
||||
if [[ "$product_name" =~ MacBook[89],1|MacBook1[02],1|MacBookPro13,[123]|MacBookPro14,[123] ]]; then
|
||||
echo "Detected MacBook with SPI keyboard"
|
||||
|
||||
sudo pacman -S --noconfirm --needed macbook12-spi-driver-dkms
|
||||
echo "MODULES=(applespi intel_lpss_pci spi_pxa2xx_platform)" | sudo tee /etc/mkinitcpio.conf.d/macbook_spi_modules.conf >/dev/null
|
||||
if [[ "$product_name" == "MacBook8,1" ]]; then
|
||||
echo "MODULES=(applespi spi_pxa2xx_platform spi_pxa2xx_pci)" | sudo tee /etc/mkinitcpio.conf.d/macbook_spi_modules.conf >/dev/null
|
||||
else
|
||||
echo "MODULES=(applespi intel_lpss_pci spi_pxa2xx_platform)" | sudo tee /etc/mkinitcpio.conf.d/macbook_spi_modules.conf >/dev/null
|
||||
fi
|
||||
fi
|
||||
|
||||
28
install/config/hardware/fix-apple-t2.sh
Normal file
28
install/config/hardware/fix-apple-t2.sh
Normal file
@@ -0,0 +1,28 @@
|
||||
# Detect T2 MacBook models using PCI IDs
|
||||
# Vendor: 106b (Apple), Device IDs: 1801 or 1802 (T2 Security Chip)
|
||||
if lspci -nn | grep -q "106b:180[12]"; then
|
||||
echo "Detected MacBook with T2 chip. Installing support items..."
|
||||
|
||||
sudo pacman -S --noconfirm --needed \
|
||||
linux-t2 \
|
||||
linux-t2-headers \
|
||||
apple-t2-audio-config \
|
||||
apple-bcm-firmware \
|
||||
t2fanrd \
|
||||
tiny-dfr
|
||||
|
||||
echo "apple-bce" | sudo tee /etc/modules-load.d/t2.conf >/dev/null
|
||||
|
||||
echo "MODULES+=(apple-bce usbhid hid_apple hid_generic xhci_pci xhci_hcd)" | sudo tee /etc/mkinitcpio.conf.d/apple-t2.conf >/dev/null
|
||||
|
||||
cat <<EOF | sudo tee /etc/modprobe.d/brcmfmac.conf >/dev/null
|
||||
# Fix for T2 MacBook WiFi connectivity issues
|
||||
options brcmfmac feature_disable=0x82000
|
||||
EOF
|
||||
|
||||
sudo mkdir -p /etc/limine-entry-tool.d
|
||||
cat <<EOF | sudo tee /etc/limine-entry-tool.d/t2-mac.conf >/dev/null
|
||||
# Generated by Omarchy installer for T2 Mac support
|
||||
KERNEL_CMDLINE[default]+="intel_iommu=on iommu=pt pcie_ports=compat"
|
||||
EOF
|
||||
fi
|
||||
@@ -33,3 +33,6 @@ xdg-mime default mpv.desktop video/x-ms-asf
|
||||
xdg-mime default mpv.desktop video/x-ogm+ogg
|
||||
xdg-mime default mpv.desktop video/x-theora+ogg
|
||||
xdg-mime default mpv.desktop application/ogg
|
||||
|
||||
# Use Hey for mailto: links
|
||||
xdg-mime default HEY.desktop x-scheme-handler/mailto
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
# Install Ruby using gcc-14 for compatibility
|
||||
mise settings set ruby.ruby_build_opts "CC=gcc-14 CXX=g++-14"
|
||||
|
||||
# Trust .ruby-version
|
||||
mise settings add idiomatic_version_file_enable_tools ruby
|
||||
|
||||
# Install pre-built Ruby + Rails for x86_64
|
||||
if [[ $(uname -m) == "x86_64" ]]; then
|
||||
RUBY_VERSION="3.4.5"
|
||||
RUBY_TARBALL="ruby-$RUBY_VERSION-rails-8.0.2.1-x86_64.tar.gz"
|
||||
RUBY_URL="https://pkgs.omarchy.org/ruby/$RUBY_TARBALL"
|
||||
MISE_RUBY_DIR="$HOME/.local/share/mise/installs/ruby"
|
||||
OFFLINE_CACHE="/var/cache/omarchy/ruby"
|
||||
|
||||
mkdir -p "$MISE_RUBY_DIR"
|
||||
|
||||
if [[ -n ${OMARCHY_ONLINE_INSTALL:-} ]]; then
|
||||
echo "Downloading pre-built Ruby $RUBY_VERSION..."
|
||||
curl -fsSL "$RUBY_URL" | tar -xz -C "$MISE_RUBY_DIR"
|
||||
else
|
||||
echo "Installing Ruby from offline cache..."
|
||||
tar -xzf "$OFFLINE_CACHE/$RUBY_TARBALL" -C "$MISE_RUBY_DIR"
|
||||
fi
|
||||
|
||||
mise use --global "ruby@${RUBY_VERSION}"
|
||||
fi
|
||||
@@ -1,3 +1,3 @@
|
||||
# Setup sudo-less controls for controlling brightness on Apple Displays
|
||||
echo "$USER ALL=(ALL) NOPASSWD: /usr/local/bin/asdcontrol" | sudo tee /etc/sudoers.d/asdcontrol
|
||||
echo "$USER ALL=(ALL) NOPASSWD: /usr/bin/asdcontrol" | sudo tee /etc/sudoers.d/asdcontrol
|
||||
sudo chmod 440 /etc/sudoers.d/asdcontrol
|
||||
|
||||
@@ -20,6 +20,9 @@ ln -snf ~/.config/omarchy/current/theme/btop.theme ~/.config/btop/themes/current
|
||||
mkdir -p ~/.config/mako
|
||||
ln -snf ~/.config/omarchy/current/theme/mako.ini ~/.config/mako/config
|
||||
|
||||
mkdir -p ~/.config/eza
|
||||
ln -snf ~/.config/omarchy/current/theme/eza.yml ~/.config/eza/theme.yml
|
||||
|
||||
# Add managed policy directories for Chromium and Brave for theme changes
|
||||
sudo mkdir -p /etc/chromium/policies/managed
|
||||
sudo chmod a+rw /etc/chromium/policies/managed
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
notify-send "👋 Welcome to Omarchy" "You're in for a great computing adventure. Have fun!" -t 30000
|
||||
notify-send " Update System" "When you have internet, click to update the system." -u critical
|
||||
notify-send "👋 Welcome to Omarchy" "You're in for a great computing adventure. Have fun!" -t 30000
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
if ! ping -c3 -W1 1.1.1.1 >/dev/null 2>&1; then
|
||||
notify-send " Click to Setup Wi-Fi" "Tab between sections, space selects, ? for help." -u critical -t 30000
|
||||
notify-send " Click to Setup Wi-Fi" "Tab between sections, space selects, ? for help." -u critical -t 30000
|
||||
fi
|
||||
|
||||
@@ -126,7 +126,11 @@ catch_errors() {
|
||||
break
|
||||
;;
|
||||
"View full log")
|
||||
less "$OMARCHY_INSTALL_LOG_FILE"
|
||||
if command -v less &>/dev/null; then
|
||||
less "$OMARCHY_INSTALL_LOG_FILE"
|
||||
else
|
||||
tail "$OMARCHY_INSTALL_LOG_FILE"
|
||||
fi
|
||||
;;
|
||||
"Upload log for support")
|
||||
omarchy-upload-install-log
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
# Called by Omarchy ISO setup before starting configurator and archinstall
|
||||
|
||||
source "$OMARCHY_INSTALL/preflight/set-size-vars.sh"
|
||||
source "$OMARCHY_INSTALL/helpers/logo.sh"
|
||||
source "$OMARCHY_INSTALL/preflight/gum.sh"
|
||||
source "$OMARCHY_INSTALL/helpers/tail-log-output.sh"
|
||||
source "$OMARCHY_INSTALL/helpers/trap-errors.sh"
|
||||
|
||||
source $OMARCHY_INSTALL/helpers/chroot.sh
|
||||
source $OMARCHY_INSTALL/helpers/logo.sh
|
||||
source $OMARCHY_INSTALL/helpers/gum.sh
|
||||
source $OMARCHY_INSTALL/helpers/errors.sh
|
||||
source $OMARCHY_INSTALL/helpers/logging.sh
|
||||
source $OMARCHY_INSTALL/helpers/layout.sh
|
||||
@@ -1,4 +1,4 @@
|
||||
run_logged $OMARCHY_INSTALL/login/plymouth.sh
|
||||
run_logged $OMARCHY_INSTALL/login/default-keyring.sh
|
||||
run_logged $OMARCHY_INSTALL/login/sddm.sh
|
||||
run_logged $OMARCHY_INSTALL/login/limine-snapper.sh
|
||||
run_logged $OMARCHY_INSTALL/login/enable-mkinitcpio.sh
|
||||
run_logged $OMARCHY_INSTALL/login/alt-bootloaders.sh
|
||||
|
||||
@@ -1,115 +0,0 @@
|
||||
if ! command -v limine &>/dev/null; then
|
||||
# Add kernel hooks
|
||||
if ! grep -Eq '^HOOKS=.*plymouth' /etc/mkinitcpio.conf; then
|
||||
# Backup original mkinitcpio.conf just in case
|
||||
backup_timestamp=$(date +"%Y%m%d%H%M%S")
|
||||
sudo cp /etc/mkinitcpio.conf "/etc/mkinitcpio.conf.bak.${backup_timestamp}"
|
||||
|
||||
# Add plymouth to HOOKS array after 'base udev' or 'base systemd'
|
||||
if grep "^HOOKS=" /etc/mkinitcpio.conf | grep -q "base systemd"; then
|
||||
sudo sed -i '/^HOOKS=/s/base systemd/base systemd plymouth/' /etc/mkinitcpio.conf
|
||||
elif grep "^HOOKS=" /etc/mkinitcpio.conf | grep -q "base udev"; then
|
||||
sudo sed -i '/^HOOKS=/s/base udev/base udev plymouth/' /etc/mkinitcpio.conf
|
||||
else
|
||||
echo "Couldn't add the Plymouth hook"
|
||||
fi
|
||||
|
||||
# Regenerate initramfs
|
||||
sudo mkinitcpio -P
|
||||
fi
|
||||
|
||||
# Add kernel parameters for Plymouth
|
||||
if [ -d "/boot/loader/entries" ]; then # systemd-boot
|
||||
echo "Detected systemd-boot"
|
||||
|
||||
for entry in /boot/loader/entries/*.conf; do
|
||||
if [ -f "$entry" ]; then
|
||||
# Skip fallback entries
|
||||
if [[ "$(basename "$entry")" == *"fallback"* ]]; then
|
||||
echo "Skipped: $(basename "$entry") (fallback entry)"
|
||||
continue
|
||||
fi
|
||||
|
||||
# Skip if splash it already present for some reason
|
||||
if ! grep -q "splash" "$entry"; then
|
||||
sudo sed -i '/^options/ s/$/ splash quiet/' "$entry"
|
||||
else
|
||||
echo "Skipped: $(basename "$entry") (splash already present)"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
elif [ -f "/etc/default/grub" ]; then # Grub
|
||||
echo "Detected grub"
|
||||
|
||||
# Backup GRUB config before modifying
|
||||
backup_timestamp=$(date +"%Y%m%d%H%M%S")
|
||||
sudo cp /etc/default/grub "/etc/default/grub.bak.${backup_timestamp}"
|
||||
|
||||
# Check if splash is already in GRUB_CMDLINE_LINUX_DEFAULT
|
||||
if ! grep -q "GRUB_CMDLINE_LINUX_DEFAULT.*splash" /etc/default/grub; then
|
||||
# Get current GRUB_CMDLINE_LINUX_DEFAULT value
|
||||
current_cmdline=$(grep "^GRUB_CMDLINE_LINUX_DEFAULT=" /etc/default/grub | cut -d'"' -f2)
|
||||
|
||||
# Add splash and quiet if not present
|
||||
new_cmdline="$current_cmdline"
|
||||
if [[ ! "$current_cmdline" =~ splash ]]; then
|
||||
new_cmdline="$new_cmdline splash"
|
||||
fi
|
||||
if [[ ! "$current_cmdline" =~ quiet ]]; then
|
||||
new_cmdline="$new_cmdline quiet"
|
||||
fi
|
||||
|
||||
# Trim any leading/trailing spaces
|
||||
new_cmdline=$(echo "$new_cmdline" | xargs)
|
||||
|
||||
sudo sed -i "s/^GRUB_CMDLINE_LINUX_DEFAULT=\".*\"/GRUB_CMDLINE_LINUX_DEFAULT=\"$new_cmdline\"/" /etc/default/grub
|
||||
|
||||
# Regenerate grub config
|
||||
sudo grub-mkconfig -o /boot/grub/grub.cfg
|
||||
else
|
||||
echo "GRUB already configured with splash kernel parameters"
|
||||
fi
|
||||
elif [ -d "/etc/cmdline.d" ]; then # UKI
|
||||
echo "Detected a UKI setup"
|
||||
# Relying on mkinitcpio to assemble a UKI
|
||||
# https://wiki.archlinux.org/title/Unified_kernel_image
|
||||
if ! grep -q splash /etc/cmdline.d/*.conf; then
|
||||
# Need splash, create the omarchy file
|
||||
echo "splash" | sudo tee -a /etc/cmdline.d/omarchy.conf
|
||||
fi
|
||||
if ! grep -q quiet /etc/cmdline.d/*.conf; then
|
||||
# Need quiet, create or append the omarchy file
|
||||
echo "quiet" | sudo tee -a /etc/cmdline.d/omarchy.conf
|
||||
fi
|
||||
elif [ -f "/etc/kernel/cmdline" ]; then # UKI Alternate
|
||||
# Alternate UKI kernel cmdline location
|
||||
echo "Detected a UKI setup"
|
||||
|
||||
# Backup kernel cmdline config before modifying
|
||||
backup_timestamp=$(date +"%Y%m%d%H%M%S")
|
||||
sudo cp /etc/kernel/cmdline "/etc/kernel/cmdline.bak.${backup_timestamp}"
|
||||
|
||||
current_cmdline=$(cat /etc/kernel/cmdline)
|
||||
|
||||
# Add splash and quiet if not present
|
||||
new_cmdline="$current_cmdline"
|
||||
if [[ ! "$current_cmdline" =~ splash ]]; then
|
||||
new_cmdline="$new_cmdline splash"
|
||||
fi
|
||||
if [[ ! "$current_cmdline" =~ quiet ]]; then
|
||||
new_cmdline="$new_cmdline quiet"
|
||||
fi
|
||||
|
||||
# Trim any leading/trailing spaces
|
||||
new_cmdline=$(echo "$new_cmdline" | xargs)
|
||||
|
||||
# Write new file
|
||||
echo $new_cmdline | sudo tee /etc/kernel/cmdline
|
||||
else
|
||||
echo ""
|
||||
echo " None of systemd-boot, GRUB, or UKI detected. Please manually add these kernel parameters:"
|
||||
echo " - splash (to see the graphical splash screen)"
|
||||
echo " - quiet (for silent boot)"
|
||||
echo ""
|
||||
fi
|
||||
fi
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user