From 1ddefd60c8aa56b523a6bf07b566b55858b2a486 Mon Sep 17 00:00:00 2001 From: AndyHazz <517731+AndyHazz@users.noreply.github.com> Date: Sun, 29 Mar 2026 21:41:06 +0100 Subject: [PATCH] feat: autostart Syncthing on WiFi connect Add a "Start automatically on WiFi" toggle in the Syncthing menu. When enabled, Syncthing starts automatically when a NetworkConnected event fires and stops on NetworkDisconnecting. Toggling the setting on while WiFi is already connected starts Syncthing immediately. The setting persists via G_reader_settings. --- main.lua | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/main.lua b/main.lua index 5502876..52a9357 100644 --- a/main.lua +++ b/main.lua @@ -457,6 +457,34 @@ end function Syncthing:init() self.ui.menu:registerToMainMenu(self) + self.autostart = G_reader_settings:isTrue("syncthing_autostart") + self:registerEvents() +end + +--------------------------------------------------------------------------- +-- Autostart on network connect / disconnect +--------------------------------------------------------------------------- + +function Syncthing:registerEvents() + if self.autostart and self:hasBinary() then + self.onNetworkConnected = self._onNetworkConnected + self.onNetworkDisconnecting = self._onNetworkDisconnecting + else + self.onNetworkConnected = nil + self.onNetworkDisconnecting = nil + end +end + +function Syncthing:_onNetworkConnected() + logger.dbg("Syncthing: network connected, autostarting") + if not self:isRunning() then + self:start() + end +end + +function Syncthing:_onNetworkDisconnecting() + logger.dbg("Syncthing: network disconnecting, stopping") + self:stop() end function Syncthing:addToMainMenu(menu_items) @@ -488,6 +516,20 @@ function Syncthing:addToMainMenu(menu_items) end end, }, + -- Autostart toggle + { + text = _("Start automatically on WiFi"), + checked_func = function() return self.autostart end, + enabled_func = function() return self:hasBinary() end, + callback = function() + self.autostart = not self.autostart + G_reader_settings:saveSetting("syncthing_autostart", self.autostart) + self:registerEvents() + if self.autostart and NetworkMgr:isOnline() and not self:isRunning() then + self:startAndNotify() + end + end, + }, -- Connection info { text = _("Connection info"),