cli-tools-kit 0.6.1__tar.gz → 0.6.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/PKG-INFO +1 -1
  2. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit/gui_installer.py +30 -0
  3. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit.egg-info/PKG-INFO +1 -1
  4. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/pyproject.toml +1 -1
  5. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/LICENSE +0 -0
  6. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/README.md +0 -0
  7. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit/__init__.py +0 -0
  8. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit/__main__.py +0 -0
  9. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit/advertise.py +0 -0
  10. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit/cron_installer.py +0 -0
  11. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit/host.py +0 -0
  12. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit/identity.py +0 -0
  13. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit/onboarding.py +0 -0
  14. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit/skills.py +0 -0
  15. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit/sources.py +0 -0
  16. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit/taxonomy/__init__.py +0 -0
  17. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit/taxonomy/build.py +0 -0
  18. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit/taxonomy/capability.py +0 -0
  19. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit/taxonomy/cluster.py +0 -0
  20. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit/taxonomy/corpus.py +0 -0
  21. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit/taxonomy/embedder.py +0 -0
  22. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit/taxonomy/groups.py +0 -0
  23. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit/taxonomy/llm_groups.py +0 -0
  24. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit/tool_installer.py +0 -0
  25. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit/tui_installer.py +0 -0
  26. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit.egg-info/SOURCES.txt +0 -0
  27. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit.egg-info/dependency_links.txt +0 -0
  28. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit.egg-info/entry_points.txt +0 -0
  29. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit.egg-info/requires.txt +0 -0
  30. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/cli_tools_kit.egg-info/top_level.txt +0 -0
  31. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/setup.cfg +0 -0
  32. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/tests/test_capability_groups.py +0 -0
  33. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/tests/test_cron_installer.py +0 -0
  34. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/tests/test_host.py +0 -0
  35. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/tests/test_identity.py +0 -0
  36. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/tests/test_llm_groups.py +0 -0
  37. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/tests/test_skills.py +0 -0
  38. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/tests/test_sources.py +0 -0
  39. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/tests/test_taxonomy_cluster.py +0 -0
  40. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/tests/test_tool_installer.py +0 -0
  41. {cli_tools_kit-0.6.1 → cli_tools_kit-0.6.3}/tests/test_tui_installer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cli-tools-kit
3
- Version: 0.6.1
3
+ Version: 0.6.3
4
4
  Summary: Installer protocol + helpers for self-installing Python CLI/GUI tools (desktop shortcuts, bash aliases, cron entries), plus reusable tkinter and curses installer screens
5
5
  Author: Steffen Probst
6
6
  License: MIT License
@@ -1794,6 +1794,7 @@ class InstallerApp:
1794
1794
  self.root.withdraw() # Hide until properly sized
1795
1795
  self.tools = tools
1796
1796
  self.root.title(WINDOW_TITLE)
1797
+ self._set_window_icon()
1797
1798
  saved_theme = load_config().get("theme", "ocean")
1798
1799
  self.current_theme = saved_theme if saved_theme in self.THEMES else "ocean"
1799
1800
 
@@ -1835,6 +1836,35 @@ class InstallerApp:
1835
1836
  # warning so the two don't fight over the log/dialog at the same tick.
1836
1837
  self.root.after(200, self._maybe_auto_update_on_startup)
1837
1838
 
1839
+ # Standard freedesktop icon sizes. wm iconphoto silently fails to set
1840
+ # _NET_WM_ICON at all when handed only a source-resolution (e.g. 512x512)
1841
+ # image on some Tk/X11 combinations, so multiple smaller sizes are passed
1842
+ # and the window manager picks the one it wants.
1843
+ _ICON_SIZES = (16, 24, 32, 48, 64, 128)
1844
+
1845
+ def _set_window_icon(self) -> None:
1846
+ """Apply SELF_DESKTOP_ICON to the live window (taskbar/titlebar).
1847
+
1848
+ SELF_DESKTOP_ICON is otherwise only written into the .desktop file's
1849
+ Icon= line, so a run straight from a terminal showed the generic Tk
1850
+ icon instead. Only an absolute image path can be used here (a
1851
+ freedesktop icon *name* has no file to load without a theme lookup).
1852
+ """
1853
+ icon_path = SELF_DESKTOP_ICON
1854
+ if not icon_path or not os.path.isabs(icon_path) or not os.path.isfile(icon_path):
1855
+ return
1856
+ try:
1857
+ if _HAVE_PIL:
1858
+ source = Image.open(icon_path).convert("RGBA")
1859
+ images = [ImageTk.PhotoImage(source.resize((size, size), Image.LANCZOS))
1860
+ for size in self._ICON_SIZES]
1861
+ else:
1862
+ images = [tk.PhotoImage(file=icon_path)]
1863
+ self.root.iconphoto(True, *images)
1864
+ self._icon_photos = images # keep references; Tk drops the icon otherwise
1865
+ except Exception:
1866
+ pass # cosmetic only; never block startup over a bad/unsupported icon
1867
+
1838
1868
  def _get_primary_monitor_geometry(self) -> tuple[int, int, int, int]:
1839
1869
  """Get primary monitor geometry (x, y, width, height). Falls back to tkinter defaults."""
1840
1870
  try:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cli-tools-kit
3
- Version: 0.6.1
3
+ Version: 0.6.3
4
4
  Summary: Installer protocol + helpers for self-installing Python CLI/GUI tools (desktop shortcuts, bash aliases, cron entries), plus reusable tkinter and curses installer screens
5
5
  Author: Steffen Probst
6
6
  License: MIT License
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "cli-tools-kit"
7
- version = "0.6.1"
7
+ version = "0.6.3"
8
8
  description = "Installer protocol + helpers for self-installing Python CLI/GUI tools (desktop shortcuts, bash aliases, cron entries), plus reusable tkinter and curses installer screens"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
File without changes
File without changes
File without changes