1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
# 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
Components should, when possible, be split off into self-contained static
libraries. This is to reduce recompile times.
### Navigation
Includes the Address bar (URLLineEdit).
### 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.
|