Initial commit
This commit is contained in:
@@ -0,0 +1,217 @@
|
||||
{
|
||||
"layer": "top",
|
||||
"position": "top",
|
||||
"mod": "dock",
|
||||
"exclusive": true,
|
||||
"passthrough": false,
|
||||
"gtk-layer-shell": true,
|
||||
"height": 28,
|
||||
"modules-left": [
|
||||
"clock",
|
||||
"custom/weather",
|
||||
"hyprland/workspaces",
|
||||
"custom/apps",
|
||||
"custom/files"
|
||||
],
|
||||
"modules-center": [
|
||||
"hyprland/window"
|
||||
],
|
||||
"modules-right": [
|
||||
"tray",
|
||||
"custom/network",
|
||||
"temperature",
|
||||
"cpu",
|
||||
"memory",
|
||||
"battery",
|
||||
"custom/studio-sound",
|
||||
"bluetooth",
|
||||
"wireplumber",
|
||||
"custom/hyprsunset",
|
||||
"custom/notificationbar",
|
||||
"privacy"
|
||||
],
|
||||
"privacy": {
|
||||
"icon-spacing": 4,
|
||||
"icon-size": 13,
|
||||
"transition-duration": 250,
|
||||
"modules": [
|
||||
{
|
||||
"type": "screenshare",
|
||||
"tooltip": true,
|
||||
"tooltip-icon-size": 24
|
||||
},
|
||||
{
|
||||
"type": "audio-in",
|
||||
"tooltip": true,
|
||||
"tooltip-icon-size": 24
|
||||
}
|
||||
],
|
||||
"ignore-monitor": true
|
||||
},
|
||||
"hyprland/workspaces": {
|
||||
"format": "{icon}",
|
||||
"on-scroll-up": "hyprctl dispatch workspace e+1",
|
||||
"on-scroll-down": "hyprctl dispatch workspace e-1",
|
||||
"format-icons": {
|
||||
"1": "1",
|
||||
"2": "2",
|
||||
"3": "3",
|
||||
"4": "4",
|
||||
"5": "5"
|
||||
},
|
||||
"persistent_workspaces": {
|
||||
"*": 1
|
||||
}
|
||||
},
|
||||
"hyprland/window": {
|
||||
"format": "{}",
|
||||
"separate-outputs": true
|
||||
},
|
||||
"custom/apps": {
|
||||
"format": "Apps",
|
||||
"tooltip": false,
|
||||
"on-click": "wofi --show drun"
|
||||
},
|
||||
|
||||
"custom/files": {
|
||||
"format": "Files",
|
||||
"tooltip": false,
|
||||
"on-click": "nautilus"
|
||||
},
|
||||
"custom/weather": {
|
||||
"tooltip": true,
|
||||
"format": "{}",
|
||||
"interval": 3600,
|
||||
"exec": "~/.config/waybar/scripts/waybar-wttr.py",
|
||||
"return-type": "json"
|
||||
},
|
||||
|
||||
"temperature": {
|
||||
"thermal-zone": 2,
|
||||
"hwmon-path": "/sys/class/hwmon/hwmon5/temp1_input",
|
||||
"critical-threshold": 80,
|
||||
"format-critical": " {temperatureC}°C",
|
||||
"format": " {temperatureC}°C",
|
||||
"interval": 2,
|
||||
"tooltip": true
|
||||
},
|
||||
|
||||
"cpu": {
|
||||
"format": " {usage}%",
|
||||
"tooltip": true,
|
||||
"interval": 2,
|
||||
"states": {
|
||||
"warning": 70,
|
||||
"critical": 90
|
||||
}
|
||||
},
|
||||
"memory": {
|
||||
"format": " {}%",
|
||||
"format-alt": " {used:0.1f}G/{total:0.1f}G",
|
||||
"tooltip": true,
|
||||
"tooltip-format": "Used: {used:0.2f}GB ({percentage}%)\nAvailable: {avail:0.2f}GB\nTotal: {total:0.2f}GB",
|
||||
"interval": 2,
|
||||
"states": {
|
||||
"warning": 70,
|
||||
"critical": 90
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"icon-size": 16,
|
||||
"spacing": 25,
|
||||
"icons": {
|
||||
"blueman": "/usr/share/icons/WhiteSur-dark/devices@2x/32/network-bluetooth.svg",
|
||||
"nm-applet": "/usr/share/icons/WhiteSur-dark/devices@2x/24/network-wired.svg",
|
||||
"pasystray": "/usr/share/icons/WhiteSur-dark/devices@2x/16/audio-speakers.svg"
|
||||
}
|
||||
},
|
||||
"custom/notificationbar": {
|
||||
"format": "",
|
||||
"on-click": "swaync-client -t"
|
||||
},
|
||||
"clock": {
|
||||
"timezone": "Europe/Berlin",
|
||||
"format": "{:%H:%M %a, %b %e}",
|
||||
"tooltip-format": "<big>{:%Y %B}</big>\n<tt>{calendar}</tt>"
|
||||
},
|
||||
"backlight": {
|
||||
"device": "intel_backlight",
|
||||
"format": "{icon} {percent}%",
|
||||
"format-icons": [
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"on-scroll-up": "brightnessctl -q set 1%+",
|
||||
"on-scroll-down": "brightnessctl -q set 1%-"
|
||||
},
|
||||
"battery": {
|
||||
"states": {
|
||||
"good": 95,
|
||||
"warning": 20,
|
||||
"critical": 10
|
||||
},
|
||||
"format": "{icon} {capacity}%",
|
||||
"format-charging": " {capacity}%",
|
||||
"format-plugged": " {capacity}%",
|
||||
"format-alt": "{time} {icon}",
|
||||
"format-icons": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
]
|
||||
},
|
||||
"wireplumber": {
|
||||
"format": " {volume}%",
|
||||
"format-muted": "",
|
||||
"on-click": "qpwgraph",
|
||||
"max-volume": 100,
|
||||
"scroll-step": 0.2
|
||||
},
|
||||
|
||||
"custom/network": {
|
||||
"exec": "~/.config/waybar/scripts/network.sh",
|
||||
"return-type": "json",
|
||||
"interval": 2,
|
||||
"format": "{}"
|
||||
//"on-click": "nmcli device wifi list",
|
||||
//"on-click-right": "nm-connection-editor"
|
||||
},
|
||||
|
||||
"custom/hyprsunset": {
|
||||
"format": "{}",
|
||||
"exec": "~/.config/waybar/scripts/hyprsunset.sh",
|
||||
"on-click": "~/.config/waybar/scripts/hyprsunset.sh toggle",
|
||||
"signal": 8,
|
||||
"tooltip": true,
|
||||
"return-type": "json"
|
||||
},
|
||||
|
||||
"custom/studio-sound": {
|
||||
"format": "{}",
|
||||
"exec": "~/.config/waybar/scripts/studio-sound.py",
|
||||
"on-click": "~/.config/waybar/scripts/studio-sound.py toggle",
|
||||
"interval": 30,
|
||||
"return-type": "json",
|
||||
"tooltip": true
|
||||
},
|
||||
|
||||
"bluetooth": {
|
||||
"format": " {status}",
|
||||
"format-disabled": "",
|
||||
"format-connected": " {num_connections}",
|
||||
"tooltip-format": "{device_alias}",
|
||||
"tooltip-format-connected": " {device_enumerate}",
|
||||
"tooltip-format-enumerate-connected": "{device_alias}"
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Waybar Hyprsunset Module Script
|
||||
# Place this in ~/.config/waybar/scripts/hyprsunset.sh
|
||||
# Make executable: chmod +x ~/.config/waybar/scripts/hyprsunset.sh
|
||||
|
||||
TEMP=3500 # Default temperature when enabled
|
||||
STATE_FILE="/tmp/hyprsunset_state"
|
||||
|
||||
# Initialize state file if it doesn't exist
|
||||
if [ ! -f "$STATE_FILE" ]; then
|
||||
echo "disabled" > "$STATE_FILE"
|
||||
fi
|
||||
|
||||
get_status() {
|
||||
# Check if hyprsunset is currently active
|
||||
if [ -f "$STATE_FILE" ]; then
|
||||
state=$(cat "$STATE_FILE" 2>/dev/null)
|
||||
if [ "$state" = "enabled" ]; then
|
||||
echo "enabled"
|
||||
else
|
||||
echo "disabled"
|
||||
fi
|
||||
else
|
||||
echo "disabled"
|
||||
fi
|
||||
}
|
||||
|
||||
toggle_hyprsunset() {
|
||||
current_status=$(get_status)
|
||||
|
||||
if [ "$current_status" = "enabled" ]; then
|
||||
# Disable hyprsunset
|
||||
hyprctl hyprsunset identity
|
||||
echo "disabled" > "$STATE_FILE"
|
||||
else
|
||||
# Enable hyprsunset
|
||||
hyprctl hyprsunset temperature "$TEMP"
|
||||
echo "enabled" > "$STATE_FILE"
|
||||
fi
|
||||
|
||||
# Signal Waybar to update the module
|
||||
pkill -SIGRTMIN+8 waybar
|
||||
}
|
||||
|
||||
output_json() {
|
||||
status=$(get_status)
|
||||
|
||||
if [ "$status" = "enabled" ]; then
|
||||
printf '{"text":"","tooltip":"Sunset: ON (%sK)","class":"enabled"}\n' "$TEMP"
|
||||
else
|
||||
printf '{"text":"","tooltip":"Sunset: OFF","class":"disabled"}\n'
|
||||
fi
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
"toggle")
|
||||
toggle_hyprsunset
|
||||
;;
|
||||
*)
|
||||
output_json
|
||||
;;
|
||||
esac
|
||||
+112
@@ -0,0 +1,112 @@
|
||||
#!/bin/bash
|
||||
INTERFACE="br0"
|
||||
TEMP_FILE="/tmp/waybar_network_$INTERFACE"
|
||||
MAX_AGE=10
|
||||
|
||||
# Function to format bytes/s to human readable with max 2 digits
|
||||
format_rate() {
|
||||
local rate=$1
|
||||
local unit="K"
|
||||
local value
|
||||
|
||||
# Convert to KB/s first
|
||||
value=$(( (rate * 10) / 1024 ))
|
||||
|
||||
# If KB/s would be >= 1000 (100.0K), convert to MB/s
|
||||
if [ $value -ge 1000 ]; then
|
||||
unit="M"
|
||||
value=$(( (rate * 10) / 1048576 )) # 1024*1024
|
||||
|
||||
# If MB/s would be >= 1000 (100.0M), convert to GB/s
|
||||
if [ $value -ge 1000 ]; then
|
||||
unit="G"
|
||||
value=$(( (rate * 10) / 1073741824 )) # 1024*1024*1024
|
||||
fi
|
||||
fi
|
||||
|
||||
# Split into whole and decimal parts
|
||||
local whole=$((value / 10))
|
||||
local decimal=$((value % 10))
|
||||
|
||||
# Format with appropriate spacing
|
||||
if [ $whole -lt 10 ]; then
|
||||
printf "%d.%d%s" "$whole" "$decimal" "$unit"
|
||||
else
|
||||
printf "%2d%s" "$whole" "$unit"
|
||||
fi
|
||||
}
|
||||
|
||||
# Check if interface exists
|
||||
if [ ! -d "/sys/class/net/$INTERFACE" ]; then
|
||||
echo '{"text":" No Interface","tooltip":"Interface '$INTERFACE' not found"}'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Get current values
|
||||
RX_BYTES=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
|
||||
TX_BYTES=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)
|
||||
CURRENT_TIME=$(date +%s)
|
||||
|
||||
# Check if temp file exists and is recent
|
||||
TEMP_FILE_VALID=0
|
||||
if [ -f "$TEMP_FILE" ]; then
|
||||
read PREV_RX PREV_TX PREV_TIME < "$TEMP_FILE"
|
||||
TIME_DIFF=$((CURRENT_TIME - PREV_TIME))
|
||||
|
||||
# Accept temp file if it's recent (0 seconds is OK, negative or too old is not)
|
||||
if [ $TIME_DIFF -ge 0 ] && [ $TIME_DIFF -le $MAX_AGE ]; then
|
||||
TEMP_FILE_VALID=1
|
||||
fi
|
||||
fi
|
||||
|
||||
# If no valid temp file, initialize
|
||||
if [ $TEMP_FILE_VALID -eq 0 ]; then
|
||||
echo "$RX_BYTES $TX_BYTES $CURRENT_TIME" > "$TEMP_FILE"
|
||||
echo '{"text":"'${INTERFACE}' ↑0.0K ↓0.0K","tooltip":"Upload: 0.0 KB/s\\nDownload: 0.0 KB/s"}'
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# If TIME_DIFF is 0, return the last calculated result without updating temp file
|
||||
if [ $TIME_DIFF -eq 0 ]; then
|
||||
# Try to read cached result from a secondary file
|
||||
CACHE_FILE="/tmp/waybar_network_cache_$INTERFACE"
|
||||
if [ -f "$CACHE_FILE" ]; then
|
||||
cat "$CACHE_FILE"
|
||||
exit 0
|
||||
else
|
||||
# No cache, show 0.0K
|
||||
echo '{"text":"'${INTERFACE}' ↑0.0K ↓0.0K","tooltip":"Upload: 0.0 KB/s\\nDownload: 0.0 KB/s"}'
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# Calculate rates (bytes per second)
|
||||
RX_RATE=$(( (RX_BYTES - PREV_RX) / TIME_DIFF ))
|
||||
TX_RATE=$(( (TX_BYTES - PREV_TX) / TIME_DIFF ))
|
||||
|
||||
# Handle negative values (counter reset) or unrealistic high values
|
||||
if [ $RX_RATE -lt 0 ] || [ $RX_RATE -gt 1073741824 ]; then RX_RATE=0; fi
|
||||
if [ $TX_RATE -lt 0 ] || [ $TX_RATE -gt 1073741824 ]; then TX_RATE=0; fi
|
||||
|
||||
# Format rates with auto-scaling
|
||||
TX_FORMATTED=$(format_rate $TX_RATE)
|
||||
RX_FORMATTED=$(format_rate $RX_RATE)
|
||||
|
||||
# Calculate tooltip values (always in KB/s for consistency)
|
||||
RX_KB_TENTHS=$(( (RX_RATE * 10) / 1024 ))
|
||||
TX_KB_TENTHS=$(( (TX_RATE * 10) / 1024 ))
|
||||
RX_WHOLE=$((RX_KB_TENTHS / 10))
|
||||
RX_DECIMAL=$((RX_KB_TENTHS % 10))
|
||||
TX_WHOLE=$((TX_KB_TENTHS / 10))
|
||||
TX_DECIMAL=$((TX_KB_TENTHS % 10))
|
||||
|
||||
# Format output with auto-scaled units
|
||||
RESULT=$(printf '{"text":"'${INTERFACE}' ↑%4s ↓%4s","tooltip":"Upload: %d.%d KB/s\\nDownload: %d.%d KB/s"}' \
|
||||
"$TX_FORMATTED" "$RX_FORMATTED" \
|
||||
"$TX_WHOLE" "$TX_DECIMAL" "$RX_WHOLE" "$RX_DECIMAL")
|
||||
|
||||
echo "$RESULT"
|
||||
|
||||
# Store current values for next iteration AND cache the result
|
||||
echo "$RX_BYTES $TX_BYTES $CURRENT_TIME" > "$TEMP_FILE"
|
||||
echo "$RESULT" > "/tmp/waybar_network_cache_$INTERFACE"
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
#!/bin/bash
|
||||
|
||||
INTERFACE="br0"
|
||||
TEMP_FILE="/tmp/waybar_network_$INTERFACE"
|
||||
MAX_AGE=10
|
||||
|
||||
# Check if interface exists
|
||||
if [ ! -d "/sys/class/net/$INTERFACE" ]; then
|
||||
echo '{"text":" No Interface","tooltip":"Interface '$INTERFACE' not found"}'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Get current values
|
||||
RX_BYTES=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
|
||||
TX_BYTES=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)
|
||||
CURRENT_TIME=$(date +%s)
|
||||
|
||||
# Check if temp file exists and is recent
|
||||
TEMP_FILE_VALID=0
|
||||
if [ -f "$TEMP_FILE" ]; then
|
||||
read PREV_RX PREV_TX PREV_TIME < "$TEMP_FILE"
|
||||
TIME_DIFF=$((CURRENT_TIME - PREV_TIME))
|
||||
|
||||
# Accept temp file if it's recent (0 seconds is OK, negative or too old is not)
|
||||
if [ $TIME_DIFF -ge 0 ] && [ $TIME_DIFF -le $MAX_AGE ]; then
|
||||
TEMP_FILE_VALID=1
|
||||
fi
|
||||
fi
|
||||
|
||||
# If no valid temp file, initialize
|
||||
if [ $TEMP_FILE_VALID -eq 0 ]; then
|
||||
echo "$RX_BYTES $TX_BYTES $CURRENT_TIME" > "$TEMP_FILE"
|
||||
echo '{"text":"'${INTERFACE}' ↑ 0.0K ↓ 0.0K","tooltip":"Upload: 0.0 KB/s\\nDownload: 0.0 KB/s"}'
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# If TIME_DIFF is 0, return the last calculated result without updating temp file
|
||||
if [ $TIME_DIFF -eq 0 ]; then
|
||||
# Try to read cached result from a secondary file
|
||||
CACHE_FILE="/tmp/waybar_network_cache_$INTERFACE"
|
||||
if [ -f "$CACHE_FILE" ]; then
|
||||
cat "$CACHE_FILE"
|
||||
exit 0
|
||||
else
|
||||
# No cache, show 0.0K
|
||||
echo '{"text":"'${INTERFACE}' ↑ 0.0K ↓ 0.0K","tooltip":"Upload: 0.0 KB/s\\nDownload: 0.0 KB/s"}'
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# Calculate rates (bytes per second)
|
||||
RX_RATE=$(( (RX_BYTES - PREV_RX) / TIME_DIFF ))
|
||||
TX_RATE=$(( (TX_BYTES - PREV_TX) / TIME_DIFF ))
|
||||
|
||||
# Handle negative values (counter reset) or unrealistic high values
|
||||
if [ $RX_RATE -lt 0 ] || [ $RX_RATE -gt 1073741824 ]; then RX_RATE=0; fi
|
||||
if [ $TX_RATE -lt 0 ] || [ $TX_RATE -gt 1073741824 ]; then TX_RATE=0; fi
|
||||
|
||||
# Convert to KB/s with one decimal place
|
||||
RX_KB_TENTHS=$(( (RX_RATE * 10) / 1024 ))
|
||||
TX_KB_TENTHS=$(( (TX_RATE * 10) / 1024 ))
|
||||
|
||||
# Split into whole and decimal parts
|
||||
RX_WHOLE=$((RX_KB_TENTHS / 10))
|
||||
RX_DECIMAL=$((RX_KB_TENTHS % 10))
|
||||
TX_WHOLE=$((TX_KB_TENTHS / 10))
|
||||
TX_DECIMAL=$((TX_KB_TENTHS % 10))
|
||||
|
||||
# Format output with fixed width
|
||||
RESULT=$(printf '{"text":"'${INTERFACE}' ↑%2d.%dK ↓%2d.%dK","tooltip":"Upload: %d.%d KB/s\\nDownload: %d.%d KB/s"}' \
|
||||
"$TX_WHOLE" "$TX_DECIMAL" "$RX_WHOLE" "$RX_DECIMAL" \
|
||||
"$TX_WHOLE" "$TX_DECIMAL" "$RX_WHOLE" "$RX_DECIMAL")
|
||||
|
||||
echo "$RESULT"
|
||||
|
||||
# Store current values for next iteration AND cache the result
|
||||
echo "$RX_BYTES $TX_BYTES $CURRENT_TIME" > "$TEMP_FILE"
|
||||
echo "$RESULT" > "/tmp/waybar_network_cache_$INTERFACE"
|
||||
+76
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Waybar module for controlling Studio Sound power outlet
|
||||
Toggles power on click and shows current status
|
||||
"""
|
||||
|
||||
import json
|
||||
import requests
|
||||
import sys
|
||||
import os
|
||||
|
||||
STATUS_URL = 'http://192.168.1.75/cm?cmnd=status'
|
||||
TOGGLE_URL = 'http://192.168.1.75/ay?o=1'
|
||||
CACHE_FILE = '/tmp/studio_sound_status.json'
|
||||
TIMEOUT = 2 # seconds
|
||||
|
||||
def get_status():
|
||||
"""Fetch the current power status from the device"""
|
||||
try:
|
||||
response = requests.get(STATUS_URL, timeout=TIMEOUT)
|
||||
response.raise_for_status()
|
||||
data = response.json()
|
||||
return data.get('Status', {}).get('Power', 0) == 1
|
||||
except:
|
||||
# Return cached status if available
|
||||
if os.path.exists(CACHE_FILE):
|
||||
try:
|
||||
with open(CACHE_FILE, 'r') as f:
|
||||
cached = json.load(f)
|
||||
return cached.get('power', False)
|
||||
except:
|
||||
pass
|
||||
return False
|
||||
|
||||
def toggle_power():
|
||||
"""Toggle the power state"""
|
||||
try:
|
||||
requests.get(TOGGLE_URL, timeout=TIMEOUT)
|
||||
# Give device time to process
|
||||
import time
|
||||
time.sleep(0.5)
|
||||
return get_status()
|
||||
except:
|
||||
return False
|
||||
|
||||
def save_cache(power_state):
|
||||
"""Save current state to cache file"""
|
||||
try:
|
||||
with open(CACHE_FILE, 'w') as f:
|
||||
json.dump({'power': power_state}, f)
|
||||
except:
|
||||
pass
|
||||
|
||||
def main():
|
||||
# Check if this is a click event
|
||||
if len(sys.argv) > 1 and sys.argv[1] == 'toggle':
|
||||
power_state = toggle_power()
|
||||
else:
|
||||
power_state = get_status()
|
||||
|
||||
# Save to cache
|
||||
save_cache(power_state)
|
||||
|
||||
# Output JSON for waybar
|
||||
output = {
|
||||
"text": "Studio " if power_state else "Studio ",
|
||||
"tooltip": f"Studio Sound: {'ON' if power_state else 'OFF'}",
|
||||
"class": "studio-sound-on" if power_state else "studio-sound-off",
|
||||
"alt": "on" if power_state else "off"
|
||||
}
|
||||
|
||||
print(json.dumps(output))
|
||||
sys.stdout.flush()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,213 @@
|
||||
* {
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
/*font-family: "SF Pro Display", "FontAwesome";*/
|
||||
font-family: "SF Mono", "FontAwesome";
|
||||
font-weight: 600;
|
||||
font-size: 13px;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background: rgba(21, 18, 27, 0.36);
|
||||
}
|
||||
|
||||
#privacy-item, #privacy-item > * {
|
||||
color: #ffae00;
|
||||
}
|
||||
|
||||
|
||||
tooltip {
|
||||
background: #1e1e2e;
|
||||
border-radius: 10px;
|
||||
border-width: 2px;
|
||||
border-style: solid;
|
||||
border-color: #11111b;
|
||||
}
|
||||
|
||||
.modules-left {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.modules-right {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
margin-left: 10px;
|
||||
padding-right: 0px;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 2px 10px;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
background-color: rgba(0,0,0,0.3);
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
box-shadow: none;
|
||||
text-shadow: none;
|
||||
background: none;
|
||||
background-color: rgba(255,255,255,0.1);
|
||||
}
|
||||
|
||||
|
||||
#custom-power_profile,
|
||||
#custom-weather,
|
||||
#custom-moon,
|
||||
#custom-wallpaper,
|
||||
#custom-studio-sound,
|
||||
#custom-apps,
|
||||
#custom-files,
|
||||
#custom-hyprsunset,
|
||||
#window,
|
||||
#clock,
|
||||
#battery,
|
||||
#pulseaudio,
|
||||
#custom-network,
|
||||
#bluetooth,
|
||||
#temperature,
|
||||
#cpu,
|
||||
#memory,
|
||||
#wireplumber,
|
||||
#workspaces,
|
||||
#tray,
|
||||
#custom-notificationbar,
|
||||
#backlight,
|
||||
#privacy {
|
||||
opacity: 0.95;
|
||||
padding: 0px 10px;
|
||||
margin: 0px;
|
||||
margin-top: 0px;
|
||||
/*border: 2px solid red;*/
|
||||
}
|
||||
|
||||
#custom-files {
|
||||
border-radius: 0px 10px 10px 0px;
|
||||
}
|
||||
|
||||
#wireplumber {
|
||||
min-width: 50px;
|
||||
}
|
||||
|
||||
#custom-network {
|
||||
min-width: 110px;
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
}
|
||||
|
||||
#custom-studio-sound {
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
min-width: 62px;
|
||||
}
|
||||
|
||||
#memory {
|
||||
min-width: 45px;
|
||||
color: #eba0ac;
|
||||
border-radius: 0px 10px 10px 0px;
|
||||
}
|
||||
|
||||
#cpu {
|
||||
min-width: 50px;
|
||||
color: #c3eba0;
|
||||
}
|
||||
|
||||
#temperature {
|
||||
min-width: 50px;
|
||||
color: #89b4fa;
|
||||
}
|
||||
|
||||
#backlight {
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
}
|
||||
|
||||
#tray {
|
||||
border-radius: 10px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
#tray > .active,
|
||||
#tray > .passive {
|
||||
margin-right: 100px;
|
||||
padding-left: 100px;
|
||||
}
|
||||
|
||||
#custom-power_profile {
|
||||
color: #a6e3a1;
|
||||
border-left: 0px;
|
||||
border-right: 0px;
|
||||
}
|
||||
|
||||
#window {
|
||||
border-radius: 10px;
|
||||
margin-left: 60px;
|
||||
margin-right: 60px;
|
||||
}
|
||||
|
||||
#clock {
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
border-right: 0px;
|
||||
}
|
||||
|
||||
#network {
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
border-left: 0px;
|
||||
border-right: 0px;
|
||||
}
|
||||
|
||||
#bluetooth {
|
||||
min-width: 17px;
|
||||
}
|
||||
|
||||
#battery {
|
||||
margin-right: 0px;
|
||||
padding: 0 10px;
|
||||
border-left: 0px;
|
||||
}
|
||||
|
||||
#battery.warning {
|
||||
color: #FFA500;
|
||||
}
|
||||
|
||||
#battery.critical {
|
||||
color: #F00;
|
||||
}
|
||||
|
||||
/* Menu styling */
|
||||
menu {
|
||||
border-radius: 8px;
|
||||
background: rgba(43, 48, 59, 0.95);
|
||||
color: #ffffff;
|
||||
/*border: 1px solid rgba(100, 114, 125, 0.3);*/
|
||||
border-style: none;
|
||||
padding: 4px 0;
|
||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
window decoration{
|
||||
border-style: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
menuitem {
|
||||
border-radius: 4px;
|
||||
padding: 8px 16px;
|
||||
margin: 2px 4px;
|
||||
transition: background-color 0.2s ease;
|
||||
}
|
||||
|
||||
menuitem:hover {
|
||||
background-color: rgba(100, 114, 125, 0.3);
|
||||
}
|
||||
|
||||
menuitem:selected {
|
||||
background-color: #64727D;
|
||||
}
|
||||
|
||||
/* Separator styling */
|
||||
separator {
|
||||
background-color: rgba(100, 114, 125, 0.3);
|
||||
margin: 4px 8px;
|
||||
}
|
||||
@@ -0,0 +1,167 @@
|
||||
* {
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
font-family: "SF Display";
|
||||
font-weight: bold;
|
||||
font-size: 12px;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background: rgba(21, 18, 27, 0);
|
||||
color: #cdd6f4;
|
||||
}
|
||||
|
||||
tooltip {
|
||||
background: #1e1e2e;
|
||||
border-radius: 10px;
|
||||
border-width: 2px;
|
||||
border-style: solid;
|
||||
border-color: #11111b;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 2px 5px;
|
||||
color: #636777;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
#workspaces button.focused {
|
||||
color: #a6adc8;
|
||||
background: #eba0ac;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
color: #11111b;
|
||||
background: #a6e3a1;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background: #11111b;
|
||||
color: #11111b;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
#custom-power_profile,
|
||||
#custom-weather,
|
||||
#custom-moon,
|
||||
#custom-wallpaper,
|
||||
#window,
|
||||
#clock,
|
||||
#battery,
|
||||
#pulseaudio,
|
||||
#network,
|
||||
#bluetooth,
|
||||
#temperature,
|
||||
#cpu,
|
||||
#memory,
|
||||
#workspaces,
|
||||
#tray,
|
||||
#backlight {
|
||||
background: #1e1e2e;
|
||||
opacity: 0.8;
|
||||
padding: 0px 10px;
|
||||
/* margin: 3px 0px; */
|
||||
margin: 0px;
|
||||
margin-top: 10px;
|
||||
border: 1px solid #181825;
|
||||
}
|
||||
|
||||
#memory {
|
||||
color: #eba0ac;
|
||||
}
|
||||
|
||||
#temperature {
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
}
|
||||
|
||||
#custom-temperature.critical {
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
#backlight {
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
}
|
||||
|
||||
#tray {
|
||||
border-radius: 10px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
background: #1e1e2e;
|
||||
border-radius: 10px;
|
||||
margin-left: 10px;
|
||||
padding-right: 0px;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
#custom-power_profile {
|
||||
color: #a6e3a1;
|
||||
border-left: 0px;
|
||||
border-right: 0px;
|
||||
}
|
||||
|
||||
#window {
|
||||
border-radius: 10px;
|
||||
margin-left: 60px;
|
||||
margin-right: 60px;
|
||||
}
|
||||
|
||||
#clock {
|
||||
color: #fab387;
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
margin-left: 10px;
|
||||
border-right: 0px;
|
||||
}
|
||||
|
||||
#network {
|
||||
color: #f9e2af;
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
border-left: 0px;
|
||||
border-right: 0px;
|
||||
}
|
||||
|
||||
#bluetooth {
|
||||
color: #89b4fa;
|
||||
border-radius: 0px 10px 10px 0px;
|
||||
margin-right: 10px
|
||||
}
|
||||
|
||||
#pulseaudio {
|
||||
color: #89b4fa;
|
||||
border-left: 0px;
|
||||
border-right: 0px;
|
||||
}
|
||||
|
||||
#pulseaudio.microphone {
|
||||
color: #cba6f7;
|
||||
border-left: 0px;
|
||||
border-right: 0px;
|
||||
border-radius: 0px 10px 10px 0px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
#battery {
|
||||
color: #a6e3a1;
|
||||
border-radius: 0 10px 10px 0;
|
||||
margin-right: 10px;
|
||||
border-left: 0px;
|
||||
}
|
||||
#battery.warning {
|
||||
color: #FFA500;
|
||||
}
|
||||
#battery.critical {
|
||||
color: #F00;
|
||||
}
|
||||
#custom-moon {
|
||||
border-radius: 0px 10px 10px 0px;
|
||||
border-right: 0px;
|
||||
margin-left: 0px;
|
||||
}
|
||||
Reference in New Issue
Block a user