Plebware Control Centre Banner

PlebMachine Component and Script Inventory

PlebMachine โ€” Component and Script Inventory

Organised by function. Each entry gives the path, what it does, and who calls it or uses it.


1. User-facing applications

These are what a user launches. PlebDecide, PlebBreaks, and PlebGizmo are standalone and can run with PlebMachine absent.

Component Launch command Main file
PlebMachine (bootloader) plebmachine /opt/plebmachine/ui/splash.py
PlebDecide plebdecide /opt/plebmachine/plebdecide/__main__.py
PlebEnvironment plebenvironment (CLI only) /opt/plebmachine/control-center/pleb-environment.py
PlebBreaks plebbreaks /opt/plebmachine/plebbreaks/__main__.py
PlebGizmo menu โ†’ PlebGizmo /opt/plebmachine/core/gizmo/gizmo.py
PlebMachine Tools menu โ†’ PlebMachine Tools /opt/plebmachine/ui/plebmachine-tools.py

2. Bootloader and environment lifecycle

The pieces that tie everything together at login and logout.

Script Path Called by Purpose
splash.py ui/splash.py plebmachine command, menu entry Registry check, capture original desktop, route to PlebDecide or PlebEnvironment
plebmachine-unload.py ui/plebmachine-unload.py PlebEnvironment (Off click) Restore workspace count and wallpapers, write PM_STATE=OFF
pleb-environment.py control-center/pleb-environment.py splash.py Five states, twelve modes, graduation, counters
gizmo.py core/gizmo/gizmo.py PlebMachine Tools, menu Application launcher, mode-aware

3. Tools resolver

Used by PlebEnvironment when switching modes.

