2 Commits

Author SHA1 Message Date
57e96e529a Merge branch 'master' into ghostty 2025-07-02 19:47:08 -07:00
363be8e6fe Default ghostty config 2025-07-02 19:35:57 -07:00
83 changed files with 603 additions and 980 deletions

14
applications/vlc.desktop Normal file
View 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;

View File

@ -1,6 +0,0 @@
#!/bin/bash
migration_file="$HOME/.local/share/omarchy/migrations/$(git log -1 --format=%cd --date=unix).sh"
touch $migration_file
nvim $migration_file
echo -e "Run with:\nsource $migration_file"

View File

@ -1,36 +0,0 @@
#!/bin/bash
yay -S --noconfirm --needed fprintd usbutils
if ! lsusb | grep -iq fingerprint; then
echo -e "\e[31m\nNo fingerprint sensor detected.\e[0m"
else
# Add fingerprint authentication as an option for sudo
if ! grep -q pam_fprintd.so /etc/pam.d/sudo; then
sudo sed -i '1i auth sufficient pam_fprintd.so' /etc/pam.d/sudo
fi
# Add fingerprint authentication as an option for hyprpolkitagent
if [ ! -f /etc/pam.d/polkit-1 ] || ! grep -q pam_fprintd.so /etc/pam.d/polkit-1; then
sudo tee /etc/pam.d/polkit-1 >/dev/null <<'EOF'
auth required pam_unix.so
auth optional pam_fprintd.so
account required pam_unix.so
password required pam_unix.so
session required pam_unix.so
EOF
fi
# Enroll the first finger
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 $USER
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
fi

View File

@ -1,25 +0,0 @@
#!/bin/bash
# Power menu for Omarchy
# Provides power off, restart, and sleep options
# Function to show power menu. The first characters are invisible sort keys.
show_power_menu() {
local menu_options="\u200B Lock
\u200C󰤄 Suspend
\u200D Relaunch
\u2060󰜉 Restart
\u2063󰐥 Shutdown"
local selection=$(echo -e "$menu_options" | wofi --show dmenu --prompt "Power Options" --width 150 --height 195 -O alphabetical --style ~/.local/share/omarchy/default/wofi/select.css)
case "$selection" in
*Lock*) hyprlock ;;
*Suspend*) systemctl suspend ;;
*Relaunch*) hyprctl dispatch exit ;;
*Restart*) systemctl reboot ;;
*Shutdown*) systemctl poweroff ;;
esac
}
# Main execution
show_power_menu

View File

