Intent: Reinventing Desktop UX

Motivation:

Most desktop UX is a blank canvas with the whole universe of computing open to its users. In addition, the manipulative tactics of social media, video streaming platforms, and other software designed to constantly capture the attention of its users, leads to an extremely distracting environment full of easily treaded time sinks.

The goal of "Intent" is to reject this paradigm and bring mindfullness to the way we interact with our computing devices. Instead of sitting down at your computer and habitually opening the usual vices, "Intent" immediately confronts you with the question of "What do you want to accomplish?". Select a session and do what you set out to without distraction.

Select a task and "Intent" will launch a pre-configured list of applications, websites, and folders to get to the task at hand. Pause sessions to hide the windows, switch contexts, and resume later. Set a timer and "Intent" will automatically close them down when time has expired.

Features:

  • Launch a session of applications, shortcuts, websites, and folders
    • Fully threaded to speed things up
  • Pause a session, hiding all visible windows
  • Resume a session, restoring the hidden windows
  • End a session, terminating all processes of visible windows
    • Also ends all processes that have a .exe path matching one in the session startup list. This is so that processes that close to the tray will terminate when ending a session
      • It even resolves the launched shortcut path to the exe name!
    • Shortcoming: Apps launched via Reparse points aren't handled: https://docs.microsoft.com/en-us/windows/win32/fileio/reparse-points
    • Shortcoming: Processes in the startup list that launch another process aren't handled
      • e.g. Discord as found in the Windows search will be launched as a shortcut with target "Discord\Update.exe --processStart Discord.exe"
  • Set a timer to end a session once it has expired
  • Log activity of sessions (Work In Progress)
  • Display the active session startup-tasks and the list of visible windows
  • Display duration each session is active

Future Goals:

  • UX to construct sessions easily
  • Website block lists per session
  • Improved logging of usage
  • Properly restore z-ordering of windows when resuming a session
  • Layout launched application windows with multi-monitor support
    • UX to design the layout of the windows in "Intent"
  • Single app focus mode.
    • e.g. fullscreen, un-closable, and always in focus terminal or note-taking app
  • Aesthetically pleasing design and UX
  • Display Todo list
  • Experiment: Have user type an intention before starting a session that is displayed in a task bar
  • Stretch Goal: Calendar integration

Jam Thoughts: Overall I am very happy with the progress I made this week despite being busy with a lot of other work. A lot of time was spent learning win32 apis and all of the idiosyncrasies. I will definitely be continuing this project over the next few weeks as I would like to get it to the point where it is my daily driver. After that I am sure plenty of new ideas will come. I would love to hear your feedback and thoughts on the direction of the project.

Tools Used: Odin with native microui and sdl2 bindings. Odin sys-windows-generator for win32 bindings.

Demo: output.mp4


Edited by Phil on

Aren't you afraid that killing applications with the timer will lose user data if it wasn't saved ?

I imagine this behavior is only desired for certain sessions such as "Entertainment" and am planning to make the timer behavior more configurable. For example, it could be configured to just pause the session, hiding the visible windows. And kicking the user back to the main "Intent" screen.


Edited by Phil on
Replying to mrmixer (#25291)