]> danix's work - publisher.git/commitdiff
feat: add typora_args config field for Wayland launch flags
authorDanilo M. <redacted>
Sun, 3 May 2026 13:35:46 +0000 (15:35 +0200)
committerDanilo M. <redacted>
Sun, 3 May 2026 13:35:46 +0000 (15:35 +0200)
Allows passing extra CLI args (e.g. --ozone-platform=wayland) to Typora
at launch without baking them into the binary path.

Co-Authored-By: Claude Sonnet 4.6 <redacted>
core/config.py
ui/main_window.py
ui/setup_dialog.py
ui/translation_view.py

index 76ea3ba707cd202b2ad3fd0e2bfc4d3298769123..68a8b8789c0688783f8d35488d6143a7944b69d3 100644 (file)
@@ -10,6 +10,7 @@ class Config:
     blog_repo: str = ""
     transart_script: str = "/home/danix/bin/transart.py"
     typora_bin: str = "typora"
+    typora_args: str = ""
     font_size: int = 10
 
     def is_complete(self) -> bool:
@@ -21,6 +22,7 @@ class Config:
         doc.add("blog_repo", self.blog_repo)
         doc.add("transart_script", self.transart_script)
         doc.add("typora_bin", self.typora_bin)
+        doc.add("typora_args", self.typora_args)
         doc.add("font_size", self.font_size)
         path.write_text(tomlkit.dumps(doc))
 
@@ -34,5 +36,6 @@ class Config:
             blog_repo=str(data.get("blog_repo", defaults.blog_repo)),
             transart_script=str(data.get("transart_script", defaults.transart_script)),
             typora_bin=str(data.get("typora_bin", defaults.typora_bin)),
+            typora_args=str(data.get("typora_args", defaults.typora_args)),
             font_size=int(data.get("font_size", defaults.font_size)),
         )
index cc3326f54ebec41acdfdab5828ca458e4046d375..b29ff57f39905837c0094e61898b7979eca451a3 100644 (file)
@@ -89,6 +89,7 @@ class MainWindow(QMainWindow):
         self._translation_view = TranslationView(
             self.config.transart_script,
             self.config.typora_bin,
+            self.config.typora_args,
             parent=self,
         )
         self._translation_view.push_master.connect(lambda: self._do_git_push("master"))
@@ -208,7 +209,8 @@ class MainWindow(QMainWindow):
         self._stack.setCurrentIndex(self._page_detail)
 
     def _do_open_typora(self, article: Article):
-        subprocess.Popen([self.config.typora_bin, str(article.path)])
+        _args = self.config.typora_args.split() if self.config.typora_args else []
+        subprocess.Popen([self.config.typora_bin, *_args, str(article.path)])
 
     def _do_open_frontmatter(self, article: Article):
         from ui.frontmatter_editor import FrontmatterEditor
@@ -221,7 +223,8 @@ class MainWindow(QMainWindow):
         dlg = NewArticleDialog(Path(self.config.blog_repo), self)
         if dlg.exec() and dlg.created_path:
             self._refresh_articles()
-            subprocess.Popen([self.config.typora_bin, str(dlg.created_path)])
+            _args = self.config.typora_args.split() if self.config.typora_args else []
+            subprocess.Popen([self.config.typora_bin, *_args, str(dlg.created_path)])
 
     def _do_translate(self, article: Article):
         self._translation_view.start_translation(article)
index 4a8c6b75866941038c580151017b2947a2e9bbe8..d99696e447f113454f1762b9ed149e8fd20169bc 100644 (file)
@@ -33,6 +33,9 @@ class SetupDialog(QDialog):
         self._typora = QLineEdit(self._config.typora_bin)
         form.addRow("Typora bin:", self._typora)
 
+        self._typora_args = QLineEdit(self._config.typora_args)
+        form.addRow("Typora args:", self._typora_args)
+
         layout.addLayout(form)
 
         btns = QHBoxLayout()
@@ -51,5 +54,6 @@ class SetupDialog(QDialog):
         self._config.blog_repo = self._blog_repo.text().strip()
         self._config.transart_script = self._transart.text().strip()
         self._config.typora_bin = self._typora.text().strip()
+        self._config.typora_args = self._typora_args.text().strip()
         self._config.save()
         self.accept()
index 6ce53ddc7b44fb41a3e949080dfc2023dd783679..cf72ce528e50cdf16973639011fb08e38e753c22 100644 (file)
@@ -18,10 +18,11 @@ class TranslationView(QWidget):
     push_master = pyqtSignal()
     publish = pyqtSignal()
 
-    def __init__(self, transart_script: str, typora_bin: str, parent=None):
+    def __init__(self, transart_script: str, typora_bin: str, typora_args: str = "", parent=None):
         super().__init__(parent)
         self._transart_script = transart_script
         self._typora_bin = typora_bin
+        self._typora_args = typora_args
         self._article: Article | None = None
         self._worker: TranslationWorker | None = None
         self._output_path: str = ""
@@ -106,7 +107,8 @@ class TranslationView(QWidget):
 
     def _open_typora(self):
         if self._output_path:
-            subprocess.Popen([self._typora_bin, self._output_path])
+            _args = self._typora_args.split() if self._typora_args else []
+            subprocess.Popen([self._typora_bin, *_args, self._output_path])
 
     def _retry(self):
         if self._article: