aboutsummaryrefslogtreecommitdiffstats
path: root/sb_builder/__main__.py
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-19 19:12:05 +0200
committerDanilo M. <danix@danix.xyz>2026-10-19 19:12:05 +0200
commit6fdb31d538269136415ce71cbf58de6017f95463 (patch)
treea37e51bdaf4783bce22cf121061d71e69ea2a862 /sb_builder/__main__.py
parentfb64c88bb8672ee9bdb8172eec0252966d67404a (diff)
downloadsb-builder-6fdb31d538269136415ce71cbf58de6017f95463.tar.gz
sb-builder-6fdb31d538269136415ce71cbf58de6017f95463.zip
Add the PyQt6 GUI: Dashboard, Jobs, VM control, notifications
All VM access goes through remote.py (ssh with a shared ControlMaster, local virsh). The main window polls jobs, backs off while ssh is down, checks the libvirt domain and offers Start or Resume, and sends freedesktop notifications when a job ends or the VM comes up. The Jobs tab streams a job's log with job-follow and resumes at the last offset after a drop. Config is TOML, validated against built-in defaults. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'sb_builder/__main__.py')
-rw-r--r--sb_builder/__main__.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/sb_builder/__main__.py b/sb_builder/__main__.py
new file mode 100644
index 0000000..5a78b64
--- /dev/null
+++ b/sb_builder/__main__.py
@@ -0,0 +1,41 @@
+# sb-builder - entry point
+# Copyright (C) 2026 Danilo M. <danix@danix.xyz>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+"""Entry point: python3 -m sb_builder."""
+
+import sys
+
+from PyQt6.QtWidgets import QApplication, QMessageBox
+
+from . import config
+from .mainwindow import MainWindow
+from .remote import Remote
+
+
+def main():
+ app = QApplication(sys.argv)
+ app.setApplicationName("sb-builder")
+ cfg, err = config.load()
+ w = MainWindow(cfg, Remote(cfg))
+ w.resize(1100, 700)
+ w.show()
+ if err:
+ QMessageBox.warning(w, "Config error", f"{err}\nUsing defaults.")
+ return app.exec()
+
+
+if __name__ == "__main__":
+ sys.exit(main())