added first version of waybar config. Still some problems

This commit is contained in:
Tomas Rivera
2026-02-27 21:53:39 +01:00
parent 30405baa2d
commit d72357ed3e
6 changed files with 763 additions and 4 deletions
+5 -1
View File
@@ -120,7 +120,7 @@ services.upower.enable = true;
programs.firefox.enable = true;
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
nixpkgs.config.allowUnfree = false;
# List packages installed in system profile. To search, run:
@@ -146,6 +146,10 @@ services.upower.enable = true;
cmatrix
swww #wallpaper daemon
socat # Utility for bidirectional data transfer between two independent data channels (used to communicate between hyprland and swww to change wallpapers dinamically)
gcc # GNU C compiler
libreoffice
gruvbox-gtk-theme
hyprpicker
#we need to install gnome and kde utils individually as we dont use gnome
gnome-calculator
snapshot
+14
View File
@@ -17,9 +17,11 @@ imports = [
../../modules/home-manager/swaync.nix # notification daemon
../../modules/home-manager/neovim.nix # dont use nixvim. broken
../../modules/home-manager/rclone.nix
../../modules/home-manager/waybar.nix
];
#programs.nixvim = {
# enable = true;
# imports = [ ../../modules/nixvim/neovim.nix ];
@@ -50,6 +52,10 @@ home.packages = [
(pkgs.callPackage ../../modules/scripts/cowsay.nix {})
(pkgs.callPackage ../../modules/scripts/wallpaper.nix {})
(pkgs.callPackage ../../modules/scripts/mountkdrive.nix {})
(pkgs.callPackage ../../modules/scripts/weatherwaybar.nix {})
(pkgs.callPackage ../../modules/scripts/colorpicker.nix {})
#pkgs
pkgs.gruvbox-gtk-theme
# # Adds the 'hello' command to your environment. It prints a friendly
# # "Hello, world!" when run.
# pkgs.hello
@@ -68,6 +74,14 @@ home.packages = [
# '')
];
#maybe migrate both of them in a separate file
# gtk config
gtk.theme = {
enable = true;
name = "Gruvbox-GTK-Theme-BL-MB";
package = pkgs.gruvbox-gtk-theme;
};
# ssh config
programs.ssh.enable = true;
+3 -1
View File
@@ -100,6 +100,7 @@ in
"$mod, F, exec, $browser"
"$mod+Shift, A, exec, rofi -show drun"
"$mod, Q, exec, custom-dontkillsteam"
"Ctrl+Alt, W, exec, pkill waybar || waybar"
#plugins keybindings
];
@@ -140,11 +141,12 @@ in
"wl-paste --type text --watch cliphist store" # clipboard store text data
"wl-paste --type image --watch cliphist store" # clipboard store image data
"custom-batterynotify"
#wallpapers
#wallpapers/b
"swww img ${wallpaper}"
"swww-daemon"
"sleep 1 && custom-wallpaper"
"custom-mountkdrive"
"waybar"
];
# █░░ ▄▀█ █▄█ █▀█ █░█ ▀█▀ █▀
# █▄▄ █▀█ ░█░ █▄█ █▄█ ░█░ ▄█
+649
View File
@@ -0,0 +1,649 @@
{ config, pkgs, ... }:
{
programs.waybar = {
enable = true;
settings = [
{
layer = "top";
position = "left";
margin = "5 2 5 0";
reload_style_on_change = true;
modules-left = [
"hyprland/workspaces"
"group/info"
];
modules-center = [
"hyprland/window"
];
modules-right = [
"group/brightness"
"group/sound"
"group/connection"
"group/together"
"tray"
"group/power"
];
# groups settings are organized by alphabetical order
"group/audio" = {
orientation = "inherit";
drawer = {
transition-duration = 500;
transition-left-to-right = false;
};
items = [
"pulseaudio"
"pulseaudio#mic"
"pulseaudio/slider"
];
};
"group/bluetooth" = {
orientation = "inherit";
drawer = {
transition-duration = 500;
transition-left-to-right = true;
};
items = [
"bluetooth"
"bluetooth#status"
];
};
"group/brightness" = {
orientation = "inherit";
drawer = {
transition-duration = 500;
transition-left-to-right = false;
};
items = [
"backlight"
"backlight/slider"
];
};
"group/connection" = {
orientation = "inherit";
items = [ "group/network" ];
};
"group/gcpu" = {
orientation = "inherit";
items = [
"custom/cpu-icon"
"temperature"
"cpu"
];
};
"group/info" = {
orientation = "inherit";
items = [
"group/gcpu"
"memory"
"disk"
];
};
"group/network" = {
orientation = "inherit";
drawer = {
transition-duration = 500;
transition-left-to-right = true;
};
items = [
"network"
"network#speed"
];
};
"group/power" = {
orientation = "inherit";
drawer = {
transition-duration = 500;
transition-left-to-right = false;
};
items = [
"battery"
"power-profiles-daemon"
];
};
"group/sound" = {
orientation = "inherit";
items = [
"group/audio"
"custom/notification"
];
};
"group/together" = {
orientation = "inherit";
items = [
"group/utils"
"clock"
];
};
"group/utils" = {
orientation = "inherit";
drawer = {
transition-duration = 500;
transition-left-to-right = true;
};
items = [
"custom/weather"
"custom/colorpicker"
];
};
# modules settings are organized by alphabetical order
backlight = {
device = "intel_backlight"; # my laptop is amd and it works
format = "{icon}";
format-icons = [
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
];
on-scroll-down = "brightnessctl s 5%-";
on-scroll-up = "brightness s +5%";
tooltip = true;
tooltip-format = "Brightness: {percent}%";
smooth-scrolling-threshold = 1;
};
"backlight/slider" = {
min = 5;
max = 100;
orientation = "vertical";
device = "intel_backlight";
};
bluetooth = {
format-on = "";
format-off = "󰂲";
format-disabled = "";
format-connected = "<b></b>";
tooltip-format = "{controller_alias}\t{controller_address}\n\n{num_connections} connected";
tooltip-format-connected = "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}";
tooltip-format-enumerate-connected = "{device_alias}\t{device_address}";
tooltip-format-enumerate-connected-battery = "{device_alias}\t{device_address}\t{device_battery_percentage}%";
};
"bluetooth#status" = {
format-on = "";
format-off = "";
format-disabled = "";
format-connected = "<b>{num_connections}</b>";
format-connected-battery = "<small><b>{device_battery_percentage}%</b></small>";
tooltip-format = "{controller_alias}\t{controller_address}\n\n{num_connections} connected";
tooltip-format-connected = "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}";
tooltip-format-enumerate-connected = "{device_alias}\t{device_address}";
tooltip-format-enumerate-connected-battery = "{device_alias}\t{device_address}\t{device_battery_percentage}%";
};
clock = {
format = "{:%H\n%M}";
tooltip-format = "<tt><small>{calendar}</small></tt>";
calendar = {
mode = "month";
mode-mon-col = 3;
weeks-pos = "right";
on-scroll = 1;
on-click-right = "mode";
format = {
today = "<span color='#d65d0e'><b><u>{}</u></b></span>";
};
};
};
cpu = {
format = "<b>{usage}%</b>";
};
"custom/colorpicker" = {
format = "";
return-type = "json";
interval = "once";
exec = "custom-colorpicker -j";
on-click = "sleep 1 && ~/.config/waybar/scripts/colorpicker.sh";
signal = 1;
};
"custom/cpu-icon" = {
format = "󰻠";
tooltip = false;
};
"custom/mark" = {
format = "";
tooltip = false;
};
"custom/weather" = {
format = "{}";
interval = 3600;
exec = "custom-weatherwaybar";
return-type = "json";
};
disk = {
interval = 600;
format = "<b> 󰋊 \n{percentage_used}󱉸</b>";
path = "/"; #maybe we should subtract ~/kdrive if it is counted
};
"hyprland/window" = {
format = "{class}";
rotate = 90;
};
"hyprland/workspaces" = {
format = "{icon}";
format-icons = {
"1" = "";
"2" = "";
"3" = "";
"4" = "";
"5" = "";
"6" = "";
"7" = "";
"8" = "";
"9" = "";
"10" = "";
"active" = "";
"default" = "";
};
persistent-workspaces = {
"*" = [ 1 2 3 4 5 6 7 8 9 10 ];
};
};
idle_inhibitor = {
format = "{icon}";
tooltip-format-activated = "Idle Inhibitor is active";
tooltip-format-deactivated = "Idle Inhibitor is not active";
format-icons = {
activated = "󰔡";
deactivated = "󰔢";
};
};
memory = {
format = "<b> \n{:2}󱉸</b>";
};
network = {
format = "{icon}";
format-icons = {
wifi = [ "󰤨" ];
ethernet = [ "󰈀" ];
disconnected = [ "󰖪" ];
};
format-wifi = "󰤨";
format-ethernet = "󰈀";
format-disconnected = "󰖪";
format-linked = "󰈁";
tooltip = false;
};
"network#speed" = {
format = " {bandwidthDownBits} ";
rotate = 90;
interval = 5;
tooltip-format = "{ipaddr}";
tooltip-format-wifi = "{essid} ({signalStrength}%) \n{ipaddr} | {frequency} MHz{icon} ";
tooltip-format-ethernet = "{ifname} 󰈀 \n{ipaddr} | {frequency} MHz{icon} ";
tooltip-format-disconnected = "Not Connected to any type of Network";
tooltip = true;
};
power-profiles-daemon = {
format = "{icon}";
tooltip-format = "Power profile: {profile}\nDriver: {driver}";
tooltip = true;
format-icons = {
default = "";
performance = "<span color='#B37F34'><small></small></span>";
balanced = "<span><small> </small></span>";
power-saver = "<span color='#a6e3a1'><small></small></span>";
};
};
pulseaudio = {
format = "{icon}";
format-bluetooth = "{icon}";
tooltip-format = "{volume}% {icon} | {desc}";
format-muted = "󰖁";
format-icons = {
headphones = "󰋌";
handsfree = "󰋌";
headset = "󰋌";
phone = "";
portable = "";
car = " ";
default = [
"󰕿"
"󰖀"
"󰕾"
];
};
on-click = "volume mute";
on-click-middle = "pavucontrol";
on-scroll-up = "pactl set-sink-volume @DEFAULT_SINK@ +5%";
on-scroll-down = "pactl set-sink-volume @DEFAULT_SINK@ -5%";
smooth-scrolling-threshold = 1;
};
"pulseaudio#mic" = {
format = "{format_source}";
format-source = "";
format-source-muted = "";
tooltip-format = "{volume}% {format_source}";
on-click = "pactl set-source-mute 0 toggle";
on-scroll-down = "pactl set-source-volume 0 -1%";
on-scroll-up = "pactl set-source-volume 0 +1%";
};
"pulseaudio/slider" = {
min = 0;
max = 140;
orientation = "vertical";
};
temperature = {
format = "{temperatureC}°C";
format-critical = "{temperatureC}°C";
interval = 10;
};
tray = {
icon-size = 18;
spacing = 10;
};
}
]; # home-manager wants the whole config as a list of bars
style = ''
@define-color foreground #c5c5c5;
@define-color background #191919;
@define-color cursor #c5c5c5;
@define-color color0 #191919;
@define-color color1 #3a3632;
@define-color color2 #582c1e;
@define-color color3 #423f39;
@define-color color4 #50473c;
@define-color color5 #634723;
@define-color color6 #BAA470;
@define-color color7 #8c8c8c;
@define-color color8 #525252;
@define-color color9 #4e4843;
@define-color color10 #763b28;
@define-color color11 #59554c;
@define-color color12 #6b5f51;
@define-color color13 #855f2f;
@define-color color14 #796d62;
@define-color color15 #c5c5c5;
@define-color active @color6;
* {
font-size: 16px;
font-family: "0xProto Nerd Font";
min-width: 8px;
min-height: 0px;
border: none;
border-radius: 0;
box-shadow: none;
text-shadow: none;
padding: 0px;
}
window#waybar {
transition-property: background-color;
transition-duration: 0.5s;
border-radius: 8px;
border: 2px solid @active;
background: @background;
background: alpha(@background, 0.7);
color: lighter(@active);
}
menu,
tooltip {
border-radius: 8px;
padding: 2px;
border: 1px solid lighter(@active);
background: alpha(@background, 0.6);
color: lighter(@active);
}
menu label,
tooltip label {
font-size: 14px;
color: lighter(@active);
}
#submap,
#tray>.needs-attention {
animation-name: blink-active;
animation-duration: 1s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
.modules-right {
margin: 0px 6px 6px 6px;
border-radius: 4px;
background: alpha(@background, 0.4);
color: lighter(@active);
}
.modules-left {
transition-property: background-color;
transition-duration: 0.5s;
margin: 6px 6px 6px 6px;
border-radius: 4px;
background: alpha(@background, 0.4);
color: lighter(@active);
}
#gcpu,
#custom-github,
#memory,
#disk,
#together,
#submap,
#custom-weather
#custom-recorder,
#connection,
#cnoti,
#brightness,
#power,
#custom-updates,
#tray,
#audio,
#privacy,
#sound {
border-radius: 4px;
margin: 2px 2px 4px 2px;
background: alpha(darker(@active), 0.3);
}
#custom-notifications {
padding-left: 4px;
}
#custom-hotspot,
#custom-github,
#custom-notifications {
font-size: 14px;
}
#custom-hotspot {
padding-right: 2px;
}
#custom-vpn,
#custom-hotspot {
background: alpha(darker(@active), 0.3);
}
#privacy-item {
padding: 6px 0px 6px 6px;
}
#gcpu {
padding: 8px 0px 8px 0px;
}
#custom-cpu-icon {
font-size: 25px;
}
#custom-cputemp,
#disk,
#memory,
#cpu {
font-size: 14px;
font-weight: bold;
}
#custom-github {
padding-top: 2px;
padding-right: 4px;
}
#custom-dmark {
color: alpha(@foreground, 0.3);
}
#submap {
margin-bottom: 0px;
}
#workspaces {
margin: 0px 2px;
padding: 4px 0px 0px 0px;
border-radius: 8px;
}
#workspaces button {
transition-property: background-color;
transition-duration: 0.5s;
color: @foreground;
background: transparent;
border-radius: 4px;
color: alpha(@foreground, 0.3);
}
#workspaces button.urgent {
font-weight: bold;
color: @foreground;
}
#workspaces button.active {
padding: 4px 2px;
background: alpha(@active, 0.4);
color: lighter(@active);
border-radius: 4px;
}
#network.wifi {
padding-right: 4px;
}
#submap {
min-width: 0px;
margin: 4px 6px 4px 6px;
}
#tray {
padding: 4px 0px 4px 0px;
}
#bluetooth {
padding-top: 2px;
}
#window {
border-radius: 8px;
padding: 4px 14px;
margin: 4px 2px 4px 2px;
}
#battery {
border-radius: 8px;
padding: 4px 0px;
margin: 4px 2px 4px 2px;
}
#battery.discharging.warning {
animation-name: blink-yellow;
animation-duration: 1s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
#battery.discharging.critical {
animation-name: blink-red;
animation-duration: 1s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
#clock {
font-weight: bold;
padding: 4px 2px 2px 2px;
}
#pulseaudio.mic {
border-radius: 4px;
color: @background;
background: alpha(darker(@foreground), 0.6);
padding-left: 4px;
}
#backlight-slider slider,
#pulseaudio-slider slider {
background-color: transparent;
box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
margin-top: 4px;
min-width: 6px;
min-height: 60px;
border-radius: 8px;
background-color: alpha(@background, 0.6);
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
border-radius: 8px;
background-color: lighter(@active);
}
#bluetooth.discoverable,
#bluetooth.discovering,
#bluetooth.pairable {
border-radius: 8px;
animation-name: blink-active;
animation-duration: 1s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
@keyframes blink-active {
to {
background-color: @active;
color: @foreground;
}
}
@keyframes blink-red {
to {
background-color: #c64d4f;
color: @foreground;
}
}
@keyframes blink-yellow {
to {
background-color: #cf9022;
color: @foreground;
}
}
'';
};
}
+70
View File
@@ -0,0 +1,70 @@
{ writeShellApplication, hyprpicker, libnotify, toybox, ... }:
writeShellApplication {
name = "custom-colorpicker";
runtimeInputs = [
hyprpicker
libnotify
toybox
];
text = ''
check() {
command -v "$1" 1>/dev/null
}
notify() {
check notify-send && {
notify-send -a "Color Picker" "$@"
return
}
echo "$@"
}
loc="$HOME/.cache/colorpicker"
[ -d "$loc" ] || mkdir -p "$loc"
[ -f "$loc/colors" ] || touch "$loc/colors"
limit=10
[[ $# -eq 1 && $1 = "-l" ]] && {
cat "$loc/colors"
exit
}
[[ $# -eq 1 && $1 = "-j" ]] && {
text="$(head -n 1 "$loc/colors")"
mapfile -t allcolors < <(tail -n +2 "$loc/colors")
# allcolors=($(tail -n +2 "$loc/colors"))
tooltip="<b> COLORS</b>\n\n"
tooltip+="-> <b>$text</b> <span color='$text'>󰸌</span> \n"
for i in "''${allcolors[@]}"; do
tooltip+=" <b>$i</b> <span color='$i'>󰸌</span> \n"
done
cat <<EOF
{ "text":"<span color='$text'>󰸌</span>", "tooltip":"$tooltip"}
EOF
exit
}
check hyprpicker || {
notify "hyprpicker is not installed"
exit
}
killall -q hyprpicker
color=$(hyprpicker)
check wl-copy && {
echo "$color" | sed -z 's/\n//g' | wl-copy
}
prevColors=$(head -n $((limit - 1)) "$loc/colors")
echo "$color" >"$loc/colors"
echo "$prevColors" >>"$loc/colors"
sed -i '/^$/d' "$loc/colors"
pkill -RTMIN+1 waybar
'';
}
+20
View File
@@ -0,0 +1,20 @@
{ writeShellApplication, curl, ... }:
writeShellApplication {
name = "custom-weatherwaybar";
runtimeInputs = [
curl
];
text = ''
PATTERN="C"
PATTERN2=" "
TEXT1="''$(curl -s "https://wttr.in/?format=%c")"
TEXT1=''${TEXT1/$PATTERN2/}
TEXT2="''$(curl -s "https://wttr.in/?format=%t")"
TEXT2=''${TEXT2/$PATTERN/}
TEXT3="''$(curl -s "https://wttr.in/?format=%f")"
TEXT3=''${TEXT3/$PATTERN/}
printf '{"text":"%s\n%s\n%s", "tooltip": false, "class": "weather"}\n' \
"$TEXT1" "$TEXT2" "$TEXT3"
'';
}