Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions configs/example.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
"obs": {
"enabled": false,
"auto_launch": false,
"launch_as_admin": true,
"exe_path": "C:/Path/To/OBS/obs64.exe",
"working_dir": "C:/Path/To/OBS",
"args": "--minimize-to-tray",
Expand Down
1 change: 1 addition & 0 deletions playcue/config/loader.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,7 @@ def _parse_obs(value: object) -> OBSConfig:
return OBSConfig(
enabled=bool(value.get("enabled", False)),
auto_launch=bool(value.get("auto_launch", False)),
launch_as_admin=bool(value.get("launch_as_admin", True)),
exe_path=str(value.get("exe_path", "")).strip(),
working_dir=str(value.get("working_dir", "")).strip(),
args=str(value.get("args", "")).strip(),
Expand Down
1 change: 1 addition & 0 deletions playcue/config/serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ def obs_config_to_dict(config: OBSConfig) -> dict[str, object]:
return {
"enabled": config.enabled,
"auto_launch": config.auto_launch,
"launch_as_admin": config.launch_as_admin,
"exe_path": config.exe_path,
"working_dir": config.working_dir,
"args": config.args,
Expand Down
1 change: 1 addition & 0 deletions playcue/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class LoginBonusConfig:
class OBSConfig:
enabled: bool = False
auto_launch: bool = False
launch_as_admin: bool = True
exe_path: str = ""
working_dir: str = ""
args: str = ""
Expand Down
5 changes: 3 additions & 2 deletions playcue/ui/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -614,6 +614,7 @@ def update_obs_settings(self, obs_config: OBSConfig) -> None:
"websocket_port": obs_config.websocket_port,
"websocket_password": obs_config.websocket_password,
"auto_launch": obs_config.auto_launch,
"launch_as_admin": obs_config.launch_as_admin,
"auto_start_recording_on_game_launch": obs_config.auto_start_recording_on_game_launch,
"auto_stop_recording_on_game_exit": obs_config.auto_stop_recording_on_game_exit,
}
Expand Down Expand Up @@ -650,7 +651,7 @@ def prepare_obs_on_startup(self) -> None:
def worker() -> None:
try:
self.obs_controller.prepare(
launch_as_admin=True,
launch_as_admin=self.obs_controller.config.launch_as_admin,
show_window=True,
show_errors=False,
connect_timeout_seconds=5,
Expand Down Expand Up @@ -795,7 +796,7 @@ def _watch_process(self) -> None:
return
watcher.tick()
if self.watcher is watcher and not watcher.stopped:
self.root.after(5000, self._watch_process)
self.root.after(1000, self._watch_process)

def _refresh_links(self) -> None:
if self.link_body is None:
Expand Down
4 changes: 4 additions & 0 deletions playcue/ui/i18n.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@
"obs_enable_desc": "OBS録画機能を使う場合だけ有効にします。",
"obs_auto_launch": "OBSを自動起動する",
"obs_auto_launch_desc": "ゲーム起動前に OBS を自動起動します。",
"obs_launch_as_admin": "OBSを管理者権限で起動する",
"obs_launch_as_admin_desc": "OBS を管理者権限で起動します。ゲームキャプチャに管理者権限が必要な場合は有効にしてください。",
"obs_auto_start_recording": "ゲーム開始時に録画を自動開始する",
"obs_auto_start_recording_desc": "ゲーム本体プロセスを検知したら録画を開始します。",
"obs_auto_stop_recording": "ゲーム終了時に録画を自動停止する",
Expand Down Expand Up @@ -220,6 +222,8 @@
"obs_enable_desc": "Enable this only when using OBS recording.",
"obs_auto_launch": "Launch OBS automatically",
"obs_auto_launch_desc": "Automatically launch OBS before recording.",
"obs_launch_as_admin": "Launch OBS as administrator",
"obs_launch_as_admin_desc": "Launch OBS with administrator privileges. Enable this if game capture requires admin rights.",
"obs_auto_start_recording": "Start recording when game starts",
"obs_auto_start_recording_desc": "Start recording when the game process is detected.",
"obs_auto_stop_recording": "Stop recording when game exits",
Expand Down
17 changes: 17 additions & 0 deletions playcue/ui/obs_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ def __init__(self, parent: Tk, config: OBSConfig, on_saved):
self.websocket_port_var = tk.StringVar(value=str(config.websocket_port))
self.websocket_password_var = tk.StringVar(value=config.websocket_password)
self.auto_launch_var = tk.BooleanVar(value=config.auto_launch)
self.launch_as_admin_var = tk.BooleanVar(value=config.launch_as_admin)
self.auto_start_recording_var = tk.BooleanVar(value=config.auto_start_recording_on_game_launch)
self.auto_stop_recording_var = tk.BooleanVar(value=config.auto_stop_recording_on_game_exit)
self._dependent_widgets: list[tk.Widget] = []
Expand Down Expand Up @@ -135,6 +136,21 @@ def _build_ui(self) -> None:
)
auto_launch_desc.pack(anchor=tk.W, padx=20, pady=(0, 4))

launch_as_admin_cb = _make_checkbutton(
automation_frame,
text=tr("obs_launch_as_admin"),
variable=self.launch_as_admin_var,
)
launch_as_admin_cb.pack(anchor=tk.W, padx=6, pady=(0, 0))
launch_as_admin_desc = ttk.Label(
automation_frame,
text=tr("obs_launch_as_admin_desc"),
foreground="#9aa9c4",
wraplength=480,
)
launch_as_admin_desc.pack(anchor=tk.W, padx=20, pady=(0, 4))
self._dependent_widgets.append(launch_as_admin_cb)

auto_start_cb = _make_checkbutton(
automation_frame,
text=tr("obs_auto_start_recording"),
Expand Down Expand Up @@ -222,6 +238,7 @@ def save(self) -> None:
websocket_port=port,
websocket_password=self.websocket_password_var.get(),
auto_launch=self.auto_launch_var.get(),
launch_as_admin=self.launch_as_admin_var.get(),
auto_start_recording_on_game_launch=self.auto_start_recording_var.get(),
auto_stop_recording_on_game_exit=self.auto_stop_recording_var.get(),
)
Expand Down
Loading