# _ _ _ # __ _| |_(_) | ___ ___ ___ _ __ ___ ___ _ __ ___ # / _` | __| | |/ _ \ / __|/ __| '__/ _ \/ _ \ '_ \/ __| # | (_| | |_| | | __/ \__ \ (__| | | __/ __/ | | \__ \ # \__, |\__|_|_|\___| |___/\___|_| \___|\___|_| |_|___/ # |_| # -------------------------------------------------------------------- # Imports # -------------------------------------------------------------------- from libqtile.config import Screen from libqtile import bar from libqtile.lazy import lazy from qtile_extras import widget from qtile_extras.widget.groupbox2 import GroupBoxRule from plugins.notifications import Notifier from popups.powermenu import power_menu from popups.start_menu import start_menu from popups.calendar import calendar from popups.mpris2_layout import MPRIS2_LAYOUT from popups.volume_notification import VOL_POPUP from popups.brightness_notification import BRIGHTNESS_NOTIFICATION from res.themes.colors import gruvbox_dark # -------------------------------------------------------- # GroupBox2 rules # -------------------------------------------------------- def colorize_group_lables(rule, box): for win in box.group.windows: if "kitty" in win.name: return True return False def get_groupbox_rules(): # Base rules applied to all GroupBoxes rules = [ GroupBoxRule(text_colour=gruvbox_dark["bg3"]).when( focused=False, occupied=True ), 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), GroupBoxRule(text_colour=gruvbox_dark["orange"]).when( func=colorize_group_lables, ), ] return rules # Add extra rule for a specific monitor (e.g., show "X" as label) # if monitor_specific: # rules.append(GroupBoxRule(text="")) # return rules # -------------------------------------------------------- # Widget Defaults # -------------------------------------------------------- widget_defaults = dict(font="Open Sans", fontsize=20, foreground=gruvbox_dark["fg1"]) extension_defaults = widget_defaults.copy() # -------------------------------------------------------- # Screens # -------------------------------------------------------- screens = [ Screen( top=bar.Bar( [ # widget.TextBox( # text="", # ), widget.GroupBox2( hide_unused=True, center_aligned=True, rules=get_groupbox_rules(), padding=6, margin=4, fontsize=22, visible_groups=["1", "2", "3", "4", "5", "6", "7"], # , '8', '9' ), widget.Spacer(), widget.Clock(), widget.Spacer(), widget.Battery( format="{char}  {percent:2.0%}", low_percentage=0.25, low_foreground=gruvbox_dark["red"], charging_foreground=gruvbox_dark["green"], charge_char="", discharge_char="", empty_char="!", full_char="", not_charging_char="", unknown_char="?", update_interval=1, ), widget.Systray(), ], size=34, opacity=1, background=gruvbox_dark["bg0_hard"], margin=[3, 3, 0, 3], ), ), ] bar.Bar # screens = [ # Screen( # top=bar.Bar( # [ # widget.TextBox( # text="", # fontsize=24, # PopUp-Toolkit? # 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", "4", "5", "6", "7"], # , '8', '9' # 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.Battery( # format="{char}  {percent:2.0%}", # low_percentage=0.25, # low_foreground=gruvbox_dark["red"], # charging_foreground=gruvbox_dark["green"], # charge_char="", # discharge_char="", # empty_char="!", # full_char="", # not_charging_char="", # unknown_char="?", # update_interval=1, # ), # widget.WidgetBox( # fontsize=22, # text_closed="󱤟", # text_open="󱤠 ", # widgets=[ # widget.Memory(format=" {MemPercent}%"), # widget.CPU(format=" {load_percent}%"), # ], # ), # widget.Spacer(length=2), # widget.Systray( # icon_size=21, # ), # widget.Spacer(length=6), # widget.Clock(mouse_callbacks={"Button1": lazy.function(calendar)}), # widget.Spacer(length=2), # widget.TextBox( # fontsize=20, # text=" ", # mouse_callbacks={"Button1": lazy.function(power_menu)}, # ), # # Invisible widgets for popup notifications at value change # widget.BrightnessControl( # mode="popup", # popup_layout=BRIGHTNESS_NOTIFICATION, # device="/sys/class/backlight/intel_backlight", # brightness_path="brightness", # max_brightness_path="max_brightness", # popup_show_args={"relative_to": 8, "y": -70}, # ), # widget.PulseVolumeExtra( # mode="popup", # fmt="", # popup_layout=VOL_POPUP, # popup_hide_timeout=3, # popup_show_args={"relative_to": 8, "y": -70}, # ), # ], # background=gruvbox_dark["bg0_hard"], # opacity=0.75, # size=32, # margin=[3, 3, 0, 3], # ), # ), # ] notifier = Notifier( x=835, 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='more_width', fullscreen="queue", screen="focus", actions=True, # wrap=True )