update
This commit is contained in:
10
dotfiles/config/waybar/modules/backlight.jsonc
Normal file
10
dotfiles/config/waybar/modules/backlight.jsonc
Normal file
@@ -0,0 +1,10 @@
|
||||
"backlight": {
|
||||
"device": "intel_backlight",
|
||||
"rotate": ${r_deg},
|
||||
"format": "{icon} {percent}%",
|
||||
"format-icons": ["", "", "", "", "", "", "", "", ""],
|
||||
"on-scroll-up": "brightnessctl set 1%+",
|
||||
"on-scroll-down": "brightnessctl set 1%-",
|
||||
"min-length": 6
|
||||
},
|
||||
|
||||
14
dotfiles/config/waybar/modules/battery.jsonc
Normal file
14
dotfiles/config/waybar/modules/battery.jsonc
Normal file
@@ -0,0 +1,14 @@
|
||||
"battery": {
|
||||
"states": {
|
||||
"good": 95,
|
||||
"warning": 30,
|
||||
"critical": 20
|
||||
},
|
||||
"format": "{icon} {capacity}%",
|
||||
"rotate": ${r_deg},
|
||||
"format-charging": " {capacity}%",
|
||||
"format-plugged": " {capacity}%",
|
||||
"format-alt": "{time} {icon}",
|
||||
"format-icons": ["", "", "", "", "", "", "", "", "", "", ""]
|
||||
},
|
||||
|
||||
15
dotfiles/config/waybar/modules/bluetooth.jsonc
Normal file
15
dotfiles/config/waybar/modules/bluetooth.jsonc
Normal file
@@ -0,0 +1,15 @@
|
||||
"bluetooth": {
|
||||
"format": "",
|
||||
"rotate": ${r_deg},
|
||||
"format-disabled": "",
|
||||
"format-connected": " {num_connections}",
|
||||
"format-connected-battery": "{icon} {num_connections}",
|
||||
// "format-connected-battery": "{icon} {device_alias}-{device_battery_percentage}%",
|
||||
"format-icons": ["", "", "", "", "", "", "", "", "", "", ""],
|
||||
// "format-device-preference": [ "device1", "device2" ], // preference list deciding the displayed device If this config option is not defined or none of the devices in the list are connected, it will fall back to showing the last connected device.
|
||||
"tooltip-format": "{controller_alias}\n{num_connections} connected",
|
||||
"tooltip-format-connected": "{controller_alias}\n{num_connections} connected\n\n{device_enumerate}",
|
||||
"tooltip-format-enumerate-connected": "{device_alias}",
|
||||
"tooltip-format-enumerate-connected-battery": "{device_alias}\t{icon} {device_battery_percentage}%"
|
||||
},
|
||||
|
||||
11
dotfiles/config/waybar/modules/cliphist.jsonc
Normal file
11
dotfiles/config/waybar/modules/cliphist.jsonc
Normal file
@@ -0,0 +1,11 @@
|
||||
"custom/cliphist": {
|
||||
"format": "{}",
|
||||
"rotate": ${r_deg},
|
||||
"exec": "echo ; echo clipboard history",
|
||||
"on-click": "sleep 0.1 && ${ScrDir}/cliphist.sh c",
|
||||
"on-click-right": "sleep 0.1 && ${ScrDir}/cliphist.sh d",
|
||||
"on-click-middle": "sleep 0.1 && ${ScrDir}/cliphist.sh w",
|
||||
"interval" : 86400, // once every day
|
||||
"tooltip": true
|
||||
},
|
||||
|
||||
25
dotfiles/config/waybar/modules/clock.jsonc
Normal file
25
dotfiles/config/waybar/modules/clock.jsonc
Normal file
@@ -0,0 +1,25 @@
|
||||
"clock": {
|
||||
"format": "{:%I:%M %p}",
|
||||
"rotate": ${r_deg},
|
||||
"format-alt": "{:%R %d·%m·%y}",
|
||||
"tooltip-format": "<tt>{calendar}</tt>",
|
||||
"calendar": {
|
||||
"mode": "month",
|
||||
"mode-mon-col": 3,
|
||||
"on-scroll": 1,
|
||||
"on-click-right": "mode",
|
||||
"format": {
|
||||
"months": "<span color='#ffead3'><b>{}</b></span>",
|
||||
"weekdays": "<span color='#ffcc66'><b>{}</b></span>",
|
||||
"today": "<span color='#ff6699'><b>{}</b></span>"
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"on-click-right": "mode",
|
||||
"on-click-forward": "tz_up",
|
||||
"on-click-backward": "tz_down",
|
||||
"on-scroll-up": "shift_up",
|
||||
"on-scroll-down": "shift_down"
|
||||
}
|
||||
},
|
||||
|
||||
8
dotfiles/config/waybar/modules/cpu.jsonc
Normal file
8
dotfiles/config/waybar/modules/cpu.jsonc
Normal file
@@ -0,0 +1,8 @@
|
||||
"cpu": {
|
||||
"interval": 10,
|
||||
"format": " {usage}%",
|
||||
"rotate": ${r_deg},
|
||||
"format-alt": "{icon0}{icon1}{icon2}{icon3}",
|
||||
"format-icons": ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"]
|
||||
},
|
||||
|
||||
10
dotfiles/config/waybar/modules/cpuinfo.jsonc
Normal file
10
dotfiles/config/waybar/modules/cpuinfo.jsonc
Normal file
@@ -0,0 +1,10 @@
|
||||
"custom/cpuinfo": {
|
||||
"exec": " ${ScrDir}/cpuinfo.sh",
|
||||
"return-type": "json",
|
||||
"format": "{}",
|
||||
"rotate": ${r_deg},
|
||||
"interval": 5, // once every 5 seconds
|
||||
"tooltip": true,
|
||||
"max-length": 1000
|
||||
},
|
||||
|
||||
47
dotfiles/config/waybar/modules/footer.jsonc
Normal file
47
dotfiles/config/waybar/modules/footer.jsonc
Normal file
@@ -0,0 +1,47 @@
|
||||
|
||||
// modules for padding //
|
||||
|
||||
"custom/l_end": {
|
||||
"format": " ",
|
||||
"interval" : "once",
|
||||
"tooltip": false
|
||||
},
|
||||
|
||||
"custom/r_end": {
|
||||
"format": " ",
|
||||
"interval" : "once",
|
||||
"tooltip": false
|
||||
},
|
||||
|
||||
"custom/sl_end": {
|
||||
"format": " ",
|
||||
"interval" : "once",
|
||||
"tooltip": false
|
||||
},
|
||||
|
||||
"custom/sr_end": {
|
||||
"format": " ",
|
||||
"interval" : "once",
|
||||
"tooltip": false
|
||||
},
|
||||
|
||||
"custom/rl_end": {
|
||||
"format": " ",
|
||||
"interval" : "once",
|
||||
"tooltip": false
|
||||
},
|
||||
|
||||
"custom/rr_end": {
|
||||
"format": " ",
|
||||
"interval" : "once",
|
||||
"tooltip": false
|
||||
},
|
||||
|
||||
"custom/padd": {
|
||||
"format": " ",
|
||||
"interval" : "once",
|
||||
"tooltip": false
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
41
dotfiles/config/waybar/modules/gpuinfo.jsonc
Normal file
41
dotfiles/config/waybar/modules/gpuinfo.jsonc
Normal file
@@ -0,0 +1,41 @@
|
||||
"custom/gpuinfo": {
|
||||
"exec": " ${ScrDir}/gpuinfo.sh",
|
||||
"return-type": "json",
|
||||
"format": "{}",
|
||||
"rotate": ${r_deg},
|
||||
"interval": 5, // once every 5 seconds
|
||||
"tooltip": true,
|
||||
"max-length": 1000,
|
||||
"on-click": "${ScrDir}/gpuinfo.sh --toggle",
|
||||
},
|
||||
|
||||
"custom/gpuinfo#nvidia": {
|
||||
"exec": " ${ScrDir}/gpuinfo.sh --use nvidia ",
|
||||
"return-type": "json",
|
||||
"format": "{}",
|
||||
"rotate": ${r_deg},
|
||||
"interval": 5, // once every 5 seconds
|
||||
"tooltip": true,
|
||||
"max-length": 1000,
|
||||
},
|
||||
|
||||
"custom/gpuinfo#amd": {
|
||||
"exec": " ${ScrDir}/gpuinfo.sh --use amd ",
|
||||
"return-type": "json",
|
||||
"format": "{}",
|
||||
"rotate": ${r_deg},
|
||||
"interval": 5, // once every 5 seconds
|
||||
"tooltip": true,
|
||||
"max-length": 1000,
|
||||
},
|
||||
|
||||
"custom/gpuinfo#intel": {
|
||||
"exec": " ${ScrDir}/gpuinfo.sh --use intel ",
|
||||
"return-type": "json",
|
||||
"format": "{}",
|
||||
"rotate": ${r_deg},
|
||||
"interval": 5, // once every 5 seconds
|
||||
"tooltip": true,
|
||||
"max-length": 1000,
|
||||
},
|
||||
|
||||
12
dotfiles/config/waybar/modules/header.jsonc
Normal file
12
dotfiles/config/waybar/modules/header.jsonc
Normal file
@@ -0,0 +1,12 @@
|
||||
// --// waybar config generated by wbarconfgen.sh //-- //
|
||||
|
||||
{
|
||||
// sourced from header module //
|
||||
|
||||
"layer": "top",
|
||||
"position": "${w_position}",
|
||||
"mod": "dock",
|
||||
"${hv_pos}": ${w_height},
|
||||
"exclusive": true,
|
||||
"passthrough": false,
|
||||
"gtk-layer-shell": true,
|
||||
9
dotfiles/config/waybar/modules/idle_inhibitor.jsonc
Normal file
9
dotfiles/config/waybar/modules/idle_inhibitor.jsonc
Normal file
@@ -0,0 +1,9 @@
|
||||
"idle_inhibitor": {
|
||||
"format": "{icon}",
|
||||
"rotate": ${r_deg},
|
||||
"format-icons": {
|
||||
"activated": "",
|
||||
"deactivated": ""
|
||||
}
|
||||
},
|
||||
|
||||
6
dotfiles/config/waybar/modules/keybindhint.jsonc
Normal file
6
dotfiles/config/waybar/modules/keybindhint.jsonc
Normal file
@@ -0,0 +1,6 @@
|
||||
"custom/keybindhint": {
|
||||
"format": " ",
|
||||
"rotate": ${r_deg},
|
||||
"on-click": "${ScrDir}/keybinds_hint.sh"
|
||||
},
|
||||
|
||||
6
dotfiles/config/waybar/modules/language.jsonc
Normal file
6
dotfiles/config/waybar/modules/language.jsonc
Normal file
@@ -0,0 +1,6 @@
|
||||
"hyprland/language": {
|
||||
"format": "{short} {variant}",
|
||||
"rotate": ${r_deg},
|
||||
"on-click": "${ScrDir}/keyboardswitch.sh",
|
||||
},
|
||||
|
||||
183
dotfiles/config/waybar/modules/mediaplayer.py
Normal file
183
dotfiles/config/waybar/modules/mediaplayer.py
Normal file
@@ -0,0 +1,183 @@
|
||||
#!/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):
|
||||
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.init_players()
|
||||
|
||||
def init_players(self):
|
||||
for player in self.manager.props.player_names:
|
||||
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, tooltip):
|
||||
logger.debug(f"Writing output: {text}")
|
||||
|
||||
output = {"text": text,
|
||||
"class": "custom-" + player.props.player_name,
|
||||
"alt": player.props.player_name,
|
||||
"tooltip": tooltip}
|
||||
|
||||
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
|
||||
tooltip = track_info
|
||||
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, tooltip)
|
||||
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 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)
|
||||
|
||||
# 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}")
|
||||
player = PlayerManager(arguments.player)
|
||||
player.run()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
18
dotfiles/config/waybar/modules/memory.jsonc
Normal file
18
dotfiles/config/waybar/modules/memory.jsonc
Normal file
@@ -0,0 +1,18 @@
|
||||
"memory": {
|
||||
"states": {
|
||||
"c": 90, // critical
|
||||
"h": 60, // high
|
||||
"m": 30, // medium
|
||||
},
|
||||
"interval": 30,
|
||||
"format": " {used}GB",
|
||||
"rotate": ${r_deg},
|
||||
"format-m": " {used}GB",
|
||||
"format-h": " {used}GB",
|
||||
"format-c": " {used}GB",
|
||||
"format-alt": " {percentage}%",
|
||||
"max-length": 10,
|
||||
"tooltip": true,
|
||||
"tooltip-format": " {percentage}%\n {used:0.1f}GB/{total:0.1f}GB"
|
||||
},
|
||||
|
||||
16
dotfiles/config/waybar/modules/mpris.jsonc
Normal file
16
dotfiles/config/waybar/modules/mpris.jsonc
Normal file
@@ -0,0 +1,16 @@
|
||||
"mpris": {
|
||||
"format": "{player_icon} {dynamic}",
|
||||
"rotate": ${r_deg},
|
||||
"format-paused": "{status_icon} <i>{dynamic}</i>",
|
||||
"player-icons": {
|
||||
"default": "▶",
|
||||
"mpv": "🎵"
|
||||
},
|
||||
"status-icons": {
|
||||
"paused": "⏸"
|
||||
},
|
||||
// "ignored-players": ["firefox"]
|
||||
"max-length": 1000,
|
||||
"interval": 1
|
||||
},
|
||||
|
||||
13
dotfiles/config/waybar/modules/network.jsonc
Normal file
13
dotfiles/config/waybar/modules/network.jsonc
Normal file
@@ -0,0 +1,13 @@
|
||||
"network": {
|
||||
"tooltip": true,
|
||||
"format-wifi": " ",
|
||||
"rotate": ${r_deg},
|
||||
"format-ethernet": " ",
|
||||
"tooltip-format": "Network: <big><b>{essid}</b></big>\nSignal strength: <b>{signaldBm}dBm ({signalStrength}%)</b>\nFrequency: <b>{frequency}MHz</b>\nInterface: <b>{ifname}</b>\nIP: <b>{ipaddr}/{cidr}</b>\nGateway: <b>{gwaddr}</b>\nNetmask: <b>{netmask}</b>",
|
||||
"format-linked": " {ifname} (No IP)",
|
||||
"format-disconnected": " ",
|
||||
"tooltip-format-disconnected": "Disconnected",
|
||||
"format-alt": "<span foreground='#99ffdd'> {bandwidthDownBytes}</span> <span foreground='#ffcc66'> {bandwidthUpBytes}</span>",
|
||||
"interval": 2,
|
||||
},
|
||||
|
||||
10
dotfiles/config/waybar/modules/power.jsonc
Normal file
10
dotfiles/config/waybar/modules/power.jsonc
Normal file
@@ -0,0 +1,10 @@
|
||||
"custom/power": {
|
||||
"format": "{}",
|
||||
"rotate": ${r_deg},
|
||||
"exec": "echo ; echo logout",
|
||||
"on-click": "${ScrDir}/logoutlaunch.sh 2",
|
||||
"on-click-right": "${ScrDir}/logoutlaunch.sh 1",
|
||||
"interval" : 86400, // once every day
|
||||
"tooltip": true
|
||||
},
|
||||
|
||||
34
dotfiles/config/waybar/modules/pulseaudio.jsonc
Normal file
34
dotfiles/config/waybar/modules/pulseaudio.jsonc
Normal file
@@ -0,0 +1,34 @@
|
||||
"pulseaudio": {
|
||||
"format": "{icon} {volume}",
|
||||
"rotate": ${r_deg},
|
||||
"format-muted": "婢",
|
||||
"on-click": "pavucontrol -t 3",
|
||||
"on-click-middle": "${ScrDir}/volumecontrol.sh -o m",
|
||||
"on-scroll-up": "${ScrDir}/volumecontrol.sh -o i",
|
||||
"on-scroll-down": "${ScrDir}/volumecontrol.sh -o d",
|
||||
"tooltip-format": "{icon} {desc} // {volume}%",
|
||||
"scroll-step": 5,
|
||||
"format-icons": {
|
||||
"headphone": "",
|
||||
"hands-free": "",
|
||||
"headset": "",
|
||||
"phone": "",
|
||||
"portable": "",
|
||||
"car": "",
|
||||
"default": ["", "", ""]
|
||||
}
|
||||
},
|
||||
|
||||
"pulseaudio#microphone": {
|
||||
"format": "{format_source}",
|
||||
"rotate": ${r_deg},
|
||||
"format-source": "",
|
||||
"format-source-muted": "",
|
||||
"on-click": "pavucontrol -t 4",
|
||||
"on-click-middle": "${ScrDir}/volumecontrol.sh -i m",
|
||||
"on-scroll-up": "${ScrDir}/volumecontrol.sh -i i",
|
||||
"on-scroll-down": "${ScrDir}/volumecontrol.sh -i d",
|
||||
"tooltip-format": "{format_source} {source_desc} // {source_volume}%",
|
||||
"scroll-step": 5
|
||||
},
|
||||
|
||||
15
dotfiles/config/waybar/modules/spotify.jsonc
Normal file
15
dotfiles/config/waybar/modules/spotify.jsonc
Normal file
@@ -0,0 +1,15 @@
|
||||
"custom/spotify": {
|
||||
"exec": "/usr/bin/env python3 $HOME/.config/waybar/modules/mediaplayer.py --player spotify",
|
||||
"format": " {}",
|
||||
"rotate": ${r_deg},
|
||||
"return-type": "json",
|
||||
"on-click": "playerctl play-pause --player spotify",
|
||||
"on-click-right": "playerctl next --player spotify",
|
||||
"on-click-middle": "playerctl previous --player spotify",
|
||||
"on-scroll-up": "${ScrDir}/volumecontrol.sh -p spotify i",
|
||||
"on-scroll-down": "${ScrDir}/volumecontrol.sh -p spotify d",
|
||||
"max-length": 25,
|
||||
"escape": true,
|
||||
"tooltip": true
|
||||
},
|
||||
|
||||
143
dotfiles/config/waybar/modules/style.css
Normal file
143
dotfiles/config/waybar/modules/style.css
Normal file
@@ -0,0 +1,143 @@
|
||||
* {
|
||||
border: none;
|
||||
border-radius: 0px;
|
||||
font-family: "JetBrainsMono Nerd Font";
|
||||
font-weight: bold;
|
||||
font-size: ${s_fontpx}px;
|
||||
min-height: 10px;
|
||||
}
|
||||
|
||||
@import "themes/theme.css";
|
||||
|
||||
window#waybar {
|
||||
background: @bar-bg;
|
||||
}
|
||||
|
||||
tooltip {
|
||||
background: @main-bg;
|
||||
color: @main-fg;
|
||||
border-radius: ${t_radius}px;
|
||||
border-width: 0px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
box-shadow: none;
|
||||
text-shadow: none;
|
||||
padding: 0px;
|
||||
border-radius: ${w_radius}px;
|
||||
margin-${x1}: ${w_margin}px;
|
||||
margin-${x2}: ${w_margin}px;
|
||||
margin-${x3}: 0px;
|
||||
padding-${x3}: ${w_paddin}px;
|
||||
padding-${x4}: ${w_paddin}px;
|
||||
margin-${x4}: 0px;
|
||||
color: @main-fg;
|
||||
animation: ws_normal 20s ease-in-out 1;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
background: @wb-act-bg;
|
||||
color: @wb-act-fg;
|
||||
margin-${x3}: ${w_margin}px;
|
||||
padding-${x3}: ${w_padact}px;
|
||||
padding-${x4}: ${w_padact}px;
|
||||
margin-${x4}: ${w_margin}px;
|
||||
animation: ws_active 20s ease-in-out 1;
|
||||
transition: all 0.4s cubic-bezier(.55,-0.68,.48,1.682);
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background: @wb-hvr-bg;
|
||||
color: @wb-hvr-fg;
|
||||
animation: ws_hover 20s ease-in-out 1;
|
||||
transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
|
||||
}
|
||||
|
||||
#taskbar button {
|
||||
box-shadow: none;
|
||||
text-shadow: none;
|
||||
padding: 0px;
|
||||
border-radius: ${w_radius}px;
|
||||
margin-${x1}: ${w_margin}px;
|
||||
margin-${x2}: ${w_margin}px;
|
||||
margin-${x3}: 0px;
|
||||
padding-${x3}: ${w_paddin}px;
|
||||
padding-${x4}: ${w_paddin}px;
|
||||
margin-${x4}: 0px;
|
||||
color: @wb-color;
|
||||
animation: tb_normal 20s ease-in-out 1;
|
||||
}
|
||||
|
||||
#taskbar button.active {
|
||||
background: @wb-act-bg;
|
||||
color: @wb-act-color;
|
||||
margin-${x3}: ${w_margin}px;
|
||||
padding-${x3}: ${w_padact}px;
|
||||
padding-${x4}: ${w_padact}px;
|
||||
margin-${x4}: ${w_margin}px;
|
||||
animation: tb_active 20s ease-in-out 1;
|
||||
transition: all 0.4s cubic-bezier(.55,-0.68,.48,1.682);
|
||||
}
|
||||
|
||||
#taskbar button:hover {
|
||||
background: @wb-hvr-bg;
|
||||
color: @wb-hvr-color;
|
||||
animation: tb_hover 20s ease-in-out 1;
|
||||
transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
|
||||
}
|
||||
|
||||
${modules_ls}
|
||||
#custom-l_end,
|
||||
#custom-r_end,
|
||||
#custom-sl_end,
|
||||
#custom-sr_end,
|
||||
#custom-rl_end,
|
||||
#custom-rr_end {
|
||||
color: @main-fg;
|
||||
background: @main-bg;
|
||||
opacity: 1;
|
||||
margin: ${x1g_margin}px ${x2g_margin}px ${x3g_margin}px ${x4g_margin}px;
|
||||
padding-${x3}: ${g_paddin}px;
|
||||
padding-${x4}: ${g_paddin}px;
|
||||
}
|
||||
|
||||
#workspaces,
|
||||
#taskbar {
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
#custom-r_end {
|
||||
border-radius: ${x1rb_radius}px ${x2rb_radius}px ${x3rb_radius}px ${x4rb_radius}px;
|
||||
margin-${x4}: ${e_margin}px;
|
||||
padding-${x4}: ${e_paddin}px;
|
||||
}
|
||||
|
||||
#custom-l_end {
|
||||
border-radius: ${x1lb_radius}px ${x2lb_radius}px ${x3lb_radius}px ${x4lb_radius}px;
|
||||
margin-${x3}: ${e_margin}px;
|
||||
padding-${x3}: ${e_paddin}px;
|
||||
}
|
||||
|
||||
#custom-sr_end {
|
||||
border-radius: 0px;
|
||||
margin-${x4}: ${e_margin}px;
|
||||
padding-${x4}: ${e_paddin}px;
|
||||
}
|
||||
|
||||
#custom-sl_end {
|
||||
border-radius: 0px;
|
||||
margin-${x3}: ${e_margin}px;
|
||||
padding-${x3}: ${e_paddin}px;
|
||||
}
|
||||
|
||||
#custom-rr_end {
|
||||
border-radius: ${x1rc_radius}px ${x2rc_radius}px ${x3rc_radius}px ${x4rc_radius}px;
|
||||
margin-${x4}: ${e_margin}px;
|
||||
padding-${x4}: ${e_paddin}px;
|
||||
}
|
||||
|
||||
#custom-rl_end {
|
||||
border-radius: ${x1lc_radius}px ${x2lc_radius}px ${x3lc_radius}px ${x4lc_radius}px;
|
||||
margin-${x3}: ${e_margin}px;
|
||||
padding-${x3}: ${e_paddin}px;
|
||||
}
|
||||
17
dotfiles/config/waybar/modules/taskbar.jsonc
Normal file
17
dotfiles/config/waybar/modules/taskbar.jsonc
Normal file
@@ -0,0 +1,17 @@
|
||||
"wlr/taskbar": {
|
||||
"format": "{icon}",
|
||||
"rotate": ${r_deg},
|
||||
"icon-size": ${i_task},
|
||||
"icon-theme": "${i_theme}",
|
||||
"spacing": 0,
|
||||
"tooltip-format": "{title}",
|
||||
"on-click": "activate",
|
||||
"on-click-middle": "close",
|
||||
"ignore-list": [
|
||||
"Alacritty"
|
||||
],
|
||||
"app_ids-mapping": {
|
||||
"firefoxdeveloperedition": "firefox-developer-edition"
|
||||
}
|
||||
},
|
||||
|
||||
11
dotfiles/config/waybar/modules/theme.jsonc
Normal file
11
dotfiles/config/waybar/modules/theme.jsonc
Normal file
@@ -0,0 +1,11 @@
|
||||
"custom/theme": {
|
||||
"format": "{}",
|
||||
"rotate": ${r_deg},
|
||||
"exec": "echo ; echo switch theme",
|
||||
"on-click": "${ScrDir}/themeswitch.sh -n",
|
||||
"on-click-right": "${ScrDir}/themeswitch.sh -p",
|
||||
"on-click-middle": "sleep 0.1 && ${ScrDir}/themeselect.sh",
|
||||
"interval" : 86400, // once every day
|
||||
"tooltip": true
|
||||
},
|
||||
|
||||
6
dotfiles/config/waybar/modules/tray.jsonc
Normal file
6
dotfiles/config/waybar/modules/tray.jsonc
Normal file
@@ -0,0 +1,6 @@
|
||||
"tray": {
|
||||
"icon-size": ${i_size},
|
||||
"rotate": ${r_deg},
|
||||
"spacing": 5
|
||||
},
|
||||
|
||||
10
dotfiles/config/waybar/modules/updates.jsonc
Normal file
10
dotfiles/config/waybar/modules/updates.jsonc
Normal file
@@ -0,0 +1,10 @@
|
||||
"custom/updates": {
|
||||
"exec": "${ScrDir}/systemupdate.sh",
|
||||
"return-type": "json",
|
||||
"format": " {}",
|
||||
"rotate": ${r_deg},
|
||||
"on-click": "${ScrDir}/systemupdate.sh up",
|
||||
"interval": 86400, // once every day
|
||||
"tooltip": true,
|
||||
},
|
||||
|
||||
11
dotfiles/config/waybar/modules/wallchange.jsonc
Normal file
11
dotfiles/config/waybar/modules/wallchange.jsonc
Normal file
@@ -0,0 +1,11 @@
|
||||
"custom/wallchange": {
|
||||
"format": "{}",
|
||||
"rotate": ${r_deg},
|
||||
"exec": "echo ; echo switch wallpaper",
|
||||
"on-click": "${ScrDir}/swwwallpaper.sh -n",
|
||||
"on-click-right": "${ScrDir}/swwwallpaper.sh -p",
|
||||
"on-click-middle": "sleep 0.1 && ${ScrDir}/swwwallselect.sh",
|
||||
"interval" : 86400, // once every day
|
||||
"tooltip": true
|
||||
},
|
||||
|
||||
11
dotfiles/config/waybar/modules/wbar.jsonc
Normal file
11
dotfiles/config/waybar/modules/wbar.jsonc
Normal file
@@ -0,0 +1,11 @@
|
||||
"custom/wbar": {
|
||||
"format": "{}", // //
|
||||
"rotate": ${r_deg},
|
||||
"exec": "echo ; echo switch bar // dock",
|
||||
"on-click": "${ScrDir}/wbarconfgen.sh n",
|
||||
"on-click-right": "${ScrDir}/wbarconfgen.sh p",
|
||||
"on-click-middle": "sleep 0.1 && ${ScrDir}/quickapps.sh kitty firefox spotify code dolphin",
|
||||
"interval" : 86400,
|
||||
"tooltip": true
|
||||
},
|
||||
|
||||
17
dotfiles/config/waybar/modules/window.jsonc
Normal file
17
dotfiles/config/waybar/modules/window.jsonc
Normal file
@@ -0,0 +1,17 @@
|
||||
"hyprland/window": {
|
||||
"format": " {}",
|
||||
"rotate": ${r_deg},
|
||||
"separate-outputs": true,
|
||||
"rewrite": {
|
||||
"${USER}@${set_sysname}:(.*)": "$1 ",
|
||||
"(.*) — Mozilla Firefox": "$1 ",
|
||||
"(.*)Mozilla Firefox": "Firefox ",
|
||||
"(.*) - Visual Studio Code": "$1 ",
|
||||
"(.*)Visual Studio Code": "Code ",
|
||||
"(.*) — Dolphin": "$1 ",
|
||||
"(.*)Spotify": "Spotify ",
|
||||
"(.*)Steam": "Steam "
|
||||
},
|
||||
"max-length": 1000
|
||||
},
|
||||
|
||||
10
dotfiles/config/waybar/modules/workspaces.jsonc
Normal file
10
dotfiles/config/waybar/modules/workspaces.jsonc
Normal file
@@ -0,0 +1,10 @@
|
||||
"hyprland/workspaces": {
|
||||
"disable-scroll": true,
|
||||
"rotate": ${r_deg},
|
||||
"all-outputs": true,
|
||||
"active-only": false,
|
||||
"on-click": "activate",
|
||||
"persistent-workspaces": {
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user