diff --git a/badges/tests.json b/badges/tests.json index a337e7d..aeafa62 100644 --- a/badges/tests.json +++ b/badges/tests.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, "label": "tests", - "message": "58 passed", + "message": "81 passed", "color": "brightgreen" } diff --git a/demo/editmode.gif b/demo/editmode.gif index edd91d9..5b9a644 100644 Binary files a/demo/editmode.gif and b/demo/editmode.gif differ diff --git a/demo/notifications.gif b/demo/notifications.gif index 0ab5092..0c5d060 100644 Binary files a/demo/notifications.gif and b/demo/notifications.gif differ diff --git a/demo/quickstart.gif b/demo/quickstart.gif index d5f2920..f815788 100644 Binary files a/demo/quickstart.gif and b/demo/quickstart.gif differ diff --git a/demo/services.gif b/demo/services.gif new file mode 100644 index 0000000..c4fd41e Binary files /dev/null and b/demo/services.gif differ diff --git a/demo/services.tape b/demo/services.tape new file mode 100644 index 0000000..8d57873 --- /dev/null +++ b/demo/services.tape @@ -0,0 +1,159 @@ +# systab — Persistent Services +# Creates a managed service (no timer), checks status, disables/enables, +# inspects via edit mode, then cleans up. + +Output demo/services.gif +Set Shell bash +Set Width 1200 +Set Height 600 +Set FontSize 16 + +Set TypingSpeed 50ms + +Sleep 1s + +# Create a persistent service +Hide +Type "./demo/note.sh 'Creating a persistent service job (runs on login, auto-restarts)'" +Enter +Sleep 500ms +Show +Sleep 1s +Type "systab -s -n monitor -c 'sleep 3600'" +Sleep 500ms +Enter +Sleep 2s + +# Check status — should show Type: Service, Active (running) +Hide +Type "./demo/note.sh 'Checking status — service is running'" +Enter +Sleep 500ms +Show +Sleep 1s +Type "systab -S monitor" +Sleep 500ms +Enter +Sleep 2s + +# Inspect the generated unit file +Hide +Type "./demo/note.sh 'Inspecting the generated unit file'" +Enter +Sleep 500ms +Show +Sleep 1s +Type "cat ~/.config/systemd/user/systab_*.service | less" +Sleep 500ms +Enter +Sleep 2s +Type "/SYSTAB_TYPE" +Enter +Sleep 2s +Type "q" +Sleep 1s + +# View logs +Hide +Type "./demo/note.sh 'Viewing service logs'" +Enter +Sleep 500ms +Show +Sleep 1s +Type "systab -L monitor" +Sleep 500ms +Enter +Sleep 2s + +# Disable the service +Hide +Type "./demo/note.sh 'Disabling the service (stops it)'" +Enter +Sleep 500ms +Show +Sleep 1s +Type "systab -D monitor" +Sleep 500ms +Enter +Sleep 2s + +# Verify disabled +Hide +Type "./demo/note.sh 'Verifying service is disabled/stopped'" +Enter +Sleep 500ms +Show +Sleep 1s +Type "systab -S monitor" +Sleep 500ms +Enter +Sleep 2s + +# Re-enable +Hide +Type "./demo/note.sh 'Re-enabling the service'" +Enter +Sleep 500ms +Show +Sleep 1s +Type "systab -E monitor" +Sleep 500ms +Enter +Sleep 2s + +# Open edit mode — service appears with 'service' in schedule column +Hide +Type "./demo/note.sh 'Service jobs appear in edit mode with schedule = service'" +Enter +Sleep 500ms +Show +Sleep 1s +Type "EDITOR=nano systab -e" +Sleep 500ms +Enter +Sleep 3s + +# Just view and exit +Ctrl+X +Sleep 2s + +# Also show a service created via edit mode +Hide +Type "./demo/note.sh 'Creating a service via edit mode: new:s | service | cmd'" +Enter +Sleep 500ms +Show +Sleep 1s +Type "EDITOR=nano systab -e" +Sleep 500ms +Enter +Sleep 3s + +Ctrl+V +Sleep 500ms +Down 5 +Sleep 500ms +Type "new:s,n=watcher | service | sleep 7200" +Sleep 1s +Enter + +Ctrl+O +Sleep 500ms +Enter +Sleep 500ms +Ctrl+X +Sleep 3s + +# Final status +Hide +Type "./demo/note.sh 'Both services visible in status'" +Enter +Sleep 500ms +Show +Sleep 1s +Type "systab -S" +Sleep 500ms +Enter +Sleep 3s + +Sleep 2s diff --git a/systab b/systab index 3a36de2..1893189 100755 --- a/systab +++ b/systab @@ -26,6 +26,7 @@ opt_filter="" opt_output="" opt_name="" opt_jobid="" +opt_service=false usage() { cat < Time specification (see TIME FORMATS below) + -s Create a persistent service (no timer; mutually exclusive with -t/-i/-m/-o) -c Command string to execute -f