feat: implement theming & file icon extension support #38

Open
opened 2021-12-28 03:52:12 +00:00 by fortressia · 0 comments

Visual Studio Code's .vsix file is nothing more than a .zip file. Once extracted, the JavaScript code is there and available to be run like a normal JavaScript file. Obviously, implementing this is not for our MVP target, but we still need to implement the basic extensions: themes, file icons, and product icon extensions. Obviously, the UI needs some theming and icons, so we obviously need support for these extensions.

Visual Studio Code has a brief reference on these (read: https://code.visualstudio.com/api/extension-guides/file-icon-theme, https://code.visualstudio.com/api/references/theme-color, and https://code.visualstudio.com/api/references/icons-in-labels), and from the documentation it seems that it will be easy for us to implement. The manifest file and the theme files are all in JSON format, which Qt has support for. As we use Rust now, then we will use Serde JSON for this.

The only problem for theming is that Qt's default UI components does not suit Visual Studio Code's UI (read: #3) As we moved to GTK, then we will face GNOME's Adwaita design, but I think only that, I'm thinking to just Adwaita though. Once we add the UI tweaks, including the manual painters shenanigans I mentioned, theme extension support will be completed.

Visual Studio Code's .vsix file is nothing more than a .zip file. Once extracted, the JavaScript code is there and available to be run like a normal JavaScript file. Obviously, implementing this is not for our MVP target, but we still need to implement the basic extensions: themes, file icons, and product icon extensions. Obviously, the UI needs some theming and icons, so we obviously need support for these extensions. Visual Studio Code has a brief reference on these (read: https://code.visualstudio.com/api/extension-guides/file-icon-theme, https://code.visualstudio.com/api/references/theme-color, and https://code.visualstudio.com/api/references/icons-in-labels), and from the documentation it seems that it will be easy for us to implement. ~~The manifest file and the theme files are all in JSON format, [which Qt has support for](https://doc.qt.io/qt-5/json.html).~~ As we use Rust now, then we will use Serde JSON for this. ~~The only problem for theming is that Qt's default UI components does not suit Visual Studio Code's UI (read: #3)~~ As we moved to GTK, then we will face GNOME's Adwaita design, but I think only that, I'm thinking to just Adwaita though. ~~Once we add the UI tweaks, including the manual painters shenanigans I mentioned, theme extension support will be completed.~~
fortressia added this to the MVP milestone 2021-12-28 06:34:34 +00:00
fortressia added the
feat
label 2021-12-28 06:34:49 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: fortressia/echidna#38
There is no content yet.