From 889ab922015c774297e751310fd2a526673cc0c5 Mon Sep 17 00:00:00 2001 From: Madman10K Date: Tue, 1 Aug 2023 15:03:28 +0300 Subject: [PATCH] Update --- desktop.md | 2 + untitled-desktop/theming/core-spec.md | 244 ----------------------- untitled-desktop/theming/ext-imguizmo.md | 41 ---- untitled-desktop/theming/ext-implot.md | 66 ------ untitled-desktop/theming/ext-knobs.md | 18 -- untitled-desktop/theming/ext-spinners.md | 48 ----- 6 files changed, 2 insertions(+), 417 deletions(-) delete mode 100644 untitled-desktop/theming/core-spec.md delete mode 100644 untitled-desktop/theming/ext-imguizmo.md delete mode 100644 untitled-desktop/theming/ext-implot.md delete mode 100644 untitled-desktop/theming/ext-knobs.md delete mode 100644 untitled-desktop/theming/ext-spinners.md diff --git a/desktop.md b/desktop.md index 98d084e..713e673 100644 --- a/desktop.md +++ b/desktop.md @@ -142,6 +142,7 @@ our toolkit 1. Themes and theme formats have official\* specifications, that define the format of a theme. These specifications can be extended using extensions to the standard. + ## To be added We're still developing our scope so this section should be expanded in the future diff --git a/untitled-desktop/theming/core-spec.md b/untitled-desktop/theming/core-spec.md deleted file mode 100644 index 558a61a..0000000 --- a/untitled-desktop/theming/core-spec.md +++ /dev/null @@ -1,244 +0,0 @@ -# UntitledDesktopEnvironment Core Theme Specification -## Authors -1. [Stanislav Vasilev(Madman10K)](https://github.com/Madman10K) - -## Version -Current version is 0.9.0.0 - -## Overview -The UntitledDesktopEnvironment supports system theming i.e. the ability for the user to modify the look of an -application or an array of applications. This specification can become outdated depending on changes in upstream libraries, -mainly [imgui](https://github.com/ocornut/imgui) - -By theming we mean the following things: -1. Changing of the colours for different UI elements of an application -1. Changing properties of the UI rendering and composition system(e.g. changing the padding values) -1. Changing of UI element properties such as size -1. Changing properties outside the application(e.g. theming of window decorations) - -This specification establishes the standard format that applications built using our toolkit, the -[UntitledImGuiFramework](https://github.com/MadLadSquad/UntitledImGuiFramework), can use for their own customization. - -## Properties of a theme -A theme has the following properties: -1. Changes the look of an application -1. Changes the look of the decoration of an application as defined by the given window manager/composer -1. Can be set or unset, set as the default, as fallback or as an override to a specific default theme -1. Can become a parent theme, that other themes inherit from -1. Can be owned by users, a group of users or all the users on a system or network -1. Can be extended using extensions -1. Extensions can be standardised and included as "Core" extensions -1. Can be overriden by an application - -## Compatibility -By compatibility, we mean compatibility with other theme standards and formats. Here are the compatibility properties: -1. Only core themes can be compatible with other desktops, extensions are per-app/widget and are in most cases impossible -to have a compatibility layer made for them -1. Themes are written in a widely parseable and technology agnostic format, so that easy conversion can be established -1. Core themes are provided with 2+ way theme conversion tools(i.e. Converting between a GTK and UDE or GTK and QT theme -using UDE themes as a mediator) - -## Files and file locations -Global system themes are stored under `/usr/share/themes/`. Local user themes are stored under `/home/user/.themes/` or other -locations defined by XDG. - -To provide a smooth experience the first time a theme is set to be used, GTK and QT themes are automatically generated. -Theme authors can also patch their themes with specific changes to the autogenerated QT and GTK themes. -In this case the autogenerated theme gets merged with the patches as the developer intended. If the patches are not -functional and error should be raised to notify the user of that. - -Additionally, if possible, the developer can leave metadata for the theme as a `metadata.yaml`. -The metadata file looks like this: -```yaml -# More to be added here -developer: A A -theme-name: Name -theme-version: 1.0.0.0 -report-error-uri: https://dev-site/report -``` -The `report-error-uri` is especially important in cases where there is an error in merging the themes. -If it exists the application should display the link for the user to quickly report the error. - -## Format -The format for an UntitledDesktopEnvironment theme is established as standard YAML. -Here is the full YAML schema for the core standard. Features not part of [dear imgui](https://github.com/ocornut/imgui) -will have comments. - -Colours in RGBA format 0-1: -```yaml -text: [ 0, 0, 0, 0 ] -text-disabled: [ 0, 0, 0, 0 ] -window-bg: [ 0, 0, 0, 0 ] -child-bg: [ 0, 0, 0, 0 ] -popup-bg: [ 0, 0, 0, 0 ] -border: [ 0, 0, 0, 0 ] -border-shadow: [ 0, 0, 0, 0 ] -frame-bg: [ 0, 0, 0, 0 ] -frame-bg-hovered: [ 0, 0, 0, 0 ] -frame-bg-active: [ 0, 0, 0, 0 ] -title-bg: [ 0, 0, 0, 0 ] -title-bg-active: [ 0, 0, 0, 0 ] -title-bg-collapsed: [ 0, 0, 0, 0 ] -menubar-bg: [ 0, 0, 0, 0 ] -scrollbar-bg: [ 0, 0, 0, 0 ] -scrollbar-grab: [ 0, 0, 0, 0 ] -scrollbar-grab-hovered: [ 0, 0, 0, 0 ] -scrollbar-grab-active: [ 0, 0, 0, 0 ] -check-mark: [ 0, 0, 0, 0 ] -slider-grab: [ 0, 0, 0, 0 ] -slider-grab-active: [ 0, 0, 0, 0 ] -button: [ 0, 0, 0, 0 ] -button-hovered: [ 0, 0, 0, 0 ] -button-active: [ 0, 0, 0, 0 ] -header: [ 0, 0, 0, 0 ] -header-hovered: [ 0, 0, 0, 0 ] -header-active: [ 0, 0, 0, 0 ] -separator: [ 0, 0, 0, 0 ] -separator-hovered: [ 0, 0, 0, 0 ] -separator-active: [ 0, 0, 0, 0 ] -resize-grip: [ 0, 0, 0, 0 ] -resize-grip-hovered: [ 0, 0, 0, 0 ] -resize-grip-active: [ 0, 0, 0, 0 ] -tab: [ 0, 0, 0, 0 ] -tab-hovered: [ 0, 0, 0, 0 ] -tab-active: [ 0, 0, 0, 0 ] -tab-unfocused: [ 0, 0, 0, 0 ] -tab-unfocused-active: [ 0, 0, 0, 0 ] -docking-preview: [ 0, 0, 0, 0 ] -docking-empty-bg: [ 0, 0, 0, 0 ] -plot-lines: [ 0, 0, 0, 0 ] -plot-lines-hovered: [ 0, 0, 0, 0 ] -plot-histogram: [ 0, 0, 0, 0 ] -plot-histogram-hovered: [ 0, 0, 0, 0 ] -table-header-bg: [ 0, 0, 0, 0 ] -table-border-strong: [ 0, 0, 0, 0 ] -table-border-light: [ 0, 0, 0, 0 ] -table-row-bg: [ 0, 0, 0, 0 ] -table-row-bg-alt: [ 0, 0, 0, 0 ] -text-selected-bg: [ 0, 0, 0, 0 ] -drag-drop-target: [ 0, 0, 0, 0 ] -nav-highlight: [ 0, 0, 0, 0 ] -nav-windowing-highlight: [ 0, 0, 0, 0 ] -nav-windowing-dim-bg: [ 0, 0, 0, 0 ] -modal-window-dim-bg: [ 0, 0, 0, 0 ] -``` -UI component properties: -```yaml -alpha: 1.0 -disabled-alpha: 0.0 -window-padding: [ 8, 8 0 -window-rounding: 20.0 -window-border-size: 1.0 -window-min-size: [ 100, 100 ] -window-title-align: [ 1, 1 ] -child-rounding: 20.0 -child-border-size: 2.0 -popup-rounding: 2.0 -popup-border-size: 2.0 -frame-padding: [ 2, 2 ] -frame-rounding: 2.0 -frame-border-size: 2.0 -item-spacing: [ 8, 8 ] -item-inner-spacing: [ 2, 2 ] -indent-spacing: 10.0 -cell-padding: [ 2, 2 ] -scrollbar-size: 10.0 -scrollbar-rounding: 10.0 -grab-min-size: 10.0 -grab-rounding: 10.0 -tab-rounding: 10.0 -button-text-align: [ 1, 1 ] -selectable-text-align: [ 1, 1 ] -``` -Fonts: -```yaml -# More features here pending, this is still unfinished -fonts: - - font: MyFont - font-location: "MyFont.ttf" # This is our own extension, ImGui does provide loading of fonts but that is not achieved by just changing some settings and needs some code - font-size: 20.0 - glyph-range: "default" # This is part of ImGui's font system, it's still not clear how the format should be designed specifically for this variable - glyph-spacing: [ 0, 0 ] - glyph-offste: [ 0, 0 ] - pixel-snap: false - merge: false - brightness: 1.0 -``` -MadLadSquad's extensions: -```yaml -desktop-wm-active: - border-colour: [ 0, 0, 0, 0 ] - background-bg: [ 0, 0, 0, 0 ] - background-bg2: [ 0, 0, 0, 0 ] - shadow: [ 0, 0, 0, 0 ] - text-colour: [ 1, 1, 1, 1 ] - text-position: 1 - override-icon: "Icon.png" - override-text: "Changed window title here" -desktop-wm-inactive: - border-colour: [ 0, 0, 0, 0 ] - background-bg: [ 0, 0, 0, 0 ] - background-bg2: [ 0, 0, 0, 0 ] - shadow: [ 0, 0, 0, 0 ] - text-colour: [ 1, 1, 1, 1 ] - text-position: 1 - override-icon: "Icon.png" - override-text: "Changed window title here" -desktop-wm-minimized: - border-colour: [ 0, 0, 0, 0 ] - background-bg: [ 0, 0, 0, 0 ] - background-bg2: [ 0, 0, 0, 0 ] - shadow: [ 0, 0, 0, 0 ] - text-colour: [ 1, 1, 1, 1 ] - text-position: 1 - override-icon: "Icon.png" - override-text: "Changed window title here" -desktop-wm-maximised: - border-colour: [ 0, 0, 0, 0 ] - background-bg: [ 0, 0, 0, 0 ] - background-bg2: [ 0, 0, 0, 0 ] - shadow: [ 0, 0, 0, 0 ] - text-colour: [ 1, 1, 1, 1 ] - text-position: 1 - override-icon: "Icon.png" - override-text: "Changed window title here" -desktop-wm-folded: - border-colour: [ 0, 0, 0, 0 ] - background-bg: [ 0, 0, 0, 0 ] - background-bg2: [ 0, 0, 0, 0 ] - shadow: [ 0, 0, 0, 0 ] - text-colour: [ 1, 1, 1, 1 ] - text-position: 1 - override-icon: "Icon.png" - override-text: "Changed window title here" -desktop-wm-current-tab: - border-colour: [ 0, 0, 0, 0 ] - background-bg: [ 0, 0, 0, 0 ] - background-bg2: [ 0, 0, 0, 0 ] - shadow: [ 0, 0, 0, 0 ] - text-colour: [ 1, 1, 1, 1 ] - text-position: 1 - override-icon: "Icon.png" - override-text: "Changed window title here" -desktop-wm-inactive-tab: - border-colour: [ 0, 0, 0, 0 ] - background-bg: [ 0, 0, 0, 0 ] - background-bg2: [ 0, 0, 0, 0 ] - shadow: [ 0, 0, 0, 0 ] - text-colour: [ 1, 1, 1, 1 ] - text-position: 1 - override-icon: "Icon.png" - override-text: "Changed window title here" -desktop-wm-bar-positions: 10 # This is so that the window bar decoration can be divided into different positions, lowest value is 3 -desktop-wm-buttons: - - close-button: 10 - icon-override: "CustomClose.png" - - maximise-button: 9 - icon-override: "CustomMax.png" - - minimise-button: 8 - icon-override: "CustomMin.png" - - fold-button: 7 - icon-override: "CustomFold.png" - - plus-button: 6 - icon-override: "CustomPlus.png" -``` diff --git a/untitled-desktop/theming/ext-imguizmo.md b/untitled-desktop/theming/ext-imguizmo.md deleted file mode 100644 index 2acf9e2..0000000 --- a/untitled-desktop/theming/ext-imguizmo.md +++ /dev/null @@ -1,41 +0,0 @@ -# UntitledDesktopEnvironment themes official specification extension: ImGuizmo -## Authors -1. [Stanilav Vasilev(Madman10k)](https://github.com/Madman10K) - -## Version -Current version is 1.0 - -## Brief summary -The goal of this standard extension is to provide the theming framework with a standardised interface for theming applications using the widely used -[ImGuizmo](https://github.com/CedricGuillemet/ImGuizmo) library - -## Format -Colours: -```yaml -imguizmo-direction-colour-x: [ 1.0, 1.0, 1.0 ] -imguizmo-direction-colour-y: [ 1.0, 1.0, 1.0 ] -imguizmo-direction-colour-z: [ 1.0, 1.0, 1.0 ] -imguizmo-plane-colour-x: [ 1.0, 1.0, 1.0 ] -imguizmo-plane-colour-y: [ 1.0, 1.0, 1.0 ] -imguizmo-plane-colour-z: [ 1.0, 1.0, 1.0 ] -imguizmo-selection-colour: [ 1.0, 1.0, 1.0 ] -imguizmo-inactive-colour: [ 1.0, 1.0, 1.0 ] -imguizmo-translation-line-colour: [ 1.0, 1.0, 1.0 ] -imguizmo-scale-line-colour: [ 1.0, 1.0, 1.0 ] -imguizmo-rotation-using-border-colour: [ 1.0, 1.0, 1.0 ] -imguizmo-rotation-using-fill-colour: [ 1.0, 1.0, 1.0 ] -imguizmo-hatched-axis-lines-colour: [ 1.0, 1.0, 1.0 ] -imguizmo-text-colour: [ 1.0, 1.0, 1.0 ] -imguizmo-text-shadow-colour: [ 1.0, 1.0, 1.0 ] -``` -Variables: -```yaml -imguizmo-translation-line-thickness: 1.0 -imguizmo-translation-line-arrow-size: 1.0 -imguizmo-rotation-line-thickness: 1.0 -imguizmo-rotation-outer-line-thickness: 1.0 -imguizmo-scale-line-thickness: 1.0 -imguizmo-scale-line-circle-size: 1.0 -imguizmo-hatched-axis-line-thickness: 1.0 -imguizmo-center-circle-size: 1.0 -``` diff --git a/untitled-desktop/theming/ext-implot.md b/untitled-desktop/theming/ext-implot.md deleted file mode 100644 index 6d75a6b..0000000 --- a/untitled-desktop/theming/ext-implot.md +++ /dev/null @@ -1,66 +0,0 @@ -# UntitledDesktopEnvironment themes official specification extension: ImPlot -## Authors -1. [Stanislav Vasilev(Madman10K)](https://github.com/Madman10K) - -## Version -Current version is 1.0 - -## Brief summary -The goal of this standard extension is to provide the theming framework with a standardised interface for theming applications using the -widely used [implot](https://github.com/epezent/implot) library - -## Format -Colours: -```yaml -implot-line: [ 0, 0, 0, 0] -implot-fill: [ 0, 0, 0, 0] -implot-marker-outline: [ 0, 0, 0, 0] -implot-marker-fill: [ 0, 0, 0, 0] -implot-errorbar: [ 0, 0, 0, 0] -implot-framebg: [ 0, 0, 0, 0] -implot-plotbg: [ 0, 0, 0, 0] -implot-plot-border: [ 0, 0, 0, 0] -implot-legendbg: [ 0, 0, 0, 0] -implot-legend-border: [ 0, 0, 0, 0] -implot-legend-text: [ 0, 0, 0, 0] -implot-title-text: [ 0, 0, 0, 0] -implot-inlaytext: [ 0, 0, 0, 0] -implot-axistext: [ 0, 0, 0, 0] -implot-axis-grid: [ 0, 0, 0, 0] -implot-axis-tick: [ 0, 0, 0, 0] -implot-axisbg: [ 0, 0, 0, 0] -implot-axisbg-hovered: [ 0, 0, 0, 0] -implot-axisbg-active: [ 0, 0, 0, 0] -implot-selection: [ 0, 0, 0, 0] -implot-crosshairs: [ 0, 0, 0, 0] -``` -Variables: -```yaml -implot-line-weight: 1.0 -implot-marker: 1 -implot-marker-size: 1.0 -implot-marker-weight: 1.0 -implot-fill-alpha: 1.0 -implot-errorbar-size: 1.0 -implot-errorbar-weight: 1.0 -implot-digitalbit-height: 1.0 -implot-digitalbit-gap: 1.0 -implot-plot-border-size: 1.0 -implot-minor-alpha: 1.0 -implot-major-tick-len: [ 1, 1 ] -implot-minor-tick-len: [ 1, 1 ] -implot-major-ticks-ize: [ 1, 1 ] -implot-minor-tick-size: [ 1, 1 ] -implot-major-grid-size: [ 1, 1 ] -implot-minor-grid-size: [ 1, 1 ] -implot-plot-padding: [ 1, 1 ] -implot-label-padding: [ 1, 1 ] -implot-legend-padding: [ 1, 1 ] -implot-legend-inner-padding: [ 1, 1 ] -implot-legend-spacing: [ 1, 1 ] -implot-mouse-pos-padding: [ 1, 1 ] -implot-annotation-padding: [ 1, 1 ] -implot-fit-padding: [ 1, 1 ] -implot-plot-default-size: [ 1, 1 ] -implot-plot-min-size: [ 1, 1 ] -``` diff --git a/untitled-desktop/theming/ext-knobs.md b/untitled-desktop/theming/ext-knobs.md deleted file mode 100644 index b74de2d..0000000 --- a/untitled-desktop/theming/ext-knobs.md +++ /dev/null @@ -1,18 +0,0 @@ -# UntitledDesktopEnvironment themes official specification extension: imgui-knobs -## Authors -1. [Stanilav Vasilev(Madman10k)](https://github.com/Madman10K) - -## Version -Current version is 1.0 - -## Brief summary -The goal of this standard extension is to provide the theming framework with a standardised interface for theming applications using the widely used -[imgui-knobs](https://github.com/altschuler/imgui-knobs) library - -## Format -Colours: -```yaml -imknobs-base: [ 0, 0, 0, 0 ] -imknobs-hover: [ 0, 0, 0, 0 ] -imknobs-active: [ 0, 0, 0, 0 ] -``` diff --git a/untitled-desktop/theming/ext-spinners.md b/untitled-desktop/theming/ext-spinners.md deleted file mode 100644 index fbbbf90..0000000 --- a/untitled-desktop/theming/ext-spinners.md +++ /dev/null @@ -1,48 +0,0 @@ -# UntitledDesktopEnvironment themes official specification extension: imspinner -## Authors -1. [Stanislav Vasilev(Madman10K)](https://github.com/Madman10K) - -## Version -Current version is 1.0 - -## Brief summary -The goal of this standard extension is to provide the theming framework with a standardised interface for theming applications using the widely used -[imspinner](https://github.com/dalerank/imspinner) library - -## Format -### Global -The following variables and colours can be set as globals for all spinners - -Colours: -```yaml -imspinner-colour: [ 0, 0, 0, 0 ] -imspinner-colour-bg: [ 0, 0, 0, 0 ] -imspinner-colour-alt: [ 0, 0, 0, 0 ] -``` -Variables: -```yaml -imspinner-radius: 1.0 -imspinner-speed: 1.0 -imspinner-thickness: 1.0 -imspinner-angle: 1.0 -imspinner-angle-min: 1.0 -imspinner-angle-max: 1.0 -imspinner-min-thickness: 1.0 -imspinner-delta: 1.0 -imspinner-dots: 1 -imspinner-middle-dots: 1 -imspinner-reverse: false -``` - -### Local -Additionally you may use the same variables but under a type of spinner. These are the current contexts you can use: -```yaml -imspinner-rainbow: -imspinner-angle: -imspinner-dots: -imspinner-ang: -imspinner-vdots: -imspinner-bounce-ball: -imspinner-eclipse: -imspinner-ingyang: -```