mirror of
https://github.com/tomasriveral/nixos.git
synced 2026-08-12 02:28:37 +02:00
added first version of waybar config. Still some problems
This commit is contained in:
@@ -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
|
||||
|
||||
+15
-1
@@ -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,7 +74,15 @@ home.packages = [
|
||||
# '')
|
||||
];
|
||||
|
||||
#ssh config
|
||||
#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;
|
||||
services.ssh-agent.enable = true;
|
||||
|
||||
@@ -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"
|
||||
];
|
||||
# █░░ ▄▀█ █▄█ █▀█ █░█ ▀█▀ █▀
|
||||
# █▄▄ █▀█ ░█░ █▄█ █▄█ ░█░ ▄█
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -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
|
||||
'';
|
||||
}
|
||||
@@ -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"
|
||||
'';
|
||||
}
|
||||
Reference in New Issue
Block a user