1
0
Fork 0

Adding upstream version 20250212.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-12 16:21:01 +01:00
parent c1bc15bdc7
commit 16d75ef64d
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
192 changed files with 32577 additions and 3262 deletions

View file

@ -0,0 +1,4 @@
.qr-code-row
{
border: 0;
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 53 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.9 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.5 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 16 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.5 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.3 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.5 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 10 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.5 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.5 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.9 KiB

View file

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/Shell/Extensions/justperfection">
<file preprocess="xml-stripblanks">ui/behavior.ui</file>
<file preprocess="xml-stripblanks">ui/customize.ui</file>
<file preprocess="xml-stripblanks">ui/icons.ui</file>
<file preprocess="xml-stripblanks">ui/profile.ui</file>
<file preprocess="xml-stripblanks">ui/visibility.ui</file>
<file preprocess="xml-stripblanks">imgs/donation.svg</file>
<file preprocess="xml-stripblanks">imgs/qr-bitcoin.svg</file>
<file preprocess="xml-stripblanks">imgs/qr-bitcoin-cash.svg</file>
<file preprocess="xml-stripblanks">imgs/qr-bnb.svg</file>
<file preprocess="xml-stripblanks">imgs/qr-cardano.svg</file>
<file preprocess="xml-stripblanks">imgs/qr-dogecoin.svg</file>
<file preprocess="xml-stripblanks">imgs/qr-ethereum.svg</file>
<file preprocess="xml-stripblanks">imgs/qr-lbry.svg</file>
<file preprocess="xml-stripblanks">imgs/qr-ltc.svg</file>
<file preprocess="xml-stripblanks">imgs/qr-monero.svg</file>
<file preprocess="xml-stripblanks">imgs/qr-shiba-inu.svg</file>
<file preprocess="xml-stripblanks">imgs/qr-solana.svg</file>
<file preprocess="xml-stripblanks">imgs/qr-usdc.svg</file>
<file preprocess="xml-stripblanks">imgs/qr-usdt.svg</file>
<file preprocess="xml-stripblanks">imgs/qr-xlm.svg</file>
<file preprocess="xml-stripblanks">imgs/qr-xrp.svg</file>
<file>css/prefs.css</file>
</gresource>
</gresources>

View file

@ -0,0 +1,164 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<object class="AdwPreferencesPage" id="behavior">
<property name="name">behavior</property>
<property name="title" translatable="yes">Behavior</property>
<property name="icon-name">applications-engineering-symbolic</property>
<child>
<object class="AdwPreferencesGroup" id="behavior_group">
<property name="title" translatable="yes">Behavior</property>
<child>
<object class="AdwActionRow" id="workspace_wrap_around_row">
<property name="title" translatable="yes">Workspace Wraparound</property>
<property name="subtitle" translatable="yes">Next workspace will be the first workspace when you are in the last workspace. and previous workspace will be the last workspace when you are in the first workspace.</property>
<property name="activatable-widget">workspace_wrap_around_switch</property>
<child>
<object class="GtkSwitch" id="workspace_wrap_around_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="workspace_peek_row">
<property name="title" translatable="yes">Workspace Peek</property>
<property name="subtitle" translatable="yes">Whether the next and previous workspace should be visible in overview.</property>
<property name="activatable-widget">workspace_peek_switch</property>
<child>
<object class="GtkSwitch" id="workspace_peek_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="workspace_thumbnail_to_main_view_row">
<property name="title" translatable="yes">Workspace Switcher Click to The Main View</property>
<property name="subtitle" translatable="yes">Workspace switcher click always goes to the main view of the workspace.</property>
<property name="activatable-widget">workspace_thumbnail_to_main_view_switch</property>
<child>
<object class="GtkSwitch" id="workspace_thumbnail_to_main_view_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="window_demands_attention_focus_row">
<property name="title" translatable="yes">Window Demands Attention Focus</property>
<property name="subtitle" translatable="yes">Removes window is ready notification and focus on the window</property>
<property name="activatable-widget">window_demands_attention_focus_switch</property>
<child>
<object class="GtkSwitch" id="window_demands_attention_focus_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="window_maximized_on_create_row">
<property name="title" translatable="yes">Window Maximized by Default</property>
<property name="subtitle" translatable="yes">Maximize all windows on creation</property>
<property name="activatable-widget">window_maximized_on_create_switch</property>
<child>
<object class="GtkSwitch" id="window_maximized_on_create_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="type_to_search_row">
<property name="title" translatable="yes">Type to Search</property>
<property name="subtitle" translatable="yes">You can start search without search entry or even focusing on it in overview</property>
<property name="activatable-widget">type_to_search_switch</property>
<child>
<object class="GtkSwitch" id="type_to_search_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="workspace_switcher_should_show_row">
<property name="title" translatable="yes">Always Show Workspace Switcher</property>
<property name="subtitle" translatable="yes">Shows workspace switcher even when only one workspace used with dynamic workspaces</property>
<property name="activatable-widget">workspace_switcher_should_show_switch</property>
<child>
<object class="GtkSwitch" id="workspace_switcher_should_show_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="overlay_key_row">
<property name="title" translatable="yes">Overlay Key</property>
<property name="subtitle" translatable="yes">Disable overlay key (super key)</property>
<property name="activatable-widget">overlay_key_switch</property>
<child>
<object class="GtkSwitch" id="overlay_key_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="double_super_to_appgrid_row">
<property name="title" translatable="yes">Double Super to App Grid</property>
<property name="subtitle" translatable="yes">Shows app grid when you double hit super key fast</property>
<property name="activatable-widget">double_super_to_appgrid_switch</property>
<property name="sensitive" bind-source="overlay_key_switch" bind-property="active" bind-flags="sync-create"/>
<child>
<object class="GtkSwitch" id="double_super_to_appgrid_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="switcher_popup_delay_row">
<property name="title" translatable="yes">Popup Delay</property>
<property name="subtitle" translatable="yes">Removes the delay for all switcher popups like alt-tab, ctrl-alt-tab, keyboard layout, ...</property>
<property name="activatable-widget">switcher_popup_delay_switch</property>
<child>
<object class="GtkSwitch" id="switcher_popup_delay_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwComboRow" id="startup_status_row">
<property name="title" translatable="yes">Startup Status</property>
<property name="subtitle" translatable="yes">When GNOME Shell is starting up for the first time</property>
<property name="model">startup_status_model</property>
</object>
</child>
</object>
</child>
</object>
<object class="GtkStringList" id="startup_status_model">
<items>
<item translatable="yes">Desktop</item>
<item translatable="yes">Overview</item>
</items>
</object>
</interface>

View file

@ -0,0 +1,904 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<object class="AdwPreferencesPage" id="customize">
<property name="name">customize</property>
<property name="title" translatable="yes">Customize</property>
<property name="icon-name">applications-utilities-symbolic</property>
<child>
<object class="AdwPreferencesGroup" id="customize_group">
<property name="title" translatable="yes">Customize</property>
<child>
<object class="AdwActionRow" id="accent_color_icon_row">
<property name="title" translatable="yes">Accent Color for Icons</property>
<property name="subtitle" translatable="yes">Use accent color for all symbolic icons</property>
<property name="activatable-widget">accent_color_icon_switch</property>
<child>
<object class="GtkSwitch" id="accent_color_icon_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="invert_calendar_column_items_row">
<property name="title" translatable="yes">Invert Calendar Column Items</property>
<property name="subtitle" translatable="yes">Invert the positions of the calendar column items in clock menu</property>
<property name="activatable-widget">invert_calendar_column_items_switch</property>
<child>
<object class="GtkSwitch" id="invert_calendar_column_items_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwComboRow" id="controls_manager_spacing_size_row">
<property name="title" translatable="yes">Overview Spacing Size</property>
<property name="subtitle" translatable="yes">The spacing size for controls manager in overview</property>
<property name="model">controls_manager_spacing_size_model</property>
</object>
</child>
<child>
<object class="AdwComboRow" id="workspace_background_corner_size_row">
<property name="title" translatable="yes">Workspace Background Corner Size</property>
<property name="subtitle" translatable="yes">Workspace background corner size in overview</property>
<property name="model">workspace_background_corner_size_model</property>
</object>
</child>
<child>
<object class="AdwComboRow" id="panel_size_row">
<property name="title" translatable="yes">Panel Size</property>
<property name="model">panel_size_model</property>
</object>
</child>
<child>
<object class="AdwComboRow" id="panel_icon_size_row">
<property name="title" translatable="yes">Panel Icon Size</property>
<property name="model">panel_icon_size_model</property>
</object>
</child>
<child>
<object class="AdwComboRow" id="panel_button_padding_size_row">
<property name="title" translatable="yes">Panel Button Padding Size</property>
<property name="model">panel_button_padding_size_model</property>
</object>
</child>
<child>
<object class="AdwComboRow" id="panel_indicator_padding_size_row">
<property name="title" translatable="yes">Panel Indicator Padding Size</property>
<property name="model">panel_indicator_padding_size_model</property>
</object>
</child>
<child>
<object class="AdwComboRow" id="top_panel_position_row">
<property name="title" translatable="yes">Panel Position</property>
<property name="model">top_panel_position_model</property>
</object>
</child>
<child>
<object class="AdwComboRow" id="clock_menu_position_row">
<property name="title" translatable="yes">Clock Menu Position</property>
<property name="model">clock_menu_position_model</property>
</object>
</child>
<child>
<object class="AdwSpinRow" id="clock_menu_position_offset_row">
<property name="title" translatable="yes">Clock Menu Position Offset</property>
<property name="adjustment">clock_menu_position_offset_adjustment</property>
</object>
</child>
<child>
<object class="AdwComboRow" id="workspace_switcher_size_row">
<property name="title" translatable="yes">Workspace Switcher Size</property>
<property name="model">workspace_switcher_size_model</property>
</object>
</child>
<child>
<object class="AdwComboRow" id="animation_row">
<property name="title" translatable="yes">Animation</property>
<property name="model">animation_model</property>
</object>
</child>
<child>
<object class="AdwComboRow" id="dash_icon_size_row">
<property name="title" translatable="yes">Dash Icon Size</property>
<property name="model">dash_icon_size_model</property>
</object>
</child>
<child>
<object class="AdwComboRow" id="notification_banner_position_row">
<property name="title" translatable="yes">Notification Banner Position</property>
<property name="subtitle" translatable="yes">Notification popup position when notifications show up on the screen</property>
<property name="model">notification_banner_position_model</property>
</object>
</child>
<child>
<object class="AdwComboRow" id="osd_position_row">
<property name="title" translatable="yes">OSD Position</property>
<property name="subtitle" translatable="yes">OSD position when on screen display shows up on the screen</property>
<property name="model">osd_position_model</property>
</object>
</child>
<child>
<object class="AdwComboRow" id="alt_tab_window_preview_size_row">
<property name="title" translatable="yes">Alt Tab Window Preview Size</property>
<property name="model">alt_tab_window_preview_size_model</property>
</object>
</child>
<child>
<object class="AdwComboRow" id="alt_tab_small_icon_size_row">
<property name="title" translatable="yes">Alt Tab Window Preview Icon Size</property>
<property name="model">alt_tab_small_icon_size_model</property>
</object>
</child>
<child>
<object class="AdwComboRow" id="alt_tab_icon_size_row">
<property name="title" translatable="yes">Alt Tab Icon Size</property>
<property name="model">alt_tab_icon_size_model</property>
</object>
</child>
<child>
<object class="AdwComboRow" id="looking_glass_width_row">
<property name="title" translatable="yes">Looking Glass Width</property>
<property name="model">looking_glass_width_model</property>
</object>
</child>
<child>
<object class="AdwComboRow" id="looking_glass_height_row">
<property name="title" translatable="yes">Looking Glass Height</property>
<property name="model">looking_glass_height_model</property>
</object>
</child>
<child>
<object class="AdwComboRow" id="max_displayed_search_results_row">
<property name="title" translatable="yes">Maximum Displayed Search Results</property>
<property name="subtitle" translatable="yes">The maximum displayed search result items showing up in the search page</property>
<property name="model">max_displayed_search_results_model</property>
</object>
</child>
</object>
</child>
</object>
<object class="GtkStringList" id="controls_manager_spacing_size_model">
<items>
<item translatable="yes">Default</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
<item>8</item>
<item>9</item>
<item>10</item>
<item>11</item>
<item>12</item>
<item>13</item>
<item>14</item>
<item>15</item>
<item>16</item>
<item>17</item>
<item>18</item>
<item>19</item>
<item>20</item>
<item>21</item>
<item>22</item>
<item>23</item>
<item>24</item>
<item>25</item>
<item>26</item>
<item>27</item>
<item>28</item>
<item>29</item>
<item>30</item>
<item>31</item>
<item>32</item>
<item>33</item>
<item>34</item>
<item>35</item>
<item>36</item>
<item>37</item>
<item>38</item>
<item>39</item>
<item>40</item>
<item>41</item>
<item>42</item>
<item>43</item>
<item>44</item>
<item>45</item>
<item>46</item>
<item>47</item>
<item>48</item>
<item>49</item>
<item>50</item>
<item>51</item>
<item>52</item>
<item>53</item>
<item>54</item>
<item>55</item>
<item>56</item>
<item>57</item>
<item>58</item>
<item>59</item>
<item>60</item>
<item>61</item>
<item>62</item>
<item>63</item>
<item>64</item>
<item>65</item>
<item>66</item>
<item>67</item>
<item>68</item>
<item>69</item>
<item>70</item>
<item>71</item>
<item>72</item>
<item>73</item>
<item>74</item>
<item>75</item>
<item>76</item>
<item>77</item>
<item>78</item>
<item>79</item>
<item>80</item>
<item>81</item>
<item>82</item>
<item>83</item>
<item>84</item>
<item>85</item>
<item>86</item>
<item>87</item>
<item>88</item>
<item>89</item>
<item>90</item>
<item>91</item>
<item>92</item>
<item>93</item>
<item>94</item>
<item>95</item>
<item>96</item>
<item>97</item>
<item>98</item>
<item>99</item>
<item>100</item>
<item>101</item>
<item>102</item>
<item>103</item>
<item>104</item>
<item>105</item>
<item>106</item>
<item>107</item>
<item>108</item>
<item>109</item>
<item>110</item>
<item>111</item>
<item>112</item>
<item>113</item>
<item>114</item>
<item>115</item>
<item>116</item>
<item>117</item>
<item>118</item>
<item>119</item>
<item>120</item>
<item>121</item>
<item>122</item>
<item>123</item>
<item>124</item>
<item>125</item>
<item>126</item>
<item>127</item>
<item>128</item>
<item>129</item>
<item>130</item>
<item>131</item>
<item>132</item>
<item>133</item>
<item>134</item>
<item>135</item>
<item>136</item>
<item>137</item>
<item>138</item>
<item>139</item>
<item>140</item>
<item>141</item>
<item>142</item>
<item>143</item>
<item>144</item>
<item>145</item>
<item>146</item>
<item>147</item>
<item>148</item>
<item>149</item>
<item>150</item>
</items>
</object>
<object class="GtkStringList" id="workspace_background_corner_size_model">
<items>
<item translatable="yes">By Shell Theme</item>
<item>0px</item>
<item>1px</item>
<item>2px</item>
<item>3px</item>
<item>4px</item>
<item>5px</item>
<item>6px</item>
<item>7px</item>
<item>8px</item>
<item>9px</item>
<item>10px</item>
<item>11px</item>
<item>12px</item>
<item>13px</item>
<item>14px</item>
<item>15px</item>
<item>16px</item>
<item>17px</item>
<item>18px</item>
<item>19px</item>
<item>20px</item>
<item>21px</item>
<item>22px</item>
<item>23px</item>
<item>24px</item>
<item>25px</item>
<item>26px</item>
<item>27px</item>
<item>28px</item>
<item>29px</item>
<item>30px</item>
<item>31px</item>
<item>32px</item>
<item>33px</item>
<item>34px</item>
<item>35px</item>
<item>36px</item>
<item>37px</item>
<item>38px</item>
<item>39px</item>
<item>40px</item>
<item>41px</item>
<item>42px</item>
<item>43px</item>
<item>44px</item>
<item>45px</item>
<item>46px</item>
<item>47px</item>
<item>48px</item>
<item>49px</item>
<item>50px</item>
<item>51px</item>
<item>52px</item>
<item>53px</item>
<item>54px</item>
<item>55px</item>
<item>56px</item>
<item>57px</item>
<item>58px</item>
<item>59px</item>
<item>60px</item>
</items>
</object>
<object class="GtkStringList" id="panel_size_model">
<items>
<item translatable="yes">By Shell Theme</item>
<item>1px</item>
<item>2px</item>
<item>3px</item>
<item>4px</item>
<item>5px</item>
<item>6px</item>
<item>7px</item>
<item>8px</item>
<item>9px</item>
<item>10px</item>
<item>11px</item>
<item>12px</item>
<item>13px</item>
<item>14px</item>
<item>15px</item>
<item>16px</item>
<item>17px</item>
<item>18px</item>
<item>19px</item>
<item>20px</item>
<item>21px</item>
<item>22px</item>
<item>23px</item>
<item>24px</item>
<item>25px</item>
<item>26px</item>
<item>27px</item>
<item>28px</item>
<item>29px</item>
<item>30px</item>
<item>31px</item>
<item>32px</item>
<item>33px</item>
<item>34px</item>
<item>35px</item>
<item>36px</item>
<item>37px</item>
<item>38px</item>
<item>39px</item>
<item>40px</item>
<item>41px</item>
<item>42px</item>
<item>43px</item>
<item>44px</item>
<item>45px</item>
<item>46px</item>
<item>47px</item>
<item>48px</item>
<item>49px</item>
<item>50px</item>
<item>51px</item>
<item>52px</item>
<item>53px</item>
<item>54px</item>
<item>55px</item>
<item>56px</item>
<item>57px</item>
<item>58px</item>
<item>59px</item>
<item>60px</item>
<item>61px</item>
<item>62px</item>
<item>63px</item>
<item>64px</item>
</items>
</object>
<object class="GtkStringList" id="panel_icon_size_model">
<items>
<item translatable="yes">By Shell Theme</item>
<item>1px</item>
<item>2px</item>
<item>3px</item>
<item>4px</item>
<item>5px</item>
<item>6px</item>
<item>7px</item>
<item>8px</item>
<item>9px</item>
<item>10px</item>
<item>11px</item>
<item>12px</item>
<item>13px</item>
<item>14px</item>
<item>15px</item>
<item>16px</item>
<item>17px</item>
<item>18px</item>
<item>19px</item>
<item>20px</item>
<item>21px</item>
<item>22px</item>
<item>23px</item>
<item>24px</item>
<item>25px</item>
<item>26px</item>
<item>27px</item>
<item>28px</item>
<item>29px</item>
<item>30px</item>
<item>31px</item>
<item>32px</item>
<item>33px</item>
<item>34px</item>
<item>35px</item>
<item>36px</item>
<item>37px</item>
<item>38px</item>
<item>39px</item>
<item>40px</item>
<item>41px</item>
<item>42px</item>
<item>43px</item>
<item>44px</item>
<item>45px</item>
<item>46px</item>
<item>47px</item>
<item>48px</item>
<item>49px</item>
<item>50px</item>
<item>51px</item>
<item>52px</item>
<item>53px</item>
<item>54px</item>
<item>55px</item>
<item>56px</item>
<item>57px</item>
<item>58px</item>
<item>59px</item>
<item>60px</item>
</items>
</object>
<object class="GtkStringList" id="panel_button_padding_size_model">
<items>
<item translatable="yes">By Shell Theme</item>
<item>0px</item>
<item>1px</item>
<item>2px</item>
<item>3px</item>
<item>4px</item>
<item>5px</item>
<item>6px</item>
<item>7px</item>
<item>8px</item>
<item>9px</item>
<item>10px</item>
<item>11px</item>
<item>12px</item>
<item>13px</item>
<item>14px</item>
<item>15px</item>
<item>16px</item>
<item>17px</item>
<item>18px</item>
<item>19px</item>
<item>20px</item>
<item>21px</item>
<item>22px</item>
<item>23px</item>
<item>24px</item>
<item>25px</item>
<item>26px</item>
<item>27px</item>
<item>28px</item>
<item>29px</item>
<item>30px</item>
<item>31px</item>
<item>32px</item>
<item>33px</item>
<item>34px</item>
<item>35px</item>
<item>36px</item>
<item>37px</item>
<item>38px</item>
<item>39px</item>
<item>40px</item>
<item>41px</item>
<item>42px</item>
<item>43px</item>
<item>44px</item>
<item>45px</item>
<item>46px</item>
<item>47px</item>
<item>48px</item>
<item>49px</item>
<item>50px</item>
<item>51px</item>
<item>52px</item>
<item>53px</item>
<item>54px</item>
<item>55px</item>
<item>56px</item>
<item>57px</item>
<item>58px</item>
<item>59px</item>
<item>60px</item>
</items>
</object>
<object class="GtkStringList" id="panel_indicator_padding_size_model">
<items>
<item translatable="yes">By Shell Theme</item>
<item>0px</item>
<item>1px</item>
<item>2px</item>
<item>3px</item>
<item>4px</item>
<item>5px</item>
<item>6px</item>
<item>7px</item>
<item>8px</item>
<item>9px</item>
<item>10px</item>
<item>11px</item>
<item>12px</item>
<item>13px</item>
<item>14px</item>
<item>15px</item>
<item>16px</item>
<item>17px</item>
<item>18px</item>
<item>19px</item>
<item>20px</item>
<item>21px</item>
<item>22px</item>
<item>23px</item>
<item>24px</item>
<item>25px</item>
<item>26px</item>
<item>27px</item>
<item>28px</item>
<item>29px</item>
<item>30px</item>
<item>31px</item>
<item>32px</item>
<item>33px</item>
<item>34px</item>
<item>35px</item>
<item>36px</item>
<item>37px</item>
<item>38px</item>
<item>39px</item>
<item>40px</item>
<item>41px</item>
<item>42px</item>
<item>43px</item>
<item>44px</item>
<item>45px</item>
<item>46px</item>
<item>47px</item>
<item>48px</item>
<item>49px</item>
<item>50px</item>
<item>51px</item>
<item>52px</item>
<item>53px</item>
<item>54px</item>
<item>55px</item>
<item>56px</item>
<item>57px</item>
<item>58px</item>
<item>59px</item>
<item>60px</item>
</items>
</object>
<object class="GtkStringList" id="top_panel_position_model">
<items>
<item translatable="yes">Top</item>
<item translatable="yes">Bottom</item>
</items>
</object>
<object class="GtkStringList" id="clock_menu_position_model">
<items>
<item translatable="yes">Center</item>
<item translatable="yes">Right</item>
<item translatable="yes">Left</item>
</items>
</object>
<object class="GtkAdjustment" id="clock_menu_position_offset_adjustment">
<property name="lower">0</property>
<property name="upper">20</property>
<property name="value">0</property>
<property name="step-increment">1</property>
</object>
<object class="GtkStringList" id="workspace_switcher_size_model">
<items>
<item translatable="yes">Default</item>
<item>1%</item>
<item>2%</item>
<item>3%</item>
<item>4%</item>
<item>5%</item>
<item>6%</item>
<item>7%</item>
<item>8%</item>
<item>9%</item>
<item>10%</item>
<item>11%</item>
<item>12%</item>
<item>13%</item>
<item>14%</item>
<item>15%</item>
<item>16%</item>
<item>17%</item>
<item>18%</item>
<item>19%</item>
<item>20%</item>
<item>21%</item>
<item>22%</item>
<item>23%</item>
<item>24%</item>
<item>25%</item>
<item>26%</item>
<item>27%</item>
<item>28%</item>
<item>29%</item>
<item>30%</item>
</items>
</object>
<object class="GtkStringList" id="animation_model">
<items>
<item translatable="yes">No Animation</item>
<item translatable="yes">Default Speed</item>
<item translatable="yes">Almost None</item>
<item translatable="yes">Fastest</item>
<item translatable="yes">Faster</item>
<item translatable="yes">Fast</item>
<item translatable="yes">Slow</item>
<item translatable="yes">Slower</item>
<item translatable="yes">Slowest</item>
</items>
</object>
<object class="GtkStringList" id="dash_icon_size_model">
<items>
<item translatable="yes">Default</item>
<item>16px</item>
<item>22px</item>
<item>24px</item>
<item>32px</item>
<item>40px</item>
<item>48px</item>
<item>56px</item>
<item>64px</item>
</items>
</object>
<object class="GtkStringList" id="notification_banner_position_model">
<items>
<item translatable="yes">Top Start</item>
<item translatable="yes">Top Center</item>
<item translatable="yes">Top End</item>
<item translatable="yes">Bottom Start</item>
<item translatable="yes">Bottom Center</item>
<item translatable="yes">Bottom End</item>
</items>
</object>
<object class="GtkStringList" id="osd_position_model">
<items>
<item translatable="yes">Default</item>
<item translatable="yes">Top Start</item>
<item translatable="yes">Top Center</item>
<item translatable="yes">Top End</item>
<item translatable="yes">Bottom Start</item>
<item translatable="yes">Bottom Center</item>
<item translatable="yes">Bottom End</item>
<item translatable="yes">Center Start</item>
<item translatable="yes">Center</item>
<item translatable="yes">Center End</item>
</items>
</object>
<object class="GtkStringList" id="alt_tab_window_preview_size_model">
<items>
<item translatable="yes">Default</item>
<item>32</item>
<item>64</item>
<item>128</item>
<item>256</item>
<item>512</item>
</items>
</object>
<object class="GtkStringList" id="alt_tab_small_icon_size_model">
<items>
<item translatable="yes">Default</item>
<item>32</item>
<item>64</item>
<item>128</item>
<item>256</item>
<item>512</item>
</items>
</object>
<object class="GtkStringList" id="alt_tab_icon_size_model">
<items>
<item translatable="yes">Default</item>
<item>32</item>
<item>64</item>
<item>128</item>
<item>256</item>
<item>512</item>
</items>
</object>
<object class="GtkStringList" id="looking_glass_width_model">
<items>
<item translatable="yes">Default</item>
<item>10%</item>
<item>20%</item>
<item>30%</item>
<item>40%</item>
<item>50%</item>
<item>60%</item>
<item>70%</item>
<item>80%</item>
<item>90%</item>
</items>
</object>
<object class="GtkStringList" id="looking_glass_height_model">
<items>
<item translatable="yes">Default</item>
<item>10%</item>
<item>20%</item>
<item>30%</item>
<item>40%</item>
<item>50%</item>
<item>60%</item>
<item>70%</item>
<item>80%</item>
<item>90%</item>
</items>
</object>
<object class="GtkStringList" id="max_displayed_search_results_model">
<items>
<item translatable="yes">Default</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
<item>8</item>
<item>9</item>
<item>10</item>
<item>11</item>
<item>12</item>
<item>13</item>
<item>14</item>
<item>15</item>
<item>16</item>
<item>17</item>
<item>18</item>
<item>19</item>
<item>20</item>
<item>21</item>
<item>22</item>
<item>23</item>
<item>24</item>
<item>25</item>
<item>26</item>
<item>27</item>
<item>28</item>
<item>29</item>
<item>30</item>
<item>31</item>
<item>32</item>
<item>33</item>
<item>34</item>
<item>35</item>
<item>36</item>
<item>37</item>
<item>38</item>
<item>39</item>
<item>40</item>
</items>
</object>
</interface>

View file

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<object class="AdwPreferencesPage" id="icons">
<property name="name">icons</property>
<property name="title" translatable="yes">Icons</property>
<property name="icon-name">emblem-photos-symbolic</property>
<child>
<object class="AdwPreferencesGroup" id="icons_group">
<property name="title" translatable="yes">Icons</property>
<child>
<object class="AdwActionRow" id="panel_notification_icon_row">
<property name="title" translatable="yes">Panel Notification Icon</property>
<property name="activatable-widget">panel_notification_icon_switch</property>
<child>
<object class="GtkSwitch" id="panel_notification_icon_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="power_icon_row">
<property name="title" translatable="yes">Power Icon</property>
<property name="activatable-widget">power_icon_switch</property>
<child>
<object class="GtkSwitch" id="power_icon_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="window_picker_icon_row">
<property name="title" translatable="yes">Window Picker Icon</property>
<property name="subtitle" translatable="yes">The icon under window preview in overview</property>
<property name="activatable-widget">window_picker_icon_switch</property>
<child>
<object class="GtkSwitch" id="window_picker_icon_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>

View file

@ -0,0 +1,276 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<object class="AdwPreferencesPage" id="profile">
<property name="name">profile</property>
<property name="title" translatable="yes">Profile</property>
<property name="icon-name">view-list-symbolic</property>
<child>
<object class="AdwPreferencesGroup" id="profile_group">
<property name="title" translatable="yes">Profile</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="valign">center</property>
<property name="label" translatable="yes">You can choose between pre-defined profiles or you can simply use your own customized settings</property>
<property name="xalign">0</property>
<property name="wrap">True</property>
<property name="width-chars">0</property>
<property name="margin-top">12</property>
<property name="margin-bottom">12</property>
<style>
<class name="dim-label"/>
</style>
<attributes>
<attribute name="scale" value="0.9"/>
</attributes>
</object>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="hexpand">0</property>
<property name="vexpand">0</property>
<child>
<object class="GtkToggleButton" id="profile_default">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="label" translatable="yes">Default</property>
<property name="active">1</property>
<property name="hexpand">1</property>
<property name="vexpand">1</property>
</object>
</child>
<child>
<object class="GtkToggleButton" id="profile_custom">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="label" translatable="yes">Custom</property>
<property name="group">profile_default</property>
<property name="hexpand">1</property>
<property name="vexpand">1</property>
</object>
</child>
<child>
<object class="GtkToggleButton" id="profile_minimal">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="label" translatable="yes">Minimal</property>
<property name="group">profile_default</property>
<property name="hexpand">1</property>
<property name="vexpand">1</property>
</object>
</child>
<child>
<object class="GtkToggleButton" id="profile_superminimal">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="label" translatable="yes">Super Minimal</property>
<property name="group">profile_default</property>
<property name="hexpand">1</property>
<property name="vexpand">1</property>
</object>
</child>
<style>
<class name="linked"/>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="AdwPreferencesGroup" id="override_group">
<property name="title" translatable="yes">Override</property>
<child>
<object class="AdwActionRow" id="theme_row">
<property name="title" translatable="yes">Shell Theme</property>
<property name="subtitle" translatable="yes">Overrides the shell theme partially to create a minimal desktop</property>
<property name="activatable-widget">theme_switch</property>
<child>
<object class="GtkSwitch" id="theme_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="AdwPreferencesGroup" id="support_group">
<property name="title" translatable="yes">Support</property>
<property name="description">Your support helps maintain and improve Just Perfection, develop new features, and ensure smooth updates. Even a small donation makes a big difference!
Thank you for your support!</property>
<child>
<object class="GtkBox">
<property name="halign">center</property>
<child>
<object class="GtkPicture" id="donation_picture">
<property name="can-shrink">False</property>
<property name="file">resource:///org/gnome/Shell/Extensions/justperfection/imgs/donation.svg</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="AdwPreferencesGroup" id="support_crypto_group">
<child>
<object class="AdwComboRow" id="support_crypto_row">
<property name="title" translatable="yes">Support Via Crypto</property>
<property name="subtitle" translatable="yes">Preferred Method</property>
<property name="model">support_crypto_model</property>
</object>
</child>
<child>
<object class="AdwActionRow" id="qr_row">
<property name="halign">center</property>
<style>
<class name="qr-code-row" />
</style>
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="GtkPicture" id="qr_picture">
<property name="can-shrink">False</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="AdwEntryRow" id="crypto_address_row">
<property name="editable">False</property>
<property name="show-apply-button">False</property>
<child>
<object class="GtkButton" id="crypto_address_copy_button">
<property name="valign">center</property>
<property name="icon_name">edit-copy-symbolic</property>
<property name="tooltip-text" translatable="yes">Copy</property>
<style>
<class name="flat"/>
</style>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="AdwPreferencesGroup" id="support_links_group">
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">Support via Buy Me a Coffee</property>
<property name="activatable-widget">buymeacoffee_linkbutton</property>
<child>
<object class="GtkLinkButton" id="buymeacoffee_linkbutton">
<property name="uri">https://www.buymeacoffee.com/justperfection</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="AdwPreferencesGroup" id="support_notifier_group">
<child>
<object class="AdwComboRow" id="support_notifier_type_row">
<property name="title" translatable="yes">Support Notification</property>
<property name="subtitle" translatable="yes">Manage when the support notification shows up</property>
<property name="model">support_notifier_type_model</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwPreferencesGroup" id="links_group">
<property name="title" translatable="yes">Links</property>
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">Bug Report</property>
<property name="activatable-widget">bug_report_linkbutton</property>
<child>
<object class="GtkLinkButton" id="bug_report_linkbutton">
<property name="uri">https://gitlab.gnome.org/jrahmatzadeh/just-perfection/-/issues</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">YouTube Channel</property>
<property name="activatable-widget">youtube_linkbutton</property>
<child>
<object class="GtkLinkButton" id="youtube_linkbutton">
<property name="uri">https://www.youtube.com/channel/UCIPetZTndV_mB3GT6tNQ2Zw</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
<object class="GtkStringList" id="support_crypto_model">
<items>
<item>Dogecoin</item>
<item>Bitcoin</item>
<item>Bitcoin Cash</item>
<item>Ethereum</item>
<item>XRP</item>
<item>USDT (Tether)</item>
<item>USDC</item>
<item>Solana</item>
<item>Cardano (ADA)</item>
<item>BNB (BSC Network)</item>
<item>Litecoin (LTC)</item>
<item>Stellar (XLM)</item>
<item>Monero</item>
<item>LBRY</item>
<item>Shiba Inu</item>
</items>
</object>
<object class="GtkStringList" id="support_notifier_type_model">
<items>
<item translatable="yes">Never</item>
<item translatable="yes">On New Releases</item>
</items>
</object>
<object class="AdwToast" id="toast_added_to_clipboard">
<property name="title" translatable="yes">Address copied to the clipboard</property>
<property name="timeout">2</property>
</object>
</interface>

View file

@ -0,0 +1,408 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<object class="AdwPreferencesPage" id="visibility">
<property name="name">visibility</property>
<property name="title" translatable="yes">Visibility</property>
<property name="icon-name">weather-clear-symbolic</property>
<child>
<object class="AdwPreferencesGroup" id="visibility_group">
<property name="title" translatable="yes">Visibility</property>
<child>
<object class="AdwActionRow" id="panel_row">
<property name="title" translatable="yes">Panel</property>
<property name="activatable-widget">panel_switch</property>
<child>
<object class="GtkSwitch" id="panel_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="panel_in_overview_row">
<property name="title" translatable="yes">Panel in Overview</property>
<property name="activatable-widget">panel_in_overview_switch</property>
<property name="sensitive" bind-source="panel_switch" bind-property="active" bind-flags="invert-boolean|sync-create"/>
<child>
<object class="GtkSwitch" id="panel_in_overview_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="activities_button_row">
<property name="title" translatable="yes">Activities Button</property>
<property name="subtitle" translatable="yes">Button in panel to toggle overview visibility</property>
<property name="activatable-widget">activities_button_switch</property>
<child>
<object class="GtkSwitch" id="activities_button_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="clock_menu_row">
<property name="title" translatable="yes">Clock Menu</property>
<property name="subtitle" translatable="yes">Also known as date menu shows date and time in panel</property>
<property name="activatable-widget">clock_menu_switch</property>
<child>
<object class="GtkSwitch" id="clock_menu_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="keyboard_layout_row">
<property name="title" translatable="yes">Keyboard Layout</property>
<property name="subtitle" translatable="yes">Keyboard Layout indicator button in panel</property>
<property name="activatable-widget">keyboard_layout_switch</property>
<child>
<object class="GtkSwitch" id="keyboard_layout_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="accessibility_menu_row">
<property name="title" translatable="yes">Accessibility Menu</property>
<property name="subtitle" translatable="yes">Accessibility Menu indicator button in panel</property>
<property name="activatable-widget">accessibility_menu_switch</property>
<child>
<object class="GtkSwitch" id="accessibility_menu_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="quick_settings_row">
<property name="title" translatable="yes">Quick Settings</property>
<property name="subtitle" translatable="yes">Quick settings menu in panel</property>
<property name="activatable-widget">quick_settings_switch</property>
<child>
<object class="GtkSwitch" id="quick_settings_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="quick_settings_dark_mode_row">
<property name="title" translatable="yes">Dark Mode Toggle Button</property>
<property name="subtitle" translatable="yes">Dark Mode Toggle Button in Quick settings menu</property>
<property name="activatable-widget">quick_settings_dark_mode_switch</property>
<child>
<object class="GtkSwitch" id="quick_settings_dark_mode_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="quick_settings_night_light_row">
<property name="title" translatable="yes">Night Light Toggle Button</property>
<property name="subtitle" translatable="yes">Night Light Toggle Button in Quick settings menu</property>
<property name="activatable-widget">quick_settings_night_light_switch</property>
<child>
<object class="GtkSwitch" id="quick_settings_night_light_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="quick_settings_airplane_mode_row">
<property name="title" translatable="yes">Airplane Mode Toggle Button</property>
<property name="subtitle" translatable="yes">Airplane Mode Toggle Button in Quick settings menu</property>
<property name="activatable-widget">quick_settings_airplane_mode_switch</property>
<child>
<object class="GtkSwitch" id="quick_settings_airplane_mode_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="screen_sharing_indicator_row">
<property name="title" translatable="yes">Screen Sharing Indicator</property>
<property name="subtitle" translatable="yes">Screen sharing indicator in panel</property>
<property name="activatable-widget">screen_sharing_indicator_switch</property>
<child>
<object class="GtkSwitch" id="screen_sharing_indicator_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="screen_recording_indicator_row">
<property name="title" translatable="yes">Screen Recording Indicator</property>
<property name="subtitle" translatable="yes">Screen recording indicator in panel</property>
<property name="activatable-widget">screen_recording_indicator_switch</property>
<child>
<object class="GtkSwitch" id="screen_recording_indicator_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="world_clock_row">
<property name="title" translatable="yes">World Clock</property>
<property name="subtitle" translatable="yes">World clock in clock menu</property>
<property name="activatable-widget">world_clock_switch</property>
<child>
<object class="GtkSwitch" id="world_clock_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="weather_row">
<property name="title" translatable="yes">Weather</property>
<property name="subtitle" translatable="yes">Weather in clock menu</property>
<property name="activatable-widget">weather_switch</property>
<child>
<object class="GtkSwitch" id="weather_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="calendar_row">
<property name="title" translatable="yes">Calendar</property>
<property name="subtitle" translatable="yes">Calendar in clock menu</property>
<property name="activatable-widget">calendar_switch</property>
<child>
<object class="GtkSwitch" id="calendar_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="events_button_row">
<property name="title" translatable="yes">Events</property>
<property name="subtitle" translatable="yes">Events button in clock menu</property>
<property name="activatable-widget">events_button_switch</property>
<child>
<object class="GtkSwitch" id="events_button_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="search_row">
<property name="title" translatable="yes">Search</property>
<property name="subtitle" translatable="yes">Search entry in overview</property>
<property name="activatable-widget">search_switch</property>
<child>
<object class="GtkSwitch" id="search_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="dash_row">
<property name="title" translatable="yes">Dash</property>
<property name="subtitle" translatable="yes">Dash holds favorite and opened applications icons</property>
<property name="activatable-widget">dash_switch</property>
<child>
<object class="GtkSwitch" id="dash_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="dash_separator_row">
<property name="title" translatable="yes">Dash Separator</property>
<property name="subtitle" translatable="yes">Dash separator line that separates pin apps from unpin apps</property>
<property name="activatable-widget">dash_separator_switch</property>
<child>
<object class="GtkSwitch" id="dash_separator_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="dash_app_running_row">
<property name="title" translatable="yes">Dash App Running Indicator</property>
<property name="subtitle" translatable="yes">The dot indicator in dash that shows the app is running</property>
<property name="activatable-widget">dash_app_running_switch</property>
<child>
<object class="GtkSwitch" id="dash_app_running_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="show_apps_button_row">
<property name="title" translatable="yes">Show Applications Button</property>
<property name="subtitle" translatable="yes">Button in dash that toggles applications list visibility</property>
<property name="activatable-widget">show_apps_button_switch</property>
<child>
<object class="GtkSwitch" id="show_apps_button_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="osd_row">
<property name="title" translatable="yes">On Screen Display (OSD)</property>
<property name="subtitle" translatable="yes">Volume and brightness on screen display when the change happens</property>
<property name="activatable-widget">osd_switch</property>
<child>
<object class="GtkSwitch" id="osd_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="workspace_popup_row">
<property name="title" translatable="yes">Workspace Popup</property>
<property name="subtitle" translatable="yes">Popup that appears on the screen when you change the workspace</property>
<property name="activatable-widget">workspace_popup_switch</property>
<child>
<object class="GtkSwitch" id="workspace_popup_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="workspace_row">
<property name="title" translatable="yes">Workspace Switcher</property>
<property name="subtitle" translatable="yes">Also refers to workspace thumbnails that you see in overview for selecting a workspace</property>
<property name="activatable-widget">workspace_switch</property>
<child>
<object class="GtkSwitch" id="workspace_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="workspaces_in_app_grid_row">
<property name="title" translatable="yes">Workspaces App Grid</property>
<property name="subtitle" translatable="yes">Workspace boxes in app grid</property>
<property name="activatable-widget">workspaces_in_app_grid_switch</property>
<child>
<object class="GtkSwitch" id="workspaces_in_app_grid_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="window_preview_close_button_row">
<property name="title" translatable="yes">Window Picker Close Button</property>
<property name="subtitle" translatable="yes">The close button on window preview in overview</property>
<property name="activatable-widget">window_preview_close_button_switch</property>
<child>
<object class="GtkSwitch" id="window_preview_close_button_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="window_preview_caption_row">
<property name="title" translatable="yes">Window Picker Caption</property>
<property name="subtitle" translatable="yes">The text under window preview in overview</property>
<property name="activatable-widget">window_preview_caption_switch</property>
<child>
<object class="GtkSwitch" id="window_preview_caption_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="background_menu_row">
<property name="title" translatable="yes">Background Menu</property>
<property name="subtitle" translatable="yes">When you right click on desktop background</property>
<property name="activatable-widget">background_menu_switch</property>
<child>
<object class="GtkSwitch" id="background_menu_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="ripple_box_row">
<property name="title" translatable="yes">Ripple Box</property>
<property name="subtitle" translatable="yes">Hot corner animation effects</property>
<property name="activatable-widget">ripple_box_switch</property>
<child>
<object class="GtkSwitch" id="ripple_box_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="window_menu_take_screenshot_button_row">
<property name="title" translatable="yes">Take Screenshot button in Window Menu</property>
<property name="subtitle" translatable="yes">Take screenshot button in title bar right click menu</property>
<property name="activatable-widget">window_menu_take_screenshot_button_switch</property>
<child>
<object class="GtkSwitch" id="window_menu_take_screenshot_button_switch">
<property name="valign">center</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>

View file

@ -0,0 +1,160 @@
/**
* Extension
*
* @author Javad Rahmatzadeh <j.rahmatzadeh@gmail.com>
* @copyright 2020-2025
* @license GPL-3.0-only
*/
import Clutter from 'gi://Clutter';
import Gio from 'gi://Gio';
import GLib from 'gi://GLib';
import GObject from 'gi://GObject';
import Meta from 'gi://Meta';
import St from 'gi://St';
import * as AltTab from 'resource:///org/gnome/shell/ui/altTab.js';
import * as BackgroundMenu from 'resource:///org/gnome/shell/ui/backgroundMenu.js';
import * as LookingGlass from 'resource:///org/gnome/shell/ui/lookingGlass.js';
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
import * as MessageTray from 'resource:///org/gnome/shell/ui/messageTray.js';
import * as OSDWindow from 'resource:///org/gnome/shell/ui/osdWindow.js';
import * as OverviewControls from 'resource:///org/gnome/shell/ui/overviewControls.js';
import * as Panel from 'resource:///org/gnome/shell/ui/panel.js';
import * as PanelMenu from 'resource:///org/gnome/shell/ui/panelMenu.js';
import * as Search from 'resource:///org/gnome/shell/ui/search.js';
import * as SearchController from 'resource:///org/gnome/shell/ui/searchController.js';
import * as SwitcherPopup from 'resource:///org/gnome/shell/ui/switcherPopup.js';
import * as WindowMenu from 'resource:///org/gnome/shell/ui/windowMenu.js';
import * as WindowPreview from 'resource:///org/gnome/shell/ui/windowPreview.js';
import * as Workspace from 'resource:///org/gnome/shell/ui/workspace.js';
import * as WorkspacesView from 'resource:///org/gnome/shell/ui/workspacesView.js';
import * as WorkspaceSwitcherPopup from 'resource:///org/gnome/shell/ui/workspaceSwitcherPopup.js';
import * as WorkspaceThumbnail from 'resource:///org/gnome/shell/ui/workspaceThumbnail.js';
import * as Config from 'resource:///org/gnome/shell/misc/config.js';
import * as Util from 'resource:///org/gnome/shell/misc/util.js';
import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js';
import {API} from './lib/API.js';
import {Manager} from './lib/Manager.js';
import {SupportNotifier} from './lib/SupportNotifier.js';
/**
* Extension entry point
*/
export default class JustPerfection extends Extension
{
/**
* Instance of API
*
* @type {API|null}
*/
#api = null;
/**
* Instance of Manager
*
* @type {Manager|null}
*/
#manager = null;
/**
* Instance of SupportNotifier
*
* @type {SupportNotifier|null}
*/
#supportNotifier = null;
/**
* Enable extension
*
* @returns {void}
*/
enable()
{
const shellVersion = parseFloat(Config.PACKAGE_VERSION);
const extensionVersion = parseInt(this.metadata.version);
let InterfaceSettings = new Gio.Settings({schema_id: 'org.gnome.desktop.interface'});
this.#api = new API(
{
Main,
BackgroundMenu,
OverviewControls,
WorkspaceSwitcherPopup,
SwitcherPopup,
InterfaceSettings,
Search,
SearchController,
WorkspaceThumbnail,
WorkspacesView,
Panel,
PanelMenu,
WindowPreview,
Workspace,
LookingGlass,
MessageTray,
OSDWindow,
WindowMenu,
AltTab,
St,
GLib,
Clutter,
Util,
Meta,
GObject,
},
shellVersion
);
this.#api.open();
let settings = this.getSettings();
this.#manager = new Manager(
{
API: this.#api,
Settings: settings,
},
shellVersion
);
this.#manager.registerSettingsSignals();
this.#manager.applyAll();
this.#supportNotifier = new SupportNotifier(
{
MessageTray,
Main,
Gio,
Settings: settings,
},
shellVersion,
extensionVersion,
this
);
this.#supportNotifier.start();
}
/**
* Disable extension
*
* @returns {void}
*/
disable()
{
this.#manager?.revertAll();
this.#manager = null;
this.#api?.close();
this.#api = null;
this.#supportNotifier?.stop();
this.#supportNotifier = null;
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,513 @@
/**
* Prefs Library
*
* @author Javad Rahmatzadeh <j.rahmatzadeh@gmail.com>
* @copyright 2020-2025
* @license GPL-3.0-only
*/
/**
* prefs widget for showing prefs window
*/
export class Prefs
{
/**
* Current shell version
*
* @type {number|null}
*/
#shellVersion = null;
/**
* Instance of PrefsKeys
*
* @type {PrefsKeys|null}
*/
#prefsKeys = null;
/**
* Instance of Gtk.Builder
*
* @type {Gtk.Builder|null}
*/
#builder = null;
/**
* Instance of Gio.Settings
*
* @type {Settings|null}
*/
#settings = null;
/**
* Instance of Gtk.CssProvider
*
* @type {Gtk.CssProvider|null}
*/
#cssProvider = null;
/**
* Instance of Resource
*
* @type {Gio.Resource|null}
*/
#resource = null;
/**
* Instance of Gtk
*
* @type {Gtk|null}
*/
#gtk = null;
/**
* Instance of Gdk
*
* @type {Gdk|null}
*/
#gdk = null;
/**
* Instance of Gio
*
* @type {Gio|null}
*/
#gio = null;
/**
* All available profile names
*
* @type {Array}
*/
#profiles = [
'default',
'minimal',
'superminimal',
];
/**
* All available crypto addresses for donation
*
* The order should be the same as what we have in the combobox .ui file
*
* @type {Array}
*/
#cryptoAddresses = [
['Dogecoin', 'DULPjoiDuhZCmv5LDeJuqYPC8Uy7NK7DnW'],
['Bitcoin', 'bc1qn6p0k8sapmxgedn8qjhd5gm2yzy46t5s296lnd'],
['Bitcoin Cash', 'qzhuj2kdw4zjrg8r2j7knx5uzqdcpv5lwv5uxq04e0'],
['Ethereum', '0xE4A6C46E1095C49688645c132672cB04d1402026'],
['XRP', 'rMvJGGw3eWat3vm7TRjUb5XAtazoSm399R'],
['USDT', '0xE4A6C46E1095C49688645c132672cB04d1402026'],
['USDC', '0xE4A6C46E1095C49688645c132672cB04d1402026'],
['Solana', '3M9d8arcHiuqAwso9zTX4pvZRoaeVVomkovWmGCYgDG2'],
['Cardano', 'addr1qxgrpcsdpyuh7dl4m2mk2vpuss68zjze9y83wpsuxjyafg5sxr3q6zfe0umltk4hv5crepp5w9y9j2g0zurpcdyf6j3qeu2hqs'],
['BNB', '0xE4A6C46E1095C49688645c132672cB04d1402026'],
['LTC', 'LVz4se3wepdgCNGkE8V53VB47ViAjZb7F1'],
['XLM', 'GDZOVYXD6PGG77V5HGHN767AGPIYZ3ZHNUC53BSXMIDRSTKVFVUJJFHZ'],
['Monero', '49uPJDZCoFJMoeLAZKDpuTScHjdfgfzksMNurZdt2J4x8meKUZZwUiq3tBs9xYVq9G8PzxjwH6zkXeEZKz3JgdfiGo3aZN5'],
['LBRY', 'bPMi1WVgtMDjdX3V4ofAtMt5qMj4xYM4A1'],
['Shiba Inu', '0xE4A6C46E1095C49688645c132672cB04d1402026'],
];
/**
* class constructor
*
* @param {Object} dependencies
* 'Builder' instance of Gtk::Builder
* 'Settings' instance of Gio::Settings
* 'CssProvider': instance of Gtk::CssProvider
* 'Gtk' reference to Gtk
* 'Gdk' reference to Gdk
* 'Gio' reference to Gio
* @param {PrefsKeys.PrefsKeys} prefsKeys instance of PrefsKeys
* @param {number} shellVersion float in major.minor format
*/
constructor(dependencies, prefsKeys, shellVersion)
{
this.#settings = dependencies['Settings'] || null;
this.#builder = dependencies['Builder'] || null;
this.#cssProvider = dependencies['CssProvider'] || null;
this.#gtk = dependencies['Gtk'] || null;
this.#gdk = dependencies['Gdk'] || null;
this.#gio = dependencies['Gio'] || null;
this.#prefsKeys = prefsKeys;
this.#shellVersion = shellVersion;
}
/**
* fill prefs window
*
* @param {Adw.PreferencesWindow} window prefs dialog
* @param {string} ResourcesFolderPath folder path to resources folder
* @param {string} gettextDomain gettext domain
*
* @returns {void}
*/
fillPrefsWindow(window, ResourcesFolderPath, gettextDomain)
{
// changing the order here can change the elements order in ui
let uiFilenames = [
'profile',
'visibility',
'icons',
'behavior',
'customize',
];
this.#loadResource(ResourcesFolderPath);
this.#cssProvider.load_from_resource(
`/org/gnome/Shell/Extensions/justperfection/css/prefs.css`
);
this.#gtk.StyleContext.add_provider_for_display(
this.#gdk.Display.get_default(),
this.#cssProvider,
this.#gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
);
this.#builder.set_translation_domain(gettextDomain);
for (let uiFilename of uiFilenames) {
this.#builder.add_from_resource(
`/org/gnome/Shell/Extensions/justperfection/ui/${uiFilename}.ui`
);
}
for (let uiFilename of uiFilenames) {
let page = this.#builder.get_object(uiFilename);
window.add(page);
}
this.#setValues();
this.#guessProfile();
this.#onlyShowSupportedRows();
this.#loadCryptoSupportAddress();
this.#registerAllSignals(window);
this.#setWindowSize(window);
window.search_enabled = true;
}
/**
* load resource
*
* @param {string} folder path to the resources folder
*
* @returns {void}
*/
#loadResource(path)
{
this.#resource = this.#gio.Resource.load(`${path}/resources.gresource`);
this.#gio.resources_register(this.#resource);
}
/**
* set window size
*
* @param {Adw.PreferencesWindow} window prefs window
*
* @returns {void}
*/
#setWindowSize(window)
{
let [pmWidth, pmHeight, pmScale] = this.#getPrimaryMonitorInfo();
let sizeTolerance = 50;
let width = 640;
let height = 810;
if (
(pmWidth / pmScale) - sizeTolerance >= width &&
(pmHeight / pmScale) - sizeTolerance >= height
) {
window.set_default_size(width, height);
}
}
/**
* get primary monitor info
*
* @returns {Array} [width, height, scale]
*/
#getPrimaryMonitorInfo()
{
let display = this.#gdk.Display.get_default();
let pm = display.get_monitors().get_item(0);
if (!pm) {
return [700, 500, 1];
}
let geo = pm.get_geometry();
let scale = pm.get_scale_factor();
return [geo.width, geo.height, scale];
}
/**
* register all signals
*
* @param {Adw.PreferencesWindow} window prefs dialog
*
* @returns {void}
*/
#registerAllSignals(window)
{
this.#registerKeySignals();
this.#registerProfileSignals();
this.#registerCryptoSupportSignals(window);
this.#registerCloseSignal(window);
}
/**
* register close signal
*
* @param {Adw.PreferencesWindow} window prefs dialog
*
* @returns {void}
*/
#registerCloseSignal(window)
{
window.connect('close-request', () => {
if (this.#resource) {
this.#gio.resources_unregister(this.#resource);
}
});
}
/**
* register signals of all prefs keys
*
* @returns {void}
*/
#registerKeySignals()
{
// all available keys
for (let [, key] of Object.entries(this.#prefsKeys.keys)) {
switch (key.widgetType) {
case 'GtkSwitch':
this.#builder.get_object(key.widgetId).connect('state-set', (w) => {
this.#settings.set_boolean(key.name, w.get_active());
this.#guessProfile();
});
break;
case 'AdwActionRow':
this.#builder.get_object(key.widgetId).connect('notify::selected-item', (w) => {
let index = w.get_selected();
let value = (index in key.maps) ? key.maps[index] : index;
this.#settings.set_int(key.name, value);
this.#guessProfile();
});
break;
case 'AdwSpinRow':
this.#builder.get_object(key.widgetId).connect('notify::value', (w) => {
let value = w.get_value();
this.#settings.set_int(key.name, value);
this.#guessProfile();
});
break;
}
}
}
/**
* register profile signals
*
* @returns {void}
*/
#registerProfileSignals()
{
for (let profile of this.#profiles) {
let widget = this.#builder.get_object(`profile_${profile}`);
if (!widget) {
break;
}
widget.connect('clicked', (w) => {
this.#setValues(profile);
});
}
}
/**
* register crypto support signals
*
* @param {Adw.PreferencesWindow} window prefs dialog
*
* @returns {void}
*/
#registerCryptoSupportSignals(window)
{
let comboRow = this.#builder.get_object(`support_crypto_row`);
let copyButton = this.#builder.get_object(`crypto_address_copy_button`);
let addressEntry = this.#builder.get_object(`crypto_address_row`);
let toast = this.#builder.get_object(`toast_added_to_clipboard`);
comboRow.connect('notify::selected-item', (w) => {
let selectedIndex = w.get_selected();
this.#loadCryptoSupportAddress(selectedIndex);
});
copyButton.connect('clicked', () => {
let display = this.#gdk.Display.get_default();
let clipboard = display.get_clipboard();
clipboard.set(addressEntry.text);
window.add_toast(toast);
});
}
/**
* load crypto address into the ui
*
* @param {number} index coming from the crypto name combobox
*
* @returns {void}
*/
#loadCryptoSupportAddress(index = 0)
{
let addressEntry = this.#builder.get_object(`crypto_address_row`);
let qrPicture = this.#builder.get_object(`qr_picture`);
let name = this.#cryptoAddresses[index][0];
let filename = name.replace(' ', '-').toLowerCase();
let address = this.#cryptoAddresses[index][1]
qrPicture.set_resource(
`/org/gnome/Shell/Extensions/justperfection/imgs/qr-${filename}.svg`
);
addressEntry.title = `${name} Address`;
addressEntry.text = address;
}
/**
* can check all current values and guess the profile based on the values
*
* @returns {void}
*/
#guessProfile()
{
let totalCount = 0;
let matchCount = {};
for (let profile of this.#profiles) {
matchCount[profile] = 0;
}
for (let [, key] of Object.entries(this.#prefsKeys.keys)) {
if (!key.supported) {
continue;
}
let value;
switch (key.widgetType) {
case 'GtkSwitch':
value = this.#builder.get_object(key.widgetId).get_active();
break;
case 'AdwActionRow':
value = this.#builder.get_object(key.widgetId).get_selected();
break;
case 'AdwSpinRow':
value = this.#builder.get_object(key.widgetId).get_value();
break;
default:
value = '';
continue;
}
for (let profile of this.#profiles) {
if (key.profiles[profile] === value) {
matchCount[profile]++;
}
}
totalCount++;
}
let currentProfile = 'custom';
for (let profile of this.#profiles) {
if (matchCount[profile] === totalCount) {
currentProfile = profile;
break;
}
}
let widget = this.#builder.get_object(`profile_${currentProfile}`);
if (widget) {
widget.set_active(true);
}
}
/**
* set values for all elements
*
* @param {string} profile profile name or null for get it from gsettings
*
* @returns {void}
*/
#setValues(profile)
{
for (let [, key] of Object.entries(this.#prefsKeys.keys)) {
let widget = this.#builder.get_object(key.widgetId);
let value;
switch (key.widgetType) {
case 'GtkSwitch':
value
= (profile)
? key.profiles[profile]
: this.#settings.get_boolean(key.name);
widget.set_active(value);
break;
case 'AdwActionRow':
let index
= (profile)
? key.profiles[profile]
: this.#settings.get_int(key.name);
for (let k in key.maps) {
if (key.maps[k] === index) {
index = k;
break;
}
}
widget.set_selected(index);
break;
case 'AdwSpinRow':
value
= (profile)
? key.profiles[profile]
: this.#settings.get_int(key.name);
widget.set_value(value);
break;
}
}
}
/**
* apply all supported keys to the elements
*
* @returns {void}
*/
#onlyShowSupportedRows()
{
for (let [, key] of Object.entries(this.#prefsKeys.keys)) {
let row = this.#builder.get_object(`${key.id}_row`);
let visible = key.supported;
row.visible = visible;
}
}
};

View file

@ -0,0 +1,871 @@
/**
* PrefsKeys Library
*
* @author Javad Rahmatzadeh <j.rahmatzadeh@gmail.com>
* @copyright 2020-2025
* @license GPL-3.0-only
*/
/**
* prefs keys
*/
export class PrefsKeys
{
/**
* Current shell version
*
* @type {number|null}
*/
#shellVersion = null;
/**
* class constructor
*
* @param {number} shellVersion float in major.minor format
*/
constructor(shellVersion)
{
this.#shellVersion = shellVersion;
/**
* holds all keys generated by this.#setKey()
*
* @member {Object}
*/
this.keys = {};
this.#setDefaults();
}
/**
* set all default keys
*
* @returns {void}
*/
#setDefaults()
{
this.#setKey(
'panel',
'GtkSwitch',
true,
{
default: true,
minimal: false,
superminimal: false,
}
);
this.#setKey(
'panel-in-overview',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: false,
}
);
this.#setKey(
'activities-button',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'clock-menu',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'keyboard-layout',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'accessibility-menu',
'GtkSwitch',
true,
{
default: true,
minimal: false,
superminimal: true,
}
);
this.#setKey(
'quick-settings',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'quick-settings-dark-mode',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'quick-settings-night-light',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'quick-settings-airplane-mode',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'screen-sharing-indicator',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'screen-recording-indicator',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'search',
'GtkSwitch',
true,
{
default: true,
minimal: false,
superminimal: false,
}
);
this.#setKey(
'dash',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: false,
}
);
this.#setKey(
'dash-separator',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'dash-app-running',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'osd',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: false,
}
);
this.#setKey(
'workspace-popup',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: false,
}
);
this.#setKey(
'workspace',
'GtkSwitch',
true,
{
default: true,
minimal: false,
superminimal: false,
}
);
this.#setKey(
'background-menu',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: false,
}
);
this.#setKey(
'show-apps-button',
'GtkSwitch',
true,
{
default: true,
minimal: false,
superminimal: true,
}
);
this.#setKey(
'workspaces-in-app-grid',
'GtkSwitch',
true,
{
default: true,
minimal: false,
superminimal: false,
}
);
this.#setKey(
'window-preview-caption',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: false,
}
);
this.#setKey(
'window-preview-close-button',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: false,
}
);
this.#setKey(
'ripple-box',
'GtkSwitch',
true,
{
default: true,
minimal: false,
superminimal: false,
}
);
this.#setKey(
'world-clock',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'weather',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'calendar',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'events-button',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'window-menu-take-screenshot-button',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'panel-notification-icon',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'power-icon',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'window-picker-icon',
'GtkSwitch',
true,
{
default: true,
minimal: false,
superminimal: false,
}
);
this.#setKey(
'type-to-search',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'window-demands-attention-focus',
'GtkSwitch',
true,
{
default: false,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'window-maximized-on-create',
'GtkSwitch',
true,
{
default: false,
minimal: false,
superminimal: false,
}
);
this.#setKey(
'workspace-switcher-should-show',
'GtkSwitch',
true,
{
default: false,
minimal: false,
superminimal: false,
}
);
this.#setKey(
'startup-status',
'AdwActionRow',
true,
{
default: 1,
minimal: 0,
superminimal: 0,
}
);
this.#setKey(
'workspace-wrap-around',
'GtkSwitch',
true,
{
default: false,
minimal: false,
superminimal: false,
}
);
this.#setKey(
'workspace-peek',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'workspace-thumbnail-to-main-view',
'GtkSwitch',
true,
{
default: false,
minimal: false,
superminimal: false,
}
);
this.#setKey(
'overlay-key',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'double-super-to-appgrid',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: false,
}
);
this.#setKey(
'switcher-popup-delay',
'GtkSwitch',
true,
{
default: true,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'accent-color-icon',
'GtkSwitch',
(this.#shellVersion >= 47),
{
default: false,
minimal: false,
superminimal: false,
}
);
this.#setKey(
'controls-manager-spacing-size',
'AdwActionRow',
true,
{
default: 0,
minimal: 0,
superminimal: 22,
}
);
this.#setKey(
'workspace-background-corner-size',
'AdwActionRow',
true,
{
default: 0,
minimal: 0,
superminimal: 15,
}
);
this.#setKey(
'top-panel-position',
'AdwActionRow',
true,
{
default: 0,
minimal: 0,
superminimal: 0,
}
);
this.#setKey(
'clock-menu-position',
'AdwActionRow',
true,
{
default: 0,
minimal: 0,
superminimal: 0,
}
);
this.#setKey(
'clock-menu-position-offset',
'AdwSpinRow',
true,
{
default: 0,
minimal: 0,
superminimal: 0,
}
);
this.#setKey(
'workspace-switcher-size',
'AdwActionRow',
true,
{
default: 0,
minimal: 0,
superminimal: 0,
}
);
this.#setKey(
'animation',
'AdwActionRow',
true,
{
default: 1,
minimal: 1,
superminimal: 1,
}
);
this.#setKey(
'dash-icon-size',
'AdwActionRow',
true,
{
default: 0,
minimal: 1,
superminimal: 0,
},
{
'1': 16,
'2': 22,
'3': 24,
'4': 32,
'5': 40,
'6': 48,
'7': 56,
'8': 64,
}
);
this.#setKey(
'notification-banner-position',
'AdwActionRow',
true,
{
default: 1,
minimal: 1,
superminimal: 1,
}
);
this.#setKey(
'panel-size',
'AdwActionRow',
true,
{
default: 0,
minimal: 0,
superminimal: 0,
}
);
this.#setKey(
'panel-button-padding-size',
'AdwActionRow',
true,
{
default: 0,
minimal: 0,
superminimal: 0,
}
);
this.#setKey(
'panel-indicator-padding-size',
'AdwActionRow',
true,
{
default: 0,
minimal: 0,
superminimal: 0,
}
);
this.#setKey(
'panel-icon-size',
'AdwActionRow',
true,
{
default: 0,
minimal: 0,
superminimal: 0,
}
);
this.#setKey(
'osd-position',
'AdwActionRow',
true,
{
default: 0,
minimal: 0,
superminimal: 0,
}
);
this.#setKey(
'looking-glass-width',
'AdwActionRow',
true,
{
default: 0,
minimal: 0,
superminimal: 0,
}
);
this.#setKey(
'looking-glass-height',
'AdwActionRow',
true,
{
default: 0,
minimal: 0,
superminimal: 0,
}
);
this.#setKey(
'alt-tab-window-preview-size',
'AdwActionRow',
true,
{
default: 0,
minimal: 0,
superminimal: 0,
},
{
'0': 0,
'1': 32,
'2': 64,
'3': 128,
'4': 256,
'5': 512,
}
);
this.#setKey(
'alt-tab-small-icon-size',
'AdwActionRow',
true,
{
default: 0,
minimal: 0,
superminimal: 0,
},
{
'0': 0,
'1': 32,
'2': 64,
'3': 128,
'4': 256,
'5': 512,
}
);
this.#setKey(
'alt-tab-icon-size',
'AdwActionRow',
true,
{
default: 0,
minimal: 0,
superminimal: 0,
},
{
'0': 0,
'1': 32,
'2': 64,
'3': 128,
'4': 256,
'5': 512,
}
);
this.#setKey(
'max-displayed-search-results',
'AdwActionRow',
true,
{
default: 0,
minimal: 0,
superminimal: 0,
}
);
this.#setKey(
'invert-calendar-column-items',
'GtkSwitch',
true,
{
default: false,
minimal: false,
superminimal: false,
}
);
this.#setKey(
'theme',
'GtkSwitch',
true,
{
default: false,
minimal: true,
superminimal: true,
}
);
this.#setKey(
'support-notifier-type',
'AdwActionRow'
);
}
/**
* set key
*
* @param {string} name should be the same as gsettings key name
* @param {string} widgetType gtk widget type like 'GtkSwitch'.
* @param {boolean} supported whether supported in the current shell
* @param {Object} profiles values for each profile. for example:
* {default: true, minimal: false}
* @param {Object} [maps] for example for combobox you can specify
* if the index is 1 use 32 as value:
* {1 : 32}
*
* @returns {void}
*/
#setKey(name, widgetType, supported = true, profiles = {}, maps = {})
{
let id = name.replace(/-/g, '_');
let widgetName = widgetType.toLowerCase().replace('gtk', '');
let widgetId
= (widgetType === 'AdwActionRow' || widgetType === 'AdwSpinRow')
? `${id}_row`
: `${id}_${widgetName}`;
this.keys[id] = {
widgetType,
name,
id,
widgetId,
supported,
profiles,
maps,
};
}
/**
* delete key
*
* @param {string} id key id
*
* @returns {void}
*/
deleteKey(id)
{
delete(this.keys[id]);
}
};

