This commit is contained in:
天クマ 2025-12-18 12:09:34 -03:00
commit c8734e660a
392 changed files with 21043 additions and 0 deletions

View file

@ -0,0 +1,208 @@
{
"id": "top",
"height": "0px",
"margin": "0px 0px 0p 0px",
"name": "top",
"layer": "top",
"position": "top",
"modules-right": [ "sway/mode", "tray", "custom/containers", "custom/vm", "disk", "memory", "cpu", "network", "pulseaudio", "backlight", "battery", "idle_inhibitor", "custom/bluelightfilter", "clock", "clock#utc", "custom/notification"],
"modules-center": [ "sway/scratchpad" ],
"modules-left": ["sway/workspaces"],
"sway/workspaces": {
"disable-scroll": true,
"alphabetical_sort": true
},
"clock": {
"format": "{:%a %d %b %H:%M}",
"tooltip": true,
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
},
"clock#utc": {
"format": "{:%H:%M UTC}",
"timezone": "Etc/UTC"
},
"sway/mode": {
"format": ""
},
"battery": {
"format": "{icon}",
"format-alt": "{time} {icon}",
"tooltip-format": "{time}",
"format-alt-click": "click-right",
"format-icons": ["", "", "", ""],
"format-charging": "",
"interval": 30,
"on-click": "gnome-control-center power",
"states": {
"warning": 50,
"critical": 20
}
},
"network": {
"format": "{icon}",
"format-icons": {
"wifi": ["﬉"],
"ethernet": [""],
"disconnected": [""]
},
"format-alt-click": "click-right",
"format-wifi": "﬉",
"format-ethernet": "",
"format-disconnected": "睊",
"tooltip-format": "{ifname} via {gwaddr}",
"tooltip-format-wifi": " {essid} ﬉\n{ipaddr} {signalStrength}%",
"tooltip-format-ethernet": "{ifname} {ipaddr} ",
"tooltip-format-disconnected": "Disconnected",
"on-click": "gnome-control-center network",
"tooltip": true
},
"backlight": {
"device": "intel_backlight",
"format": "{icon}",
"format-icons": ["", "", ""],
"on-scroll-up": "exec brightnessctl set 5%+",
"on-scroll-down": "brightnessctl set 5%-",
"states": {
"low": 0,
"mid": 50,
"high": 75
},
"smooth-scrolling-threshold": 1.0,
},
"pulseaudio": {
"format": "{icon}",
"format-alt-click": "click-right",
"format-bluetooth": "",
"format-muted": "婢",
"format-icons": {
"headphone": "",
"default": ["", ""]
},
"tooltip-format": "{volume}",
"scroll-step": 10,
"on-click": "~/.config/waybar/custom/pulseaudio.sh",
"states": {
"low": 0,
"mid": 50,
"high": 75
},
"smooth-scrolling-threshold": 1.0,
},
"cpu": {
"interval": 10,
"format": "",
"format-alt-click": "click-right",
"on-click": "~/.config/waybar/custom/stats.sh cpu",
"states": {
"low": 0,
"mid": 25,
"high": 50
}
},
"memory": {
"interval": 30,
"format": "",
"tooltip-format": "{used:0.1f}G used\n{avail:0.1f}G available\n{total:0.1f}G total",
"format-alt-click": "click-right",
"on-click": "~/.config/waybar/custom/stats.sh memory",
"states": {
"low": 0,
"mid": 50,
"high": 75
}
},
"disk": {
"interval": 30,
"format": "",
"format-alt-click": "click-right",
"tooltip-format": "{used} used\n{free} free\n{total} total",
"on-click": "~/.config/waybar/custom/disk_stats.sh",
"path": "/",
"states": {
"low": 0,
"mid": 25,
"high": 50
}
},
"custom/vm": {
"format": "",
"interval": 10,
"return-type": "json",
"exec": "~/.config/waybar/custom/kvm-monitor.sh",
"on-click": "~/.config/waybar/custom/kvm.sh"
},
"custom/containers": {
"format": "",
"interval": 10,
"return-type": "json",
"exec": "~/.config/waybar/custom/containers-monitor.sh",
},
"custom/bluelightfilter": {
"format": "",
"interval": 10,
"return-type": "json",
"exec": "~/.config/waybar/custom/bluelightfilter-monitor.sh",
"on-click": "~/.config/waybar/custom/bluelightfilter-toggle.sh",
"signal": 8
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "﯎",
"deactivated": "﯏"
}
},
"custom/notification": {
"tooltip": false,
"format": "{icon}",
"format-icons": {
"notification": "<span foreground='red'><sup></sup></span>",
"none": "",
"dnd-notification": "<span foreground='red'><sup></sup></span>",
"dnd-none": ""
},
"return-type": "json",
"exec-if": "which swaync-client",
"exec": "swaync-client -swb",
"on-click": "swaync-client -t -sw",
"on-click-right": "swaync-client --close-all",
"escape": true
},
"tray": {
"icon-size": 12,
"spacing": 10,
},
"custom/spotify-metadata": {
"format": "{} ",
"max-length": 60,
"interval": 30,
"return-type": "json",
"exec": "~/.config/waybar/custom/spotify/metadata.sh",
"on-click": "~/.config/waybar/custom/spotify/controls.sh",
"on-scroll-up": "~/.config/waybar/custom/spotify/controls.sh next",
"on-scroll-down": "~/.config/waybar/custom/spotify/controls.sh previous",
"signal": 5,
"smooth-scrolling-threshold": 1.0,
},
"wlr/taskbar": {
"format": "{icon}",
"sort-by-app-id": true,
"icon-size": 13,
"icon-theme": "Numix-Circle",
"tooltip-format": "{title}",
"on-click": "activate",
"on-click-right": "close",
"markup": true,
"ignore-list": [
"kitty"
],
},
"sway/scratchpad": {
"format": "{icon}",
"show-empty": false,
"format-icons": ["", ""],
"tooltip": true,
"tooltip-format": "{app}: {title}"
},
}

