Released AeroThemePlasma version 0.2

This commit is contained in:
wackyideas 2023-08-25 00:32:11 +02:00
parent 12e3e87d9e
commit b2bd8e4a72
9136 changed files with 122224 additions and 118976 deletions

101
CHANGELOG.md Normal file → Executable file
View file

@ -1,3 +1,100 @@
<h1>Version 0.2</h1>
<h2>SUMMARY:</h2>
The folder structure has been modified to simplify things and prepare it for an eventual install script. Most changes are internal, fixing bugs and cleaning up the codebase. Updated to work with KDE Plasma 5.27.7.
Major changes in this release include the addition of documentation, the reflection effect for KWin, a login splash screen, and a complete redesign of Seven Tasks' context menu. An important change is that AeroColorMixer has been deprecated in this release, and most of the codebase has been merged with the reflection effect. This change simplifies the process of applying accent colors to windows and eliminates the need to directly edit config files and SVG textures. Additionally, this change now lets the user see the accent color changing in real time as they configure the effect.
An effort is being made to standardize the internal codebase as well as the internal folder structure. The documentation is not complete, but I feel that it's a good start.
The install script is a very early WIP, and I don't recommend using it, I'm not particularly happy with its current state so I have chosen to leave it in the "Testing" folder. Initially I wanted to include an install script for this release of AeroThemePlasma, but ultimately I decided it would be best to keep working on it and hopefully come up with a more sophisticated solution than whatever this is right now. The same goes for the Global/Look and feel theme, it's still early in development and probably broken right now.
Lastly, I'd like to apologize for the radio silence and for taking so long. I haven't been in the right space for a while now, and recovery has taken up most of my time and energy, I hope that's understandable. Regardless, thank you for your patience if you've waited this long.
<h2>NEW:</h2>
- Added Aero Splash Screen (io.gitgud.wackyideas.aerosplashscreen).
- Added documentation for various components of this project.
- Added a KWin reflection effect.
- Added a KWin task switcher (Thumbnail Seven).
- Added a new color in the list of predefined accent colors (Sunset).
- Deprecated AeroColorMixer, code has been merged with the reflection effect.
<h2>CHANGED:</h2>
<h3>Meta:</h3>
- [INSTALL.md](./INSTALL.md) has been updated to reflect the new changes in the internal folder structure.
- Most folders now have underscores instead of spaces in their names for easier handling for the future install script.
- Most plasmoids have been renamed in a more standardized fashion.
- Most plasmoids no longer have their own folder, and they're now only separated between User and System widgets.
- Color scheme has been renamed to AeroColorScheme.
- The icon and cursor themes are provided as tar archives.
- Most plasmoids now use their own internal SVG textures instead of pulling them from Seven-Black. In the future, Seven-Black will get rid of these non-standard SVG elements.
- Removed the accent color in all SVG textures from Seven-Black, as that is now handled by the reflection effect.
- Most plasmoids now have updated default configs, reducing the amount of work needed during installation.
- Minor changes done to the Plasma style.
<h3>Icon theme:</h3>
- The icon theme now optionally depends on the [Oxygen icon theme](https://invent.kde.org/frameworks/oxygen-icons5).
- Updated a lot of icons, mainly related to icons related to Office and development.
<h3>Seven Start:</h3>
- Start menu orbs are now included within the project itself and are provided as a default option.
- Start menu orbs now behave more like Windows 7's menu orbs, removing the animated transition between hovered and pressed states, as it was causing weird visual bugs.
- Sidebar items can now be toggled on or off.
- When adding the widget, it won't add default favorite items anymore.
- The entire start menu now has basic keyboard navigation support. It's still a bit rough around the edges, but everything works.
- The profile icon now sticks out of the start menu when compositing is enabled. When compositing is disabled, the icon is moved fully inside the start menu.
- The profile icon now crossfades into icons depending on the selected sidebar item.
- The search text box now has a decorative magnifying glass icon on the right.
<h3>Desktop containment:</h3>
- Tooltips no longer show the icon of the hovered item.
- Reduced padding as a result of text alignment.
- The textbox that appears when renaming an item is now properly aligned.
<h3>DigitalClockLite:</h3>
- Added a link label at the top of the expanded representation representing the currently selected date. Clicking on it will select the current day.
<h3>Kvantum:</h3>
- Changed the tooltip to look more like Windows 7's tooltip design.
<h3>Seven Tasks:</h3>
- Completely redesigned the context menu to match the appearance from Windows Vista and 7.
- The context menu won't aggressively grab key inputs anymore, unlike standard context menus.
- Seven Tasks will no longer create pinned tasks when adding the plasmoid to a panel.
- Tooltips now have a dedicated SVG texture for the close button.
- Tooltips that display cover art now have a textured frame around the blurred background of the cover art.
<h3>Smaragd Seven:</h3>
- Updated to provide a correct blur region.
- Smaragd Seven no longer requires the reflection texture to function, as that is now handled by KWin's reflection effect.
<h2>FIXED:</h2>
- Added higher resolution icons so certain plasmoids don't display their low resolution counterparts.
- In the expanded view of the system tray, the icon highlight won't get stuck anymore when the mouse exits an icon.
- Clicking on an icon in the compact view of the system tray will now always close the expanded representation, if applicable.
- Seven Start now accepts key inputs more consistently and will no longer accept unprintable characters to the search text box.
- Seven Start will no longer try to open Dolphin when opening sidebar entries. Instead, it will open the directories using the default file manager on the system.
- Fixed bug in the Desktop containment where the symlink icon in the corner is drawn smaller than it should be when the icon is provided by a thumbnailer plugin.
- Smaragd Seven no longer renders the fake reflection effect.
- Kvantum will no longer attempt to blur certain elements like tooltips.
- Updated plasmoids to work with the latest version of KDE.
- Minor visual enhancements in various aspects of this project.
- Certain tooltips are no longer rendered incorrectly (this could have just been a problem on my machine)
- Seven-Black has updated panel margins so that panels now render correctly on newer versions of KDE.
- Minor bugfixes and fixing deprecated code.
- The color mixer window (formerly AeroColorMixer) has been fixed to work with Wayland.
<h1>Version 0.1 (Formal release)</h1>
@ -9,10 +106,6 @@ The biggest changes were made to the Start Menu, System Tray, the Date & Time, a
This release also features a new Qt visual style for Kvantum, which is supposed to replace QGtkStyle for Qt applications. The GTK2 theme is still available for GTK2 applications, and can optionally still be used for Qt applications as well.
**Authors of forked projects are all credited in the README.md file. **
The full list of all additions, changes and fixes:
<h3>NEW:</h3>
- The following plasmoids have been added:

111
DOCUMENTATION.md Executable file
View file

@ -0,0 +1,111 @@
# AEROTHEMEPLASMA DOCUMENTATION
## TABLE OF CONTENTS
1. [Introduction](#intro)
2. [List of components](#list-of-components)
3. [Components to be implemented](#todo)
## Introduction <a name="intro"></a>
The purpose of this documentation is to provide a detailed explanation of elements that contribute to the look, feel and functionality of this project.
Since this project features a large variety of components, ranging from simple themes to
entire applications, documentation will be organized into multiple categories based on the
language the component is written in (plasmoids, applications) or the standard that defines it (themes). Components will categorized in the following way:
- **Themes**
- [Plasma theme (Seven-Black)](./Documentation/Themes/Seven-Black.md)
- [Window decoration theme (Emerald/Smaragd)](./Documentation/Themes/Smaragd-Theme.md)
- **Software**
- Plasmoids
- [System tray (org.kde.plasma.private.systemtray)](./Documentation/Software/Plasmoids/System-Tray.md)
- [Desktop icons (org.kde.desktopcontainment)](./Documentation/Software/Plasmoids/DesktopContainment.md)
- [SevenStart (io.gitgud.wackyideas.SevenStart)](./Documentation/Software/Plasmoids/SevenStart.md)
- [SevenTasks (io.gitgud.wackyideas.seventasks)](./Documentation/Software/Plasmoids/SevenTasks.md)
- KWin
- [Smaragd](./Documentation/Software/KWin/Smaragd.md)
- [Reflection effect](./Documentation/Software/KWin/Reflection.md)
To keep the documentation condensed and to prevent redundancy, components that don't require documentation or are out of scope for this project (as in, documentation exists elsewhere) will not be documented here:
- Date and time (io.gitgud.wackyideas.digitalclocklite)
- Show desktop (Aero) (io.gitgud.wackyideas.win7showdesktop)
- Keyboard switcher (org.kde.plasma.keyboardlayout)
- Splash screen (aero-splash-screen)
- Plasma tooltip (DefaultToolTip.qml)
- Wine theme (Windows Style Builder)
- Color scheme ([KDE's docs](https://docs.kde.org/stable5/en/plasma-workspace/kcontrol/colors/index.html), [Video guide](https://www.youtube.com/watch?v=6VW--o7CEEA))
- Icon theme ([Freedesktop](https://specifications.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html) [specification](https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html))
- Cursor theme ([Freedesktop specification](https://www.freedesktop.org/wiki/Specifications/cursor-spec/))
- Sound theme (KDE system settings)
- GTK2 theme ([GTK2](https://wiki.gnome.org/Attic/GnomeArt/Tutorials/GtkThemes) [theme details](https://www.orford.org/gtk/))
- Kvantum theme* ([Kvantum](https://raw.githubusercontent.com/tsujan/Kvantum/master/Kvantum/doc/Theme-Making.pdf) [documentation](https://raw.githubusercontent.com/tsujan/Kvantum/master/Kvantum/doc/Theme-Config.pdf))
*While Kvantum won't be discussed here, one important detail worth mentioning is that Kvantum does not respect KDE's color schemes for the most part and that this sometimes leads to unexpected visual results. Still, it's recommended to apply a KDE color scheme alongside Kvantum for maximum compatibility.
In the future, some components might receive their dedicated documentation, in case it's required.
## List of components <a name="list-of-components"></a>
This is a list of components that are included in this project, as well as their completion status. Note that finished components are still subject to bugs, general enhancements and maintenance, but they are "more or less" feature complete. The forked column links to the original projects and their authors. Please consider taking a look at their work, because without them, this project would not be possible.
### Plasmoids
|Name |Description |System|Finished|Fork |
|-----------------------|-----------------------------------------------------------------------------------------|------|--------|--------|
|DigitalClockLite Seven |Displays a calendar, time, events and holidays. |N |Y |[Intika](https://www.kde-look.org/p/1225135/)|
|SevenStart |An application launcher made to look like Windows 7's Start menu. |N |N |[adhe](https://store.kde.org/p/1386465/),<br>[oKcerG](https://github.com/oKcerG/QuickBehaviors),<br>[SnoutBug](https://store.kde.org/p/1720532)|
|SevenTasks |Task manager made to look like Windows 7's taskbar buttons. |N |N |[KDE](https://invent.kde.org/plasma/plasma-desktop/-/tree/master/applets/taskmanager)|
|Show Desktop (Aero) |Textured button that shows the desktop when clicked. Supports peeking. |N |Y |[Zren](https://www.kde-look.org/p/1100895/)|
|DefaultToolTip.qml |QML component used for displaying tooltips. Reduced padding and size. |Y |Y |[KDE](https://api.kde.org/frameworks/plasma-framework/html/DefaultToolTip_8qml_source.html)|
|Desktop icons |Improved desktop shell that reduces padding between icons. |Y |Y |[KDE](https://invent.kde.org/plasma/plasma-desktop)|
|Keyboard layout switcher|Textured button for switching layouts, with reduced size and better alignment. |Y|Y|[KDE](https://invent.kde.org/plasma/plasma-desktop)|
|System tray|Redesigned with reorganized placement, floating panels, hoverable icons and reduced size and padding.|Y|Y|[KDE](https://invent.kde.org/plasma/plasma-workspace/-/tree/master/applets/systemtray)|
### Themes
|Name |Description |Finished|Fork|
|------------------|------------------------------------------------------------------------------------------------------------------|--------|----|
|Aero cursors |Cursor pack for KDE. Currently only has the small size (96 DPI). |N |[Moony](https://store.kde.org/p/999972/)|
|SevenBlack |Windows 7 theme for KDE Plasma. Contains non-standard theme elements. |N |[Mirko Gennari](https://kde-look.org/p/998614),<br> [DrGordBord](https://store.kde.org/p/1722560/),<br> [bionegative](https://www.pling.com/p/998823)|
|Sound collection |Sounds taken from Windows 7 directly. |Y |Microsoft|
|VistaVG Wine theme|Msstyle used for theming Wine applications. |Y |[Vishal Gupta](https://www.deviantart.com/vishal-gupta/art/VistaVG-Ultimate-57715902)|
|Win2-7 |Windows 7 theme for GTK2 applications. Adapted to work better with QGtkStyle. |Y |[Juandejesuss](https://www.gnome-look.org/p/1012465)|
|Windows 7 Kvantum |Fixed certain padding and sizing issues, added more textures. |Y |[DrGordBord](https://store.kde.org/p/1679903)|
|WindowsIcons |Windows 8.1 icon pack adapted to fit KDE better while also changing certain icons to their Windows 7 counterparts.|N |[B00merang team](https://b00merang.weebly.com/icon-themes.html)|
### KWin
|Name |Description |Finished|Fork|
|-----------------|------------------------------------------------------------------------------------------------------------------------------|--------|----|
|Aero Emerald |Custom, non-standard Emerald theme made to work with Smaragd Seven. |Y |[nicu96](https://store.kde.org/p/1003826/)|
|Reflection Effect|Effect that renders a glassy texture under windows. |N |[KDE](https://invent.kde.org/plasma/kwin/-/tree/master/src/plugins/blur)|
|Smaragd Seven |KWin decoration theme which uses Emerald themes as a basis, with some Aero specific changes and bugfixes. Lacks HiDPI support.|N |[KDE](https://invent.kde.org/plasma/smaragd)|
|Thumbnail Seven |KWin task switcher that mostly replicates the look and behavior of Windows 7's task switcher|N|[KDE](https://invent.kde.org/plasma/kwin/-/tree/master/src/tabbox/switchers/thumbnail_grid)|
### Applications
|Name |Description |Finished|Fork|
|--------------|-----------------------------------------------------------------------|--------|----|
|AeroColorMixer|Program designed for changing the accent color across the entire theme. (NOTE: This program is now deprecated and has been moved into the reflection effect.)|Y |N/A |
### Miscellaneous
|Name |Description |Finished|Fork|
|-------------------|--------------------------------|--------|----|
|Aero Splash Screen |Aero themed login splash screen.|Y |[Matias Saibene](https://store.kde.org/p/1920070/)|
## Components to be implemented <a name="todo"></a>
These components are listed from highest priority to lowest priority.
- **Qt visual style based on reading Msstyle themes (Like QWindowsVistaStyle)**
- **Proper sound theme (upcoming in KDE Plasma 6)**
- **SDDM Login theme and lock screen**
- **Better folder thumbnailer plugin**
- **Plymouth theme(?)**

View file

@ -0,0 +1,138 @@
# AEROCOLORMIXER (DEPRECATED)
## TABLE OF CONTENTS
1. [Detailed description](#desc)
2. [Configuration file](#config)
3. [List of files modified by AeroColorMixer](#files)
4. [Notes](#notes)
<a name="desc"></a>
## Detailed description
The appearance of transparent glass textures in this theme is managed by two separate programs that define color information differently. KDE Plasma's shell renders many of its elements by loading in SVG files as textures, while KWin's window decorations are managed by Smaragd.
AeroColorMixer manages both Smaragd and Plasma's shell at the same time in order to provide a unified accent color across the entire desktop. It is designed to look and function like Windows 7's Personalization menu, including the accent colors found on Windows 7. The accent colors were directly pulled from the following registry key:
```[ HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM\ColorizationColor ]```
On Windows Vista, 7 and 8.1, this registry key holds the currently applied accent color, stored in the hexadecimal AARRGGBB format. The predefined colors are:
<br>
|Color|Name|Value|
|-----|----|-----|
|<span style="background-color: #6b74b8fc; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Sky|#6b74b8fc|
|<span style="background-color: #a80046ad; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Twilight|#a80046ad|
|<span style="background-color: #8032cdcd; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Sea|#8032cdcd|
|<span style="background-color: #6614a600; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Leaf|#6614a600|
|<span style="background-color: #6697d937; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Lime|#6697d937|
|<span style="background-color: #54fadc0e; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Sun|#54fadc0e|
|<span style="background-color: #80ff9c00; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Pumpkin|#80ff9c00|
|<span style="background-color: #a8ce0f0f; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Ruby|#a8ce0f0f|
|<span style="background-color: #66ff0099; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Fuchsia|#66ff0099|
|<span style="background-color: #70fcc7f8; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Blush|#70fcc7f8|
|<span style="background-color: #856e3ba1; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Violet|#856e3ba1|
|<span style="background-color: #528d5a94; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Lavander|#528d5a94|
|<span style="background-color: #6698844c; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Taupe|#6698844c|
|<span style="background-color: #a84f1b1b; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Chocolate|#a84f1b1b|
|<span style="background-color: #80555555; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Slate|#80555555|
|<span style="background-color: #54fcfcfc; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Frost|#54fcfcfc|
|<span style="background-color: #89e61f8c; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Sunset|#89e61f8c|
Sunset is a predefined color exclusive to AeroThemePlasma, as it wasn't featured in Windows 7.
Windows Vista and 8.1 feature a unique selection of colors as well. Vista features significantly less colors than Windows 7, with a lot more straightforward color names:
<br>
|Color|Name|Value|
|-----|----|-----|
|<span style="background-color: #45409efe; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Default|#45409efe|
|<span style="background-color: #a3000000; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Graphite|#a3000000|
|<span style="background-color: #a8004ade; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Blue|#a8004ade|
|<span style="background-color: #82008ca5; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Teal|#82008ca5|
|<span style="background-color: #9cce0c0f; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Red|#9cce0c0f|
|<span style="background-color: #a6ff7700; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Orange|#a6ff7700|
|<span style="background-color: #49f93ee7; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Pink|#49f93ee7|
|<span style="background-color: #cceff7f7; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Frost|#cceff7f7|
Windows 8.1 features almost the same number of colors as Windows 7 (albeit with very disappointing names) and includes a new feature that can determine the accent color from the wallpaper by choosing its dominant color:
<br>
|Color|Value|
|-----|-----|
|<span style="background-color: #c48f8f8f; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c48f8f8f|
|<span style="background-color: #c484c6ff; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c484c6ff|
|<span style="background-color: #c4f276c9; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c4f276c9|
|<span style="background-color: #c4f0c300; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c4f0c300|
|<span style="background-color: #c492cb2a; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c492cb2a|
|<span style="background-color: #c44ccdcd; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c44ccdcd|
|<span style="background-color: #c4ff981d; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c4ff981d|
|<span style="background-color: #c4ff4040; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c4ff4040|
|<span style="background-color: #c4ff57ab; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c4ff57ab|
|<span style="background-color: #c40abf46; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c40abf46|
|<span style="background-color: #c4c071ff; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c4c071ff|
|<span style="background-color: #c454afff; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c454afff|
|<span style="background-color: #c48c90ff; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c48c90ff|
|<span style="background-color: #c4b09d8b; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c4b09d8b|
|<span style="background-color: #c4ffffff; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c4ffffff|
<br><br>
While not very conclusive, [here](https://stackoverflow.com/questions/3560890/vista-7-how-to-get-glass-color) is a useful thread for more information on how accent colors work in Aero, focused mainly on Windows 7.
<a name="config"></a>
## Configuration file
AeroColorMixer has a configuration file found in:
```$ ~/.config/.aerorc```
which has the following format:
```
transparency={0,1} # Tells AeroColorMixer if transparency is enabled or not.
red=[0,255] # The red component of the custom accent color.
green=[0,255] # The green component of the custom accent color.
blue=[0,255] # The blue component of the custom accent color.
alpha=[0,255] # The alpha component of the custom accent color.
color=[0,17] # Tells AeroColorMixer which color is being used. If the value is 0, then the custom accent color is used.
```
This configuration file is not meant to be edited by hand, as the file only directly effects AeroColorMixer, but won't actually change the accent color on the fly.
<a name="files"></a>
## List of files modified by AeroColorMixer
When AeroColorMixer applies the accent color across the entire theme, it writes to the following files:
```$ ~/.local/share/plasma/desktoptheme/Seven-Black/widgets/panel-background.svg```
```$ ~/.local/share/plasma/desktoptheme/Seven-Black/widgets/tooltip.svg```
```$ ~/.local/share/plasma/desktoptheme/Seven-Black/dialogs/background.svg```
```$ ~/.local/share/plasma/desktoptheme/Seven-Black/solid/dialogs/background.svg```
```$ ~/.emerald/theme/theme.ini```
On startup, AeroColorMixer will check if these files exist on the system. If at least one SVG file is missing from the system, the program will assume the Plasma theme is not installed, and will only make changes to the Smaragd decoration instead. If the Smaragd theme is not present, then it will only write to the SVG files, and if neither are present on the system, the program will simply close.
<a name="notes"></a>
## Notes
- AeroColorMixer has an option to enable or disable transparency when applying the accent color, however this option does not affect compositing at all. Disabling transparency in AeroColorMixer will instead make the applied accent color opaque, and blends the color with rgb(235, 235, 235), where alpha defines the percentage of the color mixing.
- AeroColorMixer will not write to SVG files that can be found in the "opaque" and "transparent" folders of the Plasma theme.
- When transparency is enabled, the color intensity slider won't actually make the accent color fully opaque or fully transparent when the slider is set to the minimum or maximum value.
- Due to certain limitations, the reflection effect will not be visible at all if transparency is disabled in AeroColorMixer.*
*One idea would be to blend the accent color with the blur during rendering which would keep the reflections visible, but this would potentially break applications which rely on custom blur regions that are colored differently from the rest of the desktop (for example, Konsole).

View file

@ -0,0 +1,155 @@
# REFLECTION EFFECT FOR KWIN
## TABLE OF CONTENTS
1. [Detailed description](#description)
2. [List of excluded windows](#excluded-windows)
3. [Reflection algorithm](#algorithm)
4. [Colorization](#colorization)
5. [Configuration menu](#config)
## Detailed description <a name="description"></a>
This is a KWin effect forked from the internal blur effect. It provides the reflection and colorization effect from Windows Vista and 7. These two effects achieve a "tinted glass" effect which is applied to most transparent graphical effects. Despite being a fork of the internal blur effect from KWin, all of the blurring functionality has been stripped out, as this effect is designed to be used alongside the blur effect, rather than being a drop-in replacement.
Before the introduction of this effect, this project didn't have proper reflections and colorization was done in a rather inefficient way, having to directly edit SVG files and the Emerald theme config file in order to change the accent color across KDE. Furthermore, real time changes weren't possible through this method, instead having to reload the Plasma style and restart the compositor in order to apply the changes. AeroColorMixer did all of this under the hood, and would often break after subsequent updates.
AeroColorMixer as a standalone program is now deprecated and most of the underlying code has been removed, while the rest has been moved to this effect's settings menu. With this, the following changes have been made to simplify the process of applying accent colors:
1. SVG files are no longer edited and elements that are supposed to be colorized are now completely transparent.
2. Likewise, the Emerald theme is also no longer edited and elements that are supposed to be colorized are now completely transparent.
3. Changes to the accent color and transparency are instant and rely on shared memory between the effect and the config menu.
4. Everything is contained within the configuration of this effect. Because of this, ```~/.config/.aerorc``` is no longer used.
The rendering priority relative to the blur effect, assuming no other active effects, goes like this:
1. Blur
2. Colorization
3. Reflections
4. Decorations
This ensures that reflections are always visible regardless of transparency options, which was a limitation of the previous approach to applying accent colors.
The user can provide their own reflection texture in the config menu for the effect, in a PNG format. A default reflection texture is already provided by the effect, which also acts as a fallback in case the provided texture file is invalid, doesn't exist or the path itself is invalid.
## List of excluded windows <a name="excluded-windows"></a>
Reflections will not render on certain types of windows, even if they are normally allowed to have blur behind them. Here's the list of windows that are not affected by this effect, as defined by the method ```isWindowValid(KWin::EffectWindow*)```:
- The desktop shell
- Toolbars
- Tooltips
- Menus
- Dropdown menus
- Popup menus
- Splash screens
- Normal and critical notifications
- OSDs
- Combo boxes
- Do not disturb icons
- Windows specifically excluded by the user
The user can define a list of programs that should be excluded by this effect. The programs are identified by their X11 window class, separated by a semicolon (;) in the config menu.
The colorization effect can also be ignored for programs defined by the user in the same manner as above, however it should be noted that the colorization is applied to all server-side decorations regardless of the defined restrictions.
## Reflection algorithm <a name="algorithm"></a>
As the reflection effect from Windows Vista and 7 is closed source, this is merely an effort to recreate the effect based on what can be deduced just by looking at what the effect does. At its core, the effect is very simple; it works as if the reflection texture is stretched across the monitor (or across multiple monitors) and transparent windows render the portion of the texture that they're "hovering above".
Of course, as the monitor configuration changes in any way (resolution, monitor placement), the texture is "stretched" again to cover all monitors. This may cause the texture to scale and distort out of proportion. Some examples of how the effect stretches the texture across different monitor configurations are shown below.
<img src="../img/reflection_mockup.png">
In the fragment shader, as the window draws the texture, the fragment coordinates are normalized relative to the screen geometry, and then used to sample the reflection texture. It should be noted that the sampling is done with a bilinear filter, and the alpha blending is done using ```glBlendFunc(GL_CONSTANT_ALPHA, GL_ONE_MINUS_SRC_ALPHA)```.
There is also a secondary part of the reflection effect, which is a subtle horizontal offset that makes the reflection appear to move as the window is moved, creating a sort of parallax effect. This offset is calculated independently for every window by subtracing the horizontal midpoint of the screen with the horizontal midpoint of the window, and dividing that difference by some constant. Through some experimentation, a constant with the value of 10 gives acceptable results.
This additional parallax effect can be toggled in the config menu by the user.
## Colorization <a name="colorization"></a>
Colorization is the effect of rendering a color over the blurred background behind windows, causing a tinted appearance. The color can be either semi-transparent or opaque, and depending on the option set by the user, the accent color is altered in the following way:
1. If transparency is enabled, the color is blended using ```glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)``` as it's being rendered.
2. If transparency is disabled, the color is mixed with a base color ```#e1e1e1``` and the alpha component is treated as the percentage of mixing.
It should be noted that if transparency is disabled, this won't affect compositing, and it will also not guarantee that all graphical elements will be rendered with an opaque color due to user-defined exclusions of colorization. For example, Konsole can still render blur behind its custom blur region, if it is included in the exclusion list.
The accent color also changes depending on the window's focus state:
1. If transparency is enabled, the alpha component of the accent color gets halved when the window is out of focus.
2. If transparency is disabled, the saturation component (HSL) gets halved when the window is out of focus.
This only applies to regular windows (most windows with server-side decorations).
## Configuration menu <a name="config"></a>
The accent color can be edited in real time through the configuration menu. Internally, the color is stored in the RGB color model as that's what OpenGL expects during rendering. The color mixer window is designed to look and function like Windows 7's Personalization menu, and includes the accent colors found on Windows 7, which were directly pulled from the following registry key:
```[ HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM\ColorizationColor ]```
On Windows Vista, 7 and 8.1, this registry key holds the currently applied accent color, stored in the #AARRGGBB format. The predefined colors are:
<br>
|Color|Name|Value|
|-----|----|-----|
|<span style="background-color: #6b74b8fc; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Sky|#6b74b8fc|
|<span style="background-color: #a80046ad; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Twilight|#a80046ad|
|<span style="background-color: #8032cdcd; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Sea|#8032cdcd|
|<span style="background-color: #6614a600; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Leaf|#6614a600|
|<span style="background-color: #6697d937; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Lime|#6697d937|
|<span style="background-color: #54fadc0e; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Sun|#54fadc0e|
|<span style="background-color: #80ff9c00; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Pumpkin|#80ff9c00|
|<span style="background-color: #a8ce0f0f; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Ruby|#a8ce0f0f|
|<span style="background-color: #66ff0099; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Fuchsia|#66ff0099|
|<span style="background-color: #70fcc7f8; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Blush|#70fcc7f8|
|<span style="background-color: #856e3ba1; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Violet|#856e3ba1|
|<span style="background-color: #528d5a94; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Lavander|#528d5a94|
|<span style="background-color: #6698844c; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Taupe|#6698844c|
|<span style="background-color: #a84f1b1b; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Chocolate|#a84f1b1b|
|<span style="background-color: #80555555; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Slate|#80555555|
|<span style="background-color: #54fcfcfc; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Frost|#54fcfcfc|
|<span style="background-color: #89e61f8c; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Sunset|#89e61f8c|
Sunset is a predefined color exclusive to AeroThemePlasma.
Windows Vista and 8.1 feature a unique selection of colors as well. Vista features significantly less colors than Windows 7, with a lot more straightforward color names:
<br>
|Color|Name|Value|
|-----|----|-----|
|<span style="background-color: #45409efe; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Default|#45409efe|
|<span style="background-color: #a3000000; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Graphite|#a3000000|
|<span style="background-color: #a8004ade; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Blue|#a8004ade|
|<span style="background-color: #82008ca5; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Teal|#82008ca5|
|<span style="background-color: #9cce0c0f; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Red|#9cce0c0f|
|<span style="background-color: #a6ff7700; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Orange|#a6ff7700|
|<span style="background-color: #49f93ee7; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Pink|#49f93ee7|
|<span style="background-color: #cceff7f7; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|Frost|#cceff7f7|
Windows 8.1 features a slightly more pastel variety of colors compared to Windows 7 and includes a new feature that can determine the accent color from the wallpaper by choosing its dominant color:
<br>
|Color|Value|
|-----|-----|
|<span style="background-color: #c48f8f8f; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c48f8f8f|
|<span style="background-color: #c484c6ff; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c484c6ff|
|<span style="background-color: #c4f276c9; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c4f276c9|
|<span style="background-color: #c4f0c300; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c4f0c300|
|<span style="background-color: #c492cb2a; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c492cb2a|
|<span style="background-color: #c44ccdcd; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c44ccdcd|
|<span style="background-color: #c4ff981d; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c4ff981d|
|<span style="background-color: #c4ff4040; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c4ff4040|
|<span style="background-color: #c4ff57ab; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c4ff57ab|
|<span style="background-color: #c40abf46; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c40abf46|
|<span style="background-color: #c4c071ff; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c4c071ff|
|<span style="background-color: #c454afff; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c454afff|
|<span style="background-color: #c48c90ff; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c48c90ff|
|<span style="background-color: #c4b09d8b; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c4b09d8b|
|<span style="background-color: #c4ffffff; font-size: 24px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>|#c4ffffff|
<br><br>
While not very conclusive, [here](https://stackoverflow.com/questions/3560890/vista-7-how-to-get-glass-color) is a useful thread for more information on how accent colors work in Aero, focusing mainly on Windows 7.

View file

@ -0,0 +1,43 @@
# SMARAGD SEVEN KDECORATION2 ENGINE
## TABLE OF CONTENTS
1. [Detailed description](#desc)
2. [Compiling](#compiling)
3. [File structure](#files)
4. [Notes](#notes)
## Detailed description <a name="description"></a>
Smaragd Seven is a fork of the [Smaragd](https://invent.kde.org/plasma/smaragd) window decoration plugin. Originally designed to allow Emerald themes to be used with KWin, this fork focuses specifically on making KWin's decorations look like the decorations found on Windows Vista and 7.
The motive for forking Smaragd in particular was simply because Emerald already has fairly good Aero themes available on sites like [Pling](https://www.pling.com/), and Smaragd seemed to fit the bill perfectly. Emerald as a (collection of) decoration engine(s) still has a few limitations that prevent it from being able to replicate Aero window decorations faithfully (not to mention that Smaragd introduces a few compatibility issues of its own), so forking Smaragd was the next step.
This document contains information about the window decoration engine, for more information about the extended Emerald theme used by this project, see [Smaragd-Theme.md](../Themes/Smaragd-Theme.md).
Smaragd Seven differs from the original in the following ways:
- The glow effect behind the title text is now correctly implemented using code from [this thread](https://stackoverflow.com/questions/28918230/qt-how-to-create-a-clearly-visible-glow-effect-for-a-qlabel-e-g-using-qgraph).
- Caption buttons won't get rendered if they are disabled by the application, and will reappear correctly in case they're enabled again.
- Fixes some minor margin issues, mostly having to do with the maximized window state.
- Renders additional textures on the sides and upper corners of the decoration.
- It's more limited in scope and sacrifices the general purpose functionality of using different Emerald themes. This could be fixed later down the line.
## Compiling <a name="compiling"></a>
Dependencies, and compiling instructions are provided in [INSTALL.md](../../INSTALL.md), under the **Window Manager** section.
## File structure <a name="files"></a>
The most significant changes can be found in the following files:
|Name |Description |
|----------------|-----------------|
|kwin_smaragd.h |Main header file.|
|kwin_smaragd.cpp|Implementation of the main header file.|
|qgraphicsgloweffect.h|Header file for QGraphicsGlowEffect. Used to render the glow effect behind text.|
|qgraphicsgloweffect.cpp|Implementation of the header file for QGraphicsGlowEffect.|
## Notes <a name="notes"></a>
- Smaragd Seven also fixes the original glow effect used by the vrunner engine, however this feature has been disabled in favor of using QGraphicsGlowEffect, as it enables a more layered way of rendering visual elements.

View file

@ -0,0 +1,90 @@
# SEVENSTART
## TABLE OF CONTENTS
1. [Detailed description](#description)
2. [File structure](#files)
## Detailed description <a name="description"></a>
SevenStart is an application launcher designed to look and feel like the Windows 7 start menu. While not a perfect recreation of the start menu, SevenStart implements the following features:
1. Animated menu orb, configurable much like Classic/Open Shell.
2. Layout similar to Windows 7's Start menu.
3. Sidebar with configurable entries.
4. User profile icon that sticks out of the menu when compositing is enabled.
5. Crossfading icons between the user profile icon and sidebar entries.
6. Search results that are organized into separate categories.
As SevenStart uses code from other application launchers in KDE, it improves upon the original start menu mainly in the search department, as SevenStart will show results from available KRunner search plugins installed on the system.
SevenStart (and other plasmoids) can use internal resources for components such as FrameSvgItems through the use of ```Qt.resolveUrl(path)```, where ```path``` is a relative path to a file or directory. The path provided is relative to the internal source code of the plasmoid, so where ```main.qml``` is located. The function returns a ```url``` that ends up being the absolute path to the file.
This is heavily used throughout most other AeroThemePlasma's plasmoids in order to use custom SVGs without having to resort to workarounds such as polluting the Plasma style, however SevenStart arguably uses it the most.
### CompactRepresentation
The first notable thing about SevenStart is the use of animated icons or "orbs" as they're called on Windows. Since QtQuick doesn't offer image crossfading by default, the effect is achieved "manually", using three separate images and gradually changing their opacities and visibility.
In earlier versions of SevenStart, only two images were used, but now three images are used due to upstream updates causing subtle timing issues that would cause undesirable visual effects. Using three images did end up allowing SevenStart to replicate the effects of Vista and 7's Start menu more accurately. By default, SevenStart uses internal icons if no external icons are provided in the configuration window.
Another notable thing about the compact representation is that it is used in an unusual way compared to how plasmoids are generally designed to behave. Plasmoids have two representations:
1. Compact representation, which is used when the plasmoid is in a panel.
2. Full representation, which is used when the plasmoid is either activated from the panel, or placed on the desktop.
In practice, compact representations are just icons that get highlighted when hovered over with the mouse, with a tooltip explaining what the icon is supposed to be.
If the compact representation is set to null, then the plasmoid will be presented in its full representation regardless of its parent object. This is useful for application launchers, which typically should always have their main menu hidden behind a clickable button, regardless of its placement and hierarchy. However, this means that the main dialog window, which would normally be the full representation, now has to be handled manually by the plasmoid, and it's up to the developer on how to make it appear on the screen.
### User icon
The user icon in SevenStart is actually just another dialog window that is placed on top of the full representation, which is also a dialog window. To prevent the dialog from rendering its background, the ```backgroundHints``` property is set to ```PlasmaCore.Types.NoBackground```, which also disables shadows and blur. In a similar fashion, other plasmoids in this project use this property to change the appearance of their dialog windows, setting the property to ```PlasmaCore.Types.SolidBackground```.
The window flag ```Qt.X11BypassWindowManagerHint``` is used to prevent the dialog from animating its opacity when its visibility is changed directly, and ```Qt.Popup``` is used to ensure that it's
above the parent dialog window.
Setting the location to "Floating" means that we can use manual positioning for the dialog
which is important as positioning a dialog like this is tricky at best and unpredictable
at worst. Positioning of this dialog window can only be done reliably when:
1. The parent dialog window is visible, this ensures that the positioning of the window is actually initialized and not simply declared.
2. The width and height of the parent dialog window are properly initialized as well.
This is why the position of this window is determined on the ```onHeightChanged``` slot of the
parent window, as by then both the position and size of the parent are well defined*.
The ```firstTimePopup``` boolean is used to make sure that the dialog window has its correct position values before it is made visible to the user.
*It should be noted that the position values for any dialog window are gonna become
properly initialized once the visibility of the window is enabled, at least from what
I could figure out. Anything before that and the properties won't behave well. To comment on [MMcK Launcher](https://store.kde.org/p/1720532)'s implementation, this is likely why positioning of the floating
avatar is so weird and unreliable. Using uninitialized values always leads to
unpredictable behavior, which leads to positioning being all over the place.
## File structure <a name="files"></a>
While this section won't cover all of the files, it will cover the most important ones.
Directories:
|Location|Description|
|--------|-----------|
|config/ |Contains the configuration properties and the loader QML file.|
|pics/ |Contains raster images used by this plasmoid.|
|ui/ |Most of the QML source code can be found here.|
|ui/svgs/|SVG textures used by this plasmoid.|
|ui/orbs/|Default orb textures for the compact representation.|
|ui/code/|Helper JS code used by various parts of this plasmoid.|
Files:
|Name|Description|
|----|-----------|
|main.qml|Main QML file used to run the plasmoid.|
|CompactRepresentation.qml|Compact representation which displays the animated orb icons.|
|MenuRepresentation.qml|The expanded representation which is the application launcher itself.|
|KickoffListView.qml|Generic list view used by most views of this plasmoid.|
|CrossFadeBehavior.qml|Behavior used when crossfading two or more images.|
|IconPicker.qml|Used for opening and selecting icons. Used for selecting different icons.|
|SearchView.qml|Used to display the search results.|
|FavoritesView.qml|Used to display favorite programs.|
|OftenUsedView.qml|Used to display recently opened programs.|
|SidePanelItemDelegate.qml|Displays and holds information about the sidebar menu entries.|
|ApplicationsView.qml|Used to display all applications installed on the system.|

View file

@ -0,0 +1,164 @@
# SEVENTASKS
## TABLE OF CONTENTS
1. [Detailed description](#description)
1. [Hot tracking](#hottracking)
2. [Context menu](#contextmenu)
3. [File structure](#files)
4. [File details](#details)
## Detailed description <a name="description"></a>
Under KDE Plasma, a task manager is any plasmoid that shows a list of windows (tasks) that are rendered by the window manager. A task manager also handles things like grouping tasks together, allowing the user to see a preview of any window, controlling tasks and many other things. SevenTasks forks the default task manager, while adding significant visual and functional changes.
The default task manager from KDE comes in two different variants: regular and icons-only. If the user decided to switch between the two, they would have to replace the plasmoid completely with the other variant. SevenTasks merges both plasmoids together, and instead makes showing labels an option that can be toggled in the settings.
While most of these changes were possible to implement in pure QML, some effects couldn't have been implemented without adding an additional layer of complexity in the form of a compiled C++ part.
### Hot tracking
Under Windows 7, 8 and 8.1, tasks featured a visual effect known as "Hot tracking", where upon hovering over a task, a glowing light would appear that would follow the mouse horizontally (or vertically if the taskbar is oriented vertically). Additionally, a subtle glowing border would also appear around the hovered task.
Both of these effects share the same color, and that color is determined by the "dominant" color of the task icon. Interestingly enough, the algorithm that calculates the dominant color of an icon seems to be different between Windows 7 and 8/8.1, and as the source code and implementation details aren't public, SevenTasks has its own implementation that tries to be faithful to Windows 7's implementation, but sometimes comes up with different results.
The details regarding the general algorithm can be found [here](https://superuser.com/questions/730804/how-does-windows-7-calculate-the-color-to-use-for-taskbar-color-hot-tracking), and the following algorithm is implemented by SevenTasks:
1. We define the default highlight color as rgb(55, 176, 255). ( <span style="background-color: #37b0ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> )
2. If the icon doesn't exist (null), the icon is replaced with the icon associated with 'exec'.
3. We define a histogram, which is just a 3x3x3 list of colors, we can think of this as 27 neatly ordered buckets which represent a certain range of colors.
4. For the given icon, iteratively find the closest icon size that matches 32x32 pixels, going up in size with each unsuccessful iteration. 32x32 was chosen as the base resolution as most icons have it and it's a nice balance between accuracy and performance.
5. For every pixel in the icon, the color is separated into its red, green and blue components.
6. Every color component is then transformed into indexes in the range [0, 2]. Values within the range [0,60) return 0, [60, 200) return 1, and [200, 255] return 2.
7. If all three indexes are the same value after transformation, the pixel isn't added to any bucket. Otherwise, add the pixel to the bucket at the calculated indexes.
8. Find the bucket with the highest number of pixels. If the indexes of the bucket are all equal, discard it and return the default highlight color.
9. Iterate through the bucket and calculate a "minimum" and "maximum" color. The minimum/maximum color is formed by finding the minimum/maximum of each color component independently.
10. Calculate an average color by averaging the minimum and maximum color together (Averaging their color components respectively).
11. If the average color's HSV saturation is less than 32, return the default highlight color.
12. If the average color's HSV value is less than 85, return the default highlight color.
13. Multiply the saturation and value of the average color by 1.5 (clamping it into range [0, 255]), return the resulting color with an alpha value of 200.
Here are some examples, comparing Windows 7 (top) with SevenTasks (bottom):
<img src="../img/tasks.png">
### Context menu
SevenTasks features a complete reimplementation of the context menu found in Vista, 7, and 8/8.1, while retaining KDE specific features.
<img src="../img/contextmenu.png">
Internally, the new context menu is based on PlasmaCore.Dialog, with the solid visual appearance. As it is meant to act as a context menu, it needs to fulfill the following criteria:
- The context menu grabs *all* mouse and key inputs.
- The context menu must disappear if an event outside of it causes it to lose focus.
- The context menu must disappear if a menu item has been activated either with the mouse or the keyboard.
- The context menu must disappear if the user clicks away from it or the Escape key is pressed on the keyboard.
The current implementation accomplishes all of these except for grabbing all inputs from the keyboard, as that isn't necessary for the context menu to work properly. As such, the context menu is more forgiving when it comes to performing actions such as pressing global keyboard shortcuts. Note that this only applies when the main context menu is in focus, as child context menus are just regular Qt context menus which do grab every kind of input.
Additional notes:
- Getting the dialog window to grab mouse events will only work when either no mouse event is currently being handled, or if there is, it has to be the released or clicked event.
- The code makes a few redundant function calls to ensure the context menu really does grab the mouse, most notably with a timer that runs shortly after the context menu is shown.
- Despite the context menu being initialized, most of its visual properties are not well behaved until the visible property is set to true. Most notably, the x position may sometimes be reset to 0. As such, the code makes a few redundant calls in order to correctly set the x position and ensure it isn't reset.
- Certain actions (unpinning, closing tasks, activities) are delayed in order to prevent the context menu from being immediately removed, instead letting the menu fade out as it is freed from memory gracefully.
- Blur behind the window is only active once all animations are finished and the context menu is fully visible.
- PlasmaComponents.MenuItem elements are not renderable or interactable outside of PlasmaComponents.ContextMenu. As such, menu items visible in the context menu are made from a wrapper item, which consists of the PlasmaComponents.MenuItem and a child TasksMenuItem which does the actual rendering.
- The original ContextMenu file is still available in the source code, and can still be activated by commenting out and editing the necessary code. The regular context menu is deprecated, and will be removed in the future. (TODO)
## File structure <a name="files"></a>
This section lists the locations of modified files and a short description of their roles.
<br>
|Name |Location |Description |
|--------------------------|------------------|-------------------------------------------------------------------|
|seventasks.cpp |src/ |Implementation of the dominant color algorithm.|
|seventasks.h |src/ |Header file of the C++ source file.|
|main.xml |src/package/contents/config/|Contains the default settings for the plasmoid configuration.|
|ConfigBehavior.qml|src/package/contents/ui/ |Defines the plasmoid settings' graphical interface.|
|main.qml |src/package/contents/ui/ |The main file of the plasmoid.|
|Task.qml|src/package/contents/ui/ |The base task item.|
|TasksMenu.qml|src/package/contents/ui/|Reimplemented context menu.|
|TasksMenuItem.qml|src/package/contents/ui/|Renderable and interactable part of the context menu item.|
|TasksMenuItemSeparator.qml|src/package/contents/ui/|Separator items for the context menu.|
|TasksMenuItemWrapper.qml|src/package/contents/ui/|PlasmaComponents.MenuItem with an embedded TasksMenuItem element and shortcut component.|
|ToolTipDelegate.qml|src/package/contents/ui/ |An item that strings together grouped task previews.|
|ToolTipInstance.qml|src/package/contents/ui/ |A single instance of a task preview.|
|ToolTipWindowMouseArea.qml|src/package/contents/ui/|Highlight that appears on a task preview.|
## File details <a name="details"></a>
### main.xml & ConfigBehavior.qml
Plasmoids with settings make use of the main.xml file to define entries and their default values. Entries are categorized into groups, and each entry has a name and type attribute. Some basic types include:
- Bool
- Enum
- Int
- String
- StringList
- Url
While entries can include other additional elements, most of them include a label and default tag. A label describes what the settings entry is for, while the default tag defines the default value for the entry.
SevenTasks adds the following entry to the settings:
```
<entry name="labelVisible" type="Bool">
<label>Show labels next to task icons.</label>
<default>false</default>
</entry>
```
Every entry needs a matching control to be defined in QML. In ConfigBehavior.qml, the following is added for toggling this entry:
```
//...
property alias cfg_labelVisible: labelVisible.checked
//...
CheckBox {
id: labelVisible
Kirigami.FormData.label: i18n("Labels:")
text: i18n("Show labels next to task icons")
}
```
### seventasks.h & seventasks.cpp
Public methods:
<br>
|Type|Name|Description|
|------|------------------------------|-----------|
|void|disableBlurBehind(QWindow*)|Disables the blur behind a window. Used to make the fade out effect of the context menu closing more visually pleasing.|
|QColor|getDominantColor(QVariant src)|Returns the dominant color of the icon. Even though the argument a QVariant, the expected data type is QIcon.|
|QPoint|getPosition(QWindow*)|Gets the local mouse coordinates with respect to the QWindow.|
|bool|isActiveWindow(int wid)|Returns if the window identified by the provided wId is active.|
|void|setMouseGrab(bool arg, QWindow* w)|Makes a QWindow object grab all mouse events from the system. Additionally installs the singleton Applet class to the provided QWindow object as an event filter. More details are in the source code.|
Protected methods:
<br>
|Type|Name|Description|
|----|----|-----------|
|bool|eventFilter(QObject* watched, QEvent\* event)|Filters mouse click events in order to notify the context menu that the mouse has been clicked.|
Signals:
<br>
|Name|Description|
|----|-----------|
|mouseEventDetected()|This signal is emitted when the event filter detects a mouse click event.|
Functions:
<br>
|Type|Name|Description|
|----|----|-----------|
|QRgb|averageColor(QRgb a, QRgb b)|Mixes the two provided colors by doing an average of every color component.|
|unsigned int|mapColorChannel(int channel)|Transforms the provided integer from the range [0,255] to [0,2] according to the algorithm described above.|
|unsigned char|max(unsigned char a, unsigned char b)|Returns the maximum between the two arguments.|
|unsigned char|min(unsigned char a, unsigned char b)|Returns the minimum between the two arguments.|

View file

@ -0,0 +1,46 @@
# SYSTEM TRAY
## TABLE OF CONTENTS
1. [Detailed description](#description)
2. [File structure](#files)
3. [File details](#details)
## Detailed description <a name="description"></a>
The system tray is a special plasmoid in KDE Plasma that essentially contains a collection of other widgets and displays them within the popup panel. This plasmoid also features third party tray icons from other programs, which is standard across many desktop environments.
Because of the complexity of this plasmoid, this document won't explain everything in detail (as it would be out of scope for this project), instead only showing and explaining the changes done to the source code. Additionally, the source code of this fork hasn't been regularly synchronised with the upstream, so any noticeable differences in the source code not specified here are the result of that. The modifications featured in this fork are purely visual, without altering the core functionality.
Here is the list of visual changes done to the plasmoid:
**Compact representation:**
- The "Show hidden icons" button has been moved to the left, and features a button texture for the hover, press and active states.
- The "small" icon size has been reduced even more to the resolution of 16x16 pixels.
- Each tray icon has an animated hover and press state, removing the transition animation when the user clicks from one tray icon to another.
- Additionally, the indicator texture no longer gets rendered when the user clicks on the "Show hidden icons" button.
- The "pop" animation has been removed from the tray icon (the PulseAnimation that happens when a tray icon needs attention is retained).
**Expanded representation:**
- The popup panel is now a floating panel that has is slightly padded from the bottom.
- The popup panel now uses the solid dialog panel SVG texture.
- The popup panel is now smaller in both width and height.
- The header text is smaller and more consistent in size.
- The internal plasmoid also has some additional small padding between itself and the panel borders.
- In the "Status and Notifications" view, the item highlight no longer lingers when no item is highlighted by the mouse.
## File structure <a name="files"></a>
This section lists the locations of modified files and a short description of their roles. Further documentation is provided in each source file.
<br>
|Name |Location |Description |
|--------------------------|------------------|-------------------------------------------------------------------|
|AbstractItem.qml |contents/ui/items/|Skeleton code for all tray icons. |
|CurrentItemHighLight.qml |contents/ui/ |The texture that appears around a tray icon when it's pressed. |
|ExpanderArrow.qml |contents/ui/ |The "Show hidden items" button in the compact representation. |
|ExpandedRepresentation.qml|contents/ui/ |The floating dialog panel that appears when expanding the plasmoid.|
|main.qml |contents/ui/ |The main file of the plasmoid. |

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View file

@ -0,0 +1,226 @@
# SEVEN-BLACK KDE PLASMA THEME
## TABLE OF CONTENTS
1. [Detailed description](#description)
2. [File structure](#files)
3. [Nonstandard SVGs](#svgs)
## Detailed description <a name="description"></a>
Seven-Black is the theme for KDE Plasma's shell, responsible for defining the appearance of panels, plasmoids, dialog windows, tooltips, etc. This includes almost all components written in QML that make use of KDE's API (PlasmaComponents, PlasmaExtras).
KDE Plasma styles consist of SVG files which define the appearance of shell components and basic graphical elements. The program **Plasma Theme Explorer** can be used to examine the theme and to get a description of where each SVG file is used. The color scheme of the style can also be examined. A more detailed explanation on Plasma styles can be seen [here](https://develop.kde.org/docs/plasma/theme/theme-details/). More documentation about KDE Plasma in general can be seen [here](https://develop.kde.org/docs/plasma/).
Windows following Plasma's API can have three general appearances depending on certain system settings:
1. Default - Compositing is enabled and background contrast is disabled
2. Transparent - Compositing is enabled and background contrast is enabled
3. Opaque - Compositing is disabled, background contrast doesn't matter here
KDE Plasma will read different SVG files depending on which appearance is currently active. This theme completely ignores the transparent appearance state, so it's recommended to keep the background contrast setting off.
### Solid appearance
The solid appearance is a fourth appearance state that doesn't depend on how the system is configured, instead it is used on demand by plasmoids. Going by KDE's official documentation, this appearance state should be used for completely opaque elements, and in practice, most other themes don't include any kind of dedicated SVG here, simply letting Plasma render solid elements with a single color.
However, compositing effects are still applied to these elements, and more importantly, any SVG file can be provided for the solid appearance state, regardless if the texture is detailed, transparent or opaque. This theme takes advantage of that at the cost of using this state in an unintended, nonstandard way. Being a relatively rare method of rendering things, it's considered a worthy tradeoff.
<img src="./img/solid.png">
This project uses solid textures for the system tray, as well as DigitalClockLite. The design of the solid panel texture is meant to replicate the floating panels from the system tray as seen in Windows 7. However, due to certain limitations in the way Plasma handles theming, the text in these dialog windows cannot be drawn with a black color (or at least, definitely not easily), hence why a stylized blue background has been placed instead, to provide readability while keeping in line with Aero's aesthetics.
Regular textures are used for all other windows (plasmoids, OSD popups, task switchers, side menus and notification popups).
The opaque appearance state aims to be a recreation of Aero Basic (WIP). Currently, only plasmoids using solid textures and the window manager don't comply with the aesthetic, but everything else does. A potential solution is to detect a change in compositing in plasmoids that use solid textures, change the dialog type to ```NoBackground``` and display a custom texture as the background while compositing is disabled. A similar solution can also be applied to the window manager.
### Icons
This theme also features a small set of icons used mainly by plasmoids like the system tray. Most of these icons are simply just scaled down variants of icons taken from Breeze, while other icons are taken directly from the main icon theme of this project.
Following the release of KDE Plasma 6, this part of the Plasma theme will become deprecated.
## File structure <a name="files"></a>
This section will focus on files that are affected by the colorization effect, files that represent the Aero Basic style, as well as files that are used only by this project. It should be noted that these nonstandard files are now decoupled from Seven-Black and are located in their respective plasmoids' source code, so that they can be used without having to rely on this specific Plasma style. As such, these nonstandard files will be removed completely from Seven-Black in future releases.
The "Unique" column describes if the file itself is exclusive to Seven-Black.
<br>
|Name |Location |Description |Has accent color|Standard|Unique|
|----------------------|---------------|----------------------------------------------------|----------------|--------|------|
|background.svg |dialogs/ |Default dialog texture. |Y |Y |N |
|panel-background.svg |widgets/ |Default taskbar texture. |Y |Y |N |
|tooltip.svg |widgets/ |Default tooltip texture. |Y |Y |N |
|button-close.svg |widgets/ |Close button icon used in SevenTasks. |N |N |Y |
|menuitem.svg |widgets/ |Texture used for menu items in SevenStart and SevenTasks|N |N |Y |
|showdesktop.svg |widgets/ |Texture used for the Show desktop plasmoid. |N |N |Y |
|sidebaritem.svg |widgets/ |Texture used for sidebar entries in SevenStart. |N |N |Y |
|startmenu-buttons.svg |widgets/ |Texture used for the shut down button in SevenStart.|N |N |Y |
|system-lock-screen.svg|widgets/ |Lock icon used in SevenStart. |N |N |Y |
|systray.svgs |widgets/ |Texture used for the expander arrow button in the system tray.|N |N |Y |
|taskbarhover.svg |widgets/ |Texture used for hovered tooltips in SevenTasks. |N |N |Y |
|arrows.svgz |widgets/ |Used mainly by SevenStart and the system tray. |N |N |N |
|button.svg |widgets/ |Used by the keyboard layout switcher plasmoid. |N |N |N |
|tabbar.svgz |widgets/ |Used mainly by SevenTasks and the system tray. |N |N |N |
|tasks.svg |widgets/ |Used by SevenTasks for custom grouped tasks. |N |N |N |
|viewitem.svgs |widgets/ |Used by the desktop containment. |N |N |N |
|background.svg |opaque/dialogs/|Used when compositing is disabled. |N |Y |N |
|panel-background.svg |opaque/widgets/|Used when compositing is disabled. |N |Y |N |
|tooltip.svg |opaque/widgets/|Used when compositing is disabled. |N |Y |N |
|background.svg |solid/dialogs/ |Used by the system tray and date and time plasmoid. |Y |Y |N |
## Nonstandard SVGs <a name="svgs"></a>
This section will go through every nonstandard SVG file used by various plasmoids featured by AeroThemePlasma. As these files have now been relocated, for every file listed here there will be a list of plasmoids from this project that use the file.
### system-lock-screen.svg
Used in: SevenStart (io.gitgud.wackyideas.SevenStart)
Used for displaying the lock button next to the Shut Down button. The SVG itself has two elements - "dark-lock" and "light-lock", so that SevenStart can toggle between them as the user enters or exits the search view.
<img src="./img/lock.png">
### button-close.svg
Used in: SevenTasks (io.gitgud.wackyideas.seventasks)
It has three prefix states:
- Default (no prefix)
- Hovered (hover-)
- Pressed (pressed-)
Used in the tooltip popup when a task is hovered over with the mouse.
<img src="./img/close.png">
### showdesktop.svg
Used in: Show Desktop (Aero) (io.gitgud.wackyideas.win7showdesktop)
It has three prefix states:
- Normal (normal-)
- Hovered (hover-)
- Selected (selected-)
Used to give the button a scalable texture.
<img src="./img/showdesktop.png">
### sidebaritem.svg
Used in: SevenStart (io.gitgud.wackyideas.SevenStart)
It doesn't have any states other than the default, as it is only visible when hovered over or focused during keyboard navigation. It is used in SevenStart as a texture for the sidebar menu entires.
<img src="./img/sidebar.png">
### startmenu-buttons.svg
Used in: SevenStart (io.gitgud.wackyideas.SevenStart)
This is a set of two 9 segment textures used as FrameSvgItems. Both textures have the following states, with the right-oriented button additionally having a ```rtl-``` prefix:
- Normal (normal-)
- Hovered (hover-)
- Pressed (pressed-)
Used for the shut down and lock screen buttons.
<img src="./img/shutdown.png">
### taskbarhover.svg
Used in: SevenTasks (io.gitgud.wackyideas.seventasks)
It has two states:
- Normal (normal-)
- Active (active-)
It is used as a tooltip hover indicator. It will appear in its active state when the task's window is active. Otherwise, the tooltip is in its normal state and invisible by default. The texture is rendered with different opacities, depending on the mouse state (hovered and clicked states).
<img src="./img/taskbarhover.png">
### arrows.svgz
Used in: SevenStart (io.gitgud.wackyideas.SevenStart)
Apart from the standard four oriented arrows, two variants have been added:
- Hovered (with a hover- prefix)
- Black (with a -black suffix)
Used in the application view and in other minor graphical elements.
<img src="./img/arrows.png">
### button.svg
Used in: Keyboard Layout (org.kde.plasma.keyboardlayout)
A 9 segment button texture has been added with two states:
- Hover (keyboard-hover-)
- Pressed (keyboard-pressed-)
Used to give the layout switcher a button appearance.
<img src="./img/switcher.png">
### tabbar.svgz
Used in: SevenTasks (io.gitgud.wackyideas.seventasks), DigitalClockLite (io.gitgud.wackyideas.digitalclocklite)
This SVG contains 9 segment textures with three states:
- Active (active-)
- Pressed (pressed-)
- North active (north-active-)
The north active state is typically used for actual tabs, which is why it has a distinct look from the other two states. The regular active state is used when the user hovers over an element.
<img src="./img/tabbar.png">
<img src="./img/tabbar2.png">
### tasks.svg
Used in: SevenTasks (io.gitgud.wackyideas.seventasks)
The biggest modification to this SVG file is the addition of a stacked modifier to each state, defined with the "stacked+" suffix. These are mostly blank 9 segment textures with the right borders kept visible. Used for grouping multiple tasks together, achieving a graphical effect of "stacking" multiple elements on top of each other.
<img src="./img/tasks.png">
### viewitem.svg
Used in: Desktop containment (org.kde.desktopcontainment)
It has three states:
- Hover (hover-)
- Selected (selected-)
- Selected+Hover (selected+hover-)
Used for signifying the highlight and selected state for icons on the desktop.
<img src="./img/desktop_icons.png">
### menuitem.svg
Used in: SevenStart (io.gitgud.wackyideas.SevenStart), SevenTasks (io.gitgud.wackyideas.seventasks)
It has three states:
- Hover (hover-)
- Selected (selected-)
- Selected+Hover (selected+hover-)
Used for all menu items in the start menu, as well as menu items in the context menu for SevenTasks.
<img src="./img/menuitem.png">
<img src="./img/menuitem2.png">

View file

@ -0,0 +1,74 @@
# SMARAGD SEVEN WINDOW DECORATION THEME
## TABLE OF CONTENTS
1. [Detailed description](#description)
2. [Theme configuration](#theme)
3. [File structure](#files)
## Detailed description <a name="description"></a>
This is the theme component of Smaragd Seven based on Emerald, the window decorator for Compiz. For a basic introduction on Emerald in the context of Compiz and regular Smaragd, click [here](http://wiki.compiz.org/Decorators/Emerald).
Despite the use of non-standard textures, this theme is still compatible with regular Compiz, which just ignores the files specific to Smaragd Seven. When used with Smaragd Seven, the theme provides additional textures for the following elements:
- Side gradients
- Left side glow
- Right side glow
<img src="./img/window.png">
One element that is rendered by Smaragd Seven independently of the Emerald theme is the glowing effect behind the text of the window. Changing settings related to this effect in the theme configuration file will not alter its behavior. It should also be pointed out that reflections are not rendered by Smaragd Seven, but rather the Reflection KWin effect.
One notable difference compared to the default Windows 7 look is that the titlebar height and window buttons are sized differently. The sizing has been set to look more like Windows Vista's default settings instead. (Top - Vista, Bottom - 7)
<img src="./img/winver.png">
One last important detail is that the window decoration itself is fully transparent. Instead, the decoration is colored by the reflection effect, while Smaragd Seven provides the transparent texture that is rendered on top of the reflections.
## Theme configuration <a name="theme"></a>
Certain details about the theme are dictated by the `theme.ini` configuration file. It's not recommended to edit this file, either manually or through the Emerald Theme Manager, as most values don't have an effect anymore when using Smaragd Seven, some are configured with non-standard values, and most other values are already configured to achieve this specific look. Some relevant settings include:
```
[engine]
# Tells the decorator to use the vrunner engine for rendering the window decoration texture.
engine=vrunner
[vrunner_settings]
...
# Windows will have rounded corners with the radius of 6 pixels.
radius=6
[buttons]
...
# Caption buttons will be offset by 2 pixels to the right, to align them with
# the right window border. Negative values here are not supported, as opening up Emerald Theme Manager
# will simply reset this value back to 0, not allowing negative values.
horizontal_offset=-2
[titlebar]
min_titlebar_height=21
# This defines the standard item layout for the titlebar (Icon, window title, minimize, maximize and close)
title_object_layout=I(2)T::NXC:Normal Layout
```
## File structure <a name="files"></a>
|Name |Description |Standard|
|-------------------------|-------------------------------------------------------------------------------|--------|
|buttons.close.png |Contains textures for the close button for both active and inactive windows. |Y |
|buttons.glow.png |Contains glow textures for all the buttons when the window is active. |Y |
|buttons.inactive_glow.png|Contains glow textures for all the buttons when the window is inactive. |Y |
|buttons.max.png |Contains textures for the maximize button for both active and inactive windows.|Y |
|buttons.min.png |Contains textures for the minimize button for both active and inactive windows.|Y |
|buttons.restore.png |Contains textures for the restore button for both active and inactive windows. |Y |
|reflection.png |The default reflection texture for the Reflection KWin effect. |N |
|sidebar.png |Texture for the side border gradients when the window is active. |N |
|sidebar_unfocus.png |Texture for the side border gradients when the window is inactive. |N |
|sideglow_left.png |Texture for the left side glow effect of the window. |N |
|sideglow_right.png |Texture for the right side glow effect of the window. |N |

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
Documentation/Themes/img/lock.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

497
INSTALL.md Normal file → Executable file
View file

@ -3,72 +3,61 @@
## TABLE OF CONTENTS
1. [Prerequisites](#preq)
2. [KDE Plasma Settings](#plasma-settings)
3. [KDE Plasma Theme](#plasma-theme)
4. [Icons and cursors](#icons)
5. [Aero Color Mixer](#aeromixer)
6. [Qt Visual Style](#application-theme)
7. [Fonts](#fonts)
8. [Window Manager](#wm)
9. [Plasma Widgets](#widgets)
10. [Task Switcher](#task-switcher)
11. [Sounds](#sounds)
12. [Wine](#wine)
13. [Video Guide](#video-guide)
1. [KDE Plasma Settings](#plasma-settings)
1. [KDE Plasma Theme](#plasma-theme)
1. [Icons and cursors](#icons)
1. [Qt Visual Style](#application-theme)
1. [Fonts](#fonts)
1. [Window Manager](#wm)
1. [Reflection Effect](#reflection)
1. [Plasma Widgets](#widgets)
1. [Task Switcher](#task-switcher)
1. [Splash Screen](#splash-screen)
1. [Sounds](#sounds)
1. [Wine](#wine)
1. [Terminal](#terminal)
### Prerequisites <a name="preq"></a>
The following software is required for this project:
- KDE Plasma
- KWinFT/KWin with compositing support enabled
- Kvantum/QGtkStyle/Both (QGtkStyle is included in the package ```qt5-styleplugins```)
- If using QGtkStyle, ```gtk-chtheme``` is recommended for switching between GTK2 themes
- Qt5 Graphicaleffects package (```qt5-graphicaleffects``` on Arch and derivatives)
- KWinFT/KWin with compositing support for blur and other effects
- Kvantum
- Some program to change the GTK2 theme, like ```gtk-chtheme```.
- Qt5 GraphicalEffects package (```qt5-graphicaleffects``` on Arch)
Optional programs:
- KMix
- Wine
Optional components which are deprecated and/or not supported:
- Compiz with Emerald
- QtCurve
**Detailed explanation:**
This project looks best when used with sofware which uses the Qt framework.
The Qt visual style can be set to either Kvantum or QGtkStyle. Kvantum offers a simple to customise SVG-based theme of Aero with perks such as animated transitions, scaling support and better Qt integration, while QGtkStyle renders Qt as if it were a GTK2 style, which makes GTK2 and Qt programs look more unified. It is up to the user's personal preference to choose between either visual style.
**NOTE: From now on, paths starting with a period (```.```) will refer to paths within this git repository.**
- KMix, for a volume menu that looks more like Windows 7. For Pipewire users it might be better to just use the default volume plasmoid KDE provides.
### KDE Plasma Settings <a name="plasma-settings"></a>
Starting off with the simplest modifications, this is a list of recommended settings which are configurable in System Settings, to make Plasma behave closely like Windows 7. Of course, these settings are optional and simply personal preference.
Starting off with the simplest modifications, this is a list of recommended settings which are configurable in the system settings, to make Plasma behave more like Windows 7:
- Under Workspace Behaviour:
- Under General Behaviour:
- Clicking files or folders: Selects them
- Under Desktop Effects:
- Disable Background contrast *(This theme does not make use of this option #9)*
- Blur, set Blur strength to 2, and Noise strength to 0
- Desaturate Unresponsive Applications
- Fading popups
- Login
- Logout
- Morphing popups
- Translucency (Turn this off if it makes moving windows transparent)
- Glide:
- Duration: 300ms
- Disable 'Background contrast' *(This theme does not make use of this option #9)*
- Enable 'Blur', set Blur strength to 2, and Noise strength to 0
- Enable 'Desaturate unresponsive applications'
- Enable 'Fading popups'
- Enable 'Login', check 'Fade to black' *(Apparently this effect is currently broken? It won't actually fade to black.)*
- Enable 'Logout'
- Enable 'Morphing popups'
- Disable 'Sliding Popups'
- Disable 'Translucency'
- Enable 'Glide':
- Duration: 200ms
- Window Open Animation: Top, 8, 20
- Window Close Animation: Bottom, 15, 30
- Window Aperture
- If using KWinFT, enable Flip Switch; Set Flip animation duration to 200, and Angle to 45°.
- Scale (Window Open/Close Animation)
- Enable 'Window Aperture'
- If using KWinFT, enable 'Flip Switch':
- Flip animation duration: 200
- Angle: 45°.
- Enable 'Scale' (Appearance)
- Under Screen Edges:
- Turn off all 8 screen edges
- Under Touch Screen:
@ -81,214 +70,231 @@ Starting off with the simplest modifications, this is a list of recommended sett
- Under Window Actions:
- Modifier key: Meta
- Under KWin Scripts:
- Enable MinimizeAll script
- Enable 'MinimizeAll'
When editing Plasma's bottom panel, make sure its width is set to 40 pixels.
### KDE Plasma Theme <a name="plasma-theme"></a>
The Seven-Black Plasma theme is the main theme for KDE Plasma's shell. Put it in the following directory:
```~/.local/share/plasma/desktoptheme/Seven-Black```
Seven-Black is the theme for Plasma's shell. To install it, put it in the following directory (create it if it doesn't exist):
```
$ ~/.local/share/plasma/desktoptheme/
```
To apply it, go to ```System Settings -> Appearance -> Plasma Style``` to find it and select it.
### Icons and cursors <a name="icons"></a>
The folder ```windowsicon``` is the icon theme, while ```aero-cursors``` is the cursor theme. Both of these belong in
the following directory:
```/usr/share/icons``` (Requires root privileges)
The icon theme is ```windowsicon```, while ```aero-cursors``` is the cursor theme. Extract the tar archives and move the folders in the following directory:
```
$ ~/.local/share/icons/
```
To apply them, go to ```System Settings -> Appearance -> Icons``` and ```System Settings -> Appearance -> Cursors``` respectively.
To apply them, go to ```System Settings -> Appearance -> Icons``` and ```System Settings -> Appearance -> Cursors``` respectively to select them.
### Aero Color Mixer <a name="aeromixer"></a>
AeroColorMixer is a configuration utility meant for customising this Aero theme to your liking. It is built based on the Personalisation features from Windows 7, with the ability to change the accent color of the glassy visual effects. The colors and names features within the program are taken from Windows 7, while it is also possible to adjust the color to your own liking.
The binary for AeroColorMixer is located in the build folder of the source code:
```./Plasma/KDE Plasma Theme/AeroColorMixer/build```
No installation is required, however it is advised to place the binary in a path listed in the user's PATH, like:
```/usr/bin``` (Requires root privileges)
A few notes regarding AeroColorMixer:
- The configuration file is stored in: ```~/.config/.aerorc``` and it stores information regarding the custom color, transparency settings, and which color is currently applied.
- Directly editing this configuration file DOES NOT change your theme's colors, instead it is used for the utility to load itself into a known state.
- Toggling the transparency setting inside this program does not affect compositing settings on your window manager.
Both the source code and binaries are provided, and the binary is compiled with Qt version 5.15.5, glibc 2.36 and on the x86_64 architecture.
**NOTE: This program is meant to work only with this theme, and it assumes that you have both the Plasma theme and the Emerald theme installed on your system.**
It is also strongly recommended to install the [Oxygen](https://invent.kde.org/frameworks/oxygen-icons5) icon theme if it's not already installed on your system, as this project's icon theme optionally depends on it.
### Qt Visual Style <a name="application-theme"></a>
Installing QGtkStyle requires installing the package ```qt5-styleplugins``` which is available in the AUR for Arch users and the galaxy repository for Artix users.
Installing Kvantum requires installing the package ```kvantum``` which is available in the community repository.
Installing Kvantum requires installing the package ```kvantum``` which is available in the community repository for Arch, and is available on most other Linux distributions as well.
To install the GTK2 theme, locate and move the following directory:
```./Qt/Application Theme/QGtkStyle/win27pixmap```
```
$ ./Qt/Application_Theme/QGtkStyle/win27pixmap/
```
to the following directory:
to this directory (create it if it doesn't exist):
```~/.themes```
```
$ ~/.themes/
```
If this directory does not exist, simply make it.
Installing the Kvantum theme is simply done through Kvantum Manager.
Installing the Kvantum theme is simply done through Kvantum's settings. Afterwards, Kvantum can be set as the visual style in ```System Settings -> Appearance -> Application Style```.
**Applying the GTK2 theme:**
To use the GTK2 theme for Qt programs, it must be selected in ```System Settings -> Appearance -> Application Style```, and it must be applied as a regular GTK2 theme as well. To do this, use a program like ```gtk-chtheme``` to set it for all GTK2 programs. Be sure to set the font to Segoe UI, size 9.
Through a utility program like ```gtk-chtheme```, set the GTK2 theme to Win2-7. When configuring GTK2, make sure to set the font to the same font as configured in the system settings (for this theme, the default is Segoe UI, size 9).
In case the GTK2 theme isn't persistent throughout sessions, in order to keep it applied, add the following line:
```GTK2_RC_FILES=/home/[username]/.themes/win27pixmap/gtk-2.0/gtkrc```
```
GTK2_RC_FILES=/home/[username]/.themes/win27pixmap/gtk-2.0/gtkrc
```
in ```/etc/environment```. This requires root privileges. Replace ```[username]``` with your own user name. Restart your Plasma session to see the effect.
in
```
# /etc/environment
```
Replace ```[username]``` with your own user name. Restart the Plasma session to see the effect.
**Installing the color scheme:**
To install the color scheme, go to ```System Settings -> Appearance -> Colors```, and click "Install from file.". Locate the following file and select it:
To install the color scheme, go to ```System Settings -> Appearance -> Colors``` and click "Install from file". Locate the following file and select it:
```./Plasma/Color Scheme/KvCurvesLight.colors```
```
./Plasma/Color_Scheme/AeroColorScheme.colors
```
Select the color scheme and apply it.
### Fonts <a name="fonts"></a>
For the sake of keeping this theme pack relatively compact, and due to licensing issues, this project won't include the Microsoft Windows fonts, but you can get them if you have a Windows installation.
Windows fonts are stored in the following directory:
For the sake of keeping this theme pack relatively compact, and to avoid potential licensing issues, this repository won't include Windows fonts, but acquiring them from an already present Windows installation is easy.
On Windows, fonts are stored in the following directory:
```C:\Windows\Fonts\```
```
C:\Windows\Fonts\
```
If you have an existing Windows installation, you can simply copy them over to the following directory:
If you have an existing Windows installation, you can simply copy the fonts over to the following directory (note that this will install the fonts across the entire system):
```/usr/share/fonts/windows``` (Requires root privileges)
```
# /usr/share/fonts/windows/
```
Make sure to keep them all tidy in a separate folder from the rest.
As for the actual font configurations, in System settings, go to ```Appearance -> Fonts```, and then apply the following
settings:
It might be necessary to also update the fontconfig cache:
```
$ fc-cache
```
As for the actual font rendering configuration, in ```System Settings -> Appearance -> Fonts``` apply the following settings:
- General: Segoe UI 9pt
- Fixed width: Fixedsys 11pt (Can be any monospace font)
- Fixed width: Fixedsys 11pt
- Small: Segoe UI 8pt
- Toolbar: Segoe UI 9pt
- Menu: Segoe UI 9pt
- Window title: Segoe UI 9pt <br>
- Anti-aliasing: Enable
- Sub-pixel rendering: RGB
- Sub-pixel rendering: RGB *(This may vary depending on the monitor, choose the setting that looks best for your monitor and eyes.)*
- Hinting: Slight
Tweak these settings around as you'd like.
Since KDE isn't that stable you may have to restart it in order to actually see the real results - KDE tends to
butcher font rendering upon changing settings. I don't know why.
Relog into a new Plasma session to see the results.
Note: [Font rendering on Linux is largely broken now and has been for several years](https://www.phoronix.com/news/HarfBuzz-Hinting-Woe). This is because Pango no longer uses FreeType for font rendering, using HarfBuzz instead. As a result, **all** font hinting options are broken except for slight font hinting, and HiDPI rendering. Despite the backlash, the developers arrogantly suggest using only HiDPI screens from now on, or "to get used to it". This regression has taken away the aggressive font hinting which was nearly identical to ClearType on Windows 7.
Note: Font rendering on Linux is [largely broken now](https://gitlab.gnome.org/GNOME/pango/-/issues/656) [and has been](https://gitlab.gnome.org/GNOME/pango/-/issues/463) [for](https://gitlab.gnome.org/GNOME/pango/-/issues/404) [several](https://github.com/harfbuzz/harfbuzz/issues/2394) [years](https://www.phoronix.com/news/HarfBuzz-Hinting-Woe). As a result, **pretty much all** font hinting options are broken except for **slight** font hinting and HiDPI rendering (because at that point, subpixel rendering isn't even needed). This regression has taken away the aggressive font hinting which made rendering nearly identical to ClearType on Windows 7. Currently, full font hinting _should technically work again_, but certain glyphs aren't horizontally aligned correctly, which still makes text unreadable. Until this issue is resolved, the only viable choice is to use slight font hinting.
### Window Manager <a name="wm"></a>
To install Smaragd, move the file:
To install the window decoration, move the file:
```./KWin/bin/kwin_smaragd.so```
```
$ ./KWin/smaragd_bin/kwin_smaragd.so
```
to:
```/usr/lib/qt/plugins/org.kde.kdecoration2/kwin_smaragd.so``` (Requires root privileges)
```
# /usr/lib/qt/plugins/org.kde.kdecoration2/
```
To install the theme in question, move the following directory:
The window decoration requires an Emerald theme to be present as well. To install the theme, move the following directory (If it doesn't appear, enable viewing hidden files):
```./KWin/.emerald``` (If it doesn't appear, turn on 'Show hidden files')
```
$ ./KWin/.emerald/
```
to:
to the home directory.
```~/.emerald```
To apply Smaragd, select it in ```System settings -> Appearance -> Window Decorations```.
Any changes made to the theme will be nearly instant. The changes are applied as soon as the window is updated (resizing, maximizing/restoring the window). It is not recommended to edit the theme file by hand.
To apply the window decoration, go to ```System settings -> Appearance -> Window Decorations``` and select Smaragd.
#### Compiling instructions
Compiling on Arch Linux requires a few dependencies to be present on your system:
Compiling Smaragd on Arch Linux requires a few dependencies to be installed on the system:
- cmake
- cairo
- glib2
- kdebase-runtime
- kdelibs 4.14.X
- kdelibs 4.14.x
The last two dependencies are available as prebuilt packages in this repository. The package `kdebase-runtime` doesn't exist anymore for Arch, not even the AUR, and so the only place to find it outside of this repository is through [this](https://archive.org/details/archlinux_pkg_kdebase-runtime) link. The package `kdelibs` can be installed through the AUR, however I recommend against it as compiling the package takes very long, and as of right now, building the package seems impossible. Other distributions will likely be better in terms of offering legacy packages.
The last two dependencies are provided in this repository as prebuilt Arch packages. The package `kdebase-runtime` doesn't exist anymore for Arch, not even the AUR, so the only place to find it outside of this repository is through [this](https://archive.org/details/archlinux_pkg_kdebase-runtime) link. The package `kdelibs` can be installed through the AUR, however it isn't recommended as compiling the package takes very long, and as of right now, building the package seems to fail. Distributions like Debian might be better in terms of offering legacy packages.
To compile Smaragd, do the following in the terminal:
To compile Smaragd from the terminal:
1. `cd smaragd-0.1.1`
2. `mkdir build` (You can delete the build directory that already exists, or use a different name)
3. `cd build`
4. ```cmake -DCMAKE_INSTALL_PREFIX=`kf5-config --prefix` ..```
5. `make`
6. `sudo make install`
```bash
cd smaragd-0.1.1
mkdir build #You can delete the build directory that already exists, or use a different name
cd build
cmake -DCMAKE_INSTALL_PREFIX=`kf5-config --prefix` ..
make
sudo make install
```
If compiling multiple times, only the last step is required. Steps 1-4. are for setting the environment up for the first time.
To see new changes, restart KWin (Assuming Smaragd has been installed for the first time, and has been selected in the settings).
To see the changes after compiling and setting Smaragd in the System Settings, simply restart KWin.
### Reflection Effect <a name="reflection"></a>
To install the reflection effect, it's recommended to build it from source. The required dependencies are:
- cmake
- extra-cmake-modules
Then, go to the folder:
```
cd ./KWin/kwin_reflect/
sh install.sh
```
After it has been compiled, you can log out or restart plasma and kwin, then go to ```System settings -> Workspace Behavior -> Desktop Effects``` and enable the effect.
### Plasma widgets <a name="widgets"></a>
### User plasmoids
These plasmoids do not require root privileges or editing system files to install. Installing them can be done by moving the plasmoid folders found in the following directory:
These plasmoids do not require root privileges or editing system files to install. Installing them can be done by moving the plasmoid folder found in the following directory:
```./Plasma/Plasma Widgets/User```
```
$ ./Plasma/Plasma_Widgets/User/
```
to:
```~/.local/share/plasma/plasmoids```
```
$ ~/.local/share/plasma/plasmoids/
```
Example:
To install Seven Start, move the directory:
```./Plasma/Plasma Widgets/User/Start Menu/SevenStart```
```
$ ./Plasma/Plasma_Widgets/User/io.wackyideas.SevenStart/
```
to:
```~/.local/share/plasma/plasmoids/SevenStart```
Also, it is necessary to have the KDE Plasma theme installed and applied beforehand, or else the plasmoids will not display correctly.
The following segments will explain how to configure these widgets.
#### Seven Start
After installing and adding this widget to the main panel, you will notice that it has no icon. It is necessary to open the configuration window and set the icons as shown in the screenshot below:
<img src="Screenshots/SevenStartConfig.png">
The icons are located in:
```./Plasma/Plasma Widgets/User/Start Menu/Orbs```
```
$ ~/.local/share/plasma/plasmoids/
```
#### Seven Tasks
Seven Tasks requires an additional install step which requires root privileges. It is necessary to complete this step first before installing and using this plasmoid. To complete the installation, move the following file:
Before installing this plasmoid normally, it requires moving a file to a directory which requires root privileges. Move this file:
```./Plasma/Plasma Widgets/User/Task Icons/bin/plasma_applet_seventasks.so```
```
$ ./Plasma/Plasma_Widgets/User/plasma_applet_seventasks.so
```
to:
```/usr/lib/qt/plugins/plasma/applets/plasma_applet_seventasks.so``` (Requires root privileges)
```
# /usr/lib/qt/plugins/plasma/applets/plasma_applet_seventasks.so
```
This library is used to create the hot tracking glow effect.
This library is used to create [this effect](https://superuser.com/questions/730804/how-does-windows-7-calculate-the-color-to-use-for-taskbar-color-hot-tracking) from Windows 7.
It is possible to toggle showing labels on the fly by checking the "Show labels on taskbar buttons" option in the configuration window like this:
It is possible to toggle showing labels by toggling the "Show labels on taskbar buttons" option in the configuration window like this:
<img src="Screenshots/SevenTasksConfig.png">
@ -297,93 +303,104 @@ It is possible to toggle showing labels on the fly by checking the "Show labels
This plasmoid doesn't require additional configuration after installation if other steps have been completed. If for some reason the font and size do not look appropriate, set them to the following:
- Font size px: 9
- Font style: Segoe UI
You can tweak the other settings to your liking.
#### Show Desktop (Win7, custom)
Set the following properties to the following values:
In Look:
- Size: 13px;
In Click:
- Run Command: ```qdbus org.kde.kglobalaccel /component/kwin invokeShortcut "MinimizeAll"``` <br>
(Note: in order for this to work, the ```MinimizeAll``` KWin script must be installed and enabled)
In Peek:
- Show desktop on hover: Enable
- Peek threshold: 750ms
Other properties can be configured to your liking.
- Font style: Segoe UI Light, bold
### System modifications
These plasmoids and QML modifications require root privileges to install, as well as replacing/modifying system files which may or may not break KDE as a result. **Be sure to make backups before replacing system files on your computer. A simple rename of the files or directories that would be modified is enough.**
These plasmoids and QML modifications require root privileges to install. It's recommended to move the original files somewhere safe as a backup, instead of replacing them directly. **Always make backups before replacing system files.**
Another thing to note is that these changes will be reset after each system update, meaning that it is necessary to reinstall these modifications after every update.
An important thing to keep in mind is that these changes will be reset everytime KDE is updated, meaning that it is necessary to perform this part of the installation after every update.
#### Modified System Tray
To install, move or copy the following directory:
To install, move the following directory:
```./Plasma/Plasma Widgets/System/System Tray/org.kde.plasma.private.systemtray```
```
$ ./Plasma/Plasma_Widgets/System/org.kde.plasma.private.systemtray/
```
to:
```/usr/share/plasma/plasmoids/org.kde.plasma.private.systemtray``` (Requires root privileges)
```
# /usr/share/plasma/plasmoids/
```
Restart plasma to apply changes. If necessary, set the icon size to "Small" in the configuration window.
#### Modified Keyboard Layout Switcher
To install, move or copy the following directory:
To install, move the following directory:
```./Plasma/Plasma Widgets/System/Keyboard Switcher/org.kde.plasma.keyboardlayout```
```
$ ./Plasma/Plasma_Widgets/System/org.kde.plasma.keyboardlayout
```
to:
```/usr/share/plasma/plasmoids/org.kde.plasma.keyboardlayout``` (Requires root privileges)
```
# /usr/share/plasma/plasmoids/
```
Restart plasma to apply changes. No further configuration is needed.
Restart plasma to apply changes.
#### Desktop icons
To install, move or copy the following directory:
To install, move the following directory:
```./Plasma/Plasma Widgets/System/Desktop Icons/org.kde.desktopcontainment```
```
$ ./Plasma/Plasma_Widgets/System/org.kde.desktopcontainment
```
to:
```/usr/share/plasma/plasmoids/org.kde.desktopcontainment``` (Requires root privileges)
```
# /usr/share/plasma/plasmoids/
```
Restart plasma to apply changes. No further configuration is needed.
Restart plasma to apply changes.
To make the desktop look more like Windows 7 by default, right click on the desktop and click "Configure Desktop and Wallpaper...", change the following settings:
- Icons:
- Icon size: 2
- Label width: Narrow
- Features: All checked except for "Folder preview popups"
#### Plasma tooltips
To install, move or copy the following file:
To install, move the following file:
```./Plasma/Plasma Widgets/System/Tooltips/DefaultTooltip.qml```
```
$ ./Plasma/Plasma_Widgets/System/Tooltips/DefaultTooltip.qml
```
to:
```/usr/lib/qt/qml/org/kde/plasma/core/private/DefaultTooltip.qml```
```
# /usr/lib/qt/qml/org/kde/plasma/core/private/
```
Restart plasma to apply changes. No further configuration is needed.
Restart plasma to apply changes.
### Task Switcher <a name="task-switcher"></a>
<img src="https://upload.wikimedia.org/wikipedia/en/5/59/Windows7_flip.png">
To install, move the following folder:
```
$ ./KWin/thumbnail_seven
```
to:
```
$ ~/.local/share/kwin/tabbox/
```
In ```System Settings -> Window Management -> Task Switcher```, set the following:
In Main:
- Visualization: Set "Thumbnails" as the visualization style.
- Visualization: Set "Thumbnail Seven" as the visualization style.
- Shortcuts (for All Windows):
- Forward: Alt + Tab
- Backward: Alt + Shift + Tab
@ -397,62 +414,92 @@ In Alternative:
- Backward: Meta + Shift + Tab
- Check "Include "Show Desktop" icon"
Configuration options for the Flip Switch style are described in [KDE Plasma Settings](#plasma-settings).
### Splash Screen <a name="splash-screen"></a>
To install the splash screen, move the folder:
```
$ ./Plasma/Splash_Screen/io.gitgud.wackyideas.aerosplashscreen
```
To the following directory:
```
$ ~/.local/share/plasma/look-and-feel/
```
Create the directory in case it doesn't exist.
Set the splash screen in ```System Settings -> Appearance -> Splash Screen```.
### Sounds <a name="sounds"></a>
On Windows, the full set of sound files is located in the following directory:
On Windows, system sound files are located in:
```C:\Windows\Media```
```
C:\Windows\Media
```
To install the sound files bundled with this project, move the two following directories:
```./Plasma/Sounds/media_windows```
and
```./Plasma/Sounds/stereo_windows```
```
$ ./Plasma/Sounds/media_windows
$ ./Plasma/Sounds/stereo_windows
```
to:
```/usr/share/sounds/media_windows```
and
```/usr/share/sounds/stereo_windows```
```
# /usr/share/sounds/
```
respectively.
To select and apply them, go to ```System Settings -> Notifications```. There, click on the ```Configure...```
button on the bottom. Scroll down to ```Plasma Workspace```, and click on the ```Configure Events...``` button.
To apply them, go to ```System Settings -> Notifications```. There, click on the 'Configure'
button. Scroll down to ```Plasma Workspace```, and click on the 'Configure Events' button.
Set the sounds for the following notifications:
- Notification: ```/usr/share/sounds/stereo_windows/dialog-information.ogg```
- Warning Message: ```/usr/share/sounds/stereo_windows/dialog-warning.ogg```
- Fatal Error, Catastrophe: ```/usr/share/sounds/stereo_windows/dialog-error.ogg```
- Logout: ```/usr/share/sounds/stereo_windows/desktop-logout.ogg```
- Question: ```/usr/share/sounds/stereo_windows/dialog-question.ogg```
- Login: ```/usr/share/sounds/stereo_windows/desktop-login.ogg```
- Warning: ```/usr/share/sounds/stereo_windows/dialog-warning.ogg```
- Trash: Emptied: ```/usr/share/sounds/media_windows/Windows Recycle.wav```
- Critical Message: ```/usr/share/sounds/stereo_windows/dialog-warning.ogg```
- Information Message: ```/usr/share/sounds/stereo_windows/dialog-information.ogg```
- Beep: ```/usr/share/sounds/stereo_windows/button-pressed.ogg```
|Sound |File |
|-------------------------|-------------------------------------------------------------|
|Notification |```/usr/share/sounds/stereo_windows/dialog-information.ogg```|
|Warning Message |```/usr/share/sounds/stereo_windows/dialog-warning.ogg``` |
|Fatal Error, Catastrophe |```/usr/share/sounds/stereo_windows/dialog-error.ogg``` |
|Logout |```/usr/share/sounds/stereo_windows/desktop-logout.ogg``` |
|Question |```/usr/share/sounds/stereo_windows/dialog-question.ogg``` |
|Login |```/usr/share/sounds/stereo_windows/desktop-login.ogg``` |
|Warning |```/usr/share/sounds/stereo_windows/dialog-warning.ogg``` |
|Trash, Emptied |```/usr/share/sounds/media_windows/Windows Recycle.wav``` |
|Critical Message |```/usr/share/sounds/stereo_windows/dialog-warning.ogg``` |
|Information Message |```/usr/share/sounds/stereo_windows/dialog-information.ogg```|
|Beep |```/usr/share/sounds/stereo_windows/button-pressed.ogg``` |
Then, under ```Power Management```, click on the ```Configure Events...``` button. Set the sounds for the following
Then, under ```Power Management```, click on the 'Configure Events' button. Set the sounds for the following
notifications:
- Battery Low, Peripheral Battery Low: ```/usr/share/sounds/media_windows/Windows Battery Low.wav```
- Battery Critical: ```/usr/share/sounds/media_windows/Windows Battery Critical.wav```
|Sound |File |
|-----------------------------------|------------------------------------------------------------------|
|Battery Low, Peripheral Battery Low|```/usr/share/sounds/media_windows/Windows Battery Low.wav``` |
|Battery Critical |```/usr/share/sounds/media_windows/Windows Battery Critical.wav```|
### Wine <a name="wine"></a>
To install and configure, run ```winecfg```, and under the ```Desktop Integration``` tab, click ```Install theme...``` and choose the following file:
To install the msstyle for Wine applications, run ```winecfg```, and under the 'Desktop Integration' tab, click 'Install theme' and choose the following file:
```./Wine/VistaVG Ultimate/VistaVG Ultimate.msstyles```
```
$ ./Wine/VistaVG Ultimate/vistavg_ultimate.msstyles
```
After that, go through all elements in the "Item" list, and change the font everywhere to match:
After that, go through the entire 'Item' list, and change the font everywhere to:
- Font: Segoe UI
- Size: 9pt
### Video Guide <a name="video-guide"></a>
### Terminal <a name="terminal"></a>
Video created by Bleeplo:
To make your terminal emulator of choice look a bit more like the command prompt from Windows, do the following:
[![Video guide](https://i.ytimg.com/vi/KFr4tqk7Mvg/mqdefault.jpg)](https://youtu.be/KFr4tqk7Mvg)
- Hide the menu bar
- Hide the tab bar if there's only one tab available
- Set the terminal font to Fixedsys (Excelsior 3.01), 11pt.
- Add the following line to `~/.bashrc`:
```printf 'Microsoft Windows [Version 6.1.7601] \nCopyright <c> 2009 Microsoft Corporation. All rights reserved.\n\n'```
The last part will print the provided string every time a new bash session is started.

Binary file not shown.

View file

@ -1 +0,0 @@
2870a09082c103050810ffdffffe0204

View file

@ -1 +0,0 @@
14fef782d02440884392942c11205230

View file

@ -1 +0,0 @@
3ecb610c1bf2410f44200f48c40d3599

View file

@ -1 +0,0 @@
e29285e634086352946a0e7090d73106

View file

@ -1 +0,0 @@
4498f0e0c1937ffe01fd06f973665830

View file

@ -1 +0,0 @@
c7088f0f3e6c8088236ef8e1e3e70000

View file

@ -1 +0,0 @@
fcf1c3c7cd4491d801f1e1c78f100000

View file

@ -1 +0,0 @@
c7088f0f3e6c8088236ef8e1e3e70000

View file

@ -1 +0,0 @@
2870a09082c103050810ffdffffe0204

View file

@ -1 +0,0 @@
draped_box

View file

@ -1 +0,0 @@
draped_box

View file

@ -1 +0,0 @@
03b6e0fcb3499374a867c041f52298f0

View file

@ -1 +0,0 @@
draped_box

View file

@ -1 +0,0 @@
2870a09082c103050810ffdffffe0204

View file

@ -1 +0,0 @@
fcf1c3c7cd4491d801f1e1c78f100000

View file

@ -1 +0,0 @@
14fef782d02440884392942c11205230

View file

@ -1 +0,0 @@
e29285e634086352946a0e7090d73106

View file

@ -1 +0,0 @@
e29285e634086352946a0e7090d73106

View file

@ -1 +0,0 @@
e29285e634086352946a0e7090d73106

View file

@ -1 +0,0 @@
4498f0e0c1937ffe01fd06f973665830

View file

@ -1 +0,0 @@
3ecb610c1bf2410f44200f48c40d3599

View file

@ -1 +0,0 @@
14fef782d02440884392942c11205230

View file

@ -1 +0,0 @@
fcf1c3c7cd4491d801f1e1c78f100000

View file

@ -1 +0,0 @@
c7088f0f3e6c8088236ef8e1e3e70000

View file

@ -1 +0,0 @@
4498f0e0c1937ffe01fd06f973665830

View file

@ -1 +0,0 @@
d9ce0ab605698f320427677b458ad60b

View file

@ -1 +0,0 @@
4498f0e0c1937ffe01fd06f973665830

View file

@ -1 +0,0 @@
14fef782d02440884392942c11205230

View file

@ -1 +0,0 @@
14fef782d02440884392942c11205230

View file

@ -1 +0,0 @@
2870a09082c103050810ffdffffe0204

View file

@ -1 +0,0 @@
draped_box

View file

@ -1 +0,0 @@
4498f0e0c1937ffe01fd06f973665830

View file

@ -1 +0,0 @@
c7088f0f3e6c8088236ef8e1e3e70000

View file

@ -1 +0,0 @@
fcf1c3c7cd4491d801f1e1c78f100000

View file

@ -1 +0,0 @@
2870a09082c103050810ffdffffe0204

View file

@ -1 +0,0 @@
2870a09082c103050810ffdffffe0204

View file

@ -1,5 +0,0 @@
[Icon Theme]
Name=aero-drop
Comment= Converted with ms2sd - Converted by sd2xc-2.3.pl
Example=left_ptr
Inherits=core

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Some files were not shown because too many files have changed in this diff Show more