From aae3db1ba4d5ba60cfcf4b2f1a7eb3ebc80d9e87 Mon Sep 17 00:00:00 2001 From: TrudeEH Date: Sun, 23 Feb 2025 16:14:01 +0000 Subject: [PATCH] Initial Hyprland config --- home/.config/foot/foot.ini | 206 +++++++++++++++++++++ home/.config/hypr/hyprland.conf | 282 +++++++++++++++++++++++++++++ home/.config/waybar/config | 192 ++++++++++++++++++++ home/.config/waybar/style.css | 308 ++++++++++++++++++++++++++++++++ home/.config/wofi/config | 1 + home/.config/wofi/style.css | 83 +++++++++ install.sh | 43 ++++- 7 files changed, 1114 insertions(+), 1 deletion(-) create mode 100644 home/.config/foot/foot.ini create mode 100644 home/.config/hypr/hyprland.conf create mode 100644 home/.config/waybar/config create mode 100644 home/.config/waybar/style.css create mode 100644 home/.config/wofi/config create mode 100644 home/.config/wofi/style.css diff --git a/home/.config/foot/foot.ini b/home/.config/foot/foot.ini new file mode 100644 index 00000000..0da1e8fe --- /dev/null +++ b/home/.config/foot/foot.ini @@ -0,0 +1,206 @@ +# -*- conf -*- + +shell=/bin/bash +# term=foot (or xterm-256color if built with -Dterminfo=disabled) +# login-shell=no + +# app-id=foot # globally set wayland app-id. Default values are "foot" and "footclient" for desktop and server mode + title=Terminal +# locked-title=no + + font=JetBrains Mono Nerd Font:size=12 +# font-bold= +# font-italic= +# font-bold-italic= +# font-size-adjustment=0.5 +# line-height= +# letter-spacing=0 +# horizontal-letter-offset=0 +# vertical-letter-offset=0 +# underline-offset= +# underline-thickness= +# box-drawings-uses-font-glyphs=no +# dpi-aware=no + +# initial-window-size-pixels=700x500 # Or, +# initial-window-size-chars= +# initial-window-mode=windowed +pad=5x5 center # optionally append 'center' +# resize-delay-ms=100 + +# notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body} + +# bold-text-in-bright=no +# word-delimiters=,│`|:"'()[]{}<> +# selection-target=primary +# workers= +# utmp-helper=/usr/lib/utempter/utempter # When utmp backend is ‘libutempter’ (Linux) +# utmp-helper=/usr/libexec/ulog-helper # When utmp backend is ‘ulog’ (FreeBSD) + +[environment] +# name=value + +[bell] +# urgent=no +# notify=no +# visual=no +# command= +# command-focused=no + +[scrollback] +lines=1000 +# multiplier=3.0 +# indicator-position=relative +# indicator-format="" + +[url] +launch=xdg-open ${url} +# label-letters=sadfjklewcmpgh +# osc8-underline=url-mode +# protocols=http, https, ftp, ftps, file, gemini, gopher +# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'()[] + +[cursor] +style=block +# color= +# blink=no +# beam-thickness=1.5 +# underline-thickness= + +[mouse] +# hide-when-typing=no +# alternate-scroll-mode=yes + +[touch] +# long-press-delay=400 + +# JetBrains Darcula +# Palette based on the same theme from https://github.com/dexpota/kitty-themes + +#[cursor] +#color=282a36 f8f8f2 + +[colors] +alpha=0.95 +background=282828 +foreground=ebdbb2 +regular0=282828 +regular1=cc241d +regular2=98971a +regular3=d79921 +regular4=458588 +regular5=b16286 +regular6=689d6a +regular7=a89984 +bright0=928374 +bright1=fb4934 +bright2=b8bb26 +bright3=fabd2f +bright4=83a598 +bright5=d3869b +bright6=8ec07c +bright7=ebdbb2 + +[csd] +# preferred=server +# size=26 +# font= +# color= +# hide-when-maximized=no +# double-click-to-maximize=yes +# border-width=0 +# border-color= +# button-width=26 +# button-color= +# button-minimize-color= +# button-maximize-color= +# button-close-color= + +[key-bindings] +# scrollback-up-page=Shift+Page_Up +# scrollback-up-half-page=none +# scrollback-up-line=none +# scrollback-down-page=Shift+Page_Down +# scrollback-down-half-page=none +# scrollback-down-line=none +# scrollback-home=none +# scrollback-end=none +# clipboard-copy=Control+Shift+c XF86Copy +# clipboard-paste=Control+Shift+v XF86Paste +# primary-paste=Shift+Insert +# search-start=Control+Shift+r +# font-increase=Control+plus Control+equal Control+KP_Add +# font-decrease=Control+minus Control+KP_Subtract +# font-reset=Control+0 Control+KP_0 +# spawn-terminal=Control+Shift+n +# minimize=none +# maximize=none +# fullscreen=none +# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none +# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none +# pipe-selected=[xargs -r firefox] none +# show-urls-launch=Control+Shift+o +# show-urls-copy=none +# show-urls-persistent=none +# prompt-prev=Control+Shift+z +# prompt-next=Control+Shift+x +# unicode-input=Control+Shift+u +# noop=none + +[search-bindings] +# cancel=Control+g Control+c Escape +# commit=Return +# find-prev=Control+r +# find-next=Control+s +# cursor-left=Left Control+b +# cursor-left-word=Control+Left Mod1+b +# cursor-right=Right Control+f +# cursor-right-word=Control+Right Mod1+f +# cursor-home=Home Control+a +# cursor-end=End Control+e +# delete-prev=BackSpace +# delete-prev-word=Mod1+BackSpace Control+BackSpace +# delete-next=Delete +# delete-next-word=Mod1+d Control+Delete +# extend-char=Shift+Right +# extend-to-word-boundary=Control+w Control+Shift+Right +# extend-to-next-whitespace=Control+Shift+w +# extend-line-down=Shift+Down +# extend-backward-char=Shift+Left +# extend-backward-to-word-boundary=Control+Shift+Left +# extend-backward-to-next-whitespace=none +# extend-line-up=Shift+Up +# clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste +# primary-paste=Shift+Insert +# unicode-input=none +# scrollback-up-page=Shift+Page_Up +# scrollback-up-half-page=none +# scrollback-up-line=none +# scrollback-down-page=Shift+Page_Down +# scrollback-down-half-page=none +# scrollback-down-line=none +# scrollback-home=none +# scrollback-end=none + +[url-bindings] +# cancel=Control+g Control+c Control+d Escape +# toggle-url-visible=t + +[text-bindings] +# \x03=Mod4+c # Map Super+c -> Ctrl+c + +[mouse-bindings] +scrollback-up-mouse=BTN_BACK +scrollback-down-mouse=BTN_FORWARD +# selection-override-modifiers=Shift +primary-paste=BTN_MIDDLE +# select-begin=BTN_LEFT +# select-begin-block=Control+BTN_LEFT +# select-extend=BTN_RIGHT +# select-extend-character-wise=Control+BTN_RIGHT +# select-word=BTN_LEFT-2 +# select-word-whitespace=Control+BTN_LEFT-2 +# select-quote = BTN_LEFT-3 +# select-row=BTN_LEFT-4 + +# vim: ft=dosini \ No newline at end of file diff --git a/home/.config/hypr/hyprland.conf b/home/.config/hypr/hyprland.conf new file mode 100644 index 00000000..3656870f --- /dev/null +++ b/home/.config/hypr/hyprland.conf @@ -0,0 +1,282 @@ +################ +### MONITORS ### +################ + +# See https://wiki.hyprland.org/Configuring/Monitors/ +monitor=,preferred,auto,auto + + +################### +### MY PROGRAMS ### +################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ + +# Set programs that you use +$terminal = foot +$fileManager = nautilus +$menu = wofi --show drun + + +################# +### AUTOSTART ### +################# + +# Autostart necessary processes (like notifications daemons, status bars, etc.) +# Or execute your favorite apps at launch like this: + +# exec-once = $terminal +# exec-once = nm-applet & +exec-once = dunst +exec-once = hyprpaper +exec-once = hyprpolkitagent +exec-once = hyprsunset +exec-once = nm-applet +exec-once = udiskie +exec-once = waybar + +############################# +### ENVIRONMENT VARIABLES ### +############################# + +# See https://wiki.hyprland.org/Configuring/Environment-variables/ + +env = XCURSOR_SIZE,24 +env = HYPRCURSOR_SIZE,24 + + +##################### +### LOOK AND FEEL ### +##################### + +# Refer to https://wiki.hyprland.org/Configuring/Variables/ + +# https://wiki.hyprland.org/Configuring/Variables/#general +general { + gaps_in = 5 + gaps_out = 20 + + border_size = 2 + + # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors + col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg + col.inactive_border = rgba(595959aa) + + # Set to true enable resizing windows by clicking and dragging on borders and gaps + resize_on_border = true + + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = false + + layout = dwindle +} + +# https://wiki.hyprland.org/Configuring/Variables/#decoration +decoration { + rounding = 10 + rounding_power = 2 + + # Change transparency of focused and unfocused windows + active_opacity = 1.0 + inactive_opacity = 1.0 + + shadow { + enabled = true + range = 4 + render_power = 3 + color = rgba(1a1a1aee) + } + + # https://wiki.hyprland.org/Configuring/Variables/#blur + blur { + enabled = true + size = 3 + passes = 1 + + vibrancy = 0.1696 + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#animations +animations { + enabled = yes, please :) + + # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + bezier = easeOutQuint,0.23,1,0.32,1 + bezier = easeInOutCubic,0.65,0.05,0.36,1 + bezier = linear,0,0,1,1 + bezier = almostLinear,0.5,0.5,0.75,1.0 + bezier = quick,0.15,0,0.1,1 + + animation = global, 1, 10, default + animation = border, 1, 5.39, easeOutQuint + animation = windows, 1, 4.79, easeOutQuint + animation = windowsIn, 1, 4.1, easeOutQuint, popin 87% + animation = windowsOut, 1, 1.49, linear, popin 87% + animation = fadeIn, 1, 1.73, almostLinear + animation = fadeOut, 1, 1.46, almostLinear + animation = fade, 1, 3.03, quick + animation = layers, 1, 3.81, easeOutQuint + animation = layersIn, 1, 4, easeOutQuint, fade + animation = layersOut, 1, 1.5, linear, fade + animation = fadeLayersIn, 1, 1.79, almostLinear + animation = fadeLayersOut, 1, 1.39, almostLinear + animation = workspaces, 1, 1.94, almostLinear, fade + animation = workspacesIn, 1, 1.21, almostLinear, fade + animation = workspacesOut, 1, 1.94, almostLinear, fade +} + +# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/ +# "Smart gaps" / "No gaps when only" +# uncomment all if you wish to use that. +# workspace = w[tv1], gapsout:0, gapsin:0 +# workspace = f[1], gapsout:0, gapsin:0 +# windowrulev2 = bordersize 0, floating:0, onworkspace:w[tv1] +# windowrulev2 = rounding 0, floating:0, onworkspace:w[tv1] +# windowrulev2 = bordersize 0, floating:0, onworkspace:f[1] +# windowrulev2 = rounding 0, floating:0, onworkspace:f[1] + +# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more +dwindle { + pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = true # You probably want this +} + +# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more +master { + new_status = master +} + +# https://wiki.hyprland.org/Configuring/Variables/#misc +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. :( +} + + +############# +### INPUT ### +############# + +# https://wiki.hyprland.org/Configuring/Variables/#input +input { + kb_layout = us + kb_variant = + kb_model = + kb_options = + kb_rules = + + follow_mouse = 1 + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. + + touchpad { + natural_scroll = false + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#gestures +gestures { + workspace_swipe = false +} + +# Example per-device config +# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more +device { + name = epic-mouse-v1 + sensitivity = -0.5 +} + + +################### +### KEYBINDINGS ### +################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ +$mainMod = SUPER # Sets "Windows" key as main modifier + +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +bind = $mainMod, Q, exec, $terminal +bind = $mainMod, C, killactive, +bind = $mainMod, M, exit, +bind = $mainMod, E, exec, $fileManager +bind = $mainMod, V, togglefloating, +bind = $mainMod, R, exec, $menu +bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod, J, togglesplit, # dwindle + +# Move focus with mainMod + arrow keys +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d + +# Switch workspaces with mainMod + [0-9] +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 + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +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 + +# Example special workspace (scratchpad) +bind = $mainMod, S, togglespecialworkspace, magic +bind = $mainMod SHIFT, S, movetoworkspace, special:magic + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + +# Laptop multimedia keys for volume and LCD brightness +bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ +bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- +bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle +bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+ +bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%- + +# Requires playerctl +bindl = , XF86AudioNext, exec, playerctl next +bindl = , XF86AudioPause, exec, playerctl play-pause +bindl = , XF86AudioPlay, exec, playerctl play-pause +bindl = , XF86AudioPrev, exec, playerctl previous + +############################## +### WINDOWS AND WORKSPACES ### +############################## + +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more +# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules + +# Example windowrule v1 +# windowrule = float, ^(kitty)$ + +# Example windowrule v2 +# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ + +# Ignore maximize requests from apps. You'll probably like this. +windowrulev2 = suppressevent maximize, class:.* + +# Fix some dragging issues with XWayland +windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 \ No newline at end of file diff --git a/home/.config/waybar/config b/home/.config/waybar/config new file mode 100644 index 00000000..6a30e127 --- /dev/null +++ b/home/.config/waybar/config @@ -0,0 +1,192 @@ +{ + "layer": "top", // Waybar at top layer + // "position": "bottom", // Waybar position (top|bottom|left|right) + "height": 30, // Waybar height (to be removed for auto height) + // "width": 1280, // Waybar width + "spacing": 5, // Gaps between modules (4px) + "margin-top": 5, + "margin-right": 5, + "margin-left": 5, + "margin-bottom": 0, + // Choose the order of the modules + "modules-left": ["clock", "backlight", "battery", "sway/scratchpad", "mpd", "tray"], + "modules-center": ["sway/workspaces"], + "modules-right": ["wireplumber", "network", "cpu", "memory", "temperature"], + // Modules configuration + "custom/power": { + "format": "󰣇", + "on-click": "", + }, + "sway/workspaces": { + "disable-scroll": true, + "all-outputs": true, + "format": "{icon}", + "format-icons": { + "focused": "", + "default": "" + } + }, + "keyboard-state": { + "numlock": true, + "capslock": true, + "format": "{name} {icon}", + "format-icons": { + "locked": "", + "unlocked": "" + } + }, + "sway/mode": { + "format": "{}" + }, + "sway/scratchpad": { + "format": "{icon} {count}", + "show-empty": false, + "format-icons": ["", ""], + "tooltip": true, + "tooltip-format": "{app}: {title}" + }, + "mpd": { + "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ", + "format-disconnected": "Disconnected ", + "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon} Stopped ", + "unknown-tag": "N/A", + "interval": 2, + "consume-icons": { + "on": " " + }, + "random-icons": { + "off": " ", + "on": " " + }, + "repeat-icons": { + "on": " " + }, + "single-icons": { + "on": "1 " + }, + "state-icons": { + "paused": "", + "playing": "" + }, + "tooltip-format": "MPD (connected)", + "tooltip-format-disconnected": "MPD (disconnected)" + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "󰾪", + "deactivated": "󰅶" + } + }, + "tray": { + // "icon-size": 21, + "spacing": 10 + }, + //"clock": { + // // "timezone": "America/New_York", + // "tooltip-format": "{:%Y %B}\n{calendar}", + // "format-alt": "{:%Y-%m-%d}" + //}, + "clock": { + "format": "{:%H:%M} ", + "format-alt": "{:%A, %B %d, %Y (%R)} 󰃭", + "tooltip-format": "{calendar}", + "calendar": { + "mode" : "year", + "mode-mon-col" : 3, + "weeks-pos" : "right", + "on-scroll" : 1, + "on-click-right": "mode", + "format": { + "months": "{}", + "days": "{}", + "weeks": "W{}", + "weekdays": "{}", + "today": "{}" + } + }, + "actions": { + "on-click-right": "mode", + "on-click-forward": "tz_up", + "on-click-backward": "tz_down", + "on-scroll-up": "shift_up", + "on-scroll-down": "shift_down" + } + }, + "cpu": { + "interval": 1, + "format": "{usage}% ", + "tooltip": false + }, + "memory": { + "interval": 2, + "format": "{}% " + }, + "temperature": { + // "thermal-zone": 2, + "hwmon-path": "/sys/class/hwmon/hwmon3/temp1_input", + "critical-threshold": 80, + "format-critical": "{temperatureC}°C 󰈸", + "format": "{temperatureC}°C {icon}", + "format-icons": ["󱃃", "󰔏"], + "interval": 1 + }, + "temperature#gpu": { + // "thermal-zone": 2, + "hwmon-path": "/sys/class/hwmon/hwmon5/temp1_input", + "critical-threshold": 80, + "format-critical": "󰽉 {temperatureC}°C 󰈸", + "format": "󰽉 {temperatureC}°C {icon}", + "format-icons": ["󱃃", "󰔏"], + "interval": 1 + }, + "backlight": { + // "device": "acpi_video1", + "format": "{percent}% {icon}", + "format-icons": ["", "", "", "", "", "", "", "", ""] + }, + "battery": { + "states": { + // "good": 95, + "warning": 30, + "critical": 15 + }, + "format": "{capacity}% {icon}", + "format-charging": "{capacity}% 󱐋", + "format-plugged": "{capacity}% ", + "format-alt": "{time} {icon}", + // "format-good": "", // An empty format will hide the module + // "format-full": "", + "format-icons": ["", "", "", "", ""] + }, + "battery#bat2": { + "bat": "BAT2" + }, + "network": { + // "interface": "wlp2*", // (Optional) To force the use of this interface + "format-wifi": "{essid} ({signalStrength}%) 󰤨", + "format-ethernet": "{ipaddr}/{cidr} 󰈀", + "tooltip-format": "{ifname} via {gwaddr} 󰩟", + "format-linked": "{ifname} (No IP) 󱦂", + "format-disconnected": "Disconnected ", + "format-alt": "{ifname}: {ipaddr}/{cidr}" + }, + "wireplumber": { + "format": "{volume}% {icon}", + "format-muted": "", + "on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle", + "format-icons": ["", "", ""] + }, + "custom/media": { + "format": "{icon} {}", + "return-type": "json", + "max-length": 40, + "format-icons": { + "spotify": "", + "default": "🎜" + }, + "escape": true, + "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder + // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name + } +} \ No newline at end of file diff --git a/home/.config/waybar/style.css b/home/.config/waybar/style.css new file mode 100644 index 00000000..ba8f0a6f --- /dev/null +++ b/home/.config/waybar/style.css @@ -0,0 +1,308 @@ +@define-color base #282828; +@define-color foreground #ebdbb2; +@define-color cyan #83a598; +@define-color green #8ec07c; +@define-color orange #fe8019; +@define-color pink #d3869b; +@define-color purple #b16286; +@define-color red #fb4934; +@define-color yellow #fabd2f; + +* { + /* `otf-font-awesome` is required to be installed for icons */ + font-family: "JetBrainsMono Nerd Font", "Material Design Icons"; + font-size: 14px; + color: @foreground; +} + +#window { + color: @pink; + background: @base; + transition-property: background-color; + border-radius: 100px; + padding: 0 10px; +} + +#waybar.empty #window { + background: none; +} + +window#waybar { + background-color: transparent; +} + +/* +window#waybar.empty { + background-color: transparent; +} + + +window#waybar.solo { + background-color: #FFFFFF; +} +*/ + +button { + margin-right: 5px; + /* Avoid rounded borders under each button name */ + border: none; + border-radius: 0; + background: @base; + box-shadow: none; + text-shadow: none; +} + +button:hover { + color: @pink; + border: none; + box-shadow: none; + text-shadow: none; +} + +#workspaces { + border-radius: 100px; + background: @base; + padding: 0 15px; +} + +#workspaces button { + border: none; + background-color: @base; + color: @foreground; + transition: 0.2s; + padding-left: 0; + padding-right: 4px; + margin-left: 2px; + margin-right: 2px; +} + +#workspaces button:hover { + color: @orange; + background: @base; + transition: 0.2s; +} + +#workspaces button.focused { + background: @base; +} + +#workspaces button.urgent { + color: @red; +} + +#mode { + background: @base; + box-shadow: none; + text-shadow: none; +} + +#clock, +#battery, +#cpu, +#memory, +#disk, +#temperature, +#backlight, +#network, +#pulseaudio, +#wireplumber, +#custom-media, +#tray, +#mode, +#idle_inhibitor, +#scratchpad, +#mpd, +#language, +#keyboard-state, +#custom-power { + padding-left: 15px; + padding-right: 18px; + background-color: @base; + border-radius: 100px; +} + +#window, +#workspaces { + margin: 0 5px; +} + +/* If workspaces is the leftmost module, omit left margin */ +.modules-left > widget:first-child > #workspaces { + margin-left: 0; +} + +/* If workspaces is the rightmost module, omit right margin */ +.modules-right > widget:last-child > #workspaces { + margin-right: 0; +} + +#clock { + color: @orange; +} + +#temperature { + color: @orange; +} + +#battery { + color: @purple; +} + +#battery.charging, +#battery.plugged { + color: @orange; +} + +@keyframes blink { + to { + background-color: @base; + color: #000000; + } +} + +#battery.critical:not(.charging) { + background-color: @red; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +label:focus { + color: @foreground; +} + +#cpu { + color: @purple; +} + +#memory { + color: @purple; +} + +#disk { + color: @purple; +} + +#backlight { + color: @yellow; +} + +#network { + color: @pink; +} + +#network.disconnected { + color: @red; +} + +#pulseaudio { + color: @cyan; +} + +#pulseaudio.muted { + color: @red; +} + +#wireplumber { + color: @cyan; +} + +#wireplumber.muted { + color: @red; +} + +#custom-media { + color: @purple; + min-width: 100px; +} + +#custom-media.custom-spotify { + color: @purple; +} + +#custom-media.custom-vlc { + color: @purple; +} + +#temperature { + color: @purple; +} + +#temperature.critical { + color: @base; + background: @red; + box-shadow: inset 0px 0px 0px 3px @base; +} + +#tray { + color: @foreground; +} + +#tray > .passive { + -gtk-icon-effect: dim; +} + +#tray > .needs-attention { + -gtk-icon-effect: highlight; + background-color: @base; +} + +#tray * { + background: @base; +} + +#idle_inhibitor { + color: @yellow; +} + +#idle_inhibitor.activated { + background-color: @red; + box-shadow: inset 0px 0px 0px 3px @base; + color: @base; +} + +#mpd { + color: @purple; +} + +#mpd.disconnected { + background-color: @red; + color: @base; + box-shadow: inset 0px 0px 0px 3px @base; +} + +#mpd.stopped { + color: @red; +} + +#mpd.paused { + color: @yellow; +} + +#language { + color: @orange; + min-width: 16px; +} + +#keyboard-state { + color: @orange; + min-width: 16px; +} + +#keyboard-state > label { + padding: 0 5px; +} + +#keyboard-state > label.locked { + color: @red; +} + +#scratchpad { + color: @yellow; +} + +#scratchpad.empty { + color: @cyan; +} diff --git a/home/.config/wofi/config b/home/.config/wofi/config new file mode 100644 index 00000000..df51ef16 --- /dev/null +++ b/home/.config/wofi/config @@ -0,0 +1 @@ +width=450 \ No newline at end of file diff --git a/home/.config/wofi/style.css b/home/.config/wofi/style.css new file mode 100644 index 00000000..4ef3d187 --- /dev/null +++ b/home/.config/wofi/style.css @@ -0,0 +1,83 @@ +@define-color darkbase #1d2021; +@define-color base #282828; +@define-color foreground #ebdbb2; +@define-color cyan #83a598; +@define-color green #8ec07c; +@define-color orange #fe8019; +@define-color pink #d3869b; +@define-color purple #d3869b; +@define-color red #fb4934; +@define-color yellow #fabd2f; + +window { + margin: 0px; + border: 3px solid @foreground; + background-color: @base; + border-radius: 8px; + outline-style: none; +} + +#input { + margin: 5px; + border: none; + border-radius: 8px; + color: @foreground; + background-color: @darkbase; + outline-style: none; +} + +#inner-box { + margin: 5px; + border: none; + background-color: @base; + outline-style: none; +} + +#outer-box { + margin: 5px; + border: none; + background-color: @base; + outline-style: none; +} + +#scroll { + margin: 0px; + border: none; + outline-style: none; +} + +#text { + margin: 5px; + border: none; + color: @foreground; +} + +#entry { + border-radius: 50px; + outline-style: none; +} + +#entry.activatable #text { + color: @darkbase; +} + +#entry > * { + color: @base; +} + +#entry:selected { + background-color: @darkbase; + border: none; + border-radius: 8px; + outline-style: none; +} + +#entry:selected #text { + font-weight: bold; + color: @foreground; + background-color: @darkbase; +} + +#img:selected { + background: none; +} diff --git a/install.sh b/install.sh index bae64722..2281cd8d 100755 --- a/install.sh +++ b/install.sh @@ -1,7 +1,13 @@ #!/bin/bash # Parse flags -help_message="Usage: $0 [--desktop|-d | --terminal|-t]" +help_message="Usage: $0 [--desktop|-d | --hyprland|-h | --terminal|-t] + +Options: + --desktop, -d Install desktop programs and configure GNOME (must already be installed). + --hyprland, -h Install desktop programs and Hyprland. + --terminal, -t Only install the basic dependencies for CLI use." + if [ $# -eq 0 ]; then echo "$help_message" exit 1 @@ -11,10 +17,17 @@ while [[ $# -gt 0 ]]; do case "$1" in --desktop | -d) desktop=true + hyprland=false + shift + ;; + --hyprland | -h) + desktop=true + hyprland=true shift ;; --terminal | -t) desktop=false + hyprland=false shift ;; *) @@ -85,6 +98,34 @@ if $desktop; then ) fi +if $hyprland; then + programs+=( + dunst # Notifications + foot # Terminal + hyprland # Window manager + hyprlock # Screen locker + hyprpaper # Wallpaper manager + hyprpicker # Color picker + hyprpolkitagent # Auth pop-up for sudo access + hyprsunset # Blue light filter + nm-applet # Network manager applet + pipewire # Audio server + udiskie # Automount USB drives + waybar # Status bar + wireplumber # PipeWire session manager + wofi # Launcher + xdg-desktop-portal-hyprland # D-Bus support for Hyprland + + nautilus # File manager + nautilus-admin-gtk4 # Open as administrator + nautilus-image-converter # Image converter + nautilus-open-any-terminal # Terminal in Nautilus + + qt5-wayland # Qt5 Wayland support + qt6-wayland # Qt6 Wayland support + ) +fi + for prog in "${programs[@]}"; do echo -e "${YELLOW}[+] Installing ${prog}...${NC}" case $pkg_manager in