General updates and fixes, ghostty terminal emulator, wallust colors, different wallpaper set at night

This commit is contained in:
Kevin Alberts 2025-07-21 00:54:30 +02:00
parent 1e65025045
commit 12238c2b6c
5 changed files with 46 additions and 23 deletions

View file

@ -25,7 +25,7 @@
# SOFTWARE. # SOFTWARE.
from libqtile.config import Key, Screen, Group, Drag, Click from libqtile.config import Key, Screen, Group, Drag, Click
from libqtile.command import lazy from libqtile.lazy import lazy
from libqtile import layout, bar, widget from libqtile import layout, bar, widget

View file

@ -1,5 +1,5 @@
from libqtile import layout as libqtile_layout, layout, bar, widget from libqtile import layout as libqtile_layout, layout, bar, widget
from libqtile.command import lazy from libqtile.lazy import lazy
from libqtile.config import Key, Group, Screen, Drag, Click, Match from libqtile.config import Key, Group, Screen, Drag, Click, Match

View file

@ -15,12 +15,13 @@ class Config(BaseConfig):
inactive_dark = "#333333" inactive_dark = "#333333"
# Default Applications # Default Applications
app_terminal = "terminator" app_terminal = "ghostty"
app_terminal_init = "ghostty --gtk-single-instance=true --quit-after-last-window-close=false --initial-window=true"
app_launcher = "/home/kevin/bin/dmenu_wal.sh" app_launcher = "/home/kevin/bin/dmenu_wal.sh"
web_browser = "firefox" web_browser = "firefox"
file_manager = "thunar" file_manager = "thunar"
app_chat = "/usr/bin/rambox" app_chat = "/usr/bin/rambox"
app_irc = "quasselclient" app_irc = ""
app_mail = "thunderbird" app_mail = "thunderbird"
app_music = "spotify" app_music = "spotify"
cmd_brightness_up = "sudo /usr/bin/xbacklight -inc 10" cmd_brightness_up = "sudo /usr/bin/xbacklight -inc 10"
@ -49,7 +50,8 @@ class Config(BaseConfig):
# Images # Images
desktop_bg = "/home/kevin/Pictures/wallpapers/desktop.png" desktop_bg = "/home/kevin/Pictures/wallpapers/desktop.png"
desktop_bg_folder = "/home/kevin/Pictures/wallpapers/desktop_rotation" desktop_bg_folder = "/home/kevin/Pictures/wallpapers/desktop_rotation/day"
desktop_bg_night_folder = "/home/kevin/Pictures/wallpapers/desktop_rotation/night"
# desktop_bg_override = "/home/kevin/Pictures/safe_wallpaper.jpg" # desktop_bg_override = "/home/kevin/Pictures/safe_wallpaper.jpg"
applauncher_image = "/home/kevin/.config/qtile/kuro/resources/arch.png" applauncher_image = "/home/kevin/.config/qtile/kuro/resources/arch.png"
custom_layout_icon_paths = ['/home/kevin/.config/qtile/kuro/resources/layout_icons/'] custom_layout_icon_paths = ['/home/kevin/.config/qtile/kuro/resources/layout_icons/']

View file