View file

@ -0,0 +1,7 @@
#!/bin/bash
if pgrep gammastep &> /dev/null
then
echo '{"class": "activated", "tooltip": "activated"}'
exit
fi
echo '{"class": "", "tooltip": "deactivated"}'

View file

@ -0,0 +1,10 @@
#!/bin/bash
if pgrep gammastep
then
pkill --signal SIGKILL gammastep
pkill -RTMIN+8 waybar
exit
fi
gammastep &
# send signal to update monitor
pkill -RTMIN+8 waybar

View file

@ -0,0 +1,25 @@
#!/bin/bash
IFS=$'\n'
docker_containers=($(docker ps --format "{{ .Names }}\t{{ .Status }}" | column -t))
n="${#docker_containers[@]}"
podman_containers=($(podman ps --format "{{ .Names }}\t{{ .Status }}" | column -t))
n=$((n + "${#docker_containers[@]}"))
tooltip="Containers:"
for con in "${docker_containers[@]}";
do
tooltip="$tooltip\n$con"
done
for con in "${podman_containers[@]}";
do
tooltip="$tooltip\n$con"
done
if [[ n -gt 0 ]]
then
echo "{\"class\": \"running\", \"text\": \"$n\", \"tooltip\": \"$tooltip\"}"
exit
fi

View file

@ -0,0 +1,4 @@
#!/bin/bash
alacritty -t fzf-switcher -e /home/louis/git/gopath/bin/gdu&

View file

