mirror of
https://github.com/basecamp/omarchy.git
synced 2025-07-27 04:09:23 +00:00
Compare commits
79 Commits
Author | SHA1 | Date | |
---|---|---|---|
3d871adc4a | |||
59b561a3ac | |||
e166cde9d0 | |||
fcaf61162c | |||
b15166cce0 | |||
3c1e7e5b10 | |||
ce875b6fee | |||
63d4d6d302 | |||
e3b211efae | |||
211b99320b | |||
1d90a15c16 | |||
648d061b3c | |||
3d8c15a397 | |||
559e628ccf | |||
ea37c7ccb5 | |||
c74ad0a013 | |||
5957da5ecb | |||
e4db074d38 | |||
56ec1351d3 | |||
89ee15f5fb | |||
985d137d71 | |||
a736c95fdc | |||
3b755b09aa | |||
1b26d75f3e | |||
c53125b519 | |||
a4e6846cd1 | |||
609c8ef84e | |||
79a8d34cc5 | |||
0ab85263e2 | |||
bf19025088 | |||
d05020b7c1 | |||
5cb345ef28 | |||
1a061cb427 | |||
9a99e24d67 | |||
83210c6566 | |||
ebe4420c10 | |||
ea2053bd18 | |||
f7ec407891 | |||
59b18ce5b8 | |||
4f0271b588 | |||
6faa33f422 | |||
8c631250c2 | |||
d00e463eca | |||
56ebe49468 | |||
8df95b6fb3 | |||
04b4c3c9a5 | |||
e0a123d56e | |||
863a1b0b3e | |||
7100c41449 | |||
e9a399173b | |||
14fe67e179 | |||
e8c9a5ad49 | |||
35aa002475 | |||
8d15510a0c | |||
3c07b541bd | |||
f244be542f | |||
d6a44c24a7 | |||
188d1c331a | |||
cfa63fdc67 | |||
da31736b9a | |||
5e56279fee | |||
504a7a85c2 | |||
b5dfaef8bb | |||
8f68793f7c | |||
86d9050420 | |||
fbd85990d0 | |||
3162a4cd5a | |||
dedc08a76e | |||
d227a541f0 | |||
40cd9575d2 | |||
671f9c7882 | |||
6af496f394 | |||
56f60adf6b | |||
9a8f4523e7 | |||
18931a8fd3 | |||
6842258031 | |||
aa4fddf53f | |||
07b89e0ad8 | |||
2a2a77685c |
20
LICENSE
Normal file
20
LICENSE
Normal file
@ -0,0 +1,20 @@
|
||||
Copyright (c) David Heinemeier Hansson
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@ -1,14 +0,0 @@
|
||||
[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;
|
14
bin/omarchy-fingerprint-setup
Executable file
14
bin/omarchy-fingerprint-setup
Executable file
@ -0,0 +1,14 @@
|
||||
#!/bin/bash
|
||||
|
||||
yay -S --noconfirm --needed fprint
|
||||
|
||||
echo -e "\e[32m\nLet's setup your right index finger as the first fingerprint.\nKeep moving the finger around on sensor until the process completes.\n\e[0m"
|
||||
sudo fprintd-enroll
|
||||
|
||||
echo -e "\e[32m\nNow let's verify that it's working correctly.\e[0m\n"
|
||||
|
||||
if fprintd-verify; then
|
||||
echo -e "\e[32m\nPerfect! Now you can use your fingerprint on the lock screen (Super + Escape).\e[0m"
|
||||
else
|
||||
echo -e "\e[31m\nSomething went wrong. Maybe try again?\e[0m"
|
||||
fi
|
51
bin/omarchy-show-keybindings
Executable file
51
bin/omarchy-show-keybindings
Executable file
@ -0,0 +1,51 @@
|
||||
#!/bin/bash
|
||||
|
||||
# A script to display Hyprland keybindings defined in your configuration
|
||||
# using wofi for an interactive search menu.
|
||||
|
||||
USER_HYPRLAND_CONF="$HOME/.config/hypr/hyprland.conf"
|
||||
OMARCHY_BINDINGS_CONF="$HOME/.local/share/omarchy/default/hypr/bindings.conf"
|
||||
|
||||
# Process the configuration file to extract and format keybindings
|
||||
# 1. `grep` finds all lines starting with 'bind' (allowing for leading spaces).
|
||||
# 2. The first `sed` removes comments (anything after a '#').
|
||||
# 3. `awk` does the heavy lifting of formatting the output.
|
||||
# - It sets the field separator to a comma ','.
|
||||
# - It removes the 'bind... =' part from the beginning of the line.
|
||||
# - It joins the key combination (e.g., "SUPER + Q").
|
||||
# - It joins the command that the key executes.
|
||||
# - It prints everything in a nicely aligned format.
|
||||
# 4. The final `sed` cleans up any leftover commas from the end of lines.
|
||||
grep -h '^[[:space:]]*bind' "$HYPRLAND_CONF" "$OMARCHY_BINDINGS_CONF" |
|
||||
awk -F, '
|
||||
{
|
||||
# Strip trailing comments
|
||||
sub(/#.*/, "");
|
||||
|
||||
# Remove the "bind... =" part and surrounding whitespace
|
||||
sub(/^[[:space:]]*bind[^=]*=(\+[[:space:]])?(exec, )?[[:space:]]*/, "", $1);
|
||||
|
||||
# Combine the modifier and key (first two fields)
|
||||
key_combo = $1 " + " $2;
|
||||
|
||||
# Clean up: strip leading "+" if present, trim spaces
|
||||
gsub(/^[ \t]*\+?[ \t]*/, "", key_combo);
|
||||
gsub(/[ \t]+$/, "", key_combo);
|
||||
|
||||
# Reconstruct the command from the remaining fields
|
||||
action = "";
|
||||
for (i = 3; i <= NF; i++) {
|
||||
action = action $i (i < NF ? "," : "");
|
||||
}
|
||||
|
||||
# Clean up trailing commas, remove leading "exec, ", and trim
|
||||
sub(/,$/, "", action);
|
||||
gsub(/(^|,)[[:space:]]*exec[[:space:]]*,?/, "", action);
|
||||
gsub(/^[ \t]+|[ \t]+$/, "", action);
|
||||
gsub(/[ \t]+/, " ", key_combo); # Collapse multiple spaces to one
|
||||
|
||||
if (action != "") {
|
||||
printf "%-35s → %s\n", key_combo, action;
|
||||
}
|
||||
}' |
|
||||
flock --nonblock /tmp/.wofi.lock -c "wofi -dmenu -i --width 60% --height 70% -p 'Hyprland Keybindings' -O alphabetical"
|
@ -2,8 +2,13 @@
|
||||
|
||||
cd ~/.local/share/omarchy
|
||||
|
||||
# Remember the version we're at before upgrading
|
||||
last_updated_at=$(git log -1 --format=%cd --date=unix)
|
||||
if [[ $1 == "all" ]]; then
|
||||
# Run all migrations
|
||||
last_updated_at=1
|
||||
else
|
||||
# Remember the version we're at before upgrading
|
||||
last_updated_at=$(git log -1 --format=%cd --date=unix)
|
||||
fi
|
||||
|
||||
# Get the latest
|
||||
git pull
|
||||
@ -20,4 +25,4 @@ for file in migrations/*.sh; do
|
||||
done
|
||||
|
||||
# Back to where we came from
|
||||
cd -
|
||||
cd - >/dev/null
|
||||
|
8
boot.sh
8
boot.sh
@ -16,5 +16,13 @@ echo -e "\nCloning Omarchy..."
|
||||
rm -rf ~/.local/share/omarchy/
|
||||
git clone https://github.com/basecamp/omarchy.git ~/.local/share/omarchy >/dev/null
|
||||
|
||||
# Use custom branch if instructed
|
||||
if [[ -n "$OMARCHY_REF" ]]; then
|
||||
echo -e "\eUsing branch: $OMARCHY_REF"
|
||||
cd ~/.local/share/omarchy
|
||||
git fetch origin "${OMARCHY_REF}" && git checkout "${OMARCHY_REF}"
|
||||
cd -
|
||||
fi
|
||||
|
||||
echo -e "\nInstallation starting..."
|
||||
source ~/.local/share/omarchy/install.sh
|
||||
|
@ -27,10 +27,6 @@ source = ~/.config/omarchy/current/theme/hyprland.conf
|
||||
# Extra env variables
|
||||
env = GDK_SCALE,2 # Change to 1 if on a 1x display
|
||||
|
||||
# Extra env variables needed if running an NVIDIA GPU
|
||||
# env = NVD_BACKEND,direct
|
||||
# env = LIBVA_DRIVER_NAME,nvidia
|
||||
# env = __GLX_VENDOR_LIBRARY_NAME,nvidia
|
||||
|
||||
# Extra bindings
|
||||
bind = SUPER, A, exec, $webapp="https://chatgpt.com"
|
||||
@ -39,6 +35,7 @@ bind = SUPER, C, exec, $webapp="https://app.hey.com/calendar/weeks/"
|
||||
bind = SUPER, E, exec, $webapp="https://app.hey.com"
|
||||
bind = SUPER, Y, exec, $webapp="https://youtube.com/"
|
||||
bind = SUPER SHIFT, G, exec, $webapp="https://web.whatsapp.com/"
|
||||
bind = SUPER ALT, G, exec, $webapp="https://messages.google.com/web/conversations"
|
||||
bind = SUPER, X, exec, $webapp="https://x.com/"
|
||||
bind = SUPER SHIFT, X, exec, $webapp="https://x.com/compose/post"
|
||||
|
||||
|
@ -32,7 +32,7 @@ input-field {
|
||||
font_color = rgba(205,214,244,1.0)
|
||||
|
||||
placeholder_color = rgba(205,214,244,0.6)
|
||||
placeholder_text = Enter Password
|
||||
placeholder_text = Enter Password
|
||||
check_color = rgba(68, 157, 171, 1.0)
|
||||
fail_text = Wrong
|
||||
|
||||
@ -40,3 +40,7 @@ input-field {
|
||||
shadow_passes = 0
|
||||
fade_on_empty = false
|
||||
}
|
||||
|
||||
auth {
|
||||
fingerprint:enabled = true
|
||||
}
|
||||
|
@ -34,7 +34,7 @@
|
||||
"9": "9",
|
||||
"active": ""
|
||||
},
|
||||
"persistent_workspaces": {
|
||||
"persistent-workspaces": {
|
||||
"1": [],
|
||||
"2": [],
|
||||
"3": [],
|
||||
@ -66,7 +66,6 @@
|
||||
"on-click": "alacritty -e iwctl"
|
||||
},
|
||||
"battery": {
|
||||
"interval": 5,
|
||||
"format": "{capacity}% {icon}",
|
||||
"format-discharging": "{icon}",
|
||||
"format-charging": "{icon}",
|
||||
|
@ -33,3 +33,6 @@ alias r='rails'
|
||||
alias gcm='git commit -m'
|
||||
alias gcam='git commit -a -m'
|
||||
alias gcad='git commit -a --amend'
|
||||
|
||||
# Find packages without leaving the terminal
|
||||
alias yayf="yay -Slq | fzf --multi --preview 'yay -Sii {1}' --preview-window=down:75% | xargs -ro yay -S"
|
||||
|
@ -66,5 +66,11 @@ web2app-remove() {
|
||||
rm "$ICON_PATH"
|
||||
}
|
||||
|
||||
# Ensure changes to ~/.XCompose are immediately available
|
||||
refresh-xcompose() {
|
||||
pkill fcitx5
|
||||
setsid fcitx5 &>/dev/null &
|
||||
}
|
||||
|
||||
# Ensure that external keyboards that use an fn key has the F keys as the default
|
||||
alias fix_fkeys='echo 2 | sudo tee /sys/module/hid_apple/parameters/fnmode'
|
||||
|
@ -10,16 +10,18 @@ bind = SUPER, G, exec, $messenger
|
||||
bind = SUPER, O, exec, obsidian -disable-gpu
|
||||
bind = SUPER, slash, exec, $passwordManager
|
||||
|
||||
bind = SUPER, space, exec, wofi --show drun --sort-order=alphabetical
|
||||
bind = SUPER, space, exec, pkill wofi || wofi --show drun --sort-order=alphabetical
|
||||
bind = SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar
|
||||
bind = SUPER CTRL, SPACE, exec, ~/.local/share/omarchy/bin/swaybg-next
|
||||
bind = SUPER SHIFT CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-next
|
||||
bind = SUPER, K, exec, ~/.local/share/omarchy/bin/omarchy-show-keybindings
|
||||
|
||||
bind = SUPER, W, killactive,
|
||||
|
||||
# End active session
|
||||
bind = SUPER, ESCAPE, exec, hyprlock
|
||||
bind = SUPER SHIFT, ESCAPE, exit,
|
||||
bind = SUPER SHIFT, ESCAPE, exec, systemctl suspend
|
||||
bind = SUPER ALT, ESCAPE, exit,
|
||||
bind = SUPER CTRL, ESCAPE, exec, reboot
|
||||
bind = SUPER SHIFT CTRL, ESCAPE, exec, systemctl poweroff
|
||||
|
||||
@ -35,28 +37,28 @@ bind = SUPER, up, movefocus, u
|
||||
bind = SUPER, down, movefocus, d
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
bind = SUPER, 1, workspace, 1
|
||||
bind = SUPER, 2, workspace, 2
|
||||
bind = SUPER, 3, workspace, 3
|
||||
bind = SUPER, 4, workspace, 4
|
||||
bind = SUPER, 5, workspace, 5
|
||||
bind = SUPER, 6, workspace, 6
|
||||
bind = SUPER, 7, workspace, 7
|
||||
bind = SUPER, 8, workspace, 8
|
||||
bind = SUPER, 9, workspace, 9
|
||||
bind = SUPER, 0, workspace, 10
|
||||
bind = SUPER, code:10, workspace, 1
|
||||
bind = SUPER, code:11, workspace, 2
|
||||
bind = SUPER, code:12, workspace, 3
|
||||
bind = SUPER, code:13, workspace, 4
|
||||
bind = SUPER, code:14, workspace, 5
|
||||
bind = SUPER, code:15, workspace, 6
|
||||
bind = SUPER, code:16, workspace, 7
|
||||
bind = SUPER, code:17, workspace, 8
|
||||
bind = SUPER, code:18, workspace, 9
|
||||
bind = SUPER, code:19, workspace, 10
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
bind = SUPER SHIFT, 1, movetoworkspace, 1
|
||||
bind = SUPER SHIFT, 2, movetoworkspace, 2
|
||||
bind = SUPER SHIFT, 3, movetoworkspace, 3
|
||||
bind = SUPER SHIFT, 4, movetoworkspace, 4
|
||||
bind = SUPER SHIFT, 5, movetoworkspace, 5
|
||||
bind = SUPER SHIFT, 6, movetoworkspace, 6
|
||||
bind = SUPER SHIFT, 7, movetoworkspace, 7
|
||||
bind = SUPER SHIFT, 8, movetoworkspace, 8
|
||||
bind = SUPER SHIFT, 9, movetoworkspace, 9
|
||||
bind = SUPER SHIFT, 0, movetoworkspace, 10
|
||||
bind = SUPER SHIFT, code:10, movetoworkspace, 1
|
||||
bind = SUPER SHIFT, code:11, movetoworkspace, 2
|
||||
bind = SUPER SHIFT, code:12, movetoworkspace, 3
|
||||
bind = SUPER SHIFT, code:13, movetoworkspace, 4
|
||||
bind = SUPER SHIFT, code:14, movetoworkspace, 5
|
||||
bind = SUPER SHIFT, code:15, movetoworkspace, 6
|
||||
bind = SUPER SHIFT, code:16, movetoworkspace, 7
|
||||
bind = SUPER SHIFT, code:17, movetoworkspace, 8
|
||||
bind = SUPER SHIFT, code:18, movetoworkspace, 9
|
||||
bind = SUPER SHIFT, code:19, movetoworkspace, 10
|
||||
|
||||
# Swap active window with the one next to it with mainMod + SHIFT + arrow keys
|
||||
bind = SUPER SHIFT, left, swapwindow, l
|
||||
|
@ -2,14 +2,21 @@
|
||||
windowrule = suppressevent maximize, class:.*
|
||||
|
||||
# Force chromium into a tile to deal with --app bug
|
||||
windowrule = tile, class:^(chromium)$
|
||||
windowrule = tile, class:^(Chromium)$
|
||||
|
||||
# Float sound and bluetooth settings
|
||||
windowrule = float, class:^(org.pulseaudio.pavucontrol|blueberry.py)$
|
||||
|
||||
# Float Steam, fullscreen RetroArch
|
||||
windowrule = float, class:^(steam)$
|
||||
windowrule = fullscreen, class:^(com.libretro.RetroArch)$
|
||||
|
||||
# Just dash of opacity
|
||||
windowrule = opacity 0.97 0.9, class:.*
|
||||
windowrule = opacity 1 0.97, class:^(chromium|google-chrome|google-chrome-unstable)$
|
||||
windowrule = opacity 0.97 0.9, initialClass:^(chrome-.*-Default)$ # web apps
|
||||
windowrule = opacity 1 1, initialClass:^(chrome-youtube.*-Default)$ # Youtube
|
||||
windowrule = opacity 1 1, class:^(zoom|vlc|org.kde.kdenlive|com.obsproject.Studio)$
|
||||
windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable)$
|
||||
windowrule = opacity 1 1, initialTitle:^(youtube.com_/)$ # Youtube
|
||||
windowrule = opacity 1 1, class:^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv)$
|
||||
windowrule = opacity 1 1, class:^(com.libretro.RetroArch|steam)$
|
||||
|
||||
# Fix some dragging issues with XWayland
|
||||
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
|
||||
|
@ -1,3 +1,9 @@
|
||||
# Exit immediately if a command exits with a non-zero status
|
||||
set -e
|
||||
|
||||
# Give people a chance to retry running the installation
|
||||
trap 'echo "Omarchy installation failed! You can retry by running: source ~/.local/share/omarchy/install.sh"' ERR
|
||||
|
||||
# Install everything
|
||||
for f in ~/.local/share/omarchy/install/*.sh; do source "$f"; done
|
||||
|
||||
|
@ -1,6 +1,9 @@
|
||||
# Copy over Omarchy configs
|
||||
cp -R ~/.local/share/omarchy/config/* ~/.config/
|
||||
|
||||
# Ensure application directory exists for update-desktop-database
|
||||
mkdir -p ~/.local/share/applications
|
||||
|
||||
# Use default bashrc from Omarchy
|
||||
echo "source ~/.local/share/omarchy/default/bash/rc" >~/.bashrc
|
||||
|
||||
@ -18,6 +21,7 @@ git config --global alias.br branch
|
||||
git config --global alias.ci commit
|
||||
git config --global alias.st status
|
||||
git config --global pull.rebase true
|
||||
git config --global init.defaultBranch master
|
||||
|
||||
# Set identification from install inputs
|
||||
if [[ -n "${OMARCHY_USER_NAME//[[:space:]]/}" ]]; then
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Turn on bluetooth by default
|
||||
sudo systemctl enable --now bluetooth.service
|
||||
|
||||
# Install bluetooth controls
|
||||
yay -S --noconfirm --needed blueberry
|
||||
|
||||
# Turn on bluetooth by default
|
||||
sudo systemctl enable --now bluetooth.service
|
||||
|
@ -1,8 +1,9 @@
|
||||
yay -S --noconfirm --needed \
|
||||
brightnessctl playerctl pamixer pavucontrol wireplumber \
|
||||
fcitx5 fcitx5-gtk fcitx5-qt fcitx5-configtool \
|
||||
wl-clip-persist clipse \
|
||||
wl-clip-persist clipse-bin \
|
||||
nautilus sushi gnome-calculator \
|
||||
1password-beta 1password-cli \
|
||||
chromium vlc \
|
||||
evince imv
|
||||
chromium mpv \
|
||||
evince imv \
|
||||
localsend-bin
|
||||
|
@ -3,4 +3,4 @@ yay -S --noconfirm --needed \
|
||||
imagemagick \
|
||||
mariadb-libs postgresql-libs \
|
||||
github-cli \
|
||||
lazygit lazydocker
|
||||
lazygit lazydocker-bin
|
||||
|
@ -1,6 +1,7 @@
|
||||
yay -S --noconfirm --needed docker docker-compose
|
||||
|
||||
# Limit log size to avoid running out of disk
|
||||
sudo mkdir -p /etc/docker
|
||||
echo '{"log-driver":"json-file","log-opts":{"max-size":"10m","max-file":"5"}}' | sudo tee /etc/docker/daemon.json
|
||||
|
||||
# Start Docker automatically
|
||||
|
@ -4,4 +4,4 @@ yay -S --noconfirm --needed \
|
||||
xdg-desktop-portal-hyprland xdg-desktop-portal-gtk
|
||||
|
||||
# Start Hyprland on first session
|
||||
echo "[[ -z \$DISPLAY && \$(tty) == /dev/tty1 ]] && exec Hyprland" >~/.bash_profile
|
||||
echo "[[ -z \$DISPLAY && \$(tty) == /dev/tty1 ]] && exec Hyprland" >~/.bash_profile
|
@ -11,19 +11,24 @@ xdg-mime default imv.desktop image/tiff
|
||||
# Open PDFs with the Document Viewer
|
||||
xdg-mime default org.gnome.Evince.desktop application/pdf
|
||||
|
||||
# Open video files with VLC
|
||||
xdg-mime default vlc.desktop video/mp4
|
||||
xdg-mime default vlc.desktop video/x-msvideo
|
||||
xdg-mime default vlc.desktop video/x-matroska
|
||||
xdg-mime default vlc.desktop video/x-flv
|
||||
xdg-mime default vlc.desktop video/x-ms-wmv
|
||||
xdg-mime default vlc.desktop video/mpeg
|
||||
xdg-mime default vlc.desktop video/ogg
|
||||
xdg-mime default vlc.desktop video/webm
|
||||
xdg-mime default vlc.desktop video/quicktime
|
||||
xdg-mime default vlc.desktop video/3gpp
|
||||
xdg-mime default vlc.desktop video/3gpp2
|
||||
xdg-mime default vlc.desktop video/x-ms-asf
|
||||
xdg-mime default vlc.desktop video/x-ogm+ogg
|
||||
xdg-mime default vlc.desktop video/x-theora+ogg
|
||||
xdg-mime default vlc.desktop application/ogg
|
||||
# Use Chromium as the default browser
|
||||
xdg-settings set default-web-browser chromium.desktop
|
||||
xdg-mime default chromium.desktop x-scheme-handler/http
|
||||
xdg-mime default chromium.desktop x-scheme-handler/https
|
||||
|
||||
# Open video files with mpv
|
||||
xdg-mime default mpv.desktop video/mp4
|
||||
xdg-mime default mpv.desktop video/x-msvideo
|
||||
xdg-mime default mpv.desktop video/x-matroska
|
||||
xdg-mime default mpv.desktop video/x-flv
|
||||
xdg-mime default mpv.desktop video/x-ms-wmv
|
||||
xdg-mime default mpv.desktop video/mpeg
|
||||
xdg-mime default mpv.desktop video/ogg
|
||||
xdg-mime default mpv.desktop video/webm
|
||||
xdg-mime default mpv.desktop video/quicktime
|
||||
xdg-mime default mpv.desktop video/3gpp
|
||||
xdg-mime default mpv.desktop video/3gpp2
|
||||
xdg-mime default mpv.desktop video/x-ms-asf
|
||||
xdg-mime default mpv.desktop video/x-ogm+ogg
|
||||
xdg-mime default mpv.desktop video/x-theora+ogg
|
||||
xdg-mime default mpv.desktop application/ogg
|
||||
|
82
install/nvidia.sh
Normal file
82
install/nvidia.sh
Normal file
@ -0,0 +1,82 @@
|
||||
# ==============================================================================
|
||||
# Hyprland NVIDIA Setup Script for Arch Linux
|
||||
# ==============================================================================
|
||||
# This script automates the installation and configuration of NVIDIA drivers
|
||||
# for use with Hyprland on Arch Linux, following the official Hyprland wiki.
|
||||
#
|
||||
# Author: https://github.com/Kn0ax
|
||||
#
|
||||
# ==============================================================================
|
||||
|
||||
# --- GPU Detection ---
|
||||
if [ -n "$(lspci | grep -i 'nvidia')" ]; then
|
||||
# --- Driver Selection ---
|
||||
# Turing (16xx, 20xx), Ampere (30xx), Ada (40xx), and newer recommend the open-source kernel modules
|
||||
if echo "$gpu_info" | grep -q -E "RTX [2-9][0-9]|GTX 16"; then
|
||||
NVIDIA_DRIVER_PACKAGE="nvidia-open-dkms"
|
||||
else
|
||||
NVIDIA_DRIVER_PACKAGE="nvidia-dkms"
|
||||
fi
|
||||
|
||||
# Check which kernel is installed and set appropriate headers package
|
||||
KERNEL_HEADERS="linux-headers" # Default
|
||||
if pacman -Q linux-zen &>/dev/null; then
|
||||
KERNEL_HEADERS="linux-zen-headers"
|
||||
elif pacman -Q linux-lts &>/dev/null; then
|
||||
KERNEL_HEADERS="linux-lts-headers"
|
||||
elif pacman -Q linux-hardened &>/dev/null; then
|
||||
KERNEL_HEADERS="linux-hardened-headers"
|
||||
fi
|
||||
|
||||
# Enable multilib repository for 32-bit libraries
|
||||
if ! grep -q "^\[multilib\]" /etc/pacman.conf; then
|
||||
sudo sed -i '/^#\[multilib\]/,/^#Include/ s/^#//' /etc/pacman.conf
|
||||
fi
|
||||
|
||||
# Install packages
|
||||
PACKAGES_TO_INSTALL=(
|
||||
"${KERNEL_HEADERS}"
|
||||
"${NVIDIA_DRIVER_PACKAGE}"
|
||||
"nvidia-utils"
|
||||
"lib32-nvidia-utils"
|
||||
"egl-wayland"
|
||||
"libva-nvidia-driver" # For VA-API hardware acceleration
|
||||
"qt5-wayland"
|
||||
"qt6-wayland"
|
||||
)
|
||||
|
||||
yay -Syu --needed --noconfirm "${PACKAGES_TO_INSTALL[@]}"
|
||||
|
||||
# Configure modprobe for early KMS
|
||||
echo "options nvidia_drm modeset=1" | sudo tee /etc/modprobe.d/nvidia.conf >/dev/null
|
||||
|
||||
# Configure mkinitcpio for early loading
|
||||
MKINITCPIO_CONF="/etc/mkinitcpio.conf"
|
||||
|
||||
# Define modules
|
||||
NVIDIA_MODULES="nvidia nvidia_modeset nvidia_uvm nvidia_drm"
|
||||
|
||||
# Create backup
|
||||
sudo cp "$MKINITCPIO_CONF" "${MKINITCPIO_CONF}.backup"
|
||||
|
||||
# Remove any old nvidia modules to prevent duplicates
|
||||
sudo sed -i -E 's/ nvidia_drm//g; s/ nvidia_uvm//g; s/ nvidia_modeset//g; s/ nvidia//g;' "$MKINITCPIO_CONF"
|
||||
# Add the new modules at the start of the MODULES array
|
||||
sudo sed -i -E "s/^(MODULES=\\()/\\1${NVIDIA_MODULES} /" "$MKINITCPIO_CONF"
|
||||
# Clean up potential double spaces
|
||||
sudo sed -i -E 's/ +/ /g' "$MKINITCPIO_CONF"
|
||||
|
||||
sudo mkinitcpio -P
|
||||
|
||||
# Add NVIDIA environment variables to hyprland.conf
|
||||
HYPRLAND_CONF="$HOME/.config/hypr/hyprland.conf"
|
||||
if [ -f "$HYPRLAND_CONF" ]; then
|
||||
cat >>"$HYPRLAND_CONF" <<'EOF'
|
||||
|
||||
# NVIDIA environment variables
|
||||
env = NVD_BACKEND,direct
|
||||
env = LIBVA_DRIVER_NAME,nvidia
|
||||
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
|
||||
EOF
|
||||
fi
|
||||
fi
|
@ -4,8 +4,8 @@ yay -S --noconfirm power-profiles-daemon
|
||||
|
||||
if ls /sys/class/power_supply/BAT* &>/dev/null; then
|
||||
# This computer runs on a battery
|
||||
powerprofilesctl set balanced
|
||||
powerprofilesctl set balanced || true
|
||||
else
|
||||
# This computer runs on power outlet
|
||||
powerprofilesctl set performance
|
||||
powerprofilesctl set performance || true
|
||||
fi
|
||||
|
@ -1,10 +1,6 @@
|
||||
if ! command -v ruby &>/dev/null; then
|
||||
# Install Ruby using gcc-14 for compatibility
|
||||
yay -S --noconfirm --needed gcc14
|
||||
mise settings set ruby.ruby_build_opts "CC=gcc-14 CXX=g++-14"
|
||||
mise install ruby
|
||||
mise use ruby -g
|
||||
# Install Ruby using gcc-14 for compatibility
|
||||
yay -S --noconfirm --needed gcc14
|
||||
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
|
||||
fi
|
||||
# Trust .ruby-version
|
||||
mise settings add idiomatic_version_file_enable_tools ruby
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Use dark mode for QT apps too (like VLC and kdenlive)
|
||||
# Use dark mode for QT apps too (like kdenlive)
|
||||
sudo pacman -S --noconfirm kvantum-qt5
|
||||
|
||||
# Prefer dark mode everything
|
||||
|
@ -2,6 +2,7 @@ source ~/.local/share/omarchy/default/bash/functions
|
||||
web2app "WhatsApp" https://web.whatsapp.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/whatsapp.png
|
||||
web2app "Google Photos" https://photos.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-photos.png
|
||||
web2app "Google Contacts" https://contacts.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-contacts.png
|
||||
web2app "Google Messages" https://messages.google.com/web/conversations https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-messages.png
|
||||
web2app "ChatGPT" https://chatgpt.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/chatgpt.png
|
||||
web2app "YouTube" https://youtube.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/youtube.png
|
||||
web2app "GitHub" https://github.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/github-light.png
|
||||
|
@ -1,7 +1,7 @@
|
||||
yay -S --noconfirm --needed \
|
||||
signal-desktop spotify dropbox-cli zoom \
|
||||
obsidian typora libreoffice obs-studio kdenlive \
|
||||
obsidian-bin typora libreoffice obs-studio kdenlive \
|
||||
pinta xournalpp
|
||||
|
||||
# Copy over Omarchy applications
|
||||
source ~/.local/share/omarchy/bin/omarchy-sync-applications
|
||||
source ~/.local/share/omarchy/bin/omarchy-sync-applications || true
|
||||
|
@ -1,3 +1,5 @@
|
||||
# Add missing installation of bat
|
||||
echo "Add missing installation of bat (used by the ff alias)"
|
||||
yay -S --noconfirm --needed bat
|
||||
if ! command -v bat &>/dev/null; then
|
||||
# Add missing installation of bat
|
||||
echo "Add missing installation of bat (used by the ff alias)"
|
||||
yay -S --noconfirm --needed bat
|
||||
fi
|
||||
|
3
migrations/1751225707.sh
Normal file
3
migrations/1751225707.sh
Normal file
@ -0,0 +1,3 @@
|
||||
echo "Fixing persistent workspaces in waybar config"
|
||||
sed -i 's/"persistent_workspaces":/"persistent-workspaces":/' ~/.config/waybar/config
|
||||
pkill -SIGUSR2 waybar
|
3
migrations/1751510848.sh
Normal file
3
migrations/1751510848.sh
Normal file
@ -0,0 +1,3 @@
|
||||
echo "Installing missing fd terminal tool for finding files"
|
||||
yay -S --noconfirm --needed fd
|
||||
echo "You must start a new terminal for fd to work"
|
19
migrations/1751667620.sh
Normal file
19
migrations/1751667620.sh
Normal file
@ -0,0 +1,19 @@
|
||||
echo "Switching from vlc to mpv for the default video player"
|
||||
yay -Rns --noconfirm vlc
|
||||
rm ~/.local/share/applications/vlc.desktop
|
||||
yay -S --noconfirm mpv
|
||||
xdg-mime default mpv.desktop video/mp4
|
||||
xdg-mime default mpv.desktop video/x-msvideo
|
||||
xdg-mime default mpv.desktop video/x-matroska
|
||||
xdg-mime default mpv.desktop video/x-flv
|
||||
xdg-mime default mpv.desktop video/x-ms-wmv
|
||||
xdg-mime default mpv.desktop video/mpeg
|
||||
xdg-mime default mpv.desktop video/ogg
|
||||
xdg-mime default mpv.desktop video/webm
|
||||
xdg-mime default mpv.desktop video/quicktime
|
||||
xdg-mime default mpv.desktop video/3gpp
|
||||
xdg-mime default mpv.desktop video/3gpp2
|
||||
xdg-mime default mpv.desktop video/x-ms-asf
|
||||
xdg-mime default mpv.desktop video/x-ogm+ogg
|
||||
xdg-mime default mpv.desktop video/x-theora+ogg
|
||||
xdg-mime default mpv.desktop application/ogg
|
3
migrations/1751669258.sh
Normal file
3
migrations/1751669258.sh
Normal file
@ -0,0 +1,3 @@
|
||||
echo "Add missing docker config"
|
||||
sudo mkdir -p /etc/docker
|
||||
echo '{"log-driver":"json-file","log-opts":{"max-size":"10m","max-file":"5"}}' | sudo tee /etc/docker/daemon.json
|
@ -32,11 +32,15 @@ input-field {
|
||||
font_color = rgba(205,214,244,1.0)
|
||||
|
||||
placeholder_color = rgba(205,214,244,0.6)
|
||||
placeholder_text = Enter Password
|
||||
placeholder_text = Enter Password
|
||||
check_color = rgba(68, 157, 171, 1.0)
|
||||
fail_text = Wrong
|
||||
|
||||
rounding = 0
|
||||
shadow_passes = 0
|
||||
fade_on_empty = false
|
||||
}
|
||||
}
|
||||
|
||||
auth {
|
||||
fingerprint:enabled = true
|
||||
}
|
||||
|
@ -32,11 +32,15 @@ input-field {
|
||||
font_color = rgba(211,198,170,1.0)
|
||||
|
||||
placeholder_color = rgba(211,198,170,0.6)
|
||||
placeholder_text = Enter Password
|
||||
placeholder_text = Enter Password
|
||||
check_color = rgba(131, 192, 146, 1.0)
|
||||
fail_text = Wrong
|
||||
|
||||
rounding = 0
|
||||
shadow_passes = 0
|
||||
fade_on_empty = false
|
||||
}
|
||||
}
|
||||
|
||||
auth {
|
||||
fingerprint:enabled = true
|
||||
}
|
||||
|
@ -32,11 +32,15 @@ input-field {
|
||||
font_color = rgba(212,190,152,1.0)
|
||||
|
||||
placeholder_color = rgba(212,190,152,0.6)
|
||||
placeholder_text = Enter Password
|
||||
placeholder_text = Enter Password
|
||||
check_color = rgba(214, 153, 92, 1.0)
|
||||
fail_text = Wrong
|
||||
|
||||
rounding = 0
|
||||
shadow_passes = 0
|
||||
fade_on_empty = false
|
||||
}
|
||||
}
|
||||
|
||||
auth {
|
||||
fingerprint:enabled = true
|
||||
}
|
||||
|
@ -32,11 +32,15 @@ input-field {
|
||||
font_color = rgba(220,215,186,1.0)
|
||||
|
||||
placeholder_color = rgba(220,215,186,0.6)
|
||||
placeholder_text = Enter Password
|
||||
placeholder_text = Enter Password
|
||||
check_color = rgba(126, 156, 216, 1.0)
|
||||
fail_text = Wrong
|
||||
|
||||
rounding = 0
|
||||
shadow_passes = 0
|
||||
fade_on_empty = false
|
||||
}
|
||||
}
|
||||
|
||||
auth {
|
||||
fingerprint:enabled = true
|
||||
}
|
||||
|
@ -32,11 +32,15 @@ input-field {
|
||||
font_color = rgba(216,222,233,1.0)
|
||||
|
||||
placeholder_color = rgba(216,222,233,0.6)
|
||||
placeholder_text = Enter Password
|
||||
placeholder_text = Enter Password
|
||||
check_color = rgba(136, 192, 208, 1.0)
|
||||
fail_text = Wrong
|
||||
|
||||
rounding = 0
|
||||
shadow_passes = 0
|
||||
fade_on_empty = false
|
||||
}
|
||||
}
|
||||
|
||||
auth {
|
||||
fingerprint:enabled = true
|
||||
}
|
||||
|
@ -32,11 +32,15 @@ input-field {
|
||||
font_color = rgba(205,214,244,1.0)
|
||||
|
||||
placeholder_color = rgba(205,214,244,0.6)
|
||||
placeholder_text = Enter Password
|
||||
placeholder_text = Enter Password
|
||||
check_color = rgba(68, 157, 171, 1.0)
|
||||
fail_text = Wrong
|
||||
|
||||
rounding = 0
|
||||
shadow_passes = 0
|
||||
fade_on_empty = false
|
||||
}
|
||||
}
|
||||
|
||||
auth {
|
||||
fingerprint:enabled = true
|
||||
}
|
||||
|
Reference in New Issue
Block a user