from libqtile.lazy import lazy from qtile_extras import widget from qtile_extras.widget.groupbox2 import GroupBoxRule from config import widget_defaults from themes.colors import gruvbox_dark from plugins.notifications import Notifier from popups.start_menu import start_menu from popups.powermenu import power_menu from popups.calendar import calendar from popups.volume_notification import VOL_POPUP from popups.mpris2_layout import MPRIS2_LAYOUT def get_groupbox_rules(monitor_specific=True): # Base rules applied to all GroupBoxes rules = [ GroupBoxRule(text_colour=gruvbox_dark["bg3"]).when( focused=False, occupied=True ), GroupBoxRule(text_colour=gruvbox_dark["aqua"]).when( focused=False, occupied=False ), GroupBoxRule(text_colour=gruvbox_dark["fg3"]).when(focused=True), GroupBoxRule(text_colour=gruvbox_dark["red"]).when( focused=False, occupied=True, urgent=True ), GroupBoxRule(visible=False).when(focused=False, occupied=False), ] # Add extra rule for a specific monitor (e.g., show "X" as label) if monitor_specific: rules.append(GroupBoxRule(text="")) return rules widgets_media = [ widget.TextBox( text="", fontsize=24, foreground=gruvbox_dark["blue"], mouse_callbacks={"Button1": lazy.function(start_menu)}, ), widget.GroupBox2( padding=6, fontsize=22, font="Open Sans", center_aligned=True, visible_groups=[ "4", "5", "6", "f1", "f7", "f3", ], hide_unused=True, rules=get_groupbox_rules(monitor_specific=False), ), widget.Spacer(length=20), widget.Mpris2( name="mpris2", width=350, scroll=True, scroll_clear=True, foreground=gruvbox_dark["fg1"], format="{xesam:title} - {xesam:artist}", paused_text="{track} ", popup_layout=MPRIS2_LAYOUT, poll_interval=15, popup_show_args={ "relative_to": 2, "relative_to_bar": True, "y": 3, }, mouse_callbacks={ "Button1": lazy.widget["mpris2"].toggle_player(), }, ), widget.Spacer(), widget.Clock(mouse_callbacks={"Button1": lazy.function(calendar)}), widget.Spacer(length=2), widget.TextBox( fontsize=20, text=" ", mouse_callbacks={"Button1": lazy.function(power_menu)}, ), ] widgets_main = [ widget.TextBox( text="", fontsize=24, foreground=gruvbox_dark["blue"], mouse_callbacks={"Button1": lazy.function(start_menu)}, ), widget.GroupBox2( padding=5, fontsize=22, font="Open Sans", center_aligned=True, visible_groups=[ "1", "2", "3", "0", "f8", "f9", "f10", "f11", "f12", ], hide_unused=True, rules=get_groupbox_rules(monitor_specific=False), ), widget.Spacer(), widget.Systray( icon_size=21, ), widget.Spacer(length=6), widget.Clock(mouse_callbacks={"Button1": lazy.function(calendar)}), widget.Spacer(length=2), widget.TextBox( font="Open Sans", fontsize=20, text=" ", mouse_callbacks={"Button1": lazy.function(power_menu)}, ), widget.PulseVolumeExtra( mode="popup", fmt="", popup_layout=VOL_POPUP, popup_hide_timeout=3, popup_show_args={"relative_to": 8, "y": -70}, ), ] widgets_portrait = [ widget.TextBox( text="", fontsize=24, foreground=gruvbox_dark["blue"], mouse_callbacks={"Button1": lazy.function(start_menu)}, ), widget.GroupBox2( padding=6, fontsize=22, margin=7, font="Open Sans", center_aligned=True, visible_groups=["7", "8", "9", "f2", "f4", "f5", "f6"], hide_unused=True, rules=get_groupbox_rules(monitor_specific=False), ), widget.Spacer(), widget.WidgetBox( fontsize=22, text_closed="󱤟", text_open="󱤠", widgets=[ widget.Memory( format=" {MemPercent}%", font="Open Sans", ), widget.CPU( format=" {load_percent}%", font="Open Sans", ), ], ), widget.Spacer(length=6), widget.Clock(mouse_callbacks={"Button1": lazy.function(calendar)}), widget.Spacer(length=2), widget.TextBox( font="Open Sans", fontsize=20, text=" ", mouse_callbacks={"Button1": lazy.function(power_menu)}, ), ] notifier = Notifier( x=1155, y=38, width=250, height=96, format="{summary}\n{app_name}\n{body}", # file_name='/home/cerberus/.config/qtile/normal.png', # Not working foreground=gruvbox_dark["fg1"], background=( gruvbox_dark["bg0_hard"], gruvbox_dark["bg0_hard"], gruvbox_dark["orange"], ), horizontal_padding=8, vertical_padding=8, opacity=0.65, border_width=0, font="Open Sans", font_size=16, overflow="truncate", fullscreen="queue", screen=1, # actions=True, # wrap=True )