@velor/remote-mouse 6.4.8
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.
- package/.artifacts/screenshots/remote-mobile-config.png +0 -0
- package/.artifacts/screenshots/remote-mobile-home.png +0 -0
- package/.artifacts/screenshots/remote-mobile-preferences.png +0 -0
- package/.artifacts/screenshots/remote-mobile-server-info.png +0 -0
- package/.artifacts/screenshots/remote-mobile-vlc.png +0 -0
- package/.env.example +93 -0
- package/README.md +370 -0
- package/bin/remote-mouse.js +19 -0
- package/client/core/dom.js +148 -0
- package/client/core/init-socket-io.js +117 -0
- package/client/core/socket-emit.js +6 -0
- package/client/core/window-events.js +23 -0
- package/client/i18n/apply-page-translations.js +18 -0
- package/client/i18n/constants.js +3 -0
- package/client/i18n/core.js +40 -0
- package/client/i18n/locale-registry.js +77 -0
- package/client/i18n/locales/de.js +227 -0
- package/client/i18n/locales/en.js +389 -0
- package/client/i18n/locales/es.js +228 -0
- package/client/i18n/locales/fr.js +389 -0
- package/client/i18n/locales/it.js +227 -0
- package/client/i18n/locales/ja.js +227 -0
- package/client/i18n/locales/pt.js +227 -0
- package/client/i18n/locales/ru.js +240 -0
- package/client/i18n/locales/zh.js +227 -0
- package/client/preferences/constants.js +15 -0
- package/client/preferences/effects.js +24 -0
- package/client/preferences/load.js +19 -0
- package/client/preferences/render.js +26 -0
- package/client/preferences/rows.js +78 -0
- package/client/preferences/state.js +29 -0
- package/client/preview/create-preview-frame-receiver.js +13 -0
- package/client/preview/draw.js +77 -0
- package/client/preview/parse-preview-frame.js +39 -0
- package/client/preview/preview-stream.js +152 -0
- package/client/services/app-state/appStateKeys.js +30 -0
- package/client/services/app-state/createAppStateService.js +216 -0
- package/client/services/app-state/createPersistStoreService.js +122 -0
- package/client/services/app-state/createStateStoreService.js +64 -0
- package/client/services/app-state/localStorageBinding.js +26 -0
- package/client/services/app-state/normalizers.js +74 -0
- package/client/services/app-state/resolveEffectiveStateValue.js +58 -0
- package/client/services/app-state/stateDefinitions.js +107 -0
- package/client/services/backend/createBackendService.js +55 -0
- package/client/services/config/ConfigView.js +45 -0
- package/client/services/config/createClientConfigService.js +122 -0
- package/client/services/config/defaultClientConfig.js +22 -0
- package/client/services/createServicesContainer.js +48 -0
- package/client/services/createServicesRegistry.js +26 -0
- package/client/services/i18n/createI18nService.js +86 -0
- package/client/services/notifications/createNotificationService.js +56 -0
- package/client/services/pubsub/createPubSubService.js +20 -0
- package/client/services/remotes/createRemotesService.js +20 -0
- package/client/services/transport/createSocketIoTransportService.js +50 -0
- package/client/touch/bindTouchPassthrough.js +94 -0
- package/client/touch/createTouchList.js +18 -0
- package/client/touch/dispatchSyntheticTouch.js +20 -0
- package/client/touch/gesture-zone.js +28 -0
- package/client/touch/throttle.js +46 -0
- package/client/touch/touch-handlers.js +193 -0
- package/client/touch/touchpad.js +231 -0
- package/client/ui/config/page.js +840 -0
- package/client/ui/main/applyRemoteVisibilityState.js +60 -0
- package/client/ui/main/bind-client-notifications.js +3 -0
- package/client/ui/main/bindings/bindAccordion.js +121 -0
- package/client/ui/main/bindings/bindActionButtons.js +13 -0
- package/client/ui/main/bindings/bindAdminDrawer.js +137 -0
- package/client/ui/main/bindings/bindAdminRemoteButtons.js +77 -0
- package/client/ui/main/bindings/bindAdminVersion.js +27 -0
- package/client/ui/main/bindings/bindBrowserRemoteButtons.js +119 -0
- package/client/ui/main/bindings/bindRemoteAccordion.js +23 -0
- package/client/ui/main/bindings/bindSamsungRemoteButtons.js +320 -0
- package/client/ui/main/bindings/bindSystemRemoteButtons.js +41 -0
- package/client/ui/main/bindings/bindVlcRemoteButtons.js +64 -0
- package/client/ui/main/canvas-ui.js +33 -0
- package/client/ui/main/connection-overlay.js +57 -0
- package/client/ui/main/init-ui.js +54 -0
- package/client/ui/main/keyboard-panel.js +271 -0
- package/client/ui/main/mouse-buttons.js +94 -0
- package/client/ui/main/page.js +21 -0
- package/client/ui/notifications/show-toast.js +48 -0
- package/client/ui/preferences/bindPreferenceSwitchers.js +49 -0
- package/client/ui/preferences/page.js +61 -0
- package/client/ui/preferences/switchers.js +200 -0
- package/index.js +9 -0
- package/package.json +41 -0
- package/public/admin-config.css +447 -0
- package/public/admin-config.html +63 -0
- package/public/apple-touch-icon.png +0 -0
- package/public/brave-icon.svg +13 -0
- package/public/favicon.svg +30 -0
- package/public/icon-192.png +0 -0
- package/public/icon-512.png +0 -0
- package/public/index.html +246 -0
- package/public/manifest.webmanifest +45 -0
- package/public/preferences.html +55 -0
- package/public/server-info.html +574 -0
- package/public/styles.css +1042 -0
- package/public/sw.js +103 -0
- package/scripts/codex-commit.sh +112 -0
- package/scripts/generate-mobile-screenshots.mjs +244 -0
- package/scripts/install-linux.sh +633 -0
- package/scripts/install-windows.ps1 +369 -0
- package/server/application/createApplicationLifecycle.js +15 -0
- package/server/application/logger.js +216 -0
- package/server/application/shutdown.js +81 -0
- package/server/application/start.js +95 -0
- package/server/application/state.js +19 -0
- package/server/connection/api/admin-actions.router.js +65 -0
- package/server/connection/api/admin-configs.router.js +165 -0
- package/server/connection/api/admin-remotes.router.js +61 -0
- package/server/connection/api/admin-subs.router.js +49 -0
- package/server/connection/api/client.router.js +15 -0
- package/server/connection/api/configs.js +96 -0
- package/server/connection/api/qr-page.handler.js +17 -0
- package/server/connection/api/remotes.router.js +30 -0
- package/server/connection/api/server-info.router.js +149 -0
- package/server/connection/api/session.middleware.js +93 -0
- package/server/connection/api/unauthorized-response.js +73 -0
- package/server/connection/socket/createConnectionRegistrar.js +23 -0
- package/server/connection/socket/createSocketSessionAuthMiddleware.js +49 -0
- package/server/connection/socket/socket-action-responder.js +12 -0
- package/server/connection/socket/socket.timestamp-middleware.js +51 -0
- package/server/index.js +12 -0
- package/server/init/bootstrapApi.js +87 -0
- package/server/init/bootstrapSocket.js +79 -0
- package/server/init/createAdminApiRouter.js +22 -0
- package/server/init/createAdminUiRouter.js +21 -0
- package/server/init/createSocketActionRegistrars.js +52 -0
- package/server/init/observers/startConfigObserver.js +51 -0
- package/server/init/observers/startDisplaySizeObserver.js +55 -0
- package/server/init/observers/startNotificationObserver.js +49 -0
- package/server/init/observers/startQrOverlayHoverObserver.js +89 -0
- package/server/init/observers/startQrOverlayRefreshObserver.js +53 -0
- package/server/os/darwin/app.js +45 -0
- package/server/os/darwin/applescript.js +51 -0
- package/server/os/darwin/cliSocket.js +53 -0
- package/server/os/darwin/url.js +9 -0
- package/server/os/darwin/window.js +10 -0
- package/server/os/linux/app.js +120 -0
- package/server/os/linux/cliSocket.js +53 -0
- package/server/os/linux/process.js +69 -0
- package/server/os/linux/screen.js +58 -0
- package/server/os/linux/systemd.js +139 -0
- package/server/os/linux/url.js +17 -0
- package/server/os/linux/windows.js +144 -0
- package/server/os/win32/app.js +66 -0
- package/server/os/win32/cliSocket.js +15 -0
- package/server/os/win32/powershell.js +70 -0
- package/server/os/win32/process.js +20 -0
- package/server/os/win32/service.js +95 -0
- package/server/os/win32/url.js +9 -0
- package/server/os/win32/window.js +10 -0
- package/server/remotes/admin/createAdminEventGuardMiddleware.js +29 -0
- package/server/remotes/admin/createForceUpdateCheckAction.js +39 -0
- package/server/remotes/admin/createInstallUpdateAction.js +64 -0
- package/server/remotes/admin/createOpenQrBrowserAction.js +63 -0
- package/server/remotes/admin/createOpenServerInfoBrowserAction.js +58 -0
- package/server/remotes/admin/createRestartServiceAction.js +20 -0
- package/server/remotes/admin/createRotateEntryTokenAction.js +43 -0
- package/server/remotes/admin/createToggleQrOverlayAction.js +38 -0
- package/server/remotes/admin/index.js +32 -0
- package/server/remotes/admin/notifyIfRestarted.js +102 -0
- package/server/remotes/admin/registrar.js +94 -0
- package/server/remotes/browser/actions/createFocusOrLaunchBrowserAction.js +22 -0
- package/server/remotes/browser/actions/openUrlOnHost.js +3 -0
- package/server/remotes/browser/browserCatalog.js +70 -0
- package/server/remotes/browser/index.js +15 -0
- package/server/remotes/browser/listBrowsersOnHost.js +23 -0
- package/server/remotes/browser/registrar.js +29 -0
- package/server/remotes/browser/spec.js +18 -0
- package/server/remotes/browser/state.js +5 -0
- package/server/remotes/input/registrar.js +39 -0
- package/server/remotes/preview/bgraToRgbaBuffer.js +20 -0
- package/server/remotes/preview/captureAroundCursor.js +19 -0
- package/server/remotes/preview/createPreviewStreamer.js +85 -0
- package/server/remotes/preview/registrar.js +34 -0
- package/server/remotes/samsung/createSamsungCommandService.js +203 -0
- package/server/remotes/samsung/createSamsungRemote.js +26 -0
- package/server/remotes/samsung/createSamsungRemoteGetter.js +46 -0
- package/server/remotes/samsung/createSamsungTvGetter.js +102 -0
- package/server/remotes/samsung/device-config.js +122 -0
- package/server/remotes/samsung/registrar.js +59 -0
- package/server/remotes/samsung/utils.js +56 -0
- package/server/remotes/vlc/index.js +39 -0
- package/server/remotes/vlc/registrar.js +94 -0
- package/server/remotes/vlc/spec.js +15 -0
- package/server/remotes/vlc/state.js +5 -0
- package/server/remotes/window/index.js +6 -0
- package/server/remotes/window/registrar.js +28 -0
- package/server/services/application/createApplicationDaemonService.js +144 -0
- package/server/services/application/getDaemonServiceAdapter.js +56 -0
- package/server/services/application/utils.js +29 -0
- package/server/services/config/bootstrapConfig.js +38 -0
- package/server/services/config/configPaths.js +42 -0
- package/server/services/config/configSchema.js +297 -0
- package/server/services/config/configService.js +89 -0
- package/server/services/config/defaultConfig.js +137 -0
- package/server/services/config/envConfig.js +49 -0
- package/server/services/config/index.js +9 -0
- package/server/services/config/logConfig.js +54 -0
- package/server/services/config/system-config.js +44 -0
- package/server/services/createServicesContainer.js +94 -0
- package/server/services/createServicesRegistry.js +48 -0
- package/server/services/input/createInputController.js +17 -0
- package/server/services/input/createKeyboardController.js +146 -0
- package/server/services/input/createMouseController.js +182 -0
- package/server/services/notifier/createClientNotifier.js +23 -0
- package/server/services/notifier/createHostNotifier.js +41 -0
- package/server/services/notifier/createNotifier.js +13 -0
- package/server/services/notifier/createNotifierComposite.js +122 -0
- package/server/services/notifier/handleOpenQrBrowserEvent.js +40 -0
- package/server/services/notifier/handleOpenServerInfoBrowserEvent.js +40 -0
- package/server/services/notifier/handleRestartServiceEvent.js +37 -0
- package/server/services/notifier/handleRotateEntryTokenEvent.js +42 -0
- package/server/services/notifier/handleSessionEvent.js +24 -0
- package/server/services/notifier/handleToggleQrOverlayEvent.js +21 -0
- package/server/services/notifier/host-notifier/createLinuxHostNotifier.js +23 -0
- package/server/services/notifier/host-notifier/createNodeNotifierHostNotifier.js +24 -0
- package/server/services/notifier/host-notifier/index.js +11 -0
- package/server/services/notifier/mapper/handleForceUpdateCheckEvent.js +24 -0
- package/server/services/notifier/mapper/handleInstallUpdateEvent.js +53 -0
- package/server/services/notifier/mapper/handleSocketEvent.js +40 -0
- package/server/services/notifier/mapper/handleUpdateManagerEvent.js +24 -0
- package/server/services/notifier/mapper/notify.js +7 -0
- package/server/services/os/index.js +23 -0
- package/server/services/os/platforms/createFallbackAdapter.js +31 -0
- package/server/services/os/platforms/darwin/app.js +6 -0
- package/server/services/os/platforms/darwin/index.js +21 -0
- package/server/services/os/platforms/darwin/scripts.js +4 -0
- package/server/services/os/platforms/darwin/url.js +1 -0
- package/server/services/os/platforms/darwin/window.js +4 -0
- package/server/services/os/platforms/linux/app.js +6 -0
- package/server/services/os/platforms/linux/index.js +33 -0
- package/server/services/os/platforms/linux/url.js +1 -0
- package/server/services/os/platforms/linux/windows.js +11 -0
- package/server/services/os/platforms/win32/app.js +6 -0
- package/server/services/os/platforms/win32/index.js +21 -0
- package/server/services/os/platforms/win32/overlay.js +6 -0
- package/server/services/os/platforms/win32/powershell.js +4 -0
- package/server/services/os/platforms/win32/url.js +1 -0
- package/server/services/os/platforms/win32/window.js +4 -0
- package/server/services/os/shared.js +2 -0
- package/server/services/overlay/createNoopOverlay.js +13 -0
- package/server/services/overlay/createQrOverlay.js +27 -0
- package/server/services/overlay/createQrOverlayWin32.js +158 -0
- package/server/services/overlay/createQrOverlayYad.js +178 -0
- package/server/services/overlay/renderQrPage.js +82 -0
- package/server/services/persistence/createConfigDao.js +106 -0
- package/server/services/persistence/createDatabaseProvider.js +23 -0
- package/server/services/persistence/createEntryTokenDao.js +140 -0
- package/server/services/persistence/createRestartLogDao.js +210 -0
- package/server/services/persistence/index.js +19 -0
- package/server/services/pubsub/createEventStore.js +54 -0
- package/server/services/pubsub/createPubSub.js +89 -0
- package/server/services/pubsub/createServiceEvents.js +29 -0
- package/server/services/pubsub/serviceEventConstants.js +39 -0
- package/server/services/remotes/createRemotes.js +25 -0
- package/server/services/server/createHttpsServer.js +12 -0
- package/server/services/server/createServer.js +66 -0
- package/server/services/sse/createSseService.js +96 -0
- package/server/services/sse/utils.js +7 -0
- package/server/services/system/createSystemService.js +170 -0
- package/server/services/system/getNetworkInfo.js +18 -0
- package/server/services/system/getScreenInfo.js +32 -0
- package/server/services/system/listNetworkInterfaces.js +27 -0
- package/server/services/task-manager/createTaskManager.js +68 -0
- package/server/services/task-runner/createTaskRunner.js +114 -0
- package/server/services/token-manager/createTokenManager.js +244 -0
- package/server/services/token-manager/token-format.js +7 -0
- package/server/services/token-manager/token-store-utils.js +8 -0
- package/server/services/update-manager/CommandUpdateSource.js +70 -0
- package/server/services/update-manager/NpmUpdateSource.js +34 -0
- package/server/services/update-manager/buildNpmGlobalUpdateCommand.js +15 -0
- package/server/services/update-manager/chooseUpdateCheckSource.js +20 -0
- package/server/services/update-manager/chooseUpdateInstallSource.js +5 -0
- package/server/services/update-manager/createUpdateManager.js +109 -0
- package/server/services/update-manager/resolveInstallUpdateCommand.js +42 -0
- package/server/term/cli/executeLocalServiceCommand.js +42 -0
- package/server/term/cli/getCliSocketPath.js +5 -0
- package/server/term/cli/parseCliArgs.js +110 -0
- package/server/term/cli/printCliResult.js +18 -0
- package/server/term/cli/runCliCmd.js +50 -0
- package/server/term/cli/sendCliCommand.js +76 -0
- package/server/term/cliSocket.js +29 -0
- package/server/term/srv/commands/configCommand.js +84 -0
- package/server/term/srv/commands/helpCommand.js +6 -0
- package/server/term/srv/commands/infoCommand.js +7 -0
- package/server/term/srv/commands/openQrCommand.js +7 -0
- package/server/term/srv/commands/samsungDetectCommand.js +52 -0
- package/server/term/srv/commands/serviceCommand.js +25 -0
- package/server/term/srv/commands/systemConfigCommand.js +7 -0
- package/server/term/srv/commands/tasksCommand.js +24 -0
- package/server/term/srv/commands/tokensCommand.js +15 -0
- package/server/term/srv/executeCliCommand.js +44 -0
- package/server/term/srv/executeCliRequest.js +38 -0
- package/server/term/srv/startCliServer.js +140 -0
- package/server/utils/createRandomToken.js +11 -0
- package/server/utils/env.js +155 -0
- package/server/utils/git.js +13 -0
- package/server/utils/http.js +7 -0
- package/server/utils/network.js +45 -0
- package/server/utils/paths.js +10 -0
- package/server/utils/process.js +57 -0
- package/server/utils/robot.js +11 -0
- package/server/utils/semver.js +33 -0
- package/server/utils/truncateText.js +7 -0
- package/utils/createLazy.js +13 -0
- package/utils/functional.js +48 -0
- package/utils/math.js +26 -0
- package/utils/notificationSettings.js +61 -0
- package/utils/object.utils.js +79 -0
- package/utils/predicates.js +17 -0
- package/utils/remoteCommands.js +40 -0
- package/utils/sync.js +3 -0
- package/velor-remote-mouse-6.4.8.tgz +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/.env.example
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# HTTP/HTTPS server listen port
|
|
2
|
+
PORT=3000
|
|
3
|
+
|
|
4
|
+
# Host/IP to display in the URL/QR code (leave empty for LAN auto-detection)
|
|
5
|
+
SERVER_HOST=
|
|
6
|
+
|
|
7
|
+
# Main configuration directory (env + sqlite)
|
|
8
|
+
CONFIG_DIR=~/.config/remote-mouse
|
|
9
|
+
|
|
10
|
+
# Full or relative path to the persistence SQLite file
|
|
11
|
+
PERSISTENCE_DB_PATH=~/.config/remote-mouse/remote-mouse.sqlite3
|
|
12
|
+
|
|
13
|
+
# Explicit environment file path (optional)
|
|
14
|
+
# If empty, the server looks for CONFIG_DIR/.env first
|
|
15
|
+
ENV_FILE_PATH=
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# Enable HTTPS (true/false)
|
|
19
|
+
HTTPS=false
|
|
20
|
+
|
|
21
|
+
# Path to the PEM private key (required if HTTPS=true)
|
|
22
|
+
SSL_KEY_PATH=
|
|
23
|
+
|
|
24
|
+
# Path to the PEM certificate (required if HTTPS=true)
|
|
25
|
+
SSL_CERT_PATH=
|
|
26
|
+
|
|
27
|
+
# Enable the random entry path (true/false)
|
|
28
|
+
ENTRY_PATH_ENABLED=true
|
|
29
|
+
|
|
30
|
+
# Fixed path instead of a random token (optional)
|
|
31
|
+
ENTRY_PATH_FIXED=
|
|
32
|
+
|
|
33
|
+
# Random entry token length
|
|
34
|
+
ENTRY_PATH_TOKEN_LENGTH=24
|
|
35
|
+
|
|
36
|
+
# Automatic entry token rotation interval (minutes)
|
|
37
|
+
ENTRY_PATH_ROTATE_INTERVAL_MIN=60
|
|
38
|
+
|
|
39
|
+
# Grace period for previous tokens (minutes)
|
|
40
|
+
ENTRY_PATH_GRACE_MIN=120
|
|
41
|
+
|
|
42
|
+
# Session cookie name (used for HTTP + WebSocket)
|
|
43
|
+
SESSION_COOKIE_NAME=remote_mouse_session
|
|
44
|
+
|
|
45
|
+
# Cookie signing secret (MUST be changed in production)
|
|
46
|
+
SESSION_COOKIE_SECRET=change-me
|
|
47
|
+
|
|
48
|
+
# Session cookie lifetime (days)
|
|
49
|
+
SESSION_COOKIE_MAX_AGE_DAYS=7
|
|
50
|
+
|
|
51
|
+
# Maximum accepted age for a client-to-server Socket.IO event (ms)
|
|
52
|
+
SOCKET_EVENT_MAX_AGE_MS=1200
|
|
53
|
+
|
|
54
|
+
# Server log verbosity: trace, debug, info, warn, error, fatal
|
|
55
|
+
LOG_LEVEL=info
|
|
56
|
+
|
|
57
|
+
# Server log format: json, pretty, flat
|
|
58
|
+
LOG_FORMAT=json
|
|
59
|
+
|
|
60
|
+
# Allow admin actions triggered from the client
|
|
61
|
+
ADMIN_ACTIONS_ENABLED=true
|
|
62
|
+
|
|
63
|
+
# Name of the systemd --user service to restart
|
|
64
|
+
SERVICE_NAME=remote-mouse.service
|
|
65
|
+
|
|
66
|
+
# Optional custom shell command used to restart the local service/daemon
|
|
67
|
+
# If set, it takes precedence over the platform-specific restart strategy
|
|
68
|
+
SERVICE_RESTART_COMMAND=
|
|
69
|
+
|
|
70
|
+
# Update check shell command (optional, takes precedence)
|
|
71
|
+
# Supported protocols:
|
|
72
|
+
# - JSON: {"hasUpdate":true,"key":"...","title":"...","message":"...","ttlMs":8000}
|
|
73
|
+
# - Text: "1"/"true"/"update" => update detected; "0"/"false"/"none" => no update
|
|
74
|
+
UPDATE_CHECK_COMMAND=
|
|
75
|
+
|
|
76
|
+
# Maximum timeout for the update check command (seconds)
|
|
77
|
+
UPDATE_CHECK_TIMEOUT_SEC=20
|
|
78
|
+
|
|
79
|
+
# Update check interval (minutes)
|
|
80
|
+
UPDATE_CHECK_INTERVAL_MIN=360
|
|
81
|
+
|
|
82
|
+
# npm package to check (leave empty to use the local package name)
|
|
83
|
+
UPDATE_CHECK_PACKAGE=
|
|
84
|
+
|
|
85
|
+
# Forced current version (leave empty to use package.json)
|
|
86
|
+
UPDATE_CHECK_CURRENT_VERSION=
|
|
87
|
+
|
|
88
|
+
# Shell command to install an update (optional)
|
|
89
|
+
# If empty: automatic fallback to "npm update -g <UPDATE_CHECK_PACKAGE> --force"
|
|
90
|
+
UPDATE_INSTALL_COMMAND=
|
|
91
|
+
|
|
92
|
+
# Maximum timeout for the install command (seconds)
|
|
93
|
+
UPDATE_INSTALL_TIMEOUT_SEC=600
|
package/README.md
ADDED
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
# Remote Mouse
|
|
2
|
+
|
|
3
|
+
Remote Mouse is a web-based remote control for operating a computer from a phone, tablet, or another browser on the same network. The server exposes a mobile-friendly interface for mouse and keyboard control, browser shortcuts, admin actions, and optional Samsung TV remote commands.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The application includes:
|
|
8
|
+
|
|
9
|
+
- a token-based entry path with QR code access
|
|
10
|
+
- a mobile touchpad for mouse movement, clicking, and scrolling
|
|
11
|
+
- a keyboard panel for text input and special keys
|
|
12
|
+
- browser shortcut actions
|
|
13
|
+
- VLC media controls when VLC is available on the host
|
|
14
|
+
- admin actions from the client UI
|
|
15
|
+
- a server info page
|
|
16
|
+
- optional Samsung TV remote integration
|
|
17
|
+
|
|
18
|
+
## Screenshots
|
|
19
|
+
|
|
20
|
+
Regenerate these assets with `npm run screenshots:mobile`.
|
|
21
|
+
|
|
22
|
+
| Remote control | Local preferences |
|
|
23
|
+
| --- | --- |
|
|
24
|
+
| <img src=".artifacts/screenshots/remote-mobile-home.png" alt="Mobile remote control screen" width="260"> | <img src=".artifacts/screenshots/remote-mobile-preferences.png" alt="Mobile local preferences screen" width="260"> |
|
|
25
|
+
|
|
26
|
+
| VLC remote | Admin configuration |
|
|
27
|
+
| --- | --- |
|
|
28
|
+
| <img src=".artifacts/screenshots/remote-mobile-vlc.png" alt="Mobile VLC remote screen" width="260"> | <img src=".artifacts/screenshots/remote-mobile-config.png" alt="Mobile admin configuration screen" width="260"> |
|
|
29
|
+
|
|
30
|
+
| Server info |
|
|
31
|
+
| --- |
|
|
32
|
+
| <img src=".artifacts/screenshots/remote-mobile-server-info.png" alt="Mobile server info screen" width="260"> |
|
|
33
|
+
|
|
34
|
+
## Install
|
|
35
|
+
|
|
36
|
+
### Automatic (preferred)
|
|
37
|
+
|
|
38
|
+
Linux installer:
|
|
39
|
+
|
|
40
|
+
[scripts/install-linux.sh](https://raw.githubusercontent.com/glennerichall/node-mouse/main/scripts/install-linux.sh)
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
curl -fsSL https://raw.githubusercontent.com/glennerichall/node-mouse/main/scripts/install-linux.sh | bash
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
For local development from this repository, run [`scripts/install-linux.sh`](./scripts/install-linux.sh):
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
scripts/install-linux.sh
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Use `-y` to automatically accept every confirmation prompt:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
scripts/install-linux.sh -y
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
When running the installer through `curl | bash`, pass options after `bash -s --`:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
curl -fsSL https://raw.githubusercontent.com/glennerichall/node-mouse/main/scripts/install-linux.sh | bash -s -- -y
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Windows installer:
|
|
65
|
+
|
|
66
|
+
[scripts/install-windows.ps1](https://raw.githubusercontent.com/glennerichall/node-mouse/main/scripts/install-windows.ps1)
|
|
67
|
+
|
|
68
|
+
```powershell
|
|
69
|
+
powershell -ExecutionPolicy Bypass -File scripts/install-windows.ps1
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Use `-Yes` to automatically accept every confirmation prompt:
|
|
73
|
+
|
|
74
|
+
```powershell
|
|
75
|
+
powershell -ExecutionPolicy Bypass -File scripts/install-windows.ps1 -Yes
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
For a downloaded script:
|
|
79
|
+
|
|
80
|
+
```powershell
|
|
81
|
+
iwr https://raw.githubusercontent.com/glennerichall/node-mouse/main/scripts/install-windows.ps1 -OutFile install-windows.ps1
|
|
82
|
+
powershell -ExecutionPolicy Bypass -File .\install-windows.ps1
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Downloaded script with automatic confirmations:
|
|
86
|
+
|
|
87
|
+
```powershell
|
|
88
|
+
iwr https://raw.githubusercontent.com/glennerichall/node-mouse/main/scripts/install-windows.ps1 -OutFile install-windows.ps1
|
|
89
|
+
powershell -ExecutionPolicy Bypass -File .\install-windows.ps1 -Yes
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
macOS installer scripts will be added later.
|
|
93
|
+
|
|
94
|
+
The automatic installer is expected to handle:
|
|
95
|
+
|
|
96
|
+
- Node.js installation or validation
|
|
97
|
+
- platform native dependencies
|
|
98
|
+
- npm package installation
|
|
99
|
+
- initial `.env` creation
|
|
100
|
+
- optional local service installation
|
|
101
|
+
- first-run access URL and QR code display
|
|
102
|
+
|
|
103
|
+
### Custom
|
|
104
|
+
|
|
105
|
+
Use the custom installation path when you want to install each dependency yourself, run from source, or tune the host service manually.
|
|
106
|
+
|
|
107
|
+
#### Node.js
|
|
108
|
+
|
|
109
|
+
Install an active Node.js LTS release before installing Remote Mouse. The application uses npm scripts and native Node.js modules, so both `node` and `npm` must be available in your terminal.
|
|
110
|
+
|
|
111
|
+
##### Linux and macOS
|
|
112
|
+
|
|
113
|
+
Using `nvm` is recommended because it keeps the Node.js version isolated from the system packages:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
|
|
117
|
+
nvm install --lts
|
|
118
|
+
nvm use --lts
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Restart your terminal if `nvm` is not available immediately after installation.
|
|
122
|
+
|
|
123
|
+
##### Windows
|
|
124
|
+
|
|
125
|
+
Install the Node.js LTS release from the official installer, or use `winget`:
|
|
126
|
+
|
|
127
|
+
```powershell
|
|
128
|
+
winget install OpenJS.NodeJS.LTS
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Open a new terminal after installation so `node` and `npm` are available in `PATH`.
|
|
132
|
+
|
|
133
|
+
##### Verify
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
node --version
|
|
137
|
+
npm --version
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
#### Platform Dependencies
|
|
141
|
+
|
|
142
|
+
This project relies on `@hurdlegroup/robotjs`, which requires native dependencies.
|
|
143
|
+
|
|
144
|
+
VLC media player is optional. Install it on the host machine if you want the VLC remote to appear and control media playback.
|
|
145
|
+
|
|
146
|
+
##### Linux
|
|
147
|
+
|
|
148
|
+
Typical Debian or Ubuntu packages:
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
sudo apt-get update
|
|
152
|
+
sudo apt-get install -y build-essential libx11-dev libxtst-dev libpng++-dev wmctrl yad
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Notes:
|
|
156
|
+
|
|
157
|
+
- `libx11-dev`, `libxtst-dev`, and `libpng++-dev` are required for the native mouse and keyboard integration
|
|
158
|
+
- `wmctrl` is used for browser focus and window activation on Linux
|
|
159
|
+
- `yad` is used for the Linux QR overlay
|
|
160
|
+
- an X11 session is required for the Linux desktop control features
|
|
161
|
+
|
|
162
|
+
##### Windows
|
|
163
|
+
|
|
164
|
+
Typical requirements:
|
|
165
|
+
|
|
166
|
+
- Microsoft Visual Studio C++ Build Tools for native Node modules
|
|
167
|
+
- Python available in `PATH` if native module compilation is needed
|
|
168
|
+
- PowerShell and Windows Forms support for the QR overlay behavior
|
|
169
|
+
|
|
170
|
+
Notes:
|
|
171
|
+
|
|
172
|
+
- the Windows QR overlay uses PowerShell with Windows Forms
|
|
173
|
+
- depending on your environment, `npm install` may use a prebuilt binary or may require local native compilation
|
|
174
|
+
|
|
175
|
+
#### Package Install
|
|
176
|
+
|
|
177
|
+
Install the published npm package globally:
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
npm install -g @velor/remote-mouse
|
|
181
|
+
remote-mouse
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
On startup, the server prints the client access URL and the corresponding QR code.
|
|
185
|
+
|
|
186
|
+
#### Source Install
|
|
187
|
+
|
|
188
|
+
Use this path when working from a checked-out repository:
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
npm install
|
|
192
|
+
npm start
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
On startup, the server prints the client access URL and the corresponding QR code.
|
|
196
|
+
|
|
197
|
+
#### Self-Signed HTTPS Certificate
|
|
198
|
+
|
|
199
|
+
HTTPS can be enabled with a local self-signed certificate. This is useful when a browser feature or deployment context requires a secure origin.
|
|
200
|
+
|
|
201
|
+
Create a local certificate directory:
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
mkdir -p certs
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
Generate a self-signed certificate:
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
openssl req -x509 -newkey rsa:4096 -sha256 -days 365 -nodes \
|
|
211
|
+
-keyout certs/remote-mouse.key \
|
|
212
|
+
-out certs/remote-mouse.crt \
|
|
213
|
+
-subj "/CN=remote-mouse.local" \
|
|
214
|
+
-addext "subjectAltName=DNS:localhost,DNS:remote-mouse.local,IP:127.0.0.1"
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Enable HTTPS in `.env`:
|
|
218
|
+
|
|
219
|
+
```dotenv
|
|
220
|
+
HTTPS=true
|
|
221
|
+
SSL_KEY_PATH=certs/remote-mouse.key
|
|
222
|
+
SSL_CERT_PATH=certs/remote-mouse.crt
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
Browsers will warn about self-signed certificates until the certificate is trusted locally. This is expected for a local self-signed certificate. Open the advanced/details option in the browser warning and choose to continue to the site.
|
|
226
|
+
|
|
227
|
+
#### Linux Deployment
|
|
228
|
+
|
|
229
|
+
The application can manage its own `systemd --user` service.
|
|
230
|
+
|
|
231
|
+
Typical setup:
|
|
232
|
+
|
|
233
|
+
1. Install the package with npm, or use the source install path above.
|
|
234
|
+
2. Create a `.env` file based on [`.env.example`](./.env.example).
|
|
235
|
+
3. Run `remote-mouse service install`.
|
|
236
|
+
4. Use `remote-mouse service restart`, `remote-mouse service disable`, or `remote-mouse service uninstall` as needed.
|
|
237
|
+
|
|
238
|
+
The generated unit is equivalent to the following:
|
|
239
|
+
|
|
240
|
+
```ini
|
|
241
|
+
[Unit]
|
|
242
|
+
Description=Remote Mouse Server
|
|
243
|
+
After=graphical-session.target network-online.target
|
|
244
|
+
Wants=network-online.target
|
|
245
|
+
|
|
246
|
+
[Service]
|
|
247
|
+
Type=simple
|
|
248
|
+
ExecStart=/path/to/remote-mouse/bin/remote-mouse.js
|
|
249
|
+
Restart=on-failure
|
|
250
|
+
RestartSec=2
|
|
251
|
+
Environment=PATH=/path/to/nodejs:/usr/local/bin:/usr/bin:/bin
|
|
252
|
+
Environment=NODE_ENV=production
|
|
253
|
+
PassEnvironment=DISPLAY WAYLAND_DISPLAY XAUTHORITY DBUS_SESSION_BUS_ADDRESS
|
|
254
|
+
|
|
255
|
+
[Install]
|
|
256
|
+
WantedBy=default.target
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
Depending on the graphical environment, passing the user session environment may be necessary for UI-related integrations.
|
|
260
|
+
|
|
261
|
+
An X11 session is required for the Linux desktop control features.
|
|
262
|
+
|
|
263
|
+
#### Windows Deployment
|
|
264
|
+
|
|
265
|
+
On Windows, the application manages a Task Scheduler entry that runs at user logon.
|
|
266
|
+
|
|
267
|
+
Typical setup:
|
|
268
|
+
|
|
269
|
+
1. Install the package with npm, or use the source install path above.
|
|
270
|
+
2. Create a `.env` file based on [`.env.example`](./.env.example).
|
|
271
|
+
3. Run `remote-mouse service install`.
|
|
272
|
+
4. Use `remote-mouse service restart`, `remote-mouse service disable`, or `remote-mouse service uninstall` as needed.
|
|
273
|
+
|
|
274
|
+
The generated scheduled task follows this model:
|
|
275
|
+
|
|
276
|
+
- Trigger: `At log on`
|
|
277
|
+
- Action: `schtasks /Create`
|
|
278
|
+
- Task name: the configured `serviceName`
|
|
279
|
+
- Command: launches the `remote-mouse` entrypoint with `REMOTE_MOUSE_DAEMON=1`
|
|
280
|
+
- Run only when the user is logged on
|
|
281
|
+
|
|
282
|
+
Notes:
|
|
283
|
+
|
|
284
|
+
- running in a user session is usually preferable because mouse, keyboard, browser, and overlay integrations depend on an interactive desktop session
|
|
285
|
+
- if you rely on the QR overlay or browser-opening actions, make sure the task runs in the same desktop session as the logged-in user
|
|
286
|
+
- if you installed the app globally, the generated task uses the `remote-mouse` CLI entrypoint directly
|
|
287
|
+
|
|
288
|
+
## Configuration
|
|
289
|
+
|
|
290
|
+
Startup configuration is handled through a `.env` file. Instead of duplicating every environment variable here, use [`.env.example`](./.env.example) as the reference.
|
|
291
|
+
|
|
292
|
+
### Access and Administration
|
|
293
|
+
|
|
294
|
+
Useful server pages:
|
|
295
|
+
|
|
296
|
+
- `/qr` displays the entry QR code
|
|
297
|
+
- `/ui/admin/server-info` shows server state, effective configuration, and recent logs
|
|
298
|
+
- `/ui/admin/config` lets you edit persisted settings grouped to match the configuration object structure
|
|
299
|
+
|
|
300
|
+
Useful CLI commands:
|
|
301
|
+
|
|
302
|
+
- `help` displays the available CLI commands
|
|
303
|
+
- `info` prints the server capabilities
|
|
304
|
+
- `config` prints the effective persisted configuration
|
|
305
|
+
- `config get <path>` prints one persisted configuration value
|
|
306
|
+
- `config set <path> <value>` updates one persisted configuration value
|
|
307
|
+
- `sys-config` prints the system configuration
|
|
308
|
+
- `service install` installs the local daemon/service
|
|
309
|
+
- `service disable` disables the local daemon/service
|
|
310
|
+
- `service uninstall` uninstalls the local daemon/service
|
|
311
|
+
- `service restart` restarts the local daemon/service
|
|
312
|
+
- `tasks` prints the task manager snapshot
|
|
313
|
+
- `task-manager` is an alias of `tasks`
|
|
314
|
+
- `samsung-detect` detects Samsung TVs available on the network
|
|
315
|
+
- `tokens` lists persisted entry tokens
|
|
316
|
+
- `open-qr` opens the QR page on the server
|
|
317
|
+
- `qr` is an alias of `open-qr`
|
|
318
|
+
|
|
319
|
+
Example:
|
|
320
|
+
|
|
321
|
+
- `remote-mouse config get logging.level`
|
|
322
|
+
|
|
323
|
+
### Routes
|
|
324
|
+
|
|
325
|
+
The server exposes two main HTTP surfaces:
|
|
326
|
+
|
|
327
|
+
- UI routes for HTML pages
|
|
328
|
+
- API routes for JSON and SSE
|
|
329
|
+
|
|
330
|
+
#### UI Routes
|
|
331
|
+
|
|
332
|
+
- `GET /` serves the client application
|
|
333
|
+
- `GET /qr` displays the entry QR code page
|
|
334
|
+
- `GET /ui/admin/server-info` serves the server info page
|
|
335
|
+
- `GET /ui/admin/config` serves the admin configuration page
|
|
336
|
+
|
|
337
|
+
#### Session Route
|
|
338
|
+
|
|
339
|
+
- `GET /api/sessions/:token` validates an entry token, creates the signed session cookie, and redirects to `/`
|
|
340
|
+
|
|
341
|
+
#### Admin API Routes
|
|
342
|
+
|
|
343
|
+
- `GET /api/admin/server-info/data` returns the current server snapshot:
|
|
344
|
+
version, uptime, connected clients, tasks, tokens, effective config, system config, and recent logs
|
|
345
|
+
- `GET /api/admin/configs` returns the managed configuration entries, schema, defaults, and managed paths
|
|
346
|
+
- `GET /api/admin/configs/:configId` returns one managed configuration entry
|
|
347
|
+
- `PATCH /api/admin/configs/:configId` updates one managed configuration entry
|
|
348
|
+
- `DELETE /api/admin/configs/:configId` resets one managed configuration entry to its default value
|
|
349
|
+
- `POST /api/admin/subs/configs` creates a config SSE subscription and returns its id plus the stream URL
|
|
350
|
+
- `GET /api/admin/subs/:id` opens the SSE stream for a previously created subscription
|
|
351
|
+
- `DELETE /api/admin/subs/:id` deletes a previously created subscription
|
|
352
|
+
- `POST /api/admin/restart-service` requests a local service restart through the application daemon service
|
|
353
|
+
|
|
354
|
+
#### Health Route
|
|
355
|
+
|
|
356
|
+
- `GET /health` returns a simple health payload with the current application version
|
|
357
|
+
|
|
358
|
+
#### Static Assets
|
|
359
|
+
|
|
360
|
+
After session validation, static assets are also available through:
|
|
361
|
+
|
|
362
|
+
- `/client/*`
|
|
363
|
+
- `/utils/shared/*`
|
|
364
|
+
- files served from `public/`
|
|
365
|
+
|
|
366
|
+
## Notes
|
|
367
|
+
|
|
368
|
+
- client access is controlled by either a generated token path or a fixed entry path, depending on configuration
|
|
369
|
+
- HTTPS can be enabled when required by the deployment context
|
|
370
|
+
- Samsung TV integration is optional and disabled by default
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {startServer} from '../server/index.js';
|
|
3
|
+
import {runCliCmd} from "../server/term/cli/runCliCmd.js";
|
|
4
|
+
|
|
5
|
+
async function main() {
|
|
6
|
+
const args = process.argv.slice(2);
|
|
7
|
+
|
|
8
|
+
if (args.length === 0) {
|
|
9
|
+
await startServer();
|
|
10
|
+
} else {
|
|
11
|
+
await runCliCmd(args);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
main().catch((error) => {
|
|
17
|
+
console.error('Erreur au démarrage:', error);
|
|
18
|
+
process.exit(1);
|
|
19
|
+
});
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
function getElement(id) {
|
|
2
|
+
return document.getElementById(id);
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
function getLayoutDom() {
|
|
6
|
+
return {
|
|
7
|
+
app: getElement('app'),
|
|
8
|
+
adminDrawerScrim: getElement('admin-drawer-scrim'),
|
|
9
|
+
leftMenu: getElement('left-menu'),
|
|
10
|
+
remoteStack: getElement('remote-stack'),
|
|
11
|
+
scrollZoneIndicator: getElement('scroll-zone-indicator'),
|
|
12
|
+
connectionOverlay: getElement('connection-overlay'),
|
|
13
|
+
notificationsRoot: getElement('client-notifications'),
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function getMouseRemoteDom() {
|
|
18
|
+
return {
|
|
19
|
+
touchpad: getElement('touchpad'),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function getKeyboardRemoteDom() {
|
|
24
|
+
return {
|
|
25
|
+
menu: getElement('menu'),
|
|
26
|
+
keyboardPanel: getElement('keyboard-panel'),
|
|
27
|
+
keyboardShortcutsBar: getElement('keyboard-shortcuts-bar'),
|
|
28
|
+
keyboardPanelPreview: getElement('keyboard-panel-preview'),
|
|
29
|
+
keyboardTextMode: getElement('keyboard-text-mode'),
|
|
30
|
+
keyboardLiveMode: getElement('keyboard-live-mode'),
|
|
31
|
+
textInput: getElement('text-input'),
|
|
32
|
+
liveTextInput: getElement('live-text-input'),
|
|
33
|
+
keyboardEsc: getElement('keyboard-esc'),
|
|
34
|
+
keyboardTab: getElement('keyboard-tab'),
|
|
35
|
+
keyboardEnter: getElement('keyboard-enter'),
|
|
36
|
+
keyboardShift: getElement('keyboard-shift'),
|
|
37
|
+
keyboardAlt: getElement('keyboard-alt'),
|
|
38
|
+
keyboardCtrl: getElement('keyboard-ctrl'),
|
|
39
|
+
btnTextEntry: getElement('btn-text-entry'),
|
|
40
|
+
btnLiveKeyboard: getElement('btn-live-keyboard'),
|
|
41
|
+
btnSendText: getElement('send-text'),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function getBrowserRemoteDom() {
|
|
46
|
+
return {
|
|
47
|
+
root: getElement('browser-shortcuts'),
|
|
48
|
+
browserLaunchers: getElement('browser-launchers'),
|
|
49
|
+
btnBrowserBack: getElement('btn-browser-back'),
|
|
50
|
+
btnBrowserForward: getElement('btn-browser-forward'),
|
|
51
|
+
btnPrevTab: getElement('btn-prev-tab'),
|
|
52
|
+
btnNextTab: getElement('btn-next-tab'),
|
|
53
|
+
btnNewTab: getElement('btn-new-tab'),
|
|
54
|
+
btnCloseTab: getElement('btn-close-tab'),
|
|
55
|
+
btnAddressBar: getElement('btn-address-bar'),
|
|
56
|
+
btnHardReload: getElement('btn-hard-reload'),
|
|
57
|
+
btnFullscreen: getElement('btn-fullscreen'),
|
|
58
|
+
btnVideoPlayPause: getElement('btn-video-play-pause'),
|
|
59
|
+
btnVideoMute: getElement('btn-video-mute'),
|
|
60
|
+
btnVideoFullscreen: getElement('btn-video-fullscreen'),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function getSystemRemoteDom() {
|
|
65
|
+
return {
|
|
66
|
+
root: getElement('system-controls'),
|
|
67
|
+
btnSystemShowDesktop: getElement('btn-system-show-desktop'),
|
|
68
|
+
btnSystemWindowLeft: getElement('btn-system-window-left'),
|
|
69
|
+
btnSystemWindowRight: getElement('btn-system-window-right'),
|
|
70
|
+
btnSystemStartMenu: getElement('btn-system-start-menu'),
|
|
71
|
+
btnSystemWindowToggle: getElement('btn-system-window-toggle'),
|
|
72
|
+
btnSystemWindowClose: getElement('btn-system-window-close'),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function getVlcRemoteDom() {
|
|
77
|
+
return {
|
|
78
|
+
root: getElement('vlc-controls'),
|
|
79
|
+
btnVlcOpen: getElement('btn-vlc-open'),
|
|
80
|
+
btnVlcWindowToggle: getElement('btn-vlc-window-toggle'),
|
|
81
|
+
btnVlcWindowClose: getElement('btn-vlc-window-close'),
|
|
82
|
+
btnVlcPrevious: getElement('btn-vlc-previous'),
|
|
83
|
+
btnVlcPlayPause: getElement('btn-vlc-play-pause'),
|
|
84
|
+
btnVlcNext: getElement('btn-vlc-next'),
|
|
85
|
+
btnVlcSeekBackward: getElement('btn-vlc-seek-backward'),
|
|
86
|
+
btnVlcStop: getElement('btn-vlc-stop'),
|
|
87
|
+
btnVlcSeekForward: getElement('btn-vlc-seek-forward'),
|
|
88
|
+
btnVlcVolumeDown: getElement('btn-vlc-volume-down'),
|
|
89
|
+
btnVlcMute: getElement('btn-vlc-mute'),
|
|
90
|
+
btnVlcVolumeUp: getElement('btn-vlc-volume-up'),
|
|
91
|
+
btnVlcFullscreen: getElement('btn-vlc-fullscreen'),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function getSamsungRemoteDom() {
|
|
96
|
+
return {
|
|
97
|
+
root: getElement('tv-controls'),
|
|
98
|
+
btnSamsungOn: getElement('btn-samsung-on'),
|
|
99
|
+
btnSamsungOff: getElement('btn-samsung-off'),
|
|
100
|
+
btnSamsungVolUp: getElement('btn-samsung-volup'),
|
|
101
|
+
btnSamsungVolDown: getElement('btn-samsung-voldown'),
|
|
102
|
+
btnSamsungMute: getElement('btn-samsung-mute'),
|
|
103
|
+
btnSamsungInput: getElement('btn-samsung-input'),
|
|
104
|
+
btnSamsungEnter: getElement('btn-samsung-enter'),
|
|
105
|
+
btnSamsungPcInput: getElement('btn-samsung-pc-input'),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function getAdminRemoteDom() {
|
|
110
|
+
return {
|
|
111
|
+
btnForceUpdateCheck: getElement('btn-force-update-check'),
|
|
112
|
+
btnInstallUpdate: getElement('btn-install-update'),
|
|
113
|
+
btnRestartService: getElement('btn-restart-service'),
|
|
114
|
+
btnOpenQrBrowserServer: getElement('btn-open-qr-browser-server'),
|
|
115
|
+
btnOpenQrBrowserClient: getElement('btn-open-qr-browser-client'),
|
|
116
|
+
btnToggleQrOverlay: getElement('btn-toggle-qr-overlay'),
|
|
117
|
+
btnOpenServerInfoBrowserServer: getElement('btn-open-server-info-browser-server'),
|
|
118
|
+
btnOpenServerInfoBrowserClient: getElement('btn-open-server-info-browser-client'),
|
|
119
|
+
btnOpenConfigPage: getElement('btn-open-config-page'),
|
|
120
|
+
btnOpenPreferencesPage: getElement('btn-open-preferences-page'),
|
|
121
|
+
btnRotateEntryToken: getElement('btn-rotate-entry-token'),
|
|
122
|
+
adminActionsDisabledMessage: getElement('admin-actions-disabled-message'),
|
|
123
|
+
adminAppVersion: getElement('admin-app-version'),
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
function getPreviewRemoteDom() {
|
|
128
|
+
return {
|
|
129
|
+
root: getElement('cursor-preview'),
|
|
130
|
+
previewCanvas: getElement('preview-canvas'),
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export function getDom() {
|
|
135
|
+
return {
|
|
136
|
+
...getLayoutDom(),
|
|
137
|
+
remotes: {
|
|
138
|
+
mouse: getMouseRemoteDom(),
|
|
139
|
+
keyboard: getKeyboardRemoteDom(),
|
|
140
|
+
browser: getBrowserRemoteDom(),
|
|
141
|
+
system: getSystemRemoteDom(),
|
|
142
|
+
vlc: getVlcRemoteDom(),
|
|
143
|
+
samsung: getSamsungRemoteDom(),
|
|
144
|
+
admin: getAdminRemoteDom(),
|
|
145
|
+
preview: getPreviewRemoteDom(),
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
}
|