Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
57e96e529a | ||
![]() |
363be8e6fe |
11
applications/About.desktop
Normal file
11
applications/About.desktop
Normal file
@ -0,0 +1,11 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=About
|
||||
Comment=System information from Fastfetch
|
||||
Exec=alacritty --class=About --title=About -e bash -c 'fastfetch; read -n 1 -s'
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=Arch
|
||||
Categories=GTK;
|
||||
StartupNotify=false
|
||||
|
11
applications/Activity.desktop
Normal file
11
applications/Activity.desktop
Normal file
@ -0,0 +1,11 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=Activity
|
||||
Comment=System activity from btop
|
||||
Exec=alacritty --class=Activity --title=Activity -e btop
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=Activity
|
||||
Categories=GTK;
|
||||
StartupNotify=false
|
||||
|
11
applications/Basecamp.desktop
Normal file
11
applications/Basecamp.desktop
Normal file
@ -0,0 +1,11 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=Basecamp
|
||||
Comment=Basecamp Project Management
|
||||
Exec=chromium --new-window --ozone-platform=wayland --app="https://launchpad.37signals.com" --name=Basecamp --class=Basecamp
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=Basecamp
|
||||
Categories=GTK;
|
||||
MimeType=text/html;text/xml;application/xhtml_xml;
|
||||
StartupNotify=true
|
11
applications/Docker.desktop
Normal file
11
applications/Docker.desktop
Normal file
@ -0,0 +1,11 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=Docker
|
||||
Comment=Manage Docker containers with LazyDocker
|
||||
Exec=alacritty --class=Docker --title=Docker -e lazydocker
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=Docker
|
||||
Categories=GTK;
|
||||
StartupNotify=false
|
||||
|
11
applications/HEY.desktop
Normal file
11
applications/HEY.desktop
Normal file
@ -0,0 +1,11 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=HEY
|
||||
Comment=HEY Email + Calendar
|
||||
Exec=chromium --new-window --ozone-platform=wayland --app="https://app.hey.com" --name=HEY --class=HEY
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=HEY
|
||||
Categories=GTK;
|
||||
MimeType=text/html;text/xml;application/xhtml_xml;
|
||||
StartupNotify=true
|
12
applications/Zoom.desktop
Normal file
12
applications/Zoom.desktop
Normal file
@ -0,0 +1,12 @@
|
||||
[Desktop Entry]
|
||||
Name=Zoom
|
||||
Comment=Zoom Video Conference
|
||||
Exec=env QT_SCALE_FACTOR=2 /usr/bin/zoom %U
|
||||
Icon=Zoom
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Encoding=UTF-8
|
||||
Categories=Network;Application;
|
||||
StartupWMClass=zoom
|
||||
MimeType=x-scheme-handler/zoommtg;x-scheme-handler/zoomus;x-scheme-handler/tel;x-scheme-handler/callto;x-scheme-handler/zoomphonecall;x-scheme-handler/zoomphonesms;x-scheme-handler/zoomcontactcentercall;application/x-zoom
|
||||
X-KDE-Protocols=zoommtg;zoomus;tel;callto;zoomphonecall;zoomphonesms;zoomcontactcentercall;
|
10
applications/blueberry.desktop
Normal file
10
applications/blueberry.desktop
Normal file
@ -0,0 +1,10 @@
|
||||
[Desktop Entry]
|
||||
Name=Bluetooth
|
||||
Comment=Configure Bluetooth settings
|
||||
Icon=bluetooth
|
||||
Exec=env GTK_THEME=Adwaita-dark blueberry
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=GTK;GNOME;Settings;HardwareSettings;X-XFCE-SettingsDialog;X-XFCE-HardwareSettings;
|
||||
StartupNotify=true
|
||||
NotShowIn=GNOME;KDE;Unity;
|
@ -1,2 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Hidden=true
|
@ -1,2 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Hidden=true
|
BIN
applications/icons/Activity.png
Normal file
BIN
applications/icons/Activity.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 38 KiB |
BIN
applications/icons/Arch.png
Normal file
BIN
applications/icons/Arch.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 19 KiB |
BIN
applications/icons/Basecamp.png
Normal file
BIN
applications/icons/Basecamp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 64 KiB |
BIN
applications/icons/Docker.png
Normal file
BIN
applications/icons/Docker.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 21 KiB |
BIN
applications/icons/HEY.png
Normal file
BIN
applications/icons/HEY.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 196 KiB |
@ -1,51 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Media Player
|
||||
Name[ar]=مشغل وسائط mpv
|
||||
Name[ca]=Reproductor multimèdia mpv
|
||||
Name[cs]=mpv přehrávač
|
||||
Name[da]=mpv-medieafspiller
|
||||
Name[fr]=Lecteur multimédia mpv
|
||||
Name[it]=Lettore multimediale mpv
|
||||
Name[ja]=mpv メディアプレイヤー
|
||||
Name[pl]=Odtwarzacz mpv
|
||||
Name[ru]=Проигрыватель mpv
|
||||
Name[tr]=mpv Ortam Oynatıcı
|
||||
Name[zh_CN]=mpv 媒体播放器
|
||||
Name[zh_TW]=mpv 媒體播放器
|
||||
GenericName=Multimedia player
|
||||
GenericName[ar]=مُشَغِّل وسائط متعددة
|
||||
GenericName[cs]=Multimediální přehrávač
|
||||
GenericName[da]=Multimedieafspiller
|
||||
GenericName[fr]=Lecteur multimédia
|
||||
GenericName[it]=Lettore multimediale
|
||||
GenericName[ja]=マルチメディアプレイヤー
|
||||
GenericName[ru]=Мультимедийный проигрыватель
|
||||
GenericName[tr]=Çoklu ortam oynatıcı
|
||||
GenericName[zh_CN]=多媒体播放器
|
||||
GenericName[zh_TW]=多媒體播放器
|
||||
Comment=Play movies and songs
|
||||
Comment[ar]=شَغِّل الأفلام والأغاني
|
||||
Comment[ca]=Reproduïu vídeos i cançons
|
||||
Comment[cs]=Přehrává filmy a hudbu
|
||||
Comment[da]=Afspil film og sange
|
||||
Comment[de]=Filme und Musik abspielen
|
||||
Comment[es]=Reproduzca vídeos y canciones
|
||||
Comment[fr]=Lire des vidéos et des musiques
|
||||
Comment[ja]=映画や音楽を再生する
|
||||
Comment[it]=Riproduci video e canzoni
|
||||
Comment[pl]=Odtwarzaj filmy i muzykę
|
||||
Comment[ru]=Воспроизведение фильмов и музыки
|
||||
Comment[tr]=Filmleri ve şarkıları oynatın
|
||||
Comment[zh_CN]=播放电影和歌曲
|
||||
Comment[zh_TW]=播放電影和歌曲
|
||||
Icon=mpv
|
||||
TryExec=mpv
|
||||
Exec=mpv --player-operation-mode=pseudo-gui -- %U
|
||||
Terminal=false
|
||||
Categories=AudioVideo;Audio;Video;Player;TV;
|
||||
MimeType=application/ogg;application/x-ogg;application/mxf;application/sdp;application/smil;application/x-smil;application/streamingmedia;application/x-streamingmedia;application/vnd.rn-realmedia;application/vnd.rn-realmedia-vbr;audio/aac;audio/x-aac;audio/vnd.dolby.heaac.1;audio/vnd.dolby.heaac.2;audio/aiff;audio/x-aiff;audio/m4a;audio/x-m4a;application/x-extension-m4a;audio/mp1;audio/x-mp1;audio/mp2;audio/x-mp2;audio/mp3;audio/x-mp3;audio/mpeg;audio/mpeg2;audio/mpeg3;audio/mpegurl;audio/x-mpegurl;audio/mpg;audio/x-mpg;audio/rn-mpeg;audio/musepack;audio/x-musepack;audio/ogg;audio/scpls;audio/x-scpls;audio/vnd.rn-realaudio;audio/wav;audio/x-pn-wav;audio/x-pn-windows-pcm;audio/x-realaudio;audio/x-pn-realaudio;audio/x-ms-wma;audio/x-pls;audio/x-wav;video/mpeg;video/x-mpeg2;video/x-mpeg3;video/mp4v-es;video/x-m4v;video/mp4;application/x-extension-mp4;video/divx;video/vnd.divx;video/msvideo;video/x-msvideo;video/ogg;video/quicktime;video/vnd.rn-realvideo;video/x-ms-afs;video/x-ms-asf;audio/x-ms-asf;application/vnd.ms-asf;video/x-ms-wmv;video/x-ms-wmx;video/x-ms-wvxvideo;video/x-avi;video/avi;video/x-flic;video/fli;video/x-flc;video/flv;video/x-flv;video/x-theora;video/x-theora+ogg;video/x-matroska;video/mkv;audio/x-matroska;application/x-matroska;video/webm;audio/webm;audio/vorbis;audio/x-vorbis;audio/x-vorbis+ogg;video/x-ogm;video/x-ogm+ogg;application/x-ogm;application/x-ogm-audio;application/x-ogm-video;application/x-shorten;audio/x-shorten;audio/x-ape;audio/x-wavpack;audio/x-tta;audio/AMR;audio/ac3;audio/eac3;audio/amr-wb;video/mp2t;audio/flac;audio/mp4;application/x-mpegurl;video/vnd.mpegurl;application/vnd.apple.mpegurl;audio/x-pn-au;video/3gp;video/3gpp;video/3gpp2;audio/3gpp;audio/3gpp2;video/dv;audio/dv;audio/opus;audio/vnd.dts;audio/vnd.dts.hd;audio/x-adpcm;application/x-cue;audio/m3u;audio/vnd.wave;video/vnd.avi;
|
||||
X-KDE-Protocols=appending,file,ftp,hls,http,https,mms,mpv,rtmp,rtmps,rtmpt,rtmpts,rtp,rtsp,rtsps,sftp,srt,srtp,webdav,webdavs
|
||||
StartupWMClass=mpv
|
||||
Keywords=mpv;media;player;video;audio;tv;
|
||||
Keywords[ar]=mpv;إم بي في;ام بي في;وسائط;مشغل;فيديو;مرئية;صوتي;تلفاز;
|
@ -2,7 +2,7 @@
|
||||
Name=Neovim
|
||||
GenericName=Text Editor
|
||||
Comment=Edit text files
|
||||
Exec=alacritty --class=nvim --title=nvim -e nvim -- %F
|
||||
Exec=alacritty -e nvim -- %F
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Keywords=Text;editor;
|
||||
|
10
applications/org.pulseaudio.pavucontrol.desktop
Normal file
10
applications/org.pulseaudio.pavucontrol.desktop
Normal file
@ -0,0 +1,10 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=Volume Control
|
||||
Comment=Adjust the volume level
|
||||
Exec=env GTK_THEME=Adwaita-dark pavucontrol
|
||||
Icon=multimedia-volume-control
|
||||
StartupNotify=true
|
||||
Type=Application
|
||||
Categories=AudioVideo;Audio;Mixer;GTK;Settings;X-XFCE-SettingsDialog;X-XFCE-HardwareSettings;
|
||||
Keywords=pavucontrol;PulseAudio;Microphone;Volume;Fade;Balance;Headset;Speakers;Headphones;Audio;Mixer;Output;Input;Devices;Playback;Recording;System Sounds;Sound Card;Settings;Preferences;
|
@ -1,10 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Name=Typora
|
||||
GenericName=Markdown Editor
|
||||
Exec=typora --enable-wayland-ime %U
|
||||
Icon=typora
|
||||
Type=Application
|
||||
StartupNotify=true
|
||||
Categories=Office;WordProcessor;
|
||||
MimeType=text/markdown;text/x-markdown;
|
||||
|
14
applications/vlc.desktop
Normal file
14
applications/vlc.desktop
Normal file
@ -0,0 +1,14 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=VLC media player
|
||||
GenericName=Media player
|
||||
Comment=Read, capture, broadcast your multimedia streams
|
||||
Exec=env QT_SCALE_FACTOR=2 /usr/bin/vlc --started-from-file %U
|
||||
TryExec=/usr/bin/vlc
|
||||
Icon=vlc
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=AudioVideo;Player;Recorder;
|
||||
MimeType=application/ogg;application/x-ogg;audio/ogg;audio/vorbis;audio/x-vorbis;audio/x-vorbis+ogg;video/ogg;video/x-ogm;video/x-ogm+ogg;video/x-theora+ogg;video/x-theora;audio/x-speex;audio/opus;application/x-flac;audio/flac;audio/x-flac;audio/x-ms-asf;audio/x-ms-asx;audio/x-ms-wax;audio/x-ms-wma;video/x-ms-asf;video/x-ms-asf-plugin;video/x-ms-asx;video/x-ms-wm;video/x-ms-wmv;video/x-ms-wmx;video/x-ms-wvx;video/x-msvideo;audio/x-pn-windows-acm;video/divx;video/msvideo;video/vnd.divx;video/avi;video/x-avi;application/vnd.rn-realmedia;application/vnd.rn-realmedia-vbr;audio/vnd.rn-realaudio;audio/x-pn-realaudio;audio/x-pn-realaudio-plugin;audio/x-real-audio;audio/x-realaudio;video/vnd.rn-realvideo;audio/mpeg;audio/mpg;audio/mp1;audio/mp2;audio/mp3;audio/x-mp1;audio/x-mp2;audio/x-mp3;audio/x-mpeg;audio/x-mpg;video/mp2t;video/mpeg;video/mpeg-system;video/x-mpeg;video/x-mpeg2;video/x-mpeg-system;application/mpeg4-iod;application/mpeg4-muxcodetable;application/x-extension-m4a;application/x-extension-mp4;audio/aac;audio/m4a;audio/mp4;audio/x-m4a;audio/x-aac;video/mp4;video/mp4v-es;video/x-m4v;application/x-quicktime-media-link;application/x-quicktimeplayer;video/quicktime;application/x-matroska;audio/x-matroska;video/x-matroska;video/webm;audio/webm;audio/3gpp;audio/3gpp2;audio/AMR;audio/AMR-WB;video/3gp;video/3gpp;video/3gpp2;x-scheme-handler/mms;x-scheme-handler/mmsh;x-scheme-handler/rtsp;x-scheme-handler/rtp;x-scheme-handler/rtmp;x-scheme-handler/icy;x-scheme-handler/icyx;application/x-cd-image;x-content/video-vcd;x-content/video-svcd;x-content/video-dvd;x-content/audio-cdda;x-content/audio-player;application/ram;application/xspf+xml;audio/mpegurl;audio/x-mpegurl;audio/scpls;audio/x-scpls;text/google-video-pointer;text/x-google-video-pointer;video/vnd.mpegurl;application/vnd.apple.mpegurl;application/vnd.ms-asf;application/vnd.ms-wpl;application/sdp;audio/dv;video/dv;audio/x-aiff;audio/x-pn-aiff;video/x-anim;video/x-nsv;video/fli;video/flv;video/x-flc;video/x-fli;video/x-flv;audio/wav;audio/x-pn-au;audio/x-pn-wav;audio/x-wav;audio/x-adpcm;audio/ac3;audio/eac3;audio/vnd.dts;audio/vnd.dts.hd;audio/vnd.dolby.heaac.1;audio/vnd.dolby.heaac.2;audio/vnd.dolby.mlp;audio/basic;audio/midi;audio/x-ape;audio/x-gsm;audio/x-musepack;audio/x-tta;audio/x-wavpack;audio/x-shorten;application/x-shockwave-flash;application/x-flash-video;misc/ultravox;image/vnd.rn-realpix;audio/x-it;audio/x-mod;audio/x-s3m;audio/x-xm;application/mxf;
|
||||
X-KDE-Protocols=ftp,http,https,mms,rtmp,rtsp,sftp,smb
|
||||
Keywords=Player;Capture;DVD;Audio;Video;Server;Broadcast;
|
@ -1,30 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -u
|
||||
|
||||
# internal monitor name - change if yours differs
|
||||
INT="eDP-1"
|
||||
|
||||
output=$(hyprctl monitors 2>/dev/null) || {
|
||||
echo "Error: hyprctl not found or command failed" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
mapfile -t monitors < <(
|
||||
grep -oP '(?<=^Monitor ).*?(?= \(ID )' <<<"$output"
|
||||
)
|
||||
|
||||
len=${#monitors[@]}
|
||||
|
||||
if (( len == 2 )); then
|
||||
hyprctl keyword monitor $INT, disable 2>/dev/null
|
||||
hyprctl keyword workspace r[0-9] m[${monitors[1]}]
|
||||
elif (( len == 3 )); then
|
||||
hyprctl keyword monitor $INT, disable 2>/dev/null
|
||||
hyprctl keyword workspace r[1-5] m[${monitors[1]}]
|
||||
hyprctl keyword workspace r[6-9] m[${monitors[2]}]
|
||||
hyprctl keyword workspace r[0] m[${monitors[2]}]
|
||||
else
|
||||
hyprctl keyword monitor $INT, preferred,auto,1.5 2>/dev/null
|
||||
hyprctl reload 2>/dev/null
|
||||
fi
|
@ -1,30 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Designed to be run by systemd timer every 30 seconds and alerts if battery is low
|
||||
|
||||
BATTERY_THRESHOLD=10
|
||||
NOTIFICATION_FLAG="/run/user/$UID/omarchy_battery_notified"
|
||||
|
||||
get_battery_percentage() {
|
||||
upower -i $(upower -e | grep 'BAT') | grep -E "percentage" | grep -o '[0-9]\+%' | sed 's/%//'
|
||||
}
|
||||
|
||||
get_battery_state() {
|
||||
upower -i $(upower -e | grep 'BAT') | grep -E "state" | awk '{print $2}'
|
||||
}
|
||||
|
||||
send_notification() {
|
||||
notify-send -u critical " Time to recharge!" "Battery is down to ${1}%" -i battery-caution -t 30000
|
||||
}
|
||||
|
||||
BATTERY_LEVEL=$(get_battery_percentage)
|
||||
BATTERY_STATE=$(get_battery_state)
|
||||
|
||||
if [[ "$BATTERY_STATE" == "discharging" && "$BATTERY_LEVEL" -le "$BATTERY_THRESHOLD" ]]; then
|
||||
if [[ ! -f "$NOTIFICATION_FLAG" ]]; then
|
||||
send_notification "$BATTERY_LEVEL"
|
||||
touch "$NOTIFICATION_FLAG"
|
||||
fi
|
||||
else
|
||||
rm -f "$NOTIFICATION_FLAG"
|
||||
fi
|
@ -1,19 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Find all the audio sinks but exit if there are none
|
||||
sinks=($(wpctl status | sed -n '/Sinks:/,/Sources:/p' | grep -E '^\s*│\s+\*?\s*[0-9]+\.' | sed -E 's/^[^0-9]*([0-9]+)\..*/\1/'))
|
||||
[ ${#sinks[@]} -eq 0 ] && exit 1
|
||||
|
||||
# Find current audio sink
|
||||
current=$(wpctl status | sed -n '/Sinks:/,/Sources:/p' | grep '^\s*│\s*\*' | sed -E 's/^[^0-9]*([0-9]+)\..*/\1/')
|
||||
|
||||
# Find the next sink (looping around in the list)
|
||||
for i in "${!sinks[@]}"; do
|
||||
[ "${sinks[$i]}" = "$current" ] && next=${sinks[$(((i + 1) % ${#sinks[@]}))]}
|
||||
done
|
||||
next=${next:-${sinks[0]}}
|
||||
|
||||
# Set the next sink and ensure it's not muted
|
||||
wpctl set-default "$next"
|
||||
wpctl set-mute "$next" 0
|
||||
|
@ -1,9 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Close all open windows
|
||||
hyprctl clients -j | \
|
||||
jq -r ".[].address" | \
|
||||
xargs -I{} hyprctl dispatch closewindow address:{}
|
||||
|
||||
# Move to first workspace
|
||||
hyprctl dispatch workspace 1
|
@ -1,12 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
FIRST_RUN_MODE=~/.local/state/omarchy/first-run.mode
|
||||
|
||||
if [[ -f "$FIRST_RUN_MODE" ]]; then
|
||||
rm -f "$FIRST_RUN_MODE"
|
||||
$OMARCHY_PATH/install/first-run/battery-monitor.sh
|
||||
$OMARCHY_PATH/install/first-run/firewall.sh
|
||||
sudo rm -f /etc/sudoers.d/first-run
|
||||
fi
|
@ -1,32 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
[[ -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="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
|
||||
notify-send "Screen recording starting..." -t 1000
|
||||
sleep 1
|
||||
|
||||
if lspci | grep -Eqi 'nvidia|intel.*graphics'; then
|
||||
wf-recorder -f "$filename" -c libx264 -p crf=23 -p preset=medium -p movflags=+faststart "$@"
|
||||
else
|
||||
wl-screenrec -f "$filename" --ffmpeg-encoder-options="-c:v libx264 -crf 23 -preset medium -movflags +faststart" "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
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 $OUTPUT_DIR" -t 2000
|
||||
elif [[ "$1" == "output" ]]; then
|
||||
screenrecording
|
||||
else
|
||||
region=$(slurp) || exit 1
|
||||
screenrecording -g "$region"
|
||||
fi
|
@ -1,7 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
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 stopped" -t 2000
|
||||
fi
|
@ -1,16 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
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 \
|
||||
"$effect" &
|
||||
|
||||
while pgrep -x tte >/dev/null; do
|
||||
if read -n 1 -t 0.01; then
|
||||
pkill -x tte 2>/dev/null
|
||||
pkill -f "alacritty --class Screensaver" 2>/dev/null
|
||||
exit 0
|
||||
fi
|
||||
done
|
||||
done
|
@ -1,17 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
[[ -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 "$OUTPUT_DIR/screenshot-$(date +'%Y-%m-%d_%H-%M-%S').png" \
|
||||
--early-exit \
|
||||
--actions-on-enter save-to-clipboard \
|
||||
--save-after-copy \
|
||||
--copy-command 'wl-copy'
|
@ -1,11 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Go from current active terminal to its child shell process and run cwd there
|
||||
terminal_pid=$(hyprctl activewindow | awk '/pid:/ {print $2}')
|
||||
shell_pid=$(pgrep -P "$terminal_pid" | head -n1)
|
||||
|
||||
if [[ -n $shell_pid ]]; then
|
||||
readlink -f "/proc/$shell_pid/cwd" 2>/dev/null
|
||||
else
|
||||
echo "$HOME"
|
||||
fi
|
@ -1,7 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
sudo systemctl restart systemd-timesyncd
|
||||
sudo tzupdate
|
||||
new_timezone=$(timedatectl show -p Timezone --value)
|
||||
omarchy-restart-waybar
|
||||
notify-send "Time synced and timezone set to $new_timezone"
|
7
bin/omarchy-config-link
Executable file
7
bin/omarchy-config-link
Executable file
@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Link all the key config files to omarchy's internal versions for quicker testing
|
||||
ln -nsf ~/.local/share/omarchy/config/hypr/hyprland.conf ~/.config/hypr/
|
||||
ln -nsf ~/.local/share/omarchy/config/hypr/hypridle.conf ~/.config/hypr/
|
||||
ln -nsf ~/.local/share/omarchy/config/waybar/config ~/.config/waybar/
|
||||
ln -nsf ~/.local/share/omarchy/config/wofi/config ~/.config/wofi/
|
@ -1,6 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd ~/.local/share/omarchy
|
||||
migration_file="$HOME/.local/share/omarchy/migrations/$(git log -1 --format=%cd --date=unix).sh"
|
||||
touch $migration_file
|
||||
nvim $migration_file
|
@ -1,3 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
grep -oP 'family\s*=\s*"\K[^"]+' ~/.config/alacritty/alacritty.toml | head -n1
|
@ -1,3 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
fc-list :spacing=100 -f "%{family[0]}\n" | grep -v -i -E 'emoji|signwriting' | sort -u
|
@ -1,24 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
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
|
||||
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 \
|
||||
-u '//match[@target="pattern"][test/string="monospace"]/edit[@name="family"]/string' \
|
||||
-v "$font_name" \
|
||||
~/.config/fontconfig/fonts.conf
|
||||
|
||||
omarchy-restart-waybar
|
||||
omarchy-restart-swayosd
|
||||
omarchy-restart-walker
|
||||
else
|
||||
echo "Font '$font_name' not found."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "Usage: omarchy-font-set <font-name>"
|
||||
fi
|
@ -1,123 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ -z "$1" ]]; then
|
||||
echo "Usage: omarchy-install-dev-env <ruby|node|bun|go|laravel|symfony|php|python|elixir|phoenix|rust|java|ocaml|dotnet>" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
install_php() {
|
||||
sudo pacman -Sy php composer php-sqlite --noconfirm
|
||||
|
||||
# Install Path for Composer
|
||||
if [[ ":$PATH:" != *":$HOME/.config/composer/vendor/bin:"* ]]; then
|
||||
echo 'export PATH="$HOME/.config/composer/vendor/bin:$PATH"' >>"$HOME/.bashrc"
|
||||
source "$HOME/.bashrc"
|
||||
echo "Added Composer global bin directory to PATH."
|
||||
else
|
||||
echo "Composer global bin directory already in PATH."
|
||||
fi
|
||||
|
||||
# Enable some extensions
|
||||
local php_ini_path="/etc/php/php.ini"
|
||||
local extensions_to_enable=(
|
||||
"bcmath"
|
||||
"intl"
|
||||
"iconv"
|
||||
"openssl"
|
||||
"pdo_sqlite"
|
||||
"pdo_mysql"
|
||||
)
|
||||
|
||||
for ext in "${extensions_to_enable[@]}"; do
|
||||
sudo sed -i "s/^;extension=${ext}/extension=${ext}/" "$php_ini_path"
|
||||
done
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
ruby)
|
||||
echo -e "Installing Ruby on Rails...\n"
|
||||
mise use --global ruby@latest
|
||||
mise settings add idiomatic_version_file_enable_tools ruby
|
||||
mise x ruby -- gem install rails --no-document
|
||||
echo -e "\nYou can now run: rails new myproject"
|
||||
;;
|
||||
node)
|
||||
echo -e "Installing Node.js...\n"
|
||||
mise use --global node@lts
|
||||
;;
|
||||
bun)
|
||||
echo -e "Installing Bun...\n"
|
||||
mise use -g bun@latest
|
||||
;;
|
||||
deno)
|
||||
echo -e "Installing Deno...\n"
|
||||
mise use -g deno@latest
|
||||
;;
|
||||
go)
|
||||
echo -e "Installing Go...\n"
|
||||
mise use --global go@latest
|
||||
;;
|
||||
php)
|
||||
echo -e "Installing PHP...\n"
|
||||
install_php
|
||||
;;
|
||||
laravel)
|
||||
echo -e "Installing PHP and Laravel...\n"
|
||||
install_php
|
||||
composer global require laravel/installer
|
||||
echo -e "\nYou can now run: laravel new myproject"
|
||||
;;
|
||||
symfony)
|
||||
echo -e "Installing PHP and Symfony...\n"
|
||||
install_php
|
||||
yay -S symfony-cli --noconfirm
|
||||
echo -e "\nYou can now run: symfony new --webapp myproject"
|
||||
;;
|
||||
python)
|
||||
echo -e "Installing Python...\n"
|
||||
mise use --global python@latest
|
||||
echo -e "\nInstalling uv...\n"
|
||||
curl -fsSL https://astral.sh/uv/install.sh | sh
|
||||
;;
|
||||
elixir)
|
||||
echo -e "Installing Elixir...\n"
|
||||
mise use --global erlang@latest
|
||||
mise use --global elixir@latest
|
||||
mise x elixir -- mix local.hex --force
|
||||
;;
|
||||
phoenix)
|
||||
echo -e "Installing Phoenix Framework...\n"
|
||||
# Ensure Erlang/Elixir first
|
||||
mise use --global erlang@latest
|
||||
mise use --global elixir@latest
|
||||
# Hex & Rebar
|
||||
mise x elixir -- mix local.hex --force
|
||||
mise x elixir -- mix local.rebar --force
|
||||
# Phoenix project (phx_new)
|
||||
mise x elixir -- mix archive.install hex phx_new --force
|
||||
echo -e "\nYou can now run: mix phx.new my_app"
|
||||
;;
|
||||
rust)
|
||||
echo -e "Installing Rust...\n"
|
||||
bash -c "$(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs)" -- -y
|
||||
;;
|
||||
java)
|
||||
echo -e "Installing Java...\n"
|
||||
mise use --global java@latest
|
||||
;;
|
||||
zig)
|
||||
echo -e "Installing Zig...\n"
|
||||
mise use --global zig@latest
|
||||
;;
|
||||
ocaml)
|
||||
echo -e "Installing OCaml...\n"
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh)"
|
||||
opam init --yes
|
||||
eval "$(opam env)"
|
||||
opam install ocaml-lsp-server odoc ocamlformat utop --yes
|
||||
;;
|
||||
dotnet)
|
||||
echo -e "Installing .NET...\n"
|
||||
mise use --global dotnet@latest
|
||||
;;
|
||||
esac
|
@ -1,16 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
options=("MySQL" "PostgreSQL" "Redis" "MongoDB" "MariaDB")
|
||||
choices=$(printf "%s\n" "${options[@]}" | gum choose --no-limit --header "Select databases (space to select, return to install, esc to cancel)") || main_menu
|
||||
|
||||
if [[ -n "$choices" ]]; then
|
||||
for db in $choices; do
|
||||
case $db in
|
||||
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 ;;
|
||||
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 ;;
|
||||
MongoDB) sudo docker run -d --restart unless-stopped -p "127.0.0.1:27017:27017" --name mongodb -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin123 mongo:noble ;;
|
||||
esac
|
||||
done
|
||||
fi
|
@ -1,10 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# FIXME: Should not use AUR dependencies when we can avoid it
|
||||
echo "Installing all dependencies [from AUR]..."
|
||||
yay -S --noconfirm --needed \
|
||||
dropbox dropbox-cli libappindicator-gtk3 python-gpgme nautilus-dropbox
|
||||
|
||||
echo "Starting Dropbox..."
|
||||
uwsm app -- dropbox-cli start &>/dev/null &
|
||||
echo "See Dropbox icon behind hover tray in top right and right-click for setup."
|
@ -1,9 +0,0 @@
|
||||
#!/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"
|
||||
sudo pacman -S steam
|
||||
setsid gtk-launch steam >/dev/null 2>&1 &
|
@ -1,13 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
curl -fsSL https://tailscale.com/install.sh | sh
|
||||
curl -fsSL https://neuralink.com/tsui/install.sh | bash
|
||||
|
||||
echo -e "\nStarting Tailscale..."
|
||||
sudo tailscale up --accept-routes
|
||||
|
||||
echo -e "\nAdd tsui to sudoers..."
|
||||
echo "$USER ALL=(ALL) NOPASSWD: $(which tsui)" | sudo tee /etc/sudoers.d/tsui
|
||||
|
||||
omarchy-tui-install "Tailscale" "sudo tsui" float https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/tailscale-light.png
|
||||
omarchy-webapp-install "Tailscale Admin Console" "https://login.tailscale.com/admin/machines" https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/tailscale-light.png
|
@ -1,3 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
exec setsid uwsm app -- $(sed -n 's/^Exec=\([^ ]*\).*/\1/p' {~/.local,/usr}/share/applications/$(xdg-settings get default-web-browser) 2>/dev/null | head -1) ${args[@]} $@
|
@ -1,26 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Exit early if we don't have the tte show
|
||||
if ! command -v tte &>/dev/null; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Exit early if screensave is already running
|
||||
pgrep -f "alacritty --class Screensaver" && exit 0
|
||||
|
||||
# Allow screensaver to be turned off but also force started
|
||||
if [[ -f ~/.local/state/omarchy/toggles/screensaver-off ]] && [[ $1 != "force" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
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 \
|
||||
--config-file ~/.local/share/omarchy/default/alacritty/screensaver.toml \
|
||||
-e omarchy-cmd-screensaver
|
||||
done
|
||||
|
||||
hyprctl dispatch focusmonitor $focused
|
@ -1,10 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
browser=$(xdg-settings get default-web-browser)
|
||||
|
||||
case $browser in
|
||||
google-chrome* | brave-browser* | microsoft-edge* | opera* | vivaldi*) ;;
|
||||
*) browser="chromium.desktop" ;;
|
||||
esac
|
||||
|
||||
exec setsid uwsm app -- $(sed -n 's/^Exec=\([^ ]*\).*/\1/p' {~/.local,/usr}/share/applications/$browser 2>/dev/null | head -1) --app="$1" "${@:2}"
|
@ -1,12 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Lock the screen
|
||||
pidof hyprlock || hyprlock &
|
||||
|
||||
# Ensure 1password is locked
|
||||
if pgrep -x "1password" >/dev/null; then
|
||||
1password --lock &
|
||||
fi
|
||||
|
||||
# Avoid running screensaver when locked
|
||||
pkill -f "alacritty --class Screensaver"
|
392
bin/omarchy-menu
392
bin/omarchy-menu
@ -1,392 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
export PATH="$HOME/.local/share/omarchy/bin:$PATH"
|
||||
|
||||
menu() {
|
||||
local prompt="$1"
|
||||
local options="$2"
|
||||
local extra="$3"
|
||||
local preselect="$4"
|
||||
|
||||
read -r -a args <<<"$extra"
|
||||
|
||||
if [[ -n "$preselect" ]]; then
|
||||
local index
|
||||
index=$(echo -e "$options" | grep -nxF "$preselect" | cut -d: -f1)
|
||||
if [[ -n "$index" ]]; then
|
||||
args+=("-a" "$index")
|
||||
fi
|
||||
fi
|
||||
|
||||
echo -e "$options" | walker --dmenu --theme dmenu_250 -p "$prompt…" "${args[@]}"
|
||||
}
|
||||
|
||||
terminal() {
|
||||
alacritty --class Omarchy -e "$@"
|
||||
}
|
||||
|
||||
present_terminal() {
|
||||
alacritty --class Omarchy -e bash -c "omarchy-show-logo; eval \"$1\"; omarchy-show-done;"
|
||||
}
|
||||
|
||||
edit_in_nvim() {
|
||||
notify-send "Editing config file" "$1"
|
||||
alacritty -e nvim "$1"
|
||||
}
|
||||
|
||||
install() {
|
||||
present_terminal "echo 'Installing $1...'; sudo pacman -Sy --noconfirm $2"
|
||||
}
|
||||
|
||||
install_and_launch() {
|
||||
present_terminal "echo 'Installing $1...'; sudo pacman -Sy --noconfirm $2 && setsid gtk-launch $3"
|
||||
}
|
||||
|
||||
install_font() {
|
||||
present_terminal "echo 'Installing $1...'; sudo pacman -Sy --noconfirm --needed $2 && sleep 2 && omarchy-font-set '$3'"
|
||||
}
|
||||
|
||||
aur_install() {
|
||||
present_terminal "echo 'Installing $1 from AUR...'; yay -Sy --noconfirm $2"
|
||||
}
|
||||
|
||||
aur_install_and_launch() {
|
||||
present_terminal "echo 'Installing $1 from AUR...'; yay -Sy --noconfirm $2 && setsid gtk-launch $3"
|
||||
}
|
||||
|
||||
show_learn_menu() {
|
||||
case $(menu "Learn" " Keybindings\n Omarchy\n Hyprland\n Arch\n Neovim\n Bash") in
|
||||
*Keybindings*) omarchy-menu-keybindings ;;
|
||||
*Omarchy*) omarchy-launch-webapp "https://learn.omacom.io/2/the-omarchy-manual" ;;
|
||||
*Hyprland*) omarchy-launch-webapp "https://wiki.hypr.land/" ;;
|
||||
*Arch*) omarchy-launch-webapp "https://wiki.archlinux.org/title/Main_page" ;;
|
||||
*Bash*) omarchy-launch-webapp "https://devhints.io/bash" ;;
|
||||
*Neovim*) omarchy-launch-webapp "https://www.lazyvim.org/keymaps" ;;
|
||||
*) show_main_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_main_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_theme_menu() {
|
||||
theme=$(menu "Theme" "$(omarchy-theme-list)" "" "$(omarchy-theme-current)")
|
||||
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
|
||||
show_main_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
|
||||
show_main_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 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_screenshot_menu() {
|
||||
case $(menu "Screenshot" " Region\n Window\n Display") in
|
||||
*Region*) omarchy-cmd-screenshot ;;
|
||||
*Window*) omarchy-cmd-screenshot window ;;
|
||||
*Display*) omarchy-cmd-screenshot output ;;
|
||||
*) show_capture_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_screenrecord_menu() {
|
||||
case $(menu "Screenrecord" " Region\n Display") in
|
||||
*Region*) omarchy-cmd-screenrecord ;;
|
||||
*Display*) omarchy-cmd-screenrecord output ;;
|
||||
*) show_capture_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_toggle_menu() {
|
||||
case $(menu "Toggle" " Screensaver\n Nightlight\n Idle Lock\n Top Bar") in
|
||||
*Screensaver*) omarchy-toggle-screensaver ;;
|
||||
*Nightlight*) omarchy-toggle-nightlight ;;
|
||||
*Idle*) omarchy-toggle-idle ;;
|
||||
*Bar*) omarchy-toggle-waybar ;;
|
||||
*) show_main_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_setup_menu() {
|
||||
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"
|
||||
|
||||
case $(menu "Setup" "$options") in
|
||||
*Audio*) alacritty --class=Wiremix -e wiremix ;;
|
||||
*Wifi*)
|
||||
rfkill unblock wifi
|
||||
alacritty --class=Impala -e impala
|
||||
;;
|
||||
*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 ;;
|
||||
*DNS*) present_terminal omarchy-setup-dns ;;
|
||||
*Config*) show_setup_config_menu ;;
|
||||
*Fingerprint*) present_terminal omarchy-setup-fingerprint ;;
|
||||
*Fido2*) present_terminal omarchy-setup-fido2 ;;
|
||||
*) show_main_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_setup_power_menu() {
|
||||
profile=$(menu "Power Profile" "$(omarchy-powerprofiles-list)" "" "$(powerprofilesctl get)")
|
||||
|
||||
if [[ "$profile" == "CNCLD" || -z "$profile" ]]; then
|
||||
show_main_menu
|
||||
else
|
||||
powerprofilesctl set "$profile"
|
||||
fi
|
||||
}
|
||||
|
||||
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 ;;
|
||||
*) show_main_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
|
||||
*Package*) terminal omarchy-pkg-install ;;
|
||||
*AUR*) terminal omarchy-pkg-aur-install ;;
|
||||
*Web*) present_terminal omarchy-webapp-install ;;
|
||||
*TUI*) present_terminal omarchy-tui-install ;;
|
||||
*Service*) show_install_service_menu ;;
|
||||
*Style*) show_install_style_menu ;;
|
||||
*Development*) show_install_development_menu ;;
|
||||
*Editor*) show_install_editor_menu ;;
|
||||
*AI*) show_install_ai_menu ;;
|
||||
*Gaming*) show_install_gaming_menu ;;
|
||||
*) show_main_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_install_service_menu() {
|
||||
case $(menu "Install" " Dropbox\n Tailscale") in
|
||||
*Dropbox*) present_terminal omarchy-install-dropbox ;;
|
||||
*Tailscale*) present_terminal omarchy-install-tailscale ;;
|
||||
*) show_install_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_install_editor_menu() {
|
||||
case $(menu "Install" " VSCode\n Cursor [AUR]\n Zed\n Sublime Text\n Helix") in
|
||||
*VSCode*) install_and_launch "VSCode" "visual-studio-code-bin" "code" ;;
|
||||
*Cursor*) aur_install_and_launch "Cursor" "cursor-bin" "cursor" ;;
|
||||
*Zed*) install_and_launch "Zed" "zed" "dev.zed.Zed" ;;
|
||||
*Sublime*) install_and_launch "Sublime Text" "sublime-text-4" "sublime_text" ;;
|
||||
*Helix*) install "Helix" "helix" ;;
|
||||
*) show_install_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_install_ai_menu() {
|
||||
case $(menu "Install" " Claude Code [AUR]\n Gemini\n LM Studio [AUR]\n Ollama\n Crush [AUR]\n opencode [AUR]") in
|
||||
*Claude*) aur_install "Claude Code" "claude-code" ;;
|
||||
*Gemini*) install "Gemini" "gemini-cli" ;;
|
||||
*Studio*) aur_install "LM Studio" "lmstudio" ;;
|
||||
*Ollama*) install "Ollama" "ollama" ;;
|
||||
*Crush*) aur_install "Crush" "crush-bin" ;;
|
||||
*opencode*) aur_install "opencode" "opencode-bin" ;;
|
||||
*) show_install_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_install_gaming_menu() {
|
||||
case $(menu "Install" " Steam\n RetroArch [AUR]\n Minecraft") in
|
||||
*Steam*) present_terminal omarchy-install-steam ;;
|
||||
*RetroArch*) aur_install_and_launch "RetroArch" "retroarch retroarch-assets libretro libretro-fbneo" "com.libretro.RetroArch.desktop" ;;
|
||||
*Minecraft*) install_and_launch "Minecraft" "minecraft-launcher" "minecraft-launcher" ;;
|
||||
*) show_install_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_install_style_menu() {
|
||||
case $(menu "Install" " Theme\n Background\n Font") in
|
||||
*Theme*) present_terminal omarchy-theme-install ;;
|
||||
*Background*) nautilus ~/.config/omarchy/current/theme/backgrounds ;;
|
||||
*Font*) show_install_font_menu ;;
|
||||
*) show_install_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_install_font_menu() {
|
||||
case $(menu "Install" " Meslo LG Mono\n Fira Code\n Victor Code\n Bistream Vera Mono" "-w 350") in
|
||||
*Meslo*) install_font "Meslo LG Mono" "ttf-meslo-nerd" "MesloLGL Nerd Font" ;;
|
||||
*Fira*) install_font "Fira Code" "ttf-firacode-nerd" "FiraCode Nerd Font" ;;
|
||||
*Victor*) install_font "Victor Code" "ttf-victor-mono-nerd" "VictorMono Nerd Font" ;;
|
||||
*Bistream*) install_font "Bistream Vera Code" "ttf-bitstream-vera-mono-nerd" "BitstromWera Nerd Font" ;;
|
||||
*) show_install_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_install_development_menu() {
|
||||
case $(menu "Install" " Ruby on Rails\n Docker DB\n JavaScript\n Go\n PHP\n Python\n Elixir\n Zig\n Rust\n Java\n .NET\n OCaml") in
|
||||
*Rails*) present_terminal "omarchy-install-dev-env ruby" ;;
|
||||
*Docker*) present_terminal omarchy-install-docker-dbs ;;
|
||||
*JavaScript*) show_install_javascript_menu ;;
|
||||
*Go*) present_terminal "omarchy-install-dev-env go" ;;
|
||||
*PHP*) show_install_php_menu ;;
|
||||
*Python*) present_terminal "omarchy-install-dev-env python" ;;
|
||||
*Elixir*) show_install_elixir_menu ;;
|
||||
*Zig*) present_terminal "omarchy-install-dev-env zig" ;;
|
||||
*Rust*) present_terminal "omarchy-install-dev-env rust" ;;
|
||||
*Java*) present_terminal "omarchy-install-dev-env java" ;;
|
||||
*NET*) present_terminal "omarchy-install-dev-env dotnet" ;;
|
||||
*OCaml*) present_terminal "omarchy-install-dev-env ocaml" ;;
|
||||
*) show_install_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_install_javascript_menu() {
|
||||
case $(menu "Install" " Node.js\n Bun\n Deno") in
|
||||
*Node*) present_terminal "omarchy-install-dev-env node" ;;
|
||||
*Bun*) present_terminal "omarchy-install-dev-env bun" ;;
|
||||
*Deno*) present_terminal "omarchy-install-dev-env deno" ;;
|
||||
*) show_install_development_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_install_php_menu() {
|
||||
case $(menu "Install" " PHP\n Laravel\n Symfony") in
|
||||
*PHP*) present_terminal "omarchy-install-dev-env php" ;;
|
||||
*Laravel*) present_terminal "omarchy-install-dev-env laravel" ;;
|
||||
*Symfony*) present_terminal "omarchy-install-dev-env symfony" ;;
|
||||
*) show_install_development_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_install_elixir_menu() {
|
||||
case $(menu "Install" " Elixir\n Phoenix") in
|
||||
*Elixir*) present_terminal "omarchy-install-dev-env elixir" ;;
|
||||
*Phoenix*) present_terminal "omarchy-install-dev-env phoenix" ;;
|
||||
*) show_install_development_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_remove_menu() {
|
||||
case $(menu "Remove" " Package\n Web App\n TUI\n Theme\n Fingerprint\n Fido2") in
|
||||
*Package*) terminal omarchy-pkg-remove ;;
|
||||
*Web*) present_terminal omarchy-webapp-remove ;;
|
||||
*TUI*) present_terminal omarchy-tui-remove ;;
|
||||
*Theme*) present_terminal omarchy-theme-remove ;;
|
||||
*Fingerprint*) present_terminal "omarchy-setup-fingerprint --remove" ;;
|
||||
*Fido2*) present_terminal "omarchy-setup-fido2 --remove" ;;
|
||||
*) show_main_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_update_menu() {
|
||||
case $(menu "Update" " Omarchy\n Config\n Themes\n Process\n Timezone") in
|
||||
*Omarchy*) present_terminal omarchy-update ;;
|
||||
*Config*) show_update_config_menu ;;
|
||||
*Themes*) present_terminal omarchy-theme-update ;;
|
||||
*Process*) show_update_process_menu ;;
|
||||
*Timezone*) omarchy-cmd-tzupdate ;;
|
||||
*) show_main_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_update_process_menu() {
|
||||
case $(menu "Restart" " Hypridle\n Hyprsunset\n Swayosd\n Walker\n Waybar") in
|
||||
*Hypridle*) omarchy-restart-hypridle ;;
|
||||
*Hyprsunset*) omarchy-restart-hyprsunset ;;
|
||||
*Swayosd*) omarchy-restart-swayosd ;;
|
||||
*Walker*) omarchy-restart-walker ;;
|
||||
*Waybar*) omarchy-restart-waybar ;;
|
||||
*) show_main_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_update_config_menu() {
|
||||
case $(menu "Use default config" " Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n Plymouth\n Swayosd\n Walker\n Waybar") in
|
||||
*Hyprland*) present_terminal omarchy-refresh-hyprland ;;
|
||||
*Hypridle*) present_terminal omarchy-refresh-hypridle ;;
|
||||
*Hyprlock*) present_terminal omarchy-refresh-hyprlock ;;
|
||||
*Hyprsunset*) present_terminal omarchy-refresh-hyprsunset ;;
|
||||
*Plymouth*) present_terminal omarchy-refresh-plymouth ;;
|
||||
*Swayosd*) present_terminal omarchy-refresh-swayosd ;;
|
||||
*Walker*) present_terminal omarchy-refresh-walker ;;
|
||||
*Waybar*) present_terminal omarchy-refresh-waybar ;;
|
||||
*) show_main_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_system_menu() {
|
||||
case $(menu "System" " Lock\n Screensaver\n Suspend\n Relaunch\n Restart\n Shutdown") in
|
||||
*Lock*) omarchy-lock-screen ;;
|
||||
*Screensaver*) omarchy-launch-screensaver force ;;
|
||||
*Suspend*) systemctl suspend ;;
|
||||
*Relaunch*) uwsm stop ;;
|
||||
*Restart*) systemctl reboot ;;
|
||||
*Shutdown*) systemctl poweroff ;;
|
||||
*) 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() {
|
||||
case "${1,,}" in
|
||||
*apps*) walker -p "Launch…" ;;
|
||||
*learn*) show_learn_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 ;;
|
||||
*install*) show_install_menu ;;
|
||||
*remove*) show_remove_menu ;;
|
||||
*update*) show_update_menu ;;
|
||||
*system*) show_system_menu ;;
|
||||
*about*) terminal bash -c 'fastfetch; read -n 1 -s' ;;
|
||||
esac
|
||||
}
|
||||
|
||||
if [[ -n "$1" ]]; then
|
||||
go_to_menu "$1"
|
||||
else
|
||||
show_main_menu
|
||||
fi
|
@ -1,89 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# A script to display Hyprland keybindings defined in your configuration
|
||||
# using walker for an interactive search menu.
|
||||
|
||||
# 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,/' \
|
||||
-e 's/^73,/SUPER SHIFT ALT,/' \
|
||||
-e 's/^76,/SUPER CTRL ALT,/' \
|
||||
-e 's/^77,/SUPER SHIFT CTRL ALT,/'
|
||||
}
|
||||
|
||||
# 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, '
|
||||
{
|
||||
# Combine the modifier and key (first two fields)
|
||||
key_combo = $1 " + " $2;
|
||||
|
||||
# Clean up: strip leading "+" if present, trim spaces
|
||||
gsub(/^[ \t]*\+?[ \t]*/, "", key_combo);
|
||||
gsub(/[ \t]+$/, "", key_combo);
|
||||
|
||||
# Use description, if set
|
||||
action = $3;
|
||||
|
||||
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
|
||||
|
||||
# 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'
|
@ -1,18 +0,0 @@
|
||||
#!/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
|
@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
curl -sf --connect-timeout 30 --retry 3 --retry-delay 3 -A "omarchy-update" \
|
||||
"https://aur.archlinux.org/rpc/?v=5&type=info&arg=base" >/dev/null
|
@ -1,24 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
fzf_args=(
|
||||
--multi
|
||||
--preview 'yay -Sii {1}'
|
||||
--preview-label='alt-p: toggle description, 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'
|
||||
--color 'pointer:green,marker:green'
|
||||
)
|
||||
|
||||
pkg_names=$(yay -Slqa | fzf "${fzf_args[@]}")
|
||||
|
||||
if [[ -n "$pkg_names" ]]; then
|
||||
# Convert newline-separated selections to space-separated for yay
|
||||
echo "$pkg_names" | tr '\n' ' ' | xargs yay -Sy --noconfirm
|
||||
sudo updatedb
|
||||
omarchy-show-done
|
||||
fi
|
@ -1,25 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
fzf_args=(
|
||||
--multi
|
||||
--preview 'pacman -Sii {1}'
|
||||
--preview-label='alt-p: toggle description, 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'
|
||||
--color 'pointer:green,marker:green'
|
||||
)
|
||||
|
||||
sudo pacman -Sy
|
||||
pkg_names=$(pacman -Slq | fzf "${fzf_args[@]}")
|
||||
|
||||
if [[ -n "$pkg_names" ]]; then
|
||||
# Convert newline-separated selections to space-separated for yay
|
||||
echo "$pkg_names" | tr '\n' ' ' | xargs sudo pacman -Sy --noconfirm
|
||||
sudo updatedb
|
||||
omarchy-show-done
|
||||
fi
|
@ -1,22 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
fzf_args=(
|
||||
--multi
|
||||
--preview 'yay -Qi {1}'
|
||||
--preview-label='alt-p: toggle description, 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'
|
||||
--color 'pointer:red,marker:red'
|
||||
)
|
||||
|
||||
pkg_names=$(yay -Qqe | fzf "${fzf_args[@]}")
|
||||
|
||||
if [[ -n "$pkg_names" ]]; then
|
||||
# Convert newline-separated selections to space-separated for yay
|
||||
echo "$pkg_names" | tr '\n' ' ' | xargs sudo pacman -Rns --noconfirm
|
||||
sudo updatedb
|
||||
omarchy-show-done
|
||||
fi
|
@ -1,5 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
powerprofilesctl list |
|
||||
awk '/^\s*[* ]\s*[a-zA-Z0-9\-]+:$/ { gsub(/^[*[:space:]]+|:$/,""); print }' |
|
||||
tac
|
@ -1,40 +0,0 @@
|
||||
#!/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)"
|
||||
|
||||
if [[ -f "$user_config_file" ]]; then
|
||||
# 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" || true
|
||||
fi
|
||||
else
|
||||
# Config file did not exist already
|
||||
cp -f "$default_config_file" "$user_config_file" 2>/dev/null
|
||||
fi
|
@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
omarchy-refresh-config hypr/hypridle.conf
|
||||
omarchy-restart-hypridle
|
@ -1,7 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
omarchy-refresh-config hypr/autostart.conf
|
||||
omarchy-refresh-config hypr/bindings.conf
|
||||
omarchy-refresh-config hypr/envs.conf
|
||||
omarchy-refresh-config hypr/input.conf
|
||||
omarchy-refresh-config hypr/hyprland.conf
|
@ -1,3 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
omarchy-refresh-config hypr/hyprlock.conf
|
@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
omarchy-refresh-config hypr/hyprsunset.conf
|
||||
omarchy-restart-hyprsunset
|
@ -1,6 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ "$1" == "-y" ]]; then
|
||||
sudo cp ~/.local/share/omarchy/default/plymouth/* /usr/share/plymouth/themes/omarchy/
|
||||
sudo plymouth-set-default-theme -R omarchy
|
||||
fi
|
@ -1,5 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
omarchy-refresh-config swayosd/config.toml
|
||||
omarchy-refresh-config swayosd/style.css
|
||||
omarchy-restart-swayosd
|
@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
omarchy-refresh-config walker/config.toml
|
||||
omarchy-restart-walker
|
@ -1,5 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
omarchy-refresh-config waybar/config.jsonc
|
||||
omarchy-refresh-config waybar/style.css
|
||||
omarchy-restart-waybar
|
@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo "Resetting sudo lockout for user: $USER"
|
||||
su -c "faillock --reset --user $USER"
|
@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
pkill -x $1
|
||||
setsid uwsm app -- $1 >/dev/null 2>&1 &
|
@ -1,3 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
omarchy-restart-app hypridle
|
@ -1,3 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
omarchy-restart-app hyprsunset
|
@ -1,3 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
omarchy-restart-app swayosd-server
|
@ -1,7 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
pkill walker
|
||||
# FIXME: Reenable the walker service once the memory leak has been fixed
|
||||
# See https://github.com/basecamp/omarchy/issues/698
|
||||
# setsid uwsm app -- walker --gapplication-service &
|
||||
echo # Always end in success so we don't terminate further running
|
@ -1,3 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
omarchy-restart-app waybar
|
@ -1,3 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
omarchy-restart-app fcitx5
|
@ -1,89 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ -z $1 ]]; then
|
||||
dns=$(gum choose --height 5 --header "Select DNS provider" Cloudflare DHCP Custom)
|
||||
else
|
||||
dns=$1
|
||||
fi
|
||||
|
||||
case "$dns" in
|
||||
Cloudflare)
|
||||
sudo tee /etc/systemd/resolved.conf >/dev/null <<'EOF'
|
||||
[Resolve]
|
||||
DNS=1.1.1.1#cloudflare-dns.com 1.0.0.1#cloudflare-dns.com
|
||||
FallbackDNS=9.9.9.9 149.112.112.112
|
||||
DNSOverTLS=opportunistic
|
||||
EOF
|
||||
|
||||
# Ensure network interfaces don't override our DNS settings
|
||||
for file in /etc/systemd/network/*.network; do
|
||||
[[ -f "$file" ]] || continue
|
||||
if ! grep -q "^\[DHCPv4\]" "$file"; then continue; fi
|
||||
|
||||
# Add UseDNS=no to DHCPv4 section if not present
|
||||
if ! sed -n '/^\[DHCPv4\]/,/^\[/p' "$file" | grep -q "^UseDNS="; then
|
||||
sudo sed -i '/^\[DHCPv4\]/a UseDNS=no' "$file"
|
||||
fi
|
||||
|
||||
# Add UseDNS=no to IPv6AcceptRA section if present
|
||||
if grep -q "^\[IPv6AcceptRA\]" "$file" && ! sed -n '/^\[IPv6AcceptRA\]/,/^\[/p' "$file" | grep -q "^UseDNS="; then
|
||||
sudo sed -i '/^\[IPv6AcceptRA\]/a UseDNS=no' "$file"
|
||||
fi
|
||||
done
|
||||
|
||||
sudo systemctl restart systemd-networkd systemd-resolved
|
||||
;;
|
||||
|
||||
DHCP)
|
||||
sudo tee /etc/systemd/resolved.conf >/dev/null <<'EOF'
|
||||
[Resolve]
|
||||
DNS=
|
||||
FallbackDNS=
|
||||
DNSOverTLS=no
|
||||
EOF
|
||||
|
||||
# Allow network interfaces to use DHCP DNS
|
||||
for file in /etc/systemd/network/*.network; do
|
||||
[[ -f "$file" ]] || continue
|
||||
sudo sed -i '/^UseDNS=no/d' "$file"
|
||||
done
|
||||
|
||||
sudo systemctl restart systemd-networkd systemd-resolved
|
||||
;;
|
||||
|
||||
Custom)
|
||||
echo "Enter your DNS servers (space-separated, e.g. '192.168.1.1 1.1.1.1'):"
|
||||
read -r dns_servers
|
||||
|
||||
if [[ -z "$dns_servers" ]]; then
|
||||
echo "Error: No DNS servers provided."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sudo tee /etc/systemd/resolved.conf >/dev/null <<EOF
|
||||
[Resolve]
|
||||
DNS=$dns_servers
|
||||
FallbackDNS=9.9.9.9 149.112.112.112
|
||||
EOF
|
||||
|
||||
# Ensure network interfaces don't override our DNS settings
|
||||
for file in /etc/systemd/network/*.network; do
|
||||
[[ -f "$file" ]] || continue
|
||||
if ! grep -q "^\[DHCPv4\]" "$file"; then continue; fi
|
||||
|
||||
# Add UseDNS=no to DHCPv4 section if not present
|
||||
if ! sed -n '/^\[DHCPv4\]/,/^\[/p' "$file" | grep -q "^UseDNS="; then
|
||||
sudo sed -i '/^\[DHCPv4\]/a UseDNS=no' "$file"
|
||||
fi
|
||||
|
||||
# Add UseDNS=no to IPv6AcceptRA section if present
|
||||
if grep -q "^\[IPv6AcceptRA\]" "$file" && ! sed -n '/^\[IPv6AcceptRA\]/,/^\[/p' "$file" | grep -q "^UseDNS="; then
|
||||
sudo sed -i '/^\[IPv6AcceptRA\]/a UseDNS=no' "$file"
|
||||
fi
|
||||
done
|
||||
|
||||
sudo systemctl restart systemd-networkd systemd-resolved
|
||||
|
||||
;;
|
||||
esac
|
||||
|
@ -1,127 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
print_success() {
|
||||
echo -e "${GREEN}$1${NC}"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}$1${NC}"
|
||||
}
|
||||
|
||||
print_info() {
|
||||
echo -e "${YELLOW}$1${NC}"
|
||||
}
|
||||
|
||||
check_fido2_hardware() {
|
||||
tokens=$(fido2-token -L 2>/dev/null)
|
||||
if [ -z "$tokens" ]; then
|
||||
print_error "\nNo FIDO2 device detected. Please plug it in (you may need to unlock it as well)."
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
setup_pam_config() {
|
||||
# Configure sudo
|
||||
if ! grep -q pam_u2f.so /etc/pam.d/sudo; then
|
||||
print_info "Configuring sudo for FIDO2 authentication..."
|
||||
sudo sed -i '1i auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2' /etc/pam.d/sudo
|
||||
fi
|
||||
|
||||
# Configure polkit
|
||||
if [ -f /etc/pam.d/polkit-1 ] && ! grep -q 'pam_u2f.so' /etc/pam.d/polkit-1; then
|
||||
print_info "Configuring polkit for FIDO2 authentication..."
|
||||
sudo sed -i '1i auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2' /etc/pam.d/polkit-1
|
||||
elif [ ! -f /etc/pam.d/polkit-1 ]; then
|
||||
print_info "Creating polkit configuration with FIDO2 authentication..."
|
||||
sudo tee /etc/pam.d/polkit-1 >/dev/null <<'EOF'
|
||||
auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2
|
||||
auth required pam_unix.so
|
||||
|
||||
account required pam_unix.so
|
||||
password required pam_unix.so
|
||||
session required pam_unix.so
|
||||
EOF
|
||||
fi
|
||||
}
|
||||
|
||||
remove_pam_config() {
|
||||
# Remove from sudo
|
||||
if grep -q pam_u2f.so /etc/pam.d/sudo; then
|
||||
print_info "Removing FIDO2 authentication from sudo..."
|
||||
sudo sed -i '/pam_u2f\.so/d' /etc/pam.d/sudo
|
||||
fi
|
||||
|
||||
# Remove from polkit
|
||||
if [ -f /etc/pam.d/polkit-1 ] && grep -Fq 'pam_u2f.so' /etc/pam.d/polkit-1; then
|
||||
print_info "Removing FIDO2 authentication from polkit..."
|
||||
sudo sed -i '/pam_u2f\.so/d' /etc/pam.d/polkit-1
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ "--remove" == "$1" ]]; then
|
||||
print_success "Removing FIDO2 device from authentication.\n"
|
||||
|
||||
# Remove PAM configuration
|
||||
remove_pam_config
|
||||
|
||||
# Remove FIDO2 configuration
|
||||
if [ -d /etc/fido2 ]; then
|
||||
print_info "Removing FIDO2 configuration..."
|
||||
sudo rm -rf /etc/fido2
|
||||
fi
|
||||
|
||||
# Uninstall packages
|
||||
print_info "Removing FIDO2 packages..."
|
||||
sudo pacman -Rns --noconfirm libfido2 pam-u2f
|
||||
|
||||
print_success "FIDO2 authentication has been completely removed."
|
||||
else
|
||||
print_success "Setting up FIDO2 device for authentication.\n"
|
||||
|
||||
# Install required packages
|
||||
print_info "Installing required packages..."
|
||||
sudo pacman -S --noconfirm --needed libfido2 pam-u2f
|
||||
|
||||
if ! check_fido2_hardware; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create the pamu2fcfg file
|
||||
if [ ! -f /etc/fido2/fido2 ]; then
|
||||
sudo mkdir -p /etc/fido2
|
||||
print_success "\nLet's setup your device by confirming on the device now."
|
||||
print_info "Touch your FIDO2 key when it lights up...\n"
|
||||
|
||||
if pamu2fcfg >/tmp/fido2; then
|
||||
sudo mv /tmp/fido2 /etc/fido2/fido2
|
||||
print_success "FIDO2 device registered successfully!"
|
||||
else
|
||||
print_error "\nFIDO2 registration failed. Please try again."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
print_info "FIDO2 device already registered."
|
||||
fi
|
||||
|
||||
# Configure PAM
|
||||
setup_pam_config
|
||||
|
||||
# Test with sudo
|
||||
print_info "\nTesting FIDO2 authentication with sudo..."
|
||||
print_info "Touch your FIDO2 key when prompted.\n"
|
||||
|
||||
if sudo echo "FIDO2 authentication test successful"; then
|
||||
print_success "\nPerfect! FIDO2 authentication is now configured."
|
||||
print_info "You can use your FIDO2 key for sudo and polkit authentication."
|
||||
else
|
||||
print_error "\nVerification failed. You may want to check your configuration."
|
||||
fi
|
||||
fi
|
@ -1,112 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
print_success() {
|
||||
echo -e "${GREEN}$1${NC}"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}$1${NC}"
|
||||
}
|
||||
|
||||
print_info() {
|
||||
echo -e "${YELLOW}$1${NC}"
|
||||
}
|
||||
|
||||
check_fingerprint_hardware() {
|
||||
if ! lsusb | grep -Eiq 'fingerprint|synaptics|goodix|elan|validity'; then
|
||||
print_error "\nNo fingerprint sensor detected."
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
setup_pam_config() {
|
||||
# Configure sudo
|
||||
if ! grep -q pam_fprintd.so /etc/pam.d/sudo; then
|
||||
print_info "Configuring sudo for fingerprint authentication..."
|
||||
sudo sed -i '1i auth sufficient pam_fprintd.so' /etc/pam.d/sudo
|
||||
fi
|
||||
|
||||
# Configure polkit
|
||||
if [ -f /etc/pam.d/polkit-1 ] && ! grep -q 'pam_fprintd.so' /etc/pam.d/polkit-1; then
|
||||
print_info "Configuring polkit for fingerprint authentication..."
|
||||
sudo sed -i '1i auth sufficient pam_fprintd.so' /etc/pam.d/polkit-1
|
||||
elif [ ! -f /etc/pam.d/polkit-1 ]; then
|
||||
print_info "Creating polkit configuration with fingerprint authentication..."
|
||||
sudo tee /etc/pam.d/polkit-1 >/dev/null <<'EOF'
|
||||
auth sufficient pam_fprintd.so
|
||||
auth required pam_unix.so
|
||||
|
||||
account required pam_unix.so
|
||||
password required pam_unix.so
|
||||
session required pam_unix.so
|
||||
EOF
|
||||
fi
|
||||
}
|
||||
|
||||
remove_pam_config() {
|
||||
# Remove from sudo
|
||||
if grep -q pam_fprintd.so /etc/pam.d/sudo; then
|
||||
print_info "Removing fingerprint authentication from sudo..."
|
||||
sudo sed -i '/pam_fprintd\.so/d' /etc/pam.d/sudo
|
||||
fi
|
||||
|
||||
# Remove from polkit
|
||||
if [ -f /etc/pam.d/polkit-1 ] && grep -Fq 'pam_fprintd.so' /etc/pam.d/polkit-1; then
|
||||
print_info "Removing fingerprint authentication from polkit..."
|
||||
sudo sed -i '/pam_fprintd\.so/d' /etc/pam.d/polkit-1
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ "--remove" == "$1" ]]; then
|
||||
print_success "Removing fingerprint scanner from authentication.\n"
|
||||
|
||||
# Remove PAM configuration
|
||||
remove_pam_config
|
||||
|
||||
# Uninstall packages
|
||||
print_info "Removing fingerprint packages..."
|
||||
sudo pacman -Rns --noconfirm fprintd
|
||||
|
||||
print_success "Fingerprint authentication has been completely removed."
|
||||
else
|
||||
print_success "Setting up fingerprint scanner for authentication.\n"
|
||||
|
||||
# Install required packages
|
||||
print_info "Installing required packages..."
|
||||
sudo pacman -S --noconfirm --needed fprintd usbutils
|
||||
|
||||
if ! check_fingerprint_hardware; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Configure PAM
|
||||
setup_pam_config
|
||||
|
||||
# Enroll first fingerprint
|
||||
print_success "\nLet's setup your right index finger as the first fingerprint."
|
||||
print_info "Keep moving the finger around on sensor until the process completes.\n"
|
||||
|
||||
if sudo fprintd-enroll "$USER"; then
|
||||
print_success "\nFingerprint enrolled successfully!"
|
||||
|
||||
# Verify
|
||||
print_info "\nNow let's verify that it's working correctly.\n"
|
||||
if fprintd-verify; then
|
||||
print_success "\nPerfect! Fingerprint authentication is now configured."
|
||||
print_info "You can use your fingerprint for sudo, polkit, and lock screen (Super + Escape)."
|
||||
else
|
||||
print_error "\nVerification failed. You may want to try enrolling again."
|
||||
fi
|
||||
else
|
||||
print_error "\nEnrollment failed. Please try again."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo
|
||||
gum spin --spinner "globe" --title "Done! Press any key to close..." -- bash -c 'read -n 1 -s'
|
@ -1,7 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
clear
|
||||
echo -e "\033[32m"
|
||||
cat <~/.local/share/omarchy/logo.txt
|
||||
echo -e "\033[0m"
|
||||
echo
|
@ -1,26 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
COMMAND="$1"
|
||||
OMARCHY_PATH=${OMARCHY_PATH:-$HOME/.local/share/omarchy}
|
||||
|
||||
if [[ -z $COMMAND ]]; then
|
||||
echo "Usage: omarchy-snapshot <create|restore>" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! command -v snapper &>/dev/null; then
|
||||
exit 127 # omarchy-update can use this to just ignore if snapper is not available
|
||||
fi
|
||||
|
||||
case "$COMMAND" in
|
||||
create)
|
||||
DESC="$(omarchy-version)"
|
||||
|
||||
for config in root home; do
|
||||
sudo snapper -c "$config" create -c number -d "$DESC"
|
||||
done
|
||||
;;
|
||||
restore)
|
||||
sudo limine-snapper-restore
|
||||
;;
|
||||
esac
|
@ -1,22 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
STATE_DIR="$HOME/.local/state/omarchy"
|
||||
mkdir -p "$STATE_DIR"
|
||||
|
||||
COMMAND="$1"
|
||||
STATE_NAME="$2"
|
||||
|
||||
if [[ -z "$COMMAND" ]]; then
|
||||
echo "Usage: omarchy-state <set|clear> <state-name-or-pattern>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z "$STATE_NAME" ]]; then
|
||||
echo "Usage: omarchy-state $COMMAND <state-name>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case "$COMMAND" in
|
||||
set) touch "$STATE_DIR/$STATE_NAME" ;;
|
||||
clear) find "$STATE_DIR" -maxdepth 1 -type f -name "$STATE_NAME" -delete ;;
|
||||
esac
|
@ -8,6 +8,4 @@ gtk-update-icon-cache ~/.local/share/icons/hicolor &>/dev/null
|
||||
# Copy .desktop declarations
|
||||
mkdir -p ~/.local/share/applications
|
||||
cp ~/.local/share/omarchy/applications/*.desktop ~/.local/share/applications/
|
||||
cp ~/.local/share/omarchy/applications/hidden/*.desktop ~/.local/share/applications/
|
||||
|
||||
update-desktop-database ~/.local/share/applications
|
@ -1,48 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Cycles through the background images available
|
||||
|
||||
BACKGROUNDS_DIR="$HOME/.config/omarchy/current/theme/backgrounds/"
|
||||
CURRENT_BACKGROUND_LINK="$HOME/.config/omarchy/current/background"
|
||||
|
||||
mapfile -d '' -t BACKGROUNDS < <(find "$BACKGROUNDS_DIR" -type f -print0 | sort -z)
|
||||
TOTAL=${#BACKGROUNDS[@]}
|
||||
|
||||
if [[ $TOTAL -eq 0 ]]; then
|
||||
notify-send "No background was found for theme" -t 2000
|
||||
pkill -x swaybg
|
||||
setsid uwsm app -- swaybg --color '#000000' >/dev/null 2>&1 &
|
||||
else
|
||||
# Get current background from symlink
|
||||
if [[ -L "$CURRENT_BACKGROUND_LINK" ]]; then
|
||||
CURRENT_BACKGROUND=$(readlink "$CURRENT_BACKGROUND_LINK")
|
||||
else
|
||||
# Default to first background if no symlink exists
|
||||
CURRENT_BACKGROUND=""
|
||||
fi
|
||||
|
||||
# Find current background index
|
||||
INDEX=-1
|
||||
for i in "${!BACKGROUNDS[@]}"; do
|
||||
if [[ "${BACKGROUNDS[$i]}" == "$CURRENT_BACKGROUND" ]]; then
|
||||
INDEX=$i
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Get next background (wrap around)
|
||||
if [[ $INDEX -eq -1 ]]; then
|
||||
# Use the first background when no match was found
|
||||
NEW_BACKGROUND="${BACKGROUNDS[0]}"
|
||||
else
|
||||
NEXT_INDEX=$(((INDEX + 1) % TOTAL))
|
||||
NEW_BACKGROUND="${BACKGROUNDS[$NEXT_INDEX]}"
|
||||
fi
|
||||
|
||||
# Set new background symlink
|
||||
ln -nsf "$NEW_BACKGROUND" "$CURRENT_BACKGROUND_LINK"
|
||||
|
||||
# Relaunch swaybg
|
||||
pkill -x swaybg
|
||||
setsid uwsm app -- swaybg -i "$CURRENT_BACKGROUND_LINK" -m fill >/dev/null 2>&1 &
|
||||
fi
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user