Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • master
1 result

Target

Select target project
  • dotfiles/waybar
1 result
Select Git revision
  • master
1 result
Show changes
Commits on Source (9)
[
{
"ipc": true,
"id": "bar-0",
// "layer": "top", // Waybar at top layer
"position": "top", // Waybar position (top|bottom|left|right)
// "height": 10, // Waybar height (to be removed for auto height)
// "width": 1280, // Waybar width
// Choose the order of the modules
"modules-left": [
"sway/hide", // Hiding support via sway IPC
"sway/workspaces",
"sway/mode"
],
//"modules-center": ["sway/window"],
"modules-center": ["clock"],
"modules-right": ["custom/disk_home", "temperature", "cpu", "memory", "network", "backlight", "pulseaudio", "sway/language", "battery", "idle_inhibitor", "tray"],
// Modules configuration
"sway/workspaces": {
"disable-scroll": true,
"all-outputs": false,
"numeric-first": true,
//"format": "{name}: {icon}",
"format": "{index}"
//"format-icons": {
//"1": "",
//"2": "",
//"3": "",
//"4": "",
//"5": "",
//"urgent": "",
//"focused": "",
//"default": ""
//}
},
// Modules configuration
// "sway/workspaces": {
// "disable-scroll": true,
// "all-outputs": true,
// "format": "{name}: {icon}",
// "format-icons": {
// "1": "",
// "2": "",
// "3": "",
// "4": "",
// "5": "",
// "urgent": "",
// "focused": "",
// "default": ""
// }
// },
"sway/mode": {
"format": "{}"
},
"custom/arch_update": {
"format": "<span color='#589df6'></span>{}",
"interval": 30,
"exec": "~/.config/i3blocks/bin/arch_update.py -b '#e4e4e4' -u '#e4e4e4' -q"
},
"custom/disk_home": {
"format": "🏠 {} ",
"interval": 30,
"exec": "df -h --output=avail $HOME | tail -1 | tr -d ' '"
},
"custom/disk_root": {
"format": "💽 {} ",
"interval": 30,
"exec": "df -h --output=avail / | tail -1 | tr -d ' '"
},
"temperature": {
// "thermal-zone": 2,
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
"critical-threshold": 80,
// "format-critical": "{temperatureC}°C {icon}",
"format": "<span color='#e88939'>{icon}</span> {temperatureC}°C",
"format-icons": ["", "", ""]
},
"cpu": {
"format": "🏭 {usage}%",
"tooltip": true
},
"memory": {
"format": "💾 {used:0.1f}G"
},
"custom/mail": {
"format": "📩{}",
"interval": 30,
"exec": "notmuch count tag:flagged OR tag:inbox AND NOT tag:killed"
},
"network": {
"family": "ipv4",
// "interface": "wlp2*", // (Optional) To force the use of this interface
"format-wifi": "<span color='#589df6'></span> <span color='gray'>{essid}</span> {frequency} <span color='#589df6'>{signaldBm} dB</span> <span color='#589df6'>⇵</span>",
//"format-wifi": "<span color='#589df6'></span> <span color='gray'>{essid}</span> {frequency} <span color='#589df6'>{signaldBm} dB</span> <span color='#589df6'>⇵</span> {bandwidthUpBits}/{bandwidthDownBits}",
"format-ethernet": "{ifname}: {ipaddr}/{cidr} ",
"format-linked": "{ifname} (No IP) ",
"format-disconnected": "Disconnected ⚠",
"format-alt": "{ifname}: {ipaddr}/{cidr}",
"interval": 5
},
"backlight": {
// "device": "acpi_video1",
"format": "{icon} {percent}%",
"format-icons": ["🔅", "🔆"]
},
"pulseaudio": {
// "scroll-step": 1, // %, can be a float
"format": "{icon} {volume}% {format_source}",
"format-muted": "🔇 {format_source}",
"format-bluetooth": "{icon} {volume}% {format_source}",
"format-bluetooth-muted": "🔇 {format_source}",
"format-source": " {volume}%",
"format-source-muted": "",
"format-icons": {
"headphones": "",
"handsfree": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["🔈", "🔉", "🔊"]
},
"on-click": "ponymix -N -t sink toggle",
"on-click-right": "ponymix -N -t source toggle"
},
"sway/language": {
"format": "{flag}",
"tooltip-format": "{flag} {long}"
},
"clock": {
"interval": 1,
"format": "⏰ {:%H:%M:%S 🗓️ %Y-%m-%d 📆 %W - Day: %a}",
"tooltip-format": "{:%Y-%m-%d | %H:%M:%S}",
"format-alt": "{:%Y-%m-%d}"
},
"battery": {
"states": {
// "good": 95,
"warning": 20,
"critical": 10
},
"format": "<span color='#e88939'>{icon}</span> {capacity}% ({time})",
"format-charging": "<span color='#e88939'> </span> {capacity}%",
"format-plugged": "<span color='#e88939'>{icon} </span> {capacity}% ({time})",
// "format-good": "", // An empty format will hide the module
// "format-full": "",
"format-icons": ["", "", "", "", ""]
},
"battery#bat2": {
"bat": "BAT2"
},
"idle_inhibitor": {
"format": "<span color='#589df6'>{icon}</span>",
"format-icons": {
"activated": "",
"deactivated": ""
},
"on-click-right": "swaylock -eFfki ~/.config/lockscreen-origin.png"
},
"tray": {
// "icon-size": 21,
"spacing": 10
},
"custom/media": {
"format": "{icon} {}",
"return-type": "json",
"max-length": 40,
"format-icons": {
"spotify": "",
"default": "🎜"
},
"escape": true,
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
},
"mpd": {
"format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ",
"format-disconnected": "Disconnected ",
"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
"unknown-tag": "N/A",
"interval": 2,
"consume-icons": {
"on": " "
},
"random-icons": {
"off": "<span color=\"#f53c3c\"></span> ",
"on": " "
},
"repeat-icons": {
"on": " "
},
"single-icons": {
"on": "1 "
},
"state-icons": {
"paused": "",
"playing": ""
},
"tooltip-format": "MPD (connected)",
"tooltip-format-disconnected": "MPD (disconnected)"
}
}
//,
//{
//"ipc": true,
//"id": "bar-1",
//// "layer": "top", // Waybar at top layer
//"position": "bottom", // Waybar position (top|bottom|left|right)
//// "height": 10, // Waybar height (to be removed for auto height)
//"width": 280, // Waybar width
//// Choose the order of the modules
//"modules-left": [
//"sway/hide" // Hiding support via sway IPC
//],
//"modules-center": ["clock"],
//"clock": {
//"interval": 1,
//"format": "⏰ {:%H:%M:%S 🗓️ %Y-%m-%d 📆 %W - Day: %a}",
//"tooltip-format": "{:%Y-%m-%d | %H:%M:%S}",
//"format-alt": "{:%Y-%m-%d}"
//},
//"battery": {
//"states": {
//// "good": 95,
//"warning": 20,
//"critical": 10
//},
//"format": "<span color='#e88939'>{icon}</span> {capacity}% ({time})",
//"format-charging": "<span color='#e88939'> </span> {capacity}%",
//"format-plugged": "<span color='#e88939'>{icon} </span> {capacity}% ({time})",
//// "format-good": "", // An empty format will hide the module
//// "format-full": "",
//"format-icons": ["", "", "", "", ""]
//},
//"battery#bat2": {
//"bat": "BAT2"
//},
//"idle_inhibitor": {
//"format": "<span color='#589df6'>{icon}</span>",
//"format-icons": {
//"activated": "",
//"deactivated": ""
//},
//"on-click-right": "swaylock -eFfki ~/.config/lockscreen-origin.png"
//}
//}
]
// -*- mode: jsonc -*-
{
"ipc": true,
"id": "bar-0",
// "layer": "top", // Waybar at top layer
"position": "top", // Waybar position (top|bottom|left|right)
// "height": 10, // Waybar height (to be removed for auto height)
// "width": 1280, // Waybar width
// Choose the order of the modules
"modules-left": [
"sway/workspaces",
"sway/mode",
"sway/scratchpad"
],
//"modules-center": ["sway/window"],
"modules-center": [
"clock",
"idle_inhibitor",
],
"modules-right": [
"custom/media",
"custom/disk_home",
"temperature",
"cpu",
"memory",
"network",
"backlight",
"pulseaudio",
// "keyboard-state",
"sway/language",
"battery",
"battery#bat2",
"tray"
],
// Modules configuration
"sway/workspaces": {
"disable-scroll": true,
"all-outputs": false,
"warp-on-scroll": false,
"numeric-first": true,
//"format": "{name}: {icon}",
"format": "{index}"
//"format-icons": {
//"1": "",
//"2": "",
//"3": "",
//"4": "",
//"5": "",
//"urgent": "",
//"focused": "",
//"default": ""
//}
},
"keyboard-state": {
"numlock": true,
"capslock": false,
"format": "{name} {icon}",
"format-icons": {
"locked": "",
"unlocked": ""
}
},
"sway/mode": {
"format": "<span style=\"italic\">{}</span>"
},
"sway/scratchpad": {
"format": "{icon} {count}",
"show-empty": false,
"format-icons": ["", ""],
"tooltip": true,
"tooltip-format": "{app}: {title}"
},
"mpd": {
"format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
"format-disconnected": "Disconnected ",
"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
"unknown-tag": "N/A",
"interval": 5,
"consume-icons": {
"on": " "
},
"random-icons": {
"off": "<span color=\"#f53c3c\"></span> ",
"on": " "
},
"repeat-icons": {
"on": " "
},
"single-icons": {
"on": "1 "
},
"state-icons": {
"paused": "",
"playing": ""
},
"tooltip-format": "MPD (connected)",
"tooltip-format-disconnected": "MPD (disconnected)"
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
},
"on-click-right": "swaylock -eFfki ~/.config/lockscreen-origin.png"
},
"tray": {
// "icon-size": 21,
"spacing": 10
},
"clock": {
"interval": 1,
"format": "⏰ {:%H:%M:%S 🗓️ %Y-%m-%d 📆 %W - Day: %a}",
"tooltip-format": "{:%Y-%m-%d | %H:%M:%S}",
"format-alt": "{:%Y-%m-%d}"
},
"cpu": {
"format": "🏭 {usage}%",
"tooltip": true
},
"memory": {
"format": "💾 {used:0.1f}G"
},
"temperature": {
// "thermal-zone": 2,
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
"critical-threshold": 80,
// "format-critical": "{temperatureC}°C {icon}",
"format": "{icon}{temperatureC}°C",
"format-icons": ["", "", ""]
},
"backlight": {
// "device": "acpi_video1",
"format": "{icon} {percent}%",
//"format-icons": ["🔅", "🔆"]
"format-icons": ["", "", "", "", "", "", "", "", ""]
},
"battery": {
"states": {
// "good": 95,
"warning": 30,
"critical": 15
},
"format": "{icon} {capacity}% ({time})",
// "format-full": "{capacity}% {icon}",
"format-charging": " {capacity}%",
"format-plugged": "{icon} {capacity}% ({time})",
"format-alt": "{time} {icon}",
// "format-good": "", // An empty format will hide the module
// "format-full": "",
"format-icons": ["", "", "", "", ""]
},
"battery#bat2": {
"bat": "BAT2"
},
"power-profiles-daemon": {
"format": "{icon}",
"tooltip-format": "Power profile: {profile}\nDriver: {driver}",
"tooltip": true,
"format-icons": {
"default": "",
"performance": "",
"balanced": "",
"power-saver": ""
}
},
"network": {
"family": "ipv4",
// "interface": "wlp2*", // (Optional) To force the use of this interface
"format-wifi": " {essid} {frequency} {signaldBm} dB⇵",
//"format-wifi": "<span color='#589df6'></span> <span color='gray'>{essid}</span> {frequency} <span color='#589df6'>{signaldBm} dB</span> <span color='#589df6'>⇵</span> {bandwidthUpBits}/{bandwidthDownBits}",
"format-ethernet": "{ifname}: {ipaddr}/{cidr} ",
"format-linked": "{ifname} (No IP) ",
"format-disconnected": "Disconnected ⚠",
"format-alt": "{ifname}: {ipaddr}/{cidr}",
"interval": 5
},
"pulseaudio": {
// "scroll-step": 1, // %, can be a float
"format": "{icon} {volume}% {format_source}",
"format-muted": "🔇 {format_source}",
"format-bluetooth": "{icon} {volume}% {format_source}",
"format-bluetooth-muted": "🔇 {format_source}",
"format-source": " {volume}%",
"format-source-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", ""]
},
"on-click": "pavucontrol"
},
"custom/media": {
"format": "{icon} {}",
"return-type": "json",
"max-length": 40,
"format-icons": {
"spotify": "",
"default": "🎜"
},
"escape": true,
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
},
"sway/language": {
"format": "{flag}",
"tooltip-format": "{flag} {long}"
},
"custom/mail": {
"format": "📩{}",
"interval": 30,
"exec": "notmuch count tag:flagged OR tag:inbox AND NOT tag:killed"
},
"custom/disk_home": {
"format": "🏠 {} ",
"interval": 30,
"exec": "df -h --output=avail $HOME | tail -1 | tr -d ' '"
},
"custom/disk_root": {
"format": "💽 {} ",
"interval": 30,
"exec": "df -h --output=avail / | tail -1 | tr -d ' '"
},
}
#!/usr/bin/env python3
import gi
gi.require_version("Playerctl", "2.0")
from gi.repository import Playerctl, GLib
from gi.repository.Playerctl import Player
import argparse
import logging
import sys
import signal
import gi
import json
import os
from typing import List
logger = logging.getLogger(__name__)
def signal_handler(sig, frame):
logger.info("Received signal to stop, exiting")
sys.stdout.write("\n")
sys.stdout.flush()
# loop.quit()
sys.exit(0)
class PlayerManager:
def __init__(self, selected_player=None, excluded_player=[]):
self.manager = Playerctl.PlayerManager()
self.loop = GLib.MainLoop()
self.manager.connect(
"name-appeared", lambda *args: self.on_player_appeared(*args))
self.manager.connect(
"player-vanished", lambda *args: self.on_player_vanished(*args))
signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)
signal.signal(signal.SIGPIPE, signal.SIG_DFL)
self.selected_player = selected_player
self.excluded_player = excluded_player.split(',') if excluded_player else []
self.init_players()
def init_players(self):
for player in self.manager.props.player_names:
if player.name in self.excluded_player:
continue
if self.selected_player is not None and self.selected_player != player.name:
logger.debug(f"{player.name} is not the filtered player, skipping it")
continue
self.init_player(player)
def run(self):
logger.info("Starting main loop")
self.loop.run()
def init_player(self, player):
logger.info(f"Initialize new player: {player.name}")
player = Playerctl.Player.new_from_name(player)
player.connect("playback-status",
self.on_playback_status_changed, None)
player.connect("metadata", self.on_metadata_changed, None)
self.manager.manage_player(player)
self.on_metadata_changed(player, player.props.metadata)
def get_players(self) -> List[Player]:
return self.manager.props.players
def write_output(self, text, player):
logger.debug(f"Writing output: {text}")
output = {"text": text,
"class": "custom-" + player.props.player_name,
"alt": player.props.player_name}
sys.stdout.write(json.dumps(output) + "\n")
sys.stdout.flush()
def clear_output(self):
sys.stdout.write("\n")
sys.stdout.flush()
def on_playback_status_changed(self, player, status, _=None):
logger.debug(f"Playback status changed for player {player.props.player_name}: {status}")
self.on_metadata_changed(player, player.props.metadata)
def get_first_playing_player(self):
players = self.get_players()
logger.debug(f"Getting first playing player from {len(players)} players")
if len(players) > 0:
# if any are playing, show the first one that is playing
# reverse order, so that the most recently added ones are preferred
for player in players[::-1]:
if player.props.status == "Playing":
return player
# if none are playing, show the first one
return players[0]
else:
logger.debug("No players found")
return None
def show_most_important_player(self):
logger.debug("Showing most important player")
# show the currently playing player
# or else show the first paused player
# or else show nothing
current_player = self.get_first_playing_player()
if current_player is not None:
self.on_metadata_changed(current_player, current_player.props.metadata)
else:
self.clear_output()
def on_metadata_changed(self, player, metadata, _=None):
logger.debug(f"Metadata changed for player {player.props.player_name}")
player_name = player.props.player_name
artist = player.get_artist()
title = player.get_title()
track_info = ""
if player_name == "spotify" and "mpris:trackid" in metadata.keys() and ":ad:" in player.props.metadata["mpris:trackid"]:
track_info = "Advertisement"
elif artist is not None and title is not None:
track_info = f"{artist} - {title}"
else:
track_info = title
if track_info:
if player.props.status == "Playing":
track_info = "" + track_info
else:
track_info = "" + track_info
# only print output if no other player is playing
current_playing = self.get_first_playing_player()
if current_playing is None or current_playing.props.player_name == player.props.player_name:
self.write_output(track_info, player)
else:
logger.debug(f"Other player {current_playing.props.player_name} is playing, skipping")
def on_player_appeared(self, _, player):
logger.info(f"Player has appeared: {player.name}")
if player.name in self.excluded_player:
logger.debug(
"New player appeared, but it's in exclude player list, skipping")
return
if player is not None and (self.selected_player is None or player.name == self.selected_player):
self.init_player(player)
else:
logger.debug(
"New player appeared, but it's not the selected player, skipping")
def on_player_vanished(self, _, player):
logger.info(f"Player {player.props.player_name} has vanished")
self.show_most_important_player()
def parse_arguments():
parser = argparse.ArgumentParser()
# Increase verbosity with every occurrence of -v
parser.add_argument("-v", "--verbose", action="count", default=0)
parser.add_argument("-x", "--exclude", "- Comma-separated list of excluded player")
# Define for which player we"re listening
parser.add_argument("--player")
parser.add_argument("--enable-logging", action="store_true")
return parser.parse_args()
def main():
arguments = parse_arguments()
# Initialize logging
if arguments.enable_logging:
logfile = os.path.join(os.path.dirname(
os.path.realpath(__file__)), "media-player.log")
logging.basicConfig(filename=logfile, level=logging.DEBUG,
format="%(asctime)s %(name)s %(levelname)s:%(lineno)d %(message)s")
# Logging is set by default to WARN and higher.
# With every occurrence of -v it's lowered by one
logger.setLevel(max((3 - arguments.verbose) * 10, 0))
logger.info("Creating player manager")
if arguments.player:
logger.info(f"Filtering for player: {arguments.player}")
if arguments.exclude:
logger.info(f"Exclude player {arguments.exclude}")
player = PlayerManager(arguments.player, arguments.exclude)
player.run()
if __name__ == "__main__":
main()
* {
border: none;
border-radius: 0;
font-family: "monospace";
font-size: 12px;
min-height: 0;
margin: 0px;
/* `otf-font-awesome` is required to be installed for icons */
font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif;
font-size: 13px;
}
window#waybar {
/*background: #000000;*/
background: rgba(0, 0, 0, 0.7);
color: gray;
background-color: rgba(23, 28, 29, 0.9);
border-bottom: 3px solid rgba(100, 114, 125, 0.5);
color: #ffffff;
transition-property: background-color;
transition-duration: .5s;
}
#window {
color: #e4e4e4;
font-weight: bold;
window#waybar.hidden {
opacity: 0.2;
}
#workspaces {
padding: 0px;
margin: 0px;
/*
window#waybar.empty {
background-color: transparent;
}
window#waybar.solo {
background-color: #FFFFFF;
}
*/
window#waybar.termite {
background-color: #3F3F3F;
}
window#waybar.chromium {
background-color: #000000;
border: none;
}
button {
/* Use box-shadow instead of border so the text isn't offset */
box-shadow: inset 0 -3px transparent;
/* Avoid rounded borders under each button name */
border: none;
border-radius: 0;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
button:hover {
background: inherit;
box-shadow: inset 0 -3px #ffffff;
}
/* you can set a style on hover for any module like this */
#pulseaudio:hover {
background-color: #a37800;
}
#workspaces button {
padding: 0 2px;
margin: 0px;
background: transparent;
color: #ff8700;
/*
color: #00afd7;
padding: 0 5px;
background-color: transparent;
color: #ffffff;
border: 1px solid #00afd7;
*/
border: 1px solid #1b1d1e;
font-weight: bold;
}
#workspaces button:hover {
box-shadow: inherit;
text-shadow: inherit;
background: rgba(0, 0, 0, 0.2);
}
#workspaces button.focused {
background: #e88939;
background: #00afd7;
color: #1b1d1e;
background-color: #64727D;
box-shadow: inset 0 -3px #ffffff;
}
#workspaces button.urgent {
background: #af005f;
color: #1b1d1e;
background-color: #eb4d4b;
}
#mode {
background: #af005f;
color: #1b1d1e;
background-color: #64727D;
box-shadow: inset 0 -3px #ffffff;
}
#clock, #battery, #cpu, #memory, #network, #pulseaudio, #custom-spotify, #tray, #mode {
padding: 0 3px;
margin: 0 2px;
#clock,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#scratchpad,
#power-profiles-daemon,
#mpd {
padding: 0 10px;
color: #ffffff;
}
#clock {
#window,
#workspaces {
margin: 0 4px;
}
#battery {
/* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
#battery icon {
color: red;
/* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
#battery.charging {
#clock {
background-color: #64727D;
}
#battery {
background-color: #ffffff;
color: #000000;
}
#battery.charging, #battery.plugged {
color: #ffffff;
background-color: #26A65B;
}
@keyframes blink {
to {
background-color: #af005f;
background-color: #ffffff;
color: #000000;
}
}
#battery.warning:not(.charging) {
background-color: #ff8700;
color: #1b1d1e;
}
/* Using steps() instead of linear as a timing function to limit cpu usage */
#battery.critical:not(.charging) {
color: white;
background-color: #f53c3c;
color: #ffffff;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
}
#power-profiles-daemon {
padding-right: 15px;
}
#power-profiles-daemon.performance {
background-color: #f53c3c;
color: #ffffff;
}
#power-profiles-daemon.balanced {
background-color: #2980b9;
color: #ffffff;
}
#power-profiles-daemon.power-saver {
background-color: #2ecc71;
color: #000000;
}
label:focus {
background-color: #000000;
}
#cpu {
/* background-color: #2ecc71; */
/* color: #000000; */
}
#memory {
/* background-color: #9b59b6; */
}
#disk {
/* background-color: #964B00; */
}
#backlight {
background-color: #90b1b1;
}
#network {
/* background-color: #2980b9; */
}
#network.disconnected {
background: #f53c3c;
background-color: #f53c3c;
}
#pulseaudio {
/* background-color: #f1c40f; */
/* color: #000000; */
}
#pulseaudio.muted {
/* background-color: #90b1b1; */
/* color: #2a5c45; */
}
#wireplumber {
/* background-color: #fff0f5; */
/* color: #000000; */
}
#wireplumber.muted {
background-color: #f53c3c;
}
#custom-media {
/* background-color: #66cc99; */
background-color: rgba(88, 88, 88, 0.6);
/* color: #2a5c45; */
min-width: 100px;
}
#custom-media.custom-spotify {
background-color: #66cc99;
}
#custom-media.custom-vlc {
background-color: #ffa000;
}
#temperature {
/* background-color: #f0932b; */
}
#custom-spotify {
color: rgb(102, 220, 105);
#temperature.critical {
background-color: #eb4d4b;
}
#tray {
/* background-color: #2980b9; */
background-color: rgba(255, 255, 255, 0.6);
/* color: #ffffff; */
/* background-color: #ffffff; */
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: #eb4d4b;
}
#idle_inhibitor {
background-color: #2d3436;
}
#idle_inhibitor.activated {
background-color: #ecf0f1;
color: #2d3436;
}
#mpd {
background-color: #66cc99;
color: #2a5c45;
}
#mpd.disconnected {
background-color: #f53c3c;
}
#mpd.stopped {
background-color: #90b1b1;
}
#mpd.paused {
background-color: #51a37a;
}
#language {
/* background: #00b093; */
/* color: #740864; */
padding: 0 5px;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state {
/* background: #97e1ad; */
/* color: #000000; */
padding: 0 0px;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state > label {
padding: 0 5px;
}
#keyboard-state > label.locked {
background: rgba(0, 0, 0, 0.2);
}
#scratchpad {
background: rgba(0, 0, 0, 0.2);
}
#scratchpad.empty {
background-color: transparent;
}
#privacy {
padding: 0;
}
#privacy-item {
padding: 0 5px;
color: white;
}
#privacy-item.screenshare {
background-color: #cf5700;
}
#privacy-item.audio-in {
background-color: #1ca000;
}
#privacy-item.audio-out {
background-color: #0069d4;
}