File Path Purpose
plebtools-resolve.py bin/plebtools-resolve.py Reads catalogue, finds installed apps, shows picker, launches
tools.json config/tools.json Twelve modes with capabilities, candidates, PlebWare URLs
<mode>-tools.sh ร— 12 bin/*-tools.sh Thin wrappers: exec python3 plebtools-resolve.py <mode>

The twelve modes are Everyday, Author, Study, Research, Graphics, Music, Video, Broadcast, AI Helpers, Developer, Accounting, and Leisure.


4. Support scripts

Called by PlebEnvironment during state or mode transitions.

Script Path Purpose
wallpaper-apply.sh bin/wallpaper-apply.sh Sets XFCE wallpaper via xfconf-query
mode-switch.sh bin/mode-switch.sh wmctrl -s N to switch workspace
workspace-switch.sh bin/workspace-switch.sh (if present) Alternative workspace switcher
cognitive-pause.sh bin/cognitive-pause.sh Save-work prompt before switching (used by Nexus)
on-mode-change bin/on-mode-change Hook called by Gizmo when mode changes
gizmo-launcher.sh bin/gizmo-launcher.sh Thin wrapper that runs gizmo.py

Note: workspace-switch.sh may or may not exist on your system โ€” PlebEnvironment checks for it and falls back to _ensure_workspace_count if absent.


5. Launchers

Installed to standard locations so the apps appear in the menu and run from CLI.

Path Type Runs
/usr/bin/plebmachine shell script python3 /opt/plebmachine/ui/splash.py
/usr/bin/plebdecide shell script python3 -m plebdecide
/usr/bin/plebbreaks shell script python3 -m plebbreaks
/usr/bin/plebenvironment shell script python3 .../pleb-environment.py
/usr/share/applications/plebmachine.desktop desktop entry menu โ†’ PlebMachine
/usr/share/applications/plebdecide.desktop desktop entry menu โ†’ PlebDecide
/usr/share/applications/plebbreaks.desktop desktop entry menu โ†’ PlebBreaks
~/.local/share/applications/*.desktop per-user overrides for testing, dev machine

Note: plebenvironment.desktop was deliberately removed from the menu. PlebEnvironment is only meant to be reached via splash or CLI, not directly.


6. User state files

Runtime data, never shipped in the .deb, never overwritten by upgrades.

File Written by Contents
~/.plebmachine/state/user_profile.conf PlebDecide experience_level=beginner/intermediate/advanced/super_user
~/.plebmachine/state/progression.conf PlebEnvironment earned level, counters
~/.plebmachine/state/original_desktop.conf splash.py (capture) workspace count, all wallpapers
~/.config/plebmachine/state.conf PlebEnvironment / unload PM_STATE, MODE, USER_LEVEL, LAST_UPDATED
~/.config/plebbreaks/settings.conf PlebBreaks interval, variant, reminders toggle, safety acknowledged
~/.config/gizmo-launcher/modes.json Gizmo mode definitions, user-editable
~/.config/gizmo-launcher/current_mode Gizmo last selected mode

7. Assets

Images, icons, wallpapers.

Icons

/opt/plebmachine/icons/128x128/plebmachine.png
/opt/plebmachine/icons/state/*.png              state icons
/opt/plebmachine/icons/64x64/plebmachine-*.png  mode icons
/opt/plebmachine/plebdecide/icons/png/{128,256,512}.png
/opt/plebmachine/plebbreaks/icons/png/{128,256,512}.png
/opt/plebmachine/plebenvironment/icons/png/{128,256,512}.png

Branding

/opt/plebmachine/plebdecide/icons/branding/
  โ”œโ”€โ”€ plebdecide-header.png
  โ”œโ”€โ”€ plebdecide-about.png
  โ””โ”€โ”€ plebdecide-welcome.png

/opt/plebmachine/plebbreaks/icons/branding/
  โ”œโ”€โ”€ plebbreaks-header.png
  โ”œโ”€โ”€ plebbreaks-about.png
  โ””โ”€โ”€ plebbreaks-notice.png

/opt/plebmachine/core/gizmo/gizmo-header.png
/opt/plebmachine/ui/plebmachine-splash.png
/opt/plebmachine/ui/plebmachine-tools.png

Wallpapers

/usr/share/plebmachine/wallpapers/
  โ”œโ”€โ”€ everyday-{morning,afternoon,evening,night}.jpg
  โ”œโ”€โ”€ author-{...}.jpg
  โ””โ”€โ”€ ... (12 modes ร— 4 times of day = 48 files)

8. Build and packaging

Build and packaging information for the current Debian package workflow.

File Path Purpose
Build script ~/build_plebmachine_deb.sh Produces plebmachine_<version>_all.deb
Version format 1.YYYYMMDD-HHMM e.g. 1.20260927-1430
Output ~/plebmachine_<version>_all.deb ~31 MB with wallpapers

9. The PlebDecide internal structure

Since PlebDecide is the largest single component, it is worth breaking down separately.

/opt/plebmachine/plebdecide/
โ”œโ”€โ”€ __init__.py
โ”œโ”€โ”€ __main__.py              entry point, accepts --setup-only
โ”œโ”€โ”€ selftest.py              engine verification tests
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ core/
โ”‚   โ”œโ”€โ”€ model.py             Decision, Factor, Option dataclasses
โ”‚   โ”œโ”€โ”€ sets.py              seven decision set definitions
โ”‚   โ”œโ”€โ”€ engine.py            user-weighted scoring
โ”‚   โ”œโ”€โ”€ report.py            plain-text report renderer
โ”‚   โ”œโ”€โ”€ setup_engine.py      PlebMachine Setup (designer-weighted)
โ”‚   โ””โ”€โ”€ registry.py          writes user_profile.conf
โ””โ”€โ”€ ui/
    โ”œโ”€โ”€ slider.py            12-position slider widget
    โ””โ”€โ”€ app.py               main window, all views

10. The PlebBreaks internal structure

PlebBreaks has its own exercise library, settings system, self-test, and user-interface components.

/opt/plebmachine/plebbreaks/
โ”œโ”€โ”€ __init__.py
โ”œโ”€โ”€ __main__.py              entry point, accepts --minimised
โ”œโ”€โ”€ selftest.py
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ core/
โ”‚   โ”œโ”€โ”€ model.py             Exercise, Variant dataclasses
โ”‚   โ”œโ”€โ”€ library.py           36 exercises, 7 categories
โ”‚   โ””โ”€โ”€ settings.py          preferences file
โ””โ”€โ”€ ui/
    โ””โ”€โ”€ app.py               main window, ExerciseRunner,
                             ReminderPopup, SettingsDialog,
                             CloseChoiceDialog, AboutWindow,
                             SafetyNotice

11. Summary counts

The current inventory can be summarised by the following counts.

Category Count
User-facing applications 6
Lifecycle scripts 4
Tools resolver files 14 (resolver + catalogue + 12 wrappers)
Support scripts 6
Launchers (system) 3 commands + 3 desktop entries
User state files 7
Wallpapers 48
Branding images 10

12. What is not in the current build

Things planned but not yet implemented, for completeness.

โ†ฉ Return to the article I came from

Previous: PlebBreaks: Interrupting Accumulated Strain.

Next: Captain Gemini Special Report โ€” A Pensioner's Day Between Work, Survival, and Software.

No earlier PlebWare article yet

You haven't viewed any other PlebWare articles in this tab yet. If you arrived from Google or opened this article directly, there may be no earlier PlebWare article to return to.

You can keep exploring from here: