diff --git a/.config/hypr/conf.d/theme.conf b/.config/hypr/conf.d/theme.conf index 4b2c6ba..887dd0e 100644 --- a/.config/hypr/conf.d/theme.conf +++ b/.config/hypr/conf.d/theme.conf @@ -33,8 +33,8 @@ decoration { rounding_power = 10 # Change transparency of focused and unfocused windows - active_opacity = 0.85 - inactive_opacity = 0.85 + active_opacity = 0.9 + inactive_opacity = 0.9 shadow { enabled = true diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf index 6e703d5..0344f52 100644 --- a/.config/hypr/hyprland.conf +++ b/.config/hypr/hyprland.conf @@ -17,7 +17,7 @@ monitor=,preferred,auto,1.566667 # Set programs that you use $terminal = kitty $filemanager = kitty -e yazi -$menu = wofi --show drun +$menu = rofi -show drun $powerMenu = bash ~/.config/wofi/wofi-powermenu.sh $browser = firefox $email = thunderbird @@ -30,7 +30,7 @@ $lockscreen = hyprlock ################# # Autostart necessary processes (like notifications daemons, status bars, etc.) -exec-once = waybar +#exec-once = waybar exec-once = hyprpaper & hypridle & $lockscreen exec-once = dunst exec-once = [workspace 2 silent] $browser diff --git a/.config/rofi/bluetooth-menu.rasi b/.config/rofi/bluetooth-menu.rasi new file mode 100644 index 0000000..f4fafb0 --- /dev/null +++ b/.config/rofi/bluetooth-menu.rasi @@ -0,0 +1,99 @@ +/* Bluetooth menu */ + +@theme "~/.config/rofi/theme.rasi" + +configuration { + font: "JetBrainsMono Nerd Font 8"; + hover-select: true; + me-select-entry: "MousePrimary"; + me-accept-entry: "!MousePrimary"; +} + +/* Window */ + +window { + location: north; + anchor: south; + y-offset: 3px; + width: 240px; + border: 3px; + border-radius: 10px; + border-color: @main-br; + background-color: @main-bg; + children: [ mainbox ]; +} + +mainbox { + spacing: 0; + background-color: @main-br; + text-color: @main-fg; + children: [ textbox-custom, listview, inputbar ]; +} + +textbox-custom { + font: "JetBrainsMono Nerd Font Bold 8"; + horizontal-align: 0.5; + padding: 1px 0; + expand: false; + background-color: @select-bg; + text-color: @select-fg; + expand: false; + content: "󰂱 Bluetooth"; +} + +/* Input */ + +inputbar { + margin: -32px 6px 6px; + border-radius: 6px; + spacing: inherit; + background-color: @input-bg; + text-color: inherit; + children: [ prompt, entry ]; +} +prompt { + padding: 6px 6px 6px 12px; + background-color: inherit; + text-color: inherit; +} +entry { + placeholder: "Search"; + padding: 6px 0; + cursor: text; + background-color: inherit; + text-color: inherit; +} + +/* List */ + +listview { + border: 2px 0 0 0; + border-radius: 8px; + border-color: @main-br; + lines: 6; + fixed-height: false; + dynamic: false; + cycle: false; + margin: 0 0 -2px; + padding: 6px 6px 40px; + background-color: @main-bg; +} + +element { + padding: 6px; + cursor: pointer; + background-color: inherit; + text-color: @main-fg; +} +element selected active, +element selected normal { + border-radius: 6px; + background-color: @select-bg; + text-color: @select-fg; +} +element-text { + padding: 0 6px; + cursor: inherit; + background-color: inherit; + text-color: inherit; +} diff --git a/.config/rofi/config.rasi b/.config/rofi/config.rasi new file mode 100644 index 0000000..e334cdd --- /dev/null +++ b/.config/rofi/config.rasi @@ -0,0 +1,171 @@ +configuration { +/* modes: "window,drun,run,ssh";*/ +/* font: "mono 12";*/ +/* location: 0;*/ +/* yoffset: 0;*/ +/* xoffset: 0;*/ +/* fixed-num-lines: true;*/ +/* show-icons: false;*/ +/* preview-cmd: ;*/ +/* on-selection-changed: ;*/ +/* on-mode-changed: ;*/ +/* on-entry-accepted: ;*/ +/* on-menu-canceled: ;*/ +/* on-menu-error: ;*/ +/* on-screenshot-taken: ;*/ +/* terminal: "rofi-sensible-terminal";*/ +/* ssh-client: "ssh";*/ +/* ssh-command: "{terminal} -e {ssh-client} {host} [-p {port}]";*/ +/* run-command: "{cmd}";*/ +/* run-list-command: "";*/ +/* run-shell-command: "{terminal} -e {cmd}";*/ +/* window-command: "wmctrl -i -R {window}";*/ +/* window-match-fields: "all";*/ +/* icon-theme: ;*/ +/* drun-match-fields: "name,generic,exec,categories,keywords";*/ +/* drun-categories: ;*/ +/* drun-show-actions: false;*/ +/* drun-display-format: "{name} [({generic})]";*/ +/* drun-url-launcher: "xdg-open";*/ +/* disable-history: false;*/ +/* ignored-prefixes: "";*/ +/* sort: false;*/ +/* sorting-method: "normal";*/ +/* case-sensitive: false;*/ +/* case-smart: false;*/ +/* cycle: true;*/ +/* sidebar-mode: false;*/ +/* hover-select: false;*/ +/* eh: 1;*/ +/* auto-select: false;*/ +/* parse-hosts: false;*/ +/* parse-known-hosts: true;*/ +/* combi-modes: "window,run";*/ +/* matching: "normal";*/ +/* tokenize: true;*/ +/* m: "-5";*/ +/* filter: ;*/ +/* dpi: -1;*/ +/* threads: 0;*/ +/* scroll-method: 0;*/ +/* window-format: "{w} {c} {t}";*/ +/* click-to-exit: true;*/ +/* global-kb: false;*/ +/* max-history-size: 25;*/ +/* combi-hide-mode-prefix: false;*/ +/* combi-display-format: "{mode} {text}";*/ +/* matching-negate-char: '-' /* unsupported */;*/ +/* cache-dir: ;*/ +/* window-thumbnail: false;*/ +/* drun-use-desktop-cache: false;*/ +/* drun-reload-desktop-cache: false;*/ +/* normalize-match: false;*/ +/* steal-focus: false;*/ +/* application-fallback-icon: ;*/ +/* refilter-timeout-limit: 300;*/ +/* xserver-i300-workaround: false;*/ +/* completer-mode: "filebrowser";*/ +/* pid: "/run/user/1000/rofi.pid";*/ +/* display-window: ;*/ +/* display-run: ;*/ +/* display-ssh: ;*/ +/* display-drun: ;*/ +/* display-combi: ;*/ +/* display-keys: ;*/ +/* display-filebrowser: ;*/ +/* display-recursivebrowser: ;*/ +/* kb-primary-paste: "Control+V,Shift+Insert";*/ +/* kb-secondary-paste: "Control+v,Insert";*/ +/* kb-secondary-copy: "Control+c";*/ +/* kb-clear-line: "Control+w";*/ +/* kb-move-front: "Control+a";*/ +/* kb-move-end: "Control+e";*/ +/* kb-move-word-back: "Alt+b,Control+Left";*/ +/* kb-move-word-forward: "Alt+f,Control+Right";*/ +/* kb-move-char-back: "Left,Control+b";*/ +/* kb-move-char-forward: "Right,Control+f";*/ +/* kb-remove-word-back: "Control+Alt+h,Control+BackSpace";*/ +/* kb-remove-word-forward: "Control+Alt+d";*/ +/* kb-remove-char-forward: "Delete,Control+d";*/ +/* kb-remove-char-back: "BackSpace,Shift+BackSpace,Control+h";*/ +/* kb-remove-to-eol: "Control+k";*/ +/* kb-remove-to-sol: "Control+u";*/ +/* kb-accept-entry: "Control+j,Control+m,Return,KP_Enter";*/ +/* kb-accept-custom: "Control+Return";*/ +/* kb-accept-custom-alt: "Control+Shift+Return";*/ +/* kb-accept-alt: "Shift+Return";*/ +/* kb-delete-entry: "Shift+Delete";*/ +/* kb-mode-next: "Shift+Right,Control+Tab";*/ +/* kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab";*/ +/* kb-mode-complete: "Control+l";*/ +/* kb-row-left: "Control+Page_Up";*/ +/* kb-row-right: "Control+Page_Down";*/ +/* kb-row-up: "Up,Control+p";*/ +/* kb-row-down: "Down,Control+n";*/ +/* kb-row-tab: "";*/ +/* kb-element-next: "Tab";*/ +/* kb-element-prev: "ISO_Left_Tab";*/ +/* kb-page-prev: "Page_Up";*/ +/* kb-page-next: "Page_Down";*/ +/* kb-row-first: "Home,KP_Home";*/ +/* kb-row-last: "End,KP_End";*/ +/* kb-row-select: "Control+space";*/ +/* kb-screenshot: "Alt+S";*/ +/* kb-ellipsize: "Alt+period";*/ +/* kb-toggle-case-sensitivity: "grave,dead_grave";*/ +/* kb-toggle-sort: "Alt+grave";*/ +/* kb-cancel: "Escape,Control+g,Control+bracketleft";*/ +/* kb-custom-1: "Alt+1";*/ +/* kb-custom-2: "Alt+2";*/ +/* kb-custom-3: "Alt+3";*/ +/* kb-custom-4: "Alt+4";*/ +/* kb-custom-5: "Alt+5";*/ +/* kb-custom-6: "Alt+6";*/ +/* kb-custom-7: "Alt+7";*/ +/* kb-custom-8: "Alt+8";*/ +/* kb-custom-9: "Alt+9";*/ +/* kb-custom-10: "Alt+0";*/ +/* kb-custom-11: "Alt+exclam";*/ +/* kb-custom-12: "Alt+at";*/ +/* kb-custom-13: "Alt+numbersign";*/ +/* kb-custom-14: "Alt+dollar";*/ +/* kb-custom-15: "Alt+percent";*/ +/* kb-custom-16: "Alt+dead_circumflex";*/ +/* kb-custom-17: "Alt+ampersand";*/ +/* kb-custom-18: "Alt+asterisk";*/ +/* kb-custom-19: "Alt+parenleft";*/ +/* kb-select-1: "Super+1";*/ +/* kb-select-2: "Super+2";*/ +/* kb-select-3: "Super+3";*/ +/* kb-select-4: "Super+4";*/ +/* kb-select-5: "Super+5";*/ +/* kb-select-6: "Super+6";*/ +/* kb-select-7: "Super+7";*/ +/* kb-select-8: "Super+8";*/ +/* kb-select-9: "Super+9";*/ +/* kb-select-10: "Super+0";*/ +/* kb-entry-history-up: "Control+Up";*/ +/* kb-entry-history-down: "Control+Down";*/ +/* kb-matcher-up: "Super+equal";*/ +/* kb-mather-down: "Super+minus";*/ +/* ml-row-left: "ScrollLeft";*/ +/* ml-row-right: "ScrollRight";*/ +/* ml-row-up: "ScrollUp";*/ +/* ml-row-down: "ScrollDown";*/ +/* me-select-entry: "MousePrimary";*/ +/* me-accept-entry: "MouseDPrimary";*/ +/* me-accept-custom: "Control+MouseDPrimary";*/ + timeout { + action: "kb-cancel"; + delay: 0; + } + filebrowser { + directories-first: true; + sorting-method: "name"; + } + modes: "drun"; +} + +//@theme "/usr/share/rofi/themes/gruvbox-dark-soft.rasi" + +@theme "/usr/share/rofi/themes/gruvbox-dark.rasi" diff --git a/.config/rofi/power-menu.rasi b/.config/rofi/power-menu.rasi new file mode 100644 index 0000000..29fa61f --- /dev/null +++ b/.config/rofi/power-menu.rasi @@ -0,0 +1,72 @@ +/* Power menu */ + +@theme "~/.config/rofi/theme.rasi" + +configuration { + font: "JetBrainsMono Nerd Font 8"; + hover-select: true; + me-select-entry: "MousePrimary"; + me-accept-entry: "!MousePrimary"; +} + +/* Window */ + +window { + location: northeast; + anchor: north; + x-offset: -3px; + y-offset: 3px; + width: 150px; + border: 3px; + border-radius: 10px; + border-color: @main-br; + background-color: @main-bg; + children: [ mainbox ]; +} + +mainbox { + spacing: 0; + background-color: @main-br; + text-color: @main-fg; + children: [ textbox-custom, listview ]; +} + +textbox-custom { + font: "JetBrainsMono Nerd Font Bold 2"; + horizontal-align: 0.5; + padding: 0; + expand: false; + background-color: @select-bg; + text-color: @select-fg; + expand: false; + // content: " Power"; +} + +/* List */ + +listview { + border: 2px 0 0 0; + border-radius: 8px; + border-color: @main-br; + lines: 6; + padding: 6px; + background-color: @main-bg; +} + +element { + padding: 6px; + cursor: pointer; + background-color: inherit; + text-color: @main-fg; +} +element selected.normal { + border-radius: 6px; + background-color: @select-bg; + text-color: @select-fg; +} +element-text { + padding: 0 6px; + cursor: inherit; + background-color: inherit; + text-color: inherit; +} diff --git a/.config/rofi/theme.rasi b/.config/rofi/theme.rasi new file mode 100644 index 0000000..fccdc27 --- /dev/null +++ b/.config/rofi/theme.rasi @@ -0,0 +1,45 @@ +/* Gruvbox Dark */ + +* { + bg0h: #1d2021; + bg0: #282828; + bg1: #3c3836; + bg2: #504945; + bg3: #665c54; + bg4: #7c6f64; + gray: #928374; + fg4: #a89984; + fg3: #bdae93; + fg2: #d5c4a1; + fg1: #ebdbb2; + fg0: #fbf1c7; + red: #cc241d; + brightred: #fb4934; + green: #98971a; + brightgreen: #b8bb26; + yellow: #d79921; + brightyellow: #fabd2f; + blue: #458588; + brightblue: #83a598; + purple: #b16286; + brightpurple: #d3869b; + aqua: #689d6a; + brightaqua: #8ec07c; + orange: #d65d0e; + brightorange: #fe8019; +} + +/* + bg - background + fg - foreground + br - border +*/ + +* { + main-bg: @bg0h; + main-fg: @fg0; + main-br: @yellow; + input-bg: @bg1; + select-bg: @yellow; + select-fg: @bg0h; +} diff --git a/.config/rofi/theme.rasi.disabled b/.config/rofi/theme.rasi.disabled new file mode 100644 index 0000000..830705f --- /dev/null +++ b/.config/rofi/theme.rasi.disabled @@ -0,0 +1,106 @@ +/* ========================================================================== + Rofi color theme + + Based on the Gruvbox color scheme for Vim by morhetz + https://github.com/morhetz/gruvbox + + File: gruvbox-dark.rasi + Desc: Gruvbox dark color theme for Rofi + Author: bardisty + Source: https://github.com/bardisty/gruvbox-rofi + Modified: Mon Feb 12 2018 04:08:43 PST -0800 + ========================================================================== */ + +* { + /* Theme settings */ + highlight: bold italic; + scrollbar: false; + + /* Gruvbox dark colors */ + gruvbox-dark-bg0: #1d2021; + gruvbox-dark-bg0-soft: #282828; + gruvbox-dark-bg3: #665c54; + gruvbox-dark-fg0: #fbf1c7; + gruvbox-dark-fg1: #ebdbb2; + gruvbox-dark-red-dark: #cc241d; + gruvbox-dark-red-light: #fb4934; + gruvbox-dark-yellow-dark: #d79921; + gruvbox-dark-yellow-light: #fabd2f; + gruvbox-dark-gray: #928374; + + /* Theme colors */ + background: @gruvbox-dark-bg0; + background-color: @background; + foreground: @gruvbox-dark-fg1; + border-color: @gruvbox-dark-gray; + separatorcolor: @border-color; + scrollbar-handle: @border-color; + + normal-background: @background; + normal-foreground: @foreground; + alternate-normal-background: @gruvbox-dark-bg0-soft; + alternate-normal-foreground: @foreground; + selected-normal-background: @gruvbox-dark-bg3; + selected-normal-foreground: @gruvbox-dark-fg0; + + active-background: @gruvbox-dark-yellow-dark; + active-foreground: @background; + alternate-active-background: @active-background; + alternate-active-foreground: @active-foreground; + selected-active-background: @gruvbox-dark-yellow-light; + selected-active-foreground: @active-foreground; + + urgent-background: @gruvbox-dark-red-dark; + urgent-foreground: @background; + alternate-urgent-background: @urgent-background; + alternate-urgent-foreground: @urgent-foreground; + selected-urgent-background: @gruvbox-dark-red-light; + selected-urgent-foreground: @urgent-foreground; +} + +* { + bg0h: #1d2021; + bg0: #282828; + bg1: #3c3836; + bg2: #504945; + bg3: #665c54; + bg4: #7c6f64; + gray: #928374; + fg4: #a89984; + fg3: #bdae93; + fg2: #d5c4a1; + fg1: #ebdbb2; + fg0: #fbf1c7; + red: #cc241d; + brightred: #fb4934; + green: #98971a; + brightgreen: #b8bb26; + yellow: #d79921; + brightyellow: #fabd2f; + blue: #458588; + brightblue: #83a598; + purple: #b16286; + brightpurple: #d3869b; + aqua: #689d6a; + brightaqua: #8ec07c; + orange: #d65d0e; + brightorange: #fe8019; +} + +/* + bg - background + fg - foreground + br - border +*/ + +* { + main-bg: @bg0h; + main-fg: @fg0; + main-br: @yellow; + input-bg: @bg1; + select-bg: @yellow; + select-fg: @bg0h; +} + +@import "gruvbox-common" + diff --git a/.config/rofi/wifi-menu.rasi b/.config/rofi/wifi-menu.rasi new file mode 100644 index 0000000..287e707 --- /dev/null +++ b/.config/rofi/wifi-menu.rasi @@ -0,0 +1,99 @@ +/* WiFi menu */ + +@theme "~/.config/rofi/theme.rasi" + +configuration { + font: "JetBrainsMono Nerd Font 8"; + hover-select: true; + me-select-entry: "MousePrimary"; + me-accept-entry: "!MousePrimary"; +} + +/* Window */ + +window { + location: north; + anchor: south; + y-offset: 3px; + width: 240px; + border: 3px; + border-radius: 10px; + border-color: @main-br; + background-color: @main-bg; + children: [ mainbox ]; +} + +mainbox { + spacing: 0; + background-color: @main-br; + text-color: @main-fg; + children: [ textbox-custom, listview, inputbar ]; +} + +textbox-custom { + font: "JetBrainsMono Nerd Font Bold 8"; + horizontal-align: 0.5; + padding: 1px 0; + expand: false; + background-color: @select-bg; + text-color: @select-fg; + expand: false; + content: "󰤥 Wi-Fi"; +} + +/* Input */ + +inputbar { + margin: -32px 6px 6px; + border-radius: 6px; + spacing: inherit; + background-color: @input-bg; + text-color: inherit; + children: [ prompt, entry ]; +} +prompt { + padding: 6px 6px 6px 12px; + background-color: inherit; + text-color: inherit; +} +entry { + placeholder: "Search"; + padding: 6px 0; + cursor: text; + background-color: inherit; + text-color: inherit; +} + +/* List */ + +listview { + border: 2px 0 0 0; + border-radius: 8px; + border-color: @main-br; + lines: 6; + fixed-height: false; + dynamic: false; + cycle: false; + margin: 0 0 -2px; + padding: 6px 6px 40px; + background-color: @main-bg; +} + +element { + padding: 6px; + cursor: pointer; + background-color: inherit; + text-color: @main-fg; +} +element selected active, +element selected normal { + border-radius: 6px; + background-color: @select-bg; + text-color: @select-fg; +} +element-text { + padding: 0 6px; + cursor: inherit; + background-color: inherit; + text-color: inherit; +} diff --git a/.config/waybar/backup.css b/.config/waybar/backup.css new file mode 100644 index 0000000..d364235 --- /dev/null +++ b/.config/waybar/backup.css @@ -0,0 +1,368 @@ +/* ============================================================================= + * + * Waybar configuration + * + * Configuration reference: https://github.com/Alexays/Waybar/wiki/Configuration + * + * =========================================================================== */ + +/* ----------------------------------------------------------------------------- + * Keyframes + * -------------------------------------------------------------------------- */ + +@import "machiatto.css"; + +/* + Polar Night + nord0 #2e3440 + nord1 #3b4252 + nord2 #434c5e + nord3 #4c566a + Snow Storm + nord4 #d8dee9 + nord5 #e5e9f0 + nord6 #eceff4 + Frost + nord7 #8fbcbb + nord8 #88c0d0 + nord9 #81a1c1 + nord10 #5e81ac + Aurora + nord11 #bf616a + nord12 #d08770 + nord13 #ebcb8b + nord14 #a3be8c + nord15 #b48ead + */ + +/* ----------------------------------------------------------------------------- + * Base styles + * -------------------------------------------------------------------------- */ + +/* Reset all styles */ + +* { + color: @lavender; + border: 0; + padding: 0 0; + font-family: UbuntuMono; + /* font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; */ + /* font-family: "Hack Nerd Font"; */ + font-size: 18px; + font-weight: bold; + /* padding-bottom:4px; + padding-top: 4px; */ +} + +window#waybar { + border-bottom: 2px solid @mauve; + /* border-radius: 10px; */ + /* background:#2d2a2e; */ + /* background-color: rgba(36, 39, 58, 0.85); */ + /* background-color: rgba(0, 0, 0, 0); */ + background-color: shade(#1e1e2e, 0.95); +} + +#workspaces button { + color: @base; + border-radius: 50%; + /* background-color: @base; */ + margin: 0px 0px; + padding: 2 3 2 3; +} + +#workspaces * { + color: whitesmoke; +} + +#workspaces { + border-style: solid; + background-color: @base; + opacity: 1; + border-radius: 10px; + margin: 8px 0px; + +} + +#workspaces button.focused { + color: @flamingo; + border-radius: 20px; + /* background-color: @flamingo; */ +} + +#workspaces button.focused * { + color: @flamingo; +} + +#mode { + color: #ebcb8b; +} + +#clock, +#custom-swap, +#custom-background, +#custom-cava-internal, +#battery, +#cpu, +#memory, +#idle_inhibitor, +#temperature, +#custom-keyboard-layout, +#backlight, +#network, +#pulseaudio, +#mode, +#tray, +#custom-power, +#custom-pacman { + padding: 5px 14px; + border-style: solid; + background-color: shade(@base, 1.1); + opacity: 1; + margin: 8px 0; +} + +/* ----------------------------------------------------------------------------- + * Module styles + * -------------------------------------------------------------------------- */ +#custom-cava-internal { + border-radius: 10px; + color: @mauve; +} + +#custom-swap { + border-radius: 10px; + color: white; + margin-left: 15px; +} + +#custom-background { + border-radius: 0px 10px 10px 0px; + background-color: @base; + color: white; + padding: 5px 14px 5px 5px; +} + +#clock { + /* background-color:#a3be8c; */ + color: @sky; + border-radius: 10px; + margin: 8px 10px; +} + +#backlight { + color: @yellow; + /* border-bottom: 2px solid @yellow; */ + border-radius: 10px 0 0 10px; +} + +#battery { + color: #d8dee9; + /* border-bottom: 2px solid #d8dee9; */ + border-radius: 0 10px 10px 0; + margin-right: 10px; +} + +#battery.charging { + color: #81a1c1; + /* border-bottom: 2px solid #81a1c1; */ +} + +@keyframes blink { + to { + color: @red; + /* border-bottom: 2px solid @red; */ + } +} + +#battery.critical:not(.charging) { + color: #bf616a; + /* border-bottom: 2px solid #bf616a; */ + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +#cpu { + color: @sky; + /* border-bottom: 2px solid @sky; */ +} + +#cpu #cpu-icon { + color: @sky; +} + +#memory { + background-color: #d3869b; + color: @base; +} + +#network.disabled { + color: #bf616a; + /* border-bottom: 2px solid #bf616a; */ +} + +#network { + color: @green; + /* border-bottom: 2px solid @green; */ + border-radius: 10px; + margin-right: 5px; +} + +#network.disconnected { + color: #bf616a; + /* border-bottom: 2px solid #bf616a; */ +} + +#pulseaudio { + color: @flamingo; + /* border-bottom: 2px solid @flamingo; */ +} + +#pulseaudio.muted { + color: #3b4252; + /* border-bottom: 2px solid #3b4252; */ +} + +#temperature { + color: @teal; + /* border-bottom: 2px solid @teal; */ + border-radius: 10px 0 0 10px; +} + +#temperature.critical { + color: @red; + /* border-bottom: 2px solid @red; */ +} + +#idle_inhibitor { + background-color: #ebcb8b; + color: @base; +} + +#tray { + /* background-color: @base; */ + margin: 8px 10px; + border-radius: 10px; +} + +#custom-launcher, +#custom-power {} + +#custom-launcher { + background-color: @mauve; + color: @base; + border-radius: 0px 15px 0px 0px; + padding: 5px 5px 5px 15px; +} + +#custom-power { + color: @base; + background-color: @red; + border-radius: 10px; + margin-left: 5px; + margin-right: 15px; + padding: 5px 10px; +} + +#window { + border-style: hidden; + margin-left: 10px; + /* margin-top:1px; + padding: 8px 1rem; */ + margin-right: 10px; + color: #eceff4; +} + +#mode { + margin-bottom: 3px; +} + +#custom-keyboard-layout { + color: @peach; + /* border-bottom: 2px solid @peach; */ + border-radius: 0 10px 10px 0; + margin-right: 10px; +} + + + +/* window#waybar { + background: #2d2a2e; + } + + * { + color: #c8b9a9; + font-family: Ubuntu Mono, sans-serif; + font-size: 12px; + } + + #workspaces button.focused { + color: #f2e5bc; + } + + #workspaces button { + color: #c8b9a9; + } + + .separator { + background-color: #c8b9a9; + } + + #mode { + color: #ebcb8b; + } + + #clock { + color: #a3be8c; + } + + #battery { + color: #d8dee9; + } + + #battery.charging { + color: #b48ead; + } + + #battery.critical:not(.charging) { + color: #bf616a; + } + + #cpu { + color: #a3be8c; + } + + #memory { + color: #d3869b; + } + + #network { + color: #8fbcbb; + } + + #network.disabled { + color: #bf616a; + } + + #network.disconnected { + color: #bf616a; + } + + #pulseaudio { + color: #b48ead; + } + + #pulseaudio.muted { + color: #bf616a; + } + + #temperature { + color: #8fbcbb; + } + + #temperature.critical { + color: #bf616a; + } */ \ No newline at end of file diff --git a/.config/waybar/config.jsonc b/.config/waybar/config.jsonc new file mode 100644 index 0000000..8194582 --- /dev/null +++ b/.config/waybar/config.jsonc @@ -0,0 +1,400 @@ +{ + // ─────────────────────────────────────────────────────────────┤ header ├─── + + "layer": "top", + "position": "top", + "mode": "dock", + "reload_style_on_change": true, + "gtk-layer-shell": true, + + // ──────────────────────────────────────────────────────────┤ positions ├─── + + "modules-left": [ + "custom/left1", + + "hyprland/workspaces", // workspaces + "custom/right1", + + "custom/paddw", + "mpris" // media info + ], + + "modules-center": [ + "custom/paddc", + "custom/left2", + "custom/temperature", // temperature + + "custom/left3", + "memory", // memory + + "custom/left4", + "cpu", // cpu + "custom/leftin1", + + "custom/left5", + "custom/distro", // distro icon + "custom/right2", + + "custom/rightin1", + "idle_inhibitor", // idle inhibitor + "clock#time", // time + "custom/right3", + + "clock#date", // date + "custom/right4", + + "custom/wifi", // wi-fi + "bluetooth", // bluetooth + "custom/update", // system update + "custom/right5" + ], + + "modules-right": [ + + "custom/left6", + "pulseaudio", // output device + + "custom/left7", + "backlight", // brightness + + "custom/left8", + "battery", // battery + + "custom/leftin2", + "custom/power" // power button + ], + + // ─────────────────────────────────────────────────────────┤ workspaces ├─── + + "hyprland/workspaces": { + "on-scroll-up": "hyprctl dispatch workspace -1", + "on-scroll-down": "hyprctl dispatch workspace +1", + "persistent-workspaces": { + "1": [], + "2": [], + "3": [], + "4": [], + "5": [] + } + }, + + // ────────────────────────────────────────────────────────┤ temperature ├─── + + "custom/temperature": { + "exec": "~/.config/waybar/scripts/cpu-temp.sh", + "return-type": "json", + "format": "{}", + "interval": 5, + "min-length": 8, + "max-length": 8 + }, + + // ─────────────────────────────────────────────────────────────┤ memory ├─── + + "memory": { + "states": { + "warning": 75, + "critical": 90 + }, + + "format": " {percentage}%", + "format-critical": "󰀦 {percentage}%", + "tooltip": false, + // "tooltip-format": "Memory Used: {used:0.1f} GB / {total:0.1f} GB", + "interval": 5, + "min-length": 7, + "max-length": 7 + }, + + // ────────────────────────────────────────────────────────────────┤ cpu ├─── + + "cpu": { + "format": " {usage}%", + "tooltip": false, + "interval": 5, + "min-length": 6, + "max-length": 6 + }, + + // ─────────────────────────────────────────────────────────────┤ distro ├─── + + "custom/distro": { + "format": "󰣇 ", + "tooltip": false + }, + + // ─────────────────────────────────────────────────────┤ idle inhibitor ├─── + + "idle_inhibitor": { + "format": "{icon}", + + "format-icons": { + "activated": "󰈈 ", + "deactivated": "󰈉 " + }, + + "tooltip-format-activated": "Presentation Mode", + "tooltip-format-deactivated": "Idle Mode", + "start-activated": false + }, + + // ───────────────────────────────────────────────────────────────┤ time ├─── + + "clock#time": { + "format": "{:%H:%M}", + "tooltip": false, + // "tooltip-format": "Standard Time: {:%I:%M %p}", + "min-length": 6, + "max-length": 6 + }, + + // ───────────────────────────────────────────────────────────────┤ date ├─── + + "clock#date": { + "format": "󰨳 {:%m-%d}", + "tooltip-format": "{calendar}", + + "calendar": { + "mode": "month", + "mode-mon-col": 6, + "on-click-right": "mode", + + "format": { + "months": + "{}", + "weekdays": + "{}", + "today": + "{}" + } + }, + + "actions": { + "on-click": "mode", + "on-click-right": "mode" + }, + + "min-length": 8, + "max-length": 8 + }, + + // ──────────────────────────────────────────────────────────────┤ wi-fi ├─── + + "custom/wifi": { + "exec": "~/.config/waybar/scripts/wifi-status.sh", + "return-type": "json", + "format": "{}", + "on-click": "~/.config/waybar/scripts/wifi-menu.sh", + "on-click-right": "kitty --title '󰤨 Network Manager TUI' bash -c nmtui", + "interval": 1, + "min-length": 1, + "max-length": 1 + }, + + // ──────────────────────────────────────────────────────────┤ bluetooth ├─── + + "bluetooth": { + "format": "󰂰", + "format-disabled": "󰂲", + "format-connected": "󰂱", + "format-connected-battery": "󰂱", + + "tooltip-format": + "{num_connections} connected", + "tooltip-format-disabled": + "Bluetooth Disabled", + "tooltip-format-connected": + "{device_enumerate}", + "tooltip-format-enumerate-connected": + "{device_alias}", + "tooltip-format-enumerate-connected-battery": + ":: {device_alias}: 󱊣 {device_battery_percentage}%", + + "on-click": "~/.config/waybar/scripts/bluetooth-menu.sh", + "on-click-right": "kitty --title '󰂯 Bluetooth TUI' bash -c bluetui", + "interval": 1, + "min-length": 1, + "max-length": 1 + }, + + // ──────────────────────────────────────────────────────┤ system update ├─── + + "custom/update": { + "exec": "~/.config/waybar/scripts/system-update.sh", + "return-type": "json", + "format": "{}", + "on-click": "~/.config/waybar/scripts/system-update.sh up", + "interval": 30, + "min-length": 1, + "max-length": 1 + }, + + // ─────────────────────────────────────────────────────────┤ media info ├─── + + "mpris": { + "format": "{player_icon} {title} - {artist}", + "format-paused": "{status_icon} {title} - {artist}", + + "player-icons": { + "default": "󰝚 ", + "spotify": "󰓇 ", + "firefox": "󰗃 " + }, + "status-icons": { + "paused": "\u200A\u200A󰏤\u2009\u2009" + }, + + "tooltip-format": "Playing: {title} - {artist}", + "tooltip-format-paused": "Paused: {title} - {artist}", + "min-length": 5, + "max-length": 35 + }, + + // ──────────────────────────────────────────────────────┤ output device ├─── + + "pulseaudio": { + "format": "{icon} {volume}%", + "format-muted": "󰝟 {volume}%", + + "format-icons": { + "default": ["󰕿", "󰖀", "󰕾"], + "headphone": "󰋋", + "headset": "󰋋" + }, + + "tooltip-format": "Device: {desc}", + "on-click": "~/.config/waybar/scripts/volume-control.sh -o m", + "on-scroll-up": "~/.config/waybar/scripts/volume-control.sh -o i", + "on-scroll-down": "~/.config/waybar/scripts/volume-control.sh -o d", + "min-length": 6, + "max-length": 6 + }, + + // ─────────────────────────────────────────────────────────┤ brightness ├─── + + "backlight": { + "format": "{icon} {percent}%", + "format-icons": ["", "", "", "", "", "", "", "", ""], + "tooltip": false, + "on-scroll-up": "~/.config/waybar/scripts/brightness-control.sh -o i", + "on-scroll-down": "~/.config/waybar/scripts/brightness-control.sh -o d", + "min-length": 6, + "max-length": 6 + }, + + // ────────────────────────────────────────────────────────────┤ battery ├─── + + "battery": { + "states": { + "warning": 20, + "critical": 10 + }, + + "format": "{icon} {capacity}%", + "format-icons": ["󰂎", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"], + "format-charging": " {capacity}%", + + "tooltip-format": "Discharging: {time}", + "tooltip-format-charging": "Charging: {time}", + "interval": 1, + "min-length": 6, + "max-length": 6 + }, + + // ───────────────────────────────────────────────────────┤ power button ├─── + + "custom/power": { + "format": " ", + "tooltip": false, + // "tooltip-format": "Power Menu", + "on-click": "~/.config/waybar/scripts/power-menu.sh" + }, + + // ────────────────────────────────────────────────────────────┤ padding ├─── + + "custom/paddw": { + "format": " ", + "tooltip": false + }, + + "custom/paddc": { + "format": " ", + "tooltip": false + }, + + // ────────────────────────────────────────────────────────┤ left arrows ├─── + + "custom/left1": { + "format": "", + "tooltip": false + }, + "custom/left2": { + "format": "", + "tooltip": false + }, + "custom/left3": { + "format": "", + "tooltip": false + }, + "custom/left4": { + "format": "", + "tooltip": false + }, + "custom/left5": { + "format": "", + "tooltip": false + }, + "custom/left6": { + "format": "", + "tooltip": false + }, + "custom/left7": { + "format": "", + "tooltip": false + }, + "custom/left8": { + "format": "", + "tooltip": false + }, + + // ───────────────────────────────────────────────────────┤ right arrows ├─── + + "custom/right1": { + "format": "", + "tooltip": false + }, + "custom/right2": { + "format": "", + "tooltip": false + }, + "custom/right3": { + "format": "", + "tooltip": false + }, + "custom/right4": { + "format": "", + "tooltip": false + }, + "custom/right5": { + "format": "", + "tooltip": false + }, + + // ───────────────────────────────────────────────────────┤ left inverse ├─── + + "custom/leftin1": { + "format": "", + "tooltip": false + }, + "custom/leftin2": { + "format": "", + "tooltip": false + }, + + // ──────────────────────────────────────────────────────┤ right inverse ├─── + + "custom/rightin1": { + "format": "", + "tooltip": false + } +} diff --git a/.config/waybar/machiatto.css b/.config/waybar/machiatto.css new file mode 100644 index 0000000..6880473 --- /dev/null +++ b/.config/waybar/machiatto.css @@ -0,0 +1,37 @@ +/* +* +* Catppuccin Macchiato palette +* Maintainer: rubyowo +* +*/ + +@define-color base #24273a; +@define-color mantle #1e2030; +@define-color crust #181926; + +@define-color text #cad3f5; +@define-color subtext0 #a5adcb; +@define-color subtext1 #b8c0e0; + +@define-color surface0 #363a4f; +@define-color surface1 #494d64; +@define-color surface2 #5b6078; + +@define-color overlay0 #6e738d; +@define-color overlay1 #8087a2; +@define-color overlay2 #939ab7; + +@define-color blue #8aadf4; +@define-color lavender #b7bdf8; +@define-color sapphire #7dc4e4; +@define-color sky #91d7e3; +@define-color teal #8bd5ca; +@define-color green #a6da95; +@define-color yellow #eed49f; +@define-color peach #f5a97f; +@define-color maroon #ee99a0; +@define-color red #ed8796; +@define-color mauve #c6a0f6; +@define-color pink #f5bde6; +@define-color flamingo #f0c6c6; +@define-color rosewater #f4dbd6; diff --git a/.config/waybar/scripts/battery-level.sh b/.config/waybar/scripts/battery-level.sh new file mode 100755 index 0000000..ddde6ea --- /dev/null +++ b/.config/waybar/scripts/battery-level.sh @@ -0,0 +1,80 @@ +#!/usr/bin/env bash + +# Original script by Eric Murphy +# https://github.com/ericmurphyxyz/dotfiles/blob/master/.local/bin/battery-alert +# +# Modified by Jesse Mirabel (@sejjy) +# https://github.com/sejjy/mechabar + +# This script sends a notification when the battery is full, low, or critical. +# icon theme used: tela-circle-icon-theme-dracula +# +# (see the bottom of the script for more information) + +export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus" + +# battery levels +WARNING_LEVEL=20 +CRITICAL_LEVEL=10 + +# get the battery state and percentage using upower (waybar dependency) +BAT_PATH=$(upower -e | grep BAT | head -n 1) +BATTERY_STATE=$(upower -i "$BAT_PATH" | awk '/state:/ {print $2}') +BATTERY_LEVEL=$(upower -i "$BAT_PATH" | awk '/percentage:/ {print $2}' | tr -d '%') + +# prevent multiple notifications +FILE_FULL=/tmp/battery-full +FILE_WARNING=/tmp/battery-warning +FILE_CRITICAL=/tmp/battery-critical + +# remove the files if the battery is no longer in that state +if [ "$BATTERY_STATE" == "discharging" ]; then + rm -f $FILE_FULL +elif [ "$BATTERY_STATE" == "charging" ]; then + rm -f "$FILE_WARNING" "$FILE_CRITICAL" +fi + +# if the battery is full and is plugged in +if [ "$BATTERY_LEVEL" -eq 100 ] && [ "$BATTERY_STATE" == "fully-charged" ] && [ ! -f $FILE_FULL ]; then + notify-send -a "state" "Battery Charged (${BATTERY_LEVEL}%)" "You might want to unplug your PC." -i "battery-full" -r 9991 + touch $FILE_FULL + +# if the battery is low and is discharging +elif [ "$BATTERY_LEVEL" -le $WARNING_LEVEL ] && [ "$BATTERY_STATE" == "discharging" ] && [ ! -f $FILE_WARNING ]; then + notify-send -a "state" "Battery Low (${BATTERY_LEVEL}%)" "You might want to plug in your PC." -u critical -i "battery-caution" -r 9991 -h string:fgcolor:\#fab387 -h string:frcolor:\#fab387 + touch $FILE_WARNING + +# if the battery is critical and is discharging +elif [ "$BATTERY_LEVEL" -le $CRITICAL_LEVEL ] && [ "$BATTERY_STATE" == "discharging" ] && [ ! -f $FILE_CRITICAL ]; then + notify-send -a "state" "Battery Critical (${BATTERY_LEVEL}%)" "Plug in your PC now." -u critical -i "battery-empty" -r 9991 + touch $FILE_CRITICAL +fi + +# systemd service +# Add the following to ~/.config/systemd/user/battery-level.service: + +# [Unit] +# Description=Battery Level Checker +# After=graphical.target +# +# [Service] +# ExecStart=%h/.config/waybar/scripts/battery-level.sh +# Type=oneshot + +# systemd timer +# Add the following to ~/.config/systemd/user/battery-level.timer: + +# [Unit] +# Description=Run Battery Level Checker +# +# [Timer] +# OnBootSec=1min +# OnUnitActiveSec=1min +# Unit=battery-level.service +# +# [Install] +# WantedBy=timers.target + +# enable the timer by running the following commands: +# systemctl --user daemon-reload +# systemctl --user enable --now battery-level.timer diff --git a/.config/waybar/scripts/battery-state.sh b/.config/waybar/scripts/battery-state.sh new file mode 100755 index 0000000..d7cf5fc --- /dev/null +++ b/.config/waybar/scripts/battery-state.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +# Original script by Eric Murphy +# https://github.com/ericmurphyxyz/dotfiles/blob/master/.local/bin/battery-alert +# +# Modified by Jesse Mirabel (@sejjy) +# https://github.com/sejjy/mechabar + +# This script sends a notification when the battery is charging or discharging. +# icon theme used: tela-circle-icon-theme-dracula +# +# (see the bottom of the script for more information) + +export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus" + +# get the battery state from the udev rule +BATTERY_STATE=$1 + +# get the battery percentage using upower (waybar dependency) +BAT_PATH=$(upower -e | grep BAT | head -n 1) +BATTERY_LEVEL=$(upower -i "$BAT_PATH" | awk '/percentage:/ {print $2}' | tr -d '%') + +# set the battery charging state and icon +case "$BATTERY_STATE" in +"charging") + BATTERY_CHARGING="Charging" + BATTERY_ICON="090-charging" + ;; +"discharging") + BATTERY_CHARGING="Disharging" + BATTERY_ICON="090" + ;; +esac + +# send the notification +notify-send -a "state" "Battery ${BATTERY_CHARGING} (${BATTERY_LEVEL}%)" -u normal -i "battery-${BATTERY_ICON}" -r 9991 + +# udev rule +# Add the following to /etc/udev/rules.d/60-power.rules: + +# ACTION=="change", SUBSYSTEM=="power_supply", ATTR{type}=="Mains", ATTR{online}=="0", ENV{DISPLAY}=":0", RUN+="/usr/bin/su -c '$HOME/.config/waybar/scripts/battery-state.sh discharging'" +# ACTION=="change", SUBSYSTEM=="power_supply", ATTR{type}=="Mains", ATTR{online}=="1", ENV{DISPLAY}=":0", RUN+="/usr/bin/su -c '$HOME/.config/waybar/scripts/battery-state.sh charging'" + +# the number 60 in the udev rule can be changed to any number between 0 and 99. +# the lower the number, the higher the priority. +# +# $USER does not work, so you have to replace "" with your username. + +# reload udev rules by running the following command: +# sudo udevadm control --reload-rules diff --git a/.config/waybar/scripts/bluetooth-menu.sh b/.config/waybar/scripts/bluetooth-menu.sh new file mode 100755 index 0000000..40642fd --- /dev/null +++ b/.config/waybar/scripts/bluetooth-menu.sh @@ -0,0 +1,106 @@ +#!/usr/bin/env bash + +# Author: Jesse Mirabel (@sejjy) +# GitHub: https://github.com/sejjy/mechabar + +# Rofi config +config="$HOME/.config/rofi/bluetooth-menu.rasi" + +# Rofi window override +override_disabled="mainbox { children: [ textbox-custom, listview ]; } listview { lines: 1; padding: 6px 6px 8px; }" + +get_device_icon() { + local device_mac=$1 + device_info=$(bluetoothctl info "$device_mac") + device_icon=$(echo "$device_info" | grep "Icon:" | awk '{print $2}') + + case "$device_icon" in + "audio-headphones" | "audio-headset") echo "󰋋 " ;; # Headphones + "video-display" | "computer") echo "󰍹 " ;; # Monitor + "audio-input-microphone") echo "󰍬 " ;; # Microphone + "input-keyboard") echo "󰌌 " ;; # Keyboard + "audio-speakers") echo "󰓃 " ;; # Speakers + "input-mouse") echo "󰍽 " ;; # Mouse + "phone") echo "󰏲 " ;; # Phone + *) + echo "󰂱 " # Default + ;; + esac +} + +while true; do + # Get list of paired devices + bluetooth_devices=$(bluetoothctl devices | while read -r line; do + device_mac=$(echo "$line" | awk '{print $2}') + device_name=$(echo "$line" | awk '{$1=$2=""; print substr($0, 3)}') + icon=$(get_device_icon "$device_mac") + echo "$icon $device_name" + done) + + options=$( + echo "󰏌 Scan for devices" + echo "󰂲 Disable Bluetooth" + echo "$bluetooth_devices" + ) + option="󰂯 Enable Bluetooth" + + # Get Bluetooth status + bluetooth_status=$(bluetoothctl show | grep "Powered:" | awk '{print $2}') + + if [[ "$bluetooth_status" == "yes" ]]; then + selected_option=$(echo -e "$options" | rofi -dmenu -i -selected-row 1 -config "${config}" -p " " || pkill -x rofi) + else + selected_option=$(echo -e "$option" | rofi -dmenu -i -selected-row 1 -config "${config}" -theme-str "${override_disabled}" -p " " || pkill -x rofi) + fi + + # Exit if no option is selected + if [ -z "$selected_option" ]; then + exit + fi + + # Actions based on selected option + case "$selected_option" in + *"Enable Bluetooth") + notify-send "Bluetooth Enabled" -i "package-installed-outdated" + rfkill unblock bluetooth + bluetoothctl power on + sleep 1 + ;; + *"Disable Bluetooth") + notify-send "Bluetooth Disabled" -i "package-broken" + rfkill block bluetooth + bluetoothctl power off + exit + ;; + *"Scan for devices") + notify-send "Press '?' to show help." -i "package-installed-outdated" + kitty --title '󰂱 Bluetooth TUI' bash -c "bluetui" # Launch bluetui + ;; + *) + # Extract device name + device_name="${selected_option#* }" + device_name="${device_name## }" + + if [[ -n "$device_name" ]]; then + # Get MAC address + device_mac=$(bluetoothctl devices | grep "$device_name" | awk '{print $2}') + + # Trust and pair device + bluetoothctl trust "$device_mac" >/dev/null 2>&1 + bluetoothctl pair "$device_mac" >/dev/null 2>&1 + + # Connect to device + bluetoothctl connect "$device_mac" & + sleep 3 + connection_status=$(bluetoothctl info "$device_mac" | grep "Connected:" | awk '{print $2}') + + if [[ "$connection_status" == "yes" ]]; then + notify-send "Connected to \"$device_name\"." -i "package-installed-outdated" + exit + else + notify-send "Failed to connect to \"$device_name\"." -i "package-broken" + fi + fi + ;; + esac +done diff --git a/.config/waybar/scripts/brightness-control.sh b/.config/waybar/scripts/brightness-control.sh new file mode 100755 index 0000000..28fa223 --- /dev/null +++ b/.config/waybar/scripts/brightness-control.sh @@ -0,0 +1,92 @@ +#!/usr/bin/env bash + +# Print error message for invalid arguments +print_error() { + cat <<"EOF" +Usage: ./brightnesscontrol.sh +Valid actions are: + i -- ncrease brightness [+2%] + d -- ecrease brightness [-2%] +EOF +} + +# Send a notification with brightness info +send_notification() { + brightness=$(brightnessctl info | grep -oP "(?<=\()\d+(?=%)") + notify-send -a "state" -r 91190 -i "gpm-brightness-lcd" -h int:value:"$brightness" "Brightness: ${brightness}%" -u low +} + +# Get the current brightness percentage and device name +get_brightness() { + brightness=$(brightnessctl -m | grep -o '[0-9]\+%' | head -c-2) + device=$(brightnessctl -m | head -n 1 | awk -F',' '{print $1}' | sed 's/_/ /g; s/\<./\U&/g') # Get device name + current_brightness=$(brightnessctl -m | head -n 1 | awk -F',' '{print $3}') # Get current brightness + max_brightness=$(brightnessctl -m | head -n 1 | awk -F',' '{print $5}') # Get max brightness +} +get_brightness + +# Handle options +while getopts o: opt; do + case "${opt}" in + o) + case $OPTARG in + i) # Increase brightness + if [[ $brightness -lt 10 ]]; then + brightnessctl set +1% + else + brightnessctl set +2% + fi + send_notification + ;; + d) # Decrease brightness + if [[ $brightness -le 1 ]]; then + brightnessctl set 1% + elif [[ $brightness -le 10 ]]; then + brightnessctl set 1%- + else + brightnessctl set 2%- + fi + send_notification + ;; + *) + print_error + ;; + esac + ;; + *) + print_error + ;; + esac +done + +# Determine the icon based on brightness level +get_icon() { + if ((brightness <= 5)); then + icon="" + elif ((brightness <= 15)); then + icon="" + elif ((brightness <= 30)); then + icon="" + elif ((brightness <= 45)); then + icon="" + elif ((brightness <= 55)); then + icon="" + elif ((brightness <= 65)); then + icon="" + elif ((brightness <= 80)); then + icon="" + elif ((brightness <= 95)); then + icon="" + else + icon="" + fi +} + +# Backlight module and tooltip +get_icon +module="${icon} ${brightness}%" + +tooltip="Device Name: ${device}" +tooltip+="\nBrightness: ${current_brightness} / ${max_brightness}" + +echo "{\"text\": \"${module}\", \"tooltip\": \"${tooltip}\"}" diff --git a/.config/waybar/scripts/check_updates.sh b/.config/waybar/scripts/check_updates.sh new file mode 100755 index 0000000..e050f40 --- /dev/null +++ b/.config/waybar/scripts/check_updates.sh @@ -0,0 +1,3 @@ +#!/bin/bash +i="$(checkupdates)" +printf "%b%b" "$i" "${i:+\n}" |wc -l; echo "$i" |column -t #|tr '\n' '\r' diff --git a/.config/waybar/scripts/cpu-temp.sh b/.config/waybar/scripts/cpu-temp.sh new file mode 100755 index 0000000..b6f2355 --- /dev/null +++ b/.config/waybar/scripts/cpu-temp.sh @@ -0,0 +1,67 @@ +#!/usr/bin/env bash + +model=$(awk -F ': ' '/model name/{print $2}' /proc/cpuinfo | head -n 1 | sed 's/@.*//; s/ *\((R)\|(TM)\)//g; s/^[ \t]*//; s/[ \t]*$//') + +# get CPU clock speeds +get_cpu_frequency() { + freqlist=$(awk '/cpu MHz/ {print $4}' /proc/cpuinfo) + maxfreq=$(sed 's/...$//' /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq) + if [ -z "$freqlist" ] || [ -z "$maxfreq" ]; then + echo "--" + return + fi + average_freq=$(echo "$freqlist" | tr ' ' '\n' | awk "{sum+=\$1} END {printf \"%.0f/%s MHz\", sum/NR, $maxfreq}") + echo "$average_freq" +} + +# get CPU temp +get_cpu_temperature() { + temp=$(sensors | awk '/Package id 0/ {print $4}' | awk -F '[+.]' '{print $2}') + if [[ -z "$temp" ]]; then + temp=$(sensors | awk '/Tctl/ {print $2}' | tr -d '+°C') + fi + if [[ -z "$temp" ]]; then + temp="--" + temp_f="--" + else + temp=${temp%.*} + temp_f=$(awk "BEGIN {printf \"%.1f\", ($temp * 9 / 5) + 32}") + fi + # Celsius and Fahrenheit + echo "${temp:---} ${temp_f:---}" +} + +get_temperature_icon() { + temp_value=$1 + if [ "$temp_value" = "--" ]; then + icon="󱔱" # none + elif [ "$temp_value" -ge 80 ]; then + icon="󰸁" # high + elif [ "$temp_value" -ge 70 ]; then + icon="󱃂" # medium + elif [ "$temp_value" -ge 60 ]; then + icon="󰔏" # normal + else + icon="󱃃" # low + fi + echo "$icon" +} + +cpu_frequency=$(get_cpu_frequency) +read -r temp_info < <(get_cpu_temperature) +temp=$(echo "$temp_info" | awk '{print $1}') +temp_f=$(echo "$temp_info" | awk '{print $2}') +thermo_icon=$(get_temperature_icon "$temp") + +# high temp warning +if [ "$temp" == "--" ] || [ "$temp" -ge 80 ]; then + text_output="${thermo_icon} ${temp}°C" +else + text_output="${thermo_icon} ${temp}°C" +fi + +tooltip=":: ${model}\n" +tooltip+="Clock Speed: ${cpu_frequency}\nTemperature: ${temp_f}°F" + +# module and tooltip +echo "{\"text\": \"$text_output\", \"tooltip\": \"$tooltip\"}" diff --git a/.config/waybar/scripts/current-theme.sh b/.config/waybar/scripts/current-theme.sh new file mode 100755 index 0000000..b7d5db6 --- /dev/null +++ b/.config/waybar/scripts/current-theme.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +CURRENT_THEME_FILE="$HOME/.config/waybar/themes/current-theme" + +# Get the current theme +current_theme=$(cat "$CURRENT_THEME_FILE" 2>/dev/null || echo "") +current_theme_name="Default" + +# Get the theme name +if [[ -n "$current_theme" ]]; then + current_theme_name=$(basename "$current_theme" .css) + + # Convert "theme-name" to "Theme Name" + formatted_theme_name="${current_theme_name//-/ }" + formatted_theme_name=$(echo "$formatted_theme_name" | awk '{for(i=1;i<=NF;i++) $i=toupper(substr($i,1,1)) substr($i,2)}1') +else + formatted_theme_name="Default" +fi + +tooltip="Theme: $formatted_theme_name" +tooltip+="\nStyle: Classic" # hard-coded for now + +# Tooltip +echo "{\"tooltip\": \"$tooltip\"}" diff --git a/.config/waybar/scripts/keyhint.sh b/.config/waybar/scripts/keyhint.sh new file mode 100755 index 0000000..a8a927d --- /dev/null +++ b/.config/waybar/scripts/keyhint.sh @@ -0,0 +1,2 @@ +#!/bin/sh +yad --title="Garuda Sway-WM keybindings:" --no-buttons --geometry=400x345-15-400 --list --column=key: --column=description: --column=command: "ESC" "close this app" "" "=" "modkey" "(set mod Mod4)" "+enter" "Terminal" "(termite)" "+d" "Application Menu" "(wofi)" "+Shift+d" "Full Launcher" "(nwggrid)" "+p" "Activities" "(wofi)" "+o" "" "Open Broswer" "+n" "" "Open Files" "+q" "close focused app" "(kill)" "[Shift]+Print-key" "screenshot" "(grim)" "+Shift+e" "power-menu" "(wofi)" "+Shift+p" "open keybinding helper" "full list" diff --git a/.config/waybar/scripts/power-menu.sh b/.config/waybar/scripts/power-menu.sh new file mode 100755 index 0000000..ae971c9 --- /dev/null +++ b/.config/waybar/scripts/power-menu.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +config="$HOME/.config/rofi/power-menu.rasi" + +actions=$(echo -e " Lock\n Shutdown\n Reboot\n Suspend\n Hibernate\n󰞘 Logout") + +# Display logout menu +selected_option=$(echo -e "$actions" | rofi -dmenu -i -config "${config}" || pkill -x rofi) + +# Perform actions based on the selected option +case "$selected_option" in +*Lock) + loginctl lock-session + ;; +*Shutdown) + systemctl poweroff + ;; +*Reboot) + systemctl reboot + ;; +*Suspend) + systemctl suspend + ;; +*Hibernate) + systemctl hibernate + ;; +*Logout) + loginctl kill-session "$XDG_SESSION_ID" + ;; +esac diff --git a/.config/waybar/scripts/system-update.sh b/.config/waybar/scripts/system-update.sh new file mode 100755 index 0000000..2c3c62b --- /dev/null +++ b/.config/waybar/scripts/system-update.sh @@ -0,0 +1,86 @@ +#!/usr/bin/env bash + +# Check release +if [ ! -f /etc/arch-release ]; then + exit 0 +fi + +pkg_installed() { + local pkg=$1 + + if pacman -Qi "${pkg}" &>/dev/null; then + return 0 + elif pacman -Qi "flatpak" &>/dev/null && flatpak info "${pkg}" &>/dev/null; then + return 0 + elif command -v "${pkg}" &>/dev/null; then + return 0 + else + return 1 + fi +} + +get_aur_helper() { + if pkg_installed yay; then + aur_helper="yay" + elif pkg_installed paru; then + aur_helper="paru" + fi +} + +get_aur_helper +export -f pkg_installed + +# Trigger upgrade +if [ "$1" == "up" ]; then + trap 'pkill -RTMIN+20 waybar' EXIT + command=" + $0 upgrade + ${aur_helper} -Syu + if pkg_installed flatpak; then flatpak update; fi + printf '\n' + read -n 1 -p 'Press any key to continue...' + " + kitty --title " System Update" sh -c "${command}" +fi + +# Check for AUR updates +if [ -n "$aur_helper" ]; then + aur_updates=$(${aur_helper} -Qua | grep -c '^') +else + aur_updates=0 +fi + +# Check for official repository updates +official_updates=$( + (while pgrep -x checkupdates >/dev/null; do sleep 1; done) + checkupdates | grep -c '^' +) + +# Check for Flatpak updates +if pkg_installed flatpak; then + flatpak_updates=$(flatpak remote-ls --updates | grep -c '^') +else + flatpak_updates=0 +fi + +# Calculate total available updates +total_updates=$((official_updates + aur_updates + flatpak_updates)) + +# Handle formatting based on AUR helper +if [ "$aur_helper" == "yay" ]; then + [ "${1}" == upgrade ] && printf "Official: %-10s\nAUR ($aur_helper): %-10s\nFlatpak: %-10s\n\n" "$official_updates" "$aur_updates" "$flatpak_updates" && exit + + tooltip="Official: $official_updates\nAUR ($aur_helper): $aur_updates\nFlatpak: $flatpak_updates" + +elif [ "$aur_helper" == "paru" ]; then + [ "${1}" == upgrade ] && printf "Official: %-10s\nAUR ($aur_helper): %-10s\nFlatpak: %-10s\n\n" "$official_updates" "$aur_updates" "$flatpak_updates" && exit + + tooltip="Official: $official_updates\nAUR ($aur_helper): $aur_updates\nFlatpak: $flatpak_updates" +fi + +# Module and tooltip +if [ $total_updates -eq 0 ]; then + echo "{\"text\":\"󰸟\", \"tooltip\":\"Packages are up to date\"}" +else + echo "{\"text\":\"\", \"tooltip\":\"${tooltip//\"/\\\"}\"}" +fi diff --git a/.config/waybar/scripts/volume-control.sh b/.config/waybar/scripts/volume-control.sh new file mode 100755 index 0000000..76bb2f7 --- /dev/null +++ b/.config/waybar/scripts/volume-control.sh @@ -0,0 +1,123 @@ +#!/usr/bin/env bash + +# Define functions +print_error() { + cat <<"EOF" +Usage: ./volumecontrol.sh -[device] +...valid devices are... + i -- input device + o -- output device + p -- player application +...valid actions are... + i -- increase volume [+2] + d -- decrease volume [-2] + m -- mute [x] +EOF + exit 1 +} + +icon() { + vol=$(pactl get-sink-volume @DEFAULT_SINK@ | awk '{print $5}' | sed 's/%//') + mute=$(pactl get-sink-mute @DEFAULT_SINK@ | awk '{print $2}') + + if [ "$mute" = "yes" ] || [ "$vol" -eq 0 ]; then + icon="volume-level-muted" + elif [ "$vol" -lt 33 ]; then + icon="volume-level-low" + elif [ "$vol" -lt 66 ]; then + icon="volume-level-medium" + else + icon="volume-level-high" + fi +} + +send_notification() { + icon + notify-send -a "state" -r 91190 -i "$icon" -h int:value:"$vol" "Volume: ${vol}%" -u low +} + +notify_mute() { + mute=$(pactl get-sink-mute @DEFAULT_SINK@ | awk '{print $2}') + if [ "$mute" = "yes" ]; then + notify-send -a "state" -r 91190 -i "volume-level-muted" "Volume: Muted" -u low + else + icon + notify-send -a "state" -r 91190 -i "$icon" "Volume: Unmuted" -u low + fi +} + +action_volume() { + case "${1}" in + i) + # Increase volume if below 100 + current_vol=$(pactl get-sink-volume @DEFAULT_SINK@ | awk '{print $5}' | sed 's/%//') + if [ "$current_vol" -lt 100 ]; then + new_vol=$((current_vol + 2)) + [ "$new_vol" -gt 100 ] && new_vol=100 + pactl set-sink-volume @DEFAULT_SINK@ "${new_vol}%" + fi + ;; + d) + # Decrease volume if above 0 + current_vol=$(pactl get-sink-volume @DEFAULT_SINK@ | awk '{print $5}' | sed 's/%//') + new_vol=$((current_vol - 2)) + [ "$new_vol" -lt 0 ] && new_vol=0 + pactl set-sink-volume @DEFAULT_SINK@ "${new_vol}%" + ;; + esac +} + +select_output() { + if [ "$@" ]; then + desc="$*" + device=$(pactl list sinks | grep -C2 -F "Description: $desc" | grep Name | cut -d: -f2 | xargs) + if pactl set-default-sink "$device"; then + notify-send -r 91190 "Activated: $desc" + else + notify-send -r 91190 "Error activating $desc" + fi + else + pactl list sinks | grep -ie "Description:" | awk -F ': ' '{print $2}' | sort + fi +} + +# Evaluate device option +while getopts iops: DeviceOpt; do + case "${DeviceOpt}" in + i) + nsink=$(pactl list sources short | awk '{print $2}') + [ -z "${nsink}" ] && echo "ERROR: Input device not found..." && exit 0 + srce="--default-source" + ;; + o) + nsink=$(pactl list sinks short | awk '{print $2}') + [ -z "${nsink}" ] && echo "ERROR: Output device not found..." && exit 0 + srce="" + ;; + p) + nsink=$(playerctl --list-all | grep -w "${OPTARG}") + [ -z "${nsink}" ] && echo "ERROR: Player ${OPTARG} not active..." && exit 0 + # shellcheck disable=SC2034 + srce="${nsink}" + ;; + s) + # Select an output device + select_output "$@" + exit + ;; + *) print_error ;; + esac +done + +# Set default variables +shift $((OPTIND - 1)) + +# Execute action +case "${1}" in +i) action_volume i ;; +d) action_volume d ;; +m) pactl set-sink-mute @DEFAULT_SINK@ toggle && notify_mute && exit 0 ;; +*) print_error ;; +esac + +send_notification diff --git a/.config/waybar/scripts/wifi-menu.sh b/.config/waybar/scripts/wifi-menu.sh new file mode 100755 index 0000000..470722c --- /dev/null +++ b/.config/waybar/scripts/wifi-menu.sh @@ -0,0 +1,126 @@ +#!/usr/bin/env bash + +# Author: Jesse Mirabel (@sejjy) +# GitHub: https://github.com/sejjy/mechabar + +# Rofi config +config="$HOME/.config/rofi/wifi-menu.rasi" + +options=$( + echo " Manual Entry" + echo "󰤮 Disable Wi-Fi" +) +option_disabled="󰤥 Enable Wi-Fi" + +# Rofi window override +override_ssid="entry { placeholder: \"Enter SSID\"; } listview { lines: 0; padding: 20px 6px; }" +override_password="entry { placeholder: \"Enter password\"; } listview { lines: 0; padding: 20px 6px; }" +override_disabled="mainbox { children: [ textbox-custom, listview ]; } listview { lines: 1; padding: 6px 6px 8px; }" + +# Prompt for password +get_password() { + rofi -dmenu -password -config "${config}" -theme-str "${override_password}" -p " " || pkill -x rofi +} + +while true; do + wifi_list() { + nmcli --fields "SECURITY,SSID" device wifi list | + tail -n +2 | # Skip the header line from nmcli output + sed 's/ */ /g' | # Replace multiple spaces with a single space + sed -E "s/WPA*.?\S/󰤪 /g" | # Replace 'WPA*' with a Wi-Fi lock icon + sed "s/^--/󰤨 /g" | # Replace '--' (open networks) with an open Wi-Fi icon + sed "s/󰤪 󰤪/󰤪/g" | # Remove duplicate Wi-Fi lock icons + sed "/--/d" | # Remove lines containing '--' (empty SSIDs) + awk '!seen[$0]++' # Filter out duplicate SSIDs + } + + # Get Wi-Fi status + wifi_status=$(nmcli -fields WIFI g) + + case "$wifi_status" in + *"enabled"*) + selected_option=$(echo "$options"$'\n'"$(wifi_list)" | + rofi -dmenu -i -selected-row 1 -config "${config}" -p " " || pkill -x rofi) + ;; + *"disabled"*) + selected_option=$(echo "$option_disabled" | + rofi -dmenu -i -config "${config}" -theme-str "${override_disabled}" || pkill -x rofi) + ;; + esac + + # Extract selected SSID + read -r selected_ssid <<<"${selected_option:3}" + + # Actions based on selected option + case "$selected_option" in + "") + exit + ;; + *"Enable Wi-Fi") + notify-send "Scanning for networks..." -i "package-installed-outdated" + nmcli radio wifi on + nmcli device wifi rescan + sleep 3 + ;; + *"Disable Wi-Fi") + notify-send "Wi-Fi Disabled" -i "package-broken" + nmcli radio wifi off + exit + ;; + *"Manual Entry") + # Prompt for SSID + manual_ssid=$(rofi -dmenu -config "${config}" -theme-str "${override_ssid}" -p " " || pkill -x rofi) + + # Exit if no option is selected + if [ -z "$manual_ssid" ]; then + exit + fi + + # Prompt for Wi-Fi password + wifi_password=$(get_password) + + if [ -z "$wifi_password" ]; then + # Without password + if nmcli device wifi connect "$manual_ssid" | grep -q "successfully"; then + notify-send "Connected to \"$manual_ssid\"." -i "package-installed-outdated" + exit + else + notify-send "Failed to connect to \"$manual_ssid\"." -i "package-broken" + fi + else + # With password + if nmcli device wifi connect "$manual_ssid" password "$wifi_password" | grep -q "successfully"; then + notify-send "Connected to \"$manual_ssid\"." -i "package-installed-outdated" + exit + else + notify-send "Failed to connect to \"$manual_ssid\"." -i "package-broken" + fi + fi + ;; + *) + # Get saved connections + saved_connections=$(nmcli -g NAME connection) + + if echo "$saved_connections" | grep -qw "$selected_ssid"; then + if nmcli connection up id "$selected_ssid" | grep -q "successfully"; then + notify-send "Connected to \"$selected_ssid\"." -i "package-installed-outdated" + exit + else + notify-send "Failed to connect to \"$selected_ssid\"." -i "package-broken" + fi + else + # Handle secure network connection + if [[ "$selected_option" =~ ^"󰤪" ]]; then + wifi_password=$(get_password) + fi + + if nmcli device wifi connect "$selected_ssid" password "$wifi_password" | grep -q "successfully"; then + notify-send "Connected to \"$selected_ssid\"." -i "package-installed-outdated" + exit + else + notify-send "Failed to connect to \"$selected_ssid\"." -i "package-broken" + fi + fi + ;; + esac +done diff --git a/.config/waybar/scripts/wifi-status.sh b/.config/waybar/scripts/wifi-status.sh new file mode 100755 index 0000000..f854914 --- /dev/null +++ b/.config/waybar/scripts/wifi-status.sh @@ -0,0 +1,176 @@ +#!/usr/bin/env bash + +# This script gathers detailed Wi-Fi connection information. +# It collects the following fields: +# +# - SSID (Service Set Identifier): The name of the Wi-Fi network you +# are currently connected to. Example: "My_Network" +# +# - IP Address: The IP address assigned to the device by the router. +# This is typically a private IP within the local network. Example: +# "192.168.1.29/24" (with subnet mask) +# +# - Router (Gateway): The IP address of the router (default gateway) +# that your device uses to communicate outside the local network. +# Example: "192.168.1.1" +# +# - MAC Address: The unique Media Access Control address of the local +# device's Wi-Fi adapter. Example: "F8:34:41:07:1B:65" +# +# - Security: The encryption protocol being used to secure your Wi-Fi +# connection. Common security protocols include: +# - WPA2 (Wi-Fi Protected Access 2): The most commonly used security +# standard, offering strong encryption (AES). +# - WPA3: The latest version, providing even stronger security, +# especially in public or open networks. +# - WEP (Wired Equivalent Privacy): An outdated and insecure protocol +# that should not be used. +# Example: "WPA2" indicates that the connection is secured using WPA2 +# with AES encryption. +# +# - BSSID (Basic Service Set Identifier): The MAC address of the Wi-Fi +# access point you are connected to. Example: "A4:22:49:DA:91:A0" +# +# - Channel: The wireless channel your Wi-Fi network is using. This is +# associated with the frequency band. Example: "100 (5500 MHz)" +# indicates the channel number (100) and the frequency (5500 MHz), +# which is within the 5 GHz band. +# +# - RSSI (Received Signal Strength Indicator): The strength of the +# Wi-Fi signal, typically in dBm (decibels relative to 1 milliwatt). +# Closer to 0 means stronger signal, with values like -40 dBm being +# very good. Example: "-40 dBm" +# +# - Signal: The signal quality, which is represented as a percentage, +# where higher numbers mean better signal. Example: "100" +# indicates perfect signal strength. +# +# - Rx Rate (Receive Rate): The maximum data rate (in Mbit/s) at which +# the device can receive data from the Wi-Fi access point. Example: +# "866.7 MBit/s" indicates a high-speed connection on a modern +# standard. +# +# - Tx Rate (Transmit Rate): The maximum data rate (in Mbit/s) at +# which the device can send data to the Wi-Fi access point. Example: +# "866.7 MBit/s" +# +# - PHY Mode (Physical Layer Mode): The Wi-Fi protocol or standard in +# use. Common modes include 802.11n, 802.11ac, and 802.11ax (Wi-Fi +# 6). Example: "802.11ac" indicates you're using the 5 GHz band with +# a modern high-speed standard. + +if ! command -v nmcli &>/dev/null; then + echo "{\"text\": \"󰤫\", \"tooltip\": \"nmcli utility is missing\"}" + exit 1 +fi + +# Check if Wi-Fi is enabled +wifi_status=$(nmcli radio wifi) + +if [ "$wifi_status" = "disabled" ]; then + echo "{\"text\": \"󰤮\", \"tooltip\": \"Wi-Fi Disabled\"}" + exit 0 +fi + +wifi_info=$(nmcli -t -f active,ssid,signal,security dev wifi | grep "^yes") + +# If no ESSID is found, set a default value +if [ -z "$wifi_info" ]; then + essid="No Connection" + signal=0 + tooltip="No Connection" +else + # Some defaults + ip_address="127.0.0.1" + # gateway="127.0.0.1" + # mac_address="N/A" + security=$(echo "$wifi_info" | awk -F: '{print $4}') + # bssid="N/A" + chan="N/A" + # rssi="N/A" + # rx_bitrate="" + # tx_bitrate="" + # phy_mode="" + signal=$(echo "$wifi_info" | awk -F: '{print $3}') + + active_device=$(nmcli -t -f DEVICE,STATE device status | + grep -w "connected" | + grep -v -E "^(dummy|lo:|virbr0)" | + awk -F: '{print $1}') + + if [ -n "$active_device" ]; then + output=$(nmcli -e no -g ip4.address,ip4.gateway,general.hwaddr device show "$active_device") + + ip_address=$(echo "$output" | sed -n '1p') + # gateway=$(echo "$output" | sed -n '2p') + # mac_address=$(echo "$output" | sed -n '3p') + + line=$(nmcli -e no -t -f active,bssid,chan,freq device wifi | grep "^yes") + + # bssid=$(echo "$line" | awk -F':' '{print $2":"$3":"$4":"$5":"$6":"$7}') + chan=$(echo "$line" | awk -F':' '{print $8}') + freq=$(echo "$line" | awk -F':' '{print $9}') + chan="$chan ($freq)" + + # if command -v iw &>/dev/null; then + # iw_output=$(iw dev "$active_device" station dump) + # rssi=$(echo "$iw_output" | grep "signal:" | awk '{print $2 " dBm"}') + + # Upload speed + # rx_bitrate=$(echo "$iw_output" | grep "rx bitrate:" | awk '{print $3 " " $4}') + + # Download speed + # tx_bitrate=$(echo "$iw_output" | grep "tx bitrate:" | awk '{print $3 " " $4}') + + # Physical Layer Mode + # if echo "$iw_output" | grep -E -q "rx bitrate:.* VHT"; then + # phy_mode="802.11ac" # Wi-Fi 5 + # elif echo "$iw_output" | grep -E -q "rx bitrate:.* HT"; then + # phy_mode="802.11n" # Wi-Fi 4 + # elif echo "$iw_output" | grep -E -q "rx bitrate:.* HE"; then + # phy_mode="802.11ax" # Wi-Fi 6 + # fi + # fi + + # Get the current Wi-Fi ESSID + essid=$(echo "$wifi_info" | awk -F: '{print $2}') + + tooltip=":: ${essid}" + tooltip+="\nIP Address: ${ip_address}" + # tooltip+="\nRouter: ${gateway}" + # tooltip+="\nMAC Address: ${mac_address}" + tooltip+="\nSecurity: ${security}" + # tooltip+="\nBSSID: ${bssid}" + tooltip+="\nChannel: ${chan}" + # tooltip+="\nRSSI: ${rssi}" + tooltip+="\nStrength: ${signal} / 100" + + # if [ -n "$rx_bitrate" ]; then + # tooltip+="\nRx Rate: ${rx_bitrate}" + # fi + + # if [ -n "$tx_bitrate" ]; then + # tooltip+="\nTx Rate: ${tx_bitrate}" + # fi + + # if [ -n "$phy_mode" ]; then + # tooltip+="\nPHY Mode: ${phy_mode}" + # fi + fi +fi + +# Determine Wi-Fi icon based on signal strength +if [ "$signal" -ge 80 ]; then + icon="󰤨" # Strong signal +elif [ "$signal" -ge 60 ]; then + icon="󰤥" # Good signal +elif [ "$signal" -ge 40 ]; then + icon="󰤢" # Weak signal +elif [ "$signal" -ge 20 ]; then + icon="󰤟" # Very weak signal +else + icon="󰤯" # No signal +fi + +# Module and tooltip +echo "{\"text\": \"${icon}\", \"tooltip\": \"${tooltip}\"}" diff --git a/.config/waybar/style-background.css b/.config/waybar/style-background.css new file mode 100644 index 0000000..fad0610 --- /dev/null +++ b/.config/waybar/style-background.css @@ -0,0 +1,418 @@ +/* ============================================================================= + * + * Waybar configuration + * + * Configuration reference: https://github.com/Alexays/Waybar/wiki/Configuration + * + * =========================================================================== */ + +/* ----------------------------------------------------------------------------- + * Keyframes + * -------------------------------------------------------------------------- */ + +@import "machiatto.css"; + +/* + Polar Night + nord0 #2e3440 + nord1 #3b4252 + nord2 #434c5e + nord3 #4c566a + Snow Storm + nord4 #d8dee9 + nord5 #e5e9f0 + nord6 #eceff4 + Frost + nord7 #8fbcbb + nord8 #88c0d0 + nord9 #81a1c1 + nord10 #5e81ac + Aurora + nord11 #bf616a + nord12 #d08770 + nord13 #ebcb8b + nord14 #a3be8c + nord15 #b48ead + */ + +/* ----------------------------------------------------------------------------- + * Base styles + * -------------------------------------------------------------------------- */ + +/* Reset all styles */ + +* { + color: @lavender; + border: 0; + padding: 0 0; + font-family: UbuntuMono; + /* font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; */ + /* font-family: "Hack Nerd Font"; */ + font-size: 18px; + font-weight: bold; + /* padding-bottom:4px; + padding-top: 4px; */ + transition: all 0.5s ease; +} + +window#waybar { + border-bottom: 4px solid shade(@base, 1.1); + /* border-radius: 10px; */ + /* background:#2d2a2e; */ + /* background-color: rgba(36, 39, 58, 0.85); */ + /* background-color: rgba(0, 0, 0, 0); */ + background-color: shade(#1e1e2e, 0.95); +} + +#workspaces button { + color: @base; + border-radius: 50%; + /* background-color: @base; */ + margin: 0px 0px; + padding: 2 6 2 0; +} + +#workspaces button:hover * { + color: @mauve; +} + +#workspaces button:hover { + color: @mauve; + box-shadow: none; + /* Remove predefined box-shadow */ + text-shadow: none; + /* Remove predefined text-shadow */ + border: 0px; + background: none; +} + +#workspaces * { + color: whitesmoke; +} + +#workspaces { + border-style: solid; + background-color: @base; + opacity: 1; + border-radius: 10px; + margin: 8px 0px 8px 8px; +} + +#workspaces button.focused { + color: @mauve; + border-radius: 20px; + /* background-color: @flamingo; */ +} + +#workspaces button.focused * { + color: @mauve; +} + +#mode { + color: #ebcb8b; +} + +#clock, +#custom-swap, +#custom-background, +#custom-cava-internal, +#battery, +#cpu, +#memory, +#idle_inhibitor, +#temperature, +#custom-keyboard-layout, +#backlight, +#network, +#pulseaudio, +#mode, +#tray, +#custom-power, +#custom-pacman, +#mpd { + padding: 5px 8px; + border-style: solid; + background-color: shade(@base, 1.1); + opacity: 1; + margin: 8px 0; +} + +/* ----------------------------------------------------------------------------- + * Module styles + * -------------------------------------------------------------------------- */ + +#mode { + border-radius: 10px; + color: @mauve; + margin-right: 5px; +} + +#custom-cava-internal { + border-radius: 10px; + color: @mauve; +} + +#mpd { + border-radius: 10px; + color: @mauve; + margin-left: 5px; + background-color: rgba(0, 0, 0, 0); +} + +#mpd.2 { + border-radius: 10px 0px 0px 10px; + margin: 8px 0px 8px 6px; + padding: 4px 12px 4px 10px; +} + +#mpd.3 { + border-radius: 0px 0px 0px 0px; + margin: 8px 0px 8px 0px; + padding: 4px; +} + +#mpd.4 { + border-radius: 0px 10px 10px 0px; + margin: 8px 0px 8px 0px; + padding: 4px 10px 4px 14px; +} + +#mpd.2, +#mpd.3, +#mpd.4 { + background-color: @base; + font-size: 14px; +} + +#custom-swap { + border-radius: 10px; + color: @base; + margin-left: 10px; + background-color: @mauve; +} + +#custom-background { + border-radius: 0px 10px 10px 0px; + background-color: @base; + color: white; + padding: 5px 14px 5px 5px; +} + +#clock { + /* background-color:#a3be8c; */ + color: @sky; + border-radius: 10px; + margin: 8px 10px; +} + +#backlight { + color: @yellow; + /* border-bottom: 2px solid @yellow; */ + border-radius: 10px 0 0 10px; +} + +#battery { + color: #d8dee9; + /* border-bottom: 2px solid #d8dee9; */ + border-radius: 0 10px 10px 0; + margin-right: 10px; +} + +#battery.charging { + color: #81a1c1; + /* border-bottom: 2px solid #81a1c1; */ +} + +@keyframes blink { + to { + color: @red; + /* border-bottom: 2px solid @red; */ + } +} + +#battery.critical:not(.charging) { + color: #bf616a; + /* border-bottom: 2px solid #bf616a; */ + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +#cpu { + color: @sky; + /* border-bottom: 2px solid @sky; */ +} + +#cpu #cpu-icon { + color: @sky; +} + +#memory { + color: @sky; +} + +#network.disabled { + color: #bf616a; + /* border-bottom: 2px solid #bf616a; */ +} + +#network { + color: @green; + /* border-bottom: 2px solid @green; */ + border-radius: 10px; + margin-right: 5px; +} + +#network.disconnected { + color: #bf616a; + /* border-bottom: 2px solid #bf616a; */ +} + +#pulseaudio { + color: @flamingo; + /* border-bottom: 2px solid @flamingo; */ +} + +#pulseaudio.muted { + color: #3b4252; + /* border-bottom: 2px solid #3b4252; */ +} + +#temperature { + color: @teal; + /* border-bottom: 2px solid @teal; */ + border-radius: 10px 0 0 10px; +} + +#temperature.critical { + color: @red; + /* border-bottom: 2px solid @red; */ +} + +#idle_inhibitor { + background-color: #ebcb8b; + color: @base; +} + +#tray { + /* background-color: @base; */ + margin: 8px 10px; + border-radius: 10px; +} + +#custom-launcher, +#custom-power {} + +#custom-launcher { + background-color: shade(@base, 1.1); + color: @mauve; + border-radius: 0px 15px 0px 0px; + padding: 5px 10px 5px 10px; +} + +#custom-power { + color: @base; + background-color: @red; + border-radius: 10px; + margin-left: 5px; + margin-right: 15px; + padding: 5px 10px; +} + +#window { + border-style: hidden; + margin-left: 10px; + /* margin-top:1px; + padding: 8px 1rem; */ + margin-right: 10px; + color: #eceff4; +} + +#custom-keyboard-layout { + color: @peach; + /* border-bottom: 2px solid @peach; */ + border-radius: 0 10px 10px 0; + margin-right: 10px; +} + + + +/* window#waybar { + background: #2d2a2e; + } + + * { + color: #c8b9a9; + font-family: Ubuntu Mono, sans-serif; + font-size: 12px; + } + + #workspaces button.focused { + color: #f2e5bc; + } + + #workspaces button { + color: #c8b9a9; + } + + .separator { + background-color: #c8b9a9; + } + + #mode { + color: #ebcb8b; + } + + #clock { + color: #a3be8c; + } + + #battery { + color: #d8dee9; + } + + #battery.charging { + color: #b48ead; + } + + #battery.critical:not(.charging) { + color: #bf616a; + } + + #cpu { + color: #a3be8c; + } + + #memory { + color: #d3869b; + } + + #network { + color: #8fbcbb; + } + + #network.disabled { + color: #bf616a; + } + + #network.disconnected { + color: #bf616a; + } + + #pulseaudio { + color: #b48ead; + } + + #pulseaudio.muted { + color: #bf616a; + } + + #temperature { + color: #8fbcbb; + } + + #temperature.critical { + color: #bf616a; + } */ \ No newline at end of file diff --git a/.config/waybar/style.css b/.config/waybar/style.css new file mode 100644 index 0000000..46770ed --- /dev/null +++ b/.config/waybar/style.css @@ -0,0 +1,466 @@ +@import "theme.css"; + +/* ───────────────────────────────────────────────────────────────┤ global ├─── +*/ +* { + min-height: 0; + border: none; + margin: 0; + padding: 0; +} + +/* ──────────────────────────────────────────────────────────┤ drop shadow ├─── +*/ +window#waybar { + background: @shadow; +} + +/* ───────────────────────────────────────────────────────────┤ background ├─── +*/ +window#waybar > box { + background: @main-bg; + margin: 2px; +} + +/* ─────────────────────────────────────────────────────────────┤ tooltips ├─── +*/ +tooltip { + background: @main-bg; + border: 1.5px solid @main-br; + border-radius: 8px; +} + +tooltip label { + color: @main-fg; + margin: -1.5px 3px; +} + +/* ──────────────────────────────────────────────────────────────┤ general ├─── +*/ +#custom-ws, +#workspaces, +#window, +#custom-temperature, +#memory, +#cpu, +#idle_inhibitor, +#clock, +#custom-wifi, +#bluetooth, +#custom-update, +#mpris, +#pulseaudio, +#backlight, +#battery, +#custom-power { + opacity: 1; + color: @module-fg; + padding: 0 4px; +} + +#custom-left1, +#custom-left2, +#custom-left3, +#custom-left4, +#custom-left5, +#custom-left6, +#custom-left7, +#custom-left8 { + margin-bottom: 0; + text-shadow: -2px 0 2px rgba(0, 0, 0, 0.5); +} + +#custom-right1, +#custom-right2, +#custom-right3, +#custom-right4, +#custom-right5 { + margin-bottom: 0; + padding-right: 3px; + text-shadow: 2px 0 2px rgba(0, 0, 0, 0.5); +} + +/* ──────────────────────────────────────────────────────────┤ window icon ├─── +*/ +#custom-ws { + background: @main-bg; +} + +#custom-ws:hover { + color: @hover-fg; +} + +/* ───────────────────────────────────────────────────────────┤ workspaces ├─── +*/ +#custom-left1 { + color: @workspaces; + background: @main-bg; + margin-bottom: 0; + padding-left: 2px; +} + +#workspaces { + background: @workspaces; +} + +#workspaces button { + color: @module-fg; + border-radius: 8px; + box-shadow: none; + margin: 2px 0; + padding: 0 2px; + transition: none; +} + +#workspaces button:hover { + color: @hover-fg; + background: @hover-bg; + text-shadow: none; +} + +#workspaces button.active { + color: @active-fg; + background: @active-bg; + text-shadow: 0 0 2px rgba(0, 0, 0, 0.6); + box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.4); + margin: 2px; + padding: 0 6px; +} + +#custom-right1 { + color: @workspaces; + background: @main-bg; + text-shadow: 3px 0 2px rgba(0, 0, 0, 0.4); + margin-bottom: 0; +} + +/* ──────────────────────────────────────────────────────────┤ temperature ├─── +*/ +#custom-paddc { + padding-right: 22px; +} + +#custom-left2 { + color: @temperature; + background: @main-bg; + padding-left: 3px; +} + +#custom-temperature { + background: @temperature; + padding: 0 0 0 1px; +} + +/* ───────────────────────────────────────────────────────────────┤ memory ├─── +*/ +#custom-left3 { + color: @memory; + background: @temperature; + padding-left: 3px; +} + +#memory { + background: @memory; + padding: 0 0 0 1px; +} + +#memory.warning { + color: @warning; +} + +#memory.critical { + color: @critical; +} + +/* ──────────────────────────────────────────────────────────────────┤ cpu ├─── +*/ +#custom-left4 { + color: @cpu; + background: @memory; + padding-left: 3px; +} + +#cpu { + background: @cpu; +} + +#custom-leftin1 { + color: @cpu; + margin-bottom: -1px; +} + +/* ──────────────────────────────────────────────────────────┤ distro icon ├─── +*/ +#custom-left5 { + color: @distro-bg; + background: @main-bg; + text-shadow: none; + margin-bottom: -2px; + padding-left: 3px; +} + +#custom-distro { + color: @distro-fg; + background: @distro-bg; + margin: 0 -1px -2px 0; + padding: 0 0 0 3px; + text-shadow: 0 0 1.5px rgba(0, 0, 0, 1); +} + +#custom-right2 { + color: @distro-bg; + background: @main-bg; + text-shadow: none; + margin-bottom: -2px; +} + +/* ─────────────────────────────────────────────────────────────────┤ time ├─── +*/ +#custom-rightin1 { + color: @time; + margin-bottom: -1px; +} + +#idle_inhibitor { + background: @time; + padding: 0 0 0 7px; +} + +#idle_inhibitor:hover { + color: @hover-fg; +} + +#clock.time { + background: @time; + margin-left: -2px; + padding: 0 3px 0 0; +} + +#custom-right3 { + color: @time; + background: @date; +} + +/* ─────────────────────────────────────────────────────────────────┤ date ├─── +*/ +#clock.date { + background: @date; +} + +#clock.date:hover { + color: @hover-fg; +} + +#custom-right4 { + color: @date; + background: @tray; +} + +/* ────────────────────────────────────────────────────────────────┤ wi-fi ├─── +*/ +#custom-wifi { + background: @tray; + padding: 0 8px 0 5px; +} + +#custom-wifi:hover { + color: @hover-fg; +} + +/* ────────────────────────────────────────────────────────────┤ bluetooth ├─── +*/ +#bluetooth { + background: @tray; + padding-right: 5px; +} + +#bluetooth:hover { + color: @hover-fg; +} + +/* ────────────────────────────────────────────────────────┤ system update ├─── +*/ +#custom-update { + padding-right: 8px; + background: @tray; +} + +#custom-update:hover { + color: @hover-fg; +} + +#custom-right5 { + color: @tray; + background: @main-bg; +} + +/* ───────────────────────────────────────────────────────────┤ media info ├─── +*/ +#mpris { + background: @main-bg; + padding: 0 8px 0; +} + +#mpris:hover { + color: @hover-fg; +} + +/* ────────────────────────────────────────────────────────┤ output device ├─── +*/ +#custom-left6 { + color: @pulseaudio; + background: @main-bg; + padding-left: 3px; +} + +#pulseaudio { + background: @pulseaudio; +} + +#pulseaudio:hover { + color: @hover-fg; +} + +/* ───────────────────────────────────────────────────────────┤ brightness ├─── +*/ +#custom-left7 { + color: @backlight; + background: @pulseaudio; + padding-left: 2px; +} + +#backlight { + background: @backlight; +} + +/* ──────────────────────────────────────────────────────────────┤ battery ├─── +*/ +#custom-left8 { + color: @battery; + background: @backlight; + padding-left: 2px; +} + +#battery { + color: @module-fg; + background: @battery; +} + +#battery.warning { + color: @warning; +} + +#battery.critical { + color: @critical; +} + +#battery.charging { + color: @charging; +} + +/* ─────────────────────────────────────────────────────────┤ power button ├─── +*/ +#custom-leftin2 { + color: @battery; + background: @main-bg; + margin-bottom: -1px; +} + +#custom-power { + color: @main-bg; + background: @power; + text-shadow: 0 0 2px rgba(0, 0, 0, 0.6); + box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.6); + border-radius: 10px; + margin: 2px 4px 2px 0; + padding: 0 6px 0 9px; +} + +#custom-power:hover { + color: @hover-fg; + background: @hover-bg; + text-shadow: none; + box-shadow: none; +} + +/* ───────────────────────────────────────────────────────────┤ font sizes ├─── +*/ +/* + NOTE: Be careful when changing font sizes, as they can affect alignment. + + Try adjusting whole numbers first, then refine with decimals. + + If you increase or decrease a value, make the same change to all properties + in this section to keep the layout consistent. +*/ + +* { + font-family: "JetBrainsMono Nerd Font"; + font-size: 13px; + font-weight: normal; +} + +tooltip label, +#window label, +#mpris { + font-weight: normal; +} + +/* ──────────────────────────────────────────────────┤ left & right arrows ├─── +*/ +#custom-left1, +#custom-left2, +#custom-left3, +#custom-left4, +#custom-left5, +#custom-left6, +#custom-left7, +#custom-left8, +#custom-right1, +#custom-right2, +#custom-right3, +#custom-right4, +#custom-right5 { + font-size: 16.68px; +} + +/* ─────────────────────────────────────────────────┤ left & right inverse ├─── +*/ +#custom-leftin1, +#custom-leftin2, +#custom-rightin1 { + font-size: 18.5px; +} + +/* ──────────────────────────────────────────────────────────┤ distro icon ├─── +*/ +#custom-distro { + font-size: 17.6px; +} + +#custom-left5, +#custom-right2 { + font-size: 18.68px; +} + +/* + Adjust these properties as well to keep the design consistent. +*/ + +/* ───────────────────────────────────────────────────────────┤ workspaces ├─── +*/ +#workspaces button { + border-radius: 8px; + padding: 0 2px; +} + +#workspaces button.active { + padding: 0 6px; +} + +/* ─────────────────────────────────────────────────────────┤ power button ├─── +*/ +#custom-power { + border-radius: 10px; + padding: 0 6px 0 9px; +} diff --git a/.config/waybar/theme.css b/.config/waybar/theme.css new file mode 100644 index 0000000..221575f --- /dev/null +++ b/.config/waybar/theme.css @@ -0,0 +1,75 @@ +/* Gruvbox Dark */ + +@define-color bg0_h #1d2021; +@define-color bg0 #282828; +@define-color bg1 #3c3836; +@define-color bg2 #504945; +@define-color bg3 #665c54; +@define-color bg4 #7c6f64; +@define-color gray #928374; +@define-color fg4 #a89984; +@define-color fg3 #bdae93; +@define-color fg2 #d5c4a1; +@define-color fg1 #ebdbb2; +@define-color fg0 #fbf1c7; +@define-color red #cc241d; +@define-color bright_red #fb4934; +@define-color green #98971a; +@define-color bright_green #b8bb26; +@define-color yellow #d79921; +@define-color bright_yellow #fabd2f; +@define-color blue #458588; +@define-color bright_blue #83a598; +@define-color purple #b16286; +@define-color bright_purple #d3869b; +@define-color aqua #689d6a; +@define-color bright_aqua #8ec07c; +@define-color orange #d65d0e; +@define-color bright_orange #fe8019; + +@define-color white #ffffff; +@define-color black #000000; + +/* + bg - background + fg - foreground + br - border +*/ + +/* Main Colors */ + +@define-color shadow shade(@bg0_h, 0.5); +@define-color main-fg @fg0; +@define-color main-bg @bg0_h; +@define-color main-br @fg0; + +@define-color active-bg @yellow; +@define-color active-fg @bg0_h; + +@define-color hover-bg @bg2; +@define-color hover-fg alpha(@fg0, 0.75); + +/* Module Colors */ + +@define-color module-fg @fg0; +@define-color workspaces @bg0; + +@define-color temperature @bg0; +@define-color memory @bg1; +@define-color cpu @bg2; +@define-color distro-fg @blue; +@define-color distro-bg @yellow; +@define-color time @bg2; +@define-color date @bg1; +@define-color tray @bg0; + +@define-color pulseaudio @bg0; +@define-color backlight @bg1; +@define-color battery @bg2; +@define-color power @yellow; + +/* State Colors */ + +@define-color warning @bright_orange; +@define-color critical @bright_red; +@define-color charging @fg0; diff --git a/.config/wofi/config b/.config/wofi/config index 2346006..e801531 100644 --- a/.config/wofi/config +++ b/.config/wofi/config @@ -1,6 +1,7 @@ allow_images=true -gtk-dark=true -image_size=20 -width=25% -hide-scroll=true lines=7 +no_actions=true +hide_scroll=true +width=45% +height=45% +hide-scroll=true diff --git a/.config/wofi/icons/lock.svg b/.config/wofi/icons/lock.svg new file mode 100644 index 0000000..251feff --- /dev/null +++ b/.config/wofi/icons/lock.svg @@ -0,0 +1,3 @@ + + + diff --git a/.config/wofi/icons/power.svg b/.config/wofi/icons/power.svg new file mode 100644 index 0000000..693fee3 --- /dev/null +++ b/.config/wofi/icons/power.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.config/wofi/icons/reboot.svg b/.config/wofi/icons/reboot.svg new file mode 100644 index 0000000..c1c06a6 --- /dev/null +++ b/.config/wofi/icons/reboot.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.config/wofi/icons/suspend.svg b/.config/wofi/icons/suspend.svg new file mode 100644 index 0000000..02eb927 --- /dev/null +++ b/.config/wofi/icons/suspend.svg @@ -0,0 +1,3 @@ + + + diff --git a/.config/wofi/scripts/powermenu.sh b/.config/wofi/scripts/powermenu.sh new file mode 100644 index 0000000..c3dac70 --- /dev/null +++ b/.config/wofi/scripts/powermenu.sh @@ -0,0 +1,34 @@ +WOFI_CONFIG_PATH=$HOME/.config/wofi + +menu="img:$WOFI_CONFIG_PATH/icons/power.svg:text:Power Off\nimg:$WOFI_CONFIG_PATH/icons/reboot.svg:text:Reboot\nimg:$WOFI_CONFIG_PATH/icons/lock.svg:text:Lock Screen\nimg:$WOFI_CONFIG_PATH/icons/suspend.svg:text:Suspend" + +get_menu() { + echo -e "$menu" +} + +exec_commmand() { + cmd_str=$(echo "$1" | awk -F'text:' '{print $2}') + + if [[ "$cmd_str" == "Power Off" ]]; then + systemctl poweroff + elif [[ "$cmd_str" == "Reboot" ]]; then + systemctl reboot + elif [[ "$cmd_str" == "Suspend" ]]; then + systemctl suspend + elif [[ "$cmd_str" == "Lock Screen" ]]; then + hyprlock + fi +} + + +# Show menu and execute command +menu_selected="" +if [[ "$1" == "--list" ]]; then + menu_selected="$(get_menu | wofi -d)" +elif [[ "$1" == "--grid" ]]; then + menu_selected="$(get_menu | wofi -d --columns=2)" +fi + +if [[ "$menu_selected" != "" ]]; then + exec_commmand "$menu_selected" +fi \ No newline at end of file diff --git a/.config/wofi/style.css b/.config/wofi/style.css index 9f0a82b..9d69f18 100644 --- a/.config/wofi/style.css +++ b/.config/wofi/style.css @@ -1,39 +1,45 @@ -window { -margin: 25px; -#border: 1px solid #bd93f9; -background-color: #282a36; -} - -#input { -margin: 15px; -border: none; -color: #f8f8f2; -background-color: #44475a; -} - -#inner-box { -margin: 15px; -border: none; -background-color: #282a36; +#window { + background-color: transparent; } #outer-box { -margin: 5px; -border: none; -background-color: #282a36; + border-radius: 14px; + background-color: #0d1117; +} + +#input { + padding: 4px; + border-radius: 14px 14px 0 0; + font-size: 16px; + background-color: #0d1117; + border: none; + color: #ecf2f8; +} + +#input:focus { + box-shadow: none; } #scroll { -margin: 5px; -border: none; + border-radius: 14px; + background-color: #161b22; + margin: 0 12px 12px; } -#text { -margin: 5px; -border: none; -color: #f8f8f2; -} +#inner-box { + border-radius: 14px; + padding: 12px; +} + +#entry { + padding: 8px; +} #entry:selected { -background-color: #44475a; + border-radius: 8px; + background-color: #21262d; } + +#entry image { + margin-right: 8px; +} \ No newline at end of file diff --git a/.config/wofi/wofi-powermenu.sh b/.config/wofi/wofi-powermenu.sh deleted file mode 100755 index 789a070..0000000 --- a/.config/wofi/wofi-powermenu.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -entries="⇠ Logout\n⏾ Suspend\n⭮ Reboot\n⏻ Shutdown" - -selected=$(echo -e $entries|wofi --width 250 --height 240 --dmenu --cache-file /dev/null | awk '{print tolower($2)}') - -case $selected in - logout) - pkill -u kia;; - suspend) - exec systemctl suspend;; - reboot) - exec systemctl reboot;; - shutdown) - exec systemctl poweroff;; - # it used to be poweroff -i -esac diff --git a/install.bash b/install.bash index cb2bd61..850a2d9 100644 --- a/install.bash +++ b/install.bash @@ -7,10 +7,8 @@ # SYMBOLIC LINKS ################################################################### -ln -s ~/dotfiles/.conf/hypr ~/.config/hypr -ln -s ~/dotfiles/.conf/hyprpaper ~/.config/hyprpaper -ln -s ~/dotfiles/.conf/fastfetch ~/.config/fastfetch -ln -s ~/dotfiles/.conf/mimeapps.list ~/.config/mimeapps.list +# Copy everything from .config + ln -s ~/dotfiles/wallpapers ~/wallpapers ln -s ~/dotfiles/.fonts ~/.fonts @@ -43,6 +41,9 @@ pacman -S btop ripgrep bat neovim nano grim slurp dust fastfetch imv wl-clipboar # Bash prompt bar pacman -S starship +# Additional Pacman utils like "checkupdates" +sudo pacman -S pacman-contrib + # Networking # For connecting to eduroam install config with this script: https://cat.eduroam.org/ # wpa_supplicant is dependency of networkmanager that was not installed for some reason. @@ -60,3 +61,8 @@ echo '[Service]\nExecStart=\nExecStart=-/sbin/agetty --noreset --noclear --autol # MANUAL CONFIGURATION REQUIRED ################################################################### +# Waybar: https://github.com/sejjy/mechabar/tree/classic +# Dependencies: +# wireplumber is Session/policy manager implementation for PipeWire +pacman -S cava bluez-utils pipewire-pulse ttf-jetbrains-mono-nerd wireplumber +yay -S bluetui rofi-lbonn-wayland-git