@ -0,0 +1,18 @@
#!/bin/bash
IFS=$'\n'
vms=($(virsh --connect qemu:///system list | grep -e "[0-9]\+"))
n="${#vms[@]}"
tooltip="Virtual Machines:"
for vm in "${vms[@]}";
do
tooltip="$tooltip\n$vm"
done
if [[ n -gt 0 ]]
then
echo "{\"class\": \"running\", \"text\": \"$n\", \"tooltip\": \"$tooltip\"}"
exit
fi

View file

@ -0,0 +1,8 @@
#!/bin/bash
if ! pgrep virt-manager
then
virt-manager&
fi
swaymsg workspace vm

View file

@ -0,0 +1,8 @@
#!/bin/bash
if ! pgrep pavucontrol
then
pavucontrol&
fi
swaymsg workspace sound

View file

@ -0,0 +1,52 @@
#!/bin/bash
status=$(playerctl -p spotify status)
if [[ -z $status ]]
then
exit
fi
if [[ $1 == "prev" ]]
then
playerctl -p spotify previous
sleep .1
# trigger the monitor to resync all
# spotify elements
pkill -RTMIN+4 waybar
exit
fi
if [[ $1 == "next" ]]
then
playerctl -p spotify next
sleep .1
# trigger the monitor to resync all
# spotify elements
pkill -RTMIN+4 waybar
exit
fi
# if no option is provided we toggle
# the play state and send a signal to
# waybar to update it's css.
if [[ $status == "Playing" ]]
then
playerctl -p spotify pause
sleep .1
# trigger the monitor to resync all
# spotify elements
pkill -RTMIN+4 waybar
exit
fi
if [[ $status == "Paused" ]]
then
playerctl -p spotify play
sleep .1
# trigger the monitor to resync all
# spotify elements
pkill -RTMIN+4 waybar
exit
fi

View file

@ -0,0 +1,27 @@
#!/bin/bash
status=$(playerctl -p spotify status)
artist=$(playerctl -p spotify metadata xesam:artist)
title=$(playerctl -p spotify metadata xesam:title)
album=$(playerctl -p spotify metadata xesam:album)
if [[ -z $status ]]
then
# spotify is dead, we should die to.
exit
fi
if [[ $status == "Playing" ]]
then
echo "{\"class\": \"playing\", \"text\": \"$artist - $title\", \"tooltip\": \"$artist - $title - $album\"}"
pkill -RTMIN+5 waybar
exit
fi
if [[ $status == "Paused" ]]
then
echo "{\"class\": \"paused\", \"text\": \"$artist - $title\", \"tooltip\": \"$artist - $title - $album\"}"
pkill -RTMIN+5 waybar
exit
fi

View file

@ -0,0 +1,18 @@
#!/bin/bash
# we are a clock for the other
# spotify elements.
#
# waybar will run this on an interval
# and external processes can trigger this
# with pkill -RTMIN+4 waybar
sleep .1
pkill -RTMIN+5 waybar
# if spotify is running, trigger the
# render of the "quit" element.
if pgrep spotify > /dev/null
then
pkill -RTMIN+6 waybar
fi

View file

@ -0,0 +1,20 @@
#!/bin/bash
status=$(playerctl -p spotify status)
if [[ -z $status ]]
then
exit
fi
if [[ $status == "Playing" ]]
then
echo "{\"class\": \"playing\", \"text\": \"\", \"tooltip\": \"$album\"}"
exit
fi
if [[ $status == "Paused" ]]
then
echo "{\"class\": \"paused\", \"text\": \"\", \"tooltip\": \"$album\"}"
exit
fi

View file

@ -0,0 +1,13 @@
#!/bin/bash
# quit closes spotify but triggers
# the monitor to update which immediately
# remove the widget instead of waiting for
# the next monitor interval.
if pgrep spotify
then
kill -SIGINT $(pgrep spotify)
fi
pkill -RTMIN+4 waybar

View file

@ -0,0 +1,15 @@
#!/bin/bash
swaymsg workspace stats
if [ "$1" == "cpu" ]; then
kitty "htop" "-s" "PERCENT_CPU"
exit
fi
if [ "$1" == "memory" ]; then
kitty "htop" "-s" "M_RESIDENT"
exit
fi
kitty "htop"
exit

View file

@ -0,0 +1,8 @@
#!/bin/bash
if pgrep wf-recorder &> /dev/null
then
echo '{"class": "recording"}'
exit
fi
echo '{"class": ""}'

View file

@ -0,0 +1,9 @@
#!/bin/bash
wf-recorder -o $(swaymsg -r -t get_outputs | jq -r '.[] | select(.focused == true).name') -f $HOME/Videos/$(date -Is).mp4 &> /dev/null &
notify-send ' screen cap started'
sleep .1
# send signal to update monitor
pkill -RTMIN+8 waybar

View file

@ -0,0 +1,7 @@
#!/bin/bash
pkill -SIGINT wf-recorder && notify-send ' screen cap ended'
sleep .1
# send signal to update monitor
pkill -RTMIN+8 waybar

View file

@ -0,0 +1,272 @@
@define-color trans rgba(28, 28, 28, 0);
@define-color black #2f2f2f;
@define-color black-trans @white;
@define-color blue #437890;
@define-color blue-light @blue;
@define-color yellow #8d905f;
@define-color yellow-light #fff8c5;
@define-color red #755754;
@define-color green #609075;
@define-color grey #525050;
@define-color grey-light #8e8e8e;
@define-color grey-trans rgba(84, 85, 85, .60);
@define-color white #b9bab5;
@define-color white-alt #eaeef2;
@define-color white-alt-trans rgba(234, 238, 242, .90);
@define-color white-lighter #c9cac5;
@define-color white-light @grey;
@define-color orange #9b885c;
@define-color purple #6b6098;
@define-color turquoise #6b6098;
.modules-right {
font-family: "Fira Code Regular Nerd Font Complete Mono";
font-size: 15px;
}
.modules-center {
font-family: "Fira Code Regular Nerd Font Complete Mono";
font-size: 15px;
}
.modules-left {
font-family: "Fira Code Regular Nerd Font Complete Mono";
font-size: 12px;
}
tooltip {
font-family: "FreeMono";
font-size: 20px;
background: @white-alt;
border: 2px solid @purple;
}
tooltip label {
color: @grey-light;
}
window#waybar {
/* border-bottom: .5px solid @grey-light; */
background: @white-alt;
}
/* === work spaces === */
#workspaces {
padding: 0px 0px 0px 0px;
border-radius: 0px 0px 0px 0px;
}
#workspaces button {
margin: 0px 0px 0px 0px;
padding: 0px 5px 0px 5px;
color: @black;
}
#workspaces button.focused {
color: #FFFFFF;
background: @blue;
border-radius: 1px;
/* border-bottom: 3px solid @blue; */
}
#workspaces button:hover {
background: @white;
border-radius: 2px;
box-shadow: inherit;
text-shadow: inherit;
}
#workspaces button.urgent {
color: @red;
}
#custom-spotify-metadata, #custom-spotify-play-pause, #custom-spotify-prev, #custom-spotify-next, #custom-spotify-quit {
color: @white;
padding: 0px 6px 0px 6px;
font-size: 12px;
}
#custom-spotify-metadata {
margin: 0px 0px 0px 1px;
}
#custom-spotify-metadata.playing {
color: @green;
}
#custom-spotify-metadata.paused {
color: @yellow;
}
#custom-spotify-prev {
margin: 0px 0px 0px 1px;
}
#custom-spotify-play-pause {
margin: 0px 0px 0px 1px;
}
#custom-spotify-next {
margin: 0px 0px 0px 1px;
}
#custom-spotify-quit {
margin: 0px 0px 0px 1px;
}
#clock, #mode {
margin: 0px 15px 0px 15px;
padding: 0px 0px 0px 0px;
color: @grey;
}
#mode {
font-size: 20px;
}
#scratchpad, #clock, #tray, #custom-bluelightfilter, #custom-vm, #custom-vm, #custom-notification, #custom-containers, #custom-wfrecord, #custom-grimshot, #battery, #disk, #cpu, #memory, #temperature, #network, #pulseaudio, #backlight, #idle_inhibitor {
margin: 0px 1px 0px 1px;
padding: 0px 6px 0px 6px;
color: @black;
font-size: 20px;
}
#clock {
font-size: 15px
}
#custom-notification {
color: @grey;
}
#idle_inhibitor {
color: @grey;
}
#idle_inhibitor.activated {
color: @blue-light;
}
#custom-bluelightfilter {
color: @grey;
font-size: 19px;
}
#custom-bluelightfilter.activated {
color: @blue-light;
}
#tray {
color: @green;
}
#custom-wfrecord {
font-size: 14px;
}
#custom-grimshot {
font-size: 15px;
}
#custom-wfrecord.recording {
color: @blue-light;
}
#custom-vm {
font-size: 20px;
}
#custom-vm.running {
color: @blue;
}
#custom-containers {
font-size: 20px;
}
#custom-containers.running {
color: @blue;
}
#memory {
}
#memory.low {
color: @blue;
}
#memory.mid {
color: @yellow;
}
#memory.high {
color: @red;
}
#cpu {
}
#cpu.low {
color: @blue;
}
#cpu.mid {
color: @yellow;
}
#cpu.high {
color: @red;
}
#disk {
font-size: 16px;
}
#disk.low {
color: @blue;
}
#disk.mid {
color: @yellow;
}
#disk.high {
color: @red;
}
#network {
color: @green;
font-size: 18px;
}
#network.disconnected {
color: @red;
}
#battery {
font-size: 11px;
color: @green;
}
#battery.warning {
color: @yellow;
}
#battery.critical {
color: @red;
}
#battery.charging {
color: @green;
font-size: 13px;
}
#backlight {
font-size: 12px;
}
#backlight.low {
color: @blue;
}
#backlight.mid {
color: @yellow;
}
#backlight.high {
color: @red;
}
#pulseaudio {
font-size: 22px;
}
#pulseaudio.low {
color: @blue;
}
#pulseaudio.mid {
color: @yellow;
}
#pulseaudio.high {
color: @red;
}
#pulseaudio.muted {
color: @red;
}

