Add Hyprland stuff
This commit is contained in:
@ -7,11 +7,13 @@
|
||||
"spacing": 4, // Gaps between modules (4px)
|
||||
"output": "${PRIMARY_DISPLAY}",
|
||||
// Choose the order of the modules
|
||||
"modules-left": ["wlr/workspaces", "hyprland/window"],
|
||||
"modules-left": ["hyprland/workspaces", "hyprland/window"],
|
||||
"modules-center": ["custom/inhibit", "idle_inhibitor", "custom/dunst"],
|
||||
"modules-right": ["hyprland/submap", "custom/wifionice", "custom/spotify", "pulseaudio", "custom/network", "cpu", "memory", "temperature", "backlight", "battery", "clock", "tray"],
|
||||
// Modules configuration
|
||||
"wlr/workspaces": {
|
||||
"hyprland/workspaces": {
|
||||
"format-alt": "{name}",
|
||||
"format-alt-click": "click-middle",
|
||||
"disable-scroll": false,
|
||||
"sort-by-number": true,
|
||||
"all-outputs": true,
|
||||
@ -28,24 +30,24 @@
|
||||
"default": ""
|
||||
}
|
||||
},
|
||||
"keyboard-state": {
|
||||
"numlock": true,
|
||||
"capslock": true,
|
||||
"format": "{name} {icon}",
|
||||
"format-icons": {
|
||||
"locked": "",
|
||||
"unlocked": ""
|
||||
}
|
||||
},
|
||||
"custom/spotify": {
|
||||
"format-alt": "{status_icon} {title}",
|
||||
"format-alt-click": "click-middle",
|
||||
"exec": "/usr/bin/python3 ~/.config/waybar/scripts/mediaplayer.py --player spotify",
|
||||
"format": "{} ",
|
||||
"format": "{status_icon} {artist} - {title}",
|
||||
"return-type": "json",
|
||||
"escape": true,
|
||||
"on-click": "playerctl play-pause",
|
||||
"on-scroll-up": "playerctl next",
|
||||
"on-scroll-down": "playerctl previous"
|
||||
},
|
||||
"custom/debug": {
|
||||
"format": "{}",
|
||||
"exec": "~/test.sh",
|
||||
"return-type": "json",
|
||||
"escape": true,
|
||||
"interval": 3
|
||||
},
|
||||
"custom/inhibit": {
|
||||
"format": "☕",
|
||||
"on-click": "systemd-inhibit --what=handle-lid-switch --who=waybar --why='Inhibiting suspend' --mode=block sleep 120 & notify-send 'Inhibiting suspend' 'Waybar will prevent the system from suspending for 2 minutes'"
|
||||
@ -59,6 +61,8 @@
|
||||
"restart-interval": 1
|
||||
},
|
||||
"custom/wifionice": {
|
||||
"format-alt": "{:.2}", // only show train :D
|
||||
"format-alt-click": "click-middle",
|
||||
"exec": "~/.config/waybar/scripts/wifionice.sh",
|
||||
"escape": true
|
||||
},
|
||||
@ -112,9 +116,6 @@
|
||||
// "format-full": "",
|
||||
"format-icons": ["", "", "", "", ""]
|
||||
},
|
||||
"battery#bat2": {
|
||||
"bat": "BAT2"
|
||||
},
|
||||
"custom/network": {
|
||||
"format": "{}",
|
||||
"max-length": 40,
|
||||
@ -127,30 +128,19 @@
|
||||
"format-bluetooth": "{volume}% {icon} {format_source}",
|
||||
"format-bluetooth-muted": " {icon} {format_source}",
|
||||
"format-muted": " {format_source}",
|
||||
"format-source": "{volume}% ",
|
||||
"format-source": "",
|
||||
"format-source-muted": "",
|
||||
"ignored-sinks": [ "Easy Effects Sink" ],
|
||||
"format-icons": {
|
||||
"headphone": "",
|
||||
"hands-free": "",
|
||||
"headset": "",
|
||||
"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
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
readonly ENABLED=' '
|
||||
readonly DISABLED=' '
|
||||
readonly ENABLED=''
|
||||
readonly DISABLED='\uf1f6' # nf-fa-bell_slash
|
||||
dbus-monitor path='/org/freedesktop/Notifications',interface='org.freedesktop.DBus.Properties',member='PropertiesChanged' --profile |
|
||||
while read -r _; do
|
||||
PAUSED="$(dunstctl is-paused)"
|
||||
|
@ -61,16 +61,6 @@ class PlayerManager:
|
||||
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()
|
||||
@ -102,32 +92,29 @@ class PlayerManager:
|
||||
current_player = self.get_first_playing_player()
|
||||
if current_player is not None:
|
||||
self.on_metadata_changed(current_player, current_player.props.metadata)
|
||||
else:
|
||||
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
|
||||
data = {
|
||||
"player_name": player.props.player_name,
|
||||
"player_icon": "" if player.props.player_name == "spotify" else "",
|
||||
"artist": player.get_artist(),
|
||||
"title": player.get_title(),
|
||||
"status": player.props.status,
|
||||
"status_icon": "" if player.props.status == "Paused" else "",
|
||||
"class": [
|
||||
player.props.player_name.lower(),
|
||||
player.props.status.lower()
|
||||
],
|
||||
"text": f"{player.get_artist()} - {player.get_title()}",
|
||||
}
|
||||
# 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)
|
||||
sys.stdout.write(json.dumps(data) + "\n")
|
||||
sys.stdout.flush()
|
||||
else:
|
||||
logger.debug(f"Other player {current_playing.props.player_name} is playing, skipping")
|
||||
|
||||
|
@ -19,15 +19,6 @@ window#waybar.hidden {
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
/*
|
||||
window#waybar.empty {
|
||||
background-color: transparent;
|
||||
}
|
||||
window#waybar.solo {
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
*/
|
||||
|
||||
window#waybar.termite {
|
||||
background-color: #3F3F3F;
|
||||
}
|
||||
@ -54,19 +45,16 @@ button:hover {
|
||||
#workspaces button {
|
||||
padding: 0 5px;
|
||||
background-color: transparent;
|
||||
color: #ffffff;
|
||||
color: @text;
|
||||
}
|
||||
|
||||
#submap {
|
||||
padding: 0 10px;
|
||||
margin: 0 4px;
|
||||
background-color: @peach;
|
||||
color: black;
|
||||
color: @base;
|
||||
}
|
||||
|
||||
#dunst {
|
||||
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background: alpha(@overlay0, 0.2);
|
||||
@ -107,7 +95,7 @@ button:hover {
|
||||
#scratchpad,
|
||||
#mpd {
|
||||
padding: 0 10px;
|
||||
color: #ffffff;
|
||||
color: @text;
|
||||
border-bottom: 3px solid alpha(@crust, 0.5);
|
||||
}
|
||||
#window,
|
||||
@ -125,30 +113,39 @@ button:hover {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
#clock {
|
||||
background-color: #64727D;
|
||||
.modules-center {
|
||||
background-color: @surface0;
|
||||
}
|
||||
|
||||
#memory,
|
||||
#clock,
|
||||
#memory,
|
||||
#disk,
|
||||
#idle_inhibitor.activated {
|
||||
background-color: @lavender;
|
||||
color: @base;
|
||||
}
|
||||
|
||||
#battery {
|
||||
background-color: @yellow;
|
||||
color: black;
|
||||
color: @base;
|
||||
}
|
||||
|
||||
#battery.charging, #battery.plugged {
|
||||
color: black;
|
||||
color: @base;
|
||||
background-color: @green;
|
||||
}
|
||||
|
||||
@keyframes blink {
|
||||
to {
|
||||
background-color: @yellow;
|
||||
color: black;
|
||||
color: @base;
|
||||
}
|
||||
}
|
||||
|
||||
#battery.critical:not(.charging) {
|
||||
background-color: @red;
|
||||
color: black;
|
||||
color: @base;
|
||||
animation-name: blink;
|
||||
animation-duration: 0.5s;
|
||||
animation-timing-function: linear;
|
||||
@ -158,25 +155,18 @@ button:hover {
|
||||
|
||||
#custom-wifionice {
|
||||
background-color: @red;
|
||||
color: black;
|
||||
color: @base;
|
||||
}
|
||||
|
||||
label:focus {
|
||||
background-color: black;
|
||||
background-color: @base;
|
||||
}
|
||||
|
||||
#cpu {
|
||||
background-color: @green;
|
||||
color: black;
|
||||
color: @base;
|
||||
}
|
||||
|
||||
#memory {
|
||||
background-color: @lavender;
|
||||
}
|
||||
|
||||
#disk {
|
||||
background-color: @lavender;
|
||||
}
|
||||
|
||||
#backlight {
|
||||
background-color: @overlay1;
|
||||
@ -184,7 +174,7 @@ label:focus {
|
||||
|
||||
#custom-network {
|
||||
background-color: @sky;
|
||||
color: black;
|
||||
color: @base;
|
||||
}
|
||||
|
||||
#network.disconnected {
|
||||
@ -193,12 +183,13 @@ label:focus {
|
||||
|
||||
#pulseaudio {
|
||||
background-color: @yellow;
|
||||
color: black;
|
||||
color: @base;
|
||||
}
|
||||
|
||||
#pulseaudio.muted {
|
||||
background-color: @overlay2;
|
||||
color: @text;
|
||||
#custom-dunst.disabled,
|
||||
#pulseaudio.source-muted {
|
||||
background-color: @red;
|
||||
color: @base;
|
||||
}
|
||||
|
||||
#custom-media {
|
||||
@ -208,15 +199,13 @@ label:focus {
|
||||
}
|
||||
|
||||
#custom-spotify {
|
||||
padding: 0 10px;
|
||||
margin: 0 4px;
|
||||
background-color: @green;
|
||||
color: black;
|
||||
color: @base;
|
||||
}
|
||||
|
||||
#temperature {
|
||||
background-color: @peach;
|
||||
color: black;
|
||||
color: @base;
|
||||
}
|
||||
|
||||
#temperature.critical {
|
||||
@ -235,12 +224,3 @@ label:focus {
|
||||
-gtk-icon-effect: highlight;
|
||||
background-color: @red;
|
||||
}
|
||||
|
||||
#idle_inhibitor {
|
||||
background-color: @base;
|
||||
}
|
||||
|
||||
#idle_inhibitor.activated {
|
||||
background-color: @lavender;
|
||||
color: #2d3436;
|
||||
}
|
||||
|
Reference in New Issue
Block a user