# smolbote Design Document ### Version 1.0 * Profiles - Application-level profile manager - System-level and user-level profile config, with per-profile overrides [todo] * Configuration - Default system-level config and user-level overrides [todo] * Cookies - Filter list similar to the URL filter list [todo] * Tabs - Moving tabs between windows [todo] - Tab context menu [todo] * Page actions - Search [todo] - Zoom [todo] - Print [todo] * Navigation toolbar - Back and Forward history [todo] ## Overall design of smolbote The aim of smolbote is to be a lightweight and fast, to the point web browser. ### How smolbote works [TODO] 0. Launch 1. Check for other instance, unless otherwise specified - If other instance is found, pass the parameters to it and quit - Else, create a new instance 2. Create application object - Read configuration _ Create profiles 3. Pass parameters to application object - Create main window if there isn't one - open URLs ### main() and smolmain() [TODO] The main() function should contain all code to start up, check for another running instance, and if necessary pass the parameters to the other instance. The smolmain() function should contain code to create a new instance based on the parameters passed. IPC should be done with QLocalSocket. ### Dockable windows ### Folder structure - data/ - Any resource files (defaults, icons, etc) - docs/ - Where all the documentation lives - src/ - Source code - test/ - Testing grounds - tools/ - Hooks, qbs helpers, updater ### Libraries used All 3rd-party libraries should be placed in src/3rd-party/library-name, together with their corresponding license file. The license file should start with the library name and repository location. - tinytoml ## Components ### Bookmarks [TODO] - [TODO] Bookmark location should be read from profile, with a default in the config - [TODO] Split off xbel implementation into a library - [TODO] BookmarksLibrary API ### History History is managed by QtWebEngine. ### Cookies Cookies are managed by QtWebEngine.