aboutsummaryrefslogtreecommitdiffstats
path: root/deckit/__main__.py
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-11-10 10:03:00 +0100
committerDanilo M. <danix@danix.xyz>2026-11-10 10:03:00 +0100
commit819745a39220b49e848422b4bf0ee71dc317fc4d (patch)
tree17475ac554a44eec1f9adee45ad0be3a437509d3 /deckit/__main__.py
parent5ebfb5850713c038e37baddbadde3320aca2c4e4 (diff)
downloaddeck-it-819745a39220b49e848422b4bf0ee71dc317fc4d.tar.gz
deck-it-819745a39220b49e848422b4bf0ee71dc317fc4d.zip
feat: dashboard-only mode and keystone settings integration
The second display is now optional: [display] enabled = false skips the headless output, wayvnc, AVNC and the VNC tunnel, so the tablet runs the dashboard alone. `deck-it env` reports it as EXTEND. Keystone's new deck-it page (quickshell, desktop/modules/deckit) edits the config and the autostart line, which needed: - The user config is merged over the shipped config.toml key by key within each table instead of replacing it whole, so the page writes a sparse file and an unset key falls back to the default. - `deck-it defaults` prints the shipped config as JSON for the page's placeholders, so keystone never copies the defaults. - `deck-it status` prints one JSON line (server, display, waiting, tablet, extend) for the page's status line and restart check. - [launch] is now `apps`, a list of desktop ids run with gtk-launch, with name and icon read from the .desktop file, so the page can pick launchers from the installed apps. The old command tables are gone; the client still sends only an id, which must be listed and installed. A launcher whose icon the theme lacks shows its name. - [wifi] address gives the tablet's address in config. The last address that worked is kept in ~/.config/deck-it/last-wifi: `stop` deletes the runtime serial file, so a restart from the page used to wait forever. - `stop` also ends a login's `wifi --wait`, matched by its own command line only, so repeated restarts do not pile up waiters. Also fixed: `deck-it env` fell through into the usage text, and the usage text printed the license header since the header was added. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'deckit/__main__.py')
-rw-r--r--deckit/__main__.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/deckit/__main__.py b/deckit/__main__.py
index 5b6cda8..98a7169 100644
--- a/deckit/__main__.py
+++ b/deckit/__main__.py
@@ -14,7 +14,7 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-"""`python3 -m deckit [setup-display | env]`."""
+"""`python3 -m deckit [setup-display | env | defaults]`."""
import sys
@@ -27,7 +27,12 @@ def main():
cfg = config.load_config()
d, p = cfg.get("display", {}), cfg.get("ports", {})
print(f"MON={d.get('name', 'TAB')} PORT={p.get('command_center', 8765)} "
- f"VNC_PORT={p.get('display', 5900)}")
+ f"VNC_PORT={p.get('display', 5900)} EXTEND={int(d.get('enabled', True))} "
+ f"WIFI_ADDR={cfg.get('wifi', {}).get('address', '')}")
+ elif args == ["defaults"]:
+ # For keystone's settings page: the shipped values a user file overrides.
+ import json
+ print(json.dumps(config.defaults()))
elif args == ["setup-display"]:
from .display import setup_display
setup_display(config.load_config())