TUDO Univeral Desktop Operator
Transforming User-Device Operation
Everything (in Portuguese)
Take a pick at the meaning.
Desktop Omnibar. Type and launch stuff. Pretty simple.
Semi-serious learning project.
Meant to be used as a wristwatch. You want it there but you don't need to look at it all the time.
Maybe just replace the concept of a top/bottom bar with the clock and stuff
- As low latency as possible both in launching and in using
- Fast indexing
- Tray icons, interactable
- TOML configuration (with sane defaults)
- Extendable in Lua
- Minimal list of dependencies, i.e no UI toolkit
- TTF parser
- HTTP client
- SDL2 with
ttf
andimage
- Application launcher (XDG only)
- XCB and EWMH based window switching (supports: i2, awesome, xfce, etc.)
pass
secrets integration- (Really) Minimal UI lib with a couple of components and a layout manager
- Primitive Lua sources support (no function exporting yet)
- Texture cache (fonts, icons and generic image files)
- Asynchronous load of item sources in order to reduce startup time (no async/await, simple thread spawn)
- XDG Applications
- EWMH based window switching (supports: i3, awesome, xfce, etc.)
tmux
sessionspass
secrets- TODO: Notion Notes
- TODO: Browser tabs (this one is a challenge)
- Solve the mistery of proper font atlas, right now using direct render from SDL2 ttf. It's kerning...
- action tags and search for action (:run, :window, :secret, etc)
- Icon files may not exist even if referenced by XDG icon files format
- Various font sizes and faces. This was hard....
- Primitive animations
- tmux list source items, open default terminal in a given session
- Async load sources
- Implement drawing 'toolkit' context containing Sdl, Canvas, TextureCreator, etc
- Show that the sources are still loading (really simple, but working)
- Prevent from starting multiple instances
- Create .config folder, need to check if this is cross platform
- Lua based configuration (very early but promising)
- Migrate to mlua, due to serde support
- Support for multiple screens
- ! Layout builder and simplified component access
- Component get_state and set_state
- Use a new component spinner to sinalize sources loading
- Extend canvas drawing functions implementing more complex shapes (rounded rect, circle, quadrants, ...)
- ! Implement component focus (which will receive events)
- Mouse coords translation to local component coords and list item click
- Get system default font, maybe
- Prompt window available to actions
- More prettier
- Better search (fuzzy)
- Notion integration for notes. Depends on a prompt action.
- Investigate async/await for async source loading
- Dashboard-like widgets for things like metrics
- Submenus for some actions
! - means ongoing
Just add SDL_VIDEODRIVER=wayland
to your environment variables