summaryrefslogtreecommitdiffstats
path: root/extensions/vertical-workspaces/prefs.js
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/vertical-workspaces/prefs.js')
-rw-r--r--extensions/vertical-workspaces/prefs.js1551
1 files changed, 1132 insertions, 419 deletions
diff --git a/extensions/vertical-workspaces/prefs.js b/extensions/vertical-workspaces/prefs.js
index 1870ea7..6cea321 100644
--- a/extensions/vertical-workspaces/prefs.js
+++ b/extensions/vertical-workspaces/prefs.js
@@ -1,5 +1,5 @@
/**
- * Vertical Workspaces
+ * V-Shell (Vertical Workspaces)
* prefs.js
*
* @author GdH <G-dH@github.com>
@@ -13,11 +13,11 @@ const { Gtk, GLib } = imports.gi;
const ExtensionUtils = imports.misc.extensionUtils;
const Me = ExtensionUtils.getCurrentExtension();
-const Settings = Me.imports.settings;
+const Settings = Me.imports.lib.settings;
-const ItemFactory = Me.imports.optionsFactory.ItemFactory;
-const AdwPrefs = Me.imports.optionsFactory.AdwPrefs;
-const LegacyPrefs = Me.imports.optionsFactory.LegacyPrefs;
+const ItemFactory = Me.imports.lib.optionsFactory.ItemFactory;
+const AdwPrefs = Me.imports.lib.optionsFactory.AdwPrefs;
+const LegacyPrefs = Me.imports.lib.optionsFactory.LegacyPrefs;
const shellVersion = Settings.shellVersion;
@@ -26,13 +26,14 @@ const _ = Settings._;
// libadwaita is available starting with GNOME Shell 42.
let Adw = null;
-try { Adw = imports.gi.Adw; } catch (e) {}
+try {
+ Adw = imports.gi.Adw;
+} catch (e) {}
let gOptions;
let pageList;
let itemFactory;
-
function init() {
ExtensionUtils.initTranslations(Me.metadata['gettext-domain']);
gOptions = new Settings.Options();
@@ -44,32 +45,38 @@ function init() {
name: 'layout',
title: _('Layout'),
iconName: 'view-grid-symbolic',
- optionList: _getLayoutOptionList()
+ optionList: _getLayoutOptionList(),
},
{
name: 'appearance',
title: _('Appearance'),
iconName: 'view-reveal-symbolic',
- optionList: _getAppearanceOptionList()
+ optionList: _getAppearanceOptionList(),
},
{
name: 'behavior',
title: _('Behavior'),
- iconName: 'preferences-other-symbolic',
- optionList: _getBehaviorOptionList()
+ iconName: 'system-run-symbolic',
+ optionList: _getBehaviorOptionList(),
},
{
name: 'misc',
title: _('Misc'),
- iconName: 'input-keyboard-symbolic',
- optionList: _getMiscOptionList()
+ iconName: 'preferences-other-symbolic',
+ optionList: _getMiscOptionList(),
+ },
+ {
+ name: 'profiles',
+ title: _('Profiles'),
+ iconName: 'open-menu-symbolic',
+ optionList: _getProfilesOptionList(),
},
{
name: 'about',
title: _('About'),
iconName: 'preferences-system-details-symbolic',
- optionList: _getAboutOptionList()
- }
+ optionList: _getAboutOptionList(),
+ },
];
}
@@ -88,7 +95,7 @@ function fillPreferencesWindow(window) {
function buildPrefsWidget() {
const prefsWidget = new LegacyPrefs(gOptions).getPrefsWidget(pageList);
- prefsWidget.connect('realize', (widget) => {
+ prefsWidget.connect('realize', widget => {
const window = widget.get_root ? widget.get_root() : widget.get_toplevel();
const width = 800;
const height = 800;
@@ -106,7 +113,7 @@ function buildPrefsWidget() {
return prefsWidget;
}
-//////////////////////////////////////////////////////////////////////
+// ////////////////////////////////////////////////////////////////////
function _getLayoutOptionList() {
const optionList = [];
// options item format:
@@ -114,7 +121,7 @@ function _getLayoutOptionList() {
optionList.push(
itemFactory.getRowWidget(
- _('Dash'),
+ _('Dash')
)
);
@@ -123,9 +130,10 @@ function _getLayoutOptionList() {
_('Dash Position'),
null,
itemFactory.newComboBox(),
- //itemFactory.newDropDown(),
+ // itemFactory.newDropDown(),
'dashPosition',
- [ [_('Top'), 0],
+ [
+ [_('Top'), 0],
[_('Right'), 1],
[_('Bottom'), 2],
[_('Left'), 3],
@@ -137,9 +145,9 @@ function _getLayoutOptionList() {
optionList.push(
itemFactory.getRowWidget(
_('Center Horizontal Dash to Workspace'),
- _('If the Dash Position is set to Top or Bottom, the position will be recalculated relative to the workspace preview instead of the screen. Works only with the default Dash.'),
+ _('If the Dash Position is set to Top or Bottom, the position will be recalculated relative to the workspace preview instead of the screen'),
itemFactory.newSwitch(),
- 'centerDashToWs',
+ 'centerDashToWs'
)
);
@@ -155,91 +163,29 @@ function _getLayoutOptionList() {
optionList.push(
itemFactory.getRowWidget(
_('Fine Tune Dash Position'),
- _('Adjusts position of the dock on chosen axis. Works only with the default Dash.'),
+ _('Adjusts the position of the dash on the axis given by the orientation of the workspaces'),
dashPositionScale,
'dashPositionAdjust'
)
);
- optionList.push(
- itemFactory.getRowWidget(
- _('Show Apps Icon Position'),
- _('Sets the position of the "Show Applications" icon in the Dash.'),
- itemFactory.newComboBox(),
- //itemFactory.newDropDown(),
- 'showAppsIconPosition',
- [
- [_('Hide'), 2],
- [_('Start'), 0],
- [_('End'), 1],
- ]
- )
- );
optionList.push(
itemFactory.getRowWidget(
- _('Open Windows Icon Position'),
- _('This option adds "Search Open Windows" icon into dash so you can directly toggle window search provider results. Even if you disable this icon, you can use the secondary mouse button click on the Show Apps Icon, or the Space hotkey to access this feature.'),
- itemFactory.newComboBox(),
- //itemFactory.newDropDown(),
- 'dashShowWindowsIcon',
- [ [_('Hide'), 0],
- [_('Start'), 1],
- [_('End'), 2],
- ]
- )
- );
-
- optionList.push(
- itemFactory.getRowWidget(
- _('Recent Files Icon Position'),
- _('This option adds "Search Recent Files" icon into dash so you can directly toggle recent files search provider results. Even if you disable this icon, you can use the secondary mouse button click on the Show Apps Icon, or the Ctrl + Space hotkey to access this feature.'),
- itemFactory.newComboBox(),
- //itemFactory.newDropDown(),
- 'dashShowRecentFilesIcon',
- [ [_('Hide'), 0],
- [_('Start'), 1],
- [_('End'), 2],
- ]
- )
- );
-
- optionList.push(
- itemFactory.getRowWidget(
- _('Dash Max Icon Size'),
- _('Maximum size of Dash icons in pixels. Works only with default Dash.'),
- itemFactory.newComboBox(),
- //itemFactory.newDropDown(),
- 'dashMaxIconSize',
- [ [_('128'), 128],
- [_('112'), 112],
- [_('96'), 96],
- [_('80'), 80],
- [_('64'), 64],
- [_('48'), 48],
- [_('32'), 32],
- [_('24'), 24],
- [_('16'), 16],
- ]
- )
- );
-
-
- optionList.push(
- itemFactory.getRowWidget(
- _('Workspaces Thumbnails / Orientation'),
+ _('Workspace Thumbnails / Orientation')
)
);
optionList.push(
itemFactory.getRowWidget(
_('Thumbnails Position / Workspaces Orientation'),
- _('Position of the workspaces thumbnails on the screen also sets orientation of the workspaces to vertical or horizontal. You have two options to disable workspaces thumbnails, one sets workspaces to the vertical orientation, the second one to horizontal.'),
+ _('Position of the workspace thumbnails on the screen also sets orientation of the workspaces to vertical or horizontal. You have two options to disable workspace thumbnails, one sets workspaces to vertical orientation, the second one to horizontal.'),
itemFactory.newComboBox(),
- //itemFactory.newDropDown(),
+ // itemFactory.newDropDown(),
'workspaceThumbnailsPosition',
// this mess is just because of backward compatibility
- [ [_('Left \t Vertical Orientation'), 0],
+ [
+ [_('Left \t Vertical Orientation'), 0],
[_('Right \t Vertical Orientation'), 1],
[_('Hide \t Set Vertical Orientation'), 4],
[_('Top \t Horizontal Orientation'), 5],
@@ -260,8 +206,8 @@ function _getLayoutOptionList() {
wstPositionScale.add_mark(0, Gtk.PositionType.TOP, null);
optionList.push(
itemFactory.getRowWidget(
- _('Fine Tune Workspaces Thumbnails Position'),
- _('Adjusts workspaces thumbnails vertical position.'),
+ _('Fine Tune Workspace Thumbnails Position'),
+ _('Adjusts the position of the thumbnails on the axis given by the orientation of the workspaces'),
wstPositionScale,
'wsTmbPositionAdjust'
)
@@ -270,67 +216,51 @@ function _getLayoutOptionList() {
optionList.push(
itemFactory.getRowWidget(
_('Reserve Full Screen Height/Width for Thumbnails'),
- _('The whole screen height/width will be reserved for workspaces thumbnails at the expense of space available for Dash (if the Dash is oriented in a different axis).'),
+ _('The whole screen height/width will be reserved for workspace thumbnails at the expense of space available for Dash (if the Dash is oriented in a different axis).'),
itemFactory.newSwitch(),
- 'WsThumbnailsFull',
+ 'wsThumbnailsFull'
)
);
- optionList.push(
- itemFactory.getRowWidget(
- _('Workspaces Thumbnails Position on Secondary Monitor'),
- _('Allows you to place workspaces thumbnails of secondary monitors on the opposite side than on the primary monitor.'),
- itemFactory.newComboBox(),
- //itemFactory.newDropDown(),
- 'secondaryWsThumbnailsPosition',
- [ [_('Left / Top'), 0],
- [_('Right / Bottom'), 1],
- [_('Same as Primary'), 2],
- [_('Disable'), 3],
- ]
- )
- );
-
- const SecWstPositionAdjustment = new Gtk.Adjustment({
- upper: 100,
- lower: -100,
+ const wsThumbnailScaleAdjustment = new Gtk.Adjustment({
+ upper: 30,
+ lower: 0,
step_increment: 1,
- page_increment: 10,
+ page_increment: 1,
});
- const SecWstPositionScale = itemFactory.newScale(SecWstPositionAdjustment);
- SecWstPositionScale.add_mark(0, Gtk.PositionType.TOP, null);
+ const wsThumbnailScale = itemFactory.newScale(wsThumbnailScaleAdjustment);
+ wsThumbnailScale.add_mark(13, Gtk.PositionType.TOP, null);
optionList.push(
itemFactory.getRowWidget(
- _('Fine Tune Secondary Workspaces Thumbnails Position'),
- _('Adjusts secondary monitors workspaces thumbnails vertical position.'),
- SecWstPositionScale,
- 'SecWsTmbPositionAdjust'
+ _('Workspace Thumbnails Max Scale'),
+ _('Adjusts maximum size of the workspace thumbnails in the overview (% relative to display width)'),
+ wsThumbnailScale,
+ 'wsThumbnailScale'
)
);
- const wsThumbnailScaleAdjustment = new Gtk.Adjustment({
+ const wsThumbnailAppScaleAdjustment = new Gtk.Adjustment({
upper: 30,
- lower: 5,
+ lower: 0,
step_increment: 1,
page_increment: 1,
});
- const wsThumbnailScale = itemFactory.newScale(wsThumbnailScaleAdjustment);
- wsThumbnailScale.add_mark(13, Gtk.PositionType.TOP, null);
+ const wsThumbnailAppScale = itemFactory.newScale(wsThumbnailAppScaleAdjustment);
+ wsThumbnailAppScale.add_mark(0, Gtk.PositionType.TOP, null);
optionList.push(
itemFactory.getRowWidget(
- _('Workspaces Thumbnails Max Scale'),
- _('Adjusts maximum size of the workspaces thumbnails (% relative to display width).'),
- wsThumbnailScale,
- 'wsThumbnailScale'
+ _('Workspace Thumbnails Max Scale - App View'),
+ _('Set to 0 to follow "Workspace Thumbnails Max Scale" scale. Allows you to set different thumbnails scale for the Applications view'),
+ wsThumbnailAppScale,
+ 'wsThumbnailScaleAppGrid'
)
);
-
optionList.push(
itemFactory.getRowWidget(
- _('Workspace Preview'),
+ _('Workspace Preview')
)
);
@@ -346,7 +276,7 @@ function _getLayoutOptionList() {
optionList.push(
itemFactory.getRowWidget(
_('Workspaces Scale'),
- _('Scales down workspaces preview so you can fit more of the adjacent workspaces on the screen. Default size is calculated to use all available space.'),
+ _('Allows to shrink workspace previews to adjust spacing or fit more of the adjacent workspaces on the screen. Default size is calculated to use all available space with minimal spacing'),
wsScaleScale,
'wsPreviewScale'
)
@@ -364,7 +294,7 @@ function _getLayoutOptionList() {
optionList.push(
itemFactory.getRowWidget(
_('Workspaces Spacing'),
- _('Adjusts spacing between workspaces previews so you can control how much of the adjacent workspaces overlap to the current workspace overview. Default value should set the adjacent workspaces out of the screen.'),
+ _('Adjusts spacing between workspace previews so you can control how much of the adjacent workspaces overlap to the current workspace overview. Default value should set the adjacent workspaces off-screen.'),
wsSpacingScale,
'wsMaxSpacing'
)
@@ -373,245 +303,369 @@ function _getLayoutOptionList() {
optionList.push(
itemFactory.getRowWidget(
- _('App Grid'),
+ _('App Grid')
)
);
optionList.push(
itemFactory.getRowWidget(
_('Center App Grid'),
- _('App grid in app view page will be centered to the display instead of the available space. This option may have impact on the size of the grid, more for narrower and small resolution displays, especially if workspaces thumbnails are bigger.'),
+ _('Centers the app grid relative to the display instead of available space'),
itemFactory.newSwitch(),
- 'centerAppGrid',
+ 'centerAppGrid'
)
);
+ const agPageAdjustment = new Gtk.Adjustment({
+ upper: 100,
+ lower: 50,
+ step_increment: 1,
+ page_increment: 10,
+ });
+
+ const agPageWidthScale = itemFactory.newScale(agPageAdjustment);
+ agPageWidthScale.add_mark(90, Gtk.PositionType.TOP, null);
optionList.push(
itemFactory.getRowWidget(
- _('Icon Size'),
- _('Allows to force fixed icon size and bypass the default adaptive algorithm.'),
- itemFactory.newComboBox(),
- //itemFactory.newDropDown(),
- 'appGridIconSize',
- [ [_('Adaptive (Default)'), -1],
- [_('128'), 128],
- [_('112'), 112],
- [_('96'), 96],
- [_('80'), 80],
- [_('64'), 64],
- [_('48'), 48],
- [_('32'), 32],
- ]
+ _('App Grid Page Width Scale'),
+ _('Adjusts max app grid page width relative to the available space.'),
+ agPageWidthScale,
+ 'appGridPageWidthScale'
)
);
optionList.push(
itemFactory.getRowWidget(
- _('Folder Icon Size'),
- _('Allows to disable the default adaptive algorithm and set a fixed size of icons inside folders.'),
- itemFactory.newComboBox(),
- //itemFactory.newDropDown(),
- 'appGridFolderIconSize',
- [ [_('Adaptive (Default)'), -1],
- [_('128'), 128],
- [_('112'), 112],
- [_('96'), 96],
- [_('80'), 80],
- [_('64'), 64],
- [_('48'), 48],
- [_('32'), 32],
- ]
+ _('Search View')
)
);
- const customGridSwitch = itemFactory.newSwitch();
optionList.push(
itemFactory.getRowWidget(
- _('Enable Custom Grid Size'),
- _('Apply following grid parameters.'),
- customGridSwitch,
- //itemFactory.newDropDown(),
- 'appGridAllowCustom'
+ _('Center Search View'),
+ _('Centers the search view relative to the display instead of available space'),
+ itemFactory.newSwitch(),
+ 'centerSearch'
)
);
- const columnsAdjustment = new Gtk.Adjustment({
- upper: 15,
- lower: 2,
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Always Show Search Entry'),
+ _('If disabled, the search entry field will be hidden when not in use, so the workspace preview and app grid may take up more space'),
+ itemFactory.newSwitch(),
+ 'showSearchEntry'
+ )
+ );
+
+ const searchViewScaleAdjustment = new Gtk.Adjustment({
+ upper: 150,
+ lower: 50,
step_increment: 1,
page_increment: 1,
});
- const columnsSpinBtn = itemFactory.newSpinButton(columnsAdjustment);
- optionList.push(itemFactory.getRowWidget(
- _('Columns per Page'),
- _('Number of columns in application grid.'),
- columnsSpinBtn,
- 'appGridColumns'
- ));
+ const searchViewScale = itemFactory.newScale(searchViewScaleAdjustment);
+ searchViewScale.add_mark(100, Gtk.PositionType.TOP, null);
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Search Results Width'),
+ _('Adjusts maximum width of search results view (% relative to default). This allows to fit more (or less) app icons into the app search result'),
+ searchViewScale,
+ 'searchViewScale'
+ )
+ );
- const rowsAdjustment = new Gtk.Adjustment({
- upper: 15,
- lower: 2,
- step_increment: 1,
- page_increment: 1,
- });
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Panel')
+ )
+ );
- const rowsSpinBtn = itemFactory.newSpinButton(rowsAdjustment);
- optionList.push(itemFactory.getRowWidget(
- _('Rows per Page'),
- _('Number of rows in application grid.'),
- rowsSpinBtn,
- 'appGridRows'
- ));
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Main Panel Position'),
+ _('Allows to place the main panel at the bottom of the primary display'),
+ itemFactory.newComboBox(),
+ // itemFactory.newDropDown(),
+ 'panelPosition',
+ [
+ [_('Top (Default)'), 0],
+ [_('Bottom'), 1],
+ ]
+ )
+ );
- const folderColumnsAdjustment = new Gtk.Adjustment({
- upper: 8,
- lower: 2,
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Main Panel Visibility'),
+ _('Allows to hide main panel when not needed'),
+ itemFactory.newComboBox(),
+ // itemFactory.newDropDown(),
+ 'panelVisibility',
+ [
+ [_('Always Visible (Default)'), 0],
+ [_('Overview Only'), 1],
+ [_('Always Hidden'), 2],
+ // [_('Desktop View Only'), 3],
+ ]
+ )
+ );
+
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Workspace Switcher Popup')
+ )
+ );
+
+ const hAdjustment = new Gtk.Adjustment({
+ lower: 0,
+ upper: 100,
step_increment: 1,
page_increment: 1,
});
- const folderColumnsSpinBtn = itemFactory.newSpinButton(folderColumnsAdjustment);
- optionList.push(itemFactory.getRowWidget(
- _('Folder Columns per Page'),
- _('Number of columns in folder grid.'),
- folderColumnsSpinBtn,
- 'appGridFolderColumns'
- ));
+ const hScale = itemFactory.newScale(hAdjustment);
+ hScale.add_mark(50, Gtk.PositionType.TOP, null);
- const folderRowsAdjustment = new Gtk.Adjustment({
- upper: 8,
- lower: 2,
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Horizontal Position (% from left)'),
+ _('This popup shows up when you switch workspace using a keyboard shortcut or gesture outside of the overview. You can disable it on the "Behavior" tab. If you want more control over the popup, try the "Workspace Switcher Manager" extension'),
+ hScale,
+ 'wsSwPopupHPosition'
+ )
+ );
+
+ const vAdjustment = new Gtk.Adjustment({
+ lower: 0,
+ upper: 100,
step_increment: 1,
page_increment: 1,
});
- const folderRowsSpinBtn = itemFactory.newSpinButton(folderRowsAdjustment);
- optionList.push(itemFactory.getRowWidget(
- _('Folder Rows per Page'),
- _('Number of rows in folder grid.'),
- folderRowsSpinBtn,
- 'appGridFolderRows'
- ));
+ const vScale = itemFactory.newScale(vAdjustment);
+ vScale.add_mark(50, Gtk.PositionType.TOP, null);
- const _setOptionsSensitivity = () => {
- columnsSpinBtn.sensitive = customGridSwitch.active;
- rowsSpinBtn.sensitive = customGridSwitch.active;
- folderColumnsSpinBtn.sensitive = customGridSwitch.active;
- folderRowsSpinBtn.sensitive = customGridSwitch.active;
- };
- _setOptionsSensitivity();
- customGridSwitch.connect('notify::active', () => {
- _setOptionsSensitivity();
- });
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Vertical Position (% from top)'),
+ null,
+ vScale,
+ 'wsSwPopupVPosition'
+ )
+ );
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Notifications and OSD')
+ )
+ );
optionList.push(
itemFactory.getRowWidget(
- _('Search View'),
+ _('Notification Banner Position'),
+ _('Choose where the notification banners appear on the screen'),
+ itemFactory.newComboBox(),
+ // itemFactory.newDropDown(),
+ 'notificationPosition',
+ [
+ [_('Top Left'), 0],
+ [_('Top Center'), 1],
+ [_('Top Right (Default)'), 2],
+ [_('Bottom Left'), 3],
+ [_('Bottom Center'), 4],
+ [_('Bottom Right'), 5],
+ ]
)
);
optionList.push(
itemFactory.getRowWidget(
- _('Center Search View'),
- _('Search view will be centered to the display instead of the available space. If needed, workspaces thumbnails will be temporarily scaled down to fit the search box. This option has bigger impact for narrower and small resolution displays.'),
- itemFactory.newSwitch(),
- 'centerSearch',
+ _('OSD Popup Position'),
+ _('Choose where the OSD pop-ups (like sound volume level) appear on the screen'),
+ itemFactory.newComboBox(),
+ // itemFactory.newDropDown(),
+ 'osdPosition',
+ [
+ [_('Disable'), 0],
+ [_('Top Left'), 1],
+ [_('Top Center'), 2],
+ [_('Top Right'), 3],
+ [_('Center'), 4],
+ [_('Bottom Left'), 5],
+ [_('Bottom Center (Default)'), 6],
+ [_('Bottom Right'), 7],
+ ]
)
);
optionList.push(
itemFactory.getRowWidget(
- _('Always Show Search Entry'),
- _('If disabled, the search entry field will be hidden when not in use, so the workspace preview and app grid may take up more space.'),
- itemFactory.newSwitch(),
- 'showSearchEntry',
+ _('Secondary Monitors')
)
);
- const searchViewScaleAdjustment = new Gtk.Adjustment({
- upper: 150,
- lower: 50,
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Workspace Thumbnails Position'),
+ _('Allows to place workspace thumbnails of secondary monitors on the opposite side than on the primary monitor'),
+ itemFactory.newComboBox(),
+ // itemFactory.newDropDown(),
+ 'secWsThumbnailsPosition',
+ [
+ [_('Same as Primary'), 2],
+ [_('Left / Top'), 0],
+ [_('Right / Bottom'), 1],
+ [_('Hide'), 3],
+ ]
+ )
+ );
+
+ const secWstPositionAdjustment = new Gtk.Adjustment({
+ upper: 100,
+ lower: -100,
+ step_increment: 1,
+ page_increment: 10,
+ });
+
+ const secWstPositionScale = itemFactory.newScale(secWstPositionAdjustment);
+ secWstPositionScale.add_mark(0, Gtk.PositionType.TOP, null);
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Fine Tune Workspace Thumbnails Position'),
+ _('Adjusts the position of the thumbnails on the axis given by the orientation of the workspaces'),
+ secWstPositionScale,
+ 'secWsTmbPositionAdjust'
+ )
+ );
+
+ const secWsThumbnailScaleAdjustment = new Gtk.Adjustment({
+ upper: 30,
+ lower: 5,
step_increment: 1,
page_increment: 1,
});
- const searchViewScale = itemFactory.newScale(searchViewScaleAdjustment);
- searchViewScale.add_mark(100, Gtk.PositionType.TOP, null);
+ const secWsThumbnailScale = itemFactory.newScale(secWsThumbnailScaleAdjustment);
+ secWsThumbnailScale.add_mark(13, Gtk.PositionType.TOP, null);
optionList.push(
itemFactory.getRowWidget(
- _('Search Results Width'),
- _('Adjusts maximum width of search results view (% relative to default). This allows you to fit more (or less) app icons into app search result.'),
- searchViewScale,
- 'searchViewScale'
+ _('Workspace Thumbnails Max Scale'),
+ _('Adjusts maximum size of the workspace thumbnails (% relative to display width / height) for secondary monitors'),
+ secWsThumbnailScale,
+ 'secWsThumbnailScale'
)
);
+ const wsSecScaleAdjustment = new Gtk.Adjustment({
+ upper: 100,
+ lower: 30,
+ step_increment: 1,
+ page_increment: 10,
+ });
+
+ const wsSecScaleScale = itemFactory.newScale(wsSecScaleAdjustment);
+ wsScaleScale.add_mark(100, Gtk.PositionType.TOP, null);
optionList.push(
itemFactory.getRowWidget(
- _('App Search Icon Size'),
- _('Size of results provided by the App Search Provider.'),
- itemFactory.newComboBox(),
- //itemFactory.newDropDown(),
- 'searchIconSize',
- [[_('128'), 128],
- [_('112'), 112],
- [_('96'), 96],
- [_('80'), 80],
- [_('64'), 64],
- [_('48'), 48],
- [_('32'), 32],]
+ _('Workspace Preview Scale'),
+ _('Allows to scale down workspace previews on secondary monitors'),
+ wsSecScaleScale,
+ 'secWsPreviewScale'
)
);
optionList.push(
itemFactory.getRowWidget(
- _('Panel'),
+ _('Shift Workspace Preview by Panel Height'),
+ _('This option can help align overview of the secondary monitor with the primary monitor'),
+ itemFactory.newSwitch(),
+ 'secWsPreviewShift'
)
);
+
+
+ return optionList;
+}
+
+function _getAppearanceOptionList() {
+ const optionList = [];
+ // options item format:
+ // [text, caption, widget, settings-variable, options for combo]
+
+ // ----------------------------------------------------------------
optionList.push(
itemFactory.getRowWidget(
- _('Main Panel Position'),
- _('Allows you to place the main panel at the bottom of your monitor.'),
+ _('Dash')
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Dash Max Icon Size'),
+ _('Maximum size of Dash icons in pixels'),
itemFactory.newComboBox(),
- //itemFactory.newDropDown(),
- 'panelPosition',
- [ [_('Top (Default)'), 0],
- [_('Bottom'), 1],
+ // itemFactory.newDropDown(),
+ 'dashMaxIconSize',
+ [
+ [_('128'), 128],
+ [_('112'), 112],
+ [_('96'), 96],
+ [_('80'), 80],
+ [_('64'), 64],
+ [_('48'), 48],
+ [_('32'), 32],
+ [_('24'), 24],
+ [_('16'), 16],
]
)
);
optionList.push(
itemFactory.getRowWidget(
- _('Main Panel Visibility'),
- _('Main panel can be visible always, only in the overview or never.'),
+ _('Show Apps Icon Position'),
+ _('Sets the position of the "Show Applications" icon in the Dash'),
itemFactory.newComboBox(),
- //itemFactory.newDropDown(),
- 'panelVisibility',
- [ [_('Always Visible (Default)'), 0],
- [_('Overview Only'), 1],
- [_('Always Hidden'), 2],
- //[_('Desktop View Only'), 3],
+ // itemFactory.newDropDown(),
+ 'showAppsIconPosition',
+ [
+ [_('Hide'), 2],
+ [_('Start'), 0],
+ [_('End'), 1],
]
)
);
- return optionList;
-}
-
-function _getAppearanceOptionList() {
- const optionList = [];
- // options item format:
- // [text, caption, widget, settings-variable, options for combo]
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Open Windows Icon Position'),
+ _('Allows to add "Search Open Windows" icon into Dash (if window search provider enabled on the Behavior tab) so you can directly toggle window search provider results. You can also use the secondary mouse button click on the Show Apps Icon, or the Space hotkey'),
+ itemFactory.newComboBox(),
+ // itemFactory.newDropDown(),
+ 'dashShowWindowsIcon',
+ [
+ [_('Hide'), 0],
+ [_('Start'), 1],
+ [_('End'), 2],
+ ]
+ )
+ );
- //----------------------------------------------------------------
optionList.push(
itemFactory.getRowWidget(
- _('Dash'),
+ _('Recent Files Icon Position'),
+ _('Allows to add "Search Recent Files" icon into Dash (if recent files search provider enabled on the Behavior tab) so you can directly toggle recent files search provider results. You can also use Ctrl + Space hotkey'),
+ itemFactory.newComboBox(),
+ // itemFactory.newDropDown(),
+ 'dashShowRecentFilesIcon',
+ [
+ [_('Hide'), 0],
+ [_('Start'), 1],
+ [_('End'), 2],
+ ]
)
);
@@ -626,7 +680,7 @@ function _getAppearanceOptionList() {
optionList.push(
itemFactory.getRowWidget(
_('Dash Background Opacity'),
- _('Adjusts the opacity of the dash background.'),
+ _('Adjusts the opacity of the Dash background'),
dashBgOpacityScale,
'dashBgOpacity'
)
@@ -643,7 +697,7 @@ function _getAppearanceOptionList() {
optionList.push(
itemFactory.getRowWidget(
_('Dash Background Radius'),
- _('Adjusts the border radius of the dash background in pixels. 0 means default value.'),
+ _('Adjusts the border radius of the Dash background in pixels. 0 means the default value given by the current theme style'),
dashBgRadiusScale,
'dashBgRadius'
)
@@ -651,18 +705,19 @@ function _getAppearanceOptionList() {
optionList.push(
itemFactory.getRowWidget(
- _('Workspaces Thumbnails'),
+ _('Workspace Thumbnails')
)
);
optionList.push(
itemFactory.getRowWidget(
- _('Show Workspaces Thumbnails Labels'),
- _('Each workspace thumbnails can show its index and name (if defined in the system settings) or name/title of its most recently used app/window.'),
+ _('Show Workspace Thumbnail Labels'),
+ _('Each workspace thumbnail can show label with its index and name (if defined in the system settings) or name/title of its most recently used app/window'),
itemFactory.newComboBox(),
- //itemFactory.newDropDown(),
+ // itemFactory.newDropDown(),
'showWsTmbLabels',
- [ [_('Disable'), 0],
+ [
+ [_('Disable'), 0],
[_('Index'), 1],
[_('Index + WS Name'), 2],
[_('Index + App Name'), 3],
@@ -674,39 +729,40 @@ function _getAppearanceOptionList() {
optionList.push(
itemFactory.getRowWidget(
_('Show WS Thumbnail Label on Hover'),
- _('Show label only when the mouse pointer hovers over a thumbnail'),
+ _('Show the label only when the mouse pointer hovers over the thumbnail'),
itemFactory.newSwitch(),
- 'showWsTmbLabelsOnHover',
+ 'showWsTmbLabelsOnHover'
)
);
optionList.push(
itemFactory.getRowWidget(
- _('Show Wallpaper in Workspaces Thumbnails'),
- _('All workspace thumbnails will include the current desktop background.'),
+ _('Show Wallpaper in Workspace Thumbnails'),
+ _('All workspace thumbnails will include the current desktop background'),
itemFactory.newSwitch(),
- 'showWsSwitcherBg',
+ 'showWsSwitcherBg'
)
);
optionList.push(
itemFactory.getRowWidget(
- _('Window Preview'),
+ _('Window Preview')
)
);
optionList.push(
itemFactory.getRowWidget(
_('Window Preview App Icon Size'),
- _('Default size is 64.'),
+ null,
itemFactory.newComboBox(),
- //itemFactory.newDropDown(),
+ // itemFactory.newDropDown(),
'winPreviewIconSize',
- [ [_('64'), 0],
+ [
+ [_('64 (Default)'), 0],
[_('48'), 1],
[_('32'), 2],
[_('22'), 3],
- [_('Disable'), 4]
+ [_('Disable'), 4],
]
)
);
@@ -714,41 +770,269 @@ function _getAppearanceOptionList() {
optionList.push(
itemFactory.getRowWidget(
_('Always Show Window Titles'),
- _('All windows on the workspace preview will show their titles, not only the one with the mouse pointer.'),
+ _('All windows on the workspace preview will still show their titles, not only the one with the mouse pointer'),
itemFactory.newSwitch(),
- 'alwaysShowWinTitles',
+ 'alwaysShowWinTitles'
)
);
optionList.push(
itemFactory.getRowWidget(
- _('Workspace Preview'),
+ _('Workspace Preview')
)
);
optionList.push(
itemFactory.getRowWidget(
_('Show Workspace Preview Background'),
- _('Allows you to hide the scaling background of the workspace preview.'),
+ _('Allows to hide the background of the workspace preview'),
itemFactory.newSwitch(),
- 'showWsPreviewBg',
+ 'showWsPreviewBg'
+ )
+ );
+
+ const wsPreviewBgRadiusAdjustment = new Gtk.Adjustment({
+ upper: 60,
+ lower: 5,
+ step_increment: 1,
+ page_increment: 5,
+ });
+
+ const wsPreviewBgRadiusSpinButton = itemFactory.newScale(wsPreviewBgRadiusAdjustment);
+ wsPreviewBgRadiusSpinButton.add_mark(30, Gtk.PositionType.TOP, null);
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Workspace Background Corner Radius'),
+ _('Adjusts the corner radius of the workspace preview in the overview'),
+ wsPreviewBgRadiusSpinButton,
+ 'wsPreviewBgRadius'
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('App Grid')
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Icon Size'),
+ _('Allows to set a fixed app grid icon size and bypass the default adaptive algorithm'),
+ itemFactory.newComboBox(),
+ // itemFactory.newDropDown(),
+ 'appGridIconSize',
+ [
+ [_('Adaptive (Default)'), -1],
+ [_('256'), 256],
+ [_('224'), 224],
+ [_('208'), 208],
+ [_('192'), 192],
+ [_('176'), 176],
+ [_('160'), 160],
+ [_('144'), 144],
+ [_('128'), 128],
+ [_('112'), 112],
+ [_('96'), 96],
+ [_('80'), 80],
+ [_('64'), 64],
+ [_('48'), 48],
+ // [_('32'), 32],
+ ]
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Folder Icon Size'),
+ _('Allows to set a fixed icon size and bypass the default adaptive algorithm in the open folder dialog'),
+ itemFactory.newComboBox(),
+ // itemFactory.newDropDown(),
+ 'appGridFolderIconSize',
+ [
+ [_('Adaptive (Default)'), -1],
+ [_('128'), 128],
+ [_('112'), 112],
+ [_('96'), 96],
+ [_('80'), 80],
+ [_('64'), 64],
+ [_('48'), 48],
+ [_('32'), 32],
+ ]
+ )
+ );
+
+ const folderIconGridCombo = itemFactory.newComboBox();
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Max App Folder Icon Grid Size'),
+ _('Sets a grid size (number of icons) in the folder preview. 3x3 options automatically switches between 2x2 and 3x3 grid depending on the number of icons in the folder'),
+ folderIconGridCombo,
+ // itemFactory.newDropDown(),
+ 'appGridFolderIconGrid',
+ [
+ [_('2x2 (Default)'), 2],
+ [_('3x3 for 5+ apps'), 3],
+ [_('3x3 for 9+ apps'), 4],
+ ]
+ )
+ );
+
+ const columnsAdjustment = new Gtk.Adjustment({
+ upper: 15,
+ lower: 0,
+ step_increment: 1,
+ page_increment: 1,
+ });
+
+ const columnsSpinBtn = itemFactory.newSpinButton(columnsAdjustment);
+ optionList.push(itemFactory.getRowWidget(
+ _('Columns per Page (0 for adaptive grid)'),
+ _('Number of columns in the application grid. If set to 0 (the default), the number will be set automatically to fit the available width'),
+ columnsSpinBtn,
+ 'appGridColumns'
+ ));
+
+ const rowsAdjustment = new Gtk.Adjustment({
+ upper: 15,
+ lower: 0,
+ step_increment: 1,
+ page_increment: 1,
+ });
+
+ const rowsSpinBtn = itemFactory.newSpinButton(rowsAdjustment);
+ optionList.push(itemFactory.getRowWidget(
+ _('Rows per Page (0 for adaptive grid)'),
+ _('Number of rows in the application grid. If set to 0 (the default), the number will be set automatically to fit the available height'),
+ rowsSpinBtn,
+ 'appGridRows'
+ ));
+
+ const folderColumnsAdjustment = new Gtk.Adjustment({
+ upper: 8,
+ lower: 0,
+ step_increment: 1,
+ page_increment: 1,
+ });
+
+ const folderColumnsSpinBtn = itemFactory.newSpinButton(folderColumnsAdjustment);
+ optionList.push(itemFactory.getRowWidget(
+ _('Folder Columns per Page (0 for adaptive grid)'),
+ _('Number of columns in folder grid. If you leave the value at 0, the number of columns will be calculated to fit all the folder icons on one page'),
+ folderColumnsSpinBtn,
+ 'appGridFolderColumns'
+ ));
+
+ const folderRowsAdjustment = new Gtk.Adjustment({
+ upper: 8,
+ lower: 0,
+ step_increment: 1,
+ page_increment: 1,
+ });
+
+ const folderRowsSpinBtn = itemFactory.newSpinButton(folderRowsAdjustment);
+ optionList.push(itemFactory.getRowWidget(
+ _('Folder Rows per Page (0 for adaptive grid)'),
+ _('Number of rows in folder grid. If you leave the value at 0, the number of rows will be calculated to fit all the folder icons on one page'),
+ folderRowsSpinBtn,
+ 'appGridFolderRows'
+ ));
+
+ const appGridSpacingAdjustment = new Gtk.Adjustment({
+ upper: 30,
+ lower: 5,
+ step_increment: 1,
+ page_increment: 5,
+ });
+
+ const appGridSpacingScale = itemFactory.newScale(appGridSpacingAdjustment);
+ appGridSpacingScale.add_mark(12, Gtk.PositionType.TOP, null);
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Grid Spacing'),
+ _('Adjusts spacing between icons.'),
+ appGridSpacingScale,
+ 'appGridSpacing'
)
);
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Search')
+ )
+ );
optionList.push(
itemFactory.getRowWidget(
- _('Overview Background'),
+ _('App Search Icon Size'),
+ _('Size of results provided by the App Search Provider - smaller size allows to fit more results'),
+ itemFactory.newComboBox(),
+ // itemFactory.newDropDown(),
+ 'searchIconSize',
+ [
+ [_('128'), 128],
+ [_('112'), 112],
+ [_('96 (Default)'), 96],
+ [_('80'), 80],
+ [_('64'), 64],
+ [_('48'), 48],
+ [_('32'), 32],
+ ]
)
);
+ const maxSearchResultsAdjustment = new Gtk.Adjustment({
+ upper: 50,
+ lower: 5,
+ step_increment: 1,
+ page_increment: 5,
+ });
+
+ const maxSearchResultsSpinButton = itemFactory.newScale(maxSearchResultsAdjustment);
+ maxSearchResultsSpinButton.add_mark(10, Gtk.PositionType.TOP, null);
+ maxSearchResultsSpinButton.add_mark(20, Gtk.PositionType.TOP, null);
+ maxSearchResultsSpinButton.add_mark(30, Gtk.PositionType.TOP, null);
+ maxSearchResultsSpinButton.add_mark(40, Gtk.PositionType.TOP, null);
optionList.push(
itemFactory.getRowWidget(
- _('Show Static Background'),
- _('Show static background wallpaper instead of the solid grey color.'),
+ _('Max Search Results Rows'),
+ _('Sets the maximum number of rows for result lists of all search providers except the window search provider which always lists all results'),
+ maxSearchResultsSpinButton,
+ 'searchMaxResultsRows'
+ )
+ );
+
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Overview Background')
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Show Wallpaper'),
+ _('Replaces the solid grey background in the overview with the current desktop wallpaper'),
itemFactory.newSwitch(),
- 'showBgInOverview',
+ 'showBgInOverview'
+ )
+ );
+
+ const brightnessBgAdjustment = new Gtk.Adjustment({
+ upper: 100,
+ lower: 0,
+ step_increment: 1,
+ page_increment: 10,
+ });
+
+ const bgBrightnessScale = itemFactory.newScale(brightnessBgAdjustment);
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Brightness'),
+ _('Brightness of the background wallpaper in the overview'),
+ bgBrightnessScale,
+ 'overviewBgBrightness'
)
);
@@ -763,7 +1047,7 @@ function _getAppearanceOptionList() {
optionList.push(
itemFactory.getRowWidget(
_('Blur Window Picker Background'),
- _('Blur background wallpaper (if enabled) in the window picker view.'),
+ _('Sets the amount of background blur in the window picker view'),
bgBlurScale,
'overviewBgBlurSigma'
)
@@ -780,7 +1064,7 @@ function _getAppearanceOptionList() {
optionList.push(
itemFactory.getRowWidget(
_('Blur App Grid/Search View Background'),
- _('Blur background wallpaper (if enabled) in the app grid and search results views.'),
+ _('Sets the amount of background blur in the app grid and search results views'),
bgAppBlurScale,
'appGridBgBlurSigma'
)
@@ -789,35 +1073,36 @@ function _getAppearanceOptionList() {
optionList.push(
itemFactory.getRowWidget(
_('Smooth Blur Transitions'),
- _('Makes blur transitions smoother but can impact overall smoothness of overview animations.'),
+ _('Allows for smoother blur transitions, but can affect the overall smoothness of overview animations on weak hardware'),
itemFactory.newSwitch(),
- 'smoothBlurTransitions',
+ 'smoothBlurTransitions'
)
);
return optionList;
}
- //----------------------------------------------------------------
+// ----------------------------------------------------------------
function _getBehaviorOptionList() {
const optionList = [];
optionList.push(
itemFactory.getRowWidget(
- _('Overview'),
+ _('Overview')
)
);
optionList.push(
itemFactory.getRowWidget(
_('Overview Mode'),
- _('The Expose Windows on Hover mode do not expose the workspace preview windows until the mouse pointer enters any window.\nThe Static Workspace mode does not scale the workspace preview, it only shows Dash and workspaces thumbnails over the desktop. Clicking on a workspace thumbnail scales the ws preview and exposes its windows like in the default overview mode.'),
+ _('The Expose Windows on Hover mode does not expose the workspace preview windows until the mouse pointer enters any window\nThe Static Workspace mode keeps the workspace static when you activate the overview, it only shows Dash, workspace thumbnails and search entry over the workspace and only clicking on an active workspace thumbnail activates the default overview'),
itemFactory.newComboBox(),
- //itemFactory.newDropDown(),
+ // itemFactory.newDropDown(),
'overviewMode',
- [ [_('Default'), 0],
+ [
+ [_('Default'), 0],
[_('Expose Windows on Hover'), 1],
- [_('Static Workspace'), 2]
+ [_('Static Workspace'), 2],
]
)
);
@@ -825,52 +1110,215 @@ function _getBehaviorOptionList() {
optionList.push(
itemFactory.getRowWidget(
_('Startup State'),
- _('Allows to change the state in which GNOME Shell starts a session.'),
+ _('Allows to change the state in which GNOME Shell starts a session'),
itemFactory.newComboBox(),
- //itemFactory.newDropDown(),
+ // itemFactory.newDropDown(),
'startupState',
- [ [_('Overview'), 0],
+ [
+ [_('Overview (Default)'), 0],
[_('Desktop'), 1],
- [_('App Grid'), 2],
+ [_('Applications'), 2],
+ ]
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Overlay Key (Super/Windows)')
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Double-Press Action'),
+ _('Disable or change behavior when you double-press the Super key. The "Search" options require the respective search provider to be activated'),
+ itemFactory.newComboBox(),
+ // itemFactory.newDropDown(),
+ 'overlayKeySecondary',
+ [
+ [_('Disable'), 0],
+ [_('Applications (Default)'), 1],
+ [_('Search Windows'), 2],
+ [_('Search Recent Files'), 3],
]
)
);
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Hot Corner (Install Custom Hot Corners - Extended for more options)')
+ )
+ );
optionList.push(
itemFactory.getRowWidget(
- _('Dash'),
+ _('Hot Corner Action'),
+ _('Disable or change behavior of the hot corner. Holding down the Ctrl key while hitting the hot corner switches between Overview/Applications actions'),
+ itemFactory.newComboBox(),
+ // itemFactory.newDropDown(),
+ 'hotCornerAction',
+ [
+ [_('Disable'), 0],
+ [_('Overview'), 1],
+ [_('Applications'), 2],
+ [_('Search Windows'), 3],
+ ]
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Hot Corner Position'),
+ _('Choose which corner of your monitors will be active. If you choose "Follow Dash" option, the corner will be placed near the left or top edge of the Dash. The last option extends the hot corner barrier to cover the entire ege of the monitor where Dash is located'),
+ itemFactory.newComboBox(),
+ // itemFactory.newDropDown(),
+ 'hotCornerPosition',
+ [
+ [_('Default'), 0],
+ [_('Top Left'), 1],
+ [_('Top Right'), 2],
+ [_('Bottom Left'), 3],
+ [_('Bottom Right'), 4],
+ [_('Follow Dash'), 5],
+ [_('Follow Dash - Hot Edge'), 6],
+ ]
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Enable Hot Corner in Full-Screen Mode'),
+ _('If you often work with full-screen applications and want the hot corner to be usable'),
+ itemFactory.newSwitch(),
+ // itemFactory.newDropDown(),
+ 'hotCornerFullscreen'
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Show Ripples Animation'),
+ _('The ripple animation is played when the hot corner is activated. The ripple size has been reduced to be less distracting'),
+ itemFactory.newSwitch(),
+ // itemFactory.newDropDown(),
+ 'hotCornerRipples'
)
);
optionList.push(
itemFactory.getRowWidget(
- _('Dash Icon Click'),
- _('if the app you clicked on has more than one window and the recently used window is not on the current workspace, the overview can switch to the workspace with the recent window.'),
+ _('Dash')
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('App Icon - Click Behavior'),
+ _('if the app you clicked on has more than one window and the recently used window is not on the current workspace, the overview can switch to the workspace with the recent window'),
itemFactory.newComboBox(),
- //itemFactory.newDropDown(),
+ // itemFactory.newDropDown(),
'dashShowWindowsBeforeActivation',
- [ [_('Activate Last Used Window Immediately'), 0],
- [_('Switch to Workspace with Recently Used Window'), 1],
+ [
+ [_('Activate App Immediately'), 0],
+ [_('First Switch to Workspace'), 1],
+ [_('Open New Window (if supported)'), 2],
]
)
);
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('App Icon - Scroll Action'),
+ _('Choose the behavior when scrolling over an app icon. The window cycler works with a list of windows sorted by the "Most Recently Used" and grouped by workspaces. Scrolling up cycles through previously used windows on the same workspace and then switches to another workspace, if any'),
+ itemFactory.newComboBox(),
+ // itemFactory.newDropDown(),
+ 'dashIconScroll',
+ [
+ [_('Default'), 0],
+ [_('Cycle App Windows - Highlight Selected'), 1],
+ [_('Cycle App Windows - Highlight App'), 2],
+ ]
+ )
+ );
optionList.push(
itemFactory.getRowWidget(
- _('App Grid'),
+ _('Search Windows Icon - Scroll Action'),
+ _('Choose the behavior when scrolling over the Search Windows icon. The window cycler works with a list of windows sorted by "Most Recently Used" of the current workspace or all workspaces. Scrolling up cycles through previously used windows on the same workspace, or all windows regardless workspace. This option is mainly useful for the static workspace overview mode.'),
+ itemFactory.newComboBox(),
+ // itemFactory.newDropDown(),
+ 'searchWindowsIconScroll',
+ [
+ [_('Default'), 0],
+ [_('Cycle All Windows'), 1],
+ [_('Cycle Windows On Current WS'), 2],
+ ]
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Workspace Thumbnails')
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Close Workspace Button'),
+ _('The Close Workspace button appears on the workspace thumbnail when you hover over it and allows you to close all windows on the workspace. You can choose a "safety lock" to prevent accidental use'),
+ itemFactory.newComboBox(),
+ // itemFactory.newDropDown(),
+ 'closeWsButtonMode',
+ [
+ [_('Disable'), 0],
+ [_('Single Click'), 1],
+ [_('Double Click'), 2],
+ [_('Ctrl Key + Click'), 3],
+ ]
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Window Preview')
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Always Activate Selected'),
+ _('If enabled, the currently selected window will be activated when leaving the Overview even without clicking. Usage example - press Super to open the Overview, place mouse pointer over a window, press Super again to activate the window'),
+ itemFactory.newSwitch(),
+ // itemFactory.newDropDown(),
+ 'alwaysActivateSelectedWindow'
+ )
+ );
+
+ /* optionList.push(
+ itemFactory.getRowWidget(
+ _('App Icon Activates Window Search'),
+ _('If enabled, clicking a window preview icon will activate a search view with the application name as the search term, so you can list all app windows from all workspaces and filter them by typing.'),
+ itemFactory.newSwitch(),
+ // itemFactory.newDropDown(),
+ 'windowIconClickSearch'
+ )
+ );*/
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('App Grid')
)
);
optionList.push(
itemFactory.getRowWidget(
_('Apps Order'),
- _('Choose sorting method for the app grid. Note that sorting by alphabet and usage ignores folders.'),
+ _('Choose sorting method for the app grid. Note that sorting by alphabet and usage ignores folders'),
itemFactory.newComboBox(),
- //itemFactory.newDropDown(),
+ // itemFactory.newDropDown(),
'appGridOrder',
- [ [_('Default'), 0],
+ [
+ [_('Custom (Default)'), 0],
[_('Alphabet'), 1],
[_('Usage'), 2],
]
@@ -879,57 +1327,92 @@ function _getBehaviorOptionList() {
optionList.push(
itemFactory.getRowWidget(
- _('Include Dash Items'),
- _('Include favorite / running apps currently present in the Dash in the app grid.'),
+ _('App Grid Content'),
+ _('The default Shell removes favorite apps, this option allows to duplicate them in the grid or remove also running applications. Option "Favorites and Running First" only works with the Alphabet and Usage sorting'),
itemFactory.newComboBox(),
- //itemFactory.newDropDown(),
- 'appGridIncludeDash',
- [ [_('Disable'), 0],
- [_('Enable'), 1],
- [_('Enable - Sort First'), 2],
+ // itemFactory.newDropDown(),
+ 'appGridContent',
+ [
+ [_('Include All'), 0],
+ [_('Include All - Favorites and Running First'), 1],
+ [_('Exclude Favorites (Default)'), 2],
+ [_('Exclude Running'), 3],
+ [_('Exclude Favorites and Running'), 4],
]
)
);
optionList.push(
itemFactory.getRowWidget(
+ _('Active Icons in Folder Preview'),
+ _('If enabled, icons in the folder review behaves like normal icons, you can activate or even drag them directly, without having to open the folder first'),
+ itemFactory.newSwitch(),
+ // itemFactory.newDropDown(),
+ 'appGridActivePreview'
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Center Open Folders'),
+ _('App folder may open in the center of the screen or above the source folder icon'),
+ itemFactory.newSwitch(),
+ // itemFactory.newDropDown(),
+ 'appGridFolderCenter'
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
_('Allow Incomplete Pages'),
- _('If disabled, icons from the next page (if any) are automatically moved to fill any empty slot left after an icon was (re)moved (to a folder for example).'),
+ _('If disabled, icons from the next page (if any) are automatically moved to fill any empty slot left after an icon was (re)moved (to a folder for example)'),
itemFactory.newSwitch(),
- //itemFactory.newDropDown(),
+ // itemFactory.newDropDown(),
'appGridIncompletePages'
)
);
optionList.push(
itemFactory.getRowWidget(
- _('Search'),
+ _('App Labels Behavior'),
+ _('Choose how and when to display app names'),
+ itemFactory.newComboBox(),
+ // itemFactory.newDropDown(),
+ 'appGridNamesMode',
+ [
+ [_('Ellipsized - Expand Selected (Default)'), 0],
+ [_('Always Expanded'), 1],
+ [_('Hidden - Show Selected Only'), 2],
+ ]
)
);
- const maxSearchResultsAdjustment = new Gtk.Adjustment({
- upper: 50,
- lower: 5,
- step_increment: 1,
- page_increment: 5,
- });
+ optionList.push(itemFactory.getRowWidget(
+ _('Reset App Grid Layout'),
+ _('Removes all stored app grid positions, after reset icons will be sorted alphabetically, except folder contents'),
+ itemFactory.newResetButton(() => {
+ const settings = ExtensionUtils.getSettings('org.gnome.shell');
+ settings.set_value('app-picker-layout', new GLib.Variant('aa{sv}', []));
+ })
+ ));
+
+ optionList.push(itemFactory.getRowWidget(
+ _('Remove App Grid Folders'),
+ _('Removes all folders, folder apps will move to the root grid'),
+ itemFactory.newResetButton(() => {
+ const settings = ExtensionUtils.getSettings('org.gnome.desktop.app-folders');
+ settings.set_strv('folder-children', []);
+ })
+ ));
+
- const maxSearchResultsSpinButton = itemFactory.newScale(maxSearchResultsAdjustment);
- maxSearchResultsSpinButton.add_mark(10, Gtk.PositionType.TOP, null);
- maxSearchResultsSpinButton.add_mark(20, Gtk.PositionType.TOP, null);
- maxSearchResultsSpinButton.add_mark(30, Gtk.PositionType.TOP, null);
- maxSearchResultsSpinButton.add_mark(40, Gtk.PositionType.TOP, null);
optionList.push(
itemFactory.getRowWidget(
- _('Max Search Results Rows'),
- _('Sets the maximum number of rows for result lists of all search providers except window search provider which always lists all results.'),
- maxSearchResultsSpinButton,
- 'searchMaxResultsRows'
+ _('Search')
)
);
-
- /*optionList.push(
+ /* optionList.push(
itemFactory.getRowWidget(
_('Window Search Provider'),
)
@@ -938,7 +1421,7 @@ function _getBehaviorOptionList() {
optionList.push(
itemFactory.getRowWidget(
_('Enable Window Search Provider'),
- _('Activates the window search provider that adds open windows to the search results. You can search app names and window titles. You can also use "wq/" prefix to suppress results from other search providers.'),
+ _('Activates the window search provider that adds open windows to the search results. You can search app names and window titles. You can also use "wq//" prefix (also by pressing the Space hotkey in the overview, or clicking dash icon) to suppress results from other search providers'),
itemFactory.newSwitch(),
'searchWindowsEnable'
)
@@ -947,7 +1430,7 @@ function _getBehaviorOptionList() {
optionList.push(
itemFactory.getRowWidget(
_('Enable Recent Files Search Provider'),
- _('Activates the recent files search provider that can be triggered by a dash icon, Ctrl + Space hotkey or by typing "fq//" prefix in the search entry field. This option needs File History option enabled in the GNOME Privacy settings.'),
+ _('Activates the recent files search provider that can be triggered by a dash icon, Ctrl + Space hotkey or by typing "fq//" prefix in the search entry field. This option needs File History option enabled in the GNOME Privacy settings'),
itemFactory.newSwitch(),
'searchRecentFilesEnable'
)
@@ -956,13 +1439,13 @@ function _getBehaviorOptionList() {
optionList.push(
itemFactory.getRowWidget(
_('Enable Fuzzy Match'),
- _('Enabling the fuzzy match allows you to skip letters in the pattern you are searching for and find "Firefox" even if you type "ffx". Works only for the Window and Recent files search providers.'),
+ _('Enabling the fuzzy match allows you to skip letters in the pattern you are searching for and find "Firefox" even if you type "ffx". Works only for the App, Window and Recent files search providers'),
itemFactory.newSwitch(),
'searchFuzzy'
)
);
- /*const wspCommandSwitch = itemFactory.newSwitch();
+ /* const wspCommandSwitch = itemFactory.newSwitch();
optionList.push(
itemFactory.getRowWidget(
_('Enable Commands in Search Entry'),
@@ -972,19 +1455,42 @@ function _getBehaviorOptionList() {
)
);*/
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Animations - General')
+ )
+ );
+
+ const animationSpeedAdjustment = new Gtk.Adjustment({
+ upper: 500,
+ lower: 1,
+ step_increment: 10,
+ page_increment: 100,
+ });
+
+ const animationSpeedScale = itemFactory.newScale(animationSpeedAdjustment);
+ animationSpeedScale.add_mark(100, Gtk.PositionType.TOP, null);
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Animation Speed'),
+ _('Adjusts the global animation speed in % of the default duration - higher value means slower animation'),
+ animationSpeedScale,
+ 'animationSpeedFactor'
+ )
+ );
optionList.push(
itemFactory.getRowWidget(
- _('Animations'),
+ _('Animations - Overview')
)
);
optionList.push(
itemFactory.getRowWidget(
_('App Grid Animation'),
- _(`When entering the App Grid view, the app grid animates from the edge of the screen. You can choose direction, keep it Default (direction will be chosen automatically) or disable the animation if you don't like it.`),
+ _('When entering the App Grid view, the app grid animates from the edge of the screen. You can choose the direction, keep the Default (direction will be selected automatically) or disable the animation if you don\'t like it'),
itemFactory.newComboBox(),
- //itemFactory.newDropDown(),
+ // itemFactory.newDropDown(),
'appGridAnimation',
[
[_('Default'), 4],
@@ -1000,9 +1506,9 @@ function _getBehaviorOptionList() {
optionList.push(
itemFactory.getRowWidget(
_('Search View Animation'),
- _(`When search is activated the search view with search results can animate from the edge of the screen. You can choose direction, keep it Default (currently Bottom to Top) or disable the animation if you don't like it.`),
+ _('When search is activated the search view with search results can animate from the edge of the screen. You can choose the direction, keep the Default (currently Bottom to Top) or disable the animation if you don\'t like it.'),
itemFactory.newComboBox(),
- //itemFactory.newDropDown(),
+ // itemFactory.newDropDown(),
'searchViewAnimation',
[
[_('Default'), 4],
@@ -1019,47 +1525,128 @@ function _getBehaviorOptionList() {
optionList.push(
itemFactory.getRowWidget(
_('Workspace Preview Animation'),
- _(`When entering / leaving the App Grid / Search view, the workspace preview can animate to/from workspace thumbnail.`),
+ _('When entering / leaving the App Grid / Search view, the workspace preview can animate to/from workspace thumbnail.'),
itemFactory.newComboBox(),
- //itemFactory.newDropDown(),
+ // itemFactory.newDropDown(),
'workspaceAnimation',
- [ [_('Disable'), 0],
+ [
+ [_('Disable'), 0],
[_('Enable'), 1],
]
)
);
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Workspace Switcher')
+ )
+ );
+
optionList.push(
itemFactory.getRowWidget(
_('Workspace Switcher Animation'),
- _('Allows you to disable movement of the desktop background during workspace switcher animation outside of the overview.'),
+ _('Allows you to disable movement of the desktop background during workspace switcher animation outside of the overview. The Static Background mode also keeps Conky and desktop icons on their place during switching.'),
itemFactory.newComboBox(),
- //itemFactory.newDropDown(),
+ // itemFactory.newDropDown(),
'workspaceSwitcherAnimation',
- [ [_('Default'), 0],
+ [
+ [_('Default'), 0],
[_('Static Background'), 1],
]
)
);
- const animationSpeedAdjustment = new Gtk.Adjustment({
- upper: 500,
- lower: 1,
- step_increment: 10,
- page_increment: 100,
- });
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Workspace Switcher Popup Mode'),
+ _('This popup shows up when you switch workspace using a keyboard shortcut or gesture outside of the overview. You can to disable the popup at all, or show it on the current monitor (the one with mouse pointer) instead of the primary.'),
+ itemFactory.newComboBox(),
+ // itemFactory.newDropDown(),
+ 'wsSwPopupMode',
+ [
+ [_('Disable'), 0],
+ [_('Show on Primary Monitor (Default)'), 1],
+ [_('Show on Current Monitor'), 2],
+ ]
+ )
+ );
+
- const animationSpeedScale = itemFactory.newScale(animationSpeedAdjustment);
- animationSpeedScale.add_mark(100, Gtk.PositionType.TOP, null);
optionList.push(
itemFactory.getRowWidget(
- _('Animation Speed'),
- _('Adjusts the global animation speed in % of the default duration - higher value means slower animation.'),
- animationSpeedScale,
- 'animationSpeedFactor'
+ _('Notifications')
)
);
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Window Attention Handler'),
+ _('When a window requires attention (often a new window), GNOME Shell shows you a notification about it. You can disable popups of these messages (notification will be pushed into the message tray silently) or focus the source window immediately instead'),
+ itemFactory.newComboBox(),
+ // itemFactory.newDropDown(),
+ 'windowAttentionMode',
+ [
+ [_('Show Notifications (Default)'), 0],
+ [_('Disable Notification Popups'), 1],
+ [_('Immediately Focus Window'), 2],
+ ]
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Favorites'),
+ _('Disable pin/unpin app notifications'),
+ itemFactory.newComboBox(),
+ // itemFactory.newDropDown(),
+ 'favoritesNotify',
+ [
+ [_('Show Notifications (Default)'), 1],
+ [_('Disable Notifications'), 0],
+ ]
+ )
+ );
+
+ return optionList;
+}
+
+function _getProfilesOptionList() {
+ const optionList = [];
+ // options item format:
+ // [text, caption, widget, settings-variable, options for combo]
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Custom Profiles'),
+ _('Sets of settings that can help you with the initial customization')
+ )
+ );
+
+ optionList.push(itemFactory.getRowWidget(
+ _('Profile 1'),
+ null,
+ itemFactory.newPresetButton(gOptions, 1)
+ ));
+
+ optionList.push(itemFactory.getRowWidget(
+ _('Profile 2'),
+ null,
+ itemFactory.newPresetButton(gOptions, 2)
+ ));
+
+ optionList.push(itemFactory.getRowWidget(
+ _('Profile 3'),
+ null,
+ itemFactory.newPresetButton(gOptions, 3)
+ ));
+
+ optionList.push(itemFactory.getRowWidget(
+ _('Profile 4'),
+ null,
+ itemFactory.newPresetButton(gOptions, 4)
+ ));
+
return optionList;
}
@@ -1069,56 +1656,182 @@ function _getMiscOptionList() {
// [text, caption, widget, settings-variable, options for combo]
optionList.push(
- itemFactory.getRowWidget(
- _('Keyboard'),
+ itemFactory.getRowWidget(
+ _('Keyboard')
)
);
optionList.push(
- itemFactory.getRowWidget(
+ itemFactory.getRowWidget(
_('Override Page Up/Down Shortcuts'),
- _('This option automatically overrides the (Shift +) Super + Page Up/Down keyboard shortcuts for the current workspace orientation. If you encounter any issues, check the configuration in the dconf editor.'),
+ _('This option automatically overrides the (Shift +) Super + Page Up/Down keyboard shortcuts for the current workspace orientation. If you encounter any issues, check the configuration in the dconf editor'),
itemFactory.newSwitch(),
- 'enablePageShortcuts',
+ 'enablePageShortcuts'
)
);
optionList.push(
itemFactory.getRowWidget(
- _('App Grid'),
- )
- );
+ _('Compatibility')
+ )
+ );
- optionList.push(itemFactory.getRowWidget(
- _('Reset App Grid Layout'),
- _('Removes all stored app grid icons positions, after the reset icons will be ordered alphabetically.'),
- itemFactory.newResetButton(() => {
- const settings = ExtensionUtils.getSettings('org.gnome.shell');
- settings.set_value('app-picker-layout', new GLib.Variant('aa{sv}', []));
- }),
- ));
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Fix for Dash to Dock'),
+ _('With the default Ubuntu Dock and other Dash To Dock forks, you may experience issues with Activities overview after you change Dock position or change monitors configuration. This option is enabled automatically if a replacement for the Dash is detected'),
+ itemFactory.newSwitch(),
+ 'fixUbuntuDock'
+ )
+ );
- optionList.push(itemFactory.getRowWidget(
- _('Remove App Grid Folders'),
- _('Removes all folders, folder apps move to root grid.'),
- itemFactory.newResetButton(() => {
- const settings = ExtensionUtils.getSettings('org.gnome.desktop.app-folders');
- settings.set_strv('folder-children', []);
- }),
- ));
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('V-Shell Modules that can be disabled in case of conflict or misbehavior:')
+ )
+ );
optionList.push(
- itemFactory.getRowWidget(
- _('Compatibility'),
+ itemFactory.getRowWidget(
+ _('AppFavorites'),
+ _('Pin/unpin app notification options'),
+ itemFactory.newSwitch(),
+ 'appFavoritesModule'
)
);
optionList.push(
- itemFactory.getRowWidget(
- _('Fix for Dash to Dock'),
- _('With the default Ubuntu Dock and other Dash To Dock forks, you may experience issues with Activities overview after you change Dock position or change monitors configuration. If you are experiencing such issues, try to enable this option, or disable/replace the dock extension.'),
+ itemFactory.getRowWidget(
+ _('AppDisplay / IconGrid'),
+ _('App grid customization and options'),
+ itemFactory.newSwitch(),
+ 'appDisplayModule'
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Dash'),
+ _('Dash customization and options, support for vertical orientation'),
+ itemFactory.newSwitch(),
+ 'dashModule'
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Layout'),
+ _('Hot corner options'),
+ itemFactory.newSwitch(),
+ 'layoutModule'
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('MessageTray'),
+ _('Notification position options'),
+ itemFactory.newSwitch(),
+ 'messageTrayModule'
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('OsdWindow'),
+ _('OSD position options'),
+ itemFactory.newSwitch(),
+ 'osdWindowModule'
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('OverlayKey'),
+ _('Overlay (Super/Window) key options'),
+ itemFactory.newSwitch(),
+ 'overlayKeyModule'
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Panel'),
+ _('Panel options'),
+ itemFactory.newSwitch(),
+ 'panelModule'
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Search'),
+ _('Search view and app search provider customization and options'),
+ itemFactory.newSwitch(),
+ 'searchModule'
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('SwipeTracker'),
+ _('Gestures for vertical workspace orientation'),
+ itemFactory.newSwitch(),
+ 'swipeTrackerModule'
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('WindowAttentionHandler'),
+ _('Window attention handler options'),
+ itemFactory.newSwitch(),
+ 'winAttentionHandlerModule'
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('WindowManager'),
+ _('Fixes an upstream bug in the minimization animation of a full-screen window'),
+ itemFactory.newSwitch(),
+ 'windowManagerModule'
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('WindowPreview'),
+ _('Window preview options, fixes an upstream bug that fills the system log with errors when you close a window from the overview or exit the overview with a gesture when any window is selected'),
+ itemFactory.newSwitch(),
+ 'windowPreviewModule'
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('Workspace'),
+ _('Fixes workspace preview allocations for vertical workspaces orientation and window scaling in static overview modes'),
itemFactory.newSwitch(),
- 'fixUbuntuDock',
+ 'workspaceModule'
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('WorkspaceAnimation'),
+ _('Static workspace animation option'),
+ itemFactory.newSwitch(),
+ 'workspaceAnimationModule'
+ )
+ );
+
+ optionList.push(
+ itemFactory.getRowWidget(
+ _('WorkspaceSwitcherPopup'),
+ _('Workspace switcher popup position options'),
+ itemFactory.newSwitch(),
+ 'workspaceSwitcherPopupModule'
)
);
@@ -1135,13 +1848,13 @@ function _getAboutOptionList() {
optionList.push(itemFactory.getRowWidget(
_('Version'),
null,
- itemFactory.newLabel(Me.metadata.version.toString()),
+ itemFactory.newLabel(Me.metadata.version.toString())
));
optionList.push(itemFactory.getRowWidget(
_('Reset all options'),
_('Set all options to default values.'),
- itemFactory.newOptionsResetButton(),
+ itemFactory.newOptionsResetButton()
));
@@ -1152,31 +1865,31 @@ function _getAboutOptionList() {
optionList.push(itemFactory.getRowWidget(
_('Homepage'),
_('Source code and more info about this extension'),
- itemFactory.newLinkButton('https://github.com/G-dH/vertical-workspaces'),
+ itemFactory.newLinkButton('https://github.com/G-dH/vertical-workspaces')
));
optionList.push(itemFactory.getRowWidget(
_('Changelog'),
_("See what's changed."),
- itemFactory.newLinkButton('https://github.com/G-dH/vertical-workspaces/blob/main/CHANGELOG.md'),
+ itemFactory.newLinkButton('https://github.com/G-dH/vertical-workspaces/blob/main/CHANGELOG.md')
));
optionList.push(itemFactory.getRowWidget(
_('GNOME Extensions'),
- _('Rate and comment the extension on GNOME Extensions site.'),
- itemFactory.newLinkButton('https://extensions.gnome.org/extension/5177'),
+ _('Rate and comment V-Shell on the GNOME Extensions site'),
+ itemFactory.newLinkButton('https://extensions.gnome.org/extension/5177')
));
optionList.push(itemFactory.getRowWidget(
_('Report a bug or suggest new feature'),
- null,
- itemFactory.newLinkButton('https://github.com/G-dH/vertical-workspaces/issues'),
+ _('Help me to help you!'),
+ itemFactory.newLinkButton('https://github.com/G-dH/vertical-workspaces/issues')
));
optionList.push(itemFactory.getRowWidget(
_('Buy Me a Coffee'),
- _('If you like this extension, you can help me with my coffee expenses.'),
- itemFactory.newLinkButton('https://buymeacoffee.com/georgdh'),
+ _('If you like V-Shell, you can help me with my coffee expenses'),
+ itemFactory.newLinkButton('https://buymeacoffee.com/georgdh')
));
return optionList;