diff --git a/bin/omarchy-dev-add-migration b/bin/omarchy-dev-add-migration new file mode 100755 index 0000000..bf9ac0d --- /dev/null +++ b/bin/omarchy-dev-add-migration @@ -0,0 +1,6 @@ +#!/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" diff --git a/bin/omarchy-fingerprint-setup b/bin/omarchy-fingerprint-setup index fb98dfa..dd71aaa 100755 --- a/bin/omarchy-fingerprint-setup +++ b/bin/omarchy-fingerprint-setup @@ -1,14 +1,36 @@ #!/bin/bash -yay -S --noconfirm --needed fprint +yay -S --noconfirm --needed fprintd usbutils -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 `whoami` - -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" +if ! lsusb | grep -iq fingerprint; then + echo -e "\e[31m\nNo fingerprint sensor detected.\e[0m" else - echo -e "\e[31m\nSomething went wrong. Maybe try again?\e[0m" + # 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 diff --git a/bin/omarchy-power-menu b/bin/omarchy-power-menu index 83157ba..6c8d6a7 100755 --- a/bin/omarchy-power-menu +++ b/bin/omarchy-power-menu @@ -3,19 +3,18 @@ # Power menu for Omarchy # Provides power off, restart, and sleep options -# Function to show power menu +# Function to show power menu. The first characters are invisible sort keys. show_power_menu() { local menu_options="\u200B Lock -\u200C󰤄 Sleep +\u200C󰤄 Suspend \u200D Relaunch \u2060󰜉 Restart -󰐥\u2063 Shutdown" # These first characters are invisible sort keys - - local selection=$(echo -e "$menu_options" | wofi --show dmenu --prompt "Power Options" --width 200 --height 250 -O alphabetical) +\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 ;; - *Sleep*) systemctl suspend ;; + *Suspend*) systemctl suspend ;; *Relaunch*) hyprctl dispatch exit ;; *Restart*) systemctl reboot ;; *Shutdown*) systemctl poweroff ;; diff --git a/bin/omarchy-refresh-plymouth b/bin/omarchy-refresh-plymouth new file mode 100755 index 0000000..e325974 --- /dev/null +++ b/bin/omarchy-refresh-plymouth @@ -0,0 +1,6 @@ +#!/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 diff --git a/bin/omarchy-refresh-waybar b/bin/omarchy-refresh-waybar index 4193870..1d63341 100755 --- a/bin/omarchy-refresh-waybar +++ b/bin/omarchy-refresh-waybar @@ -1,9 +1,11 @@ #!/bin/bash -# 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 +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 & + # Restart waybar + pkill waybar &>/dev/null + setsid waybar &>/dev/null & +fi diff --git a/bin/omarchy-show-keybindings b/bin/omarchy-show-keybindings index c517eaf..331c39c 100755 --- a/bin/omarchy-show-keybindings +++ b/bin/omarchy-show-keybindings @@ -16,7 +16,7 @@ OMARCHY_BINDINGS_CONF="$HOME/.local/share/omarchy/default/hypr/bindings.conf" # - 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" | +grep -h '^[[:space:]]*bind' "$USER_HYPRLAND_CONF" "$OMARCHY_BINDINGS_CONF" | awk -F, ' { # Strip trailing comments @@ -48,4 +48,4 @@ grep -h '^[[:space:]]*bind' "$HYPRLAND_CONF" "$OMARCHY_BINDINGS_CONF" | 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" + 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\"" diff --git a/bin/omarchy-toggle-idle b/bin/omarchy-toggle-idle new file mode 100755 index 0000000..57a8aac --- /dev/null +++ b/bin/omarchy-toggle-idle @@ -0,0 +1,9 @@ +#!/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 diff --git a/bin/omarchy-update b/bin/omarchy-update index ed102f0..dbf0b64 100755 --- a/bin/omarchy-update +++ b/bin/omarchy-update @@ -19,10 +19,13 @@ for file in migrations/*.sh; do migrate_at="${filename%.sh}" if [ $migrate_at -gt $last_updated_at ]; then - echo "Running migration ($migrate_at)" + echo -e "\e[32m\nRunning migration ($migrate_at)\e[0m" source $file fi done # Back to where we came from cd - >/dev/null + +echo -e "\e[32m\nUpdating system packages\e[0m" +yay -Syu diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf index 80e5431..fe07406 100644 --- a/config/hypr/hyprland.conf +++ b/config/hypr/hyprland.conf @@ -25,9 +25,9 @@ source = ~/.config/omarchy/current/theme/hyprland.conf # exec-once = dropbox-cli start # Extra env variables -env = GDK_SCALE,2 # Change to 1 if on a 1x display +# env = MY_GLOBAL_ENV,setting -# Extra bindings +# Extra bindings (overwrite existing binding with: unbind = SUPER, O) bind = SUPER, A, exec, $webapp="https://chatgpt.com" bind = SUPER SHIFT, A, exec, $webapp="https://grok.com" bind = SUPER, C, exec, $webapp="https://app.hey.com/calendar/weeks/" diff --git a/config/hypr/monitors.conf b/config/hypr/monitors.conf index 4b82fd6..d48ae12 100644 --- a/config/hypr/monitors.conf +++ b/config/hypr/monitors.conf @@ -1,8 +1,16 @@ # 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) +# Format: monitor = [port], resolution, position, scale 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 # monitor = DP-5, 6016x3384@60.00, auto, 2 # monitor = eDP-1, 2880x1920@120.00, auto, 2 diff --git a/config/waybar/config b/config/waybar/config index 8338713..f2585b2 100644 --- a/config/waybar/config +++ b/config/waybar/config @@ -14,8 +14,7 @@ "network", "pulseaudio", "cpu", - "battery", - "custom/power-menu" + "battery" ], "hyprland/workspaces": { "on-click": "activate", @@ -62,21 +61,21 @@ "tooltip-format-disconnected": "Disconnected", "interval": 3, "nospacing": 1, - "on-click": "alacritty -e iwctl" + "on-click": "alacritty --class=Impala -e impala" }, "battery": { "format": "{capacity}% {icon}", "format-discharging": "{icon}", "format-charging": "{icon}", "format-plugged": "", - "format-icons": { - "charging": [ - "󰢜", "󰂆", "󰂇", "󰂈", "󰢝", "󰂉", "󰢞", "󰂊", "󰂋", "󰂅" - ], - "default": [ - "󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹" - ] - }, + "format-icons": { + "charging": [ + "󰢜", "󰂆", "󰂇", "󰂈", "󰢝", "󰂉", "󰢞", "󰂊", "󰂋", "󰂅" + ], + "default": [ + "󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹" + ] + }, "format-full": "Charged ", "tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%", "tooltip-format-charging": "{power:>1.0f}W↑ {capacity}%", @@ -101,10 +100,5 @@ "tooltip-format": "Playing at {volume}%", "on-click-right": "pamixer -t", "ignored-sinks": ["Easy Effects Sink"] - }, - "custom/power-menu": { - "format": "󰐥", - "on-click": "~/.local/share/omarchy/bin/omarchy-power-menu", - "tooltip": false } } diff --git a/config/wofi/omarchy-power-menu.css b/config/wofi/omarchy-power-menu.css new file mode 100644 index 0000000..e6c9790 --- /dev/null +++ b/config/wofi/omarchy-power-menu.css @@ -0,0 +1,65 @@ +@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); +} \ No newline at end of file diff --git a/default/bash/functions b/default/bash/functions index 926742f..cb84c3c 100644 --- a/default/bash/functions +++ b/default/bash/functions @@ -71,6 +71,3 @@ 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' diff --git a/default/hypr/autostart.conf b/default/hypr/autostart.conf index 2009e14..4bc01c3 100644 --- a/default/hypr/autostart.conf +++ b/default/hypr/autostart.conf @@ -1,4 +1,4 @@ exec-once = hypridle & mako & waybar & fcitx5 exec-once = swaybg -i ~/.config/omarchy/current/background -m fill -exec-once = systemctl --user start hyprpolkitagent -exec-once = wl-clip-persist --clipboard regular & clipse -listen +exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 +exec-once = wl-clip-persist --clipboard regular diff --git a/default/hypr/bindings.conf b/default/hypr/bindings.conf index b2f50d5..6f22bc0 100644 --- a/default/hypr/bindings.conf +++ b/default/hypr/bindings.conf @@ -10,7 +10,8 @@ bind = SUPER, G, exec, $messenger bind = SUPER, O, exec, obsidian -disable-gpu bind = SUPER, slash, exec, $passwordManager -bind = SUPER, space, exec, pkill wofi || wofi --show drun --sort-order=alphabetical +bind = SUPER, space, exec, pkill wofi || wofi --show drun --sort-order=alphabetical --style="$HOME/.local/share/omarchy/default/wofi/search.css" + 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 @@ -23,12 +24,11 @@ bind = SUPER CTRL, comma, exec, makoctl mode -t do-not-disturb && makoctl mode | bind = SUPER, W, killactive, -# End active session -bind = SUPER, ESCAPE, exec, hyprlock -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 +# Power menu controls lock, suspend, relaunch, restart, shutdown +bind = SUPER, ESCAPE, exec, ~/.local/share/omarchy/bin/omarchy-power-menu + +# Toggle idling +bind = SUPER CTRL, I, exec, ~/.local/share/omarchy/bin/omarchy-toggle-idle # Control tiling bind = SUPER, J, togglesplit, # dwindle @@ -111,6 +111,3 @@ bind = CTRL, PRINT, exec, hyprshot -m output # Color picker bind = SUPER, PRINT, exec, hyprpicker -a - -# Clipse -bind = CTRL SUPER, V, exec, $terminal --class clipse -e clipse diff --git a/default/hypr/windows.conf b/default/hypr/windows.conf index a0716b5..e353adf 100644 --- a/default/hypr/windows.conf +++ b/default/hypr/windows.conf @@ -4,8 +4,9 @@ windowrule = suppressevent maximize, class:.* # Force chromium into a tile to deal with --app bug windowrule = tile, class:^(Chromium)$ -# Float sound and bluetooth settings -windowrule = float, class:^(org.pulseaudio.pavucontrol|blueberry.py)$ +# Float sound, bluetooth, and wifi settings +windowrule = float, class:^(org.pulseaudio.pavucontrol|blueberry.py|Impala)$ +windowrule = size 800 600, class:^(org.pulseaudio.pavucontrol|blueberry.py|Impala)$ # Float Steam, fullscreen RetroArch windowrule = float, class:^(steam)$ @@ -24,11 +25,6 @@ windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned # Proper background blur for wofi layerrule = blur,wofi -# Float in the middle for clipse clipboard manager -windowrule = float, class:(clipse) -windowrule = size 622 652, class:(clipse) -windowrule = stayfocused, class:(clipse) - # Float and cneter file pickers windowrule = float, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?) windowrule = center, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?) diff --git a/default/plymouth/bullet.png b/default/plymouth/bullet.png new file mode 100644 index 0000000..62249b3 Binary files /dev/null and b/default/plymouth/bullet.png differ diff --git a/default/plymouth/entry.png b/default/plymouth/entry.png new file mode 100644 index 0000000..5c78917 Binary files /dev/null and b/default/plymouth/entry.png differ diff --git a/default/plymouth/lock.png b/default/plymouth/lock.png new file mode 100644 index 0000000..3046de1 Binary files /dev/null and b/default/plymouth/lock.png differ diff --git a/default/plymouth/logo.png b/default/plymouth/logo.png new file mode 100644 index 0000000..e4b2526 Binary files /dev/null and b/default/plymouth/logo.png differ diff --git a/default/plymouth/omarchy.plymouth b/default/plymouth/omarchy.plymouth new file mode 100644 index 0000000..9b45fc3 --- /dev/null +++ b/default/plymouth/omarchy.plymouth @@ -0,0 +1,9 @@ +[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 diff --git a/default/plymouth/omarchy.script b/default/plymouth/omarchy.script new file mode 100644 index 0000000..07b2cd0 --- /dev/null +++ b/default/plymouth/omarchy.script @@ -0,0 +1,238 @@ +# 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); diff --git a/default/plymouth/progress_bar.png b/default/plymouth/progress_bar.png new file mode 100644 index 0000000..dbb9fd7 Binary files /dev/null and b/default/plymouth/progress_bar.png differ diff --git a/default/plymouth/progress_box.png b/default/plymouth/progress_box.png new file mode 100644 index 0000000..6a263f2 Binary files /dev/null and b/default/plymouth/progress_box.png differ diff --git a/default/wofi/search.css b/default/wofi/search.css new file mode 100644 index 0000000..318c916 --- /dev/null +++ b/default/wofi/search.css @@ -0,0 +1,72 @@ +@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); +} diff --git a/default/wofi/select.css b/default/wofi/select.css new file mode 100644 index 0000000..5f255c0 --- /dev/null +++ b/default/wofi/select.css @@ -0,0 +1,8 @@ +@import ".config/omarchy/current/theme/wofi.css"; +@import ".local/share/omarchy/default/wofi/search.css"; + +#input { + display: none; + opacity: 0; + margin-top: -200px; +} diff --git a/install/1-yay.sh b/install/1-yay.sh index adf1978..9913bfa 100644 --- a/install/1-yay.sh +++ b/install/1-yay.sh @@ -1,9 +1,11 @@ sudo pacman -S --needed --noconfirm base-devel if ! command -v yay &>/dev/null; then + cd /tmp git clone https://aur.archlinux.org/yay-bin.git cd yay-bin makepkg -si --noconfirm - cd ~ + cd - rm -rf yay-bin + cd ~ fi diff --git a/install/3-terminal.sh b/install/3-terminal.sh index cb600b5..d45a288 100644 --- a/install/3-terminal.sh +++ b/install/3-terminal.sh @@ -1,6 +1,6 @@ yay -S --noconfirm --needed \ - wget curl unzip inetutils \ + wget curl unzip inetutils impala \ fd eza fzf ripgrep zoxide bat \ wl-clipboard fastfetch btop \ - man tldr less whois plocate \ - alacritty bash-completion + man tldr less whois plocate bash-completion \ + alacritty diff --git a/install/desktop.sh b/install/desktop.sh index a122ad5..91ad2da 100644 --- a/install/desktop.sh +++ b/install/desktop.sh @@ -1,9 +1,9 @@ yay -S --noconfirm --needed \ brightnessctl playerctl pamixer pavucontrol wireplumber \ fcitx5 fcitx5-gtk fcitx5-qt fcitx5-configtool \ - wl-clip-persist clipse-bin \ + wl-clip-persist \ nautilus sushi ffmpegthumbnailer gnome-calculator \ - 1password-beta 1password-cli \ + 1password-beta 1password-cli gnome-keyring \ chromium mpv \ evince imv \ localsend-bin diff --git a/install/fix-fkeys.sh b/install/fix-fkeys.sh new file mode 100644 index 0000000..64f187c --- /dev/null +++ b/install/fix-fkeys.sh @@ -0,0 +1,4 @@ +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 diff --git a/install/hyprlandia.sh b/install/hyprlandia.sh index 4e9b9af..a7e0c3b 100644 --- a/install/hyprlandia.sh +++ b/install/hyprlandia.sh @@ -1,7 +1,7 @@ yay -S --noconfirm --needed \ - hyprland hyprshot hyprpicker hyprlock hypridle hyprpolkitagent hyprland-qtutils \ + hyprland hyprshot hyprpicker hyprlock hypridle polkit-gnome hyprland-qtutils \ wofi waybar mako swaybg \ xdg-desktop-portal-hyprland xdg-desktop-portal-gtk # Start Hyprland on first session -echo "[[ -z \$DISPLAY && \$(tty) == /dev/tty1 ]] && exec Hyprland" >~/.bash_profile \ No newline at end of file +echo "[[ -z \$DISPLAY && \$(tty) == /dev/tty1 ]] && exec Hyprland" >~/.bash_profile diff --git a/install/plymouth.sh b/install/plymouth.sh new file mode 100755 index 0000000..545dca0 --- /dev/null +++ b/install/plymouth.sh @@ -0,0 +1,121 @@ +#!/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 diff --git a/migrations/1751134568.sh b/migrations/1751134568.sh index f1ecd07..14c8f41 100644 --- a/migrations/1751134568.sh +++ b/migrations/1751134568.sh @@ -1,8 +1,8 @@ # 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 # Bluetooth is already enabled, nothing to change : else - echo "Let's turn on Bluetooth service so the controls work" sudo systemctl enable --now bluetooth.service fi diff --git a/migrations/1751135253.sh b/migrations/1751135253.sh index aa0e3ea..677b610 100644 --- a/migrations/1751135253.sh +++ b/migrations/1751135253.sh @@ -1,5 +1,5 @@ +echo "Add missing installation of bat (used by the ff alias)" 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 diff --git a/migrations/1751510848.sh b/migrations/1751510848.sh index 120947b..4a4e93e 100644 --- a/migrations/1751510848.sh +++ b/migrations/1751510848.sh @@ -1,3 +1,2 @@ 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" diff --git a/migrations/1751667620.sh b/migrations/1751667620.sh index 5413a47..227006f 100644 --- a/migrations/1751667620.sh +++ b/migrations/1751667620.sh @@ -1,19 +1,21 @@ 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 +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 diff --git a/migrations/1751669258.sh b/migrations/1751669258.sh index cac622f..fc83f3a 100644 --- a/migrations/1751669258.sh +++ b/migrations/1751669258.sh @@ -1,3 +1,5 @@ -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 +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 diff --git a/migrations/1751887718.sh b/migrations/1751887718.sh new file mode 100644 index 0000000..d62fbdd --- /dev/null +++ b/migrations/1751887718.sh @@ -0,0 +1,6 @@ +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 diff --git a/migrations/1752081088.sh b/migrations/1752081088.sh new file mode 100644 index 0000000..af35ff1 --- /dev/null +++ b/migrations/1752081088.sh @@ -0,0 +1,2 @@ +echo "Permanently fix F-keys on Apple-mode keyboards (like Lofree Flow84)" +source ~/.local/share/omarchy/install/fix-fkeys.sh diff --git a/migrations/1752081300.sh b/migrations/1752081300.sh new file mode 100644 index 0000000..855297d --- /dev/null +++ b/migrations/1752081300.sh @@ -0,0 +1,9 @@ +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 diff --git a/migrations/1752082381.sh b/migrations/1752082381.sh new file mode 100644 index 0000000..eb6df91 --- /dev/null +++ b/migrations/1752082381.sh @@ -0,0 +1,2 @@ +echo "Adding gnome-keyring to make 1password work with 2FA codes" +yay -S --noconfirm --needed gnome-keyring diff --git a/migrations/1752091783.sh b/migrations/1752091783.sh new file mode 100644 index 0000000..9b1f70d --- /dev/null +++ b/migrations/1752091783.sh @@ -0,0 +1,2 @@ +echo "Install Plymouth splash screen" +source "$HOME/.local/share/omarchy/install/plymouth.sh" diff --git a/migrations/1752104271.sh b/migrations/1752104271.sh new file mode 100644 index 0000000..b00e99a --- /dev/null +++ b/migrations/1752104271.sh @@ -0,0 +1,8 @@ +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 diff --git a/themes/catppuccin/wofi.css b/themes/catppuccin/wofi.css index e26765e..7dd3bb5 100644 --- a/themes/catppuccin/wofi.css +++ b/themes/catppuccin/wofi.css @@ -1,73 +1,4 @@ @define-color selected-text #8caaee; @define-color text #c6d0f5; @define-color base #24273a; - -* { - 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); -} +@define-color border #c6d0f5; diff --git a/themes/everforest/wofi.css b/themes/everforest/wofi.css index f5089fb..e4ea073 100644 --- a/themes/everforest/wofi.css +++ b/themes/everforest/wofi.css @@ -1,73 +1,4 @@ @define-color selected-text #dbbc7f; @define-color text #d3c6aa; @define-color base #2d353b; - -* { - 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); -} +@define-color border #d3c6aa; diff --git a/themes/gruvbox/wofi.css b/themes/gruvbox/wofi.css index 99481cf..42d68ef 100644 --- a/themes/gruvbox/wofi.css +++ b/themes/gruvbox/wofi.css @@ -1,73 +1,4 @@ @define-color selected-text #fabd2f; @define-color text #ebdbb2; @define-color base #282828; - -* { - 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); -} +@define-color border #ebdbb2; diff --git a/themes/kanagawa/wofi.css b/themes/kanagawa/wofi.css index 88d64fa..8c45967 100644 --- a/themes/kanagawa/wofi.css +++ b/themes/kanagawa/wofi.css @@ -1,73 +1,4 @@ @define-color selected-text #dca561; @define-color text #dcd7ba; @define-color base #1f1f28; - -* { - 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); -} +@define-color border #dcd7ba; diff --git a/themes/nord/wofi.css b/themes/nord/wofi.css index 4f36df2..17190dd 100644 --- a/themes/nord/wofi.css +++ b/themes/nord/wofi.css @@ -1,73 +1,4 @@ @define-color selected-text #88C0D0; @define-color text #D8DEE9; @define-color base #2E3440; - -* { - 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); -} +@define-color border #D8DEE9; diff --git a/themes/tokyo-night/wofi.css b/themes/tokyo-night/wofi.css index 7b4892a..0c21483 100644 --- a/themes/tokyo-night/wofi.css +++ b/themes/tokyo-night/wofi.css @@ -1,73 +1,4 @@ @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 { - 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); -} +@define-color border #33ccff;