View file

@ -0,0 +1,219 @@
/**
* Support Notifier Library
*
* @author Javad Rahmatzadeh <j.rahmatzadeh@gmail.com>
* @copyright 2020-2025
* @license GPL-3.0-only
*/
const TYPE = {
NEVER: 0,
NEW_RELEASE: 1,
};
/**
* Support Notifier
*/
export class SupportNotifier
{
/**
* Current shell version
*
* @type {number|null}
*/
#shellVersion = null;
/**
* Current extension version
*
* @type {number|null}
*/
#extensionVersion = null;
/**
* Instance of Gio.Settings
*
* @type {Settings|null}
*/
#settings = null;
/**
* Instance of current Extension
*
* @type {Extension|null}
*/
#extension = null;
/**
* Class Constructor
*
* @param {Object} dependencies
* 'MessageTray' reference to ui::messageTray
* 'Main' reference to ui::main
* 'Gio' reference to Gio
* @param {number} shellVersion float in major.minor format
* @param {number} extensionVersion integer
* @param {Object} extension Extension
*/
constructor(dependencies, shellVersion, extensionVersion, extension)
{
this._messageTray = dependencies['MessageTray'] || null;
this._main = dependencies['Main'] || null;
this._gio = dependencies['Gio'] || null;
this.#settings = dependencies['Settings'] || null;
this.#shellVersion = shellVersion;
this.#extensionVersion = extensionVersion;
this.#extension = extension;
this.#registerSettingsSignals();
}
/**
* register all signals for settings
*
* @returns {void}
*/
#registerSettingsSignals()
{
this.#settings.connect('changed::support-notifier-type', () => {
this.restart();
});
}
/**
* start support notifier service
*
* @returns {void}
*/
start()
{
let type = this.#settings.get_int('support-notifier-type');
if (type === TYPE.NEW_RELEASE) {
if (!this.#isShownForCurrentVersion()) {
this.#showNotification();
}
}
}
/**
* stop support notifier service
*
* @returns {void}
*/
stop()
{
}
/**
* restart support notifier service
*
* @returns {void}
*/
restart()
{
this.stop();
this.start();
}
/**
* whether the notification showed for the current extension version
*
* @returns {boolean}
*/
#isShownForCurrentVersion()
{
let showedVersion = this.#settings.get_int('support-notifier-showed-version');
return this.#extensionVersion <= showedVersion;
}
/**
* show notification
*
* @returns {void}
*/
#showNotification()
{
let title = "Support Just Perfection Extension";
let body = "The future of the Just Perfection extension depends on your support! " +
"Your donation will help add new features and updates. " +
"Please consider making a donation." +
"\r\r" +
"<i>Crypto donations are preferred since there are no platform fees, " +
"and 100% of your donation is received directly.</i>";
const source = this.#getSource();
const notification = this.#getNotification(source, title, body);
notification.addAction('Buy Me a Coffee', () => {
this._gio.AppInfo.launch_default_for_uri('https://www.buymeacoffee.com/justperfection', null);
notification.destroy();
});
notification.addAction('Donate Crypto', () => {
this.#extension.openPreferences();
notification.destroy();
});
notification.addAction("Don't show again!", () => {
this.#settings.set_int('support-notifier-type', TYPE.NEVER);
notification.destroy();
});
if (this.#shellVersion >= 46) {
source.addNotification(notification);
} else {
source.showNotification(notification);
}
this.#settings.set_int('support-notifier-showed-version', this.#extensionVersion);
}
/**
* get system notification source
*
* @returns {MessageTray.Source}
*/
#getSource()
{
const source
= (this.#shellVersion >= 46)
? this._messageTray.getSystemSource()
: new this._messageTray.SystemNotificationSource();
if (this.#shellVersion < 46) {
this._main.messageTray.add(source);
}
source.title = 'Just Perfection Extension';
source.iconName = 'application-x-addon-symbolic';
return source;
}
/**
* get notification
*
* @param {MessageTray.Source} source
* @param {string} title
* @param {string} body
*
* @returns {MessageTray.Notification}
*/
#getNotification(source, title, body)
{
const notification
= (this.#shellVersion >= 46)
? new this._messageTray.Notification({source, title, body})
: new this._messageTray.Notification(source, title, body, {bannerMarkup: true});
notification.useBodyMarkup = true;
notification.resident = true;
notification.iconName = 'emblem-favorite-symbolic';
notification.urgency = this._messageTray.Urgency.CRITICAL;
return notification;
}
}

View file

@ -0,0 +1,14 @@
{
"name": "Just Perfection",
"description": "Tweak Tool to Customize GNOME Shell, Change the Behavior and Disable UI Elements",
"shell-version": ["45", "46", "47", "48"],
"settings-schema": "org.gnome.shell.extensions.just-perfection",
"gettext-domain": "just-perfection",
"url": "https://gitlab.gnome.org/jrahmatzadeh/just-perfection",
"uuid": "just-perfection-desktop@just-perfection",
"donations": {
"patreon": "justperfection",
"buymeacoffee": "justperfection"
},
"version": 34
}

View file

@ -0,0 +1,53 @@
/**
* Prefs Dialog
*
* @author Javad Rahmatzadeh <j.rahmatzadeh@gmail.com>
* @copyright 2020-2025
* @license GPL-3.0-only
*/
import Gtk from 'gi://Gtk';
import Gdk from 'gi://Gdk';
import Gio from 'gi://Gio';
import {ExtensionPreferences} from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
import * as Config from 'resource:///org/gnome/Shell/Extensions/js/misc/config.js';
import {Prefs} from './lib/Prefs/Prefs.js';
import {PrefsKeys} from './lib/Prefs/PrefsKeys.js';
/**
* Preferences window entry point
*/
export default class JustPerfectionPrefs extends ExtensionPreferences
{
/**
* fill preferences window
*
* @returns {void}
*/
fillPreferencesWindow(window)
{
const shellVersion = parseFloat(Config.PACKAGE_VERSION);
const gettextDomain = this.metadata['gettext-domain'];
let ResourcesFolderPath = this.path;
let prefsKeys = new PrefsKeys(shellVersion);
let prefs = new Prefs(
{
Builder: new Gtk.Builder(),
Settings: this.getSettings(),
CssProvider: new Gtk.CssProvider(),
Gtk,
Gdk,
Gio,
},
prefsKeys,
shellVersion
);
prefs.fillPrefsWindow(window, ResourcesFolderPath, gettextDomain);
}
}

View file

@ -0,0 +1,452 @@
<?xml version="1.0" encoding="UTF-8"?>
<schemalist>
<schema id="org.gnome.shell.extensions.just-perfection"
path="/org/gnome/shell/extensions/just-perfection/">
<key type="b" name="panel">
<default>true</default>
<summary>Panel</summary>
<description>Panel Visibility Status</description>
</key>
<key type="b" name="panel-in-overview">
<default>false</default>
<summary>Panel in Overview</summary>
<description>Panel in Overview Visibility Status</description>
</key>
<key type="b" name="background-menu">
<default>true</default>
<summary>Background Menu</summary>
<description>Background Menu Status</description>
</key>
<key type="b" name="search">
<default>true</default>
<summary>Search Box</summary>
<description>Search Box Visibility Status</description>
</key>
<key type="b" name="workspace">
<default>true</default>
<summary>Workspace Switcher</summary>
<description>Workspace Switcher Visibility Status</description>
</key>
<key type="b" name="dash">
<default>true</default>
<summary>Dash</summary>
<description>Dash Visibility Status</description>
</key>
<key type="b" name="osd">
<default>true</default>
<summary>OSD</summary>
<description>OSD Visibility Status</description>
</key>
<key type="b" name="workspace-popup">
<default>true</default>
<summary>Workspace Popup</summary>
<description>Workspace Popup Visibility Status</description>
</key>
<key type="b" name="theme">
<default>false</default>
<summary>Theme</summary>
<description>Theme Status</description>
</key>
<key type="b" name="activities-button">
<default>true</default>
<summary>Activities Button</summary>
<description>Activities Button Visibility Status</description>
</key>
<key type="b" name="clock-menu">
<default>true</default>
<summary>Clock Menu</summary>
<description>Clock Menu Visibility Status</description>
</key>
<key type="b" name="panel-notification-icon">
<default>true</default>
<summary>Panel Notification Icon</summary>
<description>Panel Notification Icon Visibility Status</description>
</key>
<key type="b" name="keyboard-layout">
<default>true</default>
<summary>Keyboard Layout</summary>
<description>Keyboard Layout Visibility Status</description>
</key>
<key type="b" name="accessibility-menu">
<default>true</default>
<summary>Accessibility Menu</summary>
<description>Accessibility Menu Visibility Status</description>
</key>
<key type="b" name="quick-settings">
<default>true</default>
<summary>Quick Settings Menu</summary>
<description>Quick Settings Visibility Status</description>
</key>
<key type="b" name="power-icon">
<default>true</default>
<summary>Power Icon</summary>
<description>Power Icon Visibility Status</description>
</key>
<key type="b" name="window-picker-icon">
<default>true</default>
<summary>Window Picker Icon</summary>
<description>Window Picker Icon Visiblity</description>
</key>
<key type="b" name="type-to-search">
<default>true</default>
<summary>Type to Search</summary>
<description>Type to Search Behavior</description>
</key>
<key type="i" name="panel-corner-size">
<default>0</default>
<range min="0" max="61"/>
<summary>0 means use Shell theme, 1 means no border, 2 - 61 means border size</summary>
<description>Panel Corner Size</description>
</key>
<key type="i" name="workspace-switcher-size">
<default>0</default>
<range min="0" max="30"/>
<summary>Workspace Switcher Size in percent, 0 means use default size</summary>
<description>Workspace Switcher Size</description>
</key>
<key type="i" name="top-panel-position">
<default>0</default>
<range min="0" max="1"/>
<summary>Top Panel Position</summary>
<description>Top Panel Position Status</description>
</key>
<key type="i" name="clock-menu-position">
<default>0</default>
<range min="0" max="2"/>
<summary>0 means center, 1 means right, 2 means left</summary>
<description>Clock Menu Position Status</description>
</key>
<key type="i" name="clock-menu-position-offset">
<default>0</default>
<range min="0" max="20"/>
<summary>0 means start of the position</summary>
<description>Clock Menu Position Offset</description>
</key>
<key type="b" name="show-apps-button">
<default>true</default>
<summary>Show Apps Button Visiblity</summary>
<description>Show Apps Button Visiblity Status</description>
</key>
<key type="i" name="animation">
<default>1</default>
<range min="0" max="8"/>
<summary>0 means disabled, 1 means default speed, animation speed otherwise</summary>
<description>Animation Status</description>
</key>
<key type="b" name="window-demands-attention-focus">
<default>false</default>
<summary>Window Demands Attention Focus</summary>
<description>Window Demands Attention Focus Status</description>
</key>
<key type="b" name="window-maximized-on-create">
<default>false</default>
<summary>Window Maximized on Create</summary>
<description>Window Maximized on Create Status</description>
</key>
<key type="i" name="dash-icon-size">
<default>0</default>
<range min="0" max="64"/>
<summary>0 means default, 16, 22, 24, 32, 40, 48, 56, 64</summary>
<description>Dash Icon Size</description>
</key>
<key type="i" name="startup-status">
<default>1</default>
<range min="0" max="1"/>
<summary>0 means desktop, 1 means overview</summary>
<description>Startup Status</description>
</key>
<key type="b" name="workspaces-in-app-grid">
<default>true</default>
<summary>Workspaces Visiblity in App Grid</summary>
<description>Workspaces Visiblity in App Grid Status</description>
</key>
<key type="i" name="notification-banner-position">
<default>1</default>
<range min="0" max="5"/>
<summary>0: top start, 1: top center, 2: top end, 3: bottom start, 4: bottom center, 5: bottom end</summary>
<description>Notification Banner Position</description>
</key>
<key type="b" name="workspace-switcher-should-show">
<default>false</default>
<summary>Always Show Workspaces Switcher</summary>
<description>Always Show Workspace Switcher Status</description>
</key>
<key type="i" name="panel-size">
<default>0</default>
<range min="0" max="64"/>
<summary>0 means use Shell theme, 1 - 64 means size in pixels</summary>
<description>Panel Size</description>
</key>
<key type="i" name="panel-button-padding-size">
<default>0</default>
<range min="0" max="61"/>
<summary>0 means use Shell theme, 1 means no padding, 2 - 61 means padding size</summary>
<description>Panel Button Padding Size</description>
</key>
<key type="i" name="panel-indicator-padding-size">
<default>0</default>
<range min="0" max="61"/>
<summary>0 means use Shell theme, 1 means no padding, 2 - 61 means padding size</summary>
<description>Panel Indicator Padding Size</description>
</key>
<key type="b" name="window-preview-caption">
<default>true</default>
<summary>Window Preview Caption</summary>
<description>Window Preview Caption Status</description>
</key>
<key type="b" name="window-preview-close-button">
<default>true</default>
<summary>Window Preview Close Button</summary>
<description>Window Preview Close Button Status</description>
</key>
<key type="i" name="workspace-background-corner-size">
<default>0</default>
<range min="0" max="61"/>
<summary>0 means use default shell size, 1 means no radius, 2 - 61 means radius size</summary>
<description>Workspace Background Corner Size</description>
</key>
<key type="b" name="workspace-wrap-around">
<default>false</default>
<summary>Workspace Wrap Around</summary>
<description>Workspace Wrap Around Status</description>
</key>
<key type="b" name="ripple-box">
<default>true</default>
<summary>Ripple Box</summary>
<description>Ripple Box Status</description>
</key>
<key type="b" name="double-super-to-appgrid">
<default>true</default>
<summary>Double Supper To App Grid</summary>
<description>Double Supper To App Grid Status</description>
</key>
<key type="b" name="overlay-key">
<default>true</default>
<summary>Overlay Key</summary>
<description>Overlay Key to Overview Status</description>
</key>
<key type="b" name="switcher-popup-delay">
<default>true</default>
<summary>Switcher Popup Delay</summary>
<description>Removes the delay for all switcher popups like alt-tab, ctrl-alt-tab, keyboard layout, ...</description>
</key>
<key type="b" name="world-clock">
<default>true</default>
<summary>World Clock Visibility in Clock Menu</summary>
<description>World Clock Visibility Status</description>
</key>
<key type="b" name="weather">
<default>true</default>
<summary>Weather Visibility in Clock Menu</summary>
<description>Weather Visibility Status</description>
</key>
<key type="b" name="events-button">
<default>true</default>
<summary>Events Button Visibility in Clock Menu</summary>
<description>Events Button Visibility Status</description>
</key>
<key type="b" name="calendar">
<default>true</default>
<summary>Calendar Visibility in Clock Menu</summary>
<description>Calendar Visibility Status</description>
</key>
<key type="i" name="panel-icon-size">
<default>0</default>
<range min="0" max="60"/>
<summary>0 means use Shell theme, 1 - 60 means panel icon size</summary>
<description>Panel Icon Size</description>
</key>
<key type="b" name="dash-separator">
<default>true</default>
<summary>Dash Separator Visibility</summary>
<description>Dash Separator Visibility Status</description>
</key>
<key type="b" name="workspace-peek">
<default>true</default>
<summary>Workspace Peek</summary>
<description>Workspace Peek Status</description>
</key>
<key type="i" name="looking-glass-width">
<default>0</default>
<range min="0" max="9"/>
<summary>Width Size in percent, 0 means use default size</summary>
<description>Looking Glass Width size</description>
</key>
<key type="i" name="looking-glass-height">
<default>0</default>
<range min="0" max="9"/>
<summary>Height Size in percent, 0 means use default size</summary>
<description>Looking Glass Height size</description>
</key>
<key type="i" name="osd-position">
<default>0</default>
<range min="0" max="9"/>
<summary>OSD Position</summary>
<description>OSD Position Status</description>
</key>
<key type="b" name="window-menu-take-screenshot-button">
<default>true</default>
<summary>Window Menu Take Screenshot Button Visibility</summary>
<description>Window Menu Take Screenshot Button Visibility Status</description>
</key>
<key type="i" name="alt-tab-window-preview-size">
<default>0</default>
<range min="0" max="512"/>
<summary>0 means default size</summary>
<description>Alt Tab Window Preview Size</description>
</key>
<key type="i" name="alt-tab-small-icon-size">
<default>0</default>
<range min="0" max="512"/>
<summary>0 means default size</summary>
<description>Alt Tab Small Icon Size (Window Preview Icon Size)</description>
</key>
<key type="i" name="alt-tab-icon-size">
<default>0</default>
<range min="0" max="512"/>
<summary>0 means default size</summary>
<description>Alt Tab Icon Size</description>
</key>
<key type="b" name="screen-sharing-indicator">
<default>true</default>
<summary>Screen Sharing Indicator Visibility in Panel</summary>
<description>Screen Sharing Indicator Visibility Status</description>
</key>
<key type="b" name="screen-recording-indicator">
<default>true</default>
<summary>Screen Recording Indicator Visibility in Panel</summary>
<description>Screen Recording Indicator Visibility Status</description>
</key>
<key type="i" name="controls-manager-spacing-size">
<default>0</default>
<range min="0" max="150"/>
<summary>0 means default size</summary>
<description>Controls manager spacing Size (overview spacing)</description>
</key>
<key type="b" name="dash-app-running">
<default>true</default>
<summary>Dash app running dot</summary>
<description>Dash app running dot visibility status</description>
</key>
<key type="i" name="max-displayed-search-results">
<default>1</default>
<range min="0" max="40"/>
<summary>0 means default, max displayed search results otherwise</summary>
<description>Max Displayed Search Results</description>
</key>
<key type="b" name="quick-settings-dark-mode">
<default>true</default>
<summary>Dark Mode Toggle Button Visibility In Quick Settings</summary>
<description>Dark Mode Toggle Button Visibility Status</description>
</key>
<key type="b" name="quick-settings-night-light">
<default>true</default>
<summary>Night Light Toggle Button Visibility In Quick Settings</summary>
<description>Night Light Toggle Button Visibility Status</description>
</key>
<key type="b" name="quick-settings-airplane-mode">
<default>true</default>
<summary>Airplane Mode Toggle Button Visibility In Quick Settings</summary>
<description>Airplane Mode Toggle Button Visibility Status</description>
</key>
<key type="b" name="accent-color-icon">
<default>false</default>
<summary>Accent Color for Icons</summary>
<description>Use Accent for Icons</description>
</key>
<key type="b" name="workspace-thumbnail-to-main-view">
<default>false</default>
<summary>Workspace Thumbnail Click Always Goes To The Main View</summary>
<description>Workspace Thumbnail Click to Main View</description>
</key>
<key type="b" name="invert-calendar-column-items">
<default>false</default>
<summary>Invert Calendar Column Items Position</summary>
<description>Invert Calendar Column Items</description>
</key>
<key type="i" name="support-notifier-type">
<default>1</default>
<range min="0" max="1"/>
<summary>0 Means Never, 1 Means New Releases</summary>
<description>Support Notifier Type</description>
</key>
<key type="i" name="support-notifier-showed-version">
<default>0</default>
<summary>The Last Version The Support Notifier Showed Up</summary>
<description>Support Notifier Showed Version</description>
</key>
</schema>
</schemalist>

View file

@ -0,0 +1,732 @@
.just-perfection
{
font-size: small;
}
.just-perfection .switcher-popup
{
padding: 8px;
spacing: 24px;
font-size: small;
}
.just-perfection .switcher-list
{
color: #eeeeec;
background-color: rgba(0, 0, 0, .99);
border: 0 solid rgba(255, 255, 255, .16);
border-radius: 15px;
padding: 12px;
box-shadow: none;
}
.just-perfection .switcher-list .item-box
{
padding: 8px;
border-radius: 14px;
border: 1px solid transparent;
background-color: transparent;
}
.just-perfection .switcher-list .item-box:outlined
{
border: 0;
background-color: rgba(255, 255, 255, .1);
box-shadow: inset 0 2px 2px 0 rgba(0, 0, 0, .4);
}
.just-perfection .switcher-list .item-box:selected
{
background-color: #404040;
color: #eeeeec;
}
.just-perfection .switcher-list .thumbnail-box
{
padding: 2px;
spacing: 6px;
}
.just-perfection .switcher-list .thumbnail
{
width: 256px;
}
.just-perfection .switcher-list .separator
{
width: 1px;
background: #272727;
}
.just-perfection .switcher-list .switcher-list-item-container
{
spacing: 12px;
}
.just-perfection .workspace-switcher-container
{
background-color: rgba(0, 0, 0, .7);
box-shadow: none;
padding: 3px;
border: 0;
border-radius: 3px;
}
.just-perfection .workspace-switcher
{
background: transparent;
border: none;
border-radius: 0;
padding: 0;
spacing: 4px;
}
.just-perfection .workspace-switcher
{
background: rgba(0, 0, 0, .7);
box-shadow: none;
border: none;
border-radius: 5px;
padding: 0;
spacing: 4px;
}
.just-perfection .ws-switcher-indicator,
.just-perfection .ws-switcher-indicator:active
{
background: transparent;
background-color: rgba(255, 255, 255, .02);
height: 8px;
width: 20px;
border: 0;
border-radius: 2px;
padding: 2px;
margin: 5px;
}
.just-perfection .ws-switcher-indicator:active
{
background-color: rgba(255, 255, 255, .8);
}
.just-perfection .ws-switcher-box
{
background: transparent;
background-color: rgba(255, 255, 255, .02);
height: 10px;
background-size: 0;
border: 0;
border-radius: 1px;
}
.just-perfection .ws-switcher-active-up,
.just-perfection .ws-switcher-active-down,
.just-perfection .ws-switcher-active-left,
.just-perfection .ws-switcher-active-right
{
height: 10px;
background-color: rgba(255, 255, 255, .8);
border: 0;
border-radius: 1px;
}
.just-perfection .osd-window
{
background-color: rgba(0, 0, 0, 1);
border: 0;
border-radius: 8px;
padding: 10px;
box-shadow: none;
}
.just-perfection .osd-window StIcon
{
width: 22px;
height: 22px;
}
.just-perfection .tile-preview
{
background-color: rgba(255, 255, 255, 0.15);
border: 1px solid rgba(255, 255, 255, 0.6);
border-radius: 0;
}
.just-perfection-api-accent-color-icon StIcon
{
color: -st-accent-color;
}
.just-perfection-api-accent-color-icon #panelActivities .workspace-dot
{
background-color: -st-accent-color;
}
.just-perfection-api-accent-color-icon .quick-toggle-menu .icon.active,
.just-perfection-api-accent-color-icon .quick-toggle:checked StIcon,
.just-perfection-api-accent-color-icon .quick-menu-toggle .quick-toggle-arrow:checked StIcon
{
color: -st-accent-fg-color;
}
.just-perfection-api-no-search #overview
{
spacing: 0;
}
.just-perfection-api-no-search .overview-controls
{
padding-top: 36px;
padding-bottom: 36px;
}
/* commented because the icon will be shown when the window is getting dragged */
/* icon-dropshadow isn't specific to the window picker icon but that's a quick fix for now */
/* .just-perfection-api-no-window-picker-icon .workspaces-view StIcon */
.just-perfection-api-no-window-picker-icon .icon-dropshadow
{
width: 0;
height: 0;
padding: 0;
}
.just-perfection-api-bottom-panel #overview
{
margin-bottom: 24px;
}
.just-perfection-api-bottom-panel .popup-menu.panel-menu
{
margin-bottom: 0;
}
.just-perfection-api-bottom-panel.just-perfection-api-no-panel #overview
{
margin-bottom: 0;
}
.just-perfection-api-no-panel #panel
{
background-color: transparent;
}
.just-perfection-api-no-panel-arrow .panel-button .popup-menu-arrow
{
width: 0;
height: 0;
}
.just-perfection-api-no-panel-notification-icon .clock-display StIcon
{
width: 0;
height: 0;
padding: 0;
}
.just-perfection-api-no-panel-notification-icon .clock-display-box
{
padding: 0;
spacing: 0;
}
.just-perfection-api-no-show-apps-button .show-apps,
.just-perfection-api-no-show-apps-button .show-apps StIcon
{
width: 0;
margin: 0;
spacing: 0;
}
.just-perfection-api-dash-icon-size16 #dash StIcon { height: 16px; width: 16px; }
.just-perfection-api-dash-icon-size22 #dash StIcon { height: 22px; width: 22px; }
.just-perfection-api-dash-icon-size24 #dash StIcon { height: 24px; width: 24px; }
.just-perfection-api-dash-icon-size32 #dash StIcon { height: 32px; width: 32px; }
.just-perfection-api-dash-icon-size40 #dash StIcon { height: 40px; width: 40px; }
.just-perfection-api-dash-icon-size48 #dash StIcon { height: 48px; width: 48px; }
.just-perfection-api-dash-icon-size56 #dash StIcon { height: 56px; width: 56px; }
.just-perfection-api-dash-icon-size64 #dash StIcon { height: 64px; width: 64px; }
.just-perfection-api-panel-button-padding-size0 .panel-button { -natural-hpadding: 0px; -minimum-hpadding: 0px; }
.just-perfection-api-panel-button-padding-size1 .panel-button { -natural-hpadding: 1px; -minimum-hpadding: 1px; }
.just-perfection-api-panel-button-padding-size2 .panel-button { -natural-hpadding: 2px; -minimum-hpadding: 2px; }
.just-perfection-api-panel-button-padding-size3 .panel-button { -natural-hpadding: 3px; -minimum-hpadding: 3px; }
.just-perfection-api-panel-button-padding-size4 .panel-button { -natural-hpadding: 4px; -minimum-hpadding: 4px; }
.just-perfection-api-panel-button-padding-size5 .panel-button { -natural-hpadding: 5px; -minimum-hpadding: 5px; }
.just-perfection-api-panel-button-padding-size6 .panel-button { -natural-hpadding: 6px; -minimum-hpadding: 6px; }
.just-perfection-api-panel-button-padding-size7 .panel-button { -natural-hpadding: 7px; -minimum-hpadding: 7px; }
.just-perfection-api-panel-button-padding-size8 .panel-button { -natural-hpadding: 8px; -minimum-hpadding: 8px; }
.just-perfection-api-panel-button-padding-size9 .panel-button { -natural-hpadding: 9px; -minimum-hpadding: 9px; }
.just-perfection-api-panel-button-padding-size10 .panel-button { -natural-hpadding: 10px; -minimum-hpadding: 10px; }
.just-perfection-api-panel-button-padding-size11 .panel-button { -natural-hpadding: 11px; -minimum-hpadding: 11px; }
.just-perfection-api-panel-button-padding-size12 .panel-button { -natural-hpadding: 12px; -minimum-hpadding: 12px; }
.just-perfection-api-panel-button-padding-size13 .panel-button { -natural-hpadding: 13px; -minimum-hpadding: 13px; }
.just-perfection-api-panel-button-padding-size14 .panel-button { -natural-hpadding: 14px; -minimum-hpadding: 14px; }
.just-perfection-api-panel-button-padding-size15 .panel-button { -natural-hpadding: 15px; -minimum-hpadding: 15px; }
.just-perfection-api-panel-button-padding-size16 .panel-button { -natural-hpadding: 16px; -minimum-hpadding: 16px; }
.just-perfection-api-panel-button-padding-size17 .panel-button { -natural-hpadding: 17px; -minimum-hpadding: 17px; }
.just-perfection-api-panel-button-padding-size18 .panel-button { -natural-hpadding: 18px; -minimum-hpadding: 18px; }
.just-perfection-api-panel-button-padding-size19 .panel-button { -natural-hpadding: 19px; -minimum-hpadding: 19px; }
.just-perfection-api-panel-button-padding-size20 .panel-button { -natural-hpadding: 20px; -minimum-hpadding: 20px; }
.just-perfection-api-panel-button-padding-size21 .panel-button { -natural-hpadding: 21px; -minimum-hpadding: 21px; }
.just-perfection-api-panel-button-padding-size22 .panel-button { -natural-hpadding: 22px; -minimum-hpadding: 22px; }
.just-perfection-api-panel-button-padding-size23 .panel-button { -natural-hpadding: 23px; -minimum-hpadding: 23px; }
.just-perfection-api-panel-button-padding-size24 .panel-button { -natural-hpadding: 24px; -minimum-hpadding: 24px; }
.just-perfection-api-panel-button-padding-size25 .panel-button { -natural-hpadding: 25px; -minimum-hpadding: 25px; }
.just-perfection-api-panel-button-padding-size26 .panel-button { -natural-hpadding: 26px; -minimum-hpadding: 26px; }
.just-perfection-api-panel-button-padding-size27 .panel-button { -natural-hpadding: 27px; -minimum-hpadding: 27px; }
.just-perfection-api-panel-button-padding-size28 .panel-button { -natural-hpadding: 28px; -minimum-hpadding: 28px; }
.just-perfection-api-panel-button-padding-size29 .panel-button { -natural-hpadding: 29px; -minimum-hpadding: 29px; }
.just-perfection-api-panel-button-padding-size30 .panel-button { -natural-hpadding: 30px; -minimum-hpadding: 30px; }
.just-perfection-api-panel-button-padding-size31 .panel-button { -natural-hpadding: 31px; -minimum-hpadding: 31px; }
.just-perfection-api-panel-button-padding-size32 .panel-button { -natural-hpadding: 32px; -minimum-hpadding: 32px; }
.just-perfection-api-panel-button-padding-size33 .panel-button { -natural-hpadding: 33px; -minimum-hpadding: 33px; }
.just-perfection-api-panel-button-padding-size34 .panel-button { -natural-hpadding: 34px; -minimum-hpadding: 34px; }
.just-perfection-api-panel-button-padding-size35 .panel-button { -natural-hpadding: 35px; -minimum-hpadding: 35px; }
.just-perfection-api-panel-button-padding-size36 .panel-button { -natural-hpadding: 36px; -minimum-hpadding: 36px; }
.just-perfection-api-panel-button-padding-size37 .panel-button { -natural-hpadding: 37px; -minimum-hpadding: 37px; }
.just-perfection-api-panel-button-padding-size38 .panel-button { -natural-hpadding: 38px; -minimum-hpadding: 38px; }
.just-perfection-api-panel-button-padding-size39 .panel-button { -natural-hpadding: 39px; -minimum-hpadding: 39px; }
.just-perfection-api-panel-button-padding-size40 .panel-button { -natural-hpadding: 40px; -minimum-hpadding: 40px; }
.just-perfection-api-panel-button-padding-size41 .panel-button { -natural-hpadding: 41px; -minimum-hpadding: 41px; }
.just-perfection-api-panel-button-padding-size42 .panel-button { -natural-hpadding: 42px; -minimum-hpadding: 42px; }
.just-perfection-api-panel-button-padding-size43 .panel-button { -natural-hpadding: 43px; -minimum-hpadding: 43px; }
.just-perfection-api-panel-button-padding-size44 .panel-button { -natural-hpadding: 44px; -minimum-hpadding: 44px; }
.just-perfection-api-panel-button-padding-size45 .panel-button { -natural-hpadding: 45px; -minimum-hpadding: 45px; }
.just-perfection-api-panel-button-padding-size46 .panel-button { -natural-hpadding: 46px; -minimum-hpadding: 46px; }
.just-perfection-api-panel-button-padding-size47 .panel-button { -natural-hpadding: 47px; -minimum-hpadding: 47px; }
.just-perfection-api-panel-button-padding-size48 .panel-button { -natural-hpadding: 48px; -minimum-hpadding: 48px; }
.just-perfection-api-panel-button-padding-size49 .panel-button { -natural-hpadding: 49px; -minimum-hpadding: 49px; }
.just-perfection-api-panel-button-padding-size50 .panel-button { -natural-hpadding: 50px; -minimum-hpadding: 50px; }
.just-perfection-api-panel-button-padding-size51 .panel-button { -natural-hpadding: 51px; -minimum-hpadding: 51px; }
.just-perfection-api-panel-button-padding-size52 .panel-button { -natural-hpadding: 52px; -minimum-hpadding: 52px; }
.just-perfection-api-panel-button-padding-size53 .panel-button { -natural-hpadding: 53px; -minimum-hpadding: 53px; }
.just-perfection-api-panel-button-padding-size54 .panel-button { -natural-hpadding: 54px; -minimum-hpadding: 54px; }
.just-perfection-api-panel-button-padding-size55 .panel-button { -natural-hpadding: 55px; -minimum-hpadding: 55px; }
.just-perfection-api-panel-button-padding-size56 .panel-button { -natural-hpadding: 56px; -minimum-hpadding: 56px; }
.just-perfection-api-panel-button-padding-size57 .panel-button { -natural-hpadding: 57px; -minimum-hpadding: 57px; }
.just-perfection-api-panel-button-padding-size58 .panel-button { -natural-hpadding: 58px; -minimum-hpadding: 58px; }
.just-perfection-api-panel-button-padding-size59 .panel-button { -natural-hpadding: 59px; -minimum-hpadding: 59px; }
.just-perfection-api-panel-button-padding-size60 .panel-button { -natural-hpadding: 60px; -minimum-hpadding: 60px; }
.just-perfection-api-no-window-caption .window-caption
{
spacing: 0;
background-color: transparent;
border-radius: 0;
border: 0;
padding: 0;
font-size: 0;
}
.just-perfection-api-workspace-background-radius-size0 .workspace-background { border-radius: 0; }
.just-perfection-api-workspace-background-radius-size1 .workspace-background { border-radius: 1px; }
.just-perfection-api-workspace-background-radius-size2 .workspace-background { border-radius: 2px; }
.just-perfection-api-workspace-background-radius-size3 .workspace-background { border-radius: 3px; }
.just-perfection-api-workspace-background-radius-size4 .workspace-background { border-radius: 4px; }
.just-perfection-api-workspace-background-radius-size5 .workspace-background { border-radius: 5px; }
.just-perfection-api-workspace-background-radius-size6 .workspace-background { border-radius: 6px; }
.just-perfection-api-workspace-background-radius-size7 .workspace-background { border-radius: 7px; }
.just-perfection-api-workspace-background-radius-size8 .workspace-background { border-radius: 8px; }
.just-perfection-api-workspace-background-radius-size9 .workspace-background { border-radius: 9px; }
.just-perfection-api-workspace-background-radius-size10 .workspace-background { border-radius: 10px; }
.just-perfection-api-workspace-background-radius-size11 .workspace-background { border-radius: 11px; }
.just-perfection-api-workspace-background-radius-size12 .workspace-background { border-radius: 12px; }
.just-perfection-api-workspace-background-radius-size13 .workspace-background { border-radius: 13px; }
.just-perfection-api-workspace-background-radius-size14 .workspace-background { border-radius: 14px; }
.just-perfection-api-workspace-background-radius-size15 .workspace-background { border-radius: 15px; }
.just-perfection-api-workspace-background-radius-size16 .workspace-background { border-radius: 16px; }
.just-perfection-api-workspace-background-radius-size17 .workspace-background { border-radius: 17px; }
.just-perfection-api-workspace-background-radius-size18 .workspace-background { border-radius: 18px; }
.just-perfection-api-workspace-background-radius-size19 .workspace-background { border-radius: 19px; }
.just-perfection-api-workspace-background-radius-size20 .workspace-background { border-radius: 20px; }
.just-perfection-api-workspace-background-radius-size21 .workspace-background { border-radius: 21px; }
.just-perfection-api-workspace-background-radius-size22 .workspace-background { border-radius: 22px; }
.just-perfection-api-workspace-background-radius-size23 .workspace-background { border-radius: 23px; }
.just-perfection-api-workspace-background-radius-size24 .workspace-background { border-radius: 24px; }
.just-perfection-api-workspace-background-radius-size25 .workspace-background { border-radius: 25px; }
.just-perfection-api-workspace-background-radius-size26 .workspace-background { border-radius: 26px; }
.just-perfection-api-workspace-background-radius-size27 .workspace-background { border-radius: 27px; }
.just-perfection-api-workspace-background-radius-size28 .workspace-background { border-radius: 28px; }
.just-perfection-api-workspace-background-radius-size29 .workspace-background { border-radius: 29px; }
.just-perfection-api-workspace-background-radius-size30 .workspace-background { border-radius: 30px; }
.just-perfection-api-workspace-background-radius-size31 .workspace-background { border-radius: 31px; }
.just-perfection-api-workspace-background-radius-size32 .workspace-background { border-radius: 32px; }
.just-perfection-api-workspace-background-radius-size33 .workspace-background { border-radius: 33px; }
.just-perfection-api-workspace-background-radius-size34 .workspace-background { border-radius: 34px; }
.just-perfection-api-workspace-background-radius-size35 .workspace-background { border-radius: 35px; }
.just-perfection-api-workspace-background-radius-size36 .workspace-background { border-radius: 36px; }
.just-perfection-api-workspace-background-radius-size37 .workspace-background { border-radius: 37px; }
.just-perfection-api-workspace-background-radius-size38 .workspace-background { border-radius: 38px; }
.just-perfection-api-workspace-background-radius-size39 .workspace-background { border-radius: 39px; }
.just-perfection-api-workspace-background-radius-size40 .workspace-background { border-radius: 40px; }
.just-perfection-api-workspace-background-radius-size41 .workspace-background { border-radius: 41px; }
.just-perfection-api-workspace-background-radius-size42 .workspace-background { border-radius: 42px; }
.just-perfection-api-workspace-background-radius-size43 .workspace-background { border-radius: 43px; }
.just-perfection-api-workspace-background-radius-size44 .workspace-background { border-radius: 44px; }
.just-perfection-api-workspace-background-radius-size45 .workspace-background { border-radius: 45px; }
.just-perfection-api-workspace-background-radius-size46 .workspace-background { border-radius: 46px; }
.just-perfection-api-workspace-background-radius-size47 .workspace-background { border-radius: 47px; }
.just-perfection-api-workspace-background-radius-size48 .workspace-background { border-radius: 48px; }
.just-perfection-api-workspace-background-radius-size49 .workspace-background { border-radius: 49px; }
.just-perfection-api-workspace-background-radius-size50 .workspace-background { border-radius: 50px; }
.just-perfection-api-workspace-background-radius-size51 .workspace-background { border-radius: 51px; }
.just-perfection-api-workspace-background-radius-size52 .workspace-background { border-radius: 52px; }
.just-perfection-api-workspace-background-radius-size53 .workspace-background { border-radius: 53px; }
.just-perfection-api-workspace-background-radius-size54 .workspace-background { border-radius: 54px; }
.just-perfection-api-workspace-background-radius-size55 .workspace-background { border-radius: 55px; }
.just-perfection-api-workspace-background-radius-size56 .workspace-background { border-radius: 56px; }
.just-perfection-api-workspace-background-radius-size57 .workspace-background { border-radius: 57px; }
.just-perfection-api-workspace-background-radius-size58 .workspace-background { border-radius: 58px; }
.just-perfection-api-workspace-background-radius-size59 .workspace-background { border-radius: 59px; }
.just-perfection-api-workspace-background-radius-size60 .workspace-background { border-radius: 60px; }
.just-perfection-api-panel-indicator-padding-size0 .panel-status-indicators-box { spacing: 0; }
.just-perfection-api-panel-indicator-padding-size1 .panel-status-indicators-box { spacing: 1px; }
.just-perfection-api-panel-indicator-padding-size2 .panel-status-indicators-box { spacing: 2px; }
.just-perfection-api-panel-indicator-padding-size3 .panel-status-indicators-box { spacing: 3px; }
.just-perfection-api-panel-indicator-padding-size4 .panel-status-indicators-box { spacing: 4px; }
.just-perfection-api-panel-indicator-padding-size5 .panel-status-indicators-box { spacing: 5px; }
.just-perfection-api-panel-indicator-padding-size6 .panel-status-indicators-box { spacing: 6px; }
.just-perfection-api-panel-indicator-padding-size7 .panel-status-indicators-box { spacing: 7px; }
.just-perfection-api-panel-indicator-padding-size8 .panel-status-indicators-box { spacing: 8px; }
.just-perfection-api-panel-indicator-padding-size9 .panel-status-indicators-box { spacing: 9px; }
.just-perfection-api-panel-indicator-padding-size10 .panel-status-indicators-box { spacing: 10px; }
.just-perfection-api-panel-indicator-padding-size11 .panel-status-indicators-box { spacing: 11px; }
.just-perfection-api-panel-indicator-padding-size12 .panel-status-indicators-box { spacing: 12px; }
.just-perfection-api-panel-indicator-padding-size13 .panel-status-indicators-box { spacing: 13px; }
.just-perfection-api-panel-indicator-padding-size14 .panel-status-indicators-box { spacing: 14px; }
.just-perfection-api-panel-indicator-padding-size15 .panel-status-indicators-box { spacing: 15px; }
.just-perfection-api-panel-indicator-padding-size16 .panel-status-indicators-box { spacing: 16px; }
.just-perfection-api-panel-indicator-padding-size17 .panel-status-indicators-box { spacing: 17px; }
.just-perfection-api-panel-indicator-padding-size18 .panel-status-indicators-box { spacing: 18px; }
.just-perfection-api-panel-indicator-padding-size19 .panel-status-indicators-box { spacing: 19px; }
.just-perfection-api-panel-indicator-padding-size20 .panel-status-indicators-box { spacing: 20px; }
.just-perfection-api-panel-indicator-padding-size21 .panel-status-indicators-box { spacing: 21px; }
.just-perfection-api-panel-indicator-padding-size22 .panel-status-indicators-box { spacing: 22px; }
.just-perfection-api-panel-indicator-padding-size23 .panel-status-indicators-box { spacing: 23px; }
.just-perfection-api-panel-indicator-padding-size24 .panel-status-indicators-box { spacing: 24px; }
.just-perfection-api-panel-indicator-padding-size25 .panel-status-indicators-box { spacing: 25px; }
.just-perfection-api-panel-indicator-padding-size26 .panel-status-indicators-box { spacing: 26px; }
.just-perfection-api-panel-indicator-padding-size27 .panel-status-indicators-box { spacing: 27px; }
.just-perfection-api-panel-indicator-padding-size28 .panel-status-indicators-box { spacing: 28px; }
.just-perfection-api-panel-indicator-padding-size29 .panel-status-indicators-box { spacing: 29px; }
.just-perfection-api-panel-indicator-padding-size30 .panel-status-indicators-box { spacing: 30px; }
.just-perfection-api-panel-indicator-padding-size31 .panel-status-indicators-box { spacing: 31px; }
.just-perfection-api-panel-indicator-padding-size32 .panel-status-indicators-box { spacing: 32px; }
.just-perfection-api-panel-indicator-padding-size33 .panel-status-indicators-box { spacing: 33px; }
.just-perfection-api-panel-indicator-padding-size34 .panel-status-indicators-box { spacing: 34px; }
.just-perfection-api-panel-indicator-padding-size35 .panel-status-indicators-box { spacing: 35px; }
.just-perfection-api-panel-indicator-padding-size36 .panel-status-indicators-box { spacing: 36px; }
.just-perfection-api-panel-indicator-padding-size37 .panel-status-indicators-box { spacing: 37px; }
.just-perfection-api-panel-indicator-padding-size38 .panel-status-indicators-box { spacing: 38px; }
.just-perfection-api-panel-indicator-padding-size39 .panel-status-indicators-box { spacing: 39px; }
.just-perfection-api-panel-indicator-padding-size40 .panel-status-indicators-box { spacing: 40px; }
.just-perfection-api-panel-indicator-padding-size41 .panel-status-indicators-box { spacing: 41px; }
.just-perfection-api-panel-indicator-padding-size42 .panel-status-indicators-box { spacing: 42px; }
.just-perfection-api-panel-indicator-padding-size43 .panel-status-indicators-box { spacing: 43px; }
.just-perfection-api-panel-indicator-padding-size44 .panel-status-indicators-box { spacing: 44px; }
.just-perfection-api-panel-indicator-padding-size45 .panel-status-indicators-box { spacing: 45px; }
.just-perfection-api-panel-indicator-padding-size46 .panel-status-indicators-box { spacing: 46px; }
.just-perfection-api-panel-indicator-padding-size47 .panel-status-indicators-box { spacing: 47px; }
.just-perfection-api-panel-indicator-padding-size48 .panel-status-indicators-box { spacing: 48px; }
.just-perfection-api-panel-indicator-padding-size49 .panel-status-indicators-box { spacing: 49px; }
.just-perfection-api-panel-indicator-padding-size50 .panel-status-indicators-box { spacing: 50px; }
.just-perfection-api-panel-indicator-padding-size51 .panel-status-indicators-box { spacing: 51px; }
.just-perfection-api-panel-indicator-padding-size52 .panel-status-indicators-box { spacing: 52px; }
.just-perfection-api-panel-indicator-padding-size53 .panel-status-indicators-box { spacing: 53px; }
.just-perfection-api-panel-indicator-padding-size54 .panel-status-indicators-box { spacing: 54px; }
.just-perfection-api-panel-indicator-padding-size55 .panel-status-indicators-box { spacing: 55px; }
.just-perfection-api-panel-indicator-padding-size56 .panel-status-indicators-box { spacing: 56px; }
.just-perfection-api-panel-indicator-padding-size57 .panel-status-indicators-box { spacing: 57px; }
.just-perfection-api-panel-indicator-padding-size58 .panel-status-indicators-box { spacing: 58px; }
.just-perfection-api-panel-indicator-padding-size59 .panel-status-indicators-box { spacing: 59px; }
.just-perfection-api-panel-indicator-padding-size60 .panel-status-indicators-box { spacing: 60px; }
.just-perfection-api-no-window-close .window-close,
.just-perfection-api-no-window-close.just-perfection .window-close
{
height: 0;
width: 30px;
background: transparent;
border-radius: 0;
border: 0;
spacing: 0;
box-shadow: none;
}
.just-perfection-api-no-ripple-box .ripple-box
{
background-color: transparent;
}
/**
* This can refresh other styles that is not inculding any standard css styles.
* values are not important here. Just do something that can change the look
*/
.just-perfection-api-refresh-styles .panel-button,
.just-perfection-api-refresh-styles .panel-status-indicators-box,
.just-perfection-api-refresh-styles .panel-button StIcon,
.just-perfection-api-refresh-styles .system-status-icon
{
background-color: gold;
color: gold;
border-radius: 100px;
}
.just-perfection-api-no-weather .weather-button,
.just-perfection-api-no-weather .weather-button *,
.just-perfection-api-no-events-button .events-button,
.just-perfection-api-no-events-button .events-button *,
.just-perfection-api-no-screen-sharing-indicator .screen-sharing-indicator,
.just-perfection-api-no-screen-sharing-indicator .screen-sharing-indicator *,
.just-perfection-api-no-screen-recording-indicator .screen-recording-indicator,
.just-perfection-api-no-screen-recording-indicator .screen-recording-indicator *
{
padding: 0;
margin: 0;
border: 0;
height: 0;
width: 0;
}
.just-perfection-api-panel-icon-size1 .system-status-icon, .just-perfection-api-panel-icon-size1 .panel-button StIcon { icon-size: 1px; }
.just-perfection-api-panel-icon-size2 .system-status-icon, .just-perfection-api-panel-icon-size2 .panel-button StIcon { icon-size: 2px; }
.just-perfection-api-panel-icon-size3 .system-status-icon, .just-perfection-api-panel-icon-size3 .panel-button StIcon { icon-size: 3px; }
.just-perfection-api-panel-icon-size4 .system-status-icon, .just-perfection-api-panel-icon-size4 .panel-button StIcon { icon-size: 4px; }
.just-perfection-api-panel-icon-size5 .system-status-icon, .just-perfection-api-panel-icon-size5 .panel-button StIcon { icon-size: 5px; }
.just-perfection-api-panel-icon-size6 .system-status-icon, .just-perfection-api-panel-icon-size6 .panel-button StIcon { icon-size: 6px; }
.just-perfection-api-panel-icon-size7 .system-status-icon, .just-perfection-api-panel-icon-size7 .panel-button StIcon { icon-size: 7px; }
.just-perfection-api-panel-icon-size8 .system-status-icon, .just-perfection-api-panel-icon-size8 .panel-button StIcon { icon-size: 8px; }
.just-perfection-api-panel-icon-size9 .system-status-icon, .just-perfection-api-panel-icon-size9 .panel-button StIcon { icon-size: 9px; }
.just-perfection-api-panel-icon-size10 .system-status-icon, .just-perfection-api-panel-icon-size10 .panel-button StIcon { icon-size: 10px; }
.just-perfection-api-panel-icon-size11 .system-status-icon, .just-perfection-api-panel-icon-size11 .panel-button StIcon { icon-size: 11px; }
.just-perfection-api-panel-icon-size12 .system-status-icon, .just-perfection-api-panel-icon-size12 .panel-button StIcon { icon-size: 12px; }
.just-perfection-api-panel-icon-size13 .system-status-icon, .just-perfection-api-panel-icon-size13 .panel-button StIcon { icon-size: 13px; }
.just-perfection-api-panel-icon-size14 .system-status-icon, .just-perfection-api-panel-icon-size14 .panel-button StIcon { icon-size: 14px; }
.just-perfection-api-panel-icon-size15 .system-status-icon, .just-perfection-api-panel-icon-size15 .panel-button StIcon { icon-size: 15px; }
.just-perfection-api-panel-icon-size16 .system-status-icon, .just-perfection-api-panel-icon-size16 .panel-button StIcon { icon-size: 16px; }
.just-perfection-api-panel-icon-size17 .system-status-icon, .just-perfection-api-panel-icon-size17 .panel-button StIcon { icon-size: 17px; }
.just-perfection-api-panel-icon-size18 .system-status-icon, .just-perfection-api-panel-icon-size18 .panel-button StIcon { icon-size: 18px; }
.just-perfection-api-panel-icon-size19 .system-status-icon, .just-perfection-api-panel-icon-size19 .panel-button StIcon { icon-size: 19px; }
.just-perfection-api-panel-icon-size20 .system-status-icon, .just-perfection-api-panel-icon-size20 .panel-button StIcon { icon-size: 20px; }
.just-perfection-api-panel-icon-size21 .system-status-icon, .just-perfection-api-panel-icon-size21 .panel-button StIcon { icon-size: 21px; }
.just-perfection-api-panel-icon-size22 .system-status-icon, .just-perfection-api-panel-icon-size22 .panel-button StIcon { icon-size: 22px; }
.just-perfection-api-panel-icon-size23 .system-status-icon, .just-perfection-api-panel-icon-size23 .panel-button StIcon { icon-size: 23px; }
.just-perfection-api-panel-icon-size24 .system-status-icon, .just-perfection-api-panel-icon-size24 .panel-button StIcon { icon-size: 24px; }
.just-perfection-api-panel-icon-size25 .system-status-icon, .just-perfection-api-panel-icon-size25 .panel-button StIcon { icon-size: 25px; }
.just-perfection-api-panel-icon-size26 .system-status-icon, .just-perfection-api-panel-icon-size26 .panel-button StIcon { icon-size: 26px; }
.just-perfection-api-panel-icon-size27 .system-status-icon, .just-perfection-api-panel-icon-size27 .panel-button StIcon { icon-size: 27px; }
.just-perfection-api-panel-icon-size28 .system-status-icon, .just-perfection-api-panel-icon-size28 .panel-button StIcon { icon-size: 28px; }
.just-perfection-api-panel-icon-size29 .system-status-icon, .just-perfection-api-panel-icon-size29 .panel-button StIcon { icon-size: 29px; }
.just-perfection-api-panel-icon-size30 .system-status-icon, .just-perfection-api-panel-icon-size30 .panel-button StIcon { icon-size: 30px; }
.just-perfection-api-panel-icon-size31 .system-status-icon, .just-perfection-api-panel-icon-size31 .panel-button StIcon { icon-size: 31px; }
.just-perfection-api-panel-icon-size32 .system-status-icon, .just-perfection-api-panel-icon-size32 .panel-button StIcon { icon-size: 32px; }
.just-perfection-api-panel-icon-size33 .system-status-icon, .just-perfection-api-panel-icon-size33 .panel-button StIcon { icon-size: 33px; }
.just-perfection-api-panel-icon-size34 .system-status-icon, .just-perfection-api-panel-icon-size34 .panel-button StIcon { icon-size: 34px; }
.just-perfection-api-panel-icon-size35 .system-status-icon, .just-perfection-api-panel-icon-size35 .panel-button StIcon { icon-size: 35px; }
.just-perfection-api-panel-icon-size36 .system-status-icon, .just-perfection-api-panel-icon-size36 .panel-button StIcon { icon-size: 36px; }
.just-perfection-api-panel-icon-size37 .system-status-icon, .just-perfection-api-panel-icon-size37 .panel-button StIcon { icon-size: 37px; }
.just-perfection-api-panel-icon-size38 .system-status-icon, .just-perfection-api-panel-icon-size38 .panel-button StIcon { icon-size: 38px; }
.just-perfection-api-panel-icon-size39 .system-status-icon, .just-perfection-api-panel-icon-size39 .panel-button StIcon { icon-size: 39px; }
.just-perfection-api-panel-icon-size40 .system-status-icon, .just-perfection-api-panel-icon-size40 .panel-button StIcon { icon-size: 40px; }
.just-perfection-api-panel-icon-size41 .system-status-icon, .just-perfection-api-panel-icon-size41 .panel-button StIcon { icon-size: 41px; }
.just-perfection-api-panel-icon-size42 .system-status-icon, .just-perfection-api-panel-icon-size42 .panel-button StIcon { icon-size: 42px; }
.just-perfection-api-panel-icon-size43 .system-status-icon, .just-perfection-api-panel-icon-size43 .panel-button StIcon { icon-size: 43px; }
.just-perfection-api-panel-icon-size44 .system-status-icon, .just-perfection-api-panel-icon-size44 .panel-button StIcon { icon-size: 44px; }
.just-perfection-api-panel-icon-size45 .system-status-icon, .just-perfection-api-panel-icon-size45 .panel-button StIcon { icon-size: 45px; }
.just-perfection-api-panel-icon-size46 .system-status-icon, .just-perfection-api-panel-icon-size46 .panel-button StIcon { icon-size: 46px; }
.just-perfection-api-panel-icon-size47 .system-status-icon, .just-perfection-api-panel-icon-size47 .panel-button StIcon { icon-size: 47px; }
.just-perfection-api-panel-icon-size48 .system-status-icon, .just-perfection-api-panel-icon-size48 .panel-button StIcon { icon-size: 48px; }
.just-perfection-api-panel-icon-size49 .system-status-icon, .just-perfection-api-panel-icon-size49 .panel-button StIcon { icon-size: 49px; }
.just-perfection-api-panel-icon-size50 .system-status-icon, .just-perfection-api-panel-icon-size50 .panel-button StIcon { icon-size: 50px; }
.just-perfection-api-panel-icon-size51 .system-status-icon, .just-perfection-api-panel-icon-size51 .panel-button StIcon { icon-size: 51px; }
.just-perfection-api-panel-icon-size52 .system-status-icon, .just-perfection-api-panel-icon-size52 .panel-button StIcon { icon-size: 52px; }
.just-perfection-api-panel-icon-size53 .system-status-icon, .just-perfection-api-panel-icon-size53 .panel-button StIcon { icon-size: 53px; }
.just-perfection-api-panel-icon-size54 .system-status-icon, .just-perfection-api-panel-icon-size54 .panel-button StIcon { icon-size: 54px; }
.just-perfection-api-panel-icon-size55 .system-status-icon, .just-perfection-api-panel-icon-size55 .panel-button StIcon { icon-size: 55px; }
.just-perfection-api-panel-icon-size56 .system-status-icon, .just-perfection-api-panel-icon-size56 .panel-button StIcon { icon-size: 56px; }
.just-perfection-api-panel-icon-size57 .system-status-icon, .just-perfection-api-panel-icon-size57 .panel-button StIcon { icon-size: 57px; }
.just-perfection-api-panel-icon-size58 .system-status-icon, .just-perfection-api-panel-icon-size58 .panel-button StIcon { icon-size: 58px; }
.just-perfection-api-panel-icon-size59 .system-status-icon, .just-perfection-api-panel-icon-size59 .panel-button StIcon { icon-size: 59px; }
.just-perfection-api-panel-icon-size60 .system-status-icon, .just-perfection-api-panel-icon-size60 .panel-button StIcon { icon-size: 60px; }
.just-perfection-api-controls-manager-spacing-size0 .controls-manager, .just-perfection-api-controls-manager-spacing-size0 .secondary-monitor-workspaces { spacing: 0; }
.just-perfection-api-controls-manager-spacing-size1 .controls-manager, .just-perfection-api-controls-manager-spacing-size1 .secondary-monitor-workspaces { spacing: 1px; }
.just-perfection-api-controls-manager-spacing-size2 .controls-manager, .just-perfection-api-controls-manager-spacing-size2 .secondary-monitor-workspaces { spacing: 2px; }
.just-perfection-api-controls-manager-spacing-size3 .controls-manager, .just-perfection-api-controls-manager-spacing-size3 .secondary-monitor-workspaces { spacing: 3px; }
.just-perfection-api-controls-manager-spacing-size4 .controls-manager, .just-perfection-api-controls-manager-spacing-size4 .secondary-monitor-workspaces { spacing: 4px; }
.just-perfection-api-controls-manager-spacing-size5 .controls-manager, .just-perfection-api-controls-manager-spacing-size5 .secondary-monitor-workspaces { spacing: 5px; }
.just-perfection-api-controls-manager-spacing-size6 .controls-manager, .just-perfection-api-controls-manager-spacing-size6 .secondary-monitor-workspaces { spacing: 6px; }
.just-perfection-api-controls-manager-spacing-size7 .controls-manager, .just-perfection-api-controls-manager-spacing-size7 .secondary-monitor-workspaces { spacing: 7px; }
.just-perfection-api-controls-manager-spacing-size8 .controls-manager, .just-perfection-api-controls-manager-spacing-size8 .secondary-monitor-workspaces { spacing: 8px; }
.just-perfection-api-controls-manager-spacing-size9 .controls-manager, .just-perfection-api-controls-manager-spacing-size9 .secondary-monitor-workspaces { spacing: 9px; }
.just-perfection-api-controls-manager-spacing-size10 .controls-manager, .just-perfection-api-controls-manager-spacing-size10 .secondary-monitor-workspaces { spacing: 10px; }
.just-perfection-api-controls-manager-spacing-size11 .controls-manager, .just-perfection-api-controls-manager-spacing-size11 .secondary-monitor-workspaces { spacing: 11px; }
.just-perfection-api-controls-manager-spacing-size12 .controls-manager, .just-perfection-api-controls-manager-spacing-size12 .secondary-monitor-workspaces { spacing: 12px; }
.just-perfection-api-controls-manager-spacing-size13 .controls-manager, .just-perfection-api-controls-manager-spacing-size13 .secondary-monitor-workspaces { spacing: 13px; }
.just-perfection-api-controls-manager-spacing-size14 .controls-manager, .just-perfection-api-controls-manager-spacing-size14 .secondary-monitor-workspaces { spacing: 14px; }
.just-perfection-api-controls-manager-spacing-size15 .controls-manager, .just-perfection-api-controls-manager-spacing-size15 .secondary-monitor-workspaces { spacing: 15px; }
.just-perfection-api-controls-manager-spacing-size16 .controls-manager, .just-perfection-api-controls-manager-spacing-size16 .secondary-monitor-workspaces { spacing: 16px; }
.just-perfection-api-controls-manager-spacing-size17 .controls-manager, .just-perfection-api-controls-manager-spacing-size17 .secondary-monitor-workspaces { spacing: 17px; }
.just-perfection-api-controls-manager-spacing-size18 .controls-manager, .just-perfection-api-controls-manager-spacing-size18 .secondary-monitor-workspaces { spacing: 18px; }
.just-perfection-api-controls-manager-spacing-size19 .controls-manager, .just-perfection-api-controls-manager-spacing-size19 .secondary-monitor-workspaces { spacing: 19px; }
.just-perfection-api-controls-manager-spacing-size20 .controls-manager, .just-perfection-api-controls-manager-spacing-size20 .secondary-monitor-workspaces { spacing: 20px; }
.just-perfection-api-controls-manager-spacing-size21 .controls-manager, .just-perfection-api-controls-manager-spacing-size21 .secondary-monitor-workspaces { spacing: 21px; }
.just-perfection-api-controls-manager-spacing-size22 .controls-manager, .just-perfection-api-controls-manager-spacing-size22 .secondary-monitor-workspaces { spacing: 22px; }
.just-perfection-api-controls-manager-spacing-size23 .controls-manager, .just-perfection-api-controls-manager-spacing-size23 .secondary-monitor-workspaces { spacing: 23px; }
.just-perfection-api-controls-manager-spacing-size24 .controls-manager, .just-perfection-api-controls-manager-spacing-size24 .secondary-monitor-workspaces { spacing: 24px; }
.just-perfection-api-controls-manager-spacing-size25 .controls-manager, .just-perfection-api-controls-manager-spacing-size25 .secondary-monitor-workspaces { spacing: 25px; }
.just-perfection-api-controls-manager-spacing-size26 .controls-manager, .just-perfection-api-controls-manager-spacing-size26 .secondary-monitor-workspaces { spacing: 26px; }
.just-perfection-api-controls-manager-spacing-size27 .controls-manager, .just-perfection-api-controls-manager-spacing-size27 .secondary-monitor-workspaces { spacing: 27px; }
.just-perfection-api-controls-manager-spacing-size28 .controls-manager, .just-perfection-api-controls-manager-spacing-size28 .secondary-monitor-workspaces { spacing: 28px; }
.just-perfection-api-controls-manager-spacing-size29 .controls-manager, .just-perfection-api-controls-manager-spacing-size29 .secondary-monitor-workspaces { spacing: 29px; }
.just-perfection-api-controls-manager-spacing-size30 .controls-manager, .just-perfection-api-controls-manager-spacing-size30 .secondary-monitor-workspaces { spacing: 30px; }
.just-perfection-api-controls-manager-spacing-size31 .controls-manager, .just-perfection-api-controls-manager-spacing-size31 .secondary-monitor-workspaces { spacing: 31px; }
.just-perfection-api-controls-manager-spacing-size32 .controls-manager, .just-perfection-api-controls-manager-spacing-size32 .secondary-monitor-workspaces { spacing: 32px; }
.just-perfection-api-controls-manager-spacing-size33 .controls-manager, .just-perfection-api-controls-manager-spacing-size33 .secondary-monitor-workspaces { spacing: 33px; }
.just-perfection-api-controls-manager-spacing-size34 .controls-manager, .just-perfection-api-controls-manager-spacing-size34 .secondary-monitor-workspaces { spacing: 34px; }
.just-perfection-api-controls-manager-spacing-size35 .controls-manager, .just-perfection-api-controls-manager-spacing-size35 .secondary-monitor-workspaces { spacing: 35px; }
.just-perfection-api-controls-manager-spacing-size36 .controls-manager, .just-perfection-api-controls-manager-spacing-size36 .secondary-monitor-workspaces { spacing: 36px; }
.just-perfection-api-controls-manager-spacing-size37 .controls-manager, .just-perfection-api-controls-manager-spacing-size37 .secondary-monitor-workspaces { spacing: 37px; }
.just-perfection-api-controls-manager-spacing-size38 .controls-manager, .just-perfection-api-controls-manager-spacing-size38 .secondary-monitor-workspaces { spacing: 38px; }
.just-perfection-api-controls-manager-spacing-size39 .controls-manager, .just-perfection-api-controls-manager-spacing-size39 .secondary-monitor-workspaces { spacing: 39px; }
.just-perfection-api-controls-manager-spacing-size40 .controls-manager, .just-perfection-api-controls-manager-spacing-size40 .secondary-monitor-workspaces { spacing: 40px; }
.just-perfection-api-controls-manager-spacing-size41 .controls-manager, .just-perfection-api-controls-manager-spacing-size41 .secondary-monitor-workspaces { spacing: 41px; }
.just-perfection-api-controls-manager-spacing-size42 .controls-manager, .just-perfection-api-controls-manager-spacing-size42 .secondary-monitor-workspaces { spacing: 42px; }
.just-perfection-api-controls-manager-spacing-size43 .controls-manager, .just-perfection-api-controls-manager-spacing-size43 .secondary-monitor-workspaces { spacing: 43px; }
.just-perfection-api-controls-manager-spacing-size44 .controls-manager, .just-perfection-api-controls-manager-spacing-size44 .secondary-monitor-workspaces { spacing: 44px; }
.just-perfection-api-controls-manager-spacing-size45 .controls-manager, .just-perfection-api-controls-manager-spacing-size45 .secondary-monitor-workspaces { spacing: 45px; }
.just-perfection-api-controls-manager-spacing-size46 .controls-manager, .just-perfection-api-controls-manager-spacing-size46 .secondary-monitor-workspaces { spacing: 46px; }
.just-perfection-api-controls-manager-spacing-size47 .controls-manager, .just-perfection-api-controls-manager-spacing-size47 .secondary-monitor-workspaces { spacing: 47px; }
.just-perfection-api-controls-manager-spacing-size48 .controls-manager, .just-perfection-api-controls-manager-spacing-size48 .secondary-monitor-workspaces { spacing: 48px; }
.just-perfection-api-controls-manager-spacing-size49 .controls-manager, .just-perfection-api-controls-manager-spacing-size49 .secondary-monitor-workspaces { spacing: 49px; }
.just-perfection-api-controls-manager-spacing-size50 .controls-manager, .just-perfection-api-controls-manager-spacing-size50 .secondary-monitor-workspaces { spacing: 50px; }
.just-perfection-api-controls-manager-spacing-size51 .controls-manager, .just-perfection-api-controls-manager-spacing-size51 .secondary-monitor-workspaces { spacing: 51px; }
.just-perfection-api-controls-manager-spacing-size52 .controls-manager, .just-perfection-api-controls-manager-spacing-size52 .secondary-monitor-workspaces { spacing: 52px; }
.just-perfection-api-controls-manager-spacing-size53 .controls-manager, .just-perfection-api-controls-manager-spacing-size53 .secondary-monitor-workspaces { spacing: 53px; }
.just-perfection-api-controls-manager-spacing-size54 .controls-manager, .just-perfection-api-controls-manager-spacing-size54 .secondary-monitor-workspaces { spacing: 54px; }
.just-perfection-api-controls-manager-spacing-size55 .controls-manager, .just-perfection-api-controls-manager-spacing-size55 .secondary-monitor-workspaces { spacing: 55px; }
.just-perfection-api-controls-manager-spacing-size56 .controls-manager, .just-perfection-api-controls-manager-spacing-size56 .secondary-monitor-workspaces { spacing: 56px; }
.just-perfection-api-controls-manager-spacing-size57 .controls-manager, .just-perfection-api-controls-manager-spacing-size57 .secondary-monitor-workspaces { spacing: 57px; }
.just-perfection-api-controls-manager-spacing-size58 .controls-manager, .just-perfection-api-controls-manager-spacing-size58 .secondary-monitor-workspaces { spacing: 58px; }
.just-perfection-api-controls-manager-spacing-size59 .controls-manager, .just-perfection-api-controls-manager-spacing-size59 .secondary-monitor-workspaces { spacing: 59px; }
.just-perfection-api-controls-manager-spacing-size60 .controls-manager, .just-perfection-api-controls-manager-spacing-size60 .secondary-monitor-workspaces { spacing: 60px; }
.just-perfection-api-controls-manager-spacing-size61 .controls-manager, .just-perfection-api-controls-manager-spacing-size61 .secondary-monitor-workspaces { spacing: 61px; }
.just-perfection-api-controls-manager-spacing-size62 .controls-manager, .just-perfection-api-controls-manager-spacing-size62 .secondary-monitor-workspaces { spacing: 62px; }
.just-perfection-api-controls-manager-spacing-size63 .controls-manager, .just-perfection-api-controls-manager-spacing-size63 .secondary-monitor-workspaces { spacing: 63px; }
.just-perfection-api-controls-manager-spacing-size64 .controls-manager, .just-perfection-api-controls-manager-spacing-size64 .secondary-monitor-workspaces { spacing: 64px; }
.just-perfection-api-controls-manager-spacing-size65 .controls-manager, .just-perfection-api-controls-manager-spacing-size65 .secondary-monitor-workspaces { spacing: 65px; }
.just-perfection-api-controls-manager-spacing-size66 .controls-manager, .just-perfection-api-controls-manager-spacing-size66 .secondary-monitor-workspaces { spacing: 66px; }
.just-perfection-api-controls-manager-spacing-size67 .controls-manager, .just-perfection-api-controls-manager-spacing-size67 .secondary-monitor-workspaces { spacing: 67px; }
.just-perfection-api-controls-manager-spacing-size68 .controls-manager, .just-perfection-api-controls-manager-spacing-size68 .secondary-monitor-workspaces { spacing: 68px; }
.just-perfection-api-controls-manager-spacing-size69 .controls-manager, .just-perfection-api-controls-manager-spacing-size69 .secondary-monitor-workspaces { spacing: 69px; }
.just-perfection-api-controls-manager-spacing-size70 .controls-manager, .just-perfection-api-controls-manager-spacing-size70 .secondary-monitor-workspaces { spacing: 70px; }
.just-perfection-api-controls-manager-spacing-size71 .controls-manager, .just-perfection-api-controls-manager-spacing-size71 .secondary-monitor-workspaces { spacing: 71px; }
.just-perfection-api-controls-manager-spacing-size72 .controls-manager, .just-perfection-api-controls-manager-spacing-size72 .secondary-monitor-workspaces { spacing: 72px; }
.just-perfection-api-controls-manager-spacing-size73 .controls-manager, .just-perfection-api-controls-manager-spacing-size73 .secondary-monitor-workspaces { spacing: 73px; }
.just-perfection-api-controls-manager-spacing-size74 .controls-manager, .just-perfection-api-controls-manager-spacing-size74 .secondary-monitor-workspaces { spacing: 74px; }
.just-perfection-api-controls-manager-spacing-size75 .controls-manager, .just-perfection-api-controls-manager-spacing-size75 .secondary-monitor-workspaces { spacing: 75px; }
.just-perfection-api-controls-manager-spacing-size76 .controls-manager, .just-perfection-api-controls-manager-spacing-size76 .secondary-monitor-workspaces { spacing: 76px; }
.just-perfection-api-controls-manager-spacing-size77 .controls-manager, .just-perfection-api-controls-manager-spacing-size77 .secondary-monitor-workspaces { spacing: 77px; }
.just-perfection-api-controls-manager-spacing-size78 .controls-manager, .just-perfection-api-controls-manager-spacing-size78 .secondary-monitor-workspaces { spacing: 78px; }
.just-perfection-api-controls-manager-spacing-size79 .controls-manager, .just-perfection-api-controls-manager-spacing-size79 .secondary-monitor-workspaces { spacing: 79px; }
.just-perfection-api-controls-manager-spacing-size80 .controls-manager, .just-perfection-api-controls-manager-spacing-size80 .secondary-monitor-workspaces { spacing: 80px; }
.just-perfection-api-controls-manager-spacing-size81 .controls-manager, .just-perfection-api-controls-manager-spacing-size81 .secondary-monitor-workspaces { spacing: 81px; }
.just-perfection-api-controls-manager-spacing-size82 .controls-manager, .just-perfection-api-controls-manager-spacing-size82 .secondary-monitor-workspaces { spacing: 82px; }
.just-perfection-api-controls-manager-spacing-size83 .controls-manager, .just-perfection-api-controls-manager-spacing-size83 .secondary-monitor-workspaces { spacing: 83px; }
.just-perfection-api-controls-manager-spacing-size84 .controls-manager, .just-perfection-api-controls-manager-spacing-size84 .secondary-monitor-workspaces { spacing: 84px; }
.just-perfection-api-controls-manager-spacing-size85 .controls-manager, .just-perfection-api-controls-manager-spacing-size85 .secondary-monitor-workspaces { spacing: 85px; }
.just-perfection-api-controls-manager-spacing-size86 .controls-manager, .just-perfection-api-controls-manager-spacing-size86 .secondary-monitor-workspaces { spacing: 86px; }
.just-perfection-api-controls-manager-spacing-size87 .controls-manager, .just-perfection-api-controls-manager-spacing-size87 .secondary-monitor-workspaces { spacing: 87px; }
.just-perfection-api-controls-manager-spacing-size88 .controls-manager, .just-perfection-api-controls-manager-spacing-size88 .secondary-monitor-workspaces { spacing: 88px; }
.just-perfection-api-controls-manager-spacing-size89 .controls-manager, .just-perfection-api-controls-manager-spacing-size89 .secondary-monitor-workspaces { spacing: 89px; }
.just-perfection-api-controls-manager-spacing-size90 .controls-manager, .just-perfection-api-controls-manager-spacing-size90 .secondary-monitor-workspaces { spacing: 90px; }
.just-perfection-api-controls-manager-spacing-size91 .controls-manager, .just-perfection-api-controls-manager-spacing-size91 .secondary-monitor-workspaces { spacing: 91px; }
.just-perfection-api-controls-manager-spacing-size92 .controls-manager, .just-perfection-api-controls-manager-spacing-size92 .secondary-monitor-workspaces { spacing: 92px; }
.just-perfection-api-controls-manager-spacing-size93 .controls-manager, .just-perfection-api-controls-manager-spacing-size93 .secondary-monitor-workspaces { spacing: 93px; }
.just-perfection-api-controls-manager-spacing-size94 .controls-manager, .just-perfection-api-controls-manager-spacing-size94 .secondary-monitor-workspaces { spacing: 94px; }
.just-perfection-api-controls-manager-spacing-size95 .controls-manager, .just-perfection-api-controls-manager-spacing-size95 .secondary-monitor-workspaces { spacing: 95px; }
.just-perfection-api-controls-manager-spacing-size96 .controls-manager, .just-perfection-api-controls-manager-spacing-size96 .secondary-monitor-workspaces { spacing: 96px; }
.just-perfection-api-controls-manager-spacing-size97 .controls-manager, .just-perfection-api-controls-manager-spacing-size97 .secondary-monitor-workspaces { spacing: 97px; }
.just-perfection-api-controls-manager-spacing-size98 .controls-manager, .just-perfection-api-controls-manager-spacing-size98 .secondary-monitor-workspaces { spacing: 98px; }
.just-perfection-api-controls-manager-spacing-size99 .controls-manager, .just-perfection-api-controls-manager-spacing-size99 .secondary-monitor-workspaces { spacing: 99px; }
.just-perfection-api-controls-manager-spacing-size100 .controls-manager, .just-perfection-api-controls-manager-spacing-size100 .secondary-monitor-workspaces { spacing: 100px; }
.just-perfection-api-controls-manager-spacing-size101 .controls-manager, .just-perfection-api-controls-manager-spacing-size101 .secondary-monitor-workspaces { spacing: 101px; }
.just-perfection-api-controls-manager-spacing-size102 .controls-manager, .just-perfection-api-controls-manager-spacing-size102 .secondary-monitor-workspaces { spacing: 102px; }
.just-perfection-api-controls-manager-spacing-size103 .controls-manager, .just-perfection-api-controls-manager-spacing-size103 .secondary-monitor-workspaces { spacing: 103px; }
.just-perfection-api-controls-manager-spacing-size104 .controls-manager, .just-perfection-api-controls-manager-spacing-size104 .secondary-monitor-workspaces { spacing: 104px; }
.just-perfection-api-controls-manager-spacing-size105 .controls-manager, .just-perfection-api-controls-manager-spacing-size105 .secondary-monitor-workspaces { spacing: 105px; }
.just-perfection-api-controls-manager-spacing-size106 .controls-manager, .just-perfection-api-controls-manager-spacing-size106 .secondary-monitor-workspaces { spacing: 106px; }
.just-perfection-api-controls-manager-spacing-size107 .controls-manager, .just-perfection-api-controls-manager-spacing-size107 .secondary-monitor-workspaces { spacing: 107px; }
.just-perfection-api-controls-manager-spacing-size108 .controls-manager, .just-perfection-api-controls-manager-spacing-size108 .secondary-monitor-workspaces { spacing: 108px; }
.just-perfection-api-controls-manager-spacing-size109 .controls-manager, .just-perfection-api-controls-manager-spacing-size109 .secondary-monitor-workspaces { spacing: 109px; }
.just-perfection-api-controls-manager-spacing-size110 .controls-manager, .just-perfection-api-controls-manager-spacing-size110 .secondary-monitor-workspaces { spacing: 110px; }
.just-perfection-api-controls-manager-spacing-size111 .controls-manager, .just-perfection-api-controls-manager-spacing-size111 .secondary-monitor-workspaces { spacing: 111px; }
.just-perfection-api-controls-manager-spacing-size112 .controls-manager, .just-perfection-api-controls-manager-spacing-size112 .secondary-monitor-workspaces { spacing: 112px; }
.just-perfection-api-controls-manager-spacing-size113 .controls-manager, .just-perfection-api-controls-manager-spacing-size113 .secondary-monitor-workspaces { spacing: 113px; }
.just-perfection-api-controls-manager-spacing-size114 .controls-manager, .just-perfection-api-controls-manager-spacing-size114 .secondary-monitor-workspaces { spacing: 114px; }
.just-perfection-api-controls-manager-spacing-size115 .controls-manager, .just-perfection-api-controls-manager-spacing-size115 .secondary-monitor-workspaces { spacing: 115px; }
.just-perfection-api-controls-manager-spacing-size116 .controls-manager, .just-perfection-api-controls-manager-spacing-size116 .secondary-monitor-workspaces { spacing: 116px; }
.just-perfection-api-controls-manager-spacing-size117 .controls-manager, .just-perfection-api-controls-manager-spacing-size117 .secondary-monitor-workspaces { spacing: 117px; }
.just-perfection-api-controls-manager-spacing-size118 .controls-manager, .just-perfection-api-controls-manager-spacing-size118 .secondary-monitor-workspaces { spacing: 118px; }
.just-perfection-api-controls-manager-spacing-size119 .controls-manager, .just-perfection-api-controls-manager-spacing-size119 .secondary-monitor-workspaces { spacing: 119px; }
.just-perfection-api-controls-manager-spacing-size120 .controls-manager, .just-perfection-api-controls-manager-spacing-size120 .secondary-monitor-workspaces { spacing: 120px; }
.just-perfection-api-controls-manager-spacing-size121 .controls-manager, .just-perfection-api-controls-manager-spacing-size121 .secondary-monitor-workspaces { spacing: 121px; }
.just-perfection-api-controls-manager-spacing-size122 .controls-manager, .just-perfection-api-controls-manager-spacing-size122 .secondary-monitor-workspaces { spacing: 122px; }
.just-perfection-api-controls-manager-spacing-size123 .controls-manager, .just-perfection-api-controls-manager-spacing-size123 .secondary-monitor-workspaces { spacing: 123px; }
.just-perfection-api-controls-manager-spacing-size124 .controls-manager, .just-perfection-api-controls-manager-spacing-size124 .secondary-monitor-workspaces { spacing: 124px; }
.just-perfection-api-controls-manager-spacing-size125 .controls-manager, .just-perfection-api-controls-manager-spacing-size125 .secondary-monitor-workspaces { spacing: 125px; }
.just-perfection-api-controls-manager-spacing-size126 .controls-manager, .just-perfection-api-controls-manager-spacing-size126 .secondary-monitor-workspaces { spacing: 126px; }
.just-perfection-api-controls-manager-spacing-size127 .controls-manager, .just-perfection-api-controls-manager-spacing-size127 .secondary-monitor-workspaces { spacing: 127px; }
.just-perfection-api-controls-manager-spacing-size128 .controls-manager, .just-perfection-api-controls-manager-spacing-size128 .secondary-monitor-workspaces { spacing: 128px; }
.just-perfection-api-controls-manager-spacing-size129 .controls-manager, .just-perfection-api-controls-manager-spacing-size129 .secondary-monitor-workspaces { spacing: 129px; }
.just-perfection-api-controls-manager-spacing-size130 .controls-manager, .just-perfection-api-controls-manager-spacing-size130 .secondary-monitor-workspaces { spacing: 130px; }
.just-perfection-api-controls-manager-spacing-size131 .controls-manager, .just-perfection-api-controls-manager-spacing-size131 .secondary-monitor-workspaces { spacing: 131px; }
.just-perfection-api-controls-manager-spacing-size132 .controls-manager, .just-perfection-api-controls-manager-spacing-size132 .secondary-monitor-workspaces { spacing: 132px; }
.just-perfection-api-controls-manager-spacing-size133 .controls-manager, .just-perfection-api-controls-manager-spacing-size133 .secondary-monitor-workspaces { spacing: 133px; }
.just-perfection-api-controls-manager-spacing-size134 .controls-manager, .just-perfection-api-controls-manager-spacing-size134 .secondary-monitor-workspaces { spacing: 134px; }
.just-perfection-api-controls-manager-spacing-size135 .controls-manager, .just-perfection-api-controls-manager-spacing-size135 .secondary-monitor-workspaces { spacing: 135px; }
.just-perfection-api-controls-manager-spacing-size136 .controls-manager, .just-perfection-api-controls-manager-spacing-size136 .secondary-monitor-workspaces { spacing: 136px; }
.just-perfection-api-controls-manager-spacing-size137 .controls-manager, .just-perfection-api-controls-manager-spacing-size137 .secondary-monitor-workspaces { spacing: 137px; }
.just-perfection-api-controls-manager-spacing-size138 .controls-manager, .just-perfection-api-controls-manager-spacing-size138 .secondary-monitor-workspaces { spacing: 138px; }
.just-perfection-api-controls-manager-spacing-size139 .controls-manager, .just-perfection-api-controls-manager-spacing-size139 .secondary-monitor-workspaces { spacing: 139px; }
.just-perfection-api-controls-manager-spacing-size140 .controls-manager, .just-perfection-api-controls-manager-spacing-size140 .secondary-monitor-workspaces { spacing: 140px; }
.just-perfection-api-controls-manager-spacing-size141 .controls-manager, .just-perfection-api-controls-manager-spacing-size141 .secondary-monitor-workspaces { spacing: 141px; }
.just-perfection-api-controls-manager-spacing-size142 .controls-manager, .just-perfection-api-controls-manager-spacing-size142 .secondary-monitor-workspaces { spacing: 142px; }
.just-perfection-api-controls-manager-spacing-size143 .controls-manager, .just-perfection-api-controls-manager-spacing-size143 .secondary-monitor-workspaces { spacing: 143px; }
.just-perfection-api-controls-manager-spacing-size144 .controls-manager, .just-perfection-api-controls-manager-spacing-size144 .secondary-monitor-workspaces { spacing: 144px; }
.just-perfection-api-controls-manager-spacing-size145 .controls-manager, .just-perfection-api-controls-manager-spacing-size145 .secondary-monitor-workspaces { spacing: 145px; }
.just-perfection-api-controls-manager-spacing-size146 .controls-manager, .just-perfection-api-controls-manager-spacing-size146 .secondary-monitor-workspaces { spacing: 146px; }
.just-perfection-api-controls-manager-spacing-size147 .controls-manager, .just-perfection-api-controls-manager-spacing-size147 .secondary-monitor-workspaces { spacing: 147px; }
.just-perfection-api-controls-manager-spacing-size148 .controls-manager, .just-perfection-api-controls-manager-spacing-size148 .secondary-monitor-workspaces { spacing: 148px; }
.just-perfection-api-controls-manager-spacing-size149 .controls-manager, .just-perfection-api-controls-manager-spacing-size149 .secondary-monitor-workspaces { spacing: 149px; }
.just-perfection-api-controls-manager-spacing-size150 .controls-manager, .just-perfection-api-controls-manager-spacing-size150 .secondary-monitor-workspaces { spacing: 150px; }
.just-perfection-api-osd-position-top .osd-window { margin: 4em 2.5em; }
.just-perfection-api-osd-position-center .osd-window { margin: 4em 3.5em; }
.just-perfection-api-osd-position-bottom .osd-window { margin: 4em 3em; }
.just-perfection-api-no-dash-separator .dash-separator,
.just-perfection-api-no-dash-app-running-dot #dash .app-well-app-running-dot,
.just-perfection-api-no-dash-app-running-dot #dash .app-grid-running-dot
{
width: 0;
height: 0;
spacing: 0;
padding: 0;
margin: 0;
}
.just-perfection-api-no-workspaces-in-app-grid .workspace-background
{
background-color: transparent;
box-shadow: 0 4px 16px 4px transparent;
}
.just-perfection-api-no-power-icon .power-status StIcon
{
width: 0;
height: 0;
padding: 0;
}