@ -1,6 +1,7 @@
import json import json
import os import os
import random import random
import datetime
# Initialize logging # Initialize logging
from libqtile.log_utils import logger from libqtile.log_utils import logger
@ -8,7 +9,8 @@ from libqtile.log_utils import logger
logger.error("Importing qtile theme requirements...") logger.error("Importing qtile theme requirements...")
from libqtile.config import Key, Screen, Group, Drag, Click, Match from libqtile.config import Key, Screen, Group, Drag, Click, Match
from libqtile.command import lazy from libqtile.command.base import expose_command
from libqtile.lazy import lazy
from libqtile import layout, bar, widget, qtile from libqtile import layout, bar, widget, qtile
logger.error("Importing theme util functions...") logger.error("Importing theme util functions...")
@ -248,7 +250,7 @@ class Kuro(BaseTheme):
# http://fontawesome.io/cheatsheet # http://fontawesome.io/cheatsheet
groups.append(Group("", spawn=Config.get('web_browser', "true"))) groups.append(Group("", spawn=Config.get('web_browser', "true")))
groups.append(Group("", spawn=Config.get('app_terminal', "true"))) groups.append(Group("", spawn=Config.get('app_terminal_init', "true")))
groups.append(Group("")) groups.append(Group(""))
groups.append(Group("", spawn=Config.get('app_chat', "true"))) groups.append(Group("", spawn=Config.get('app_chat', "true")))
groups.append(Group("", spawn=Config.get('app_irc', "true"))) groups.append(Group("", spawn=Config.get('app_irc', "true")))
@ -612,7 +614,8 @@ class Kuro(BaseTheme):
qtile.theme_instance = self qtile.theme_instance = self
if self.current_wallpaper: if self.current_wallpaper:
p = utils.execute_once(["wal", "-n", "-i", "{}".format(self.current_wallpaper)]) #p = utils.execute_once(["wal", "-n", "-i", "{}".format(self.current_wallpaper)])
p = utils.execute_once(["wallust", "run", "{}".format(self.current_wallpaper)])
p.wait() p.wait()
else: else:
wallpaper = None wallpaper = None
@ -640,8 +643,8 @@ class Kuro(BaseTheme):
self.log_info("Starting xiccd color profile manager...") self.log_info("Starting xiccd color profile manager...")
utils.execute_once("xiccd") utils.execute_once("xiccd")
self.log_info("Starting KDE connect daemon...") #self.log_info("Starting KDE connect daemon...")
utils.execute_once("/usr/lib/kdeconnectd") #utils.execute_once("/usr/lib/kdeconnectd")
self.log_info("Starting KDE connect indicator...") self.log_info("Starting KDE connect indicator...")
utils.execute_once("/usr/bin/kdeconnect-indicator") utils.execute_once("/usr/bin/kdeconnect-indicator")
@ -784,16 +787,26 @@ class Kuro(BaseTheme):
def update_wallpaper(qtile): def update_wallpaper(qtile):
wallpapers = [] wallpapers = []
wallpaper_dir = Config.get("desktop_bg_folder", "") wallpaper_dir = Config.get("desktop_bg_folder", "")
# Use a wallpaper from the night folder after 9PM and before 6AM
wallpaper_night_dir = Config.get("desktop_bg_night_folder", "")
if wallpaper_night_dir and os.path.isdir(wallpaper_night_dir):
cur_time = datetime.datetime.now()
if cur_time.hour > 21 or cur_time.hour < 6:
wallpaper_dir = wallpaper_night_dir
try: try:
wallpapers = [x for x in os.listdir(wallpaper_dir) if ".vertical." not in x] wallpapers = [x for x in os.listdir(wallpaper_dir) if ".vertical." not in x]
except os.error as e: except os.error as e:
logger.warning("Could not load wallpapers from directory: {}".format(e)) logger.warning("Could not load wallpapers from directory: {}".format(e))
if wallpapers: if wallpapers:
if Config.get("desktop_bg_override", False): if Config.get("desktop_bg_override", False):
qtile.theme_instance.current_wallpaper = Config.get("desktop_bg_override", "") qtile.theme_instance.current_wallpaper = Config.get("desktop_bg_override", "")
else: else:
qtile.theme_instance.current_wallpaper = os.path.join(wallpaper_dir, random.choice(wallpapers)) qtile.theme_instance.current_wallpaper = os.path.join(wallpaper_dir, random.choice(wallpapers))
logger.warning("Selected new wallpaper: {}".format(qtile.theme_instance.current_wallpaper))
Kuro.set_wallpaper(qtile, qtile.theme_instance.current_wallpaper) Kuro.set_wallpaper(qtile, qtile.theme_instance.current_wallpaper)
else: else:
utils.execute_once("nitrogen --restore") utils.execute_once("nitrogen --restore")
@ -838,7 +851,8 @@ class Kuro(BaseTheme):
:type qtile: libqtile.manager.Qtile :type qtile: libqtile.manager.Qtile
""" """
if qtile.theme_instance.current_wallpaper: if qtile.theme_instance.current_wallpaper:
p = utils.execute(["wal", "-n", "-i", "{}".format(qtile.theme_instance.current_wallpaper)]) #p = utils.execute(["wal", "-n", "-i", "{}".format(qtile.theme_instance.current_wallpaper)])
p = utils.execute(["wallust", "run", "{}".format(qtile.theme_instance.current_wallpaper)])
p.wait() p.wait()
colors = None colors = None

