Skip to content

Commit

Permalink
feat: add system information to about and log
Browse files Browse the repository at this point in the history
  • Loading branch information
dynobo committed Aug 5, 2024
1 parent a72de10 commit d294412
Showing 1 changed file with 46 additions and 2 deletions.
48 changes: 46 additions & 2 deletions myhumbleself/app.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import argparse
import logging
import os
import platform
import time
from pathlib import Path
from statistics import mean
Expand All @@ -20,8 +21,6 @@

logger = logging.getLogger(__name__)

# TODO: Print system info to log and about dialog


def init_logger(log_level: str = "WARNING") -> None:
"""Initializes a logger with a specified log level.
Expand Down Expand Up @@ -111,6 +110,7 @@ def on_activate(self, app: Gtk.Application) -> None:
self.about_dialog = self.builder.get_object("about_dialog")
self.about_button = self.builder.get_object("about_button")
self.about_dialog.set_logo_icon_name("myhumbleself")
self.about_dialog.set_system_information(self.get_system_info())
self.about_button.connect("clicked", lambda _: self.about_dialog.present())
self.debug_mode_button = self.builder.get_object("debug_mode_button")
if self.loglevel_debug:
Expand Down Expand Up @@ -422,6 +422,50 @@ def draw_image(self, widget: Gtk.Widget) -> None:
if len(self.fps) > self.fps_window:
self.fps.pop(0)

def get_system_info(self) -> str:
xdg_session_type = os.environ.get("XDG_SESSION_TYPE", "").lower()
has_wayland_display_env = bool(os.environ.get("WAYLAND_DISPLAY", ""))
is_wayland = "wayland" in xdg_session_type or has_wayland_display_env

linux_info = platform.freedesktop_os_release()

text = f"Distro: {linux_info.get('NAME', 'Unknown')} "
text += f"({linux_info.get('BUILD_ID', 'Unknown')})\n"
text += f"DE: {self.get_desktop_environment()}\n"
text += f"Wayland: {is_wayland}\n"
text += f"Flatpak: {os.getenv('FLATPAK_ID') is not None}\n"
text += f"Python: {platform.python_version()}\n"
text += f"GTK: {Gtk.get_major_version()}.{Gtk.get_minor_version()}\n"

logger.debug("System information:\n%s", text)
return text

def get_desktop_environment(self) -> str: # noqa: PLR0911 # too many returns
"""Detect used desktop environment (Linux)."""
kde_full_session = os.environ.get("KDE_FULL_SESSION", "").lower()
xdg_current_desktop = os.environ.get("XDG_CURRENT_DESKTOP", "").lower()
desktop_session = os.environ.get("DESKTOP_SESSION", "").lower()
gnome_desktop_session_id = os.environ.get("GNOME_DESKTOP_SESSION_ID", "")
hyprland_instance_signature = os.environ.get("HYPRLAND_INSTANCE_SIGNATURE", "")

if gnome_desktop_session_id == "this-is-deprecated":
gnome_desktop_session_id = ""

if gnome_desktop_session_id or "gnome" in xdg_current_desktop:
return "Gnome"
if kde_full_session or "kde-plasma" in desktop_session:
return "KDE"
if "sway" in xdg_current_desktop or "sway" in desktop_session:
return "Sway"
if "unity" in xdg_current_desktop:
return "Unity"
if hyprland_instance_signature:
return "Hyprland"
if "awesome" in xdg_current_desktop:
return "Awesome"

return "Unknown"


def _parse_args() -> argparse.Namespace:
"""Configure and process cli arguments.
Expand Down

0 comments on commit d294412

Please sign in to comment.