initial commit
This commit is contained in:
191
modules/screens.py
Normal file
191
modules/screens.py
Normal file
@@ -0,0 +1,191 @@
|
||||
# _ _ _
|
||||
# __ _| |_(_) | ___ ___ ___ _ __ ___ ___ _ __ ___
|
||||
# / _` | __| | |/ _ \ / __|/ __| '__/ _ \/ _ \ '_ \/ __|
|
||||
# | (_| | |_| | | __/ \__ \ (__| | | __/ __/ | | \__ \
|
||||
# \__, |\__|_|_|\___| |___/\___|_| \___|\___|_| |_|___/
|
||||
# |_|
|
||||
# --------------------------------------------------------------------
|
||||
# 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 set_app_group_color(rule, box):
|
||||
# if box.has.win.name("Jellyfin Media Player"):
|
||||
# rule.foreground = gruvbox_dark
|
||||
# # elif box.occupied:
|
||||
# # rule.text = "◎"
|
||||
# # else:
|
||||
# # rule.text = "○"
|
||||
|
||||
# return True
|
||||
|
||||
|
||||
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),
|
||||
# GroupBoxRule().when(func=set_app_group_color)
|
||||
]
|
||||
|
||||
# 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=18, foreground=gruvbox_dark["fg1"])
|
||||
extension_defaults = widget_defaults.copy()
|
||||
|
||||
# --------------------------------------------------------
|
||||
# Screens
|
||||
# --------------------------------------------------------
|
||||
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="<b>{summary}</b>\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
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user