View file

@ -11,6 +11,7 @@ import six
import unicodedata import unicodedata
from libqtile import bar, pangocffi from libqtile import bar, pangocffi
from libqtile.log_utils import logger from libqtile.log_utils import logger
from libqtile.command.base import expose_command
from libqtile.widget import base from libqtile.widget import base
from libqtile.widget.base import ORIENTATION_HORIZONTAL from libqtile.widget.base import ORIENTATION_HORIZONTAL
from libqtile.widget.battery import default_icon_path, load_battery, BatteryState from libqtile.widget.battery import default_icon_path, load_battery, BatteryState
@ -242,18 +243,19 @@ class DualPaneTextboxBase(base._Widget):
self.bar.draw() self.bar.draw()
self.changed = False self.changed = False
def cmd_set_font(self, font=base.UNSPECIFIED, fontsize_left=base.UNSPECIFIED, fontsize_right=base.UNSPECIFIED, fontshadow=base.UNSPECIFIED): @expose_command()
def set_font(self, font=None, fontsize_left=None, fontsize_right=None, fontshadow=None):
""" """
Change the font used by this widget. If font is None, the current Change the font used by this widget. If font is None, the current
font is used. font is used.
""" """
if font is not base.UNSPECIFIED: if font is not None:
self.font = font self.font = font
if fontsize_left is not base.UNSPECIFIED: if fontsize_left is not None:
self.fontsize_left = fontsize_left self.fontsize_left = fontsize_left
if fontsize_right is not base.UNSPECIFIED: if fontsize_right is not None:
self.fontsize_right = fontsize_right self.fontsize_right = fontsize_right
if fontshadow is not base.UNSPECIFIED: if fontshadow is not None:
self.fontshadow = fontshadow self.fontshadow = fontshadow
self.bar.draw() self.bar.draw()
@ -354,7 +356,8 @@ class MediaWidget(base.InLoopPollText):
# logger.warning("{}") # logger.warning("{}")
pass pass
def cmd_update_custom_player(self, player_name, data): @expose_command()
def update_custom_player(self, player_name, data):
# Update firefox player # Update firefox player
if player_name.startswith("firefox"): if player_name.startswith("firefox"):
if data['playing'] and data['muted']: if data['playing'] and data['muted']:
@ -538,7 +541,7 @@ class AudioVisualizerWidget(_Graph):
class KuroCurrentLayoutIcon(CurrentLayoutIcon): class KuroCurrentLayoutIcon(CurrentLayoutIcon):
def _get_layout_names(self): def _get_layout_names(self):
names = super(KuroCurrentLayoutIcon, self)._get_layout_names() names = list(super(KuroCurrentLayoutIcon, self)._get_layout_names())
from kuro.utils import layouts as kuro_layouts from kuro.utils import layouts as kuro_layouts
from libqtile.layout.base import Layout from libqtile.layout.base import Layout
@ -550,7 +553,7 @@ class KuroCurrentLayoutIcon(CurrentLayoutIcon):
] ]
names.extend(klayouts) names.extend(klayouts)
return list(set(names)) return set(names)
class KuroTaskList(TaskList): class KuroTaskList(TaskList):
@ -1321,18 +1324,22 @@ class VolumeInfoWidget(DualPaneTextboxBase):
self.update() self.update()
def cmd_increase_vol(self): @expose_command()
def increase_vol(self):
# Emulate button press. # Emulate button press.
self.button_press(0, 0, BUTTON_UP) self.button_press(0, 0, BUTTON_UP)
def cmd_decrease_vol(self): @expose_command()
def decrease_vol(self):
# Emulate button press. # Emulate button press.
self.button_press(0, 0, BUTTON_DOWN) self.button_press(0, 0, BUTTON_DOWN)
def cmd_mute(self): @expose_command()
def mute(self):
# Emulate button press. # Emulate button press.
self.button_press(0, 0, BUTTON_MUTE) self.button_press(0, 0, BUTTON_MUTE)
def cmd_run_app(self): @expose_command()
def run_app(self):
# Emulate button press. # Emulate button press.
self.button_press(0, 0, BUTTON_RIGHT) self.button_press(0, 0, BUTTON_RIGHT)