Compare commits

...

3 Commits

Author SHA1 Message Date
4096d75cb1 fix bluetooth 2025-05-17 08:18:36 +02:00
b6dd8cab31 fixes 2025-05-17 07:28:59 +02:00
95f3c3432c waybar and rofi 2025-05-17 07:24:24 +02:00
51 changed files with 3428 additions and 61 deletions

View File

@ -7,9 +7,6 @@
[[ -f ~/.bashrc ]] && . ~/.bashrc
# Set default theme to dark
export GTK_THEME=Adwaita:dark && export QT_QPA_PLATFORMTHEME=gtk3
# Start uwsm, which starts hyprland
if uwsm check may-start; then
exec uwsm start hyprland.desktop

View File

@ -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

View File

@ -6,7 +6,6 @@
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=,preferred,auto,1.566667
#monitor=,preferred,auto,2
###################
### MY PROGRAMS ###
@ -17,8 +16,8 @@ monitor=,preferred,auto,1.566667
# Set programs that you use
$terminal = kitty
$filemanager = kitty -e yazi
$menu = wofi --show drun
$powerMenu = bash ~/.config/wofi/wofi-powermenu.sh
$menu = rofi -show drun
$powerMenu = bash ~/.config/waybar/scripts/power-menu.sh
$browser = firefox
$email = thunderbird
$screenshot = grim
@ -44,6 +43,13 @@ exec-once = [workspace 1 silent] $terminal
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
env = GDK_BACKEND,wayland
env = QT_QPA_PLATFORM,wayland
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland
env = GTK_THEME,Adwaita:dark
env = QT_QPA_PLATFORMTHEME,gtk3
##############################
### WINDOWS AND WORKSPACES ###

View File

@ -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;
}

171
.config/rofi/config.rasi Normal file
View File

@ -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} [<span weight='light' size='small'><i>({generic})</i></span>]";*/
/* 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"

View File

@ -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;
}

45
.config/rofi/theme.rasi Normal file
View File

@ -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;
}

View File

@ -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 <b@bah.im>
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"

View File

@ -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;
}

368
.config/waybar/backup.css Normal file
View File

@ -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;
} */

400
.config/waybar/config.jsonc Normal file
View File

@ -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": "<tt>{calendar}</tt>",
"calendar": {
"mode": "month",
"mode-mon-col": 6,
"on-click-right": "mode",
"format": {
"months":
"<span color='#928374'><b>{}</b></span>",
"weekdays":
"<span color='#d5c4a1' font='7'>{}</span>",
"today":
"<span color='#cc241d'><b>{}</b></span>"
}
},
"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": "<span foreground='#98971a'>󰓇 </span>",
"firefox": "<span foreground='#cc241d'>󰼁 </span>"
},
"status-icons": {
"paused": "<span color='#928374'>\u200A\u200A󰏤\u2009\u2009</span>"
},
"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
}
}

View File

@ -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;

View File

@ -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

View File

@ -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 <username> -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 <username> -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 "<username>" with your username.
# reload udev rules by running the following command:
# sudo udevadm control --reload-rules

View File

@ -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

View File

@ -0,0 +1,92 @@
#!/usr/bin/env bash
# Print error message for invalid arguments
print_error() {
cat <<"EOF"
Usage: ./brightnesscontrol.sh <action>
Valid actions are:
i -- <i>ncrease brightness [+2%]
d -- <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}\"}"

View File

@ -0,0 +1,3 @@
#!/bin/bash
i="$(checkupdates)"
printf "%b%b" "$i" "${i:+\n}" |wc -l; echo "$i" |column -t #|tr '\n' '\r'

View File

@ -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="<span color='#f38ba8'>${thermo_icon} ${temp}°C</span>"
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\"}"

View File

@ -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\"}"

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,123 @@
#!/usr/bin/env bash
# Define functions
print_error() {
cat <<"EOF"
Usage: ./volumecontrol.sh -[device] <actions>
...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

View File

@ -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

View File

@ -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}\"}"

View File

@ -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;
} */

466
.config/waybar/style.css Normal file
View File

@ -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;
}

75
.config/waybar/theme.css Normal file
View File

@ -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;

View File

@ -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

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="#ecf2f8" class="size-6">
<path stroke-linecap="round" stroke-linejoin="round" d="M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z" />
</svg>

After

Width:  |  Height:  |  Size: 369 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="#ecf2f8" class="size-6">
<path stroke-linecap="round" stroke-linejoin="round" d="M5.636 5.636a9 9 0 1 0 12.728 0M12 3v9" />
</svg>

After

Width:  |  Height:  |  Size: 231 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="#ecf2f8" class="size-6">
<path stroke-linecap="round" stroke-linejoin="round" d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99" />
</svg>

After

Width:  |  Height:  |  Size: 360 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="#ecf2f8" class="size-6">
<path stroke-linecap="round" stroke-linejoin="round" d="M14.25 9v6m-4.5 0V9M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" />
</svg>

After

Width:  |  Height:  |  Size: 250 B

View File

@ -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

View File

@ -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;
}

View File

@ -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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -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,9 @@ 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 bluez pipewire-pulse ttf-jetbrains-mono-nerd wireplumber
yay -S rofi-lbonn-wayland-git bluetui
systemctl enable --now bluetooth.service