.
This commit is contained in:
commit
fe39117678
73
dunst/dunstrc
Normal file
73
dunst/dunstrc
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
[global]
|
||||||
|
monitor = 0
|
||||||
|
follow = none
|
||||||
|
width = 300
|
||||||
|
height = (0, 145)
|
||||||
|
origin = top-right
|
||||||
|
alignment = "left"
|
||||||
|
vertical_alignment = "center"
|
||||||
|
ellipsize = "middle"
|
||||||
|
offset = (15, 15)
|
||||||
|
padding = 15
|
||||||
|
horizontal_padding = 15
|
||||||
|
text_icon_padding = 15
|
||||||
|
icon_position = "left"
|
||||||
|
min_icon_size = 48
|
||||||
|
max_icon_size = 64
|
||||||
|
progress_bar = true
|
||||||
|
progress_bar_height = 8
|
||||||
|
progress_bar_frame_width = 1
|
||||||
|
progress_bar_min_width = 150
|
||||||
|
progress_bar_max_width = 300
|
||||||
|
separator_height = 2
|
||||||
|
frame_width = 2
|
||||||
|
frame_color = "#313244"
|
||||||
|
separator_color = "frame"
|
||||||
|
corner_radius = 8
|
||||||
|
transparency = 0
|
||||||
|
gap_size = 8
|
||||||
|
line_height = 0
|
||||||
|
notification_limit = 0
|
||||||
|
idle_threshold = 120
|
||||||
|
history_length = 20
|
||||||
|
show_age_threshold = 60
|
||||||
|
markup = "full"
|
||||||
|
font = "monospace 10"
|
||||||
|
format = "<b>%s</b>\n%b: "
|
||||||
|
word_wrap = "yes"
|
||||||
|
sort = "yes"
|
||||||
|
shrink = "no"
|
||||||
|
indicate_hidden = "yes"
|
||||||
|
sticky_history = "yes"
|
||||||
|
ignore_newline = "no"
|
||||||
|
show_indicators = "no"
|
||||||
|
stack_duplicates = true
|
||||||
|
always_run_script = true
|
||||||
|
hide_duplicate_count = false
|
||||||
|
ignore_dbusclose = false
|
||||||
|
force_xwayland = false
|
||||||
|
force_xinerama = false
|
||||||
|
mouse_left_click = "do_action"
|
||||||
|
mouse_middle_click = "close_all"
|
||||||
|
mouse_right_click = "close_current"
|
||||||
|
[experimental]
|
||||||
|
per_monitor_dpi = false
|
||||||
|
|
||||||
|
|
||||||
|
[urgency_low]
|
||||||
|
background = "#1e1e2e"
|
||||||
|
foreground = "#cdd6f4"
|
||||||
|
highlight = "#cba6f7"
|
||||||
|
timeout = 4
|
||||||
|
|
||||||
|
[urgency_normal]
|
||||||
|
background = "#1e1e2e"
|
||||||
|
foreground = "#cdd6f4"
|
||||||
|
highlight = "#cba6f7"
|
||||||
|
timeout = 6
|
||||||
|
|
||||||
|
[urgency_critical]
|
||||||
|
background = "#1e1e2e"
|
||||||
|
foreground = "#cdd6f4"
|
||||||
|
highlight = "#cba6f7"
|
||||||
|
timeout = 0
|
16
ghostty/config
Normal file
16
ghostty/config
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# Config generated by Ghostty Config
|
||||||
|
|
||||||
|
shell-integration = zsh
|
||||||
|
term = xterm-256color
|
||||||
|
custom-shader = ~/.config/ghostty/shaders/bettercrt.glsl
|
||||||
|
custom-shader-animation = true
|
||||||
|
window-decoration = true
|
||||||
|
background-opacity = 0.5
|
||||||
|
theme = catppuccin-mocha
|
||||||
|
cursor-style = block
|
||||||
|
font-size = 14
|
||||||
|
font-thicken = true
|
||||||
|
font-family = "FiraMono Nerd Font"
|
||||||
|
keybind = global:cmd+s=toggle_quick_terminal
|
||||||
|
mouse-hide-while-typing = true
|
||||||
|
macos-icon = xray
|
1
ghostty/shaders
Submodule
1
ghostty/shaders
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit a17573fb254e618f92a75afe80faa31fd5e09d6f
|
31
ghostty/themes/stardust
Normal file
31
ghostty/themes/stardust
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# ------------------------------
|
||||||
|
# stardust ghostty theme
|
||||||
|
# Save this as, for example, "~/.config/ghostty/themes/stardust"
|
||||||
|
# Then set in your Ghostty config: theme = stardust
|
||||||
|
# ------------------------------
|
||||||
|
palette = 0=#18181b
|
||||||
|
palette = 1=#F44747
|
||||||
|
palette = 2=#fcca7c
|
||||||
|
palette = 3=#f7a41d
|
||||||
|
palette = 4=#acd2ac
|
||||||
|
palette = 5=#fcca7c
|
||||||
|
palette = 6=#4EC9B0
|
||||||
|
palette = 7=#dcdccc
|
||||||
|
palette = 8=#2b2b2b
|
||||||
|
palette = 9=#D16969
|
||||||
|
palette = 10=#ffc1c1
|
||||||
|
palette = 11=#fcca7c
|
||||||
|
palette = 12=#fcca7c
|
||||||
|
palette = 13=#C586C0
|
||||||
|
palette = 14=#4EC9B0
|
||||||
|
palette = 15=#ffffff
|
||||||
|
|
||||||
|
background = #18181b
|
||||||
|
foreground = #dcdccc
|
||||||
|
|
||||||
|
cursor-color = #8faf9f
|
||||||
|
cursor-text = #000d18
|
||||||
|
|
||||||
|
selection-background = #5e81ac
|
||||||
|
selection-foreground = #dcdccc
|
||||||
|
|
23
hypr/hypridle.conf
Normal file
23
hypr/hypridle.conf
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
$lock_cmd = pidof hyprlock || hyprlock
|
||||||
|
$suspend_cmd = pidof steam || loginctl suspend # fuck nvidia
|
||||||
|
|
||||||
|
general {
|
||||||
|
lock_cmd = $lock_cmd
|
||||||
|
before_sleep_cmd = loginctl lock-session
|
||||||
|
}
|
||||||
|
|
||||||
|
listener {
|
||||||
|
timeout = 180 # 3mins
|
||||||
|
on-timeout = loginctl lock-session
|
||||||
|
}
|
||||||
|
|
||||||
|
listener {
|
||||||
|
timeout = 240 # 4mins
|
||||||
|
on-timeout = hyprctl dispatch dpms off
|
||||||
|
on-resume = hyprctl dispatch dpms on
|
||||||
|
}
|
||||||
|
|
||||||
|
listener {
|
||||||
|
timeout = 540 # 9mins
|
||||||
|
on-timeout = $suspend_cmd
|
||||||
|
}
|
263
hypr/hyprland.conf
Normal file
263
hypr/hyprland.conf
Normal file
@ -0,0 +1,263 @@
|
|||||||
|
monitor=,1360x768,auto,1,bitdepth,8
|
||||||
|
monitor=,preferred,auto,1,mirror,eDP-1,bitdepth,8
|
||||||
|
xwayland {
|
||||||
|
force_zero_scaling = true
|
||||||
|
}
|
||||||
|
|
||||||
|
# apps
|
||||||
|
$terminal = ghostty
|
||||||
|
$browser = firefox || chromium
|
||||||
|
$fileManager = $terminal --shell-integration=zsh --command="lf"
|
||||||
|
$passwordManager = /usr/bin/keepassxc
|
||||||
|
|
||||||
|
# yes I have Discord virtualised, don't judge me
|
||||||
|
$discord = /home/yu/.local/bin/distrobox-enter -n pkg -- /usr/bin/discord
|
||||||
|
|
||||||
|
# menus and scripts
|
||||||
|
$emojipicker = ~/.config/wofi/scripts/emojis.sh
|
||||||
|
$menu = wofi --style ~/.config/wofi/style/style.css --show drun
|
||||||
|
$powermenu = ~/.config/wofi/scripts/power.sh
|
||||||
|
|
||||||
|
exec-once = $terminal
|
||||||
|
exec-once = pipewire & wireplumber & pipewire-pulse
|
||||||
|
exec-once = waybar & hyprpaper
|
||||||
|
exec-once = [ ! -s ~/.config/mpd/pid ] && mpd
|
||||||
|
exec-once = hyprctl dispatch exec playerctl start
|
||||||
|
exec-once = playerctld daemon
|
||||||
|
exec-once = dunst -conf .config/dunst/dunstrc
|
||||||
|
exec-once = wl-paste --watch cliphist store
|
||||||
|
exec-once = hypridle
|
||||||
|
exec-once = hyprctl setcursor Makise-Kurisu-Cursor 24
|
||||||
|
exec-once = hyprctl hyprpaper reload ,~/Pictures/wallpaper/2246.png # default
|
||||||
|
|
||||||
|
env = HYPRCURSOR_THEME,Makise-Kurisu-Cursor
|
||||||
|
env = HYPRCURSOR_SIZE,24
|
||||||
|
# fix flickering cursor
|
||||||
|
env = LIBVA_DRIVER_NAME,nvidia
|
||||||
|
env = XDG_SESSION_TYPE,wayland
|
||||||
|
env = GBM_BACKEND,nvidia-drm
|
||||||
|
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
|
||||||
|
|
||||||
|
debug {
|
||||||
|
disable_logs = false
|
||||||
|
damage_tracking = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
cursor {
|
||||||
|
inactive_timeout = 0
|
||||||
|
no_hardware_cursors = true
|
||||||
|
}
|
||||||
|
|
||||||
|
render {
|
||||||
|
explicit_sync = 2
|
||||||
|
explicit_sync_kms = 2
|
||||||
|
}
|
||||||
|
|
||||||
|
opengl {
|
||||||
|
nvidia_anti_flicker = 0
|
||||||
|
}
|
||||||
|
# end fix
|
||||||
|
|
||||||
|
general {
|
||||||
|
gaps_in = 6
|
||||||
|
gaps_out = 12
|
||||||
|
border_size = 2
|
||||||
|
col.active_border = rgba(66ccffee) rgba(99ffccff) 45deg
|
||||||
|
col.inactive_border = rgba(444444aa)
|
||||||
|
resize_on_border = false
|
||||||
|
allow_tearing = false
|
||||||
|
layout = dwindle
|
||||||
|
}
|
||||||
|
|
||||||
|
decoration {
|
||||||
|
rounding = 12
|
||||||
|
active_opacity = 0.95;
|
||||||
|
inactive_opacity = 0.8;
|
||||||
|
|
||||||
|
blur {
|
||||||
|
enabled = true
|
||||||
|
xray = false # Disable for softer edges (xray can look harsh)
|
||||||
|
special = true # Apply blur to "special" layers (dialogs, etc.)
|
||||||
|
new_optimizations = true # Keep this for performance
|
||||||
|
size = 10 # Slightly smaller for smoother performance
|
||||||
|
passes = 3 # Fewer passes = less GPU load (but still creamy)
|
||||||
|
brightness = 0.9 # Slightly dim to reduce glare
|
||||||
|
noise = 0.02 # Subtle grain for "film-like" texture
|
||||||
|
contrast = 1.1 # Slight boost for vibrancy
|
||||||
|
popups = true # Blur popups (essential for Aero)
|
||||||
|
popups_ignorealpha = 0.5 # Softer popup transparency
|
||||||
|
# Add these experimental tweaks:
|
||||||
|
vibrancy = 0.2 # If supported (enhances colors under blur)
|
||||||
|
vibrancy_darkness = 0.1 # Prevents oversaturation
|
||||||
|
}
|
||||||
|
|
||||||
|
# Shadow
|
||||||
|
shadow {
|
||||||
|
enabled = true
|
||||||
|
ignore_window = true
|
||||||
|
range = 12
|
||||||
|
offset = 0 2
|
||||||
|
render_power = 3
|
||||||
|
color = rgba(100, 180, 255, 0.6)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Dim
|
||||||
|
dim_inactive = false
|
||||||
|
dim_strength = 0.1
|
||||||
|
dim_special = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
animations {
|
||||||
|
enabled = yes
|
||||||
|
bezier = linear, 0, 0, 1, 1
|
||||||
|
bezier = aero_gentle, 0.25, 0.1, 0.25, 1.0
|
||||||
|
bezier = aero_bounce, 0.5, 1.5, 0.5, 0.9
|
||||||
|
bezier = aero_snap, 0.4, 0, 0.2, 1
|
||||||
|
bezier = aero_menu, 0.1, 1, 0, 1
|
||||||
|
|
||||||
|
animation = windows, 1, 3, aero_bounce, popin 70%
|
||||||
|
animation = windowsIn, 1, 3, aero_gentle, slideup 30%
|
||||||
|
animation = windowsOut, 1, 3, aero_snap, slidedown 30%
|
||||||
|
animation = border, 1, 5, linear
|
||||||
|
|
||||||
|
animation = layersIn, 1, 3, aero_gentle, slideup 20%
|
||||||
|
animation = layersOut, 1, 2, aero_snap, slidedown 20%
|
||||||
|
animation = fadeLayersIn, 1, 2, aero_gentle
|
||||||
|
animation = fadeLayersOut, 1, 1, aero_snap
|
||||||
|
|
||||||
|
animation = workspaces, 1, 5, aero_menu, slidefadevert 15%
|
||||||
|
animation = specialWorkspace, 1, 4, aero_bounce, slidevert
|
||||||
|
|
||||||
|
animation = fade, 1, 3, aero_gentle
|
||||||
|
animation = borderangle, 1, 10, linear, loop
|
||||||
|
}
|
||||||
|
|
||||||
|
dwindle {
|
||||||
|
pseudotile = true
|
||||||
|
preserve_split = true
|
||||||
|
}
|
||||||
|
|
||||||
|
master {
|
||||||
|
new_status = master
|
||||||
|
}
|
||||||
|
|
||||||
|
misc {
|
||||||
|
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||||
|
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
|
||||||
|
vfr = 0
|
||||||
|
|
||||||
|
enable_swallow = true
|
||||||
|
swallow_regex = (allacritty|Alacritty|ghostty|Ghostty)
|
||||||
|
}
|
||||||
|
|
||||||
|
input {
|
||||||
|
kb_layout = us
|
||||||
|
kb_variant = intl
|
||||||
|
kb_options = "deadkeys"
|
||||||
|
|
||||||
|
follow_mouse = 1
|
||||||
|
|
||||||
|
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||||
|
|
||||||
|
touchpad {
|
||||||
|
natural_scroll = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gestures {
|
||||||
|
workspace_swipe = false # this can be fun if I used a laptop
|
||||||
|
}
|
||||||
|
|
||||||
|
# Example per-device config
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
|
||||||
|
# idk???
|
||||||
|
device {
|
||||||
|
name = epic-mouse-v1
|
||||||
|
sensitivity = -0.5
|
||||||
|
}
|
||||||
|
|
||||||
|
# ==== Essentials ====
|
||||||
|
$mainMod = SUPER
|
||||||
|
bind = $mainMod, RETURN, exec, $terminal # Enter to launch terminal (intuitive)
|
||||||
|
bind = $mainMod, Q, killactive # Q = "Quit window" (mnemonic)
|
||||||
|
bind = $mainMod SHIFT, Q, exec, $powermenu # Shift+Q for power menu
|
||||||
|
bind = $mainMod, SPACE, exec, $menu # Spacebar for app launcher (like Spotlight)
|
||||||
|
|
||||||
|
# ==== Apps ====
|
||||||
|
bind = $mainMod, B, exec, $browser # B = Browser
|
||||||
|
bind = $mainMod, E, exec, $fileManager # E = Explorer
|
||||||
|
bind = $mainMod, D, exec, $discord # D = Discord
|
||||||
|
bind = $mainMod, P, exec, $passwordManager # P = Password manager
|
||||||
|
bind = $mainMod, X, exec, $emojipicker # X = eXpression (emoji)
|
||||||
|
|
||||||
|
# ==== Window Management ====
|
||||||
|
bind = $mainMod, F, fullscreen, 1 # F = Fullscreen
|
||||||
|
bind = $mainMod SHIFT, F, fullscreen, 0 # Shift+F = Fake fullscreen
|
||||||
|
bind = $mainMod, V, togglefloating # V = "levitate" window
|
||||||
|
bind = $mainMod, C, centerwindow # C = Center window (new!)
|
||||||
|
bind = $mainMod, M, exit # M = "Murder" Hyprland (emergency)
|
||||||
|
|
||||||
|
# ==== Navigation ====
|
||||||
|
bind = $mainMod, H, movefocus, l # Vim keys for focus
|
||||||
|
bind = $mainMod, J, movefocus, d
|
||||||
|
bind = $mainMod, K, movefocus, u
|
||||||
|
bind = $mainMod, L, movefocus, r
|
||||||
|
|
||||||
|
# ==== Workspaces ====
|
||||||
|
bind = $mainMod, 1-9, workspace, 1-9 # Numbers for workspaces
|
||||||
|
bind = $mainMod, 0, workspace, 10
|
||||||
|
bind = $mainMod SHIFT, 1-9, movetoworkspace, 1-9 # Shift to move windows
|
||||||
|
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
||||||
|
bind = $mainMod, mouse_down, workspace, e+1 # Scroll workspaces
|
||||||
|
bind = $mainMod, mouse_up, workspace, e-1
|
||||||
|
|
||||||
|
# ==== Media/System ====
|
||||||
|
bind = , XF86AudioPlay, exec, playerctl play-pause
|
||||||
|
bind = , XF86AudioNext, exec, playerctl next
|
||||||
|
bind = , XF86AudioPrev, exec, playerctl previous
|
||||||
|
bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||||
|
bindel = , XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+
|
||||||
|
bindel = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||||
|
bindel = , XF86MonBrightnessUp, exec, brightnessctl s +10%
|
||||||
|
bindel = , XF86MonBrightnessDown, exec, brightnessctl s 10%-
|
||||||
|
|
||||||
|
# ==== Screenshots ====
|
||||||
|
bind = , PRINT, exec, grim -g "$(slurp)" - | wl-copy # Area → clipboard
|
||||||
|
bind = $mainMod, U, exec, grim - | wl-copy # Fullscreen → clipboard
|
||||||
|
|
||||||
|
# ==== Utilities ====
|
||||||
|
bind = $mainMod, R, exec, hyprctl reload # R = Reload config
|
||||||
|
bind = $mainMod, S, togglespecialworkspace, magic # S = Scratchpad
|
||||||
|
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
||||||
|
bind = $mainMod, W, exec, ~/.config/hypr/scripts/wallpaper.sh # W = Wallpaper cycler
|
||||||
|
|
||||||
|
# ==== Mouse Controls ====
|
||||||
|
bindm = $mainMod, mouse:272, movewindow # Left-click drag to move
|
||||||
|
bindm = $mainMod, mouse:273, resizewindow # Right-click drag to resize
|
||||||
|
|
||||||
|
# ==== Workspaces ====
|
||||||
|
bind = $mainMod, 1, workspace, 1
|
||||||
|
bind = $mainMod, 2, workspace, 2
|
||||||
|
bind = $mainMod, 3, workspace, 3
|
||||||
|
bind = $mainMod, 4, workspace, 4
|
||||||
|
bind = $mainMod, 5, workspace, 5
|
||||||
|
bind = $mainMod, 6, workspace, 6
|
||||||
|
bind = $mainMod, 7, workspace, 7
|
||||||
|
bind = $mainMod, 8, workspace, 8
|
||||||
|
bind = $mainMod, 9, workspace, 9
|
||||||
|
bind = $mainMod, 0, workspace, 10
|
||||||
|
|
||||||
|
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
||||||
|
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
||||||
|
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
||||||
|
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
||||||
|
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
||||||
|
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
||||||
|
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
||||||
|
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
||||||
|
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
||||||
|
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
||||||
|
|
||||||
|
windowrule = suppressevent maximize, class:.*
|
||||||
|
|
||||||
|
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
|
84
hypr/hyprlock.conf
Normal file
84
hypr/hyprlock.conf
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
$text_color = rgba(FFDAD6FF)
|
||||||
|
$entry_background_color = rgba(41000311)
|
||||||
|
$entry_border_color = rgba(896E6C55)
|
||||||
|
$entry_color = rgba(FFDAD6FF)
|
||||||
|
$font_family = Rubik Light
|
||||||
|
$font_family_clock = Rubik Light
|
||||||
|
$font_material_symbols = Material Symbols Rounded
|
||||||
|
|
||||||
|
background {
|
||||||
|
color = rgba(181818FF)
|
||||||
|
# TODO: set some wallpaper
|
||||||
|
# path = {{ SWWW_WALL }}
|
||||||
|
|
||||||
|
# path = screenshot
|
||||||
|
# blur_size = 15
|
||||||
|
# blur_passes = 4
|
||||||
|
}
|
||||||
|
input-field {
|
||||||
|
monitor =
|
||||||
|
size = 250, 50
|
||||||
|
outline_thickness = 2
|
||||||
|
dots_size = 0.1
|
||||||
|
dots_spacing = 0.3
|
||||||
|
outer_color = $entry_border_color
|
||||||
|
inner_color = $entry_background_color
|
||||||
|
font_color = $entry_color
|
||||||
|
fade_on_empty = true
|
||||||
|
|
||||||
|
position = 0, 20
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
}
|
||||||
|
|
||||||
|
label { # Clock
|
||||||
|
monitor =
|
||||||
|
text = $TIME
|
||||||
|
color = $text_color
|
||||||
|
font_size = 65
|
||||||
|
font_family = $font_family_clock
|
||||||
|
|
||||||
|
position = 0, 300
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
}
|
||||||
|
label { # Date
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:5000] date +"%A, %B %d"
|
||||||
|
color = $text_color
|
||||||
|
font_size = 17
|
||||||
|
font_family = $font_family
|
||||||
|
|
||||||
|
position = 0, 240
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
}
|
||||||
|
|
||||||
|
label { # User
|
||||||
|
monitor =
|
||||||
|
text = $USER
|
||||||
|
color = $text_color
|
||||||
|
shadow_passes = 1
|
||||||
|
shadow_boost = 0.35
|
||||||
|
outline_thickness = 2
|
||||||
|
dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
|
||||||
|
dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0
|
||||||
|
dots_center = true
|
||||||
|
font_size = 20
|
||||||
|
font_family = $font_family
|
||||||
|
position = 0, 50
|
||||||
|
halign = center
|
||||||
|
valign = bottom
|
||||||
|
}
|
||||||
|
|
||||||
|
label { # Status
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:1000] echo "<span foreground='##ff2222'>$(date)</span>"
|
||||||
|
color = $text_color
|
||||||
|
font_size = 14
|
||||||
|
font_family = $font_family
|
||||||
|
|
||||||
|
position = 30, -30
|
||||||
|
halign = left
|
||||||
|
valign = top
|
||||||
|
}
|
4
hypr/hyprpaper.conf
Normal file
4
hypr/hyprpaper.conf
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
preload = /home/yu/Pictures/wallpaper/2246.png
|
||||||
|
/home/yu/Pictures/wallpaper/0141.png
|
||||||
|
wallpaper = , /home/yu/Pictures/wallpaper/2246.png
|
||||||
|
/home/yu/Pictures/wallpaper/0141.png
|
14
hypr/scripts/wallpaper.sh
Executable file
14
hypr/scripts/wallpaper.sh
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
|
WALLPAPER_DIR="$HOME/Pictures/wallpaper/"
|
||||||
|
CURRENT_WALL=$(hyprctl hyprpaper listloaded)
|
||||||
|
MONITOR="HDMI-A-1"
|
||||||
|
|
||||||
|
# Get a random wallpaper that is not the current one
|
||||||
|
WALLPAPER=$(find "$WALLPAPER_DIR" -type f ! -name "$(basename "$CURRENT_WALL")" | shuf -n 1)
|
||||||
|
|
||||||
|
# Ensure we unload them all
|
||||||
|
hyprctl hyprpaper unload all
|
||||||
|
|
||||||
|
# Apply the selected wallpaper
|
||||||
|
hyprctl hyprpaper reload $MONITOR,"$WALLPAPER"
|
174
lf/colors
Normal file
174
lf/colors
Normal file
@ -0,0 +1,174 @@
|
|||||||
|
# vim:ft=dircolors
|
||||||
|
# (This is not a dircolors file but it helps to highlight colors and comments)
|
||||||
|
|
||||||
|
# default values from dircolors
|
||||||
|
# (entries with a leading # are not implemented in lf)
|
||||||
|
# #no 00 # NORMAL
|
||||||
|
# fi 00 # FILE
|
||||||
|
# #rs 0 # RESET
|
||||||
|
# di 01;34 # DIR
|
||||||
|
# ln 01;36 # LINK
|
||||||
|
# #mh 00 # MULTIHARDLINK
|
||||||
|
# pi 40;33 # FIFO
|
||||||
|
# so 01;35 # SOCK
|
||||||
|
# #do 01;35 # DOOR
|
||||||
|
# bd 40;33;01 # BLK
|
||||||
|
# cd 40;33;01 # CHR
|
||||||
|
# or 40;31;01 # ORPHAN
|
||||||
|
# #mi 00 # MISSING
|
||||||
|
# su 37;41 # SETUID
|
||||||
|
# sg 30;43 # SETGID
|
||||||
|
# #ca 30;41 # CAPABILITY
|
||||||
|
# tw 30;42 # STICKY_OTHER_WRITABLE
|
||||||
|
# ow 34;42 # OTHER_WRITABLE
|
||||||
|
# st 37;44 # STICKY
|
||||||
|
# ex 01;32 # EXEC
|
||||||
|
|
||||||
|
# default values from lf (with matching order)
|
||||||
|
# ln 01;36 # LINK
|
||||||
|
# or 31;01 # ORPHAN
|
||||||
|
# tw 01;34 # STICKY_OTHER_WRITABLE
|
||||||
|
# ow 01;34 # OTHER_WRITABLE
|
||||||
|
# st 01;34 # STICKY
|
||||||
|
# di 01;34 # DIR
|
||||||
|
# pi 33 # FIFO
|
||||||
|
# so 01;35 # SOCK
|
||||||
|
# bd 33;01 # BLK
|
||||||
|
# cd 33;01 # CHR
|
||||||
|
# su 01;32 # SETUID
|
||||||
|
# sg 01;32 # SETGID
|
||||||
|
# ex 01;32 # EXEC
|
||||||
|
# fi 00 # FILE
|
||||||
|
|
||||||
|
# file types (with matching order)
|
||||||
|
ln 01;36 # LINK
|
||||||
|
or 31;01 # ORPHAN
|
||||||
|
tw 34 # STICKY_OTHER_WRITABLE
|
||||||
|
ow 34 # OTHER_WRITABLE
|
||||||
|
st 01;34 # STICKY
|
||||||
|
di 01;34 # DIR
|
||||||
|
pi 33 # FIFO
|
||||||
|
so 01;35 # SOCK
|
||||||
|
bd 33;01 # BLK
|
||||||
|
cd 33;01 # CHR
|
||||||
|
su 01;32 # SETUID
|
||||||
|
sg 01;32 # SETGID
|
||||||
|
ex 01;32 # EXEC
|
||||||
|
fi 00 # FILE
|
||||||
|
|
||||||
|
# archives or compressed (dircolors defaults)
|
||||||
|
*.tar 01;31
|
||||||
|
*.tgz 01;31
|
||||||
|
*.arc 01;31
|
||||||
|
*.arj 01;31
|
||||||
|
*.taz 01;31
|
||||||
|
*.lha 01;31
|
||||||
|
*.lz4 01;31
|
||||||
|
*.lzh 01;31
|
||||||
|
*.lzma 01;31
|
||||||
|
*.tlz 01;31
|
||||||
|
*.txz 01;31
|
||||||
|
*.tzo 01;31
|
||||||
|
*.t7z 01;31
|
||||||
|
*.zip 01;31
|
||||||
|
*.z 01;31
|
||||||
|
*.dz 01;31
|
||||||
|
*.gz 01;31
|
||||||
|
*.lrz 01;31
|
||||||
|
*.lz 01;31
|
||||||
|
*.lzo 01;31
|
||||||
|
*.xz 01;31
|
||||||
|
*.zst 01;31
|
||||||
|
*.tzst 01;31
|
||||||
|
*.bz2 01;31
|
||||||
|
*.bz 01;31
|
||||||
|
*.tbz 01;31
|
||||||
|
*.tbz2 01;31
|
||||||
|
*.tz 01;31
|
||||||
|
*.deb 01;31
|
||||||
|
*.rpm 01;31
|
||||||
|
*.jar 01;31
|
||||||
|
*.war 01;31
|
||||||
|
*.ear 01;31
|
||||||
|
*.sar 01;31
|
||||||
|
*.rar 01;31
|
||||||
|
*.alz 01;31
|
||||||
|
*.ace 01;31
|
||||||
|
*.zoo 01;31
|
||||||
|
*.cpio 01;31
|
||||||
|
*.7z 01;31
|
||||||
|
*.rz 01;31
|
||||||
|
*.cab 01;31
|
||||||
|
*.wim 01;31
|
||||||
|
*.swm 01;31
|
||||||
|
*.dwm 01;31
|
||||||
|
*.esd 01;31
|
||||||
|
|
||||||
|
# image formats (dircolors defaults)
|
||||||
|
*.jpg 01;35
|
||||||
|
*.jpeg 01;35
|
||||||
|
*.mjpg 01;35
|
||||||
|
*.mjpeg 01;35
|
||||||
|
*.gif 01;35
|
||||||
|
*.bmp 01;35
|
||||||
|
*.pbm 01;35
|
||||||
|
*.pgm 01;35
|
||||||
|
*.ppm 01;35
|
||||||
|
*.tga 01;35
|
||||||
|
*.xbm 01;35
|
||||||
|
*.xpm 01;35
|
||||||
|
*.tif 01;35
|
||||||
|
*.tiff 01;35
|
||||||
|
*.png 01;35
|
||||||
|
*.svg 01;35
|
||||||
|
*.svgz 01;35
|
||||||
|
*.mng 01;35
|
||||||
|
*.pcx 01;35
|
||||||
|
*.mov 01;35
|
||||||
|
*.mpg 01;35
|
||||||
|
*.mpeg 01;35
|
||||||
|
*.m2v 01;35
|
||||||
|
*.mkv 01;35
|
||||||
|
*.webm 01;35
|
||||||
|
*.ogm 01;35
|
||||||
|
*.mp4 01;35
|
||||||
|
*.m4v 01;35
|
||||||
|
*.mp4v 01;35
|
||||||
|
*.vob 01;35
|
||||||
|
*.qt 01;35
|
||||||
|
*.nuv 01;35
|
||||||
|
*.wmv 01;35
|
||||||
|
*.asf 01;35
|
||||||
|
*.rm 01;35
|
||||||
|
*.rmvb 01;35
|
||||||
|
*.flc 01;35
|
||||||
|
*.avi 01;35
|
||||||
|
*.fli 01;35
|
||||||
|
*.flv 01;35
|
||||||
|
*.gl 01;35
|
||||||
|
*.dl 01;35
|
||||||
|
*.xcf 01;35
|
||||||
|
*.xwd 01;35
|
||||||
|
*.yuv 01;35
|
||||||
|
*.cgm 01;35
|
||||||
|
*.emf 01;35
|
||||||
|
*.ogv 01;35
|
||||||
|
*.ogx 01;35
|
||||||
|
|
||||||
|
# audio formats (dircolors defaults)
|
||||||
|
*.aac 00;36
|
||||||
|
*.au 00;36
|
||||||
|
*.flac 00;36
|
||||||
|
*.m4a 00;36
|
||||||
|
*.mid 00;36
|
||||||
|
*.midi 00;36
|
||||||
|
*.mka 00;36
|
||||||
|
*.mp3 00;36
|
||||||
|
*.mpc 00;36
|
||||||
|
*.ogg 00;36
|
||||||
|
*.ra 00;36
|
||||||
|
*.wav 00;36
|
||||||
|
*.oga 00;36
|
||||||
|
*.opus 00;36
|
||||||
|
*.spx 00;36
|
||||||
|
*.xspf 00;36
|
377
lf/icons
Normal file
377
lf/icons
Normal file
@ -0,0 +1,377 @@
|
|||||||
|
# vim:ft=conf
|
||||||
|
|
||||||
|
# These examples require Nerd Fonts or a compatible font to be used.
|
||||||
|
# See https://www.nerdfonts.com for more information.
|
||||||
|
|
||||||
|
# default values from lf (with matching order)
|
||||||
|
# ln l # LINK
|
||||||
|
# or l # ORPHAN
|
||||||
|
# tw t # STICKY_OTHER_WRITABLE
|
||||||
|
# ow d # OTHER_WRITABLE
|
||||||
|
# st t # STICKY
|
||||||
|
# di d # DIR
|
||||||
|
# pi p # FIFO
|
||||||
|
# so s # SOCK
|
||||||
|
# bd b # BLK
|
||||||
|
# cd c # CHR
|
||||||
|
# su u # SETUID
|
||||||
|
# sg g # SETGID
|
||||||
|
# ex x # EXEC
|
||||||
|
# fi - # FILE
|
||||||
|
|
||||||
|
# file types (with matching order)
|
||||||
|
ln # LINK
|
||||||
|
or # ORPHAN
|
||||||
|
tw t # STICKY_OTHER_WRITABLE
|
||||||
|
ow # OTHER_WRITABLE
|
||||||
|
st t # STICKY
|
||||||
|
di # DIR
|
||||||
|
pi p # FIFO
|
||||||
|
so s # SOCK
|
||||||
|
bd b # BLK
|
||||||
|
cd c # CHR
|
||||||
|
su u # SETUID
|
||||||
|
sg g # SETGID
|
||||||
|
ex # EXEC
|
||||||
|
fi # FILE
|
||||||
|
|
||||||
|
# disable some default filetype icons, let them choose icon by filename
|
||||||
|
# ln # LINK
|
||||||
|
# or # ORPHAN
|
||||||
|
# tw # STICKY_OTHER_WRITABLE
|
||||||
|
# ow # OTHER_WRITABLE
|
||||||
|
# st # STICKY
|
||||||
|
# di # DIR
|
||||||
|
# pi # FIFO
|
||||||
|
# so # SOCK
|
||||||
|
# bd # BLK
|
||||||
|
# cd # CHR
|
||||||
|
# su # SETUID
|
||||||
|
# sg # SETGID
|
||||||
|
# ex # EXEC
|
||||||
|
# fi # FILE
|
||||||
|
|
||||||
|
# file extensions (vim-devicons)
|
||||||
|
*.styl
|
||||||
|
*.sass
|
||||||
|
*.scss
|
||||||
|
*.htm
|
||||||
|
*.html
|
||||||
|
*.slim
|
||||||
|
*.haml
|
||||||
|
*.ejs
|
||||||
|
*.css
|
||||||
|
*.less
|
||||||
|
*.md
|
||||||
|
*.mdx
|
||||||
|
*.markdown
|
||||||
|
*.rmd
|
||||||
|
*.json
|
||||||
|
*.webmanifest
|
||||||
|
*.js
|
||||||
|
*.mjs
|
||||||
|
*.jsx
|
||||||
|
*.rb
|
||||||
|
*.gemspec
|
||||||
|
*.rake
|
||||||
|
*.php
|
||||||
|
*.py
|
||||||
|
*.pyc
|
||||||
|
*.pyo
|
||||||
|
*.pyd
|
||||||
|
*.coffee
|
||||||
|
*.mustache
|
||||||
|
*.hbs
|
||||||
|
*.conf
|
||||||
|
*.ini
|
||||||
|
*.yml
|
||||||
|
*.yaml
|
||||||
|
*.toml
|
||||||
|
*.bat
|
||||||
|
*.mk
|
||||||
|
*.jpg
|
||||||
|
*.jpeg
|
||||||
|
*.bmp
|
||||||
|
*.png
|
||||||
|
*.webp
|
||||||
|
*.gif
|
||||||
|
*.ico
|
||||||
|
*.twig
|
||||||
|
*.cpp
|
||||||
|
*.c++
|
||||||
|
*.cxx
|
||||||
|
*.cc
|
||||||
|
*.cp
|
||||||
|
*.c
|
||||||
|
*.cs
|
||||||
|
*.h
|
||||||
|
*.hh
|
||||||
|
*.hpp
|
||||||
|
*.hxx
|
||||||
|
*.hs
|
||||||
|
*.lhs
|
||||||
|
*.nix
|
||||||
|
*.lua
|
||||||
|
*.java
|
||||||
|
*.sh
|
||||||
|
*.fish
|
||||||
|
*.bash
|
||||||
|
*.zsh
|
||||||
|
*.ksh
|
||||||
|
*.csh
|
||||||
|
*.awk
|
||||||
|
*.ps1
|
||||||
|
*.ml λ
|
||||||
|
*.mli λ
|
||||||
|
*.diff
|
||||||
|
*.db
|
||||||
|
*.sql
|
||||||
|
*.dump
|
||||||
|
*.clj
|
||||||
|
*.cljc
|
||||||
|
*.cljs
|
||||||
|
*.edn
|
||||||
|
*.scala
|
||||||
|
*.go
|
||||||
|
*.dart
|
||||||
|
*.xul
|
||||||
|
*.sln
|
||||||
|
*.suo
|
||||||
|
*.pl
|
||||||
|
*.pm
|
||||||
|
*.t
|
||||||
|
*.rss
|
||||||
|
'*.f#'
|
||||||
|
*.fsscript
|
||||||
|
*.fsx
|
||||||
|
*.fs
|
||||||
|
*.fsi
|
||||||
|
*.rs
|
||||||
|
*.rlib
|
||||||
|
*.d
|
||||||
|
*.erl
|
||||||
|
*.hrl
|
||||||
|
*.ex
|
||||||
|
*.exs
|
||||||
|
*.eex
|
||||||
|
*.leex
|
||||||
|
*.heex
|
||||||
|
*.vim
|
||||||
|
*.ai
|
||||||
|
*.psd
|
||||||
|
*.psb
|
||||||
|
*.ts
|
||||||
|
*.tsx
|
||||||
|
*.jl
|
||||||
|
*.pp
|
||||||
|
*.vue
|
||||||
|
*.elm
|
||||||
|
*.swift
|
||||||
|
*.xcplayground
|
||||||
|
*.tex
|
||||||
|
*.r
|
||||||
|
*.rproj
|
||||||
|
*.sol
|
||||||
|
*.pem
|
||||||
|
|
||||||
|
# file names (vim-devicons) (case-insensitive not supported in lf)
|
||||||
|
*gruntfile.coffee
|
||||||
|
*gruntfile.js
|
||||||
|
*gruntfile.ls
|
||||||
|
*gulpfile.coffee
|
||||||
|
*gulpfile.js
|
||||||
|
*gulpfile.ls
|
||||||
|
*mix.lock
|
||||||
|
*dropbox
|
||||||
|
*.ds_store
|
||||||
|
*.gitconfig
|
||||||
|
*.gitignore
|
||||||
|
*.gitattributes
|
||||||
|
*.gitlab-ci.yml
|
||||||
|
*.bashrc
|
||||||
|
*.zshrc
|
||||||
|
*.zshenv
|
||||||
|
*.zprofile
|
||||||
|
*.vimrc
|
||||||
|
*.gvimrc
|
||||||
|
*_vimrc
|
||||||
|
*_gvimrc
|
||||||
|
*.bashprofile
|
||||||
|
*favicon.ico
|
||||||
|
*license
|
||||||
|
*node_modules
|
||||||
|
*react.jsx
|
||||||
|
*procfile
|
||||||
|
*dockerfile
|
||||||
|
*docker-compose.yml
|
||||||
|
*docker-compose.yaml
|
||||||
|
*compose.yml
|
||||||
|
*compose.yaml
|
||||||
|
*rakefile
|
||||||
|
*config.ru
|
||||||
|
*gemfile
|
||||||
|
*makefile
|
||||||
|
*cmakelists.txt
|
||||||
|
*robots.txt
|
||||||
|
|
||||||
|
# file names (case-sensitive adaptations)
|
||||||
|
*Gruntfile.coffee
|
||||||
|
*Gruntfile.js
|
||||||
|
*Gruntfile.ls
|
||||||
|
*Gulpfile.coffee
|
||||||
|
*Gulpfile.js
|
||||||
|
*Gulpfile.ls
|
||||||
|
*Dropbox
|
||||||
|
*.DS_Store
|
||||||
|
*LICENSE
|
||||||
|
*React.jsx
|
||||||
|
*Procfile
|
||||||
|
*Dockerfile
|
||||||
|
*Docker-compose.yml
|
||||||
|
*Docker-compose.yaml
|
||||||
|
*Rakefile
|
||||||
|
*Gemfile
|
||||||
|
*Makefile
|
||||||
|
*CMakeLists.txt
|
||||||
|
|
||||||
|
# file patterns (vim-devicons) (patterns not supported in lf)
|
||||||
|
# .*jquery.*\.js$
|
||||||
|
# .*angular.*\.js$
|
||||||
|
# .*backbone.*\.js$
|
||||||
|
# .*require.*\.js$
|
||||||
|
# .*materialize.*\.js$
|
||||||
|
# .*materialize.*\.css$
|
||||||
|
# .*mootools.*\.js$
|
||||||
|
# .*vimrc.*
|
||||||
|
# Vagrantfile$
|
||||||
|
|
||||||
|
# file patterns (file name adaptations)
|
||||||
|
*jquery.min.js
|
||||||
|
*angular.min.js
|
||||||
|
*backbone.min.js
|
||||||
|
*require.min.js
|
||||||
|
*materialize.min.js
|
||||||
|
*materialize.min.css
|
||||||
|
*mootools.min.js
|
||||||
|
*vimrc
|
||||||
|
Vagrantfile
|
||||||
|
|
||||||
|
# archives or compressed (extensions from dircolors defaults)
|
||||||
|
*.tar
|
||||||
|
*.tgz
|
||||||
|
*.arc
|
||||||
|
*.arj
|
||||||
|
*.taz
|
||||||
|
*.lha
|
||||||
|
*.lz4
|
||||||
|
*.lzh
|
||||||
|
*.lzma
|
||||||
|
*.tlz
|
||||||
|
*.txz
|
||||||
|
*.tzo
|
||||||
|
*.t7z
|
||||||
|
*.zip
|
||||||
|
*.z
|
||||||
|
*.dz
|
||||||
|
*.gz
|
||||||
|
*.lrz
|
||||||
|
*.lz
|
||||||
|
*.lzo
|
||||||
|
*.xz
|
||||||
|
*.zst
|
||||||
|
*.tzst
|
||||||
|
*.bz2
|
||||||
|
*.bz
|
||||||
|
*.tbz
|
||||||
|
*.tbz2
|
||||||
|
*.tz
|
||||||
|
*.deb
|
||||||
|
*.rpm
|
||||||
|
*.jar
|
||||||
|
*.war
|
||||||
|
*.ear
|
||||||
|
*.sar
|
||||||
|
*.rar
|
||||||
|
*.alz
|
||||||
|
*.ace
|
||||||
|
*.zoo
|
||||||
|
*.cpio
|
||||||
|
*.7z
|
||||||
|
*.rz
|
||||||
|
*.cab
|
||||||
|
*.wim
|
||||||
|
*.swm
|
||||||
|
*.dwm
|
||||||
|
*.esd
|
||||||
|
|
||||||
|
# image formats (extensions from dircolors defaults)
|
||||||
|
*.jpg
|
||||||
|
*.jpeg
|
||||||
|
*.mjpg
|
||||||
|
*.mjpeg
|
||||||
|
*.gif
|
||||||
|
*.bmp
|
||||||
|
*.pbm
|
||||||
|
*.pgm
|
||||||
|
*.ppm
|
||||||
|
*.tga
|
||||||
|
*.xbm
|
||||||
|
*.xpm
|
||||||
|
*.tif
|
||||||
|
*.tiff
|
||||||
|
*.png
|
||||||
|
*.svg
|
||||||
|
*.svgz
|
||||||
|
*.mng
|
||||||
|
*.pcx
|
||||||
|
*.mov
|
||||||
|
*.mpg
|
||||||
|
*.mpeg
|
||||||
|
*.m2v
|
||||||
|
*.mkv
|
||||||
|
*.webm
|
||||||
|
*.ogm
|
||||||
|
*.mp4
|
||||||
|
*.m4v
|
||||||
|
*.mp4v
|
||||||
|
*.vob
|
||||||
|
*.qt
|
||||||
|
*.nuv
|
||||||
|
*.wmv
|
||||||
|
*.asf
|
||||||
|
*.rm
|
||||||
|
*.rmvb
|
||||||
|
*.flc
|
||||||
|
*.avi
|
||||||
|
*.fli
|
||||||
|
*.flv
|
||||||
|
*.gl
|
||||||
|
*.dl
|
||||||
|
*.xcf
|
||||||
|
*.xwd
|
||||||
|
*.yuv
|
||||||
|
*.cgm
|
||||||
|
*.emf
|
||||||
|
*.ogv
|
||||||
|
*.ogx
|
||||||
|
|
||||||
|
# audio formats (extensions from dircolors defaults)
|
||||||
|
*.aac
|
||||||
|
*.au
|
||||||
|
*.flac
|
||||||
|
*.m4a
|
||||||
|
*.mid
|
||||||
|
*.midi
|
||||||
|
*.mka
|
||||||
|
*.mp3
|
||||||
|
*.mpc
|
||||||
|
*.ogg
|
||||||
|
*.ra
|
||||||
|
*.wav
|
||||||
|
*.oga
|
||||||
|
*.opus
|
||||||
|
*.spx
|
||||||
|
*.xspf
|
||||||
|
|
||||||
|
# other formats
|
||||||
|
*.pdf
|
9
mako/config
Normal file
9
mako/config
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
background-color=#f0f0f0e0
|
||||||
|
text-color=#111111
|
||||||
|
border-color=#aaaaaa
|
||||||
|
border-size=2
|
||||||
|
border-radius=6
|
||||||
|
padding=10
|
||||||
|
default-timeout=5000
|
||||||
|
font=JetBrainsMono Nerd Font 13
|
||||||
|
|
346
nvim/init.lua
Normal file
346
nvim/init.lua
Normal file
@ -0,0 +1,346 @@
|
|||||||
|
local vim = vim
|
||||||
|
local Plug = vim.fn['plug#']
|
||||||
|
|
||||||
|
local o = vim.opt
|
||||||
|
local g = vim.g
|
||||||
|
|
||||||
|
g.mapleader = ' '
|
||||||
|
g.maplocalleader = ' '
|
||||||
|
g.toggle_theme_icon = " "
|
||||||
|
g.have_nerd_font = true
|
||||||
|
|
||||||
|
-- Line numbers
|
||||||
|
o.number = true
|
||||||
|
|
||||||
|
-- o.spell = true
|
||||||
|
o.spelllang="en_us,es"
|
||||||
|
|
||||||
|
-- Configure how new splits should be opened
|
||||||
|
o.splitright = true
|
||||||
|
o.splitbelow = true
|
||||||
|
o.inccommand = 'split'
|
||||||
|
|
||||||
|
-- Tabs
|
||||||
|
o.shiftwidth = 2
|
||||||
|
o.tabstop = 2
|
||||||
|
|
||||||
|
o.undofile = true
|
||||||
|
o.undodir = vim.fn.stdpath("data") .. "/undo//"
|
||||||
|
|
||||||
|
-- https://www.reddit.com/r/neovim/comments/wlkq0e/neovim_configuration_to_backup_files_with/
|
||||||
|
o.backup = true
|
||||||
|
o.backupdir = vim.fn.stdpath("data") .. "/backup//"
|
||||||
|
|
||||||
|
-- o.clipboard = "unnamedplus"
|
||||||
|
-- Statuscolumn
|
||||||
|
|
||||||
|
-- Set sign column to be 4.
|
||||||
|
-- So, if I have a new diff, It'll not feel weird, by the signcolumn expanding
|
||||||
|
o.signcolumn = "yes:1"
|
||||||
|
|
||||||
|
-- Statusline
|
||||||
|
o.cmdheight = 0
|
||||||
|
o.laststatus = 3
|
||||||
|
|
||||||
|
-- Folds
|
||||||
|
o.foldcolumn = "1"
|
||||||
|
o.foldlevel = 99
|
||||||
|
o.foldlevelstart = 99
|
||||||
|
o.foldenable = true
|
||||||
|
|
||||||
|
-- Enable break indent
|
||||||
|
o.breakindent = true
|
||||||
|
|
||||||
|
o.list = true
|
||||||
|
o.listchars = { tab = '» ', trail = '·', nbsp = '␣' }
|
||||||
|
|
||||||
|
-- Scrolloff
|
||||||
|
o.scrolloff = 15
|
||||||
|
|
||||||
|
-- Show which line your cursor is on
|
||||||
|
o.cursorline = true
|
||||||
|
|
||||||
|
-- Searching
|
||||||
|
o.ignorecase = true
|
||||||
|
o.smartcase = true
|
||||||
|
|
||||||
|
o.pumblend = 10 -- Popup blend
|
||||||
|
o.pumheight = 10 -- Maximum number of entries in a popup
|
||||||
|
|
||||||
|
vim.opt.hlsearch = true
|
||||||
|
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<CR>')
|
||||||
|
|
||||||
|
local map = vim.keymap.set
|
||||||
|
|
||||||
|
map('v', "<leader>y", '"+y')
|
||||||
|
|
||||||
|
map('n', '<C-j>', ':Treewalker Down<CR>', { noremap = true })
|
||||||
|
map('n', '<C-k>', ':Treewalker Up<CR>', { noremap = true })
|
||||||
|
map('n', '<C-h>', ':Treewalker Left<CR>', { noremap = true })
|
||||||
|
map('n', '<C-l>', ':Treewalker Right<CR>', { noremap = true })
|
||||||
|
|
||||||
|
-- Diagnostic keymaps
|
||||||
|
map('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous [D]iagnostic message' })
|
||||||
|
map('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next [D]iagnostic message' })
|
||||||
|
map('n', '<leader>e', vim.diagnostic.open_float, { desc = 'Show diagnostic [E]rror messages' })
|
||||||
|
map('v', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' })
|
||||||
|
|
||||||
|
map('n', 'Q', 'gq')
|
||||||
|
|
||||||
|
map('n', '<leader>.', '<cmd>:CHADopen<cr>')
|
||||||
|
|
||||||
|
vim.call('plug#begin')
|
||||||
|
|
||||||
|
-- Style
|
||||||
|
Plug 'folke/tokyonight.nvim'
|
||||||
|
Plug 'olimorris/onedarkpro.nvim'
|
||||||
|
Plug 'xiyaowong/transparent.nvim'
|
||||||
|
Plug 'alexblackie/lunarised'
|
||||||
|
Plug 'starryleo/starry-vim-colorschemes'
|
||||||
|
|
||||||
|
-- lsp
|
||||||
|
Plug('williamboman/mason.nvim')
|
||||||
|
Plug('williamboman/mason-lspconfig.nvim')
|
||||||
|
|
||||||
|
-- more lsp
|
||||||
|
Plug('neovim/nvim-lspconfig')
|
||||||
|
Plug('L3MON4D3/LuaSnip', {
|
||||||
|
['tag'] = 'v2.*',
|
||||||
|
})
|
||||||
|
Plug 'marilari88/twoslash-queries.nvim'
|
||||||
|
Plug 'neovim/nvim-lspconfig'
|
||||||
|
|
||||||
|
-- auto complete
|
||||||
|
Plug 'hrsh7th/cmp-nvim-lsp'
|
||||||
|
Plug 'hrsh7th/cmp-buffer'
|
||||||
|
Plug 'hrsh7th/cmp-path'
|
||||||
|
Plug 'hrsh7th/cmp-cmdline'
|
||||||
|
Plug 'hrsh7th/nvim-cmp'
|
||||||
|
Plug 'zbirenbaum/copilot-cmp' -- copilot
|
||||||
|
Plug 'L3MON4D3/LuaSnip'
|
||||||
|
Plug 'saadparwaiz1/cmp_luasnip'
|
||||||
|
|
||||||
|
-- useful stuff
|
||||||
|
Plug 'echasnovski/mini.nvim'
|
||||||
|
Plug 'zbirenbaum/copilot.lua'
|
||||||
|
Plug 'ms-jpq/chadtree'
|
||||||
|
Plug 'ryanoasis/vim-devicons'
|
||||||
|
Plug 'jetzig-framework/zmpl.vim'
|
||||||
|
|
||||||
|
-- tree sitter
|
||||||
|
Plug 'nvim-treesitter/nvim-treesitter'
|
||||||
|
Plug('aaronik/treewalker.nvim', {
|
||||||
|
opts = {
|
||||||
|
highlight = true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
vim.call('plug#end')
|
||||||
|
|
||||||
|
vim.cmd('set background=dark')
|
||||||
|
vim.cmd('colorscheme nova')
|
||||||
|
|
||||||
|
-- Better Around/Inside textobjects
|
||||||
|
--
|
||||||
|
-- Examples:
|
||||||
|
-- - va) - [V]isually select [A]round [)]paren
|
||||||
|
-- - yinq - [Y]ank [I]nside [N]ext [']quote
|
||||||
|
-- - ci' - [C]hange [I]nside [']quote
|
||||||
|
require('mini.ai').setup { n_lines = 500 }
|
||||||
|
|
||||||
|
-- Add/delete/replace surroundings (brackets, quotes, etc.)
|
||||||
|
--
|
||||||
|
-- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren
|
||||||
|
-- - sd' - [S]urround [D]elete [']quotes
|
||||||
|
-- - sr)' - [S]urround [R]eplace [)] [']
|
||||||
|
require('mini.surround').setup()
|
||||||
|
|
||||||
|
-- Simple and easy statusline.
|
||||||
|
-- You could remove this setup call if you don't like it,
|
||||||
|
-- and try some other statusline plugin
|
||||||
|
local statusline = require 'mini.statusline'
|
||||||
|
|
||||||
|
-- set use_icons to true if you have a Nerd Font
|
||||||
|
statusline.setup { use_icons = vim.g.have_nerd_font }
|
||||||
|
|
||||||
|
-- You can configure sections in the statusline by overriding their
|
||||||
|
-- default behavior. For example, here we set the section for
|
||||||
|
-- cursor location to LINE:COLUMN
|
||||||
|
---@diagnostic disable-next-line: duplicate-set-field
|
||||||
|
statusline.section_location = function()
|
||||||
|
return '%2l:%-2v'
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ... and there is more!
|
||||||
|
-- Check out: https://github.com/echasnovski/mini.nvim
|
||||||
|
require('mini.pairs').setup()
|
||||||
|
|
||||||
|
require('nvim-treesitter.configs').setup({
|
||||||
|
-- A list of parser names, or "all" (the listed parsers MUST always be installed)
|
||||||
|
ensure_installed = {'bash', 'c', 'html', 'lua', 'luadoc', 'markdown', 'vim', 'vimdoc'},
|
||||||
|
|
||||||
|
sync_install = false,
|
||||||
|
|
||||||
|
highlight = {
|
||||||
|
enable = true,
|
||||||
|
additional_vim_regex_highlighting = false,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
require("mason").setup()
|
||||||
|
|
||||||
|
local lspconfig = require('lspconfig')
|
||||||
|
|
||||||
|
lspconfig.hls.setup({})
|
||||||
|
lspconfig.zls.setup({
|
||||||
|
{cmd = '~/.zig/zls'}
|
||||||
|
})
|
||||||
|
|
||||||
|
local lsp_cmds = vim.api.nvim_create_augroup('lsp_cmds', {clear = true})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd('LspAttach', {
|
||||||
|
group = lsp_cmds,
|
||||||
|
desc = 'LSP actions',
|
||||||
|
callback = function()
|
||||||
|
local bufmap = function(mode, lhs, rhs)
|
||||||
|
vim.keymap.set(mode, lhs, rhs, {buffer = true})
|
||||||
|
end
|
||||||
|
bufmap('n', 'K', '<cmd>lua vim.lsp.buf.hover()<cr>')
|
||||||
|
bufmap('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<cr>')
|
||||||
|
bufmap('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<cr>')
|
||||||
|
bufmap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<cr>')
|
||||||
|
bufmap('n', 'go', '<cmd>lua vim.lsp.buf.type_definition()<cr>')
|
||||||
|
bufmap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<cr>')
|
||||||
|
bufmap('n', 'gs', '<cmd>lua vim.lsp.buf.signature_help()<cr>')
|
||||||
|
bufmap('n', '<F2>', '<cmd>lua vim.lsp.buf.rename()<cr>')
|
||||||
|
bufmap({'n', 'x'}, '<F3>', '<cmd>lua vim.lsp.buf.format({async = true})<cr>')
|
||||||
|
bufmap('n', '<F4>', '<cmd>lua vim.lsp.buf.code_action()<cr>')
|
||||||
|
bufmap('n', 'gl', '<cmd>lua vim.diagnostic.open_float()<cr>')
|
||||||
|
bufmap('n', '[d', '<cmd>lua vim.diagnostic.goto_prev()<cr>')
|
||||||
|
bufmap('n', ']d', '<cmd>lua vim.diagnostic.goto_next()<cr>')
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
require('mason-lspconfig').setup({
|
||||||
|
ensure_installed = {'hls'},
|
||||||
|
handlers = {
|
||||||
|
function(server)
|
||||||
|
lspconfig[server].setup({
|
||||||
|
capabilities = lsp_capabilities,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.opt.completeopt = {'menu', 'menuone', 'noselect'}
|
||||||
|
|
||||||
|
require("copilot").setup({
|
||||||
|
suggestion = { enabled = false },
|
||||||
|
panel = { enabled = false },
|
||||||
|
})
|
||||||
|
require("copilot_cmp").setup()
|
||||||
|
|
||||||
|
local cmp = require('cmp')
|
||||||
|
local luasnip = require('luasnip')
|
||||||
|
|
||||||
|
local select_opts = {behavior = cmp.SelectBehavior.Select}
|
||||||
|
local has_words_before = function()
|
||||||
|
if vim.api.nvim_buf_get_option(0, "buftype") == "prompt" then return false end
|
||||||
|
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||||
|
return col ~= 0 and vim.api.nvim_buf_get_text(0, line-1, 0, line-1, col, {})[1]:match("^%s*$") == nil
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- See :help cmp-config
|
||||||
|
cmp.setup({
|
||||||
|
snippet = {
|
||||||
|
expand = function(args)
|
||||||
|
luasnip.lsp_expand(args.body)
|
||||||
|
end
|
||||||
|
},
|
||||||
|
sources = {
|
||||||
|
{name = 'path'},
|
||||||
|
{name = 'nvim_lsp', keyword_length = 3},
|
||||||
|
{name = 'buffer', keyword_length = 3},
|
||||||
|
{name = 'luasnip', keyword_length = 2},
|
||||||
|
{name = 'copilot', group_index = 2}
|
||||||
|
},
|
||||||
|
window = {
|
||||||
|
documentation = cmp.config.window.bordered()
|
||||||
|
},
|
||||||
|
formatting = {
|
||||||
|
fields = {'menu', 'abbr', 'kind'},
|
||||||
|
format = function(entry, item)
|
||||||
|
local menu_icon = {
|
||||||
|
nvim_lsp = 'λ',
|
||||||
|
luasnip = '⋗',
|
||||||
|
buffer = 'Ω',
|
||||||
|
path = '🖫',
|
||||||
|
}
|
||||||
|
|
||||||
|
item.menu = menu_icon[entry.source.name]
|
||||||
|
return item
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
-- See :help cmp-mapping
|
||||||
|
mapping = {
|
||||||
|
['<Up>'] = cmp.mapping.select_prev_item(select_opts),
|
||||||
|
['<Down>'] = cmp.mapping.select_next_item(select_opts),
|
||||||
|
|
||||||
|
['<C-p>'] = cmp.mapping.select_prev_item(select_opts),
|
||||||
|
['<C-n>'] = cmp.mapping.select_next_item(select_opts),
|
||||||
|
|
||||||
|
['<C-u>'] = cmp.mapping.scroll_docs(-4),
|
||||||
|
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||||
|
|
||||||
|
['<C-e>'] = cmp.mapping.abort(),
|
||||||
|
['<CR>'] = cmp.mapping.confirm({select = false}),
|
||||||
|
|
||||||
|
['<C-d>'] = cmp.mapping(function(fallback)
|
||||||
|
if luasnip.jumpable(1) then
|
||||||
|
luasnip.jump(1)
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, {'i', 's'}),
|
||||||
|
|
||||||
|
['<C-b>'] = cmp.mapping(function(fallback)
|
||||||
|
if luasnip.jumpable(-1) then
|
||||||
|
luasnip.jump(-1)
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, {'i', 's'}),
|
||||||
|
|
||||||
|
['<Tab>'] = cmp.mapping(function(fallback)
|
||||||
|
local col = vim.fn.col('.') - 1
|
||||||
|
if cmp.visible() and has_words_before() then
|
||||||
|
cmp.select_next_item({ behavior = cmp.SelectBehavior.Select })
|
||||||
|
elseif cmp.visible() then
|
||||||
|
cmp.select_next_item(select_opts)
|
||||||
|
elseif col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') then
|
||||||
|
fallback()
|
||||||
|
else
|
||||||
|
cmp.complete()
|
||||||
|
end
|
||||||
|
end, {'i', 's'}),
|
||||||
|
|
||||||
|
['<S-Tab>'] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_prev_item(select_opts)
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, {'i', 's'}),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- hyprland
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd("BufWritePost", {
|
||||||
|
pattern = "hyprland.conf",
|
||||||
|
callback = function()
|
||||||
|
os.execute("hyprctl reload")
|
||||||
|
vim.cmd.edit()
|
||||||
|
end
|
||||||
|
})
|
258
scripts/bloat
Executable file
258
scripts/bloat
Executable file
@ -0,0 +1,258 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# ==== Desktop Environment Bloat Detector ====
|
||||||
|
detect_de() {
|
||||||
|
# Hierarchy of shame
|
||||||
|
echo "🖥️ DESKTOP ENVIRONMENT ANALYSIS:"
|
||||||
|
|
||||||
|
# ==== Tier 1: Chromium-Level Bloat ====
|
||||||
|
if [ -n "$GNOME_DESKTOP_SESSION_ID" ] || pgrep -x "gnome-shell" >/dev/null; then
|
||||||
|
echo " ☢️ GNOME DETECTED:"
|
||||||
|
echo " - 1.2GB RAM just to display a clock"
|
||||||
|
echo " - Systemd-required for 'OK' button animations"
|
||||||
|
echo " - Your extensions are duct tape on a sinking blimp"
|
||||||
|
|
||||||
|
elif [ -n "$KDE_FULL_SESSION" ] || pgrep -x "plasmashell" >/dev/null; then
|
||||||
|
echo " 🎪 KDE PLASMA DETECTED:"
|
||||||
|
echo " - 300 configuration options for your taskbar's tooltip delay"
|
||||||
|
echo " - Ships with 17 text editors (kate, kwrite, kedit...)"
|
||||||
|
echo " - 'Lightweight' like a neutron star"
|
||||||
|
|
||||||
|
# ==== Tier 2: "Minimal" Bloat ====
|
||||||
|
elif [ -n "$HYPRLAND_INSTANCE_SIGNATURE" ] || pgrep -x "Hyprland" >/dev/null; then
|
||||||
|
echo " 🐍 HYPRLAND DETECTED:"
|
||||||
|
echo " - Requires 200-line config just to open Firefox"
|
||||||
|
echo " - 'GPU accelerated' but stutters on 4K terminals"
|
||||||
|
echo " - Your animations are powered by copium"
|
||||||
|
|
||||||
|
elif [ -n "$SWAYSOCK" ] || pgrep -x "sway" >/dev/null; then
|
||||||
|
echo " 🌊 SWAY DETECTED:"
|
||||||
|
echo " - 'i3 but Wayland' (somehow 3x heavier)"
|
||||||
|
echo " - Your config file has 15 binds just for workspace switching"
|
||||||
|
echo " - Still depends on systemd (lol)"
|
||||||
|
|
||||||
|
elif pgrep -x "i3" >/dev/null; then
|
||||||
|
echo " 🧊 I3 DETECTED:"
|
||||||
|
echo " - Config file longer than your thesis"
|
||||||
|
echo " - 'Lightweight' but requires 5 daemons for notifications"
|
||||||
|
echo " - You manually patched gaps support and now it's slower than GNOME"
|
||||||
|
|
||||||
|
# ==== Tier 3: Respectable Minimalism ====
|
||||||
|
elif pgrep -x "lxqt-session" >/dev/null; then
|
||||||
|
echo " 🏗️ LXQT DETECTED:"
|
||||||
|
echo " - Basically Qt for people who miss 2010"
|
||||||
|
echo " - Somehow still depends on DBus"
|
||||||
|
echo " - The 'I almost switched to dwm' starter pack"
|
||||||
|
|
||||||
|
elif pgrep -x "lxsession" >/dev/null; then
|
||||||
|
echo " 🚲 LXDE DETECTED:"
|
||||||
|
echo " - GTK2 in 2024 (retro computing vibe)"
|
||||||
|
echo " - Last updated when Bitcoin was $200"
|
||||||
|
echo " - Actually runs on a Raspberry Pi (points for honesty)"
|
||||||
|
|
||||||
|
# ==== Tier 4: Ascended Basedness ====
|
||||||
|
elif pgrep -x "dwm" >/dev/null; then
|
||||||
|
echo " 🚀 DWM DETECTED:"
|
||||||
|
echo " - Config? You mean editing config.h and recompiling?"
|
||||||
|
echo " - 2000 lines of C just to avoid a .config file"
|
||||||
|
echo " - You patched in systray support and now it's 0.0001% less based"
|
||||||
|
|
||||||
|
elif pgrep -x "xmonad" >/dev/null; then
|
||||||
|
echo " λ XMONAD DETECTED:"
|
||||||
|
echo " - Haskell-powered tiling (because C wasn't obscure enough)"
|
||||||
|
echo " - Your xmobar config is a Turing-complete program"
|
||||||
|
echo " - 'Lightweight' but depends on 47 Haskell libraries"
|
||||||
|
|
||||||
|
# ==== Tier 5: Terminal Purists ====
|
||||||
|
elif [ "$TERM" = "linux" ] && [ -z "$DISPLAY" ]; then
|
||||||
|
echo " 🖴 TTY DETECTED:"
|
||||||
|
echo " - Real men use framebuffer terminals"
|
||||||
|
echo " - Your 'desktop environment' is tmux + ncurses"
|
||||||
|
echo " - 100% bloat-free (but you still miss mouse support)"
|
||||||
|
|
||||||
|
else
|
||||||
|
echo " ❓ MYSTERY DE:"
|
||||||
|
echo " - Did you install Enlightenment by accident?"
|
||||||
|
echo " - Or are you lying about using CDE?"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# System info
|
||||||
|
init_system=$(ps -p 1 -o comm=)
|
||||||
|
libc=$(ldd /bin/sh 2>/dev/null | grep -q "musl" && echo "musl" || echo "glibc")
|
||||||
|
priv=$(command -v doas >/dev/null && echo "doas" || (command -v sudo >/dev/null && echo "sudo" || echo "none"))
|
||||||
|
dbus_status=$(pgrep -x dbus-daemon >/dev/null && echo "running" || (command -v dbus-daemon >/dev/null && echo "installed" || echo "absent"))
|
||||||
|
shell=$(basename "${SHELL:-$(grep "^$(id -u):" /etc/passwd | cut -d: -f7)}")
|
||||||
|
|
||||||
|
# Coreutils detection
|
||||||
|
if readlink --version 2>&1 | grep -q 'GNU coreutils'; then
|
||||||
|
coreutils="GNU coreutils"
|
||||||
|
coreutils_shame="💀 CRIMES AGAINST MINIMALISM: Using GNU coreutils (bloated, 102 binaries, huge size). Use sbase/busybox."
|
||||||
|
elif readlink --help 2>&1 | head -n1 | grep -q 'BusyBox'; then
|
||||||
|
coreutils="BusyBox"
|
||||||
|
coreutils_shame="✅ Based: BusyBox user detected (1MB static binary)."
|
||||||
|
else
|
||||||
|
coreutils="Unknown"
|
||||||
|
coreutils_shame="❓ Mystery coreutils. Probably worse than GNU."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ===== Package Manager Detection =====
|
||||||
|
echo "System: $(source /etc/os-release; echo "$PRETTY_NAME")"
|
||||||
|
|
||||||
|
if command -v xbps-query >/dev/null; then
|
||||||
|
# Void Linux
|
||||||
|
total=$(xbps-query -l | wc -l)
|
||||||
|
conscious=$(xbps-query -m | wc -l)
|
||||||
|
gnu=$(xbps-query -s gnu | wc -l)
|
||||||
|
elif command -v pacman >/dev/null; then
|
||||||
|
# Arch Linux
|
||||||
|
total=$(pacman -Qq | wc -l)
|
||||||
|
conscious=$(pacman -Qqen | wc -l)
|
||||||
|
gnu=$(pacman -Qqs gnu | wc -l)
|
||||||
|
elif command -v dpkg >/dev/null; then
|
||||||
|
# Debian/Ubuntu (i don't have a debian machine to test)
|
||||||
|
total=$(dpkg -l | grep '^ii' | wc -l)
|
||||||
|
conscious=$(apt-mark showmanual | wc -l)
|
||||||
|
gnu=$(apt-mark showmanual | grep -i gnu | wc -l)
|
||||||
|
elif command -v rpm >/dev/null && command -v dnf >/dev/null; then
|
||||||
|
# Fedora/RHEL (i don't have a fedora machine to test)
|
||||||
|
total=$(rpm -qa | wc -l)
|
||||||
|
conscious=$(dnf history userinstalled | grep -v '^ID' | wc -l)
|
||||||
|
gnu=$(rpm -qa --queryformat '%{NAME}\n' | grep -i gnu | wc -l)
|
||||||
|
else
|
||||||
|
echo "Error: Unsupported package manager"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ===== Application Shame Detection =====
|
||||||
|
echo "🔴 SHAME LIST:"
|
||||||
|
|
||||||
|
# 1. GNU Coreutils
|
||||||
|
[ "$coreutils" = "GNU coreutils" ] && echo " - $coreutils_shame"
|
||||||
|
|
||||||
|
# 2. glibc
|
||||||
|
[ "$libc" = "glibc" ] && echo " - 💀 GLIBC DETECTED: Your binaries are fat with NSS+locale bloat. Use musl."
|
||||||
|
|
||||||
|
# 3. systemd
|
||||||
|
[ "$init_system" = "systemd" ] && echo " - 💀 SYSTEMD: Your boot is slower than Windows 10. Use runit/openrc."
|
||||||
|
|
||||||
|
# 4. dbus/elogind/pulseaudio
|
||||||
|
if [ "$dbus_status" != "absent" ]; then
|
||||||
|
echo " - 💀 DBUS: Your IPC is a Rube Goldberg machine. Try seatd+pipewire."
|
||||||
|
fi
|
||||||
|
command -v pulseaudio >/dev/null && echo " - 💀 PULSEAUDIO: Audio stack from 2007. PipeWire exists."
|
||||||
|
|
||||||
|
# 5. Bash/Zsh
|
||||||
|
case "$shell" in
|
||||||
|
*bash*) echo " - 💀 BASH: 1.5MB shell for people who autocomplete 'sudo rm -rf'" ;;
|
||||||
|
*zsh*) echo " - 💀 ZSH: Your .zshrc is 200 lines to change the prompt" ;;
|
||||||
|
*dash*) echo " - ✅ Based: dash user (100KB POSIX shell)" ;;
|
||||||
|
*ash*) echo " - ✅ Based: ash/busybox shell enjoyer" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# 6. Build systems
|
||||||
|
command -v cmake >/dev/null && echo " - 💀 CMAKE: Your build system generates Makefiles that generate Ninja files that run shell scripts"
|
||||||
|
command -v meson >/dev/null && echo " - 🐍 MESON: 'We replaced CMake with Python' (why?)"
|
||||||
|
|
||||||
|
# 7. sudo vs doas
|
||||||
|
[ "$priv" = "sudo" ] && echo " - 💀 SUDO: 5MB config parser with CVEs. doas is 50KB."
|
||||||
|
[ "$priv" = "none" ] && echo " - ⚠️ No privilege escalator found. Are you root or reckless?"
|
||||||
|
|
||||||
|
# ===== Flatpak/Snap/Distrobox Detection =====
|
||||||
|
flatpak_bloat=0
|
||||||
|
snap_bloat=0
|
||||||
|
|
||||||
|
if command -v flatpak >/dev/null; then
|
||||||
|
flatpak_bloat=$(flatpak list --columns=application | wc -l)
|
||||||
|
echo "🚀 Flatpak Detected:"
|
||||||
|
echo "Total Flatpaks : $flatpak_bloat"
|
||||||
|
echo "Top 5 Largest:"
|
||||||
|
flatpak list --columns=application,size | sort -k2 -hr | head -n5 | sed 's/^/ /'
|
||||||
|
[ $flatpak_bloat -gt 0 ] && echo " - 💀 FLATPAK: Your apps ship with their own copies of glibc (from 2018)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if command -v snap >/dev/null; then
|
||||||
|
snap_bloat=$(snap list | wc -l)
|
||||||
|
echo "🐦 Snap Detected:"
|
||||||
|
echo "Total Snaps : ${snap_bloat}"
|
||||||
|
echo "Top 5 Largest:"
|
||||||
|
snap list --all | awk 'NR>1 {print $1,$5}' | sort -k2 -hr | head -n5 | sed 's/^/ /'
|
||||||
|
[ $snap_bloat -gt 0 ] && echo " - 💀 SNAP: Congratulations on your 20GB /var/lib/snapd"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Distrobox containers
|
||||||
|
distrobox_bloat=0
|
||||||
|
if [ -d ~/.distrobox ]; then
|
||||||
|
echo "📦 Distrobox Containers:"
|
||||||
|
for container in ~/.distrobox/*; do
|
||||||
|
if [ -d "$container" ]; then
|
||||||
|
container_name=$(basename "$container")
|
||||||
|
size=$(du -sh "$container" 2>/dev/null | cut -f1)
|
||||||
|
distrobox_bloat=$((distrobox_bloat + 1))
|
||||||
|
echo " - $container_name: $size"
|
||||||
|
echo " 💀 DISTROBOX: '$container_name' is just Docker with extra steps (${size} wasted)"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ===== Fedora Special Shame =====
|
||||||
|
if [[ "$distro_name" == *"Fedora"* ]]; then
|
||||||
|
echo "🐄 FEDORA USER DETECTED:"
|
||||||
|
echo " - Enjoy your 300MB 'dnf' transactions"
|
||||||
|
echo " - SELinux is judging you right now"
|
||||||
|
echo " - OpenBSD is more secure LMAO"
|
||||||
|
echo " - Your /usr/bin is 60% Python wrappers"
|
||||||
|
rpm -q fedora-release | grep -q 38 && echo " - Still on F38? Even Red Hat gave up on you"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Extra
|
||||||
|
echo "🔍 RUNNING APP SCAN:"
|
||||||
|
if pidof discord >/dev/null; then
|
||||||
|
discord_ram=$(ps -o rss= -p $(pidof discord) | awk '{print $1/1024}')
|
||||||
|
echo " - 💀 DISCORD: ${discord_ram%.*}MB RAM but now you can blame Activision Blizzard (use Revolt/Matrix)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if pgrep -x "spotify" >/dev/null; then
|
||||||
|
echo " - 💀 SPOTIFY: Your music player phones home more than a CIA operative"
|
||||||
|
echo " >> Try 'spotifyd' + 'ncspot' for actual Linux vibes"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if pgrep -x "steam" >/dev/null; then
|
||||||
|
echo " - 💀 STEAM: Your gaming rig runs 3 copies of glibc (2012 edition)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Final inspection
|
||||||
|
detect_de
|
||||||
|
|
||||||
|
# ===== Bloat Calculations =====
|
||||||
|
non_gnu=$((conscious - gnu))
|
||||||
|
[ "$conscious" -ne 0 ] || conscious=1
|
||||||
|
gnu_ratio=$((gnu * 100 / conscious))
|
||||||
|
total_bloat=$((gnu_ratio + flatpak_bloat + snap_bloat + (distrobox_bloat * 10)))
|
||||||
|
|
||||||
|
# ===== Bloat Report =====
|
||||||
|
echo "💣 THERMONUCLEAR BLOAT REPORT:"
|
||||||
|
echo "-------------------------------"
|
||||||
|
echo "Traditional Packages:"
|
||||||
|
echo " Total : $total"
|
||||||
|
echo " Conscious choices : $conscious"
|
||||||
|
echo " GNU ratio : ${gnu_ratio}%"
|
||||||
|
echo " Containerized Crimes:"
|
||||||
|
echo " Flatpaks : ${flatpak_bloat}"
|
||||||
|
echo " Snaps : ${snap_bloat}"
|
||||||
|
echo " Distrobox : ${distrobox_bloat} containers"
|
||||||
|
echo "-------------------------------"
|
||||||
|
echo "TOTAL BLOAT SCORE : ${total_bloat}/300"
|
||||||
|
|
||||||
|
# ===== Final Verdict =====
|
||||||
|
if [ $total_bloat -lt 50 ]; then
|
||||||
|
echo "Status: Alpine Linux would be proud 🏔️"
|
||||||
|
elif [ $total_bloat -lt 90 ]; then
|
||||||
|
echo "Status: Mild bloat (Debian netinstall tier) 🐖"
|
||||||
|
elif [ $total_bloat -lt 130 ]; then
|
||||||
|
echo "Status: Obese (Ubuntu desktop territory) 🐘"
|
||||||
|
else
|
||||||
|
echo "Status: GNOME-DE level catastrophe ☢️"
|
||||||
|
[ "$init_system" = "systemd" ] && echo " >> Your journalctl is a novel about failed starts"
|
||||||
|
[ $flatpak_bloat -gt 0 ] && echo " >> Flatpaks detected: Your ~/.var is a filesystem tumor"
|
||||||
|
fi
|
90
waybar/config
Normal file
90
waybar/config
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
{
|
||||||
|
"layer": "top",
|
||||||
|
// Using margin-bottom with a negative value in order to reduce the space between Hyprland window and waybar
|
||||||
|
"margin-bottom": -10,
|
||||||
|
"margin-top": 10,
|
||||||
|
"modules-left": ["custom/launcher", "cpu","memory","custom/spotify", "bluetooth", "tray"],
|
||||||
|
"modules-center": ["hyprland/workspaces"],
|
||||||
|
"modules-right": ["custom/clipboard", "pulseaudio","clock", "temperature", "custom/power"],
|
||||||
|
|
||||||
|
"pulseaudio": {
|
||||||
|
"tooltip": false,
|
||||||
|
"scroll-step": 5,
|
||||||
|
"format": "{icon} {volume}%",
|
||||||
|
"format-muted": "{icon} {volume}%",
|
||||||
|
"on-click":"pactl set-sink-mute @DEFAULT_SINK@ toggle",
|
||||||
|
"format-icons": {
|
||||||
|
"default": ["", "", ""]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
// "interface": "wlp2*", // (Optional) To force the use of this interface
|
||||||
|
"format-wifi": "",
|
||||||
|
"format-ethernet": "",
|
||||||
|
"tooltip-format": "{essid} ({signalStrength}%)",
|
||||||
|
"format-linked": "{ifname} (No IP) ",
|
||||||
|
"format-disconnected": "⚠",
|
||||||
|
"format-alt": "{ifname}: {ipaddr}/{cidr}"
|
||||||
|
},
|
||||||
|
"tray":{
|
||||||
|
"icon-size":18,
|
||||||
|
"spacing": 10
|
||||||
|
},
|
||||||
|
"clock": {
|
||||||
|
"format": " {:%H:%M:%S}", // 24h full scientific
|
||||||
|
"format-alt": " {:%Y-%m-%d}"
|
||||||
|
},
|
||||||
|
"cpu": {
|
||||||
|
"interval": 15,
|
||||||
|
"format": " {}%",
|
||||||
|
"max-length": 10
|
||||||
|
},
|
||||||
|
"memory": {
|
||||||
|
"interval": 5,
|
||||||
|
"format": " {}%",
|
||||||
|
"max-length": 10
|
||||||
|
},
|
||||||
|
"custom/spotify": {
|
||||||
|
"interval": 1,
|
||||||
|
"return-type": "json",
|
||||||
|
"exec": "sh ~/.config/waybar/scripts/spotify.sh",
|
||||||
|
"exec-if": "pgrep spotify",
|
||||||
|
"escape": true
|
||||||
|
},
|
||||||
|
"custom/launcher":{
|
||||||
|
"format": " ",
|
||||||
|
"on-click": "wofi --style ~/.config/wofi/style/style.css -d --show drun",
|
||||||
|
"on-click-right": "killall wofi"
|
||||||
|
},
|
||||||
|
"custom/power":{
|
||||||
|
"format": " ",
|
||||||
|
"on-click": "sh ~/.config/wofi/scripts/power.sh",
|
||||||
|
},
|
||||||
|
"bluetooth": {
|
||||||
|
"format": " {status}",
|
||||||
|
"format-disabled": "", // an empty format will hide the module
|
||||||
|
"format-connected": " Devices: #{num_connections}",
|
||||||
|
"tooltip-format": "{device_alias}",
|
||||||
|
"tooltip-format-connected": " {device_enumerate}",
|
||||||
|
"tooltip-format-enumerate-connected": "{device_alias}",
|
||||||
|
"on-click": "~/.config/waybar/scripts/bluetooth.sh"
|
||||||
|
},
|
||||||
|
// The code following below is given in the great documentation for Waybar status bar under Useful Utilities in Hyprland wiki
|
||||||
|
"hyrpland/workspaces": {
|
||||||
|
"format": "{icon}",
|
||||||
|
"on-click": "activate",
|
||||||
|
"on-scroll-up": "hyprctl dispatch workspace e-1",
|
||||||
|
"on-scroll-down": "hyprctl dispatch workspace e+1"
|
||||||
|
},
|
||||||
|
"temperature": {
|
||||||
|
"format": " {temperatureC}°C",
|
||||||
|
"format-critical": " {temperatureC}°C",
|
||||||
|
"interval": 1,
|
||||||
|
"critical-threshold": 80
|
||||||
|
},
|
||||||
|
"custom/clipboard":{
|
||||||
|
"format":"",
|
||||||
|
"on-click": "cliphist list | wofi --style ~/.config/wofi/style/style.css --show dmenu | cliphist decode | wl-copy",
|
||||||
|
"interval": 86400
|
||||||
|
},
|
||||||
|
}
|
18
waybar/scripts/bluetooth.sh
Executable file
18
waybar/scripts/bluetooth.sh
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# List all paired devices and extract names and MAC addresses
|
||||||
|
bluetoothctl devices | while read -r _ mac name; do
|
||||||
|
printf '%s - %s\n' "$name" "$mac"
|
||||||
|
done > /tmp/bt_devices.$$
|
||||||
|
|
||||||
|
# Use wofi to display the list of devices and capture the selected one
|
||||||
|
selected_device=$(wofi --style ~/.config/wofi/style/style.css --show dmenu --prompt "Select Device" --width 300 --height 500 --lines 10 < /tmp/bt_devices.$$)
|
||||||
|
|
||||||
|
# Clean up temp file
|
||||||
|
rm -f /tmp/bt_devices.$$
|
||||||
|
|
||||||
|
# If a device is selected, connect to it
|
||||||
|
if [ -n "$selected_device" ]; then
|
||||||
|
mac_address=$(echo "$selected_device" | awk '{print $NF}')
|
||||||
|
bluetoothctl connect "$mac_address"
|
||||||
|
fi
|
25
waybar/scripts/spotify.sh
Executable file
25
waybar/scripts/spotify.sh
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
class=$(playerctl metadata --player=spotify --format '{{lc(status)}}')
|
||||||
|
icon=""
|
||||||
|
|
||||||
|
case "$class" in
|
||||||
|
"playing")
|
||||||
|
info=$(playerctl metadata --player=spotify --format '{{artist}} - {{title}}')
|
||||||
|
if [ "${#info}" -gt 40 ]; then
|
||||||
|
info=$(printf '%.40s...' "$info")
|
||||||
|
fi
|
||||||
|
text="$info $icon"
|
||||||
|
;;
|
||||||
|
"paused")
|
||||||
|
text="$icon"
|
||||||
|
;;
|
||||||
|
"stopped")
|
||||||
|
text=""
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
text=""
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
printf '{"text":"%s", "class":"%s"}\n' "$text" "$class"
|
74
waybar/style.css
Normal file
74
waybar/style.css
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
* {
|
||||||
|
border: none;
|
||||||
|
border-radius: 4px; /* Your sharp corners */
|
||||||
|
font-family: "JetBrainsMono Nerd Font";
|
||||||
|
font-size: 14px;
|
||||||
|
min-height: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background: rgba(240, 240, 240, 0.8); /* Your original light gray */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Workspaces - Your original style */
|
||||||
|
#workspaces {
|
||||||
|
margin: 5px 8px;
|
||||||
|
background: linear-gradient(to bottom, #ffffff, #d9d9d9);
|
||||||
|
border: 1px solid #aaaaaa;
|
||||||
|
box-shadow: 0px 0px 4px rgba(0,0,0,0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.active {
|
||||||
|
background: linear-gradient(to bottom, #ffffff, #c0d9f2);
|
||||||
|
border: 1px solid #66aaff;
|
||||||
|
color: #003366;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button:hover {
|
||||||
|
background: linear-gradient(to bottom, #d9ecff, #a9cfff);
|
||||||
|
color: #003366;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Modules - Your structure + Aero accents */
|
||||||
|
#network, #bluetooth, #pulseaudio, #battery, #clock, #cpu, #memory, #tray, #backlight,
|
||||||
|
#custom-launcher, #custom-power, #custom-wallpaper, #custom-spotify, #custom-clipboard {
|
||||||
|
margin: 5px 5px;
|
||||||
|
padding: 5px 10px;
|
||||||
|
background: linear-gradient(to bottom, #ffffff, #e6e6e6);
|
||||||
|
border: 1px solid #aaaaaa;
|
||||||
|
color: #111;
|
||||||
|
box-shadow: 0px 0px 3px rgba(0,0,0,0.15);
|
||||||
|
transition: all 0.2s ease; /* Smooth hover */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Color coding (Aero-inspired) */
|
||||||
|
#pulseaudio {
|
||||||
|
color: #aa55ff; /* Purple for volume */
|
||||||
|
}
|
||||||
|
|
||||||
|
#cpu {
|
||||||
|
color: #0066cc; /* Blue for CPU */
|
||||||
|
}
|
||||||
|
|
||||||
|
#memory {
|
||||||
|
color: #0099ff; /* Lighter blue for RAM */
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery {
|
||||||
|
color: #00aa44; /* Green for battery */
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock {
|
||||||
|
color: #0077cc; /* Blue for clock */
|
||||||
|
}
|
||||||
|
|
||||||
|
#network {
|
||||||
|
color: #3366ff; /* Bright blue for Wi-Fi */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hover effects (Aero glow) */
|
||||||
|
#network:hover, #bluetooth:hover, #pulseaudio:hover, #battery:hover, #clock:hover,
|
||||||
|
#cpu:hover, #memory:hover, #tray:hover, #backlight:hover, #custom-launcher:hover,
|
||||||
|
#custom-power:hover, #custom-wallpaper:hover, #custom-spotify:hover, #custom-clipboard:hover {
|
||||||
|
box-shadow: 0 0 8px rgba(100, 180, 255, 0.5);
|
||||||
|
}
|
16
wofi/config
Normal file
16
wofi/config
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
width=600
|
||||||
|
height=300
|
||||||
|
location=center
|
||||||
|
show=drun
|
||||||
|
prompt=Search...
|
||||||
|
filter_rate=100
|
||||||
|
allow_markup=true
|
||||||
|
no_actions=true
|
||||||
|
halign=fill
|
||||||
|
orientation=vertical
|
||||||
|
content_halign=fill
|
||||||
|
insensitive=true
|
||||||
|
allow_images=true
|
||||||
|
image_size=40
|
||||||
|
gtk_dark=true
|
||||||
|
dynamic_lines=true
|
1877
wofi/scripts/emojis.sh
Executable file
1877
wofi/scripts/emojis.sh
Executable file
File diff suppressed because it is too large
Load Diff
29
wofi/scripts/power.sh
Executable file
29
wofi/scripts/power.sh
Executable file
@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
OPTIONS="Shutdown\nSuspend\nLog Out\nReboot"
|
||||||
|
|
||||||
|
CHOICE=$(echo -e "$OPTIONS" | wofi --style ~/.config/wofi/style/style.css --show dmenu)
|
||||||
|
|
||||||
|
case "$CHOICE" in
|
||||||
|
"Shutdown")
|
||||||
|
# Confirm the shutdown and execute
|
||||||
|
echo "Shutting down..." && loginctl poweroff
|
||||||
|
;;
|
||||||
|
"Reboot")
|
||||||
|
# Confirm rebooting and execute
|
||||||
|
echo "Rebooting..." && loginctl reboot
|
||||||
|
;;
|
||||||
|
"Suspend")
|
||||||
|
# Confirm suspension and execute
|
||||||
|
echo "Suspending..." && loginctl suspend
|
||||||
|
;;
|
||||||
|
"Log Out")
|
||||||
|
# Log out of the session
|
||||||
|
echo "Logging out..." && hyprctl dispatch exit
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# If no valid option is selected, exit the script
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
82
wofi/style/emojis.css
Normal file
82
wofi/style/emojis.css
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
* {
|
||||||
|
font-family: "JetBrainsMono Nerd Font", monospace;
|
||||||
|
padding: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Main window - Frosted glass */
|
||||||
|
window {
|
||||||
|
margin: 5px;
|
||||||
|
background-color: rgba(240, 240, 240, 0.85);
|
||||||
|
backdrop-filter: blur(12px); /* Glass effect */
|
||||||
|
border: 1px solid rgba(200, 200, 200, 0.6);
|
||||||
|
border-radius: 8px;
|
||||||
|
box-shadow:
|
||||||
|
0 2px 5px rgba(0, 0, 0, 0.2),
|
||||||
|
inset 0 1px 1px rgba(255, 255, 255, 0.4); /* Inner glow */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Input bar - Aero search box */
|
||||||
|
#input {
|
||||||
|
margin: 8px;
|
||||||
|
padding: 8px 12px;
|
||||||
|
background: linear-gradient(to bottom, #ffffff, #e6e6e6);
|
||||||
|
color: #000000;
|
||||||
|
border-radius: 6px;
|
||||||
|
border: 1px solid #aaaaaa;
|
||||||
|
font-size: 14px;
|
||||||
|
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Emoji grid - Bubbly items */
|
||||||
|
#entry {
|
||||||
|
padding: 8px 12px;
|
||||||
|
margin: 4px;
|
||||||
|
border-radius: 6px;
|
||||||
|
background: linear-gradient(to bottom, rgba(255, 255, 255, 0.7), rgba(230, 240, 255, 0.5));
|
||||||
|
border: 1px solid rgba(180, 180, 180, 0.3);
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Selected emoji - Luminous highlight */
|
||||||
|
#entry:selected {
|
||||||
|
background: linear-gradient(to bottom, #bb86fc, #9a67ea); /* Purple gradient */
|
||||||
|
box-shadow: 0 0 8px rgba(187, 134, 252, 0.4); /* Glow */
|
||||||
|
color: #000;
|
||||||
|
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hover effect - Subtle pop */
|
||||||
|
#entry:hover {
|
||||||
|
background: linear-gradient(to bottom, rgba(210, 220, 255, 0.8), rgba(180, 200, 255, 0.6));
|
||||||
|
transform: scale(1.02);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Container boxes - Transparent */
|
||||||
|
#outer-box {
|
||||||
|
margin: 5px;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
#inner-box {
|
||||||
|
margin: 5px;
|
||||||
|
background-color: rgba(255, 255, 255, 0.7);
|
||||||
|
border-radius: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Emoji items (fallback for older Wofi) */
|
||||||
|
item {
|
||||||
|
padding: 8px 12px;
|
||||||
|
margin: 4px;
|
||||||
|
border-radius: 6px;
|
||||||
|
background: linear-gradient(to bottom, rgba(255, 255, 255, 0.7), rgba(230, 240, 255, 0.5));
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
item.selected {
|
||||||
|
background: linear-gradient(to bottom, #bb86fc, #9a67ea);
|
||||||
|
box-shadow: 0 0 8px rgba(187, 134, 252, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
item:hover {
|
||||||
|
background: linear-gradient(to bottom, rgba(210, 220, 255, 0.8), rgba(180, 200, 255, 0.6));
|
||||||
|
}
|
61
wofi/style/style.css
Normal file
61
wofi/style/style.css
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
* {
|
||||||
|
font-family: "JetBrainsMono Nerd Font", monospace;
|
||||||
|
line-height: 1.5;
|
||||||
|
padding: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window {
|
||||||
|
margin: 5px;
|
||||||
|
background-color: rgba(240, 240, 240, 0.85);
|
||||||
|
backdrop-filter: blur(12px);
|
||||||
|
border: 1px solid rgba(200, 200, 200, 0.6);
|
||||||
|
border-radius: 8px;
|
||||||
|
box-shadow:
|
||||||
|
0 2px 5px rgba(0, 0, 0, 0.2),
|
||||||
|
inset 0 1px 1px rgba(255, 255, 255, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
#input {
|
||||||
|
margin: 8px;
|
||||||
|
padding: 8px 12px;
|
||||||
|
background: linear-gradient(to bottom, #ffffff, #e6e6e6);
|
||||||
|
color: #000000;
|
||||||
|
border-radius: 6px;
|
||||||
|
border: 1px solid #aaaaaa;
|
||||||
|
font-size: 14px;
|
||||||
|
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#entry {
|
||||||
|
padding: 8px 12px;
|
||||||
|
margin: 4px 8px;
|
||||||
|
border-radius: 6px;
|
||||||
|
color: #333333;
|
||||||
|
background: linear-gradient(to bottom, rgba(255, 255, 255, 0.7), rgba(230, 240, 255, 0.5));
|
||||||
|
border: 1px solid rgba(180, 180, 180, 0.3);
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#entry:selected {
|
||||||
|
background: linear-gradient(to bottom, #bb86fc, #9a67ea);
|
||||||
|
color: #000;
|
||||||
|
border: 1px solid rgba(150, 100, 255, 0.5);
|
||||||
|
box-shadow: 0 0 8px rgba(187, 134, 252, 0.4);
|
||||||
|
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
#entry:hover {
|
||||||
|
background: linear-gradient(to bottom, rgba(210, 220, 255, 0.8), rgba(180, 200, 255, 0.6));
|
||||||
|
transform: scale(1.01);
|
||||||
|
}
|
||||||
|
|
||||||
|
#inner-box {
|
||||||
|
margin: 5px;
|
||||||
|
background-color: transparent;
|
||||||
|
border-radius: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#outer-box {
|
||||||
|
margin: 5px;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user