window binding & other stuff

This commit is contained in:
Paul Fey 2025-02-28 15:50:30 +01:00
parent 4849024e71
commit 37febd75cd

View file

@ -35,6 +35,8 @@ from layouts.tabbed import Tabbed
from qtile_bonsai import Bonsai from qtile_bonsai import Bonsai
from qtile_extras.layout.decorations import RoundedCorners from qtile_extras.layout.decorations import RoundedCorners
#from libqtile.utils import guess_terminal #from libqtile.utils import guess_terminal
from libqtile import hook
mod = "mod4" mod = "mod4"
terminal = "kitty" terminal = "kitty"
@ -42,6 +44,24 @@ browser = "xdg-open http://"
wallpaper_path = os.path.expanduser("~/.wallpaper") wallpaper_path = os.path.expanduser("~/.wallpaper")
wallpaper_mode = "fill" wallpaper_mode = "fill"
bind_windows = {
"1": [
"kitty"
],
"2": [
"zen",
"firefox"
],
"3": [
"dev.zed.Zed",
"Code"
],
"4": [],
"5": [
"Element"
]
}
# Switches between tabbed and plasma layout # Switches between tabbed and plasma layout
@lazy.function @lazy.function
def switch_tabbed(qtile): def switch_tabbed(qtile):
@ -128,6 +148,21 @@ keys = [
[], [],
"XF86AudioMute", "XF86AudioMute",
lazy.spawn("pamixer -t") lazy.spawn("pamixer -t")
),
Key(
[],
"XF86AudioPrev",
lazy.spawn("playerctl previous")
),
Key(
[],
"XF86AudioPlay",
lazy.spawn("playerctl play-pause")
),
Key(
[],
"XF86AudioNext",
lazy.spawn("playerctl next")
) )
] ]
@ -235,7 +270,8 @@ screens = [
not_charging_char="Not Charging", not_charging_char="Not Charging",
notify_below=15, notify_below=15,
update_interval=1, update_interval=1,
show_short_text=False show_short_text=False,
hide_crash=True
), ),
widget.Volume( widget.Volume(
get_volume_command="pamixer --get-volume-human", get_volume_command="pamixer --get-volume-human",
@ -244,7 +280,7 @@ screens = [
volume_down_command="pamixer -d 1" volume_down_command="pamixer -d 1"
), ),
widget.Backlight(change_command="brightnessctl set {0}%", step=5, format=""), widget.Backlight(change_command="brightnessctl set {0}%", step=5, format="", hide_crash=True),
widget.TextBox("default config", name="default"), widget.TextBox("default config", name="default"),
widget.TextBox("Press <M-r> to spawn", foreground="#d75f5f"), widget.TextBox("Press <M-r> to spawn", foreground="#d75f5f"),
# NB Systray is incompatible with Wayland, consider using StatusNotifier instead # NB Systray is incompatible with Wayland, consider using StatusNotifier instead
@ -290,6 +326,19 @@ floating_layout = layout.Floating(
Match(title="pinentry"), # GPG key password entry Match(title="pinentry"), # GPG key password entry
] ]
) )
@hook.subscribe.client_new
def bind_group(spawned_window):
moved = False
for group, windows in bind_windows.items():
for window in windows:
if not moved and spawned_window.get_wm_class() is not None and window in spawned_window.get_wm_class():
spawned_window.togroup(group, switch_group=True)
moved = True
if not moved:
logger.warning(f"Window with Classname(s) {spawned_window.get_wm_class()} is not assigned to a group")
auto_fullscreen = True auto_fullscreen = True
focus_on_window_activation = "smart" focus_on_window_activation = "smart"
reconfigure_screens = True reconfigure_screens = True