pyx-sys
aims to make Linux workspaces enumerable as a 'catalogue' and recordable/recoverable
to/from disk. It collects interfaces to various tools towards this goal in one Python library:
- tmux terminal multiplexer
- wmctrl window manager
- xwininfo windowing system
- Firefox web browser profile recovery
Moreover, it is fast: I was shocked by how slow an alternative interface to one of the aforementioned tools was, which just goes to show that repo popularity doesn't guarantee quality software.
Alongside this project I began experimenting with use of LXC/LXD containers to get Firefox 'passthrough' in an effort in effort to 'freeze' container state. Unfortunately this turned out to be a misunderstanding: container state is not persisted on shutdown, however around this time LXC VMs were released which do...
- In future I would consider porting parts of this library to use ctypes rather than
subprocess
to interface with the workspace management tools (see the repo's issue tracker for details)
For this project I also developed an elaborate conceptual framework (partly from the academic literature on the topic of computer workspace management), including one particularly nice idea I found called 'Zubin spaces'.
Practically, one thing I took away from those frameworks has been a greater appreciation (whether embodied in tools or not) of how, when closing a workspace, we tend to presume that saving files is sufficient, but if you're in flow it's more important to fully record what you had open & why (in terms of the logical connections between tasks being done in files, e.g. if debugging, what hypotheses you were trying to dis/prove etc.) as hours/days later that sense of 'local purpose' will be blank). There is considerable infrastructure around this for issue trackers, but in day-to-day programming it is 'unhoused' as it were, and as such resides in our short term memory alone.