View file

@ -0,0 +1,273 @@
@define-color trans rgba(28, 28, 28, .0);
@define-color black #1c1c1c;
@define-color black-two #252525;
@define-color black-trans rgba(35, 35, 35, .95);
@define-color black-trans-two rgba(42, 42, 42, .95);
@define-color black-trans-overlay rgba(85, 85, 85, .4);
@define-color blue #5b839a;
@define-color blue-light #87afd7;
@define-color yellow #7c794e;
@define-color yellow-light #9b9761;
@define-color red #755754;
@define-color green #497964;
@define-color grey #545555;
@define-color grey-light #8e8e8e;
@define-color white #ababaa;
@define-color orange #9b885c;
@define-color orange-darker #756643;
@define-color purple #6b6098;
@define-color purple-light #988acf;
@define-color turquoise #268889;
@define-color turquoise-light #4dc5c6;
.modules-right {
font-family: "Fira Code Regular Nerd Font Complete Mono";
font-size: 15px;
}
.modules-center {
font-family: "Fira Code Regular Nerd Font Complete Mono";
font-size: 15px;
}
.modules-left {
font-family: "Fira Code Regular Nerd Font Complete Mono";
font-size: 12px;
}
tooltip {
font-family: "FreeMono";
font-size: 20px;
background: @black-trans;
border: 2px solid @blue;
}
tooltip label {
color: @grey-light;
}
window#waybar {
border-bottom: .3px solid @grey-light;
background: @black-trans-two;
}
/* === work spaces === */
#workspaces {
padding: 0px 0px 0px 0px;
border-radius: 0px 0px 0px 0px;
}
#workspaces button {
margin: 0px 0px 0px 0px;
padding: 0px 5px 0px 5px;
color: @grey-light;
border-radius: 0px;
}
#workspaces button.focused {
color: #FFFFFF;
background: @blue;
border-radius: 1px;
/* border-bottom: 3px solid @blue; */
}
#workspaces button:hover {
background: @grey;
border-radius: 2px;
box-shadow: inherit;
text-shadow: inherit;
}
#workspaces button.urgent {
color: @red;
}
#custom-spotify-metadata, #custom-spotify-play-pause, #custom-spotify-prev, #custom-spotify-next, #custom-spotify-quit {
color: @grey-light;
padding: 0px 6px 0px 6px;
font-size: 12px;
}
#custom-spotify-metadata {
margin: 0px 8px 0px 1px;
font-size: 16px;
}
#custom-spotify-metadata.playing {
color: @green;
}
#custom-spotify-metadata.paused {
color: @yellow;
}
#custom-spotify-prev {
margin: 0px 0px 0px 1px;
}
#custom-spotify-play-pause {
margin: 0px 0px 0px 1px;
}
#custom-spotify-next {
margin: 0px 0px 0px 1px;
}
#custom-spotify-quit {
margin: 0px 0px 0px 1px;
}
#clock, #mode {
margin: 0px 15px 0px 15px;
padding: 0px 0px 0px 0px;
color: @white;
}
#mode {
font-size: 20px;
}
#scratchpad, #clock, #tray, #custom-bluelightfilter, #custom-vm, #custom-notification, #custom-containers, #custom-wfrecord, #custom-grimshot, #battery, #disk, #cpu, #memory, #temperature, #network, #pulseaudio, #backlight, #idle_inhibitor {
margin: 0px 1px 0px 1px;
padding: 0px 6px 0px 6px;
color: @white;
font-size: 20px;
}
#clock {
font-size: 15px;
}
#custom-notification {
}
#idle_inhibitor {
color: @grey;
font-size: 12px;
}
#idle_inhibitor.activated {
color: @white;
}
#custom-bluelightfilter {
color: @grey;
}
#custom-bluelightfilter.activated {
color: @white;
}
#tray {
}
#custom-wfrecord {
font-size: 13px;
}
#custom-grimshot {
font-size: 15px;
}
#custom-wfrecord.recording {
color: @green;
}
#custom-vm {
font-size: 20px;
}
#custom-vm.running {
color: @blue-light;
}
#custom-containers {
font-size: 20px;
}
#custom-containers.running {
color: @blue-light;
}
#memory {
}
#memory.low {
color: @blue;
}
#memory.mid {
color: @yellow;
}
#memory.high {
color: @red;
}
#cpu {
}
#cpu.low {
color: @blue;
}
#cpu.mid {
color: @yellow;
}
#cpu.high {
color: @red;
}
#disk {
font-size: 16px;
}
#disk.low {
color: @blue;
}
#disk.mid {
color: @yellow;
}
#disk.high {
color: @red;
}
#network {
color: @green;
font-size: 18px;
}
#network.disconnected {
color: @red;
}
#battery {
font-size: 12px;
color: @green;
}
#battery.warning {
color: @yellow;
}
#battery.critical {
color: @red;
}
#battery.charging {
color: @green;
font-size: 13px;
}
#backlight {
font-size: 15px;
}
#backlight.low {
color: @blue;
}
#backlight.mid {
color: @yellow;
}
#backlight.high {
color: @red;
}
#pulseaudio {
font-size: 22px;
}
#pulseaudio.low {
color: @blue;
}
#pulseaudio.mid {
color: @yellow;
}
#pulseaudio.high {
color: @red;
}
#pulseaudio.muted {
color: @red;
}

View file

@ -0,0 +1,10 @@
#!/usr/bin/env sh
# Terminate already running bar instances
killall -q waybar
# Wait until the processes have been shut down
while pgrep -x waybar >/dev/null; do sleep 1; done
# Launch main
waybar