dend: wip home

This commit is contained in:
2026-03-27 18:49:27 +01:00
parent bb919f666b
commit a5c8c05c7c
40 changed files with 1463 additions and 11 deletions

View File

@@ -53,4 +53,380 @@
security.pam.services.hyprlock = {};
};
};
flake.homeModules.hyprland = {pkgs, ...}: let
screenshot = pkgs.writeShellScriptBin "screenshot" ''
region=0
clip=0
while [[ "$#" -gt 0 ]]; do
case $1 in
--region) region=1; ;;
--clip) clip=1; ;;
*) echo "Unknown parameter passed: $1"; exit 1 ;;
esac
shift
done
if [[ $region -eq 1 ]]; then
if [[ $clip -eq 1 ]]; then
${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp)" - | ${pkgs.wl-clipboard}/bin/wl-copy
else
${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp)" ~/Pictures/Screenshots/$(${pkgs.coreutils}/bin/date +'%Y-%m-%d_%H-%M-%S').png
fi
else
if [[ $clip -eq 1 ]]; then
${pkgs.grim}/bin/grim - | ${pkgs.wl-clipboard}/bin/wl-copy
else
${pkgs.grim}/bin/grim ~/Pictures/Screenshots/$(${pkgs.coreutils}/bin/date +'%Y-%m-%d_%H-%M-%S').png
fi
fi
'';
in {
wayland.windowManager.hyprland = {
enable = true;
systemd.enable = false;
systemd.variables = ["--all"];
xwayland.enable = true;
};
home.packages = with pkgs; [
wl-clipboard
];
services.wpaperd = {
enable = true;
settings = {
default = {
path = ../../static/wallpaper/stones.jpg;
};
};
};
services.hypridle.enable = true;
services.hypridle.settings = {
general = {
# lock_cmd = notify-send "lock!" # dbus/sysd lock command (loginctl lock-session)
# unlock_cmd = notify-send "unlock!" # same as above, but unlock
ignore_dbus_inhibit = "false"; # whether to ignore dbus-sent idle-inhibit requests (used by e.g. firefox or steam)
lock_cmd = "pidof hyprlock || hyprlock"; # avoid starting multiple hyprlock instances.
before_sleep_cmd = "loginctl lock-session"; # lock before suspend.
after_sleep_cmd = "hyprctl dispatch dpms on"; # to avoid having to press a key twice to turn on the display.
};
listener = [
# Screenlock
{
timeout = 180; # in seconds
on-timeout = "hyprlock"; # command to run when timeout has passed
# on-resume = notify-send "Welcome back to your desktop!" # command to run when activity is detected after timeout has fired.
}
# Suspend
{
timeout = 360; # in seconds
on-timeout = "systemctl suspend"; # command to run when timeout has passed
# on-resume = notify-send "Welcome back to your desktop!" # command to run when activity is detected after timeout has fired.
}
];
};
programs.hyprlock = {
enable = true;
settings = {
background = [
{
path = "screenshot"; # only png supported for now
# color = $color1
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
blur_size = 4;
blur_passes = 3; # 0 disables blurring
noise = 0.0117;
contrast = 1.3000; # Vibrant!!!
brightness = 0.8000;
vibrancy = 0.2100;
vibrancy_darkness = 0.0;
}
];
# Hours
label = [
{
text = ''cmd[update:1000] echo "<b><big> $(date +"%H") </big></b>"'';
#color = $color6
font_size = 112;
# font_family = Geist Mono 10
shadow_passes = 3;
shadow_size = 4;
position = "0, 220";
halign = "center";
valign = "center";
}
{
text = ''cmd[update:1000] echo "<b><big> $(date +"%M") </big></b>"'';
# color = $color6
font_size = 112;
# font_family = Geist Mono 10
shadow_passes = 3;
shadow_size = 4;
position = "0, 80";
halign = "center";
valign = "center";
}
{
text = ''cmd[update:18000000] echo "<b><big> "$(date +'%A')" </big></b>"'';
# color = $color7
font_size = 22;
# font_family = JetBrainsMono Nerd Font 10
position = "0, -10";
halign = "center";
valign = "center";
}
{
text = ''cmd[update:18000000] echo "<b> "$(${pkgs.coreutils-full}/bin/date +'%d %b')" </b>"'';
# color = $color7
font_size = 18;
#font_family = JetBrainsMono Nerd Font 10
position = "0, -40";
halign = "center";
valign = "center";
}
{
text = ''cmd[update:18000000] echo "<b>So ca. <big> $(${pkgs.curl}/bin/curl -s 'wttr.in?format=%t' | ${pkgs.coreutils-full}/bin/tr -d '+')</big> oder watt.</b>"'';
#color = $color7
font_size = 18;
# font_family = Geist Mono 10
position = "0, 40";
halign = "center";
valign = "bottom";
}
];
input-field = [
{
size = "250, 50";
outline_thickness = 3;
dots_size = 0.26; # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.64; # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true;
dots_rouding = -1;
rounding = 22;
# outer_color = $color0
# inner_color = $color0
# font_color = $color6
fade_on_empty = true;
placeholder_text = ''<i>Password...</i>''; # Text rendered in the input box when it's empty.
position = "0, 120";
halign = "center";
valign = "bottom";
}
];
};
};
wayland.windowManager.hyprland = {
settings = {
exec-once = [
"${pkgs.wpaperd}/bin/wpaperd &"
];
"$mod" = "SUPER";
bind =
[
"$mod, RETURN, exec, ${pkgs.kitty}/bin/kitty"
"$mod, d, exec, ${pkgs.wofi}/bin/wofi --show drun"
"$mod, h, movefocus, l"
"$mod, j, movefocus, d"
"$mod, k, movefocus, u"
"$mod, l, movefocus, r"
"$mod, LEFT, movefocus, l"
"$mod, DOWN, movefocus, d"
"$mod, UP, movefocus, u"
"$mod, RIGHT, movefocus, r"
"$mod SHIFT, h, movewindow, l"
"$mod SHIFT, j, movewindow, d"
"$mod SHIFT, k, movewindow, u"
"$mod SHIFT, l, movewindow, r"
"$mod SHIFT, LEFT, movewindow, l"
"$mod SHIFT, DOWN, movewindow, d"
"$mod SHIFT, UP, movewindow, u"
"$mod CTRL SHIFT, LEFT, moveactive, -10 0"
"$mod CTRL SHIFT, DOWN, moveactive, 0 10"
"$mod CTRL SHIFT, UP, moveactive, 0 -10"
"$mod CTRL SHIFT, RIGHT, moveactive, 10 0"
"$mod CTRL SHIFT, h, moveactive, -10 0"
"$mod CTRL SHIFT, j, moveactive, 0 10"
"$mod CTRL SHIFT, k, moveactive, 0 -10"
"$mod CTRL SHIFT, l, moveactive, 10 0"
"$mod SHIFT, q, killactive"
"$mod CTRL, h, resizeactive, -5% 0%"
"$mod CTRL, l, resizeactive, 5% 0%"
"$mod CTRL, j, resizeactive, 0% -5%"
"$mod CTRL, k, resizeactive, 0% 5%"
"$mod, SPACE, togglefloating, active"
"$mod SHIFT, SPACE, centerwindow"
"$mod, f, fullscreen, 1"
"$mod SHIFT, f, fullscreen, 0"
"$mod CTRL, f, fullscreenstate, -1 2"
"$mod SHIFT, s, pin"
"$mod SHIFT, x, exec, ${pkgs.hyprland}/bin/hyprctl kill"
", XF86AudioRaiseVolume, exec, ${pkgs.pulsemixer}/bin/pulsemixer --change-volume +5"
", XF86AudioLowerVolume, exec, ${pkgs.pulsemixer}/bin/pulsemixer --change-volume -5"
", XF86AudioMute, exec, ${pkgs.pulsemixer}/bin/pulsemixer --toggle-mute"
", XF86AudioMicMute, exec, ${pkgs.pulsemixer}/bin/pulsemixer --toggle-mute --id 1"
", XF86MonBrightnessUp, exec, ${pkgs.brightnessctl}/bin/brightnessctl set +5%"
", XF86MonBrightnessDown, exec, ${pkgs.brightnessctl}/bin/brightnessctl set 5%-"
"$mod, 9, exec, ${pkgs.hyprlock}/bin/hyprlock"
"$mod, 0, exec, ${pkgs.wlogout}/bin/wlogout -b 5"
"$mod, n, exec, ${pkgs.swaynotificationcenter}/bin/swaync-client -t"
", Print, exec, ${screenshot}/bin/screenshot"
"CTRL, Print, exec, ${screenshot}/bin/screenshot --region"
"SHIFT, Print, exec, ${screenshot}/bin/screenshot --clip"
"CTRL SHIFT, Print, exec, ${screenshot}/bin/screenshot --region --clip"
]
++ (
# workspaces
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
builtins.concatLists (builtins.genList (
x: let
ws = builtins.toString (x + 1);
in [
"$mod, ${ws}, workspace, ${ws}"
"$mod SHIFT, ${ws}, movetoworkspace, ${ws}"
"$mod CTRL, ${ws}, movetoworkspacesilent, ${ws}"
]
)
8)
);
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor = ",preferred,auto,1";
env = [
"GDK_SCALE,1"
"XCURSOR_SIZE,12"
];
xwayland = {
force_zero_scaling = true;
};
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
# Execute your favorite apps at launch
# exec-once = waybar & hyprpaper & firefox
# Source a file (multi-file configs)
# source = ~/.config/hypr/myColors.conf
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input = {
kb_layout = "de";
kb_variant = "deadacute";
kb_model = "";
kb_options = "caps:ctrl_modifier";
kb_rules = "";
repeat_delay = 250;
repeat_rate = 30;
follow_mouse = 1;
touchpad = {
natural_scroll = "yes";
};
sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
};
general = {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
gaps_in = 5;
gaps_out = 10;
border_size = 2;
"col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
"col.inactive_border" = "rgba(595959aa)";
layout = "dwindle";
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false;
};
layerrule = [
# blur for wlogout
"blur, logout_dialog"
# blur for swaync
"blur, swaync-control-center"
"blur, swaync-notification-window"
"ignorezero, swaync-control-center"
"ignorezero, swaync-notification-window"
"ignorealpha 0.5, swaync-control-center"
"ignorealpha 0.5, swaync-notification-window"
];
decoration = {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
rounding = 10;
blur = {
enabled = true;
size = 8;
passes = 1;
new_optimizations = true;
};
};
animations = {
enabled = "yes";
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
animation = [
"windows, 1, 7, myBezier"
"windowsOut, 1, 7, default, popin 80%"
"border, 1, 10, default"
"borderangle, 1, 8, default"
"fade, 1, 7, default"
"workspaces, 1, 6, default"
];
};
dwindle = {
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
pseudotile = "yes"; # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = "yes"; # you probably want this
};
master = {
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
# new_is_master = true;
};
ecosystem = {
no_update_news = true;
};
misc = {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
force_default_wallpaper = 0; # Set to 0 to disable the anime mascot wallpapers
};
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
# "device:epic-mouse-v1" = {
# sensitivity = -0.5;
# };
};
};
};
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -0,0 +1,111 @@
{
flake.homeModules.swaync = {pkgs, ...}: {
xdg.enable = true;
xdg.configFile = {
"swaync/themes" = {
source = ./themes;
};
"swaync/icons" = {
source = ./icons;
recursive = true;
};
};
services.swaync.enable = true;
services.swaync.style = ''
@import 'themes/nova-dark/notifications.css';
@import 'themes/nova-dark/central_control.css';
'';
services.swaync.settings = {
positionX = "right";
positionY = "top";
cssPriority = "user";
control-center-width = 380;
control-center-height = 860;
control-center-margin-top = 2;
control-center-margin-bottom = 2;
control-center-margin-right = 1;
control-center-margin-left = 0;
notification-window-width = 400;
notification-icon-size = 48;
notification-body-image-height = 160;
notification-body-image-width = 200;
timeout = 4;
timeout-low = 2;
timeout-critical = 6;
fit-to-screen = false;
keyboard-shortcuts = true;
image-visibility = "when-available";
transition-time = 200;
hide-on-clear = false;
hide-on-action = false;
script-fail-notify = true;
scripts = {
example-script = {
exec = "echo 'Do something...'";
urgency = "Normal";
};
};
notification-visibility = {
example-name = {
state = "muted";
urgency = "Low";
app-name = "Spotify";
};
};
widgets = [
"label"
"buttons-grid"
"mpris"
"title"
"dnd"
"notifications"
];
widget-config = {
title = {
text = "Notifications";
clear-all-button = true;
button-text = " 󰎟 ";
};
dnd = {
text = "Do not disturb";
};
label = {
max-lines = 1;
text = " ";
};
mpris = {
image-size = 96;
image-radius = 12;
};
volume = {
label = "󰕾";
show-per-app = true;
};
buttons-grid = {
actions = [
{
label = " ";
command = "${pkgs.alsa-utils}/bin/amixer set Master toggle";
}
{
label = "";
command = "${pkgs.alsa-utils}/bin/amixer set Capture toggle";
}
{
label = " ";
command = "${pkgs.networkmanagerapplet}/bin/nm-connection-editor";
}
{
label = "󰂯";
command = "${pkgs.blueman}/bin/blueman-manager";
}
];
};
};
};
};
}

