ixlab-sshui 1.2.1__tar.gz → 1.2.2__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 (24) hide show
  1. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/PKG-INFO +5 -1
  2. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/README.md +4 -0
  3. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/ixlab_sshui.egg-info/PKG-INFO +5 -1
  4. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/pyproject.toml +1 -1
  5. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/sshui/__init__.py +31 -1
  6. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/LICENSE +0 -0
  7. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/ixlab_sshui.egg-info/SOURCES.txt +0 -0
  8. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/ixlab_sshui.egg-info/dependency_links.txt +0 -0
  9. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/ixlab_sshui.egg-info/entry_points.txt +0 -0
  10. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/ixlab_sshui.egg-info/requires.txt +0 -0
  11. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/ixlab_sshui.egg-info/top_level.txt +0 -0
  12. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/setup.cfg +0 -0
  13. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/sshui/about_dialog.py +0 -0
  14. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/sshui/constants.py +0 -0
  15. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/sshui/host_panel.py +0 -0
  16. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/sshui/key_content_dialog.py +0 -0
  17. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/sshui/key_dialog.py +0 -0
  18. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/sshui/key_panel.py +0 -0
  19. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/sshui/main_window.py +0 -0
  20. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/sshui/option_dialog.py +0 -0
  21. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/sshui/sshui.svg +0 -0
  22. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/sshui/tag_dialog.py +0 -0
  23. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/sshui/terminal_window.py +0 -0
  24. {ixlab_sshui-1.2.1 → ixlab_sshui-1.2.2}/sshui/text_prompt_dialog.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ixlab-sshui
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary: PyQt6 UI for browsing and tagging SSH configs via sshcore.
5
5
  Author-email: Iacopo Palazzi <iacopo.palazzi@gmail.com>
6
6
  License: MIT
@@ -19,6 +19,10 @@ Dynamic: license-file
19
19
 
20
20
  `sshui` is a PyQt6-based graphical frontend for the `sshcore` engine. It gives you a fast, tag-aware explorer for SSH configuration files, complete with host grouping, editing dialogs, and quick copy of SSH commands—without touching the command line.
21
21
 
22
+ ## What's New in 1.2.2
23
+
24
+ - **macOS Dock icon** — the app icon now also shows in the macOS Dock (set via AppKit at startup), not just the menu-bar tray.
25
+
22
26
  ## What's New in 1.2.1
23
27
 
24
28
  - **Application icon** — the app now ships and displays its own icon (window, dock/taskbar, and system tray).
@@ -2,6 +2,10 @@
2
2
 
3
3
  `sshui` is a PyQt6-based graphical frontend for the `sshcore` engine. It gives you a fast, tag-aware explorer for SSH configuration files, complete with host grouping, editing dialogs, and quick copy of SSH commands—without touching the command line.
4
4
 
5
+ ## What's New in 1.2.2
6
+
7
+ - **macOS Dock icon** — the app icon now also shows in the macOS Dock (set via AppKit at startup), not just the menu-bar tray.
8
+
5
9
  ## What's New in 1.2.1
6
10
 
7
11
  - **Application icon** — the app now ships and displays its own icon (window, dock/taskbar, and system tray).
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ixlab-sshui
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary: PyQt6 UI for browsing and tagging SSH configs via sshcore.
5
5
  Author-email: Iacopo Palazzi <iacopo.palazzi@gmail.com>
6
6
  License: MIT
@@ -19,6 +19,10 @@ Dynamic: license-file
19
19
 
20
20
  `sshui` is a PyQt6-based graphical frontend for the `sshcore` engine. It gives you a fast, tag-aware explorer for SSH configuration files, complete with host grouping, editing dialogs, and quick copy of SSH commands—without touching the command line.
21
21
 
22
+ ## What's New in 1.2.2
23
+
24
+ - **macOS Dock icon** — the app icon now also shows in the macOS Dock (set via AppKit at startup), not just the menu-bar tray.
25
+
22
26
  ## What's New in 1.2.1
23
27
 
24
28
  - **Application icon** — the app now ships and displays its own icon (window, dock/taskbar, and system tray).
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ixlab-sshui"
3
- version = "1.2.1"
3
+ version = "1.2.2"
4
4
  description = "PyQt6 UI for browsing and tagging SSH configs via sshcore."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -5,7 +5,7 @@ from __future__ import annotations
5
5
  import sys
6
6
  from pathlib import Path
7
7
 
8
- from PyQt6.QtCore import QTimer
8
+ from PyQt6.QtCore import QTimer, QBuffer, QByteArray
9
9
  from PyQt6.QtGui import QIcon, QAction
10
10
  from PyQt6.QtWidgets import QApplication, QSystemTrayIcon, QMenu
11
11
 
@@ -34,6 +34,35 @@ def _patch_macos_app_menu(name: str) -> None:
34
34
  print(f"[sshui] could not patch macOS app menu: {exc}", file=sys.stderr)
35
35
 
36
36
 
37
+ def _set_macos_dock_icon(icon: QIcon) -> None:
38
+ """Set the macOS Dock icon.
39
+
40
+ ``QApplication.setWindowIcon`` does not affect the Dock for a console-script
41
+ app, so we hand the icon to AppKit explicitly. The SVG is rendered through
42
+ Qt to PNG bytes because ``NSImage`` does not read SVG reliably.
43
+ """
44
+ if sys.platform != "darwin":
45
+ return
46
+ try:
47
+ from AppKit import NSApplication, NSImage
48
+
49
+ pixmap = icon.pixmap(512, 512)
50
+ if pixmap.isNull():
51
+ return
52
+ data = QByteArray()
53
+ buffer = QBuffer(data)
54
+ buffer.open(QBuffer.OpenModeFlag.WriteOnly)
55
+ pixmap.save(buffer, "PNG")
56
+ buffer.close()
57
+
58
+ ns_image = NSImage.alloc().initWithData_(bytes(data))
59
+ if ns_image is None:
60
+ return
61
+ NSApplication.sharedApplication().setApplicationIconImage_(ns_image)
62
+ except Exception as exc: # pragma: no cover - platform/runtime guard
63
+ print(f"[sshui] could not set macOS dock icon: {exc}", file=sys.stderr)
64
+
65
+
37
66
  def main() -> int:
38
67
  """Entry point used by the `sshui` console script."""
39
68
  app = QApplication(sys.argv)
@@ -43,6 +72,7 @@ def main() -> int:
43
72
  icon_path = Path(__file__).parent / "sshui.svg"
44
73
  icon = QIcon(str(icon_path))
45
74
  app.setWindowIcon(icon)
75
+ _set_macos_dock_icon(icon)
46
76
 
47
77
  window = MainWindow()
48
78
  window.setWindowIcon(icon)
File without changes
File without changes
File without changes