AtOffice-Shell is a small Python terminal project that combines three tools in one workspace:
PyFunnyfor joke output with ASCII characters and sound effectsTodoCLIfor a simple SQLite-backed task managerChronoTermfor time, timezone, alarm, and stopwatch commands
The AtOffice shell brings these tools together into one REPL so you can run commands from a single prompt.
The main combined shell is launched from project.py. Inside it, you can:
- tell jokes
- manage todos
- use ChronoTerm commands
- open the interactive settings menu
Prompt:
atoffice-shell:
PyFunny uses pyjokes, cowsay, and sound effects.
Available commands:
jokejoke_trex
The joke command can be customized from the settings menu:
- joke character
- joke sound
TodoCLI stores tasks in todos.db.
Available commands:
addtask "Task name" "Category"deletetask 1updatetask 1 "New task" "New category"completetask 1showtasks
ChronoTerm can run on its own or through the AtOffice shell.
Available commands:
nowtimeworldtz listtz add Asia/Kolkatatz remove Asia/Kolkataalarm listalarm add "07:30" --label Wakeupalarm remove <alarm_id>sw showsw startsw pausesw lapsw reset
ChronoTerm settings currently support:
- time template selection
- 12-hour / 24-hour clock format
From the project root:
python project.pyThis starts the shared shell where all supported commands can be used.
From the project root:
python chronoterm_project.pyThis starts the dedicated ChronoTerm shell.
Inside the AtOffice shell, type:
settings
This opens the arrow-key settings menu.
Current editable settings:
joke- character
- sound
time- template
- clock format
world- clock format
Settings are saved to a JSON state file through ChronoTerm state storage, so choices persist between runs.
- project.py Combined AtOffice REPL
- chronoterm_project.py Root entry point for ChronoTerm shell
- pyfunny.py Joke commands
- todocli.py Todo commands
- database.py SQLite operations for todos
- model.py Todo model
- settings.py Arrow-key settings menu
- todos.db SQLite database file
- chronoterm/shell.py Main ChronoTerm commands and REPL
- chronoterm/timezones.py Timezone formatting and world time tables
- chronoterm/alarms.py Alarm management
- chronoterm/stopwatch.py Stopwatch logic
- chronoterm/state.py Persistent JSON-backed settings/state
- chronoterm/clock_ascii.py ASCII clock templates
- chronoterm/sound.py Alarm sound helper
- chronoterm/sounds Audio files used by jokes and alarms
Based on the current code, the project uses these main Python packages:
typerrichpyjokescowsayplaysoundpytz
It also uses standard-library modules such as:
sqlite3jsondatetimepathlibzoneinfo
Inside atoffice-shell:
joke
showtasks
addtask "Finish README" "Programming"
time
world
tz add Europe/Dublin
settings
Inside chronoterm>:
now
time
world
tz list
alarm list
sw start
sw show
- The project is currently Windows-friendly in a few places, especially the settings menu and sound behavior.
- Some commands depend on audio playback support.
- Todo data is stored locally in SQLite.
- ChronoTerm settings are stored in a JSON file managed by
StateStore.