View File

@@ -0,0 +1,258 @@
@define-color text @foreground;
@define-color background-alt alpha(@color1, .4);
@define-color selected @color6;
@define-color hover alpha(@selected, .4);
@define-color urgent @color2;
/* Temporary color defs */
@define-color background rgb(0,10,20);
@define-color background-alt rgb(0,20,30);
@define-color selected rgb(0,30,130);
* {
color: @text;
all: unset;
font-size: 14px;
/*font-family: "JetBrains Mono Nerd Font 10";*/
transition: 200ms;
}
/* Avoid 'annoying' backgroud */
.blank-window {
background: transparent;
}
/* CONTROL CENTER ------------------------------------------------------------------------ */
.control-center {
background: alpha(@background, .55);
border-radius: 24px;
border: 1px solid @selected;
box-shadow: 0 0 10px 0 rgba(0,0,0,.6);
margin: 18px;
padding: 12px;
}
/* Notifications */
.control-center .notification-row .notification-background,
.control-center .notification-row .notification-background .notification.critical {
background-color: @background-alt;
border-radius: 16px;
margin: 4px 0px;
padding: 4px;
}
.control-center .notification-row .notification-background .notification.critical {
color: @urgent;
}
.control-center .notification-row .notification-background .notification .notification-content {
margin: 6px;
padding: 8px 6px 2px 2px;
}
.control-center .notification-row .notification-background .notification > *:last-child > * {
min-height: 3.4em;
}
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action {
background: alpha(@selected, .6);
color: @text;
border-radius: 12px;
margin: 6px;
}
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:hover {
background: @selected;
}
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:active {
background-color: @selected;
}
/* Buttons */
.control-center .notification-row .notification-background .close-button {
background: transparent;
border-radius: 6px;
color: @text;
margin: 0px;
padding: 4px;
}
.control-center .notification-row .notification-background .close-button:hover {
background-color: @selected;
}
.control-center .notification-row .notification-background .close-button:active {
background-color: @selected;
}
progressbar,
progress,
trough {
border-radius: 12px;
}
progressbar {
background-color: rgba(255,255,255,.1);
}
/* Notifications expanded-group */
.notification-group {
margin: 2px 8px 2px 8px;
}
.notification-group-headers {
font-weight: bold;
font-size: 1.25rem;
color: @text;
letter-spacing: 2px;
}
.notification-group-icon {
color: @text;
}
.notification-group-collapse-button,
.notification-group-close-all-button {
background: transparent;
color: @text;
margin: 4px;
border-radius: 6px;
padding: 4px;
}
.notification-group-collapse-button:hover,
.notification-group-close-all-button:hover {
background: @hover;
}
/* WIDGETS --------------------------------------------------------------------------- */
/* Notification clear button */
.widget-title {
font-size: 1.2em;
margin: 6px;
}
.widget-title button {
background: @background-alt;
border-radius: 6px;
padding: 4px 16px;
}
.widget-title button:hover {
background-color: @hover;
}
.widget-title button:active {
background-color: @selected;
}
/* Do not disturb */
.widget-dnd {
margin: 6px;
font-size: 1.2rem;
}
.widget-dnd > switch {
background: @background-alt;
font-size: initial;
border-radius: 8px;
box-shadow: none;
padding: 2px;
}
.widget-dnd > switch:hover {
background: @hover;
}
.widget-dnd > switch:checked {
background: @selected;
}
.widget-dnd > switch:checked:hover {
background: @hover;
}
.widget-dnd > switch slider {
background: @text;
border-radius: 6px;
}
/* Buttons menu */
.widget-buttons-grid {
font-size: x-large;
padding: 6px 2px;
margin: 6px;
border-radius: 12px;
background: @background-alt;
}
.widget-buttons-grid>flowbox>flowboxchild>button {
margin: 4px 10px;
padding: 6px 12px;
background: transparent;
border-radius: 8px;
}
.widget-buttons-grid>flowbox>flowboxchild>button:hover {
background: @hover;
}
/* Music player */
.widget-mpris {
background: @background-alt;
border-radius: 16px;
color: @text;
margin: 20px 6px;
}
/* NOTE: Background need *opacity 1* otherwise will turn into the album art blurred */
.widget-mpris-player {
background-color: @background-sec;
border-radius: 22px;
padding: 6px 14px;
margin: 6px;
}
.widget-mpris > box > button {
color: @text;
border-radius: 20px;
}
.widget-mpris button {
color: alpha(@text, .6);
}
.widget-mpris button:hover {
color: @text;
}
.widget-mpris-album-art {
border-radius: 16px;
}
.widget-mpris-title {
font-weight: 700;
font-size: 1rem;
}
.widget-mpris-subtitle {
font-weight: 500;
font-size: 0.8rem;
}
/* Volume */
.widget-volume {
background: @background-sec;
color: @background;
padding: 4px;
margin: 6px;
border-radius: 6px;
}

View File

@@ -0,0 +1,115 @@
@define-color text @foreground;
@define-color background-alt @color1;
@define-color selected @color3;
@define-color hover @color5;
@define-color urgent @color2;
/* Temporary color defs */
@define-color background rgb(0,10,20);
@define-color background-alt rgb(0,20,30);
@define-color selected rgb(0,30,130);
* {
/*background-alt: @color1; Buttons background */
/*selected: @color2; Button selected */
/*hover: @color5; Hover button */
/*urgent: @color6; Urgency critical */
/*text-selected: @background; */
color: @text;
all: unset;
font-size: 14px;
font-family: "JetBrains Mono Nerd Font 10";
transition: 200ms;
}
.notification-row {
outline: none;
margin: 0;
padding: 0px;
}
.floating-notifications.background .notification-row .notification-background {
background: alpha(@background, .55);
box-shadow: 0 0 8px 0 rgba(0,0,0,.6);
border: 1px solid @selected;
border-radius: 24px;
margin: 16px;
padding: 0;
}
.floating-notifications.background .notification-row .notification-background .notification {
padding: 6px;
border-radius: 12px;
}
.floating-notifications.background .notification-row .notification-background .notification.critical {
border: 2px solid @urgent;
}
.floating-notifications.background .notification-row .notification-background .notification .notification-content {
margin: 14px;
}
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * {
min-height: 3.4em;
}
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action {
border-radius: 8px;
background-color: @background-alt ;
margin: 6px;
border: 1px solid transparent;
}
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:hover {
background-color: @hover;
border: 1px solid @selected;
}
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:active {
background-color: @selected;
color: @background;
}
.image {
margin: 10px 20px 10px 0px;
}
.summary {
font-weight: 800;
font-size: 1rem;
}
.body {
font-size: 0.8rem;
}
.floating-notifications.background .notification-row .notification-background .close-button {
margin: 6px;
padding: 2px;
border-radius: 6px;
background-color: transparent;
border: 1px solid transparent;
}
.floating-notifications.background .notification-row .notification-background .close-button:hover {
background-color: @selected;
}
.floating-notifications.background .notification-row .notification-background .close-button:active {
background-color: @selected;
color: @background;
}
.notification.critical progress {
background-color: @selected;
}
.notification.low progress,
.notification.normal progress {
background-color: @selected;
}

261
modules/desktop/waybar.nix Normal file
View File

@@ -0,0 +1,261 @@
{
flake.homeModules.waybar = {
config,
lib,
pkgs,
...
}: {
programs.waybar.enable = true;
programs.waybar.systemd.enable = true;
services.blueman-applet.enable = true;
services.network-manager-applet.enable = true;
services.pasystray.enable = true;
# is already fixed on latest home-manager rev
systemd.user.services = {
blueman-applet.Unit.After = lib.mkForce ["graphical-session.target"];
network-manager-applet.Unit.After = lib.mkForce ["graphical-session.target"];
pasystray.Unit.After = lib.mkForce ["graphical-session.target"];
waybar.Unit.After = lib.mkForce ["graphical-session.target"];
};
home.packages = with pkgs; [
pulsemixer
pavucontrol
networkmanagerapplet
];
programs.waybar = {
settings.mainBar = {
position = "top";
layer = "top";
height = 5;
margin-top = 0;
margin-bottom = 0;
margin-left = 0;
margin-right = 0;
modules-left = [
"custom/launcher"
"hyprland/workspaces"
];
modules-center = [
"hyprland/window"
];
modules-right = [
"clock"
"cpu"
"memory"
"disk"
"battery"
"network"
"tray"
];
clock = {
calendar = {
format = {today = "<span color='#b4befe'><b>{}</b></span>";};
};
format = " {:%H:%M}";
tooltip = "true";
tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
format-alt = " {:%d/%m}";
};
"hyprland/workspaces" = {
active-only = false;
disable-scroll = true;
format = "{icon}";
on-click = "activate";
format-icons = {
"1" = "1";
"2" = "2";
"3" = "3";
"4" = "4";
"5" = "5";
"6" = "6";
"7" = "7";
"8" = "8";
urgent = "";
default = "";
sort-by-number = true;
};
persistent-workspaces = {
"1" = [];
"2" = [];
"3" = [];
"4" = [];
"5" = [];
"6" = [];
"7" = [];
"8" = [];
};
};
memory = {
format = "󰟜 {}%";
format-alt = "󰟜 {used} GiB"; # 
interval = 2;
};
cpu = {
format = " {usage}%";
format-alt = " {avg_frequency} GHz";
interval = 2;
};
disk = {
# path = "/";
format = "󰋊 {percentage_used}%";
interval = 60;
};
network = {
format-wifi = " {signalStrength}%";
format-ethernet = "󰀂 ";
tooltip-format = "Connected to {essid} {ifname} via {gwaddr}";
format-linked = "{ifname} (No IP)";
format-disconnected = "󰖪 ";
};
tray = {
icon-size = 20;
spacing = 8;
};
pulseaudio = {
format = "{icon} {volume}%";
format-muted = "󰖁 {volume}%";
format-icons = {
default = [" "];
};
scroll-step = 5;
on-click = "pamixer -t";
};
battery = {
format = "{icon} {capacity}%";
format-icons = [" " " " " " " " " "];
format-charging = " {capacity}%";
format-full = " {capacity}%";
format-warning = " {capacity}%";
interval = 5;
states = {
warning = 20;
};
format-time = "{H}h{M}m";
tooltip = true;
tooltip-format = "{time}";
};
"custom/launcher" = {
format = "";
on-click = "${pkgs.wofi}/bin/wofi --show drun";
tooltip = "false";
};
};
style = ''
* {
border: none;
font-family: Font Awesome, Roboto, Arial, sans-serif;
font-size: 13px;
color: #ffffff;
border-radius: 15px;
}
window {
/*font-weight: bold;*/
}
window#waybar {
border-style: none;
border-width: 1px;
border-color: #33ccff;
background: rgba(0, 0, 0, 0);
}
/*-----module groups----*/
.modules-right {
background-color: rgba(0,43,51,0.85);
margin: 2px 10px 2px 0;
}
.modules-left {
margin: 2px 0 2px 5px;
background-color: rgba(0,119,179,0.6);
}
/*-----modules indv----*/
#workspaces button {
padding: 1px 5px;
background-color: transparent;
}
#workspaces button:hover {
box-shadow: inherit;
background-color: rgba(0,153,153,1);
}
#workspaces button.empty {
color: rgba(0 ,40, 40, 40);
}
#workspaces button.active {
background-color: rgba(0,43,51,0.85);
}
#window {
border-style: solid;
background-color: rgba(0,43,51,0.5);
margin: 2px 5px;
padding: 2px 5px;
border-width: 1px;
border-color: #33ccff;
}
#window.empty {
border-style: none;
background-color: transparent;
}
#custom-launcher {
background-color: rgba(0,119,179,0.6);
border-radius: 100px;
margin: 5px 5px;
}
#clock,
#battery,
#cpu,
#memory,
#temperature,
#network,
#pulseaudio,
#custom-media,
#tray,
#mode,
#custom-power,
#custom-menu,
#idle_inhibitor {
padding: 0 10px;
}
#mode {
color: #cc3436;
font-weight: bold;
}
#custom-power {
background-color: rgba(0,119,179,0.6);
border-radius: 100px;
margin: 5px 5px;
padding: 1px 1px 1px 6px;
}
/*-----Indicators----*/
#idle_inhibitor.activated {
color: #2dcc36;
}
#pulseaudio.muted {
color: #cc3436;
}
#battery.charging {
color: #2dcc36;
}
#battery.warning:not(.charging) {
color: #e6e600;
}
#battery.critical:not(.charging) {
color: #cc3436;
}
#temperature.critical {
color: #cc3436;
}
/*-----Colors----*/
/*
*rgba(0,85,102,1),#005566 --> Indigo(dye)
*rgba(0,43,51,1),#002B33 --> Dark Green
*RGBA(0,153,153,1),#009999 --> PERSIAN GREEN
*
*/
'';
};
};
}