@ -1,6 +0,0 @@
#!/bin/bash
if gum confirm "Refresh Plymouth theme? This will replace your current startup screen with Omarchy defaults."; then
sudo cp ~/.local/share/omarchy/default/plymouth/* /usr/share/plymouth/themes/omarchy/
sudo plymouth-set-default-theme -R omarchy
fi

View File

@ -1,11 +0,0 @@
#!/bin/bash
if gum confirm "Refresh Waybar config? This will replace your current Waybar settings with Omarchy defaults."; then
# Overwrite local waybar settings with the latest in Omarchy
cp -f ~/.local/share/omarchy/config/waybar/config ~/.config/waybar/ 2>/dev/null
cp -f ~/.local/share/omarchy/config/waybar/style.css ~/.config/waybar/ 2>/dev/null
# Restart waybar
pkill waybar &>/dev/null
setsid waybar &>/dev/null &
fi

View File

@ -1,51 +0,0 @@
#!/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' "$USER_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 --style=\"$HOME/.local/share/omarchy/default/wofi/search.css\""

View File

@ -1,9 +0,0 @@
#!/usr/bin/env bash
if pgrep -x hypridle > /dev/null; then
pkill -x hypridle
notify-send "Stop locking computer when idle"
else
setsid hypridle &> /dev/null &
notify-send "Now locking computer when idle"
fi

View File

@ -19,13 +19,10 @@ for file in migrations/*.sh; do
migrate_at="${filename%.sh}" migrate_at="${filename%.sh}"
if [ $migrate_at -gt $last_updated_at ]; then if [ $migrate_at -gt $last_updated_at ]; then
echo -e "\e[32m\nRunning migration ($migrate_at)\e[0m" echo "Running migration ($migrate_at)"
source $file source $file
fi fi
done done
# Back to where we came from # Back to where we came from
cd - >/dev/null cd - >/dev/null
echo -e "\e[32m\nUpdating system packages\e[0m"
yay -Syu

View File

@ -16,13 +16,5 @@ echo -e "\nCloning Omarchy..."
rm -rf ~/.local/share/omarchy/ rm -rf ~/.local/share/omarchy/
git clone https://github.com/basecamp/omarchy.git ~/.local/share/omarchy >/dev/null 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..." echo -e "\nInstallation starting..."
source ~/.local/share/omarchy/install.sh source ~/.local/share/omarchy/install.sh

27
config/ghostty/config Normal file
View File

@ -0,0 +1,27 @@
# Font configuration
font-family = CaskaydiaMono Nerd Font
font-size = 9
adjust-cell-height=7%
# Window settings
window-padding-x = 14
window-padding-y = 14
window-decoration = false
background-opacity = 0.98
# Window behavior
confirm-close-surface=false
resize-overlay = never
# Cursor stlying
cursor-style = "block"
cursor-style-blink = false
# Terminal settings
term = xterm-256color
# Keybindings
keybind = f11=toggle_fullscreen
# FIXME: Will need to change this theme out in a symlink
theme = "tokyonight"

View File

@ -25,44 +25,21 @@ source = ~/.config/omarchy/current/theme/hyprland.conf
# exec-once = dropbox-cli start # exec-once = dropbox-cli start
# Extra env variables # Extra env variables
# env = MY_GLOBAL_ENV,setting env = GDK_SCALE,2 # Change to 1 if on a 1x display
# Extra bindings (overwrite existing binding with: unbind = SUPER, O)
# Extra bindings
bind = SUPER, A, exec, $webapp="https://chatgpt.com" bind = SUPER, A, exec, $webapp="https://chatgpt.com"
bind = SUPER SHIFT, A, exec, $webapp="https://grok.com" bind = SUPER SHIFT, A, exec, $webapp="https://grok.com"
bind = SUPER, C, exec, $webapp="https://app.hey.com/calendar/weeks/" bind = SUPER, C, exec, $webapp="https://app.hey.com/calendar/weeks/"
bind = SUPER, E, exec, $webapp="https://app.hey.com" bind = SUPER, E, exec, $webapp="https://app.hey.com"
bind = SUPER, Y, exec, $webapp="https://youtube.com/" bind = SUPER, Y, exec, $webapp="https://youtube.com/"
bind = SUPER SHIFT, G, exec, $webapp="https://web.whatsapp.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, X, exec, $webapp="https://x.com/"
bind = SUPER SHIFT, X, exec, $webapp="https://x.com/compose/post" bind = SUPER SHIFT, X, exec, $webapp="https://x.com/compose/post"
# Control your input devices # Use multiple keyboard layouts and switch between them with Alt + Space
# See https://wiki.hypr.land/Configuring/Variables/#input # input {
input { # kb_layout = us,dk
# Use multiple keyboard layouts and switch between them with Alt + Space # kb_options = compose:caps,grp:alt_space_toggle
# kb_layout = us,dk # }
# kb_options = compose:caps,grp:alt_space_toggle
# Change speed of keyboard repeat
repeat_rate = 40
repeat_delay = 600
# Increase sensitity for mouse/trackpack (default: 0)
# sensitivity = 0.35
touchpad {
# Use natural (inverse) scrolling
# natural_scroll = true
# Use two-finger clicks for right-click instead of lower-right corner
# clickfinger_behavior = true
# Control the speed of your scrolling
scroll_factor = 0.4
}
}
# Scroll faster in the terminal
windowrule = scrolltouchpad 1.5, class:Alacritty

View File

@ -32,7 +32,7 @@ input-field {
font_color = rgba(205,214,244,1.0) font_color = rgba(205,214,244,1.0)
placeholder_color = rgba(205,214,244,0.6) placeholder_color = rgba(205,214,244,0.6)
placeholder_text = Enter Password 󰈷  placeholder_text = Enter Password
check_color = rgba(68, 157, 171, 1.0) check_color = rgba(68, 157, 171, 1.0)
fail_text = Wrong fail_text = Wrong
@ -40,7 +40,3 @@ input-field {
shadow_passes = 0 shadow_passes = 0
fade_on_empty = false fade_on_empty = false
} }
auth {
fingerprint:enabled = true
}

View File

@ -1,16 +1,8 @@
# See https://wiki.hyprland.org/Configuring/Monitors/ # See https://wiki.hyprland.org/Configuring/Monitors/
# Change to 1 if on a 1x display (then change last "auto" to 1 in monitor=)
# Change to 1.75 for fractional scaling
env = GDK_SCALE,2
# Use single default monitor (see all monitors with: hyprctl monitors) # Use single default monitor (see all monitors with: hyprctl monitors)
# Format: monitor = [port], resolution, position, scale
monitor=,preferred,auto,auto monitor=,preferred,auto,auto
# Exmaple for fractional scaling that works well with GDK_SCALE,1.75
# monitor=,preferred,auto,1.666667
# Example for Framework 13 w/ 6K XDR Apple display # Example for Framework 13 w/ 6K XDR Apple display
# monitor = DP-5, 6016x3384@60.00, auto, 2 # monitor = DP-5, 6016x3384@60.00, auto, 2
# monitor = eDP-1, 2880x1920@120.00, auto, 2 # monitor = eDP-1, 2880x1920@120.00, auto, 2

View File

@ -10,10 +10,12 @@
"clock" "clock"
], ],
"modules-right": [ "modules-right": [
"custom/dropbox",
"bluetooth", "bluetooth",
"network", "network",
"pulseaudio", "pulseaudio",
"cpu", "cpu",
"power-profiles-daemon",
"battery" "battery"
], ],
"hyprland/workspaces": { "hyprland/workspaces": {
@ -61,7 +63,7 @@
"tooltip-format-disconnected": "Disconnected", "tooltip-format-disconnected": "Disconnected",
"interval": 3, "interval": 3,
"nospacing": 1, "nospacing": 1,
"on-click": "alacritty --class=Impala -e impala" "on-click": "alacritty -e iwctl"
}, },
"battery": { "battery": {
"format": "{capacity}% {icon}", "format": "{capacity}% {icon}",
@ -100,5 +102,24 @@
"tooltip-format": "Playing at {volume}%", "tooltip-format": "Playing at {volume}%",
"on-click-right": "pamixer -t", "on-click-right": "pamixer -t",
"ignored-sinks": ["Easy Effects Sink"] "ignored-sinks": ["Easy Effects Sink"]
},
"power-profiles-daemon": {
"format": "{icon}",
"tooltip-format": "Power profile: {profile}",
"tooltip": true,
"format-icons": {
"power-saver": "󰡳",
"balanced": "󰊚",
"performance": "󰡴"
}
},
"custom/dropbox": {
"format": "",
"on-click": "nautilus ~/Dropbox",
"exec": "dropbox-cli status",
"return-type": "text",
"interval": 5,
"tooltip": true,
"tooltip-format": "{}"
} }
} }

View File

@ -18,12 +18,12 @@
#custom-dropbox, #custom-dropbox,
#cpu, #cpu,
#power-profiles-daemon,
#battery, #battery,
#network, #network,
#bluetooth, #bluetooth,
#pulseaudio, #pulseaudio,
#clock, #clock {
#custom-power-menu {
min-width: 12px; min-width: 12px;
margin-right: 13px; margin-right: 13px;
} }

View File

@ -1,65 +0,0 @@
@define-color selected-text #7dcfff;
@define-color text #cfc9c2;
@define-color base #1a1b26;
* {
font-family: 'CaskaydiaMono Nerd Font', monospace;
font-size: 18px;
}
window {
margin: 0px;
padding: 20px;
background-color: @base;
opacity: 0.95;
}
#inner-box {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#outer-box {
margin: 0;
padding: 20px;
border: none;
background-color: @base;
}
#scroll {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#input {
display: none;
opacity: 0;
margin-top: -200px;
}
#text {
margin: 5px;
border: none;
color: @text;
}
#entry {
background-color: @base;
}
#entry:selected {
outline: none;
border: none;
}
#entry:selected #text {
color: @selected-text;
}
#entry image {
-gtk-icon-transform: scale(0.7);
}

View File

@ -33,6 +33,3 @@ alias r='rails'
alias gcm='git commit -m' alias gcm='git commit -m'
alias gcam='git commit -a -m' alias gcam='git commit -a -m'
alias gcad='git commit -a --amend' 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"

View File

@ -71,3 +71,6 @@ refresh-xcompose() {
pkill fcitx5 pkill fcitx5
setsid fcitx5 &>/dev/null & 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'

View File

@ -5,9 +5,7 @@ HISTSIZE=32768
HISTFILESIZE="${HISTSIZE}" HISTFILESIZE="${HISTSIZE}"
# Autocompletion # Autocompletion
if [[ ! -v BASH_COMPLETION_VERSINFO && -f /usr/share/bash-completion/bash_completion ]]; then # source /usr/share/bash-completion/bash_completion
source /usr/share/bash-completion/bash_completion
fi
# Set complete path # Set complete path
export PATH="./bin:$HOME/.local/bin:$HOME/.local/share/omarchy/bin:$PATH" export PATH="./bin:$HOME/.local/bin:$HOME/.local/share/omarchy/bin:$PATH"

View File

@ -1,4 +1,4 @@
exec-once = hypridle & mako & waybar & fcitx5 exec-once = hypridle & mako & waybar & fcitx5
exec-once = swaybg -i ~/.config/omarchy/current/background -m fill exec-once = swaybg -i ~/.config/omarchy/current/background -m fill
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 exec-once = systemctl --user start hyprpolkitagent
exec-once = wl-clip-persist --clipboard regular exec-once = wl-clip-persist --clipboard regular & clipse -listen

View File

@ -10,25 +10,19 @@ bind = SUPER, G, exec, $messenger
bind = SUPER, O, exec, obsidian -disable-gpu bind = SUPER, O, exec, obsidian -disable-gpu
bind = SUPER, slash, exec, $passwordManager bind = SUPER, slash, exec, $passwordManager
bind = SUPER, space, exec, pkill wofi || wofi --show drun --sort-order=alphabetical --style="$HOME/.local/share/omarchy/default/wofi/search.css" bind = SUPER, space, exec, wofi --show drun --sort-order=alphabetical
bind = SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar bind = SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar
bind = SUPER CTRL, SPACE, exec, ~/.local/share/omarchy/bin/swaybg-next 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 SHIFT CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-next
bind = SUPER, K, exec, ~/.local/share/omarchy/bin/omarchy-show-keybindings
# Notifications
bind = SUPER, comma, exec, makoctl dismiss
bind = SUPER SHIFT, comma, exec, makoctl dismiss --all
bind = SUPER CTRL, comma, exec, makoctl mode -t do-not-disturb && makoctl mode | grep -q 'do-not-disturb' && notify-send "Silenced notifications" || notify-send "Enabled notifications"
bind = SUPER, W, killactive, bind = SUPER, W, killactive,
# Power menu controls lock, suspend, relaunch, restart, shutdown # End active session
bind = SUPER, ESCAPE, exec, ~/.local/share/omarchy/bin/omarchy-power-menu bind = SUPER, ESCAPE, exec, hyprlock
bind = SUPER SHIFT, ESCAPE, exec, systemctl suspend
# Toggle idling bind = SUPER ALT, ESCAPE, exit,
bind = SUPER CTRL, I, exec, ~/.local/share/omarchy/bin/omarchy-toggle-idle bind = SUPER CTRL, ESCAPE, exec, reboot
bind = SUPER SHIFT CTRL, ESCAPE, exec, systemctl poweroff
# Control tiling # Control tiling
bind = SUPER, J, togglesplit, # dwindle bind = SUPER, J, togglesplit, # dwindle
@ -42,28 +36,28 @@ bind = SUPER, up, movefocus, u
bind = SUPER, down, movefocus, d bind = SUPER, down, movefocus, d
# Switch workspaces with mainMod + [0-9] # Switch workspaces with mainMod + [0-9]
bind = SUPER, code:10, workspace, 1 bind = SUPER, 1, workspace, 1
bind = SUPER, code:11, workspace, 2 bind = SUPER, 2, workspace, 2
bind = SUPER, code:12, workspace, 3 bind = SUPER, 3, workspace, 3
bind = SUPER, code:13, workspace, 4 bind = SUPER, 4, workspace, 4
bind = SUPER, code:14, workspace, 5 bind = SUPER, 5, workspace, 5
bind = SUPER, code:15, workspace, 6 bind = SUPER, 6, workspace, 6
bind = SUPER, code:16, workspace, 7 bind = SUPER, 7, workspace, 7
bind = SUPER, code:17, workspace, 8 bind = SUPER, 8, workspace, 8
bind = SUPER, code:18, workspace, 9 bind = SUPER, 9, workspace, 9
bind = SUPER, code:19, workspace, 10 bind = SUPER, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9] # Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = SUPER SHIFT, code:10, movetoworkspace, 1 bind = SUPER SHIFT, 1, movetoworkspace, 1
bind = SUPER SHIFT, code:11, movetoworkspace, 2 bind = SUPER SHIFT, 2, movetoworkspace, 2
bind = SUPER SHIFT, code:12, movetoworkspace, 3 bind = SUPER SHIFT, 3, movetoworkspace, 3
bind = SUPER SHIFT, code:13, movetoworkspace, 4 bind = SUPER SHIFT, 4, movetoworkspace, 4
bind = SUPER SHIFT, code:14, movetoworkspace, 5 bind = SUPER SHIFT, 5, movetoworkspace, 5
bind = SUPER SHIFT, code:15, movetoworkspace, 6 bind = SUPER SHIFT, 6, movetoworkspace, 6
bind = SUPER SHIFT, code:16, movetoworkspace, 7 bind = SUPER SHIFT, 7, movetoworkspace, 7
bind = SUPER SHIFT, code:17, movetoworkspace, 8 bind = SUPER SHIFT, 8, movetoworkspace, 8
bind = SUPER SHIFT, code:18, movetoworkspace, 9 bind = SUPER SHIFT, 9, movetoworkspace, 9
bind = SUPER SHIFT, code:19, movetoworkspace, 10 bind = SUPER SHIFT, 0, movetoworkspace, 10
# Swap active window with the one next to it with mainMod + SHIFT + arrow keys # Swap active window with the one next to it with mainMod + SHIFT + arrow keys
bind = SUPER SHIFT, left, swapwindow, l bind = SUPER SHIFT, left, swapwindow, l
@ -111,3 +105,6 @@ bind = CTRL, PRINT, exec, hyprshot -m output
# Color picker # Color picker
bind = SUPER, PRINT, exec, hyprpicker -a bind = SUPER, PRINT, exec, hyprpicker -a
# Clipse
bind = CTRL SUPER, V, exec, $terminal --class clipse -e clipse

View File

@ -4,9 +4,8 @@ windowrule = suppressevent maximize, class:.*
# Force chromium into a tile to deal with --app bug # Force chromium into a tile to deal with --app bug
windowrule = tile, class:^(Chromium)$ windowrule = tile, class:^(Chromium)$
# Float sound, bluetooth, and wifi settings # Float sound and bluetooth settings
windowrule = float, class:^(org.pulseaudio.pavucontrol|blueberry.py|Impala)$ windowrule = float, class:^(org.pulseaudio.pavucontrol|blueberry.py)$
windowrule = size 800 600, class:^(org.pulseaudio.pavucontrol|blueberry.py|Impala)$
# Float Steam, fullscreen RetroArch # Float Steam, fullscreen RetroArch
windowrule = float, class:^(steam)$ windowrule = float, class:^(steam)$
@ -16,7 +15,7 @@ windowrule = fullscreen, class:^(com.libretro.RetroArch)$
windowrule = opacity 0.97 0.9, class:.* windowrule = opacity 0.97 0.9, class:.*
windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable)$ 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, 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:^(zoom|vlc|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta)$
windowrule = opacity 1 1, class:^(com.libretro.RetroArch|steam)$ windowrule = opacity 1 1, class:^(com.libretro.RetroArch|steam)$
# Fix some dragging issues with XWayland # Fix some dragging issues with XWayland
@ -25,6 +24,7 @@ windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned
# Proper background blur for wofi # Proper background blur for wofi
layerrule = blur,wofi layerrule = blur,wofi
# Float and cneter file pickers # Float in the middle for clipse clipboard manager
windowrule = float, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?) windowrule = float, class:(clipse)
windowrule = center, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?) windowrule = size 622 652, class:(clipse)
windowrule = stayfocused, class:(clipse)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 694 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -1,9 +0,0 @@
[Plymouth Theme]
Name=Omarchy
Description=Omarchy splash screen.
ModuleName=script
[script]
ImageDir=/usr/share/plymouth/themes/omarchy
ScriptFile=/usr/share/plymouth/themes/omarchy/omarchy.script
ConsoleLogBackgroundColor=0x1a1b26

View File

@ -1,238 +0,0 @@
# Omarchy Plymouth Theme Script
Window.SetBackgroundTopColor(0.101, 0.105, 0.149);
Window.SetBackgroundBottomColor(0.101, 0.105, 0.149);
logo.image = Image("logo.png");
logo.sprite = Sprite(logo.image);
logo.sprite.SetX (Window.GetX() + Window.GetWidth() / 2 - logo.image.GetWidth() / 2);
logo.sprite.SetY (Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2);
logo.sprite.SetOpacity (1);
# Use these to adjust the progress bar timing
global.fake_progress_limit = 0.7; # Target percentage for fake progress (0.0 to 1.0)
global.fake_progress_duration = 15.0; # Duration in seconds to reach limit
# Progress bar animation variables
global.fake_progress = 0.0;
global.real_progress = 0.0;
global.fake_progress_active = 0; # 0 / 1 boolean
global.animation_frame = 0;
global.fake_progress_start_time = 0; # Track when fake progress started
global.password_shown = 0; # Track if password dialog has been shown
fun refresh_callback ()
{
global.animation_frame++;
# Animate fake progress to limit over time with easing
if (global.fake_progress_active == 1)
{
# Calculate elapsed time since start
elapsed_time = global.animation_frame / 50.0; # Convert frames to seconds (50 FPS)
# Calculate linear progress ratio (0 to 1) based on time
time_ratio = elapsed_time / global.fake_progress_duration;
if (time_ratio > 1.0)
time_ratio = 1.0;
# Apply easing curve: ease-out quadratic
# Formula: 1 - (1 - x)^2
eased_ratio = 1 - ((1 - time_ratio) * (1 - time_ratio));
# Calculate fake progress based on eased ratio
global.fake_progress = eased_ratio * global.fake_progress_limit;
# Update progress bar with fake progress
update_progress_bar(global.fake_progress);
}
}
Plymouth.SetRefreshFunction (refresh_callback);
#----------------------------------------- Helper Functions --------------------------------
fun update_progress_bar(progress)
{
width = Math.Int(progress_bar.original_image.GetWidth() * progress);
if (width < 1) width = 1; # Ensure minimum width of 1 pixel
progress_bar.image = progress_bar.original_image.Scale(width, progress_bar.original_image.GetHeight());
progress_bar.sprite.SetImage(progress_bar.image);
}
fun show_progress_bar()
{
progress_box.sprite.SetOpacity(1);
progress_bar.sprite.SetOpacity(1);
}
fun hide_progress_bar()
{
progress_box.sprite.SetOpacity(0);
progress_bar.sprite.SetOpacity(0);
}
fun show_password_dialog()
{
lock.sprite.SetOpacity(1);
entry.sprite.SetOpacity(1);
}
fun hide_password_dialog()
{
lock.sprite.SetOpacity(0);
entry.sprite.SetOpacity(0);
for (index = 0; bullet.sprites[index]; index++)
bullet.sprites[index].SetOpacity(0);
}
fun start_fake_progress()
{
global.fake_progress = 0.0;
global.real_progress = 0.0;
global.fake_progress_active = 1;
global.animation_frame = 0;
update_progress_bar(0.0);
}
fun stop_fake_progress()
{
global.fake_progress_active = 0;
}
#----------------------------------------- Dialogue --------------------------------
lock.image = Image("lock.png");
entry.image = Image("entry.png");
bullet.image = Image("bullet.png");
entry.sprite = Sprite(entry.image);
entry.x = Window.GetX() + Window.GetWidth()/2 - entry.image.GetWidth() / 2;
entry.y = logo.sprite.GetY() + logo.image.GetHeight() + 40;
entry.sprite.SetPosition(entry.x, entry.y, 10001);
entry.sprite.SetOpacity(0);
# Scale lock to be slightly shorter than entry field height
# Original lock is 84x96, entry height determines scale
lock_height = entry.image.GetHeight() * 0.8;
lock_scale = lock_height / 96;
lock_width = 84 * lock_scale;
scaled_lock = lock.image.Scale(lock_width, lock_height);
lock.sprite = Sprite(scaled_lock);
lock.x = entry.x - lock_width - 15;
lock.y = entry.y + entry.image.GetHeight()/2 - lock_height/2;
lock.sprite.SetPosition(lock.x, lock.y, 10001);
lock.sprite.SetOpacity(0);
# Bullet array
bullet.sprites = [];
fun display_normal_callback ()
{
hide_password_dialog();
# Get current mode
mode = Plymouth.GetMode();
# Only show progress bar for boot and resume modes
if ((mode == "boot" || mode == "resume") && global.password_shown == 1)
{
show_progress_bar();
start_fake_progress();
}
}
fun display_password_callback (prompt, bullets)
{
global.password_shown = 1; # Mark that password dialog has been shown
stop_fake_progress();
hide_progress_bar();
show_password_dialog();
# Clear all bullets first
for (index = 0; bullet.sprites[index]; index++)
bullet.sprites[index].SetOpacity(0);
# Create and show bullets for current password
for (index = 0; index < bullets; index++)
{
if (!bullet.sprites[index])
{
# Scale bullet image to 7x7 pixels
scaled_bullet = bullet.image.Scale(7, 7);
bullet.sprites[index] = Sprite(scaled_bullet);
bullet.x = entry.x + 20 + index * (7 + 5);
bullet.y = entry.y + entry.image.GetHeight() / 2 - 3.5;
bullet.sprites[index].SetPosition(bullet.x, bullet.y, 10002);
}
bullet.sprites[index].SetOpacity(1);
}
}
Plymouth.SetDisplayNormalFunction(display_normal_callback);
Plymouth.SetDisplayPasswordFunction(display_password_callback);
#----------------------------------------- Progress Bar --------------------------------
progress_box.image = Image("progress_box.png");
progress_box.sprite = Sprite(progress_box.image);
progress_box.x = Window.GetX() + Window.GetWidth() / 2 - progress_box.image.GetWidth() / 2;
progress_box.y = entry.y + entry.image.GetHeight() / 2 - progress_box.image.GetHeight() / 2;
progress_box.sprite.SetPosition(progress_box.x, progress_box.y, 0);
progress_box.sprite.SetOpacity(0);
progress_bar.original_image = Image("progress_bar.png");
progress_bar.sprite = Sprite();
progress_bar.image = progress_bar.original_image.Scale(1, progress_bar.original_image.GetHeight());
progress_bar.x = Window.GetX() + Window.GetWidth() / 2 - progress_bar.original_image.GetWidth() / 2;
progress_bar.y = progress_box.y + (progress_box.image.GetHeight() - progress_bar.original_image.GetHeight()) / 2;
progress_bar.sprite.SetPosition(progress_bar.x, progress_bar.y, 1);
progress_bar.sprite.SetOpacity(0);
fun progress_callback (duration, progress)
{
global.real_progress = progress;
# If real progress is above limit, stop fake progress and use real progress
if (progress > global.fake_progress_limit)
{
stop_fake_progress();
update_progress_bar(progress);
}
}
Plymouth.SetBootProgressFunction(progress_callback);
#----------------------------------------- Quit --------------------------------
fun quit_callback ()
{
logo.sprite.SetOpacity (1);
}
Plymouth.SetQuitFunction(quit_callback);
#----------------------------------------- Message --------------------------------
message_sprite = Sprite();
message_sprite.SetPosition(10, 10, 10000);
fun display_message_callback (text)
{
my_image = Image.Text(text, 1, 1, 1);
message_sprite.SetImage(my_image);
}
fun hide_message_callback (text)
{
message_sprite.SetOpacity(0);
}
Plymouth.SetDisplayMessageFunction (display_message_callback);
Plymouth.SetHideMessageFunction (hide_message_callback);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 314 B

View File

@ -1,72 +0,0 @@
@import ".config/omarchy/current/theme/wofi.css";
* {
font-family: 'CaskaydiaMono Nerd Font', monospace;
font-size: 18px;
}
window {
margin: 0px;
padding: 20px;
background-color: @base;
opacity: 0.95;
}
#inner-box {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#outer-box {
margin: 0;
padding: 20px;
border: none;
background-color: @base;
border: 2px solid @border;
}
#scroll {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#input {
margin: 0;
padding: 10px;
border: none;
background-color: @base;
color: @text;
}
#input:focus {
outline: none;
box-shadow: none;
border: none;
}
#text {
margin: 5px;
border: none;
color: @text;
}
#entry {
background-color: @base;
}
#entry:selected {
outline: none;
border: none;
}
#entry:selected #text {
color: @selected-text;
}
#entry image {
-gtk-icon-transform: scale(0.7);
}

View File

@ -1,8 +0,0 @@
@import ".config/omarchy/current/theme/wofi.css";
@import ".local/share/omarchy/default/wofi/search.css";
#input {
display: none;
opacity: 0;
margin-top: -200px;
}

View File

@ -1,14 +1,5 @@
# 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 # Install everything
for f in ~/.local/share/omarchy/install/*.sh; do for f in ~/.local/share/omarchy/install/*.sh; do source "$f"; done
echo -e "\nRunning installer: $f"
source "$f"
done
# Ensure locate is up to date now that everything has been installed # Ensure locate is up to date now that everything has been installed
sudo updatedb sudo updatedb

View File

@ -1,11 +1,9 @@
sudo pacman -S --needed --noconfirm base-devel sudo pacman -S --needed --noconfirm base-devel
if ! command -v yay &>/dev/null; then if ! command -v yay &>/dev/null; then
cd /tmp
git clone https://aur.archlinux.org/yay-bin.git git clone https://aur.archlinux.org/yay-bin.git
cd yay-bin cd yay-bin
makepkg -si --noconfirm makepkg -si --noconfirm
cd -
rm -rf yay-bin
cd ~ cd ~
rm -rf yay-bin
fi fi

View File

@ -1,6 +1,6 @@
yay -S --noconfirm --needed \ yay -S --noconfirm --needed \
wget curl unzip inetutils impala \ wget curl unzip inetutils \
fd eza fzf ripgrep zoxide bat \ fd eza fzf ripgrep zoxide bat \
wl-clipboard fastfetch btop \ wl-clipboard fastfetch btop \
man tldr less whois plocate bash-completion \ man tldr less whois plocate \
alacritty alacritty

View File

@ -1,9 +1,6 @@
# Copy over Omarchy configs # Copy over Omarchy configs
cp -R ~/.local/share/omarchy/config/* ~/.config/ 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 # Use default bashrc from Omarchy
echo "source ~/.local/share/omarchy/default/bash/rc" >~/.bashrc echo "source ~/.local/share/omarchy/default/bash/rc" >~/.bashrc

View File

@ -1,9 +1,8 @@
yay -S --noconfirm --needed \ yay -S --noconfirm --needed \
brightnessctl playerctl pamixer pavucontrol wireplumber \ brightnessctl playerctl pamixer pavucontrol wireplumber \
fcitx5 fcitx5-gtk fcitx5-qt fcitx5-configtool \ fcitx5 fcitx5-gtk fcitx5-qt fcitx5-configtool \
wl-clip-persist \ wl-clip-persist clipse \
nautilus sushi ffmpegthumbnailer gnome-calculator \ nautilus sushi gnome-calculator \
1password-beta 1password-cli gnome-keyring \ 1password-beta 1password-cli \
chromium mpv \ chromium vlc \
evince imv \ evince imv
localsend-bin

View File

@ -3,4 +3,4 @@ yay -S --noconfirm --needed \
imagemagick \ imagemagick \
mariadb-libs postgresql-libs \ mariadb-libs postgresql-libs \
github-cli \ github-cli \
lazygit lazydocker-bin lazygit lazydocker

View File

@ -1,7 +1,6 @@
yay -S --noconfirm --needed docker docker-compose yay -S --noconfirm --needed docker docker-compose
# Limit log size to avoid running out of disk # 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 echo '{"log-driver":"json-file","log-opts":{"max-size":"10m","max-file":"5"}}' | sudo tee /etc/docker/daemon.json
# Start Docker automatically # Start Docker automatically

View File

@ -1,4 +0,0 @@
if [[ ! -f /etc/modprobe.d/hid_apple.conf ]]; then
echo "options hid_apple fnmode=2" | sudo tee /etc/modprobe.d/hid_apple.conf
sudo mkinitcpio -P
fi

View File

@ -1,5 +1,5 @@
yay -S --noconfirm --needed \ yay -S --noconfirm --needed \
hyprland hyprshot hyprpicker hyprlock hypridle polkit-gnome hyprland-qtutils \ hyprland hyprshot hyprpicker hyprlock hypridle hyprpolkitagent hyprland-qtutils \
wofi waybar mako swaybg \ wofi waybar mako swaybg \
xdg-desktop-portal-hyprland xdg-desktop-portal-gtk xdg-desktop-portal-hyprland xdg-desktop-portal-gtk

View File

@ -11,24 +11,19 @@ xdg-mime default imv.desktop image/tiff
# Open PDFs with the Document Viewer # Open PDFs with the Document Viewer
xdg-mime default org.gnome.Evince.desktop application/pdf xdg-mime default org.gnome.Evince.desktop application/pdf
# Use Chromium as the default browser # Open video files with VLC
xdg-settings set default-web-browser chromium.desktop xdg-mime default vlc.desktop video/mp4
xdg-mime default chromium.desktop x-scheme-handler/http xdg-mime default vlc.desktop video/x-msvideo
xdg-mime default chromium.desktop x-scheme-handler/https xdg-mime default vlc.desktop video/x-matroska
xdg-mime default vlc.desktop video/x-flv
# Open video files with mpv xdg-mime default vlc.desktop video/x-ms-wmv
xdg-mime default mpv.desktop video/mp4 xdg-mime default vlc.desktop video/mpeg
xdg-mime default mpv.desktop video/x-msvideo xdg-mime default vlc.desktop video/ogg
xdg-mime default mpv.desktop video/x-matroska xdg-mime default vlc.desktop video/webm
xdg-mime default mpv.desktop video/x-flv xdg-mime default vlc.desktop video/quicktime
xdg-mime default mpv.desktop video/x-ms-wmv xdg-mime default vlc.desktop video/3gpp
xdg-mime default mpv.desktop video/mpeg xdg-mime default vlc.desktop video/3gpp2
xdg-mime default mpv.desktop video/ogg xdg-mime default vlc.desktop video/x-ms-asf
xdg-mime default mpv.desktop video/webm xdg-mime default vlc.desktop video/x-ogm+ogg
xdg-mime default mpv.desktop video/quicktime xdg-mime default vlc.desktop video/x-theora+ogg
xdg-mime default mpv.desktop video/3gpp xdg-mime default vlc.desktop application/ogg
xdg-mime default mpv.desktop video/3gpp2
xdg-mime default mpv.desktop video/x-ms-asf
xdg-mime default mpv.desktop video/x-ogm+ogg
xdg-mime default mpv.desktop video/x-theora+ogg
xdg-mime default mpv.desktop application/ogg

View File

@ -12,7 +12,7 @@
if [ -n "$(lspci | grep -i 'nvidia')" ]; then if [ -n "$(lspci | grep -i 'nvidia')" ]; then
# --- Driver Selection --- # --- Driver Selection ---
# Turing (16xx, 20xx), Ampere (30xx), Ada (40xx), and newer recommend the open-source kernel modules # Turing (16xx, 20xx), Ampere (30xx), Ada (40xx), and newer recommend the open-source kernel modules
if echo "$(lspci | grep -i 'nvidia')" | grep -q -E "RTX [2-9][0-9]|GTX 16"; then if echo "$gpu_info" | grep -q -E "RTX [2-9][0-9]|GTX 16"; then
NVIDIA_DRIVER_PACKAGE="nvidia-open-dkms" NVIDIA_DRIVER_PACKAGE="nvidia-open-dkms"
else else
NVIDIA_DRIVER_PACKAGE="nvidia-dkms" NVIDIA_DRIVER_PACKAGE="nvidia-dkms"

View File

@ -1,121 +0,0 @@
#!/usr/bin/env bash
if ! command -v plymouth &>/dev/null; then
yay -S --noconfirm --needed plymouth
# Skip if plymouth already exists for some reason
# Backup original mkinitcpio.conf just in case
backup_timestamp=$(date +"%Y%m%d%H%M%S")
sudo cp /etc/mkinitcpio.conf "/etc/mkinitcpio.conf.bak.${backup_timestamp}"
# Add plymouth to HOOKS array after 'base udev' or 'base systemd'
if grep "^HOOKS=" /etc/mkinitcpio.conf | grep -q "base systemd"; then
sudo sed -i '/^HOOKS=/s/base systemd/base systemd plymouth/' /etc/mkinitcpio.conf
elif grep "^HOOKS=" /etc/mkinitcpio.conf | grep -q "base udev"; then
sudo sed -i '/^HOOKS=/s/base udev/base udev plymouth/' /etc/mkinitcpio.conf
else
echo "Couldn't add the Plymouth hook"
fi
# Regenerate initramfs
sudo mkinitcpio -P
# Add kernel parameters for Plymouth (systemd-boot only)
if [ -d "/boot/loader/entries" ]; then
echo "Detected systemd-boot"
for entry in /boot/loader/entries/*.conf; do
if [ -f "$entry" ]; then
# Skip fallback entries
if [[ "$(basename "$entry")" == *"fallback"* ]]; then
echo "Skipped: $(basename "$entry") (fallback entry)"
continue
fi
# Skip if splash it already present for some reason
if ! grep -q "splash" "$entry"; then
sudo sed -i '/^options/ s/$/ splash quiet/' "$entry"
else
echo "Skipped: $(basename "$entry") (splash already present)"
fi
fi
done
elif [ -f "/etc/default/grub" ]; then
echo "Detected grub"
# Backup GRUB config before modifying
backup_timestamp=$(date +"%Y%m%d%H%M%S")
sudo cp /etc/default/grub "/etc/default/grub.bak.${backup_timestamp}"
# Check if splash is already in GRUB_CMDLINE_LINUX_DEFAULT
if ! grep -q "GRUB_CMDLINE_LINUX_DEFAULT.*splash" /etc/default/grub; then
# Get current GRUB_CMDLINE_LINUX_DEFAULT value
current_cmdline=$(grep "^GRUB_CMDLINE_LINUX_DEFAULT=" /etc/default/grub | cut -d'"' -f2)
# Add splash and quiet if not present
new_cmdline="$current_cmdline"
if [[ ! "$current_cmdline" =~ splash ]]; then
new_cmdline="$new_cmdline splash"
fi
if [[ ! "$current_cmdline" =~ quiet ]]; then
new_cmdline="$new_cmdline quiet"
fi
# Trim any leading/trailing spaces
new_cmdline=$(echo "$new_cmdline" | xargs)
sudo sed -i "s/^GRUB_CMDLINE_LINUX_DEFAULT=\".*\"/GRUB_CMDLINE_LINUX_DEFAULT=\"$new_cmdline\"/" /etc/default/grub
# Regenerate grub config
sudo grub-mkconfig -o /boot/grub/grub.cfg
else
echo "GRUB already configured with splash kernel parameters"
fi
elif [ -d "/etc/cmdline.d" ]; then
echo "Detected a UKI setup"
# Relying on mkinitcpio to assemble a UKI
# https://wiki.archlinux.org/title/Unified_kernel_image
if ! grep -q splash /etc/cmdline.d/*.conf; then
# Need splash, create the omarchy file
echo "splash" | sudo tee -a /etc/cmdline.d/omarchy.conf
fi
if ! grep -q quiet /etc/cmdline.d/*.conf; then
# Need quiet, create or append the omarchy file
echo "quiet" | sudo tee -a /etc/cmdline.d/omarchy.conf
fi
elif [ -f "/etc/kernel/cmdline" ]; then
# Alternate UKI kernel cmdline location
echo "Detected a UKI setup"
# Backup kernel cmdline config before modifying
backup_timestamp=$(date +"%Y%m%d%H%M%S")
sudo cp /etc/kernel/cmdline "/etc/kernel/cmdline.bak.${backup_timestamp}"
current_cmdline=$(cat /etc/kernel/cmdline)
# Add splash and quiet if not present
new_cmdline="$current_cmdline"
if [[ ! "$current_cmdline" =~ splash ]]; then
new_cmdline="$new_cmdline splash"
fi
if [[ ! "$current_cmdline" =~ quiet ]]; then
new_cmdline="$new_cmdline quiet"
fi
# Trim any leading/trailing spaces
new_cmdline=$(echo "$new_cmdline" | xargs)
# Write new file
echo $new_cmdline | sudo tee /etc/kernel/cmdline
else
echo ""
echo "Neither systemd-boot nor GRUB detected. Please manually add these kernel parameters:"
echo " - splash (to see the graphical splash screen)"
echo " - quiet (for silent boot)"
echo ""
fi
# Copy and set the Plymouth theme
sudo cp -r "$HOME/.local/share/omarchy/default/plymouth" /usr/share/plymouth/themes/omarchy/
sudo plymouth-set-default-theme -R omarchy
fi

View File

@ -4,8 +4,8 @@ yay -S --noconfirm power-profiles-daemon
if ls /sys/class/power_supply/BAT* &>/dev/null; then if ls /sys/class/power_supply/BAT* &>/dev/null; then
# This computer runs on a battery # This computer runs on a battery
powerprofilesctl set balanced || true powerprofilesctl set balanced
else else
# This computer runs on power outlet # This computer runs on power outlet
powerprofilesctl set performance || true powerprofilesctl set performance
fi fi

View File

@ -1,6 +1,10 @@
# Install Ruby using gcc-14 for compatibility if ! command -v ruby &>/dev/null; then
yay -S --noconfirm --needed gcc14 # Install Ruby using gcc-14 for compatibility
mise settings set ruby.ruby_build_opts "CC=gcc-14 CXX=g++-14" 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
# Trust .ruby-version # Trust .ruby-version
mise settings add idiomatic_version_file_enable_tools ruby mise settings add idiomatic_version_file_enable_tools ruby
fi

View File

@ -1,4 +1,4 @@
# Use dark mode for QT apps too (like kdenlive) # Use dark mode for QT apps too (like VLC and kdenlive)
sudo pacman -S --noconfirm kvantum-qt5 sudo pacman -S --noconfirm kvantum-qt5
# Prefer dark mode everything # Prefer dark mode everything

View File

@ -2,7 +2,6 @@ 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 "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 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 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 "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 "YouTube" https://youtube.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/youtube.png
web2app "GitHub" https://github.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/github-light.png web2app "GitHub" https://github.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/github-light.png

View File

@ -1,7 +1,7 @@
yay -S --noconfirm --needed \ yay -S --noconfirm --needed \
signal-desktop spotify dropbox-cli zoom \ signal-desktop spotify dropbox-cli zoom \
obsidian-bin typora libreoffice obs-studio kdenlive \ obsidian typora libreoffice obs-studio kdenlive \
pinta xournalpp pinta xournalpp
# Copy over Omarchy applications # Copy over Omarchy applications
source ~/.local/share/omarchy/bin/omarchy-sync-applications || true source ~/.local/share/omarchy/bin/omarchy-sync-applications

View File

@ -1,8 +1,8 @@
# Turn on bluetooth service so blueberry works out the box # Turn on bluetooth service so blueberry works out the box
echo "Let's turn on Bluetooth service so the controls work"
if systemctl is-enabled --quiet bluetooth.service && systemctl is-active --quiet bluetooth.service; then if systemctl is-enabled --quiet bluetooth.service && systemctl is-active --quiet bluetooth.service; then
# Bluetooth is already enabled, nothing to change # Bluetooth is already enabled, nothing to change
: :
else else
echo "Let's turn on Bluetooth service so the controls work"
sudo systemctl enable --now bluetooth.service sudo systemctl enable --now bluetooth.service
fi fi

View File

@ -1,5 +1,5 @@
echo "Add missing installation of bat (used by the ff alias)"
if ! command -v bat &>/dev/null; then if ! command -v bat &>/dev/null; then
# Add missing installation of bat # Add missing installation of bat
echo "Add missing installation of bat (used by the ff alias)"
yay -S --noconfirm --needed bat yay -S --noconfirm --needed bat
fi fi

View File

@ -1,2 +0,0 @@
echo "Installing missing fd terminal tool for finding files"
yay -S --noconfirm --needed fd

View File

@ -1,21 +0,0 @@
echo "Switching from vlc to mpv for the default video player"
if ! command -v mpv &>/dev/null; then
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
fi

View File

@ -1,5 +0,0 @@
echo "Ensure Docker config is set"
if [[ ! -f /etc/docker/daemon.json ]]; then
sudo mkdir -p /etc/docker
echo '{"log-driver":"json-file","log-opts":{"max-size":"10m","max-file":"5"}}' | sudo tee /etc/docker/daemon.json
fi

View File

@ -1,2 +0,0 @@
echo "Add LocalSend as new default application"
yay -S --noconfirm --needed localsend-bin

View File

@ -1,2 +0,0 @@
echo "Install ffmpegthumbnailer for video thumbnails in the file manager"
yay -S --noconfirm --needed ffmpegthumbnailer

View File

@ -1,2 +0,0 @@
echo "Install bash-completion"
yay -S --noconfirm --needed bash-completion

View File

@ -1,6 +0,0 @@
echo "Install Impala as new wifi selection TUI"
if ! command -v impala &>/dev/null; then
yay -S --noconfirm --needed impala
echo "You need to update the Waybar config to use Impala Wi-Fi selector in top bar."
omarchy-refresh-waybar
fi

View File

@ -1,2 +0,0 @@
echo "Permanently fix F-keys on Apple-mode keyboards (like Lofree Flow84)"
source ~/.local/share/omarchy/install/fix-fkeys.sh

View File

@ -1,9 +0,0 @@
echo "Switching system authentication prompt to dark mode"
if [[ ! -f ~/.config/systemd/user/hyprpolkitagent.service.d/override.conf ]]; then
source ~/.local/share/omarchy/install/hyprpolkitagent.sh
# Reload user systemd and restart service
systemctl --user daemon-reexec
systemctl --user daemon-reload
systemctl --user restart hyprpolkitagent
fi

View File

@ -1,2 +0,0 @@
echo "Adding gnome-keyring to make 1password work with 2FA codes"
yay -S --noconfirm --needed gnome-keyring

View File

@ -1,2 +0,0 @@
echo "Install Plymouth splash screen"
source "$HOME/.local/share/omarchy/install/plymouth.sh"

View File

@ -1,8 +0,0 @@
echo "Switching to polkit-gnome for better fingerprint authentication compatibility"
if ! command -v /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &>/dev/null; then
yay -S --noconfirm --needed polkit-gnome
systemctl --user stop hyprpolkitagent
systemctl --user disable hyprpolkitagent
yay -Rns --noconfirm hyprpolkitagent
setsid /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &
fi

View File

@ -32,7 +32,7 @@ input-field {
font_color = rgba(205,214,244,1.0) font_color = rgba(205,214,244,1.0)
placeholder_color = rgba(205,214,244,0.6) placeholder_color = rgba(205,214,244,0.6)
placeholder_text = Enter Password 󰈷  placeholder_text = Enter Password
check_color = rgba(68, 157, 171, 1.0) check_color = rgba(68, 157, 171, 1.0)
fail_text = Wrong fail_text = Wrong
@ -40,7 +40,3 @@ input-field {
shadow_passes = 0 shadow_passes = 0
fade_on_empty = false fade_on_empty = false
} }
auth {
fingerprint:enabled = true
}

View File

@ -12,9 +12,3 @@ max-icon-size=32
[app-name=Spotify] [app-name=Spotify]
invisible=1 invisible=1
[mode=do-not-disturb]
invisible=true
[mode=do-not-disturb app-name=notify-send]
invisible=false

View File

@ -1,4 +1,73 @@
@define-color selected-text #8caaee; @define-color selected-text #8caaee;
@define-color text #c6d0f5; @define-color text #c6d0f5;
@define-color base #24273a; @define-color base #24273a;
@define-color border #c6d0f5;
* {
font-family: 'CaskaydiaMono Nerd Font', monospace;
font-size: 18px;
}
window {
margin: 0px;
padding: 20px;
background-color: @base;
opacity: 0.95;
}
#inner-box {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#outer-box {
margin: 0;
padding: 20px;
border: none;
background-color: @base;
}
#scroll {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#input {
margin: 0;
padding: 10px;
border: none;
background-color: @base;
color: @text;
}
#input:focus {
outline: none;
box-shadow: none;
border: none;
}
#text {
margin: 5px;
border: none;
color: @text;
}
#entry {
background-color: @base;
}
#entry:selected {
outline: none;
border: none;
}
#entry:selected #text {
color: @selected-text;
}
#entry image {
-gtk-icon-transform: scale(0.7);
}

View File

@ -32,7 +32,7 @@ input-field {
font_color = rgba(211,198,170,1.0) font_color = rgba(211,198,170,1.0)
placeholder_color = rgba(211,198,170,0.6) placeholder_color = rgba(211,198,170,0.6)
placeholder_text = Enter Password 󰈷  placeholder_text = Enter Password
check_color = rgba(131, 192, 146, 1.0) check_color = rgba(131, 192, 146, 1.0)
fail_text = Wrong fail_text = Wrong
@ -40,7 +40,3 @@ input-field {
shadow_passes = 0 shadow_passes = 0
fade_on_empty = false fade_on_empty = false
} }
auth {
fingerprint:enabled = true
}

View File

@ -12,9 +12,3 @@ max-icon-size=32
[app-name=Spotify] [app-name=Spotify]
invisible=1 invisible=1
[mode=do-not-disturb]
invisible=true
[mode=do-not-disturb app-name=notify-send]
invisible=false

View File

@ -1,4 +1,73 @@
@define-color selected-text #dbbc7f; @define-color selected-text #dbbc7f;
@define-color text #d3c6aa; @define-color text #d3c6aa;
@define-color base #2d353b; @define-color base #2d353b;
@define-color border #d3c6aa;
* {
font-family: 'CaskaydiaMono Nerd Font', monospace;
font-size: 18px;
}
window {
margin: 0px;
padding: 20px;
background-color: @base;
opacity: 0.95;
}
#inner-box {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#outer-box {
margin: 0;
padding: 20px;
border: none;
background-color: @base;
}
#scroll {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#input {
margin: 0;
padding: 10px;
border: none;
background-color: @base;
color: @text;
}
#input:focus {
outline: none;
box-shadow: none;
border: none;
}
#text {
margin: 5px;
border: none;
color: @text;
}
#entry {
background-color: @base;
}
#entry:selected {
outline: none;
border: none;
}
#entry:selected #text {
color: @selected-text;
}
#entry image {
-gtk-icon-transform: scale(0.7);
}

View File

@ -32,7 +32,7 @@ input-field {
font_color = rgba(212,190,152,1.0) font_color = rgba(212,190,152,1.0)
placeholder_color = rgba(212,190,152,0.6) placeholder_color = rgba(212,190,152,0.6)
placeholder_text = Enter Password 󰈷  placeholder_text = Enter Password
check_color = rgba(214, 153, 92, 1.0) check_color = rgba(214, 153, 92, 1.0)
fail_text = Wrong fail_text = Wrong
@ -40,7 +40,3 @@ input-field {
shadow_passes = 0 shadow_passes = 0
fade_on_empty = false fade_on_empty = false
} }
auth {
fingerprint:enabled = true
}

View File

@ -12,9 +12,3 @@ max-icon-size=32
[app-name=Spotify] [app-name=Spotify]
invisible=1 invisible=1
[mode=do-not-disturb]
invisible=true
[mode=do-not-disturb app-name=notify-send]
invisible=false

View File

@ -1,4 +1,73 @@
@define-color selected-text #fabd2f; @define-color selected-text #fabd2f;
@define-color text #ebdbb2; @define-color text #ebdbb2;
@define-color base #282828; @define-color base #282828;
@define-color border #ebdbb2;
* {
font-family: 'CaskaydiaMono Nerd Font', monospace;
font-size: 18px;
}
window {
margin: 0px;
padding: 20px;
background-color: @base;
opacity: 0.95;
}
#inner-box {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#outer-box {
margin: 0;
padding: 20px;
border: none;
background-color: @base;
}
#scroll {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#input {
margin: 0;
padding: 10px;
border: none;
background-color: @base;
color: @text;
}
#input:focus {
outline: none;
box-shadow: none;
border: none;
}
#text {
margin: 5px;
border: none;
color: @text;
}
#entry {
background-color: @base;
}
#entry:selected {
outline: none;
border: none;
}
#entry:selected #text {
color: @selected-text;
}
#entry image {
-gtk-icon-transform: scale(0.7);
}

View File

@ -32,7 +32,7 @@ input-field {
font_color = rgba(220,215,186,1.0) font_color = rgba(220,215,186,1.0)
placeholder_color = rgba(220,215,186,0.6) placeholder_color = rgba(220,215,186,0.6)
placeholder_text = Enter Password 󰈷  placeholder_text = Enter Password
check_color = rgba(126, 156, 216, 1.0) check_color = rgba(126, 156, 216, 1.0)
fail_text = Wrong fail_text = Wrong
@ -40,7 +40,3 @@ input-field {
shadow_passes = 0 shadow_passes = 0
fade_on_empty = false fade_on_empty = false
} }
auth {
fingerprint:enabled = true
}

View File

@ -12,9 +12,3 @@ max-icon-size=32
[app-name=Spotify] [app-name=Spotify]
invisible=1 invisible=1
[mode=do-not-disturb]
invisible=true
[mode=do-not-disturb app-name=notify-send]
invisible=false

View File

@ -1,4 +1,73 @@
@define-color selected-text #dca561; @define-color selected-text #dca561;
@define-color text #dcd7ba; @define-color text #dcd7ba;
@define-color base #1f1f28; @define-color base #1f1f28;
@define-color border #dcd7ba;
* {
font-family: 'CaskaydiaMono Nerd Font', monospace;
font-size: 18px;
}
window {
margin: 0px;
padding: 20px;
background-color: @base;
opacity: 0.95;
}
#inner-box {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#outer-box {
margin: 0;
padding: 20px;
border: none;
background-color: @base;
}
#scroll {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#input {
margin: 0;
padding: 10px;
border: none;
background-color: @base;
color: @text;
}
#input:focus {
outline: none;
box-shadow: none;
border: none;
}
#text {
margin: 5px;
border: none;
color: @text;
}
#entry {
background-color: @base;
}
#entry:selected {
outline: none;
border: none;
}
#entry:selected #text {
color: @selected-text;
}
#entry image {
-gtk-icon-transform: scale(0.7);
}

View File

@ -32,7 +32,7 @@ input-field {
font_color = rgba(216,222,233,1.0) font_color = rgba(216,222,233,1.0)
placeholder_color = rgba(216,222,233,0.6) placeholder_color = rgba(216,222,233,0.6)
placeholder_text = Enter Password 󰈷  placeholder_text = Enter Password
check_color = rgba(136, 192, 208, 1.0) check_color = rgba(136, 192, 208, 1.0)
fail_text = Wrong fail_text = Wrong
@ -40,7 +40,3 @@ input-field {
shadow_passes = 0 shadow_passes = 0
fade_on_empty = false fade_on_empty = false
} }
auth {
fingerprint:enabled = true
}

View File

@ -12,9 +12,3 @@ max-icon-size=32
[app-name=Spotify] [app-name=Spotify]
invisible=1 invisible=1
[mode=do-not-disturb]
invisible=true
[mode=do-not-disturb app-name=notify-send]
invisible=false

View File

@ -1,4 +1,73 @@
@define-color selected-text #88C0D0; @define-color selected-text #88C0D0;
@define-color text #D8DEE9; @define-color text #D8DEE9;
@define-color base #2E3440; @define-color base #2E3440;
@define-color border #D8DEE9;
* {
font-family: 'CaskaydiaMono Nerd Font', monospace;
font-size: 18px;
}
window {
margin: 0px;
padding: 20px;
background-color: @base;
opacity: 0.95;
}
#inner-box {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#outer-box {
margin: 0;
padding: 20px;
border: none;
background-color: @base;
}
#scroll {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#input {
margin: 0;
padding: 10px;
border: none;
background-color: @base;
color: @text;
}
#input:focus {
outline: none;
box-shadow: none;
border: none;
}
#text {
margin: 5px;
border: none;
color: @text;
}
#entry {
background-color: @base;
}
#entry:selected {
outline: none;
border: none;
}
#entry:selected #text {
color: @selected-text;
}
#entry image {
-gtk-icon-transform: scale(0.7);
}

View File

@ -32,7 +32,7 @@ input-field {
font_color = rgba(205,214,244,1.0) font_color = rgba(205,214,244,1.0)
placeholder_color = rgba(205,214,244,0.6) placeholder_color = rgba(205,214,244,0.6)
placeholder_text = Enter Password 󰈷  placeholder_text = Enter Password
check_color = rgba(68, 157, 171, 1.0) check_color = rgba(68, 157, 171, 1.0)
fail_text = Wrong fail_text = Wrong
@ -40,7 +40,3 @@ input-field {
shadow_passes = 0 shadow_passes = 0
fade_on_empty = false fade_on_empty = false
} }
auth {
fingerprint:enabled = true
}

View File

@ -12,9 +12,3 @@ max-icon-size=32
[app-name=Spotify] [app-name=Spotify]
invisible=1 invisible=1
[mode=do-not-disturb]
invisible=true
[mode=do-not-disturb app-name=notify-send]
invisible=false

View File

@ -1,4 +1,73 @@
@define-color selected-text #7dcfff; @define-color selected-text #7dcfff;
@define-color text #cfc9c2; @define-color text #cfc9c2;
@define-color base #1a1b26; @define-color base #1a1b26;
@define-color border #33ccff;
* {
font-family: 'CaskaydiaMono Nerd Font', monospace;
font-size: 18px;
}
window {
margin: 0px;
padding: 20px;
background-color: @base;
opacity: 0.95;
}
#inner-box {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#outer-box {
margin: 0;
padding: 20px;
border: none;
background-color: @base;
}
#scroll {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#input {
margin: 0;
padding: 10px;
border: none;
background-color: @base;
color: @text;
}
#input:focus {
outline: none;
box-shadow: none;
border: none;
}
#text {
margin: 5px;
border: none;
color: @text;
}
#entry {
background-color: @base;
}
#entry:selected {
outline: none;
border: none;
}
#entry:selected #text {
color: @selected-text;
}
#entry image {
-gtk-icon-transform: scale(0.7);
}