Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bb69c75c70 | ||
|
|
f46cab04cb | ||
|
|
de47b50149 |
2
Makefile
2
Makefile
@@ -20,7 +20,7 @@ INSTALLNAME = zorin-taskbar@zorinos.com
|
||||
# in the metadata and in the generated zip-file.
|
||||
ifdef VERSION
|
||||
else
|
||||
VERSION = 56
|
||||
VERSION = 65
|
||||
endif
|
||||
|
||||
ifdef TARGET
|
||||
|
||||
229
appIcons.js
229
appIcons.js
@@ -22,40 +22,31 @@
|
||||
*/
|
||||
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Gio = imports.gi.Gio;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const GObject = imports.gi.GObject;
|
||||
const Signals = imports.signals;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
const Mainloop = imports.mainloop;
|
||||
import Clutter from 'gi://Clutter';
|
||||
import GLib from 'gi://GLib';
|
||||
import Gio from 'gi://Gio';
|
||||
import Graphene from 'gi://Graphene';
|
||||
import GObject from 'gi://GObject';
|
||||
import Mtk from 'gi://Mtk';
|
||||
import Shell from 'gi://Shell';
|
||||
import St from 'gi://St';
|
||||
|
||||
const Config = imports.misc.config;
|
||||
const AppDisplay = imports.ui.appDisplay;
|
||||
const AppMenu = imports.ui.appMenu;
|
||||
if (Config.PACKAGE_VERSION < '42') {
|
||||
const AppMenu = imports.ui.appDisplay;
|
||||
}
|
||||
const AppFavorites = imports.ui.appFavorites;
|
||||
const Dash = imports.ui.dash;
|
||||
const DND = imports.ui.dnd;
|
||||
const IconGrid = imports.ui.iconGrid;
|
||||
const Main = imports.ui.main;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
const Util = imports.misc.util;
|
||||
const Workspace = imports.ui.workspace;
|
||||
const BoxPointer = imports.ui.boxpointer;
|
||||
const ExtensionUtils = imports.misc.extensionUtils
|
||||
import * as AppDisplay from 'resource:///org/gnome/shell/ui/appDisplay.js';
|
||||
import * as AppMenu from 'resource:///org/gnome/shell/ui/appMenu.js';
|
||||
import * as Dash from 'resource:///org/gnome/shell/ui/dash.js';
|
||||
import * as DND from 'resource:///org/gnome/shell/ui/dnd.js';
|
||||
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||
import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
|
||||
import * as Util from 'resource:///org/gnome/shell/misc/util.js';
|
||||
import * as BoxPointer from 'resource:///org/gnome/shell/ui/boxpointer.js';
|
||||
import {EventEmitter} from 'resource:///org/gnome/shell/misc/signals.js';
|
||||
|
||||
const Me = ExtensionUtils.getCurrentExtension();
|
||||
const Utils = Me.imports.utils;
|
||||
const PanelSettings = Me.imports.panelSettings;
|
||||
const Taskbar = Me.imports.taskbar;
|
||||
const Progress = Me.imports.progress;
|
||||
const _ = imports.gettext.domain(Utils.TRANSLATION_DOMAIN).gettext;
|
||||
import * as Utils from './utils.js';
|
||||
import * as PanelSettings from './panelSettings.js';
|
||||
import * as Taskbar from './taskbar.js';
|
||||
import * as Progress from './progress.js';
|
||||
import {DTP_EXTENSION, SETTINGS, DESKTOPSETTINGS, EXTENSION_PATH} from './extension.js';
|
||||
import {gettext as _, ngettext} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||
|
||||
//timeout names
|
||||
const T2 = 'mouseScrollTimeout';
|
||||
@@ -73,7 +64,7 @@ const DOUBLE_CLICK_DELAY_MS = 450;
|
||||
|
||||
let LABEL_GAP = 5;
|
||||
let MAX_INDICATORS = 4;
|
||||
var DEFAULT_PADDING_SIZE = 4;
|
||||
export const DEFAULT_PADDING_SIZE = 4;
|
||||
|
||||
let DOT_STYLE = {
|
||||
DOTS: "DOTS",
|
||||
@@ -113,7 +104,7 @@ let tracker = Shell.WindowTracker.get_default();
|
||||
*
|
||||
*/
|
||||
|
||||
var TaskbarAppIcon = GObject.registerClass({
|
||||
export const TaskbarAppIcon = GObject.registerClass({
|
||||
}, class TaskbarAppIcon extends AppDisplay.AppIcon {
|
||||
|
||||
_init(appInfo, panel, iconParams, previewMenu, iconAnimator) {
|
||||
@@ -152,13 +143,13 @@ var TaskbarAppIcon = GObject.registerClass({
|
||||
|
||||
|
||||
this._dot.set_width(0);
|
||||
this._isGroupApps = Me.settings.get_boolean('group-apps');
|
||||
this._isGroupApps = SETTINGS.get_boolean('group-apps');
|
||||
|
||||
this._container = new St.Widget({ style_class: 'dtp-container', layout_manager: new Clutter.BinLayout() });
|
||||
this._dotsContainer = new St.Widget({ layout_manager: new Clutter.BinLayout() });
|
||||
this._dtpIconContainer = new St.Widget({ layout_manager: new Clutter.BinLayout(), style: getIconContainerStyle(panel.checkIfVertical()) });
|
||||
|
||||
this.remove_actor(this._iconContainer);
|
||||
this.remove_child(this._iconContainer);
|
||||
|
||||
this._dtpIconContainer.add_child(this._iconContainer);
|
||||
|
||||
@@ -208,7 +199,7 @@ var TaskbarAppIcon = GObject.registerClass({
|
||||
this._stateChangedId = this.app.connect('windows-changed', this.onWindowsChanged.bind(this));
|
||||
|
||||
if (!this.window) {
|
||||
if (Me.settings.get_boolean('isolate-monitors')) {
|
||||
if (SETTINGS.get_boolean('isolate-monitors')) {
|
||||
this._windowEnteredMonitorId = Utils.DisplayWrapper.getScreen().connect('window-entered-monitor', this.onWindowEnteredOrLeft.bind(this));
|
||||
this._windowLeftMonitorId = Utils.DisplayWrapper.getScreen().connect('window-left-monitor', this.onWindowEnteredOrLeft.bind(this));
|
||||
}
|
||||
@@ -234,12 +225,12 @@ var TaskbarAppIcon = GObject.registerClass({
|
||||
this._hoverChangeId = this.connect('notify::hover', () => this._onAppIconHoverChanged());
|
||||
|
||||
this._dtpSettingsSignalIds = [
|
||||
Me.settings.connect('changed::panel-positions', this._settingsChangeRefresh.bind(this)),
|
||||
Me.settings.connect('changed::dot-style-focused', this._settingsChangeRefresh.bind(this)),
|
||||
Me.settings.connect('changed::dot-style-unfocused', this._settingsChangeRefresh.bind(this)),
|
||||
Me.settings.connect('changed::panel-positions', this._settingsChangeRefresh.bind(this)),
|
||||
Me.settings.connect('changed::group-apps-label-max-width', this._updateWindowTitleStyle.bind(this)),
|
||||
Me.settings.connect('changed::group-apps-use-fixed-width', this._updateWindowTitleStyle.bind(this)),
|
||||
SETTINGS.connect('changed::panel-positions', this._settingsChangeRefresh.bind(this)),
|
||||
SETTINGS.connect('changed::dot-style-focused', this._settingsChangeRefresh.bind(this)),
|
||||
SETTINGS.connect('changed::dot-style-unfocused', this._settingsChangeRefresh.bind(this)),
|
||||
SETTINGS.connect('changed::panel-positions', this._settingsChangeRefresh.bind(this)),
|
||||
SETTINGS.connect('changed::group-apps-label-max-width', this._updateWindowTitleStyle.bind(this)),
|
||||
SETTINGS.connect('changed::group-apps-use-fixed-width', this._updateWindowTitleStyle.bind(this)),
|
||||
]
|
||||
|
||||
this._progressIndicator = new Progress.ProgressIndicator(this, panel.progressManager);
|
||||
@@ -252,8 +243,8 @@ var TaskbarAppIcon = GObject.registerClass({
|
||||
}
|
||||
|
||||
shouldShowTooltip() {
|
||||
if (!Me.settings.get_boolean('show-tooltip') ||
|
||||
(!this.isLauncher && Me.settings.get_boolean("show-window-previews") &&
|
||||
if (!SETTINGS.get_boolean('show-tooltip') ||
|
||||
(!this.isLauncher && SETTINGS.get_boolean("show-window-previews") &&
|
||||
this.getAppIconInterestingWindows().length > 0)) {
|
||||
return false;
|
||||
} else {
|
||||
@@ -264,7 +255,7 @@ var TaskbarAppIcon = GObject.registerClass({
|
||||
}
|
||||
|
||||
_onAppIconHoverChanged() {
|
||||
if (!Me.settings.get_boolean('show-window-previews') ||
|
||||
if (!SETTINGS.get_boolean('show-window-previews') ||
|
||||
(!this.window && !this._nWindows)) {
|
||||
return;
|
||||
}
|
||||
@@ -321,7 +312,7 @@ var TaskbarAppIcon = GObject.registerClass({
|
||||
}
|
||||
|
||||
for (let i = 0; i < this._dtpSettingsSignalIds.length; ++i) {
|
||||
Me.settings.disconnect(this._dtpSettingsSignalIds[i]);
|
||||
SETTINGS.disconnect(this._dtpSettingsSignalIds[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -354,7 +345,7 @@ var TaskbarAppIcon = GObject.registerClass({
|
||||
if (this.get_stage() == null)
|
||||
return;
|
||||
|
||||
let rect = new Meta.Rectangle();
|
||||
let rect = new Mtk.Rectangle();
|
||||
|
||||
[rect.x, rect.y] = this.get_transformed_position();
|
||||
[rect.width, rect.height] = this.get_transformed_size();
|
||||
@@ -366,7 +357,7 @@ var TaskbarAppIcon = GObject.registerClass({
|
||||
}
|
||||
|
||||
_onMouseScroll(actor, event) {
|
||||
let scrollAction = Me.settings.get_string('scroll-icon-action');
|
||||
let scrollAction = SETTINGS.get_string('scroll-icon-action');
|
||||
|
||||
if (scrollAction === 'NOTHING' || (!this.window && !this._nWindows)) {
|
||||
return;
|
||||
@@ -410,12 +401,12 @@ var TaskbarAppIcon = GObject.registerClass({
|
||||
if (!this._dashItemContainer.animatingOut)
|
||||
// don't draw and trigger more animations if the icon is in the middle of
|
||||
// being removed from the panel
|
||||
this._drawRunningIndicator(this._focusedDots, Me.settings.get_string('dot-style-focused'), true);
|
||||
this._drawRunningIndicator(this._focusedDots, SETTINGS.get_string('dot-style-focused'), true);
|
||||
});
|
||||
|
||||
this._unfocusedDots.connect('repaint', () => {
|
||||
if (!this._dashItemContainer.animatingOut)
|
||||
this._drawRunningIndicator(this._unfocusedDots, Me.settings.get_string('dot-style-unfocused'), false);
|
||||
this._drawRunningIndicator(this._unfocusedDots, SETTINGS.get_string('dot-style-unfocused'), false);
|
||||
});
|
||||
|
||||
this._dotsContainer.add_child(this._unfocusedDots);
|
||||
@@ -432,11 +423,11 @@ var TaskbarAppIcon = GObject.registerClass({
|
||||
}
|
||||
|
||||
_resetDots() {
|
||||
let position = PanelSettings.getPanelPosition(Me.settings, this.dtpPanel.monitor.index);
|
||||
let position = PanelSettings.getPanelPosition(SETTINGS, this.dtpPanel.monitor.index);
|
||||
let isHorizontalDots = position == DOT_POSITION.TOP || position == DOT_POSITION.BOTTOM;
|
||||
let sizeProp = isHorizontalDots ? 'width' : 'height';
|
||||
let focusedDotStyle = Me.settings.get_string('dot-style-focused');
|
||||
let unfocusedDotStyle = Me.settings.get_string('dot-style-unfocused');
|
||||
let focusedDotStyle = SETTINGS.get_string('dot-style-focused');
|
||||
let unfocusedDotStyle = SETTINGS.get_string('dot-style-unfocused');
|
||||
|
||||
this._focusedIsWide = this._isWideDotStyle(focusedDotStyle);
|
||||
this._unfocusedIsWide = this._isWideDotStyle(unfocusedDotStyle);
|
||||
@@ -465,9 +456,9 @@ var TaskbarAppIcon = GObject.registerClass({
|
||||
|
||||
_updateWindowTitleStyle() {
|
||||
if (this._windowTitle) {
|
||||
let useFixedWidth = Me.settings.get_boolean('group-apps-use-fixed-width');
|
||||
let useFixedWidth = SETTINGS.get_boolean('group-apps-use-fixed-width');
|
||||
let scaleFactor = Utils.getScaleFactor();
|
||||
let maxLabelWidth = Me.settings.get_int('group-apps-label-max-width') * scaleFactor;
|
||||
let maxLabelWidth = SETTINGS.get_int('group-apps-label-max-width') * scaleFactor;
|
||||
let variableWidth = !useFixedWidth || this.dtpPanel.checkIfVertical() || this.dtpPanel.taskbar.fullScrollView;
|
||||
|
||||
this._windowTitle[(maxLabelWidth > 0 ? 'show' : 'hide')]();
|
||||
@@ -504,8 +495,8 @@ var TaskbarAppIcon = GObject.registerClass({
|
||||
|
||||
_checkIfMonitorHasFocus() {
|
||||
return global.display.focus_window &&
|
||||
(!Me.settings.get_boolean('multi-monitors') || // only check same monitor index if multi window is enabled.
|
||||
!Me.settings.get_boolean('isolate-monitors') ||
|
||||
(!SETTINGS.get_boolean('multi-monitors') || // only check same monitor index if multi window is enabled.
|
||||
!SETTINGS.get_boolean('isolate-monitors') ||
|
||||
global.display.focus_window.get_monitor() === this.dtpPanel.monitor.index);
|
||||
}
|
||||
|
||||
@@ -540,7 +531,7 @@ var TaskbarAppIcon = GObject.registerClass({
|
||||
// We want to keep the item hovered while the menu is up
|
||||
this._menu.blockSourceEvents = true;
|
||||
|
||||
Main.uiGroup.add_actor(this._menu.actor);
|
||||
Main.uiGroup.add_child(this._menu.actor);
|
||||
this._menuManager.addMenu(this._menu);
|
||||
}
|
||||
this._menu.updateQuitText();
|
||||
@@ -561,7 +552,7 @@ var TaskbarAppIcon = GObject.registerClass({
|
||||
|
||||
_onOverviewWindowDragEnd(windowTracker) {
|
||||
this._timeoutsHandler.add([T4, 0, () => {
|
||||
if (Me.settings.get_boolean('isolate-workspaces'))
|
||||
if (SETTINGS.get_boolean('isolate-workspaces'))
|
||||
this._updateWindows()
|
||||
|
||||
this._displayProperIndicator()
|
||||
@@ -578,7 +569,7 @@ var TaskbarAppIcon = GObject.registerClass({
|
||||
|
||||
_displayProperIndicator() {
|
||||
let isFocused = this._isFocusedWindow();
|
||||
let position = PanelSettings.getPanelPosition(Me.settings, this.dtpPanel.monitor.index);
|
||||
let position = PanelSettings.getPanelPosition(SETTINGS, this.dtpPanel.monitor.index);
|
||||
let isHorizontalDots = position == DOT_POSITION.TOP || position == DOT_POSITION.BOTTOM;
|
||||
|
||||
this._setIconStyle(isFocused);
|
||||
@@ -713,20 +704,23 @@ var TaskbarAppIcon = GObject.registerClass({
|
||||
|
||||
if (button && button == 2 ) {
|
||||
if (modifiers & Clutter.ModifierType.SHIFT_MASK)
|
||||
buttonAction = Me.settings.get_string('shift-middle-click-action');
|
||||
buttonAction = SETTINGS.get_string('shift-middle-click-action');
|
||||
else
|
||||
buttonAction = Me.settings.get_string('middle-click-action');
|
||||
buttonAction = SETTINGS.get_string('middle-click-action');
|
||||
}
|
||||
else if (button && button == 1) {
|
||||
// fixed issue #1676 by checking for button 0 or 1 to also handle touchscreen
|
||||
// input, probably not the proper fix as i'm not aware button 0 should exist
|
||||
// but from using this fix for months it seems to not create any issues
|
||||
else if (button === 0 || button === 1) {
|
||||
let now = global.get_current_time()
|
||||
|
||||
doubleClick = now - this.lastClick < DOUBLE_CLICK_DELAY_MS
|
||||
this.lastClick = now
|
||||
|
||||
if (modifiers & Clutter.ModifierType.SHIFT_MASK)
|
||||
buttonAction = Me.settings.get_string('shift-click-action');
|
||||
buttonAction = SETTINGS.get_string('shift-click-action');
|
||||
else
|
||||
buttonAction = Me.settings.get_string('click-action');
|
||||
buttonAction = SETTINGS.get_string('click-action');
|
||||
}
|
||||
|
||||
let closePreview = () => this._previewMenu.close(true);
|
||||
@@ -918,7 +912,7 @@ var TaskbarAppIcon = GObject.registerClass({
|
||||
|
||||
_getRunningIndicatorColor(isFocused) {
|
||||
let color;
|
||||
const fallbackColor = new Clutter.Color({ red: 82, green: 148, blue: 226, alpha: 255 });
|
||||
const fallbackColor = new Utils.ColorUtils.Color({ red: 82, green: 148, blue: 226, alpha: 255 });
|
||||
|
||||
// Re-use the style - background color, and border width and color -
|
||||
// of the default dot
|
||||
@@ -938,7 +932,7 @@ var TaskbarAppIcon = GObject.registerClass({
|
||||
return;
|
||||
}
|
||||
|
||||
let position = PanelSettings.getPanelPosition(Me.settings, this.dtpPanel.monitor.index);
|
||||
let position = PanelSettings.getPanelPosition(SETTINGS, this.dtpPanel.monitor.index);
|
||||
let isHorizontalDots = position == DOT_POSITION.TOP || position == DOT_POSITION.BOTTOM;
|
||||
let bodyColor = this._getRunningIndicatorColor(isFocused);
|
||||
let [areaWidth, areaHeight] = area.get_surface_size();
|
||||
@@ -964,29 +958,29 @@ var TaskbarAppIcon = GObject.registerClass({
|
||||
if (type == DOT_STYLE.SOLID || type == DOT_STYLE.METRO) {
|
||||
if (type == DOT_STYLE.SOLID || n <= 1) {
|
||||
cr.translate(startX, startY);
|
||||
Clutter.cairo_set_source_color(cr, bodyColor);
|
||||
cr.setSourceColor(bodyColor);
|
||||
cr.newSubPath();
|
||||
cr.rectangle.apply(cr, [0, 0].concat(isHorizontalDots ? [areaSize, size] : [size, areaSize]));
|
||||
cr.fill();
|
||||
} else {
|
||||
let blackenedLength = (1 / 48) * areaSize; // need to scale with the SVG for the stacked highlight
|
||||
let darkenedLength = isFocused ? (2 / 48) * areaSize : (10 / 48) * areaSize;
|
||||
let blackenedColor = bodyColor.shade(.3);
|
||||
let darkenedColor = bodyColor.shade(.7);
|
||||
let blackenedColor = new Utils.ColorUtils.Color({ red: bodyColor.red * .3, green: bodyColor.green * .3, blue: bodyColor.blue * .3, alpha: bodyColor.alpha });
|
||||
let darkenedColor = new Utils.ColorUtils.Color({ red: bodyColor.red * .7, green: bodyColor.green * .7, blue: bodyColor.blue * .7, alpha: bodyColor.alpha });
|
||||
let solidDarkLength = areaSize - darkenedLength;
|
||||
let solidLength = solidDarkLength - blackenedLength;
|
||||
|
||||
cr.translate(startX, startY);
|
||||
|
||||
Clutter.cairo_set_source_color(cr, bodyColor);
|
||||
cr.setSourceColor(bodyColor);
|
||||
cr.newSubPath();
|
||||
cr.rectangle.apply(cr, [0, 0].concat(isHorizontalDots ? [solidLength, size] : [size, solidLength]));
|
||||
cr.fill();
|
||||
Clutter.cairo_set_source_color(cr, blackenedColor);
|
||||
cr.setSourceColor(blackenedColor);
|
||||
cr.newSubPath();
|
||||
cr.rectangle.apply(cr, isHorizontalDots ? [solidLength, 0, 1, size] : [0, solidLength, size, 1]);
|
||||
cr.fill();
|
||||
Clutter.cairo_set_source_color(cr, darkenedColor);
|
||||
cr.setSourceColor(darkenedColor);
|
||||
cr.newSubPath();
|
||||
cr.rectangle.apply(cr, isHorizontalDots ? [solidDarkLength, 0, darkenedLength, size] : [0, solidDarkLength, size, darkenedLength]);
|
||||
cr.fill();
|
||||
@@ -1062,7 +1056,7 @@ var TaskbarAppIcon = GObject.registerClass({
|
||||
|
||||
translate();
|
||||
|
||||
Clutter.cairo_set_source_color(cr, bodyColor);
|
||||
cr.setSourceColor(bodyColor);
|
||||
preDraw();
|
||||
for (let i = 0; i < n; i++) {
|
||||
cr.newSubPath();
|
||||
@@ -1141,7 +1135,7 @@ var TaskbarAppIcon = GObject.registerClass({
|
||||
});
|
||||
TaskbarAppIcon.prototype.scaleAndFade = TaskbarAppIcon.prototype.undoScaleAndFade = () => {};
|
||||
|
||||
function minimizeWindow(app, param, monitor){
|
||||
export function minimizeWindow(app, param, monitor){
|
||||
// Param true make all app windows minimize
|
||||
let windows = getInterestingWindows(app, monitor);
|
||||
let current_workspace = Utils.DisplayWrapper.getWorkspaceManager().get_active_workspace();
|
||||
@@ -1161,7 +1155,7 @@ function minimizeWindow(app, param, monitor){
|
||||
* By default only non minimized windows are activated.
|
||||
* This activates all windows in the current workspace.
|
||||
*/
|
||||
function activateAllWindows(app, monitor){
|
||||
export function activateAllWindows(app, monitor){
|
||||
|
||||
// First activate first window so workspace is switched if needed,
|
||||
// then activate all other app windows in the current workspace.
|
||||
@@ -1180,13 +1174,13 @@ function activateAllWindows(app, monitor){
|
||||
}
|
||||
}
|
||||
|
||||
function activateFirstWindow(app, monitor){
|
||||
export function activateFirstWindow(app, monitor){
|
||||
|
||||
let windows = getInterestingWindows(app, monitor);
|
||||
Main.activateWindow(windows[0]);
|
||||
}
|
||||
|
||||
function cycleThroughWindows(app, reversed, shouldMinimize, monitor) {
|
||||
export function cycleThroughWindows(app, reversed, shouldMinimize, monitor) {
|
||||
// Store for a little amount of time last clicked app and its windows
|
||||
// since the order changes upon window interaction
|
||||
let MEMORY_TIME=3000;
|
||||
@@ -1197,9 +1191,10 @@ function cycleThroughWindows(app, reversed, shouldMinimize, monitor) {
|
||||
app_windows.push("MINIMIZE");
|
||||
|
||||
if (recentlyClickedAppLoopId > 0)
|
||||
Mainloop.source_remove(recentlyClickedAppLoopId);
|
||||
GLib.Source.remove(recentlyClickedAppLoopId);
|
||||
|
||||
recentlyClickedAppLoopId = Mainloop.timeout_add(MEMORY_TIME, resetRecentlyClickedApp);
|
||||
recentlyClickedAppLoopId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
|
||||
MEMORY_TIME, resetRecentlyClickedApp);
|
||||
|
||||
// If there isn't already a list of windows for the current app,
|
||||
// or the stored list is outdated, use the current windows list.
|
||||
@@ -1227,9 +1222,9 @@ function cycleThroughWindows(app, reversed, shouldMinimize, monitor) {
|
||||
Main.activateWindow(recentlyClickedAppWindows[index]);
|
||||
}
|
||||
|
||||
function resetRecentlyClickedApp() {
|
||||
export function resetRecentlyClickedApp() {
|
||||
if (recentlyClickedAppLoopId > 0)
|
||||
Mainloop.source_remove(recentlyClickedAppLoopId);
|
||||
GLib.Source.remove(recentlyClickedAppLoopId);
|
||||
|
||||
recentlyClickedAppLoopId=0;
|
||||
recentlyClickedApp =null;
|
||||
@@ -1240,7 +1235,7 @@ function resetRecentlyClickedApp() {
|
||||
return false;
|
||||
}
|
||||
|
||||
function closeAllWindows(app, monitor) {
|
||||
export function closeAllWindows(app, monitor) {
|
||||
let windows = getInterestingWindows(app, monitor);
|
||||
for (let i = 0; i < windows.length; i++)
|
||||
windows[i].delete(global.get_current_time());
|
||||
@@ -1248,7 +1243,7 @@ function closeAllWindows(app, monitor) {
|
||||
|
||||
// Filter out unnecessary windows, for instance
|
||||
// nautilus desktop window.
|
||||
function getInterestingWindows(app, monitor, isolateMonitors) {
|
||||
export function getInterestingWindows(app, monitor, isolateMonitors) {
|
||||
let windows = (
|
||||
app ?
|
||||
app.get_windows() :
|
||||
@@ -1257,13 +1252,13 @@ function getInterestingWindows(app, monitor, isolateMonitors) {
|
||||
|
||||
// When using workspace or monitor isolation, we filter out windows
|
||||
// that are not in the current workspace or on the same monitor as the appicon
|
||||
if (Me.settings.get_boolean('isolate-workspaces'))
|
||||
if (SETTINGS.get_boolean('isolate-workspaces'))
|
||||
windows = windows.filter(function(w) {
|
||||
return w.get_workspace() &&
|
||||
w.get_workspace() == Utils.getCurrentWorkspace();
|
||||
});
|
||||
|
||||
if (monitor && Me.settings.get_boolean('multi-monitors') && (isolateMonitors || Me.settings.get_boolean('isolate-monitors'))) {
|
||||
if (monitor && SETTINGS.get_boolean('multi-monitors') && (isolateMonitors || SETTINGS.get_boolean('isolate-monitors'))) {
|
||||
windows = windows.filter(function(w) {
|
||||
return w.get_monitor() == monitor.index;
|
||||
});
|
||||
@@ -1272,17 +1267,17 @@ function getInterestingWindows(app, monitor, isolateMonitors) {
|
||||
return windows;
|
||||
}
|
||||
|
||||
function cssHexTocssRgba(cssHex, opacity) {
|
||||
var bigint = parseInt(cssHex.slice(1), 16);
|
||||
var r = (bigint >> 16) & 255;
|
||||
var g = (bigint >> 8) & 255;
|
||||
var b = bigint & 255;
|
||||
export function cssHexTocssRgba(cssHex, opacity) {
|
||||
let bigint = parseInt(cssHex.slice(1), 16);
|
||||
let r = (bigint >> 16) & 255;
|
||||
let g = (bigint >> 8) & 255;
|
||||
let b = bigint & 255;
|
||||
|
||||
return 'rgba(' + [r, g, b].join(',') + ',' + opacity + ')';
|
||||
}
|
||||
|
||||
function getIconPadding(monitorIndex) {
|
||||
let panelSize = PanelSettings.getPanelSize(Me.settings, monitorIndex);
|
||||
export function getIconPadding(monitorIndex) {
|
||||
let panelSize = PanelSettings.getPanelSize(SETTINGS, monitorIndex);
|
||||
let padding = Taskbar.APPICON_PADDING;
|
||||
let availSize = panelSize - Taskbar.MIN_ICON_SIZE - panelSize % 2;
|
||||
|
||||
@@ -1302,7 +1297,7 @@ function getIconPadding(monitorIndex) {
|
||||
* (https://github.com/deuill/shell-extension-quitfromdash)
|
||||
*/
|
||||
|
||||
class TaskbarSecondaryMenu extends AppMenu.AppMenu {
|
||||
export class TaskbarSecondaryMenu extends AppMenu.AppMenu {
|
||||
|
||||
constructor(source, side) {
|
||||
super(source, side);
|
||||
@@ -1324,7 +1319,7 @@ function getIconPadding(monitorIndex) {
|
||||
if (count == 1)
|
||||
quitFromTaskbarMenuText = _("Quit");
|
||||
else
|
||||
quitFromTaskbarMenuText = _("Quit") + ' ' + count + ' ' + _("Windows");
|
||||
quitFromTaskbarMenuText = ngettext('Quit %d Window', 'Quit %d Windows', count).format(count);
|
||||
|
||||
this._quitItem.label.set_text(quitFromTaskbarMenuText);
|
||||
}
|
||||
@@ -1339,16 +1334,19 @@ function getIconPadding(monitorIndex) {
|
||||
|
||||
if (windows.length == this._app.get_windows().length)
|
||||
this._app.request_quit()
|
||||
|
||||
GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, () => {
|
||||
windows.forEach((w) => !!w.get_compositor_private() && w.delete(time++));
|
||||
|
||||
Mainloop.idle_add(() =>
|
||||
windows.forEach((w) => !!w.get_compositor_private() && w.delete(time++)))
|
||||
return GLib.SOURCE_REMOVE;
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* This function is used for extendDashItemContainer
|
||||
*/
|
||||
function ItemShowLabel() {
|
||||
export function ItemShowLabel() {
|
||||
if (!this._labelText)
|
||||
return;
|
||||
|
||||
@@ -1411,7 +1409,7 @@ function ItemShowLabel() {
|
||||
time: duration,
|
||||
transition: 'easeOutQuad',
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* A wrapper class around the ShowAppsIcon class.
|
||||
@@ -1425,9 +1423,11 @@ function ItemShowLabel() {
|
||||
* use of this class in place of the original showAppsButton.
|
||||
*
|
||||
*/
|
||||
var ShowAppsIconWrapper = class {
|
||||
export const ShowAppsIconWrapper = class extends EventEmitter {
|
||||
|
||||
constructor(dtpPanel) {
|
||||
super();
|
||||
|
||||
this.realShowAppsIcon = new Dash.ShowAppsIcon();
|
||||
|
||||
/* the variable equivalent to toggleButton has a different name in the appIcon class
|
||||
@@ -1520,7 +1520,7 @@ function ItemShowLabel() {
|
||||
// We want to keep the item hovered while the menu is up
|
||||
this._menu.blockSourceEvents = true;
|
||||
|
||||
Main.uiGroup.add_actor(this._menu.actor);
|
||||
Main.uiGroup.add_child(this._menu.actor);
|
||||
this._menuManager.addMenu(this._menu);
|
||||
}
|
||||
}
|
||||
@@ -1541,7 +1541,7 @@ function ItemShowLabel() {
|
||||
}
|
||||
|
||||
shouldShowTooltip() {
|
||||
return Me.settings.get_boolean('show-tooltip') &&
|
||||
return SETTINGS.get_boolean('show-tooltip') &&
|
||||
(this.actor.hover && (!this._menu || !this._menu.isOpen));
|
||||
}
|
||||
|
||||
@@ -1549,12 +1549,11 @@ function ItemShowLabel() {
|
||||
this.realShowAppsIcon.destroy();
|
||||
}
|
||||
};
|
||||
Signals.addSignalMethods(ShowAppsIconWrapper.prototype);
|
||||
|
||||
/**
|
||||
* A menu for the showAppsIcon
|
||||
*/
|
||||
var MyShowAppsIconMenu = class extends PopupMenu.PopupMenu {
|
||||
export const MyShowAppsIconMenu = class extends PopupMenu.PopupMenu {
|
||||
|
||||
constructor(actor, dtpPanel) {
|
||||
super(actor, 0, dtpPanel.getPosition());
|
||||
@@ -1590,19 +1589,19 @@ var MyShowAppsIconMenu = class extends PopupMenu.PopupMenu {
|
||||
});
|
||||
|
||||
this._appendList(
|
||||
Me.settings.get_strv('panel-context-menu-commands'),
|
||||
Me.settings.get_strv('panel-context-menu-titles')
|
||||
SETTINGS.get_strv('panel-context-menu-commands'),
|
||||
SETTINGS.get_strv('panel-context-menu-titles')
|
||||
)
|
||||
|
||||
this._appendSeparator();
|
||||
|
||||
let lockTaskbarMenuItem = this._appendMenuItem(Me.settings.get_boolean('taskbar-locked') ? _('Unlock taskbar') : _('Lock taskbar'));
|
||||
let lockTaskbarMenuItem = this._appendMenuItem(SETTINGS.get_boolean('taskbar-locked') ? _('Unlock taskbar') : _('Lock taskbar'));
|
||||
lockTaskbarMenuItem.connect('activate', () => {
|
||||
Me.settings.set_boolean('taskbar-locked', !Me.settings.get_boolean('taskbar-locked'));
|
||||
SETTINGS.set_boolean('taskbar-locked', !SETTINGS.get_boolean('taskbar-locked'));
|
||||
});
|
||||
|
||||
let settingsMenuItem = this._appendMenuItem(_('Taskbar Settings'));
|
||||
settingsMenuItem.connect('activate', () => ExtensionUtils.openPrefs())
|
||||
settingsMenuItem.connect('activate', () => DTP_EXTENSION.openPreferences())
|
||||
|
||||
if(this.sourceActor == Main.layoutManager.dummyCursor) {
|
||||
this._appendSeparator();
|
||||
@@ -1614,7 +1613,7 @@ var MyShowAppsIconMenu = class extends PopupMenu.PopupMenu {
|
||||
|
||||
// Only add menu entries for commands that exist in path
|
||||
_appendItem(info) {
|
||||
if (Utils.checkIfCommandExists(info.cmd[0])) {
|
||||
if (GLib.find_program_in_path(info.cmd[0])) {
|
||||
let item = this._appendMenuItem(_(info.title));
|
||||
|
||||
item.connect('activate', function() {
|
||||
@@ -1632,8 +1631,8 @@ var MyShowAppsIconMenu = class extends PopupMenu.PopupMenu {
|
||||
return;
|
||||
}
|
||||
|
||||
for (var entry = 0; entry < commandList.length; entry++) {
|
||||
_appendItem({
|
||||
for (let entry = 0; entry < commandList.length; entry++) {
|
||||
this._appendItem({
|
||||
title: titleList[entry],
|
||||
cmd: commandList[entry].split(' ')
|
||||
});
|
||||
@@ -1654,10 +1653,10 @@ var MyShowAppsIconMenu = class extends PopupMenu.PopupMenu {
|
||||
};
|
||||
|
||||
|
||||
var getIconContainerStyle = function(isVertical) {
|
||||
export const getIconContainerStyle = function(isVertical) {
|
||||
let style = 'padding: ';
|
||||
|
||||
if (Me.settings.get_boolean('group-apps')) {
|
||||
if (SETTINGS.get_boolean('group-apps')) {
|
||||
style += (isVertical ? '0;' : '0 ' + DEFAULT_PADDING_SIZE + 'px;');
|
||||
} else {
|
||||
style += (isVertical ? '' : '0 ') + DEFAULT_PADDING_SIZE + 'px;';
|
||||
|
||||
25
debian/changelog
vendored
25
debian/changelog
vendored
@@ -1,3 +1,28 @@
|
||||
gnome-shell-extension-zorin-taskbar (65.2) noble; urgency=medium
|
||||
|
||||
* Separated floating rounded theme from intellihide as an independent
|
||||
styling option
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Thu, 27 Feb 2025 13:57:03 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (65.1) noble; urgency=medium
|
||||
|
||||
* Fixed various bugs
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Wed, 26 Feb 2025 12:20:34 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (65) noble; urgency=medium
|
||||
|
||||
* Re-based on upstream version 65
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Tue, 25 Feb 2025 22:29:43 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (56.11) jammy; urgency=medium
|
||||
|
||||
* Updated French translations
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Sun, 20 Oct 2024 17:58:19 +0100
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (56.10) jammy; urgency=medium
|
||||
|
||||
* Bug fix for window previews
|
||||
|
||||
4
debian/control
vendored
4
debian/control
vendored
@@ -8,6 +8,6 @@ Rules-Requires-Root: no
|
||||
|
||||
Package: gnome-shell-extension-zorin-taskbar
|
||||
Architecture: all
|
||||
Depends: ${misc:Depends}, gnome-shell (>= 42), gnome-shell (<< 45~)
|
||||
Depends: ${misc:Depends}, gnome-shell (>= 46), gnome-shell (<< 48~)
|
||||
Description: Zorin Taskbar extension
|
||||
A taskbar extension for the Zorin Desktop environment.
|
||||
A taskbar extension for the Zorin OS desktop.
|
||||
|
||||
4
debian/copyright
vendored
4
debian/copyright
vendored
@@ -2,8 +2,8 @@ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: gnome-shell-extension-zorin-taskbar
|
||||
|
||||
Files: *
|
||||
Copyright: 2016-2021, Jason DeRose (https://github.com/jderose9)
|
||||
2016-2023, Zorin OS Technologies Ltd.
|
||||
Copyright: 2016-2025, Jason DeRose (https://github.com/jderose9)
|
||||
2016-2025, Zorin OS Technologies Ltd.
|
||||
License: GPL-2+
|
||||
|
||||
Files: po/cs.po
|
||||
|
||||
@@ -55,16 +55,22 @@
|
||||
*
|
||||
*******************************************************************************/
|
||||
|
||||
const GLib = imports.gi.GLib;
|
||||
const Main = imports.ui.main;
|
||||
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
const Me = ExtensionUtils.getCurrentExtension();
|
||||
import GLib from 'gi://GLib';
|
||||
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||
import * as ExtensionUtils from 'resource:///org/gnome/shell/misc/extensionUtils.js';
|
||||
import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||
|
||||
const IDENTIFIER_UUID = "130cbc66-235c-4bd6-8571-98d2d8bba5e2";
|
||||
|
||||
var DesktopIconsUsableAreaClass = class {
|
||||
export class DesktopIconsUsableAreaClass {
|
||||
_checkIfExtensionIsEnabled(extension) {
|
||||
return (extension?.state === ExtensionUtils.ExtensionState.ENABLED) ||
|
||||
(extension?.state === ExtensionUtils.ExtensionState.ACTIVE);
|
||||
}
|
||||
|
||||
constructor() {
|
||||
const Me = Extension.lookupByURL(import.meta.url);
|
||||
this._UUID = Me.uuid;
|
||||
this._extensionManager = Main.extensionManager;
|
||||
this._timedMarginsID = 0;
|
||||
this._margins = {};
|
||||
@@ -73,7 +79,7 @@ var DesktopIconsUsableAreaClass = class {
|
||||
return;
|
||||
|
||||
// If an extension is being enabled and lacks the DesktopIconsUsableArea object, we can avoid launching a refresh
|
||||
if (extension.state === ExtensionUtils.ExtensionState.ENABLED) {
|
||||
if (this._checkIfExtensionIsEnabled(extension)) {
|
||||
this._sendMarginsToExtension(extension);
|
||||
return;
|
||||
}
|
||||
@@ -149,11 +155,11 @@ var DesktopIconsUsableAreaClass = class {
|
||||
_sendMarginsToExtension(extension) {
|
||||
// check that the extension is an extension that has the logic to accept
|
||||
// working margins
|
||||
if (extension?.state !== ExtensionUtils.ExtensionState.ENABLED)
|
||||
if (!this._checkIfExtensionIsEnabled(extension))
|
||||
return;
|
||||
|
||||
const usableArea = extension?.stateObj?.DesktopIconsUsableArea;
|
||||
if (usableArea?.uuid === IDENTIFIER_UUID)
|
||||
usableArea.setMarginsForExtension(Me.uuid, this._margins);
|
||||
if (usableArea?.uuid === IDENTIFIER_UUID)
|
||||
usableArea.setMarginsForExtension(this._UUID, this._margins);
|
||||
}
|
||||
}
|
||||
|
||||
192
extension.js
192
extension.js
@@ -17,130 +17,116 @@
|
||||
*/
|
||||
|
||||
|
||||
const Main = imports.ui.main;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Gio = imports.gi.Gio;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
const WindowManager = imports.ui.windowManager;
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
const Mainloop = imports.mainloop;
|
||||
const Signals = imports.signals;
|
||||
import Gio from 'gi://Gio';
|
||||
|
||||
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||
import {EventEmitter} from 'resource:///org/gnome/shell/misc/signals.js';
|
||||
import {Extension, gettext as _} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||
|
||||
import * as PanelManager from './panelManager.js';
|
||||
import * as AppIcons from './appIcons.js';
|
||||
|
||||
const Me = ExtensionUtils.getCurrentExtension();
|
||||
const { PanelManager } = Me.imports.panelManager;
|
||||
const Utils = Me.imports.utils;
|
||||
const AppIcons = Me.imports.appIcons;
|
||||
|
||||
const ZORIN_DASH_UUID = 'zorin-dash@zorinos.com';
|
||||
|
||||
let panelManager;
|
||||
let extensionChangedHandler;
|
||||
let startupCompleteHandler;
|
||||
let disabledZorinDash;
|
||||
let extensionSystem = (Main.extensionManager || imports.ui.extensionSystem);
|
||||
let extensionSystem = Main.extensionManager;
|
||||
|
||||
function init() {
|
||||
this._realHasOverview = Main.sessionMode.hasOverview;
|
||||
export let DTP_EXTENSION = null;
|
||||
export let SETTINGS = null;
|
||||
export let DESKTOPSETTINGS = null;
|
||||
export let TERMINALSETTINGS = null;
|
||||
export let PERSISTENTSTORAGE = null;
|
||||
export let EXTENSION_UUID = null;
|
||||
export let EXTENSION_PATH = null;
|
||||
|
||||
ExtensionUtils.initTranslations(Utils.TRANSLATION_DOMAIN);
|
||||
|
||||
//create an object that persists until gnome-shell is restarted, even if the extension is disabled
|
||||
Me.persistentStorage = {};
|
||||
}
|
||||
export default class ZorinTaskbarExtension extends Extension {
|
||||
constructor(metadata) {
|
||||
super(metadata);
|
||||
|
||||
function enable() {
|
||||
// The Zorin Dash extension might get enabled after this extension
|
||||
extensionChangedHandler = extensionSystem.connect('extension-state-changed', (data, extension) => {
|
||||
if (extension.uuid === ZORIN_DASH_UUID && extension.state === 1) {
|
||||
_enable();
|
||||
}
|
||||
});
|
||||
|
||||
//create a global object that can emit signals and conveniently expose functionalities to other extensions
|
||||
global.zorinTaskbar = {};
|
||||
Signals.addSignalMethods(global.zorinTaskbar);
|
||||
|
||||
_enable();
|
||||
}
|
||||
|
||||
function _enable() {
|
||||
let zorinDash = Main.extensionManager ?
|
||||
Main.extensionManager.lookup(ZORIN_DASH_UUID) : //gnome-shell >= 3.33.4
|
||||
ExtensionUtils.extensions[ZORIN_DASH_UUID];
|
||||
|
||||
if (zorinDash && zorinDash.stateObj && zorinDash.stateObj.dockManager) {
|
||||
// Disable Zorin Dash
|
||||
let extensionOrder = (extensionSystem.extensionOrder || extensionSystem._extensionOrder);
|
||||
|
||||
Utils.getStageTheme().get_theme().unload_stylesheet(zorinDash.stylesheet);
|
||||
zorinDash.stateObj.disable();
|
||||
disabledZorinDash = true;
|
||||
zorinDash.state = 2; //ExtensionState.DISABLED
|
||||
extensionOrder.splice(extensionOrder.indexOf(ZORIN_DASH_UUID), 1);
|
||||
|
||||
//reset to prevent conflicts with the Zorin Dash
|
||||
if (panelManager) {
|
||||
disable(true);
|
||||
}
|
||||
this._realHasOverview = Main.sessionMode.hasOverview;
|
||||
|
||||
//create an object that persists until gnome-shell is restarted, even if the extension is disabled
|
||||
PERSISTENTSTORAGE = {};
|
||||
}
|
||||
|
||||
if (panelManager) return; //already initialized
|
||||
enable() {
|
||||
DTP_EXTENSION = this;
|
||||
|
||||
Me.settings = ExtensionUtils.getSettings('org.gnome.shell.extensions.zorin-taskbar');
|
||||
Me.desktopSettings = ExtensionUtils.getSettings('org.gnome.desktop.interface');
|
||||
// The Zorin Dash extension might get enabled after this extension
|
||||
extensionChangedHandler = extensionSystem.connect('extension-state-changed', (data, extension) => {
|
||||
if (extension.uuid === ZORIN_DASH_UUID && extension.state === 1) {
|
||||
_enable(this);
|
||||
}
|
||||
});
|
||||
|
||||
//create a global object that can emit signals and conveniently expose functionalities to other extensions
|
||||
global.zorinTaskbar = new EventEmitter();
|
||||
|
||||
_enable(this);
|
||||
}
|
||||
|
||||
disable(reset = false) {
|
||||
panelManager.disable();
|
||||
|
||||
DTP_EXTENSION = null;
|
||||
SETTINGS = null;
|
||||
DESKTOPSETTINGS = null;
|
||||
TERMINALSETTINGS = null;
|
||||
panelManager = null;
|
||||
|
||||
if (!reset) {
|
||||
extensionSystem.disconnect(extensionChangedHandler);
|
||||
|
||||
if (disabledZorinDash) {
|
||||
disabledZorinDash = false;
|
||||
extensionSystem.enableExtension(ZORIN_DASH_UUID);
|
||||
}
|
||||
|
||||
delete global.zorinTaskbar;
|
||||
|
||||
AppIcons.resetRecentlyClickedApp();
|
||||
}
|
||||
|
||||
if (startupCompleteHandler) {
|
||||
Main.layoutManager.disconnect(startupCompleteHandler);
|
||||
startupCompleteHandler = null;
|
||||
}
|
||||
|
||||
Main.sessionMode.hasOverview = this._realHasOverview;
|
||||
}
|
||||
}
|
||||
|
||||
function _enable(extension) {
|
||||
let enabled = global.settings.get_strv('enabled-extensions');
|
||||
|
||||
if (enabled?.indexOf(ZORIN_DASH_UUID) >= 0) {
|
||||
disabledZorinDash = true;
|
||||
extensionSystem.disableExtension(ZORIN_DASH_UUID);
|
||||
}
|
||||
|
||||
if (panelManager)
|
||||
return panelManager.toggleDash(); // already initialized but Zorin Dash restored the original dash on disable
|
||||
|
||||
SETTINGS = extension.getSettings('org.gnome.shell.extensions.zorin-taskbar');
|
||||
DESKTOPSETTINGS = new Gio.Settings({schema_id: 'org.gnome.desktop.interface'});
|
||||
TERMINALSETTINGS = new Gio.Settings({schema_id: 'org.gnome.desktop.default-applications.terminal'})
|
||||
EXTENSION_UUID = extension.uuid
|
||||
EXTENSION_PATH = extension.path
|
||||
|
||||
Main.layoutManager.startInOverview = false;
|
||||
|
||||
if (Main.layoutManager._startingUp) {
|
||||
Main.sessionMode.hasOverview = false;
|
||||
Main.layoutManager.connect('startup-complete', () => {
|
||||
Main.sessionMode.hasOverview = this._realHasOverview
|
||||
startupCompleteHandler = Main.layoutManager.connect('startup-complete', () => {
|
||||
Main.sessionMode.hasOverview = extension._realHasOverview
|
||||
});
|
||||
}
|
||||
|
||||
panelManager = new PanelManager();
|
||||
panelManager = new PanelManager.PanelManager();
|
||||
|
||||
panelManager.enable();
|
||||
|
||||
Utils.removeKeybinding('open-application-menu');
|
||||
Utils.addKeybinding(
|
||||
'open-application-menu',
|
||||
new Gio.Settings({ schema_id: WindowManager.SHELL_KEYBINDINGS_SCHEMA }),
|
||||
() => {
|
||||
panelManager.primaryPanel.taskbar.popupFocusedAppSecondaryMenu();
|
||||
},
|
||||
Shell.ActionMode.NORMAL | Shell.ActionMode.POPUP
|
||||
);
|
||||
}
|
||||
|
||||
function disable(reset) {
|
||||
panelManager.disable();
|
||||
Me.settings.run_dispose();
|
||||
Me.desktopSettings.run_dispose();
|
||||
|
||||
delete Me.settings;
|
||||
panelManager = null;
|
||||
|
||||
Utils.removeKeybinding('open-application-menu');
|
||||
Utils.addKeybinding(
|
||||
'open-application-menu',
|
||||
new Gio.Settings({ schema_id: WindowManager.SHELL_KEYBINDINGS_SCHEMA }),
|
||||
Main.wm._toggleAppMenu.bind(Main.wm),
|
||||
Shell.ActionMode.NORMAL | Shell.ActionMode.POPUP
|
||||
);
|
||||
|
||||
if (!reset) {
|
||||
extensionSystem.disconnect(extensionChangedHandler);
|
||||
delete global.zorinTaskbar;
|
||||
|
||||
// Re-enable Zorin Dash if it was disabled by dash to panel
|
||||
if (disabledZorinDash && Main.sessionMode.allowExtensions) {
|
||||
(extensionSystem._callExtensionEnable || extensionSystem.enableExtension).call(extensionSystem, ZORIN_DASH_UUID);
|
||||
}
|
||||
|
||||
AppIcons.resetRecentlyClickedApp();
|
||||
}
|
||||
|
||||
Main.sessionMode.hasOverview = this._realHasOverview;
|
||||
}
|
||||
|
||||
@@ -18,21 +18,20 @@
|
||||
* This file is based on code from the Dash to Panel extension
|
||||
*/
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
import Clutter from 'gi://Clutter';
|
||||
import Meta from 'gi://Meta';
|
||||
import Shell from 'gi://Shell';
|
||||
import St from 'gi://St';
|
||||
|
||||
var GrabHelper = imports.ui.grabHelper;
|
||||
const Layout = imports.ui.layout;
|
||||
const Main = imports.ui.main;
|
||||
const OverviewControls = imports.ui.overviewControls;
|
||||
const PointerWatcher = imports.ui.pointerWatcher;
|
||||
import * as GrabHelper from 'resource:///org/gnome/shell/ui/grabHelper.js';
|
||||
import * as Layout from 'resource:///org/gnome/shell/ui/layout.js';
|
||||
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||
import * as OverviewControls from 'resource:///org/gnome/shell/ui/overviewControls.js';
|
||||
import * as PointerWatcher from 'resource:///org/gnome/shell/ui/pointerWatcher.js';
|
||||
|
||||
const Me = imports.misc.extensionUtils.getCurrentExtension();
|
||||
const Panel = Me.imports.panel;
|
||||
const Proximity = Me.imports.proximity;
|
||||
const Utils = Me.imports.utils;
|
||||
import * as Proximity from './proximity.js';
|
||||
import * as Utils from './utils.js';
|
||||
import {SETTINGS} from './extension.js';
|
||||
|
||||
var INTELLIHIDE_PRESSURE_THRESHOLD = 100;
|
||||
var INTELLIHIDE_PRESSURE_TIME = 1000;
|
||||
@@ -50,17 +49,16 @@ const MIN_UPDATE_MS = 250;
|
||||
const T1 = 'checkGrabTimeout';
|
||||
const T2 = 'limitUpdateTimeout';
|
||||
const T3 = 'postAnimateTimeout';
|
||||
const T4 = 'panelBoxClipTimeout';
|
||||
|
||||
var SIDE_CONTROLS_ANIMATION_TIME = OverviewControls.SIDE_CONTROLS_ANIMATION_TIME / (OverviewControls.SIDE_CONTROLS_ANIMATION_TIME > 1 ? 1000 : 1);
|
||||
const SIDE_CONTROLS_ANIMATION_TIME = OverviewControls.SIDE_CONTROLS_ANIMATION_TIME / (OverviewControls.SIDE_CONTROLS_ANIMATION_TIME > 1 ? 1000 : 1);
|
||||
|
||||
var Hold = {
|
||||
export const Hold = {
|
||||
NONE: 0,
|
||||
TEMPORARY: 1,
|
||||
PERMANENT: 2
|
||||
};
|
||||
|
||||
var Intellihide = class {
|
||||
export const Intellihide = class {
|
||||
|
||||
constructor(dtpPanel) {
|
||||
this._dtpPanel = dtpPanel;
|
||||
@@ -72,8 +70,8 @@ var Intellihide = class {
|
||||
this._signalsHandler = new Utils.GlobalSignalsHandler();
|
||||
this._timeoutsHandler = new Utils.TimeoutsHandler();
|
||||
|
||||
this._intellihideChangedId = Me.settings.connect('changed::intellihide', () => this._changeEnabledStatus());
|
||||
this._intellihideOnlySecondaryChangedId = Me.settings.connect('changed::intellihide-only-secondary', () => this._changeEnabledStatus());
|
||||
this._intellihideChangedId = SETTINGS.connect('changed::intellihide', () => this._changeEnabledStatus());
|
||||
this._intellihideOnlySecondaryChangedId = SETTINGS.connect('changed::intellihide-only-secondary', () => this._changeEnabledStatus());
|
||||
|
||||
this.enabled = false;
|
||||
this._changeEnabledStatus();
|
||||
@@ -94,11 +92,11 @@ var Intellihide = class {
|
||||
this._setTrackPanel(true);
|
||||
this._bindGeneralSignals();
|
||||
|
||||
if (Me.settings.get_boolean('intellihide-hide-from-windows')) {
|
||||
if (SETTINGS.get_boolean('intellihide-hide-from-windows')) {
|
||||
this._proximityWatchId = this._proximityManager.createWatch(
|
||||
this._panelBox.get_parent(),
|
||||
this._dtpPanel.monitor.index,
|
||||
Proximity.Mode[Me.settings.get_string('intellihide-behaviour')],
|
||||
Proximity.Mode[SETTINGS.get_string('intellihide-behaviour')],
|
||||
0, 0,
|
||||
overlap => {
|
||||
this._windowOverlap = overlap;
|
||||
@@ -109,7 +107,6 @@ var Intellihide = class {
|
||||
|
||||
this._setRevealMechanism();
|
||||
this._queueUpdatePanelPosition();
|
||||
this._toggleFloatingRoundedTheme();
|
||||
}
|
||||
|
||||
disable(reset) {
|
||||
@@ -127,17 +124,11 @@ var Intellihide = class {
|
||||
this._revealPanel(!reset);
|
||||
|
||||
this.enabled = false;
|
||||
|
||||
if (this._panelBox.has_style_class_name('floating')) {
|
||||
this._panelBox.remove_style_class_name('floating');
|
||||
|
||||
this._resetPanelGeometry();
|
||||
}
|
||||
}
|
||||
|
||||
destroy() {
|
||||
Me.settings.disconnect(this._intellihideChangedId);
|
||||
Me.settings.disconnect(this._intellihideOnlySecondaryChangedId);
|
||||
SETTINGS.disconnect(this._intellihideChangedId);
|
||||
SETTINGS.disconnect(this._intellihideOnlySecondaryChangedId);
|
||||
|
||||
if (this.enabled) {
|
||||
this.disable();
|
||||
@@ -169,27 +160,9 @@ var Intellihide = class {
|
||||
this.enable();
|
||||
}
|
||||
|
||||
_toggleFloatingRoundedTheme() {
|
||||
if (Me.settings.get_boolean('intellihide-floating-rounded-theme')) {
|
||||
if (!this._panelBox.has_style_class_name('floating'))
|
||||
this._panelBox.add_style_class_name('floating');
|
||||
} else {
|
||||
if (this._panelBox.has_style_class_name('floating'))
|
||||
this._panelBox.remove_style_class_name('floating');
|
||||
}
|
||||
|
||||
this._resetPanelGeometry();
|
||||
}
|
||||
|
||||
_resetPanelGeometry() {
|
||||
this._dtpPanel.geom = this._dtpPanel.getGeometry();
|
||||
this._dtpPanel._setPanelPosition();
|
||||
this._dtpPanel.dynamicTransparency.updateExternalStyle();
|
||||
}
|
||||
|
||||
_changeEnabledStatus() {
|
||||
let intellihide = Me.settings.get_boolean('intellihide');
|
||||
let onlySecondary = Me.settings.get_boolean('intellihide-only-secondary');
|
||||
let intellihide = SETTINGS.get_boolean('intellihide');
|
||||
let onlySecondary = SETTINGS.get_boolean('intellihide-only-secondary');
|
||||
let enabled = intellihide && !(this._dtpPanel.isPrimary && onlySecondary);
|
||||
|
||||
if (this.enabled !== enabled) {
|
||||
@@ -208,7 +181,7 @@ var Intellihide = class {
|
||||
}
|
||||
],
|
||||
[
|
||||
Me.settings,
|
||||
SETTINGS,
|
||||
[
|
||||
'changed::intellihide-use-pressure',
|
||||
'changed::intellihide-hide-from-windows',
|
||||
@@ -216,13 +189,6 @@ var Intellihide = class {
|
||||
],
|
||||
() => this.reset()
|
||||
],
|
||||
[
|
||||
Me.settings,
|
||||
[
|
||||
'changed::intellihide-floating-rounded-theme'
|
||||
],
|
||||
() => this._toggleFloatingRoundedTheme()
|
||||
],
|
||||
[
|
||||
this._panelBox,
|
||||
'notify::hover',
|
||||
@@ -273,7 +239,7 @@ var Intellihide = class {
|
||||
_setRevealMechanism() {
|
||||
let barriers = Meta.BackendCapabilities.BARRIERS
|
||||
|
||||
if ((global.backend.capabilities & barriers) === barriers && Me.settings.get_boolean('intellihide-use-pressure')) {
|
||||
if ((global.backend.capabilities & barriers) === barriers && SETTINGS.get_boolean('intellihide-use-pressure')) {
|
||||
this._edgeBarrier = this._createBarrier();
|
||||
this._pressureBarrier = new Layout.PressureBarrier(
|
||||
INTELLIHIDE_PRESSURE_THRESHOLD,
|
||||
@@ -373,13 +339,13 @@ var Intellihide = class {
|
||||
|
||||
//the user is trying to reveal the panel
|
||||
if (this._monitor.inFullscreen && !mouseBtnIsPressed) {
|
||||
return Me.settings.get_boolean('intellihide-show-in-fullscreen');
|
||||
return SETTINGS.get_boolean('intellihide-show-in-fullscreen');
|
||||
}
|
||||
|
||||
return !mouseBtnIsPressed;
|
||||
}
|
||||
|
||||
if (!Me.settings.get_boolean('intellihide-hide-from-windows')) {
|
||||
if (!SETTINGS.get_boolean('intellihide-hide-from-windows')) {
|
||||
return this._panelBox.hover;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"extension-id": "zorin-taskbar",
|
||||
"uuid": "zorin-taskbar@zorinos.com",
|
||||
"name": "Zorin Taskbar",
|
||||
"description": "A taskbar extension for the Zorin Desktop environment.",
|
||||
"shell-version": [ "42", "43", "44" ],
|
||||
"gettext-domain": "zorin-taskbar",
|
||||
"version": 56
|
||||
"extension-id": "zorin-taskbar",
|
||||
"uuid": "zorin-taskbar@zorinos.com",
|
||||
"name": "Zorin Taskbar",
|
||||
"description": "A taskbar extension for the Zorin OS desktop.",
|
||||
"shell-version": [ "46", "47" ],
|
||||
"gettext-domain": "zorin-taskbar",
|
||||
"version": 65
|
||||
}
|
||||
|
||||
143
overview.js
143
overview.js
@@ -20,24 +20,18 @@
|
||||
* Some code was also adapted from the upstream Gnome Shell source code.
|
||||
*/
|
||||
|
||||
const Me = imports.misc.extensionUtils.getCurrentExtension();
|
||||
const Intellihide = Me.imports.intellihide;
|
||||
const Utils = Me.imports.utils;
|
||||
import * as Intellihide from './intellihide.js';
|
||||
import * as Utils from './utils.js';
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Main = imports.ui.main;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const Gdk = imports.gi.Gdk;
|
||||
const Gio = imports.gi.Gio;
|
||||
const Mainloop = imports.mainloop;
|
||||
const IconGrid = imports.ui.iconGrid;
|
||||
const { OverviewActor } = imports.ui.overview;
|
||||
const Workspace = imports.ui.workspace;
|
||||
const St = imports.gi.St;
|
||||
const WorkspaceThumbnail = imports.ui.workspaceThumbnail;
|
||||
|
||||
const Meta = imports.gi.Meta;
|
||||
import Clutter from 'gi://Clutter';
|
||||
import Gio from 'gi://Gio';
|
||||
import Shell from 'gi://Shell';
|
||||
import St from 'gi://St';
|
||||
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||
import * as WindowManager from 'resource:///org/gnome/shell/ui/windowManager.js';
|
||||
import {WindowPreview} from 'resource:///org/gnome/shell/ui/windowPreview.js';
|
||||
import {InjectionManager} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||
import {SETTINGS} from './extension.js';
|
||||
|
||||
const GS_HOTKEYS_KEY = 'switch-to-application-';
|
||||
const OVERLAY_TIMEOUT = 750;
|
||||
@@ -52,9 +46,10 @@ const LABEL_MARGIN = 60;
|
||||
const T1 = 'swipeEndTimeout';
|
||||
const T2 = 'numberOverlayTimeout';
|
||||
|
||||
var Overview = class {
|
||||
export const Overview = class {
|
||||
|
||||
constructor() {
|
||||
this._injectionManager = new InjectionManager();
|
||||
this._numHotkeys = 10;
|
||||
}
|
||||
|
||||
@@ -70,15 +65,15 @@ var Overview = class {
|
||||
this._optionalHotKeys();
|
||||
this._optionalNumberOverlay();
|
||||
|
||||
this._toggleDash();
|
||||
this._adaptAlloc(true);
|
||||
this.toggleDash();
|
||||
this._adaptAlloc();
|
||||
|
||||
this._signalsHandler.add([
|
||||
Me.settings,
|
||||
SETTINGS,
|
||||
[
|
||||
'changed::panel-sizes'
|
||||
],
|
||||
() => this._toggleDash()
|
||||
() => this.toggleDash()
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -86,16 +81,16 @@ var Overview = class {
|
||||
this._signalsHandler.destroy();
|
||||
this._injectionsHandler.destroy();
|
||||
this._timeoutsHandler.destroy();
|
||||
this._injectionManager.clear();
|
||||
|
||||
this._toggleDash(true);
|
||||
this._adaptAlloc();
|
||||
this.toggleDash(true);
|
||||
|
||||
// Remove key bindings
|
||||
this._disableHotKeys();
|
||||
this._disableExtraShortcut();
|
||||
}
|
||||
|
||||
_toggleDash(visible) {
|
||||
toggleDash(visible) {
|
||||
if (visible === undefined) {
|
||||
visible = false;
|
||||
}
|
||||
@@ -108,41 +103,39 @@ var Overview = class {
|
||||
overviewControls.dash.set_height(height);
|
||||
}
|
||||
|
||||
_adaptAlloc(enable) {
|
||||
_adaptAlloc() {
|
||||
let overviewControls = Main.overview._overview._controls
|
||||
let proto = Object.getPrototypeOf(overviewControls)
|
||||
let allocFunc = null
|
||||
|
||||
if (enable)
|
||||
allocFunc = (box) => {
|
||||
let focusedPanel = this._panel.panelManager.focusedMonitorPanel
|
||||
|
||||
if (focusedPanel) {
|
||||
let position = focusedPanel.geom.position
|
||||
let isBottom = position == St.Side.BOTTOM
|
||||
this._injectionManager.overrideMethod(Object.getPrototypeOf(overviewControls), 'vfunc_allocate',
|
||||
(originalAllocate) =>
|
||||
(box) => {
|
||||
let focusedPanel = this._panel.panelManager.focusedMonitorPanel
|
||||
|
||||
if (focusedPanel) {
|
||||
let position = focusedPanel.geom.position
|
||||
let isBottom = position == St.Side.BOTTOM
|
||||
|
||||
if (focusedPanel.intellihide?.enabled) {
|
||||
// Panel intellihide is enabled (struts aren't taken into account on overview allocation),
|
||||
// dynamically modify the overview box to follow the reveal/hide animation
|
||||
let { transitioning, finalState, progress } = overviewControls._stateAdjustment.getStateTransitionParams()
|
||||
let size = focusedPanel.geom[focusedPanel.checkIfVertical() ? 'w' : 'h'] *
|
||||
(transitioning ? Math.abs((finalState != 0 ? 0 : 1) - progress) : 1)
|
||||
if (focusedPanel.intellihide?.enabled) {
|
||||
// Panel intellihide is enabled (struts aren't taken into account on overview allocation),
|
||||
// dynamically modify the overview box to follow the reveal/hide animation
|
||||
let { transitioning, finalState, progress } = overviewControls._stateAdjustment.getStateTransitionParams()
|
||||
let size = focusedPanel.geom[focusedPanel.checkIfVertical() ? 'w' : 'h'] *
|
||||
(transitioning ? Math.abs((finalState != 0 ? 0 : 1) - progress) : 1)
|
||||
|
||||
if (isBottom || position == St.Side.RIGHT)
|
||||
box[focusedPanel.fixedCoord.c2] -= size
|
||||
else
|
||||
box[focusedPanel.fixedCoord.c1] += size
|
||||
} else if (isBottom)
|
||||
// The default overview allocation is very good and takes into account external
|
||||
// struts, everywhere but the bottom where the dash is usually fixed anyway.
|
||||
// If there is a bottom panel under the dash location, give it some space here
|
||||
box.y2 -= focusedPanel.geom.h
|
||||
if (isBottom || position == St.Side.RIGHT)
|
||||
box[focusedPanel.fixedCoord.c2] -= size
|
||||
else
|
||||
box[focusedPanel.fixedCoord.c1] += size
|
||||
} else if (isBottom)
|
||||
// The default overview allocation is very good and takes into account external
|
||||
// struts, everywhere but the bottom where the dash is usually fixed anyway.
|
||||
// If there is a bottom panel under the dash location, give it some space here
|
||||
box.y2 -= focusedPanel.geom.h
|
||||
}
|
||||
|
||||
originalAllocate.call(overviewControls, box)
|
||||
}
|
||||
|
||||
proto.vfunc_allocate.call(overviewControls, box)
|
||||
}
|
||||
|
||||
Utils.hookVfunc(proto, 'allocate', allocFunc)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -188,19 +181,19 @@ var Overview = class {
|
||||
}
|
||||
|
||||
this._signalsHandler.add([
|
||||
Me.settings,
|
||||
SETTINGS,
|
||||
'changed::isolate-workspaces',
|
||||
() => {
|
||||
this._panel.panelManager.allPanels.forEach(p => p.taskbar.resetAppIcons());
|
||||
|
||||
if (Me.settings.get_boolean('isolate-workspaces'))
|
||||
if (SETTINGS.get_boolean('isolate-workspaces'))
|
||||
enable();
|
||||
else
|
||||
disable();
|
||||
}
|
||||
]);
|
||||
|
||||
if (Me.settings.get_boolean('isolate-workspaces'))
|
||||
if (SETTINGS.get_boolean('isolate-workspaces'))
|
||||
enable();
|
||||
}
|
||||
|
||||
@@ -224,7 +217,7 @@ var Overview = class {
|
||||
let seenAppCount = seenApps[appIcon.app];
|
||||
let windowCount = appIcon.window || appIcon._hotkeysCycle ? seenAppCount : appIcon._nWindows;
|
||||
|
||||
if (Me.settings.get_boolean('shortcut-previews') && windowCount > 1 &&
|
||||
if (SETTINGS.get_boolean('shortcut-previews') && windowCount > 1 &&
|
||||
!(modifiers & ~(Clutter.ModifierType.MOD1_MASK | Clutter.ModifierType.SUPER_MASK))) { //ignore the alt (MOD1_MASK) and super key (SUPER_MASK)
|
||||
if (this._hotkeyPreviewCycleInfo && this._hotkeyPreviewCycleInfo.appIcon != appIcon) {
|
||||
this._endHotkeyPreviewCycle();
|
||||
@@ -278,14 +271,14 @@ var Overview = class {
|
||||
|
||||
_optionalHotKeys() {
|
||||
this._hotKeysEnabled = false;
|
||||
if (Me.settings.get_boolean('hot-keys'))
|
||||
if (SETTINGS.get_boolean('hot-keys'))
|
||||
this._enableHotKeys();
|
||||
|
||||
this._signalsHandler.add([
|
||||
Me.settings,
|
||||
SETTINGS,
|
||||
'changed::hot-keys',
|
||||
() => {
|
||||
if (Me.settings.get_boolean('hot-keys'))
|
||||
if (SETTINGS.get_boolean('hot-keys'))
|
||||
this._enableHotKeys();
|
||||
else
|
||||
this._disableHotKeys();
|
||||
@@ -310,12 +303,12 @@ var Overview = class {
|
||||
}
|
||||
|
||||
// Setup keyboard bindings for taskbar elements
|
||||
let shortcutNumKeys = Me.settings.get_string('shortcut-num-keys');
|
||||
let shortcutNumKeys = SETTINGS.get_string('shortcut-num-keys');
|
||||
let bothNumKeys = shortcutNumKeys == 'BOTH';
|
||||
let keys = [];
|
||||
let prefixModifiers = Clutter.ModifierType.SUPER_MASK
|
||||
|
||||
if (Me.settings.get_string('hotkey-prefix-text') == 'SuperAlt')
|
||||
if (SETTINGS.get_string('hotkey-prefix-text') == 'SuperAlt')
|
||||
prefixModifiers |= Clutter.ModifierType.MOD1_MASK
|
||||
|
||||
if (bothNumKeys || shortcutNumKeys == 'NUM_ROW') {
|
||||
@@ -337,13 +330,13 @@ var Overview = class {
|
||||
for (let i = 0; i < this._numHotkeys; i++) {
|
||||
let appNum = i;
|
||||
|
||||
Utils.addKeybinding(key + (i + 1), Me.settings, () => this._activateApp(appNum, modifiers));
|
||||
Utils.addKeybinding(key + (i + 1), SETTINGS, () => this._activateApp(appNum, modifiers));
|
||||
}
|
||||
}, this);
|
||||
|
||||
this._hotKeysEnabled = true;
|
||||
|
||||
if (Me.settings.get_string('hotkeys-overlay-combo') === 'ALWAYS')
|
||||
if (SETTINGS.get_string('hotkeys-overlay-combo') === 'ALWAYS')
|
||||
this.taskbar.toggleNumberOverlay(true);
|
||||
}
|
||||
|
||||
@@ -360,7 +353,7 @@ var Overview = class {
|
||||
}, this);
|
||||
|
||||
if (Main.wm._switchToApplication) {
|
||||
let gsSettings = new Gio.Settings({ schema_id: imports.ui.windowManager.SHELL_KEYBINDINGS_SCHEMA });
|
||||
let gsSettings = new Gio.Settings({ schema_id: WindowManager.SHELL_KEYBINDINGS_SCHEMA });
|
||||
|
||||
for (let i = 1; i < 10; ++i) {
|
||||
Utils.addKeybinding(GS_HOTKEYS_KEY + i, gsSettings, Main.wm._switchToApplication.bind(Main.wm));
|
||||
@@ -374,38 +367,38 @@ var Overview = class {
|
||||
|
||||
_optionalNumberOverlay() {
|
||||
// Enable extra shortcut
|
||||
if (Me.settings.get_boolean('hot-keys'))
|
||||
if (SETTINGS.get_boolean('hot-keys'))
|
||||
this._enableExtraShortcut();
|
||||
|
||||
this._signalsHandler.add([
|
||||
Me.settings,
|
||||
SETTINGS,
|
||||
'changed::hot-keys',
|
||||
this._checkHotkeysOptions.bind(this)
|
||||
], [
|
||||
Me.settings,
|
||||
SETTINGS,
|
||||
'changed::hotkeys-overlay-combo',
|
||||
() => {
|
||||
if (Me.settings.get_boolean('hot-keys') && Me.settings.get_string('hotkeys-overlay-combo') === 'ALWAYS')
|
||||
if (SETTINGS.get_boolean('hot-keys') && SETTINGS.get_string('hotkeys-overlay-combo') === 'ALWAYS')
|
||||
this.taskbar.toggleNumberOverlay(true);
|
||||
else
|
||||
this.taskbar.toggleNumberOverlay(false);
|
||||
}
|
||||
], [
|
||||
Me.settings,
|
||||
SETTINGS,
|
||||
'changed::shortcut-num-keys',
|
||||
() => this._resetHotkeys()
|
||||
]);
|
||||
}
|
||||
|
||||
_checkHotkeysOptions() {
|
||||
if (Me.settings.get_boolean('hot-keys'))
|
||||
if (SETTINGS.get_boolean('hot-keys'))
|
||||
this._enableExtraShortcut();
|
||||
else
|
||||
this._disableExtraShortcut();
|
||||
}
|
||||
|
||||
_enableExtraShortcut() {
|
||||
Utils.addKeybinding('shortcut', Me.settings, () => this._showOverlay(true));
|
||||
Utils.addKeybinding('shortcut', SETTINGS, () => this._showOverlay(true));
|
||||
}
|
||||
|
||||
_disableExtraShortcut() {
|
||||
@@ -419,7 +412,7 @@ var Overview = class {
|
||||
}
|
||||
|
||||
// Restart the counting if the shortcut is pressed again
|
||||
let hotkey_option = Me.settings.get_string('hotkeys-overlay-combo');
|
||||
let hotkey_option = SETTINGS.get_string('hotkeys-overlay-combo');
|
||||
|
||||
if (hotkey_option === 'NEVER')
|
||||
return;
|
||||
|
||||
278
panel.js
278
panel.js
@@ -27,45 +27,37 @@
|
||||
* Some code was also adapted from the upstream Gnome Shell source code.
|
||||
*/
|
||||
|
||||
const Me = imports.misc.extensionUtils.getCurrentExtension();
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Config = imports.misc.config;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const GObject = imports.gi.GObject;
|
||||
const Gi = imports._gi;
|
||||
const Gio = imports.gi.Gio;
|
||||
const AppIcons = Me.imports.appIcons;
|
||||
const Utils = Me.imports.utils;
|
||||
const { Taskbar, TaskbarItemContainer } = Me.imports.taskbar;
|
||||
const Pos = Me.imports.panelPositions;
|
||||
const PanelSettings = Me.imports.panelSettings;
|
||||
const { PanelStyle } = Me.imports.panelStyle;
|
||||
const Main = imports.ui.main;
|
||||
const Mainloop = imports.mainloop;
|
||||
const Dash = imports.ui.dash;
|
||||
const CtrlAltTab = imports.ui.ctrlAltTab;
|
||||
const GSPanel = imports.ui.panel;
|
||||
const PanelMenu = imports.ui.panelMenu;
|
||||
const St = imports.gi.St;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Pango = imports.gi.Pango;
|
||||
const DND = imports.ui.dnd;
|
||||
const Shell = imports.gi.Shell;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
const IconGrid = imports.ui.iconGrid;
|
||||
const DateMenu = imports.ui.dateMenu;
|
||||
const Volume = imports.ui.status.volume;
|
||||
const Progress = Me.imports.progress;
|
||||
import Clutter from 'gi://Clutter';
|
||||
import Gio from 'gi://Gio';
|
||||
import GObject from 'gi://GObject';
|
||||
import * as AppIcons from './appIcons.js';
|
||||
import * as Utils from './utils.js';
|
||||
import * as Taskbar from './taskbar.js';
|
||||
import * as TaskbarItemContainer from './taskbar.js';
|
||||
import * as Pos from './panelPositions.js';
|
||||
import * as PanelSettings from './panelSettings.js';
|
||||
import * as PanelStyle from './panelStyle.js';
|
||||
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||
import * as Dash from 'resource:///org/gnome/shell/ui/dash.js';
|
||||
import * as CtrlAltTab from 'resource:///org/gnome/shell/ui/ctrlAltTab.js';
|
||||
import * as PanelMenu from 'resource:///org/gnome/shell/ui/panelMenu.js';
|
||||
import St from 'gi://St';
|
||||
import Meta from 'gi://Meta';
|
||||
import Pango from 'gi://Pango';
|
||||
import * as DND from 'resource:///org/gnome/shell/ui/dnd.js';
|
||||
import Shell from 'gi://Shell';
|
||||
import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
|
||||
import * as DateMenu from 'resource:///org/gnome/shell/ui/dateMenu.js';
|
||||
import * as Volume from 'resource:///org/gnome/shell/ui/status/volume.js';
|
||||
import * as Progress from './progress.js';
|
||||
|
||||
const Intellihide = Me.imports.intellihide;
|
||||
const Transparency = Me.imports.transparency;
|
||||
const _ = imports.gettext.domain(Me.imports.utils.TRANSLATION_DOMAIN).gettext;
|
||||
import * as Intellihide from './intellihide.js';
|
||||
import * as Transparency from './transparency.js';
|
||||
import {SETTINGS, DESKTOPSETTINGS, PERSISTENTSTORAGE, EXTENSION_PATH} from './extension.js';
|
||||
import {gettext as _, InjectionManager} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||
|
||||
let tracker = Shell.WindowTracker.get_default();
|
||||
var panelBoxes = ['_leftBox', '_centerBox', '_rightBox'];
|
||||
|
||||
var SHOW_DESKTOP_ICON = Me.path + '/img/show-desktop-symbolic.svg';
|
||||
export const panelBoxes = ['_leftBox', '_centerBox', '_rightBox'];
|
||||
|
||||
//timeout names
|
||||
const T2 = 'startIntellihideTimeout';
|
||||
@@ -78,7 +70,7 @@ const SHOW_SHOWDESKTOP_TIME = 200;
|
||||
|
||||
const FLOATING_MARGIN = 8;
|
||||
|
||||
var Panel = GObject.registerClass({
|
||||
export const Panel = GObject.registerClass({
|
||||
}, class Panel extends St.Widget {
|
||||
|
||||
_init(panelManager, monitor, panelBox, isStandalone) {
|
||||
@@ -86,9 +78,10 @@ var Panel = GObject.registerClass({
|
||||
|
||||
this._timeoutsHandler = new Utils.TimeoutsHandler();
|
||||
this._signalsHandler = new Utils.GlobalSignalsHandler();
|
||||
this._injectionManager = new InjectionManager();
|
||||
|
||||
this.panelManager = panelManager;
|
||||
this.panelStyle = new PanelStyle();
|
||||
this.panelStyle = new PanelStyle.PanelStyle();
|
||||
|
||||
this.monitor = monitor;
|
||||
this.panelBox = panelBox;
|
||||
@@ -97,7 +90,7 @@ var Panel = GObject.registerClass({
|
||||
// so in this case use isPrimary to get the panel on the primary dtp monitor, which
|
||||
// might be different from the system's primary monitor.
|
||||
this.isStandalone = isStandalone;
|
||||
this.isPrimary = !isStandalone || (Me.settings.get_boolean('stockgs-keep-top-panel') &&
|
||||
this.isPrimary = !isStandalone || (SETTINGS.get_boolean('stockgs-keep-top-panel') &&
|
||||
monitor == panelManager.dtpPrimaryMonitor);
|
||||
|
||||
this._sessionStyle = null;
|
||||
@@ -131,7 +124,7 @@ var Panel = GObject.registerClass({
|
||||
|
||||
this._setPanelMenu(systemMenuInfo.name, systemMenuInfo.constructor, this.panel);
|
||||
this._setPanelMenu('dateMenu', DateMenu.DateMenuButton, this.panel);
|
||||
this._setPanelMenu('activities', GSPanel.ActivitiesButton, this.panel);
|
||||
this._setPanelMenu('activities', Main.panel.statusArea.activities.constructor, this.panel);
|
||||
|
||||
this.panel.add_child(this._leftBox);
|
||||
this.panel.add_child(this._centerBox);
|
||||
@@ -146,8 +139,11 @@ var Panel = GObject.registerClass({
|
||||
['activities', systemMenuInfo.name, 'dateMenu'].forEach(b => {
|
||||
let container = this.statusArea[b].container;
|
||||
let parent = container.get_parent();
|
||||
let siblings = parent.get_children();
|
||||
let index = siblings.indexOf(container);
|
||||
|
||||
container._dtpOriginalParent = parent;
|
||||
container._dtpOriginalIndex = index && index == siblings.length - 1 ? -1: index;
|
||||
parent ? parent.remove_child(container) : null;
|
||||
this.panel.add_child(container);
|
||||
});
|
||||
@@ -184,21 +180,23 @@ var Panel = GObject.registerClass({
|
||||
enable () {
|
||||
let { name: systemMenuName } = Utils.getSystemMenuInfo();
|
||||
|
||||
if (this.statusArea[systemMenuName]) {
|
||||
Utils.getIndicators(this.statusArea[systemMenuName]._volume)._dtpIgnoreScroll = 1;
|
||||
if (this.statusArea[systemMenuName] && this.statusArea[systemMenuName]._volumeOutput) {
|
||||
Utils.getIndicators(this.statusArea[systemMenuName]._volumeOutput)._dtpIgnoreScroll = 1;
|
||||
}
|
||||
|
||||
this._toggleFloatingRoundedTheme();
|
||||
|
||||
this.geom = this.getGeometry();
|
||||
|
||||
|
||||
this._setPanelPosition();
|
||||
|
||||
if (!this.isStandalone) {
|
||||
Utils.hookVfunc(Object.getPrototypeOf(this.panel), 'allocate', (box) => this._mainPanelAllocate(box));
|
||||
this._injectionManager.overrideMethod(Object.getPrototypeOf(this.panel), 'vfunc_allocate', () => (box) => this._mainPanelAllocate(box));
|
||||
|
||||
// remove the extra space before the clock when the message-indicator is displayed
|
||||
if (DateMenu.IndicatorPad) {
|
||||
Utils.hookVfunc(DateMenu.IndicatorPad.prototype, 'get_preferred_width', () => [0,0]);
|
||||
Utils.hookVfunc(DateMenu.IndicatorPad.prototype, 'get_preferred_height', () => [0,0]);
|
||||
this._injectionManager.overrideMethod(DateMenu.IndicatorPad.prototype, 'vfunc_get_preferred_width', () => () => [0,0]);
|
||||
this._injectionManager.overrideMethod(DateMenu.IndicatorPad.prototype, 'vfunc_get_preferred_height', () => () => [0,0]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -212,18 +210,17 @@ var Panel = GObject.registerClass({
|
||||
|
||||
this.menuManager._oldChangeMenu = this.menuManager._changeMenu;
|
||||
this.menuManager._changeMenu = (menu) => {
|
||||
if (!Me.settings.get_boolean('stockgs-panelbtn-click-only')) {
|
||||
if (!SETTINGS.get_boolean('stockgs-panelbtn-click-only')) {
|
||||
this.menuManager._oldChangeMenu(menu);
|
||||
}
|
||||
};
|
||||
|
||||
this.dynamicTransparency = new Transparency.DynamicTransparency(this);
|
||||
|
||||
this.taskbar = new Taskbar(this);
|
||||
this.taskbar = new Taskbar.Taskbar(this);
|
||||
|
||||
this.panel.add_child(this.taskbar.actor);
|
||||
|
||||
this._setAppmenuVisible(false);
|
||||
this._setShowDesktopButton(true);
|
||||
|
||||
this._setAllocationMap();
|
||||
@@ -275,12 +272,12 @@ var Panel = GObject.registerClass({
|
||||
],
|
||||
[
|
||||
this._centerBox,
|
||||
'actor-added',
|
||||
'child-added',
|
||||
() => this._onBoxActorAdded(this._centerBox)
|
||||
],
|
||||
[
|
||||
this._rightBox,
|
||||
'actor-added',
|
||||
'child-added',
|
||||
() => this._onBoxActorAdded(this._rightBox)
|
||||
],
|
||||
[
|
||||
@@ -331,7 +328,6 @@ var Panel = GObject.registerClass({
|
||||
this._signalsHandler.destroy();
|
||||
|
||||
this.panel.remove_child(this.taskbar.actor);
|
||||
this._setAppmenuVisible(false);
|
||||
|
||||
if (this.intellihide) {
|
||||
this.intellihide.destroy();
|
||||
@@ -369,26 +365,27 @@ var Panel = GObject.registerClass({
|
||||
['vertical', 'horizontal', 'zorintaskbarMainPanel'].forEach(c => this.panel.remove_style_class_name(c));
|
||||
|
||||
if (!Main.sessionMode.isLocked) {
|
||||
[['activities', 0], [systemMenuName, -1], ['dateMenu', 0]].forEach(b => {
|
||||
let container = this.statusArea[b[0]].container;
|
||||
['activities', systemMenuName, 'dateMenu'].forEach(b => {
|
||||
let container = this.statusArea[b].container;
|
||||
let originalParent = container._dtpOriginalParent;
|
||||
|
||||
this.panel.remove_child(container);
|
||||
originalParent ? originalParent.insert_child_at_index(container, b[1]) : null;
|
||||
|
||||
originalParent && originalParent.insert_child_at_index(
|
||||
container,
|
||||
Math.min(container._dtpOriginalIndex, originalParent.get_children().length - 1)
|
||||
);
|
||||
|
||||
delete container._dtpOriginalParent;
|
||||
delete container._dtpOriginalIndex;
|
||||
});
|
||||
}
|
||||
|
||||
this._setShowDesktopButton(false);
|
||||
|
||||
delete Utils.getIndicators(this.statusArea[systemMenuName]._volume)._dtpIgnoreScroll;
|
||||
delete Utils.getIndicators(this.statusArea[systemMenuName]._volumeOutput)._dtpIgnoreScroll;
|
||||
|
||||
if (DateMenu.IndicatorPad) {
|
||||
Utils.hookVfunc(DateMenu.IndicatorPad.prototype, 'get_preferred_width', DateMenu.IndicatorPad.prototype.vfunc_get_preferred_width);
|
||||
Utils.hookVfunc(DateMenu.IndicatorPad.prototype, 'get_preferred_height', DateMenu.IndicatorPad.prototype.vfunc_get_preferred_height);
|
||||
}
|
||||
|
||||
Utils.hookVfunc(Object.getPrototypeOf(this.panel), 'allocate', Object.getPrototypeOf(this.panel).vfunc_allocate);
|
||||
this._injectionManager.clear();
|
||||
|
||||
this.panel._delegate = this.panel;
|
||||
} else {
|
||||
@@ -400,20 +397,8 @@ var Panel = GObject.registerClass({
|
||||
Main.ctrlAltTabManager.removeGroup(this);
|
||||
}
|
||||
|
||||
handleDragOver(source, actor, x, y, time) {
|
||||
if (source == Main.xdndHandler) {
|
||||
|
||||
// open overview so they can choose a window for focusing
|
||||
// and ultimately dropping dragged item onto
|
||||
if(Main.overview.shouldToggleByCornerOrButton())
|
||||
Main.overview.show();
|
||||
}
|
||||
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
}
|
||||
|
||||
getPosition() {
|
||||
let position = PanelSettings.getPanelPosition(Me.settings, this.monitor.index);
|
||||
let position = PanelSettings.getPanelPosition(SETTINGS, this.monitor.index);
|
||||
|
||||
if (position == Pos.TOP) {
|
||||
return St.Side.TOP;
|
||||
@@ -500,7 +485,7 @@ var Panel = GObject.registerClass({
|
||||
|
||||
this._signalsHandler.add(
|
||||
[
|
||||
Me.settings,
|
||||
SETTINGS,
|
||||
[
|
||||
'changed::panel-sizes',
|
||||
'changed::group-apps'
|
||||
@@ -508,7 +493,7 @@ var Panel = GObject.registerClass({
|
||||
() => this._resetGeometry()
|
||||
],
|
||||
[
|
||||
Me.settings,
|
||||
SETTINGS,
|
||||
[
|
||||
'changed::showdesktop-button-width',
|
||||
'changed::show-showdesktop-icon'
|
||||
@@ -516,7 +501,14 @@ var Panel = GObject.registerClass({
|
||||
() => this._setShowDesktopButtonStyle()
|
||||
],
|
||||
[
|
||||
Me.desktopSettings,
|
||||
SETTINGS,
|
||||
'changed::floating-rounded-theme',
|
||||
() => {
|
||||
this._resetGeometry();
|
||||
}
|
||||
],
|
||||
[
|
||||
DESKTOPSETTINGS,
|
||||
'changed::clock-format',
|
||||
() => {
|
||||
this._clockFormat = null;
|
||||
@@ -527,19 +519,19 @@ var Panel = GObject.registerClass({
|
||||
}
|
||||
],
|
||||
[
|
||||
Me.settings,
|
||||
SETTINGS,
|
||||
'changed::progress-show-bar',
|
||||
() => this._initProgressManager()
|
||||
],
|
||||
[
|
||||
Me.settings,
|
||||
SETTINGS,
|
||||
'changed::progress-show-count',
|
||||
() => this._initProgressManager()
|
||||
]
|
||||
);
|
||||
|
||||
if (isVertical) {
|
||||
this._signalsHandler.add([Me.settings, 'changed::group-apps-label-max-width', () => this._resetGeometry()]);
|
||||
this._signalsHandler.add([SETTINGS, 'changed::group-apps-label-max-width', () => this._resetGeometry()]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -556,7 +548,7 @@ var Panel = GObject.registerClass({
|
||||
let parent = this.statusArea[propName].container.get_parent();
|
||||
|
||||
if (parent) {
|
||||
parent.remove_actor(this.statusArea[propName].container);
|
||||
parent.remove_child(this.statusArea[propName].container);
|
||||
}
|
||||
|
||||
//calling this.statusArea[propName].destroy(); is buggy for now, gnome-shell never
|
||||
@@ -567,19 +559,19 @@ var Panel = GObject.registerClass({
|
||||
let panelMenu = this.statusArea[propName];
|
||||
|
||||
this.menuManager.removeMenu(panelMenu.menu);
|
||||
Me.persistentStorage[propName].push(panelMenu);
|
||||
PERSISTENTSTORAGE[propName].push(panelMenu);
|
||||
this.statusArea[propName] = null;
|
||||
}
|
||||
}
|
||||
|
||||
_getPanelMenu(propName, constr) {
|
||||
Me.persistentStorage[propName] = Me.persistentStorage[propName] || [];
|
||||
PERSISTENTSTORAGE[propName] = PERSISTENTSTORAGE[propName] || [];
|
||||
|
||||
if (!Me.persistentStorage[propName].length) {
|
||||
Me.persistentStorage[propName].push(new constr());
|
||||
if (!PERSISTENTSTORAGE[propName].length) {
|
||||
PERSISTENTSTORAGE[propName].push(new constr());
|
||||
}
|
||||
|
||||
return Me.persistentStorage[propName].pop();
|
||||
return PERSISTENTSTORAGE[propName].pop();
|
||||
}
|
||||
|
||||
_adjustForOverview() {
|
||||
@@ -595,7 +587,40 @@ var Panel = GObject.registerClass({
|
||||
this.panelBox[isShown ? 'show' : 'hide']();
|
||||
}
|
||||
|
||||
_toggleFloatingRoundedTheme() {
|
||||
if (this.panelBox.has_style_class_name('top')) {
|
||||
this.panelBox.remove_style_class_name('top');
|
||||
} else if (this.panelBox.has_style_class_name('left')) {
|
||||
this.panelBox.remove_style_class_name('left');
|
||||
} else if (this.panelBox.has_style_class_name('right')) {
|
||||
this.panelBox.remove_style_class_name('right');
|
||||
} else if (this.panelBox.has_style_class_name('bottom')) {
|
||||
this.panelBox.remove_style_class_name('bottom');
|
||||
}
|
||||
|
||||
if (SETTINGS.get_boolean('floating-rounded-theme')) {
|
||||
if (!this.panelBox.has_style_class_name('floating')) {
|
||||
this.panelBox.add_style_class_name('floating');
|
||||
}
|
||||
|
||||
let position = this.getPosition();
|
||||
if (position == St.Side.TOP) {
|
||||
this.panelBox.add_style_class_name('top');
|
||||
} else if (position == St.Side.RIGHT) {
|
||||
this.panelBox.add_style_class_name('right');
|
||||
} else if (position == St.Side.BOTTOM) {
|
||||
this.panelBox.add_style_class_name('bottom');
|
||||
} else {
|
||||
this.panelBox.add_style_class_name('left');
|
||||
}
|
||||
} else {
|
||||
if (this.panelBox.has_style_class_name('floating'))
|
||||
this.panelBox.remove_style_class_name('floating');
|
||||
}
|
||||
}
|
||||
|
||||
_resetGeometry() {
|
||||
this._toggleFloatingRoundedTheme()
|
||||
this.geom = this.getGeometry();
|
||||
this._setPanelPosition();
|
||||
this.taskbar.resetAppIcons(true);
|
||||
@@ -618,24 +643,24 @@ var Panel = GObject.registerClass({
|
||||
let topPadding = panelBoxTheme.get_padding(St.Side.TOP);
|
||||
let tbPadding = topPadding + panelBoxTheme.get_padding(St.Side.BOTTOM);
|
||||
let position = this.getPosition();
|
||||
let length = PanelSettings.getPanelLength(Me.settings, this.monitor.index) / 100;
|
||||
let anchor = PanelSettings.getPanelAnchor(Me.settings, this.monitor.index);
|
||||
let length = PanelSettings.getPanelLength(SETTINGS, this.monitor.index) / 100;
|
||||
let anchor = PanelSettings.getPanelAnchor(SETTINGS, this.monitor.index);
|
||||
let anchorPlaceOnMonitor = 0;
|
||||
let gsTopPanelOffset = 0;
|
||||
let x = 0, y = 0;
|
||||
let w = 0, h = 0;
|
||||
|
||||
const panelSize = PanelSettings.getPanelSize(Me.settings, this.monitor.index);
|
||||
const panelSize = PanelSettings.getPanelSize(SETTINGS, this.monitor.index);
|
||||
this.dtpSize = panelSize * scaleFactor;
|
||||
|
||||
if (Me.settings.get_boolean('stockgs-keep-top-panel') && Main.layoutManager.primaryMonitor == this.monitor) {
|
||||
if (SETTINGS.get_boolean('stockgs-keep-top-panel') && Main.layoutManager.primaryMonitor == this.monitor) {
|
||||
gsTopPanelOffset = Main.layoutManager.panelBox.height - topPadding;
|
||||
}
|
||||
|
||||
if (this.checkIfVertical()) {
|
||||
if (!Me.settings.get_boolean('group-apps')) {
|
||||
if (!SETTINGS.get_boolean('group-apps')) {
|
||||
// add window title width and side padding of _dtpIconContainer when vertical
|
||||
this.dtpSize += Me.settings.get_int('group-apps-label-max-width') + AppIcons.DEFAULT_PADDING_SIZE * 2 / scaleFactor;
|
||||
this.dtpSize += SETTINGS.get_int('group-apps-label-max-width') + AppIcons.DEFAULT_PADDING_SIZE * 2 / scaleFactor;
|
||||
}
|
||||
|
||||
this.sizeFunc = 'get_preferred_height',
|
||||
@@ -686,8 +711,7 @@ var Panel = GObject.registerClass({
|
||||
x = x + anchorPlaceOnMonitor;
|
||||
}
|
||||
|
||||
if (Me.settings.get_boolean('intellihide') &&
|
||||
Me.settings.get_boolean('intellihide-floating-rounded-theme')) {
|
||||
if (SETTINGS.get_boolean('floating-rounded-theme')) {
|
||||
if (position == St.Side.BOTTOM || position == St.Side.TOP) {
|
||||
x -= FLOATING_MARGIN;
|
||||
} else { // LEFT or RIGHT
|
||||
@@ -904,10 +928,14 @@ var Panel = GObject.registerClass({
|
||||
this.showAppsIconWrapper.popupMenu(Main.layoutManager.dummyCursor);
|
||||
|
||||
return Clutter.EVENT_STOP;
|
||||
} else if (Main.modalCount > 0 || event.get_source() != actor ||
|
||||
(!isPress && type != Clutter.EventType.TOUCH_BEGIN) ||
|
||||
(isPress && button != 1)) {
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
} else {
|
||||
const targetActor = global.stage.get_event_actor(event);
|
||||
|
||||
if (Main.modalCount > 0 || targetActor != actor ||
|
||||
(!isPress && type != Clutter.EventType.TOUCH_BEGIN) ||
|
||||
(isPress && button != 1)) {
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
}
|
||||
}
|
||||
|
||||
let params = this.checkIfVertical() ? [stageY, 'y', 'height'] : [stageX, 'x', 'width'];
|
||||
@@ -959,13 +987,16 @@ var Panel = GObject.registerClass({
|
||||
|
||||
_setVertical(actor, isVertical) {
|
||||
let _set = (actor, isVertical) => {
|
||||
if (!actor || actor instanceof Dash.DashItemContainer || actor instanceof TaskbarItemContainer) {
|
||||
if (!actor || actor instanceof Dash.DashItemContainer || actor instanceof TaskbarItemContainer.TaskbarItemContainer) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (actor instanceof St.BoxLayout) {
|
||||
actor.vertical = isVertical;
|
||||
} else if ((actor._delegate || actor) instanceof PanelMenu.ButtonBox && actor != this.statusArea.appMenu) {
|
||||
} else if (
|
||||
actor != this.statusArea.appMenu &&
|
||||
((actor._delegate || actor) instanceof PanelMenu.ButtonBox || actor == this.statusArea.quickSettings)
|
||||
) {
|
||||
let child = actor.get_first_child();
|
||||
|
||||
if (isVertical && !actor.visible && !actor._dtpVisibleId) {
|
||||
@@ -1006,22 +1037,6 @@ var Panel = GObject.registerClass({
|
||||
this._unmappedButtons.splice(this._unmappedButtons.indexOf(actor), 1);
|
||||
}
|
||||
|
||||
_setAppmenuVisible(isVisible) {
|
||||
let parent;
|
||||
let appMenu = this.statusArea.appMenu;
|
||||
|
||||
if(appMenu)
|
||||
parent = appMenu.container.get_parent();
|
||||
|
||||
if (parent) {
|
||||
parent.remove_child(appMenu.container);
|
||||
}
|
||||
|
||||
if (isVisible && appMenu) {
|
||||
this._leftBox.insert_child_above(appMenu.container, null);
|
||||
}
|
||||
}
|
||||
|
||||
_formatVerticalClock() {
|
||||
// https://github.com/GNOME/gnome-desktop/blob/master/libgnome-desktop/gnome-wall-clock.c#L310
|
||||
if (this.statusArea.dateMenu) {
|
||||
@@ -1059,7 +1074,7 @@ var Panel = GObject.registerClass({
|
||||
let timeParts = time.split('∶');
|
||||
|
||||
if (!this._clockFormat) {
|
||||
this._clockFormat = Me.desktopSettings.get_string('clock-format');
|
||||
this._clockFormat = DESKTOPSETTINGS.get_string('clock-format');
|
||||
}
|
||||
|
||||
if (this._clockFormat == '12h') {
|
||||
@@ -1083,13 +1098,18 @@ var Panel = GObject.registerClass({
|
||||
// y_fill: true,
|
||||
track_hover: true });
|
||||
|
||||
this._showDesktopButton.icon = new St.Icon({ gicon: Gio.icon_new_for_string(SHOW_DESKTOP_ICON), style_class: 'system-status-icon' });
|
||||
this._showDesktopButton.icon = new St.Icon({ gicon: Gio.icon_new_for_string(`${EXTENSION_PATH}/img/show-desktop-symbolic.svg`), style_class: 'system-status-icon' });
|
||||
|
||||
this._setShowDesktopButtonStyle();
|
||||
|
||||
this._showDesktopButton.connect('touch-event', (actor, event) => {
|
||||
if (event.type() == Clutter.EventType.TOUCH_BEGIN) {
|
||||
this._onShowDesktopButtonPress();
|
||||
}
|
||||
});
|
||||
this._showDesktopButton.connect('button-press-event', () => this._onShowDesktopButtonPress());
|
||||
this._showDesktopButton.connect('enter-event', () => {
|
||||
if (Me.settings.get_boolean('show-showdesktop-hover')) {
|
||||
if (SETTINGS.get_boolean('show-showdesktop-hover')) {
|
||||
this._timeoutsHandler.add([T4, SHOW_SHOWDESKTOP_DELAY, () => {
|
||||
this._hiddenDesktopWorkspace = Utils.DisplayWrapper.getWorkspaceManager().get_active_workspace();
|
||||
this._toggleWorkspaceWindows(true, this._hiddenDesktopWorkspace);
|
||||
@@ -1098,7 +1118,7 @@ var Panel = GObject.registerClass({
|
||||
});
|
||||
|
||||
this._showDesktopButton.connect('leave-event', () => {
|
||||
if (Me.settings.get_boolean('show-showdesktop-hover')) {
|
||||
if (SETTINGS.get_boolean('show-showdesktop-hover')) {
|
||||
if (this._timeoutsHandler.getId(T4)) {
|
||||
this._timeoutsHandler.remove(T4);
|
||||
} else if (this._hiddenDesktopWorkspace) {
|
||||
@@ -1123,21 +1143,21 @@ var Panel = GObject.registerClass({
|
||||
|
||||
for (let i = 0; i < this._showDesktopButton.get_children().length; i++) {
|
||||
if (this._showDesktopButton.get_children()[i] == this._showDesktopButton.icon) {
|
||||
this._showDesktopButton.remove_actor(this._showDesktopButton.icon);
|
||||
this._showDesktopButton.remove_child(this._showDesktopButton.icon);
|
||||
}
|
||||
}
|
||||
|
||||
if (this._showDesktopButton) {
|
||||
if (Me.settings.get_boolean('show-showdesktop-icon')) {
|
||||
this._showDesktopButton.add_actor(this._showDesktopButton.icon);
|
||||
if (SETTINGS.get_boolean('show-showdesktop-icon')) {
|
||||
this._showDesktopButton.add_child(this._showDesktopButton.icon);
|
||||
|
||||
let buttonSize = Me.settings.get_int('showdesktop-button-width') + 'px';
|
||||
let buttonSize = SETTINGS.get_int('showdesktop-button-width') + 'px';
|
||||
let isVertical = this.checkIfVertical();
|
||||
let buttonPadding = isVertical ? buttonSize + ' 0;' : '0 ' + buttonSize + ';';
|
||||
|
||||
this._showDesktopButton.set_style('padding: ' + buttonPadding);
|
||||
} else {
|
||||
let buttonSize = Me.settings.get_int('showdesktop-button-width') + 'px;';
|
||||
let buttonSize = SETTINGS.get_int('showdesktop-button-width') + 'px;';
|
||||
let isVertical = this.checkIfVertical();
|
||||
|
||||
let style = "border: 0 solid " + rgb + "; padding: 0;";
|
||||
@@ -1213,8 +1233,8 @@ var Panel = GObject.registerClass({
|
||||
}
|
||||
|
||||
_initProgressManager() {
|
||||
const progressVisible = Me.settings.get_boolean('progress-show-bar');
|
||||
const countVisible = Me.settings.get_boolean('progress-show-count');
|
||||
const progressVisible = SETTINGS.get_boolean('progress-show-bar');
|
||||
const countVisible = SETTINGS.get_boolean('progress-show-count');
|
||||
const pm = this.progressManager;
|
||||
|
||||
if(!pm && (progressVisible || countVisible))
|
||||
@@ -1224,7 +1244,7 @@ var Panel = GObject.registerClass({
|
||||
}
|
||||
});
|
||||
|
||||
var SecondaryPanel = GObject.registerClass({
|
||||
export const SecondaryPanel = GObject.registerClass({
|
||||
}, class SecondaryPanel extends St.Widget {
|
||||
|
||||
_init(params) {
|
||||
|
||||
107
panelManager.js
107
panelManager.js
@@ -27,39 +27,36 @@
|
||||
* Some code was also adapted from the upstream Gnome Shell source code.
|
||||
*/
|
||||
|
||||
const Me = imports.misc.extensionUtils.getCurrentExtension();
|
||||
const { Overview } = Me.imports.overview;
|
||||
const { Panel, panelBoxes } = Me.imports.panel;
|
||||
const PanelSettings = Me.imports.panelSettings;
|
||||
const Proximity = Me.imports.proximity;
|
||||
const Taskbar = Me.imports.taskbar;
|
||||
const Utils = Me.imports.utils;
|
||||
const DesktopIconsIntegration = Me.imports.desktopIconsIntegration;
|
||||
import * as Overview from './overview.js';
|
||||
import * as Panel from './panel.js';
|
||||
import * as PanelSettings from './panelSettings.js';
|
||||
import * as Proximity from './proximity.js';
|
||||
import * as Utils from './utils.js';
|
||||
import * as DesktopIconsIntegration from './desktopIconsIntegration.js';
|
||||
|
||||
const Gi = imports._gi;
|
||||
const GLib = imports.gi.GLib;
|
||||
const GObject = imports.gi.GObject;
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
import GLib from 'gi://GLib';
|
||||
import GObject from 'gi://GObject';
|
||||
import Clutter from 'gi://Clutter';
|
||||
import Meta from 'gi://Meta';
|
||||
import Shell from 'gi://Shell';
|
||||
import St from 'gi://St';
|
||||
|
||||
const AppDisplay = imports.ui.appDisplay;
|
||||
const BoxPointer = imports.ui.boxpointer;
|
||||
const Dash = imports.ui.dash;
|
||||
const IconGrid = imports.ui.iconGrid;
|
||||
const LookingGlass = imports.ui.lookingGlass;
|
||||
const Main = imports.ui.main;
|
||||
const PanelMenu = imports.ui.panelMenu;
|
||||
const Layout = imports.ui.layout;
|
||||
const WM = imports.ui.windowManager;
|
||||
const { SecondaryMonitorDisplay, WorkspacesView } = imports.ui.workspacesView;
|
||||
import * as BoxPointer from 'resource:///org/gnome/shell/ui/boxpointer.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 PanelMenu from 'resource:///org/gnome/shell/ui/panelMenu.js';
|
||||
import * as Layout from 'resource:///org/gnome/shell/ui/layout.js';
|
||||
import {InjectionManager} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||
import {SETTINGS} from './extension.js';
|
||||
import {SecondaryMonitorDisplay, WorkspacesView} from 'resource:///org/gnome/shell/ui/workspacesView.js';
|
||||
|
||||
var PanelManager = class {
|
||||
|
||||
export const PanelManager = class {
|
||||
|
||||
constructor() {
|
||||
this.overview = new Overview();
|
||||
this.overview = new Overview.Overview();
|
||||
this.panelsElementPositions = {};
|
||||
this._injectionManager = new InjectionManager();
|
||||
|
||||
this._saveMonitors();
|
||||
}
|
||||
@@ -70,14 +67,14 @@ var PanelManager = class {
|
||||
this.proximityManager = new Proximity.ProximityManager();
|
||||
|
||||
if (this.dtpPrimaryMonitor) {
|
||||
this.primaryPanel = this._createPanel(this.dtpPrimaryMonitor, Me.settings.get_boolean('stockgs-keep-top-panel'));
|
||||
this.primaryPanel = this._createPanel(this.dtpPrimaryMonitor, SETTINGS.get_boolean('stockgs-keep-top-panel'));
|
||||
this.allPanels.push(this.primaryPanel);
|
||||
this.overview.enable(this.primaryPanel);
|
||||
|
||||
this.setFocusedMonitor(this.dtpPrimaryMonitor);
|
||||
}
|
||||
|
||||
if (Me.settings.get_boolean('multi-monitors')) {
|
||||
if (SETTINGS.get_boolean('multi-monitors')) {
|
||||
Main.layoutManager.monitors.filter(m => m != this.dtpPrimaryMonitor).forEach(m => {
|
||||
this.allPanels.push(this._createPanel(m, true));
|
||||
});
|
||||
@@ -105,7 +102,7 @@ var PanelManager = class {
|
||||
if (BoxPointer.BoxPointer.prototype.vfunc_get_preferred_height) {
|
||||
let panelManager = this;
|
||||
|
||||
Utils.hookVfunc(BoxPointer.BoxPointer.prototype, 'get_preferred_height', function(forWidth) {
|
||||
this._injectionManager.overrideMethod(BoxPointer.BoxPointer.prototype, 'vfunc_get_preferred_height', () => function(forWidth) {
|
||||
let alloc = { min_size: 0, natural_size: 0 };
|
||||
|
||||
[alloc.min_size, alloc.natural_size] = this.vfunc_get_preferred_height(forWidth);
|
||||
@@ -153,7 +150,7 @@ var PanelManager = class {
|
||||
//listen settings
|
||||
this._signalsHandler.add(
|
||||
[
|
||||
Me.settings,
|
||||
SETTINGS,
|
||||
[
|
||||
'changed::multi-monitors',
|
||||
'changed::isolate-monitors',
|
||||
@@ -165,17 +162,17 @@ var PanelManager = class {
|
||||
() => this._reset()
|
||||
],
|
||||
[
|
||||
Me.settings,
|
||||
SETTINGS,
|
||||
'changed::panel-element-positions',
|
||||
() => this._updatePanelElementPositions()
|
||||
],
|
||||
[
|
||||
Me.settings,
|
||||
SETTINGS,
|
||||
'changed::intellihide-key-toggle-text',
|
||||
() => this._setKeyBindings(true)
|
||||
],
|
||||
[
|
||||
Me.settings,
|
||||
SETTINGS,
|
||||
'changed::panel-sizes',
|
||||
() => {
|
||||
GLib.idle_add(GLib.PRIORITY_LOW, () => {
|
||||
@@ -196,20 +193,22 @@ var PanelManager = class {
|
||||
]
|
||||
);
|
||||
|
||||
panelBoxes.forEach(c => this._signalsHandler.add(
|
||||
Panel.panelBoxes.forEach(c => this._signalsHandler.add(
|
||||
[
|
||||
Main.panel[c],
|
||||
'actor-added',
|
||||
(parent, child) =>
|
||||
this.primaryPanel &&
|
||||
this._adjustPanelMenuButton(this._getPanelMenuButton(child), this.primaryPanel.monitor, this.primaryPanel.getPosition())
|
||||
'child-added',
|
||||
(parent, child) => {
|
||||
this.primaryPanel &&
|
||||
child instanceof St.Bin &&
|
||||
this._adjustPanelMenuButton(this._getPanelMenuButton(child.get_first_child()), this.primaryPanel.monitor, this.primaryPanel.getPosition())
|
||||
}
|
||||
]
|
||||
));
|
||||
|
||||
this._setKeyBindings(true);
|
||||
|
||||
// keep GS overview.js from blowing away custom panel styles
|
||||
if(!Me.settings.get_boolean('stockgs-keep-top-panel'))
|
||||
if(!SETTINGS.get_boolean('stockgs-keep-top-panel'))
|
||||
Object.defineProperty(Main.panel, "style", {configurable: true, set(v) {}});
|
||||
}
|
||||
|
||||
@@ -244,7 +243,7 @@ var PanelManager = class {
|
||||
} else {
|
||||
p.panelBox.remove_child(p);
|
||||
p.remove_child(p.panel);
|
||||
p.panelBox.add(p.panel);
|
||||
p.panelBox.add_child(p.panel);
|
||||
|
||||
p.panelBox.set_position(clipContainer.x, clipContainer.y);
|
||||
|
||||
@@ -253,9 +252,7 @@ var PanelManager = class {
|
||||
}
|
||||
});
|
||||
|
||||
if (BoxPointer.BoxPointer.prototype.vfunc_get_preferred_height) {
|
||||
Utils.hookVfunc(BoxPointer.BoxPointer.prototype, 'get_preferred_height', BoxPointer.BoxPointer.prototype.vfunc_get_preferred_height);
|
||||
}
|
||||
this._injectionManager.clear();
|
||||
|
||||
if (Main.layoutManager.primaryMonitor) {
|
||||
Main.layoutManager.panelBox.set_position(Main.layoutManager.primaryMonitor.x, Main.layoutManager.primaryMonitor.y);
|
||||
@@ -292,6 +289,10 @@ var PanelManager = class {
|
||||
this._desktopIconsUsableArea = null;
|
||||
}
|
||||
|
||||
toggleDash() {
|
||||
this.overview.toggleDash();
|
||||
}
|
||||
|
||||
_setDesktopIconsMargins() {
|
||||
this._desktopIconsUsableArea?.resetMargins();
|
||||
this.allPanels.forEach(p => {
|
||||
@@ -356,12 +357,12 @@ var PanelManager = class {
|
||||
} else {
|
||||
// No idea why atm, but we need the import at the top of this file and to use the
|
||||
// full imports ns here, otherwise SecondaryMonitorDisplay can't be used ¯\_(ツ)_/¯
|
||||
view = new imports.ui.workspacesView.SecondaryMonitorDisplay(i,
|
||||
view = new SecondaryMonitorDisplay(i,
|
||||
this._controls,
|
||||
this._scrollAdjustment,
|
||||
this._fitModeAdjustment,
|
||||
this._overviewAdjustment);
|
||||
Main.layoutManager.overviewGroup.add_actor(view);
|
||||
Main.layoutManager.overviewGroup.add_child(view);
|
||||
}
|
||||
|
||||
this._workspacesViews.push(view);
|
||||
@@ -379,7 +380,7 @@ var PanelManager = class {
|
||||
|
||||
Main.layoutManager.monitors.filter(m => m.index != primaryIndex).forEach(m => newMonitors.push(m.index));
|
||||
|
||||
Me.settings.set_value(keyMonitors, new GLib.Variant('ai', newMonitors));
|
||||
SETTINGS.set_value(keyMonitors, new GLib.Variant('ai', newMonitors));
|
||||
}
|
||||
|
||||
checkIfFocusedMonitor(monitor) {
|
||||
@@ -404,8 +405,8 @@ var PanelManager = class {
|
||||
clipContainer.add_child(panelBox);
|
||||
Main.layoutManager.trackChrome(panelBox, { trackFullscreen: true, affectsStruts: true, affectsInputRegion: true });
|
||||
|
||||
panel = new Panel(this, monitor, panelBox, isStandalone);
|
||||
panelBox.add(panel);
|
||||
panel = new Panel.Panel(this, monitor, panelBox, isStandalone);
|
||||
panelBox.add_child(panel);
|
||||
panel.enable();
|
||||
|
||||
panelBox.visible = true;
|
||||
@@ -424,7 +425,7 @@ var PanelManager = class {
|
||||
}
|
||||
|
||||
_updatePanelElementPositions() {
|
||||
this.panelsElementPositions = PanelSettings.getSettingsJson(Me.settings, 'panel-element-positions');
|
||||
this.panelsElementPositions = PanelSettings.getSettingsJson(SETTINGS, 'panel-element-positions');
|
||||
this.allPanels.forEach(p => p.updateElementPositions());
|
||||
}
|
||||
|
||||
@@ -444,7 +445,7 @@ var PanelManager = class {
|
||||
}
|
||||
|
||||
_getBoxPointerPreferredHeight(boxPointer, alloc, monitor) {
|
||||
if (boxPointer._dtpInPanel && boxPointer.sourceActor && Me.settings.get_boolean('intellihide')) {
|
||||
if (boxPointer._dtpInPanel && boxPointer.sourceActor && SETTINGS.get_boolean('intellihide')) {
|
||||
monitor = monitor || Main.layoutManager.findMonitorForActor(boxPointer.sourceActor);
|
||||
let panel = Utils.find(global.zorinTaskbar.panels, p => p.monitor == monitor);
|
||||
let excess = alloc.natural_size + panel.dtpSize + 10 - monitor.height; // 10 is arbitrary
|
||||
@@ -498,7 +499,7 @@ var PanelManager = class {
|
||||
Utils.removeKeybinding(k);
|
||||
|
||||
if (enable) {
|
||||
Utils.addKeybinding(k, Me.settings, keys[k], Shell.ActionMode.NORMAL);
|
||||
Utils.addKeybinding(k, SETTINGS, keys[k], Shell.ActionMode.NORMAL);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -507,7 +508,7 @@ var PanelManager = class {
|
||||
|
||||
// This class drives long-running icon animations, to keep them running in sync
|
||||
// with each other.
|
||||
var IconAnimator = class {
|
||||
export const IconAnimator = class {
|
||||
|
||||
constructor(actor) {
|
||||
this._count = 0;
|
||||
|
||||
@@ -18,31 +18,31 @@
|
||||
* This file is based on code from the Dash to Panel extension
|
||||
*/
|
||||
|
||||
var SHOW_APPS_BTN = 'showAppsButton';
|
||||
var ACTIVITIES_BTN = 'activitiesButton';
|
||||
var TASKBAR = 'taskbar';
|
||||
var DATE_MENU = 'dateMenu';
|
||||
var SYSTEM_MENU = 'systemMenu';
|
||||
var LEFT_BOX = 'leftBox';
|
||||
var CENTER_BOX = 'centerBox';
|
||||
var RIGHT_BOX = 'rightBox';
|
||||
var DESKTOP_BTN = 'desktopButton';
|
||||
export const SHOW_APPS_BTN = 'showAppsButton';
|
||||
export const ACTIVITIES_BTN = 'activitiesButton';
|
||||
export const TASKBAR = 'taskbar';
|
||||
export const DATE_MENU = 'dateMenu';
|
||||
export const SYSTEM_MENU = 'systemMenu';
|
||||
export const LEFT_BOX = 'leftBox';
|
||||
export const CENTER_BOX = 'centerBox';
|
||||
export const RIGHT_BOX = 'rightBox';
|
||||
export const DESKTOP_BTN = 'desktopButton';
|
||||
|
||||
var STACKED_TL = 'stackedTL';
|
||||
var STACKED_BR = 'stackedBR';
|
||||
var CENTERED = 'centered';
|
||||
var CENTERED_MONITOR = 'centerMonitor';
|
||||
export const STACKED_TL = 'stackedTL';
|
||||
export const STACKED_BR = 'stackedBR';
|
||||
export const CENTERED = 'centered';
|
||||
export const CENTERED_MONITOR = 'centerMonitor';
|
||||
|
||||
var TOP = 'TOP';
|
||||
var BOTTOM = 'BOTTOM';
|
||||
var LEFT = 'LEFT';
|
||||
var RIGHT = 'RIGHT';
|
||||
export const TOP = 'TOP';
|
||||
export const BOTTOM = 'BOTTOM';
|
||||
export const LEFT = 'LEFT';
|
||||
export const RIGHT = 'RIGHT';
|
||||
|
||||
var START = 'START';
|
||||
var MIDDLE = 'MIDDLE';
|
||||
var END = 'END';
|
||||
export const START = 'START';
|
||||
export const MIDDLE = 'MIDDLE';
|
||||
export const END = 'END';
|
||||
|
||||
var defaults = [
|
||||
export const defaults = [
|
||||
{ element: LEFT_BOX, visible: true, position: STACKED_TL },
|
||||
{ element: SHOW_APPS_BTN, visible: false, position: STACKED_TL },
|
||||
{ element: ACTIVITIES_BTN, visible: true, position: STACKED_TL },
|
||||
@@ -54,11 +54,11 @@ var defaults = [
|
||||
{ element: DESKTOP_BTN, visible: false, position: STACKED_BR },
|
||||
];
|
||||
|
||||
var optionDialogFunctions = {};
|
||||
export const optionDialogFunctions = {};
|
||||
|
||||
optionDialogFunctions[DATE_MENU] = '_showDateMenuOptions';
|
||||
optionDialogFunctions[DESKTOP_BTN] = '_showDesktopButtonOptions';
|
||||
|
||||
function checkIfCentered(position) {
|
||||
export function checkIfCentered(position) {
|
||||
return position == CENTERED || position == CENTERED_MONITOR;
|
||||
}
|
||||
|
||||
@@ -15,11 +15,10 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
const Me = imports.misc.extensionUtils.getCurrentExtension();
|
||||
const Pos = Me.imports.panelPositions;
|
||||
import * as Pos from './panelPositions.js';
|
||||
|
||||
/** Return object representing a settings value that is stored as JSON. */
|
||||
function getSettingsJson(settings, setting) {
|
||||
export function getSettingsJson(settings, setting) {
|
||||
try {
|
||||
return JSON.parse(settings.get_string(setting));
|
||||
} catch(e) {
|
||||
@@ -27,7 +26,7 @@ function getSettingsJson(settings, setting) {
|
||||
}
|
||||
}
|
||||
/** Write value object as JSON to setting in settings. */
|
||||
function setSettingsJson(settings, setting, value) {
|
||||
export function setSettingsJson(settings, setting, value) {
|
||||
try {
|
||||
const json = JSON.stringify(value);
|
||||
settings.set_string(setting, json);
|
||||
@@ -37,7 +36,7 @@ function setSettingsJson(settings, setting, value) {
|
||||
}
|
||||
|
||||
/** Returns size of panel on a specific monitor, in pixels. */
|
||||
function getPanelSize(settings, monitorIndex) {
|
||||
export function getPanelSize(settings, monitorIndex) {
|
||||
const sizes = getSettingsJson(settings, 'panel-sizes');
|
||||
// Pull in deprecated setting if panel-sizes does not have setting for monitor.
|
||||
const fallbackSize = settings.get_int('panel-size');
|
||||
@@ -45,7 +44,7 @@ function getPanelSize(settings, monitorIndex) {
|
||||
return sizes[monitorIndex] || fallbackSize || theDefault;
|
||||
}
|
||||
|
||||
function setPanelSize(settings, monitorIndex, value) {
|
||||
export function setPanelSize(settings, monitorIndex, value) {
|
||||
if (!(Number.isInteger(value) && value <= 128 && value >= 16)) {
|
||||
log('Not setting invalid panel size: ' + value);
|
||||
return;
|
||||
@@ -59,13 +58,13 @@ function setPanelSize(settings, monitorIndex, value) {
|
||||
* Returns length of panel on a specific monitor, as a whole number percent,
|
||||
* from settings. e.g. 100
|
||||
*/
|
||||
function getPanelLength(settings, monitorIndex) {
|
||||
export function getPanelLength(settings, monitorIndex) {
|
||||
const lengths = getSettingsJson(settings, 'panel-lengths');
|
||||
const theDefault = 100;
|
||||
return lengths[monitorIndex] || theDefault;
|
||||
}
|
||||
|
||||
function setPanelLength(settings, monitorIndex, value) {
|
||||
export function setPanelLength(settings, monitorIndex, value) {
|
||||
if (!(Number.isInteger(value) && value <= 100 && value >= 0)) {
|
||||
log('Not setting invalid panel length: ' + value);
|
||||
return;
|
||||
@@ -76,14 +75,14 @@ function setPanelLength(settings, monitorIndex, value) {
|
||||
}
|
||||
|
||||
/** Returns position of panel on a specific monitor. */
|
||||
function getPanelPosition(settings, monitorIndex) {
|
||||
export function getPanelPosition(settings, monitorIndex) {
|
||||
const positions = getSettingsJson(settings, 'panel-positions');
|
||||
const fallbackPosition = settings.get_string('panel-position');
|
||||
const theDefault = Pos.BOTTOM;
|
||||
return positions[monitorIndex] || fallbackPosition || theDefault;
|
||||
}
|
||||
|
||||
function setPanelPosition(settings, monitorIndex, value) {
|
||||
export function setPanelPosition(settings, monitorIndex, value) {
|
||||
if (!(value === Pos.TOP || value === Pos.BOTTOM || value === Pos.LEFT
|
||||
|| value === Pos.RIGHT)) {
|
||||
log('Not setting invalid panel position: ' + value);
|
||||
@@ -95,13 +94,13 @@ function setPanelPosition(settings, monitorIndex, value) {
|
||||
}
|
||||
|
||||
/** Returns anchor location of panel on a specific monitor. */
|
||||
function getPanelAnchor(settings, monitorIndex) {
|
||||
export function getPanelAnchor(settings, monitorIndex) {
|
||||
const anchors = getSettingsJson(settings, 'panel-anchors');
|
||||
const theDefault = Pos.MIDDLE;
|
||||
return anchors[monitorIndex] || theDefault;
|
||||
}
|
||||
|
||||
function setPanelAnchor(settings, monitorIndex, value) {
|
||||
export function setPanelAnchor(settings, monitorIndex, value) {
|
||||
if (!(value === Pos.START || value === Pos.MIDDLE || value === Pos.END)) {
|
||||
log('Not setting invalid panel anchor: ' + value);
|
||||
return;
|
||||
|
||||
@@ -22,18 +22,9 @@
|
||||
* mathematical.coffee@gmail.com
|
||||
*/
|
||||
|
||||
const Me = imports.misc.extensionUtils.getCurrentExtension();
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
const Main = imports.ui.main;
|
||||
const Mainloop = imports.mainloop;
|
||||
const St = imports.gi.St;
|
||||
const Shell = imports.gi.Shell;
|
||||
import * as Utils from './utils.js';
|
||||
|
||||
const Panel = Me.imports.panel;
|
||||
const Taskbar = Me.imports.taskbar;
|
||||
const Utils = Me.imports.utils;
|
||||
|
||||
var PanelStyle = class {
|
||||
export const PanelStyle = class {
|
||||
|
||||
enable(panel) {
|
||||
this.panel = panel;
|
||||
@@ -56,7 +47,7 @@ var PanelStyle = class {
|
||||
this._applyStylesRecursively();
|
||||
|
||||
/* connect signal */
|
||||
this._rightBoxActorAddedID = this.panel._rightBox.connect('actor-added',
|
||||
this._rightBoxActorAddedID = this.panel._rightBox.connect('child-added',
|
||||
(container, actor) => {
|
||||
if(this._rightBoxOperations.length && !this._ignoreAddedChild)
|
||||
this._recursiveApply(actor, this._rightBoxOperations);
|
||||
@@ -64,7 +55,7 @@ var PanelStyle = class {
|
||||
this._ignoreAddedChild = 0;
|
||||
}
|
||||
);
|
||||
this._centerBoxActorAddedID = this.panel._centerBox.connect('actor-added',
|
||||
this._centerBoxActorAddedID = this.panel._centerBox.connect('child-added',
|
||||
(container, actor) => {
|
||||
if(this._centerBoxOperations.length && !this._ignoreAddedChild)
|
||||
this._recursiveApply(actor, this._centerBoxOperations);
|
||||
@@ -72,7 +63,7 @@ var PanelStyle = class {
|
||||
this._ignoreAddedChild = 0;
|
||||
}
|
||||
);
|
||||
this._leftBoxActorAddedID = this.panel._leftBox.connect('actor-added',
|
||||
this._leftBoxActorAddedID = this.panel._leftBox.connect('child-added',
|
||||
(container, actor) => {
|
||||
if(this._leftBoxOperations.length)
|
||||
this._recursiveApply(actor, this._leftBoxOperations);
|
||||
|
||||
6
po/es.po
6
po/es.po
@@ -255,6 +255,12 @@ msgstr "Importar configuraciones"
|
||||
msgid "Quit"
|
||||
msgstr "Salir"
|
||||
|
||||
#: appIcons.js:1497
|
||||
msgid "Quit %d Window"
|
||||
msgid_plural "Quit %d Windows"
|
||||
msgstr[0] "Cerrar %d ventana"
|
||||
msgstr[1] "Cerrar %d ventanas"
|
||||
|
||||
#: appIcons.js:1515
|
||||
msgid "Windows"
|
||||
msgstr "Ventanas"
|
||||
|
||||
252
po/it.po
252
po/it.po
@@ -2,15 +2,16 @@
|
||||
# This file is distributed under the same license as the Dash to Panel package.
|
||||
# Enrico Bella <enricobe@hotmail.com>, 2018.
|
||||
# Kowalski7cc <kowalski.7cc@gmail.com>, 2020.
|
||||
# Albano Battistella <albanobattistella@gmail.com>, 2023.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-02-08 08:31-0500\n"
|
||||
"PO-Revision-Date: 2020-05-15 23:12+0200\n"
|
||||
"Last-Translator: l3nn4rt <l3nn4rt@protonmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"PO-Revision-Date: 2023-12-22 20:38+0200\n"
|
||||
"Last-Translator: Albano Battistella <albanoattistella@gmail.com>\n"
|
||||
"Language-Team: Italian\n"
|
||||
"Language: it\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -35,9 +36,8 @@ msgid "Left"
|
||||
msgstr "Sinistra"
|
||||
|
||||
#: prefs.js:318
|
||||
#, fuzzy
|
||||
msgid "Center"
|
||||
msgstr "Allinea al centro dello spazio disponibile"
|
||||
msgstr "Centro"
|
||||
|
||||
#: prefs.js:319 ui/SettingsPosition.ui.h:13 ui/SettingsStyle.ui.h:12
|
||||
msgid "Right"
|
||||
@@ -50,7 +50,7 @@ msgstr "Alto"
|
||||
|
||||
#: prefs.js:322 prefs.js:327 ui/SettingsPosition.ui.h:21
|
||||
msgid "Middle"
|
||||
msgstr ""
|
||||
msgstr "A metà"
|
||||
|
||||
#: prefs.js:323 ui/BoxWindowPreviewOptions.ui.h:37 ui/SettingsPosition.ui.h:10
|
||||
#: ui/SettingsStyle.ui.h:9
|
||||
@@ -59,11 +59,11 @@ msgstr "Basso"
|
||||
|
||||
#: prefs.js:326 ui/SettingsPosition.ui.h:20
|
||||
msgid "Start"
|
||||
msgstr ""
|
||||
msgstr "Inizio"
|
||||
|
||||
#: prefs.js:328 ui/SettingsPosition.ui.h:22
|
||||
msgid "End"
|
||||
msgstr ""
|
||||
msgstr "Fine"
|
||||
|
||||
#: prefs.js:413
|
||||
msgid "Show Applications button"
|
||||
@@ -155,7 +155,7 @@ msgstr "Opzioni Mostra Applicazioni"
|
||||
|
||||
#: prefs.js:530
|
||||
msgid "Open icon"
|
||||
msgstr ""
|
||||
msgstr "Apri icona"
|
||||
|
||||
#: prefs.js:577
|
||||
msgid "Show Desktop options"
|
||||
@@ -164,7 +164,7 @@ msgstr "Opzioni Mostra Desktop"
|
||||
#: prefs.js:661
|
||||
#, javascript-format
|
||||
msgid "%d ms"
|
||||
msgstr ""
|
||||
msgstr "%d ms"
|
||||
|
||||
#: prefs.js:666
|
||||
#, javascript-format
|
||||
@@ -185,8 +185,8 @@ msgstr ""
|
||||
#, javascript-format
|
||||
msgid "%d icon"
|
||||
msgid_plural "%d icons"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "%d icona"
|
||||
msgstr[1] "%d icone"
|
||||
|
||||
#: prefs.js:782
|
||||
msgid "Running Indicator Options"
|
||||
@@ -241,9 +241,8 @@ msgid "Advanced Options"
|
||||
msgstr "Impostazioni avanzate"
|
||||
|
||||
#: prefs.js:2040
|
||||
#, fuzzy
|
||||
msgid "App icon animation options"
|
||||
msgstr "Opzioni Mostra Applicazioni"
|
||||
msgstr "Opzioni di animazione dell'icona dell'app"
|
||||
|
||||
#: prefs.js:2088
|
||||
msgid "Export settings"
|
||||
@@ -288,9 +287,8 @@ msgid "Terminal"
|
||||
msgstr "Terminale"
|
||||
|
||||
#: appIcons.js:1824
|
||||
#, fuzzy
|
||||
msgid "System Monitor"
|
||||
msgstr "Isola monitor"
|
||||
msgstr "Monitor di sistema"
|
||||
|
||||
#: appIcons.js:1829
|
||||
msgid "Files"
|
||||
@@ -330,50 +328,47 @@ msgstr "Ancora niente!"
|
||||
|
||||
#: ui/BoxAdvancedOptions.ui.h:2
|
||||
msgid "For real..."
|
||||
msgstr ""
|
||||
msgstr "Per davvero..."
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:1
|
||||
#, fuzzy
|
||||
msgid "Animation type"
|
||||
msgstr "Durata animazione (ms)"
|
||||
msgstr "Tipo di animazione"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:2
|
||||
msgid "Simple"
|
||||
msgstr ""
|
||||
msgstr "Semplice"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:3
|
||||
msgid "Ripple"
|
||||
msgstr ""
|
||||
msgstr "Ondulata"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:4
|
||||
msgid "Plank"
|
||||
msgstr ""
|
||||
msgstr "Plank"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:5
|
||||
msgid "Duration"
|
||||
msgstr ""
|
||||
msgstr "Durata"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:6
|
||||
#, fuzzy
|
||||
msgid "Rotation"
|
||||
msgstr "Posizione"
|
||||
msgstr "Rotazione"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:7
|
||||
msgid "Travel"
|
||||
msgstr ""
|
||||
msgstr "Gamma di movimento"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:8
|
||||
msgid "Zoom"
|
||||
msgstr ""
|
||||
msgstr "Zoom"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:9
|
||||
msgid "Convexity"
|
||||
msgstr ""
|
||||
msgstr "Convessità"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:10
|
||||
#, fuzzy
|
||||
msgid "Extent"
|
||||
msgstr "Estensioni"
|
||||
msgstr "Estensione"
|
||||
|
||||
#: ui/BoxDotOptions.ui.h:1
|
||||
msgid "Highlight focused application"
|
||||
@@ -498,16 +493,12 @@ msgid "Font color of the minimized application titles"
|
||||
msgstr "Colore font titoli delle applicazioni minimizzate"
|
||||
|
||||
#: ui/BoxGroupAppsOptions.ui.h:10
|
||||
#, fuzzy
|
||||
msgid "Maximum width (px) of the application titles"
|
||||
msgstr "Larghezza massima (px) dei titoli delle app (predef. 160)"
|
||||
msgstr "Larghezza massima (px) dei titoli delle applicazioni"
|
||||
|
||||
#: ui/BoxGroupAppsOptions.ui.h:11
|
||||
#, fuzzy
|
||||
msgid "(default is 160)"
|
||||
msgstr ""
|
||||
"Dimensione pannello\n"
|
||||
"(predefinito 48)"
|
||||
msgstr "(predefinito è 160)"
|
||||
|
||||
#: ui/BoxGroupAppsOptions.ui.h:12
|
||||
msgid "Use a fixed width for the application titles"
|
||||
@@ -532,9 +523,8 @@ msgid "Use the favorite icons as application launchers"
|
||||
msgstr "Usa le icone dei Preferiti come lanciatori delle app"
|
||||
|
||||
#: ui/BoxIntellihideOptions.ui.h:1
|
||||
#, fuzzy
|
||||
msgid "Only hide the panel when it is obstructed by windows"
|
||||
msgstr "Nascondi pannello solo quando è ostruito dalle finestre "
|
||||
msgstr "Nascondi il pannello solo quando è ostruito da finestre"
|
||||
|
||||
#: ui/BoxIntellihideOptions.ui.h:2
|
||||
msgid "The panel hides from"
|
||||
@@ -557,14 +547,12 @@ msgid "Allow the panel to be revealed while in fullscreen mode"
|
||||
msgstr "Permetti al pannello di apparire quando in modalità fullscreen"
|
||||
|
||||
#: ui/BoxIntellihideOptions.ui.h:10
|
||||
#, fuzzy
|
||||
msgid "Only hide secondary panels"
|
||||
msgstr "Visualizza l'orologio su pannelli secondari"
|
||||
msgstr "Nascondi solo i pannelli secondari"
|
||||
|
||||
#: ui/BoxIntellihideOptions.ui.h:11
|
||||
#, fuzzy
|
||||
msgid "(requires multi-monitors option)"
|
||||
msgstr "Opzioni multi-monitor"
|
||||
msgstr "(richiede l'opzione multi-monitor)"
|
||||
|
||||
#: ui/BoxIntellihideOptions.ui.h:12
|
||||
msgid "Keyboard shortcut to reveal and hold the panel"
|
||||
@@ -627,9 +615,8 @@ msgid "Toggle single / Preview multiple"
|
||||
msgstr "Commuta finestra singola e mostra anteprime"
|
||||
|
||||
#: ui/BoxMiddleClickOptions.ui.h:9 ui/SettingsAction.ui.h:6
|
||||
#, fuzzy
|
||||
msgid "Toggle single / Cycle multiple"
|
||||
msgstr "Commuta finestra singola e mostra anteprime"
|
||||
msgstr "Attiva singolo / Ciclo multiplo"
|
||||
|
||||
#: ui/BoxMiddleClickOptions.ui.h:11
|
||||
msgid "Middle-Click action"
|
||||
@@ -757,9 +744,8 @@ msgid "<i>Show Details</i> menu item"
|
||||
msgstr "Visualizza <i>Mostra Dettagli</i>"
|
||||
|
||||
#: ui/BoxShowApplicationsOptions.ui.h:1
|
||||
#, fuzzy
|
||||
msgid "Show Applications icon"
|
||||
msgstr "Opzioni Mostra Applicazioni"
|
||||
msgstr "Mostra l'icona Applicazioni"
|
||||
|
||||
#: ui/BoxShowApplicationsOptions.ui.h:2
|
||||
msgid "Show Applications icon side padding (px)"
|
||||
@@ -772,7 +758,7 @@ msgstr ""
|
||||
|
||||
#: ui/BoxShowDesktopOptions.ui.h:1
|
||||
msgid "Override Show Desktop line color"
|
||||
msgstr ""
|
||||
msgstr "Sostituisci Mostra colore linea desktop"
|
||||
|
||||
#: ui/BoxShowDesktopOptions.ui.h:2
|
||||
msgid "Reveal the desktop when hovering the Show Desktop button"
|
||||
@@ -788,23 +774,21 @@ msgid "Fade duration (ms)"
|
||||
msgstr "Durata dissolvenza (ms)"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:1
|
||||
#, fuzzy
|
||||
msgid "Time (ms) before showing"
|
||||
msgstr ""
|
||||
"Tempo (ms) prima della visualizzazione (400 è l'impostazione predefinita)"
|
||||
"Tempo (ms) prima della visualizzazione"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:2
|
||||
msgid "(400 is default)"
|
||||
msgstr ""
|
||||
msgstr "(400 è predefinita)"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:3
|
||||
#, fuzzy
|
||||
msgid "Time (ms) before hiding"
|
||||
msgstr "Tempo (ms) prima di nascondersi (100 è l'impostazione predefinita)"
|
||||
msgstr "Tempo (ms) prima di nascondersi"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:4
|
||||
msgid "(100 is default)"
|
||||
msgstr ""
|
||||
msgstr "(100 è predefinito)"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:5
|
||||
msgid "Immediate on application icon click"
|
||||
@@ -927,11 +911,10 @@ msgid "Use custom opacity for the previews background"
|
||||
msgstr "Usa l'opacità personalizzata per lo sfondo delle anteprime"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:35
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"If disabled, the previews background have the same opacity as the panel."
|
||||
msgstr ""
|
||||
"Se disabilitato, lo sfondo delle anteprime ha la stessa opacità del pannello"
|
||||
"Se disabilitato, lo sfondo delle anteprime avrà la stessa opacità del pannello."
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:36
|
||||
msgid "Close button and header position"
|
||||
@@ -942,15 +925,12 @@ msgid "Display window preview headers"
|
||||
msgstr "Visualizza le intestazioni di anteprima della finestra"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:40
|
||||
#, fuzzy
|
||||
msgid "Icon size (px) of the window preview"
|
||||
msgstr "Dimensione carattere (px) dei titoli di anteprima"
|
||||
msgstr "Dimensioni dell'icona (px) dell'anteprima della finestra"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:41
|
||||
#, fuzzy
|
||||
msgid "If disabled, the previews icon size will be based on headerbar size"
|
||||
msgstr ""
|
||||
"Se disabilitato, lo sfondo delle anteprime ha la stessa opacità del pannello"
|
||||
msgstr "Se disabilitato, la dimensione dell'icona delle anteprime sarà basata sulla dimensione della barra di intestazione"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:42
|
||||
msgid "Font size (px) of the preview titles"
|
||||
@@ -1003,25 +983,23 @@ msgstr ""
|
||||
|
||||
#: ui/SettingsAbout.ui.h:1
|
||||
msgid "Info"
|
||||
msgstr ""
|
||||
msgstr "Informazioni"
|
||||
|
||||
#: ui/SettingsAbout.ui.h:2
|
||||
#, fuzzy
|
||||
msgid "Version"
|
||||
msgstr "versione: "
|
||||
msgstr "versione"
|
||||
|
||||
#: ui/SettingsAbout.ui.h:3
|
||||
msgid "Source"
|
||||
msgstr ""
|
||||
msgstr "Sorgente"
|
||||
|
||||
#: ui/SettingsAbout.ui.h:4
|
||||
msgid "GitHub"
|
||||
msgstr "GitHub"
|
||||
|
||||
#: ui/SettingsAbout.ui.h:5
|
||||
#, fuzzy
|
||||
msgid "Export and Import"
|
||||
msgstr "Esporta e importa impostazioni"
|
||||
msgstr "Esporta e importa"
|
||||
|
||||
#: ui/SettingsAbout.ui.h:6
|
||||
msgid "Export and import settings"
|
||||
@@ -1067,9 +1045,8 @@ msgid "Toggle windows"
|
||||
msgstr "Commuta le finestre"
|
||||
|
||||
#: ui/SettingsAction.ui.h:10
|
||||
#, fuzzy
|
||||
msgid "Scroll action"
|
||||
msgstr "Azione scorrimento icona"
|
||||
msgstr "Azione di scorrimento"
|
||||
|
||||
#: ui/SettingsAction.ui.h:11
|
||||
msgid "Scroll panel action"
|
||||
@@ -1109,9 +1086,8 @@ msgid "Same as panel"
|
||||
msgstr "Stesso del pannello"
|
||||
|
||||
#: ui/SettingsAction.ui.h:20
|
||||
#, fuzzy
|
||||
msgid "Hotkey overlay"
|
||||
msgstr "Sovrimpressione numero"
|
||||
msgstr "Sovrapposizione tasti di scelta rapida"
|
||||
|
||||
#: ui/SettingsAction.ui.h:21
|
||||
msgid "Use hotkeys to activate apps"
|
||||
@@ -1126,9 +1102,8 @@ msgstr ""
|
||||
"assieme a Shift e Ctrl."
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:1
|
||||
#, fuzzy
|
||||
msgid "Applications"
|
||||
msgstr "Non raggruppare applicazioni"
|
||||
msgstr "Applicazioni"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:2
|
||||
msgid "Show favorite applications"
|
||||
@@ -1152,7 +1127,7 @@ msgstr "Non raggruppare applicazioni"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:7
|
||||
msgid "Show notification counter badge"
|
||||
msgstr ""
|
||||
msgstr "Mostra il badge del contatore delle notifiche"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:8
|
||||
msgid "Show window previews on hover"
|
||||
@@ -1163,9 +1138,8 @@ msgid "Show tooltip on hover"
|
||||
msgstr "Mostra suggerimento al passaggio"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:10
|
||||
#, fuzzy
|
||||
msgid "Isolate"
|
||||
msgstr "Isola monitor"
|
||||
msgstr "Isola"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:11
|
||||
msgid "Isolate Workspaces"
|
||||
@@ -1177,70 +1151,55 @@ msgstr "Isola monitor"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:13
|
||||
msgid "Overview"
|
||||
msgstr ""
|
||||
msgstr "Panoramica"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:14
|
||||
msgid "Click empty space to close overview"
|
||||
msgstr ""
|
||||
msgstr "Fare clic su uno spazio vuoto per chiudere la panoramica"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:15
|
||||
msgid "Disable show overview on startup"
|
||||
msgstr ""
|
||||
msgstr "Disabilita mostra panoramica all'avvio"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:1
|
||||
msgid "Font size"
|
||||
msgstr ""
|
||||
msgstr "Dimensione del font"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:2
|
||||
msgid "Tray Font Size"
|
||||
msgstr ""
|
||||
msgstr "Dimensione font Tray"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:3
|
||||
#, fuzzy
|
||||
msgid "(0 = theme default)"
|
||||
msgstr ""
|
||||
"Dimens. Font Tray\n"
|
||||
"(0 = predefinito)"
|
||||
msgstr "(0 = tema predefinito)"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:4
|
||||
#, fuzzy
|
||||
msgid "LeftBox Font Size"
|
||||
msgstr ""
|
||||
"Dimens. Font LeftBox\n"
|
||||
"(0 = predefinito)"
|
||||
msgstr "Dimensione font casella sinistra"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:5
|
||||
msgid "Padding"
|
||||
msgstr ""
|
||||
msgstr "Imbottitura"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:6
|
||||
#, fuzzy
|
||||
msgid "Tray Item Padding"
|
||||
msgstr ""
|
||||
"Spaziatura Icone Tray\n"
|
||||
"(-1 = predefinito)"
|
||||
msgstr "Imbottitura degli elementi della tray"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:7
|
||||
#, fuzzy
|
||||
msgid "(-1 = theme default)"
|
||||
msgstr ""
|
||||
"Spaziatura LeftBox\n"
|
||||
"(-1 = predefinito)"
|
||||
msgstr "(-1 = tema predefinito)"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:8
|
||||
#, fuzzy
|
||||
msgid "Status Icon Padding"
|
||||
msgstr ""
|
||||
"Spaziatura icone stato\n"
|
||||
"(-1 = predefinito)"
|
||||
msgstr "Imbottitura icona di stato"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:9
|
||||
msgid "LeftBox Padding"
|
||||
msgstr ""
|
||||
msgstr "Imbottitura della casella sinistra"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:10
|
||||
msgid "Animate"
|
||||
msgstr ""
|
||||
msgstr "Animato"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:11
|
||||
msgid "Animate switching applications"
|
||||
@@ -1252,49 +1211,43 @@ msgstr "Animazione apertura nuove finestre"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:13
|
||||
msgid "Gnome functionality"
|
||||
msgstr ""
|
||||
msgstr "Funzionalità Gnome"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:14
|
||||
#, fuzzy
|
||||
msgid "Keep original gnome-shell dash"
|
||||
msgstr "Mantieni dash originale di gnome-shell (schermata panoramica)"
|
||||
msgstr "Mantieni dash originale di gnome-shell"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:15
|
||||
msgid "(overview)"
|
||||
msgstr ""
|
||||
msgstr "(panoramica)"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:16
|
||||
msgid "Keep original gnome-shell top panel"
|
||||
msgstr "Mantieni il pannello superiore della gnome-shell originale"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:17
|
||||
#, fuzzy
|
||||
msgid "Activate panel menu buttons on click only"
|
||||
msgstr ""
|
||||
"Attiva i pulsanti del menu del pannello (ad es. Menu della data) solo al clic"
|
||||
msgstr "Attiva i pulsanti del menu del pannello solo con un clic"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:18
|
||||
#, fuzzy
|
||||
msgid "(e.g. date menu)"
|
||||
msgstr "Data e ora"
|
||||
msgstr "(es. menu data)"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:19
|
||||
msgid "Force Activities hot corner on primary monitor"
|
||||
msgstr "Forza angolo attivo delle attività sul monitor principale"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:20
|
||||
#, fuzzy
|
||||
msgid "App icon secondary menu"
|
||||
msgstr "Menu secondario (clic destro) delle icone"
|
||||
msgstr "Menu secondario dell'icona dell'app"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:21
|
||||
#, fuzzy
|
||||
msgid "(right-click menu)"
|
||||
msgstr "Menu secondario (clic destro) delle icone"
|
||||
msgstr "(menù cliccabile con il tasto destro)"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:1
|
||||
msgid "Panel"
|
||||
msgstr ""
|
||||
msgstr "Pannello"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:2
|
||||
msgid "Display the main panel on"
|
||||
@@ -1313,14 +1266,12 @@ msgid "Hide and reveal the panel according to preferences"
|
||||
msgstr "Mostra e nascondi il pannello secondo le preferenze"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:6
|
||||
#, fuzzy
|
||||
msgid "Order and Position on monitors"
|
||||
msgstr "Ordinamento e posizione sullo schermo"
|
||||
msgstr "Ordinamento e posizione sui monitor"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:7
|
||||
#, fuzzy
|
||||
msgid "Monitor"
|
||||
msgstr "Monitor "
|
||||
msgstr "Monitor"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:8
|
||||
msgid "Apply changes to all monitors"
|
||||
@@ -1331,79 +1282,57 @@ msgid "Panel screen position"
|
||||
msgstr "Posizione pannello sullo schermo"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:14
|
||||
#, fuzzy
|
||||
msgid "Panel thickness"
|
||||
msgstr "Pannello Intellihide"
|
||||
msgstr "Spessore del pannello"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:15
|
||||
#, fuzzy
|
||||
msgid "(default is 48)"
|
||||
msgstr ""
|
||||
"Dimensione pannello\n"
|
||||
"(predefinito 48)"
|
||||
msgstr "(predefinito è 48)"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:17
|
||||
#, no-c-format
|
||||
msgid "Panel length (%)"
|
||||
msgstr ""
|
||||
msgstr "Lunghezza del pannello (%)"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:18
|
||||
#, fuzzy
|
||||
msgid "(default is 100)"
|
||||
msgstr ""
|
||||
"Dimensione pannello\n"
|
||||
"(predefinito 48)"
|
||||
msgstr "(predefinito è 100)"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:19
|
||||
msgid "Anchor"
|
||||
msgstr ""
|
||||
msgstr "Ancora"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:23
|
||||
#, fuzzy
|
||||
msgid "Taskbar Display"
|
||||
msgstr "Taskbar"
|
||||
msgstr "Visualizzazione Taskbar"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:1
|
||||
msgid "AppIcon style"
|
||||
msgstr ""
|
||||
msgstr "Stile icona dell'app"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:2
|
||||
#, fuzzy
|
||||
msgid "App Icon Margin"
|
||||
msgstr ""
|
||||
"Margine icone app\n"
|
||||
"(predefinito 8)"
|
||||
msgstr "Margine icona app"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:3
|
||||
#, fuzzy
|
||||
msgid "(default is 8)"
|
||||
msgstr ""
|
||||
"Dimensione pannello\n"
|
||||
"(predefinito 48)"
|
||||
msgstr "(predefinito è 8)"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:4
|
||||
#, fuzzy
|
||||
msgid "App Icon Padding"
|
||||
msgstr ""
|
||||
"Spaziatura icone app\n"
|
||||
"(predefinito 4)"
|
||||
msgstr "Imbottitura delle icone dell'app"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:5
|
||||
#, fuzzy
|
||||
msgid "(default is 4)"
|
||||
msgstr ""
|
||||
"Dimensione pannello\n"
|
||||
"(predefinito 48)"
|
||||
msgstr "(predefinito è 4)"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:6
|
||||
#, fuzzy
|
||||
msgid "Animate hovering app icons"
|
||||
msgstr "Animazione passaggio tra applicazioni"
|
||||
msgstr "Animazione passaggio tra le icone delle app"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:7
|
||||
#, fuzzy
|
||||
msgid "Running indicator"
|
||||
msgstr "Posizione indicatore di esecuzione"
|
||||
msgstr "Indicatore di esecuzione"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:8
|
||||
msgid "Running indicator position"
|
||||
@@ -1446,14 +1375,12 @@ msgid "Running indicator style (Unfocused apps)"
|
||||
msgstr "Stile indicatore di esecuzione (app senza focus)"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:22
|
||||
#, fuzzy
|
||||
msgid "Panel style"
|
||||
msgstr "Pannello Intellihide"
|
||||
msgstr "Stile del pannello"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:23
|
||||
#, fuzzy
|
||||
msgid "Override panel theme background color"
|
||||
msgstr "Ignora il colore di sfondo del pannello "
|
||||
msgstr "Sostituisci il colore di sfondo del tema del pannello"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:24
|
||||
msgid "Override panel theme background opacity"
|
||||
@@ -1473,9 +1400,8 @@ msgid "Change opacity when a window gets close to the panel"
|
||||
msgstr "Cambia l'opacità quando una finestra è vicina al pannello"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:30
|
||||
#, fuzzy
|
||||
msgid "Override panel theme gradient"
|
||||
msgstr "Ignora gradiente del pannello "
|
||||
msgstr "Sostituisci il gradiente del tema del pannello"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:32
|
||||
#, no-c-format
|
||||
@@ -1607,7 +1533,7 @@ msgstr "Isola aree di lavoro e monitor nelle impostazioni di Cambio applicazione
|
||||
#~ "about/\">Leggi di più</a>"
|
||||
|
||||
#~ msgid "About"
|
||||
#~ msgstr "Informazioni su"
|
||||
#~ msgstr "Informazioni"
|
||||
|
||||
#~ msgid "Top, with plugin icons collapsed to bottom"
|
||||
#~ msgstr "In alto, con le icone dei plugin raggruppate in bassoa"
|
||||
|
||||
295
po/pl.po
295
po/pl.po
@@ -20,15 +20,15 @@ msgstr ""
|
||||
|
||||
#: prefs.js:247
|
||||
msgid "Show Desktop button height (px)"
|
||||
msgstr "Wysokość przycisku <i>Pokaż pulpit</i> (px)"
|
||||
msgstr "Wysokość przycisku <Pokaż pulpit (px)"
|
||||
|
||||
#: prefs.js:247
|
||||
msgid "Show Desktop button width (px)"
|
||||
msgstr "Szerokość przycisku <i>Pokaż pulpit</i> (px)"
|
||||
msgstr "Szerokość przycisku Pokaż pulpit (px)"
|
||||
|
||||
#: prefs.js:259
|
||||
msgid "Unavailable when gnome-shell top panel is present"
|
||||
msgstr ""
|
||||
msgstr "Niedostępne, gdy górna belka gnome-shell jest widoczna"
|
||||
|
||||
#: prefs.js:317 ui/SettingsPosition.ui.h:12 ui/SettingsStyle.ui.h:11
|
||||
msgid "Left"
|
||||
@@ -36,7 +36,7 @@ msgstr "Lewo"
|
||||
|
||||
#: prefs.js:318
|
||||
msgid "Center"
|
||||
msgstr ""
|
||||
msgstr "Wyśrodkowane"
|
||||
|
||||
#: prefs.js:319 ui/SettingsPosition.ui.h:13 ui/SettingsStyle.ui.h:12
|
||||
msgid "Right"
|
||||
@@ -49,7 +49,7 @@ msgstr "Góra"
|
||||
|
||||
#: prefs.js:322 prefs.js:327 ui/SettingsPosition.ui.h:21
|
||||
msgid "Middle"
|
||||
msgstr ""
|
||||
msgstr "Po środku"
|
||||
|
||||
#: prefs.js:323 ui/BoxWindowPreviewOptions.ui.h:37 ui/SettingsPosition.ui.h:10
|
||||
#: ui/SettingsStyle.ui.h:9
|
||||
@@ -58,101 +58,91 @@ msgstr "Dół"
|
||||
|
||||
#: prefs.js:326 ui/SettingsPosition.ui.h:20
|
||||
msgid "Start"
|
||||
msgstr ""
|
||||
msgstr "Początek"
|
||||
|
||||
#: prefs.js:328 ui/SettingsPosition.ui.h:22
|
||||
msgid "End"
|
||||
msgstr ""
|
||||
msgstr "Koniec"
|
||||
|
||||
#: prefs.js:413
|
||||
#, fuzzy
|
||||
msgid "Show Applications button"
|
||||
msgstr "Opcje wyświetlania programów"
|
||||
|
||||
#: prefs.js:414
|
||||
#, fuzzy
|
||||
msgid "Activities button"
|
||||
msgstr "Pokaż przycisk <i>Podgląd</i>"
|
||||
msgstr "Przycisk Podgląd"
|
||||
|
||||
#: prefs.js:415
|
||||
#, fuzzy
|
||||
msgid "Taskbar"
|
||||
msgstr "Górna strona paska zadań"
|
||||
|
||||
#: prefs.js:416
|
||||
msgid "Date menu"
|
||||
msgstr ""
|
||||
msgstr "Menu daty"
|
||||
|
||||
#: prefs.js:417
|
||||
#, fuzzy
|
||||
msgid "System menu"
|
||||
msgstr "Monitor procesów"
|
||||
|
||||
#: prefs.js:418
|
||||
#, fuzzy
|
||||
msgid "Left box"
|
||||
msgstr "Lewo"
|
||||
msgstr "Po lewej"
|
||||
|
||||
#: prefs.js:419
|
||||
msgid "Center box"
|
||||
msgstr ""
|
||||
msgstr "Wyśrodkowanie do okna"
|
||||
|
||||
#: prefs.js:420
|
||||
#, fuzzy
|
||||
msgid "Right box"
|
||||
msgstr "Prawo"
|
||||
msgstr "Po prawej"
|
||||
|
||||
#: prefs.js:421
|
||||
#, fuzzy
|
||||
msgid "Desktop button"
|
||||
msgstr "Pokaż przycisk <i>Pulpit</i>"
|
||||
msgstr "Przycisk Pulpit"
|
||||
|
||||
#: prefs.js:427
|
||||
msgid "Move up"
|
||||
msgstr ""
|
||||
msgstr "W górę"
|
||||
|
||||
#: prefs.js:429
|
||||
msgid "Move down"
|
||||
msgstr ""
|
||||
msgstr "W dół"
|
||||
|
||||
#: prefs.js:431
|
||||
msgid "Visible"
|
||||
msgstr ""
|
||||
msgstr "Widoczny"
|
||||
|
||||
#: prefs.js:432
|
||||
#, fuzzy
|
||||
msgid "Select element position"
|
||||
msgstr "Położenie panelu na ekranie"
|
||||
|
||||
#: prefs.js:443
|
||||
msgid "Stacked to top"
|
||||
msgstr ""
|
||||
msgstr "Przypięto do góry"
|
||||
|
||||
#: prefs.js:443
|
||||
msgid "Stacked to left"
|
||||
msgstr ""
|
||||
msgstr "Przypięto do lewej"
|
||||
|
||||
#: prefs.js:444
|
||||
msgid "Stacked to bottom"
|
||||
msgstr ""
|
||||
msgstr "Przypięto do dołu"
|
||||
|
||||
#: prefs.js:444
|
||||
msgid "Stacked to right"
|
||||
msgstr ""
|
||||
msgstr "Przypięto do prawej"
|
||||
|
||||
#: prefs.js:445
|
||||
msgid "Centered"
|
||||
msgstr ""
|
||||
msgstr "Wyśrodkowano"
|
||||
|
||||
#: prefs.js:446
|
||||
#, fuzzy
|
||||
msgid "Monitor Center"
|
||||
msgstr "Monitor "
|
||||
|
||||
#: prefs.js:465
|
||||
#, fuzzy
|
||||
msgid "More options"
|
||||
msgstr "Opcje zasilania"
|
||||
msgstr "Więcej opcji"
|
||||
|
||||
#: prefs.js:497
|
||||
msgid "Reset to defaults"
|
||||
@@ -160,11 +150,11 @@ msgstr "Przywróć domyślne"
|
||||
|
||||
#: prefs.js:520
|
||||
msgid "Show Applications options"
|
||||
msgstr "Opcje wyświetlania programów"
|
||||
msgstr "Pokaż opcje programów"
|
||||
|
||||
#: prefs.js:530
|
||||
msgid "Open icon"
|
||||
msgstr ""
|
||||
msgstr "Wybierz ikonę"
|
||||
|
||||
#: prefs.js:577
|
||||
msgid "Show Desktop options"
|
||||
@@ -173,37 +163,36 @@ msgstr "Pokaż opcje pulpitu"
|
||||
#: prefs.js:661
|
||||
#, javascript-format
|
||||
msgid "%d ms"
|
||||
msgstr ""
|
||||
msgstr "%d ms"
|
||||
|
||||
#: prefs.js:666
|
||||
#, javascript-format
|
||||
msgid "%d °"
|
||||
msgstr ""
|
||||
msgstr "%d °"
|
||||
|
||||
#: prefs.js:671 prefs.js:676
|
||||
#, javascript-format
|
||||
msgid "%d %%"
|
||||
msgstr ""
|
||||
msgstr "%d %%"
|
||||
|
||||
#: prefs.js:681
|
||||
#, javascript-format
|
||||
msgid "%.1f"
|
||||
msgstr ""
|
||||
msgstr "%.1f"
|
||||
|
||||
#: prefs.js:686
|
||||
#, javascript-format
|
||||
msgid "%d icon"
|
||||
msgid_plural "%d icons"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
msgstr[0] "%d ikon"
|
||||
msgstr[1] "%d ikona"
|
||||
msgstr[2] "%d ikon"
|
||||
|
||||
#: prefs.js:782
|
||||
msgid "Running Indicator Options"
|
||||
msgstr "Opcje wskaźnika aktywnych programów"
|
||||
|
||||
#: prefs.js:928
|
||||
#, fuzzy
|
||||
msgid "Primary monitor"
|
||||
msgstr "Domyślny (Główny monitor)"
|
||||
|
||||
@@ -252,7 +241,6 @@ msgid "Advanced Options"
|
||||
msgstr "Opcje zaawansowane"
|
||||
|
||||
#: prefs.js:2040
|
||||
#, fuzzy
|
||||
msgid "App icon animation options"
|
||||
msgstr "Opcje wyświetlania programów"
|
||||
|
||||
@@ -307,7 +295,7 @@ msgstr "Pliki"
|
||||
|
||||
#: appIcons.js:1834
|
||||
msgid "Extensions"
|
||||
msgstr ""
|
||||
msgstr "Rozszerzenia"
|
||||
|
||||
#: appIcons.js:1839
|
||||
msgid "Settings"
|
||||
@@ -339,49 +327,47 @@ msgstr "Jeszcze nic!"
|
||||
|
||||
#: ui/BoxAdvancedOptions.ui.h:2
|
||||
msgid "For real..."
|
||||
msgstr ""
|
||||
msgstr "Na pewno..."
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:1
|
||||
#, fuzzy
|
||||
msgid "Animation type"
|
||||
msgstr "Długość animacji (ms)"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:2
|
||||
msgid "Simple"
|
||||
msgstr ""
|
||||
msgstr "Prosta"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:3
|
||||
msgid "Ripple"
|
||||
msgstr ""
|
||||
msgstr "Fala"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:4
|
||||
msgid "Plank"
|
||||
msgstr ""
|
||||
msgstr "Mała fala"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:5
|
||||
msgid "Duration"
|
||||
msgstr ""
|
||||
msgstr "Trwanie"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:6
|
||||
#, fuzzy
|
||||
msgid "Rotation"
|
||||
msgstr "Położenie"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:7
|
||||
msgid "Travel"
|
||||
msgstr ""
|
||||
msgstr "Przemieszczanie"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:8
|
||||
msgid "Zoom"
|
||||
msgstr ""
|
||||
msgstr "Powiększenie"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:9
|
||||
msgid "Convexity"
|
||||
msgstr ""
|
||||
msgstr "Wypukłość"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:10
|
||||
msgid "Extent"
|
||||
msgstr ""
|
||||
msgstr "Zakres"
|
||||
|
||||
#: ui/BoxDotOptions.ui.h:1
|
||||
msgid "Highlight focused application"
|
||||
@@ -400,7 +386,6 @@ msgid "Highlight opacity"
|
||||
msgstr "Przeźroczystość podświetlenia"
|
||||
|
||||
#: ui/BoxDotOptions.ui.h:5
|
||||
#, fuzzy
|
||||
msgid "Indicator size (px)"
|
||||
msgstr "Wysokość wskaźnika (px)"
|
||||
|
||||
@@ -503,21 +488,16 @@ msgid "Font color of the application titles"
|
||||
msgstr "Kolor czcionki"
|
||||
|
||||
#: ui/BoxGroupAppsOptions.ui.h:9
|
||||
#, fuzzy
|
||||
msgid "Font color of the minimized application titles"
|
||||
msgstr "Kolor czcionki"
|
||||
|
||||
#: ui/BoxGroupAppsOptions.ui.h:10
|
||||
#, fuzzy
|
||||
msgid "Maximum width (px) of the application titles"
|
||||
msgstr "Maksymalna szerokość (px) etykiet (domyślnie 160)"
|
||||
|
||||
#: ui/BoxGroupAppsOptions.ui.h:11
|
||||
#, fuzzy
|
||||
msgid "(default is 160)"
|
||||
msgstr ""
|
||||
"Rozmiar panelu\n"
|
||||
"(domyślnie 48)"
|
||||
msgstr "(domyślnie 160)"
|
||||
|
||||
#: ui/BoxGroupAppsOptions.ui.h:12
|
||||
msgid "Use a fixed width for the application titles"
|
||||
@@ -542,7 +522,6 @@ msgid "Use the favorite icons as application launchers"
|
||||
msgstr "Oddziel ulubione od uruchomionych programów"
|
||||
|
||||
#: ui/BoxIntellihideOptions.ui.h:1
|
||||
#, fuzzy
|
||||
msgid "Only hide the panel when it is obstructed by windows"
|
||||
msgstr "Ukryj panel tylko wtedy, gdy jest zasłonięty przez okna "
|
||||
|
||||
@@ -567,12 +546,10 @@ msgid "Allow the panel to be revealed while in fullscreen mode"
|
||||
msgstr "Pozwól, aby panel został odsłonięty w trybie pełnoekranowym"
|
||||
|
||||
#: ui/BoxIntellihideOptions.ui.h:10
|
||||
#, fuzzy
|
||||
msgid "Only hide secondary panels"
|
||||
msgstr "Ukryj wyłącznie drugorzędne panele (dla wielu monitorów)"
|
||||
|
||||
#: ui/BoxIntellihideOptions.ui.h:11
|
||||
#, fuzzy
|
||||
msgid "(requires multi-monitors option)"
|
||||
msgstr "Opcje wielu monitorów"
|
||||
|
||||
@@ -637,7 +614,6 @@ msgid "Toggle single / Preview multiple"
|
||||
msgstr "Przełącz pojedyncze / Podejrzyj wiele"
|
||||
|
||||
#: ui/BoxMiddleClickOptions.ui.h:9 ui/SettingsAction.ui.h:6
|
||||
#, fuzzy
|
||||
msgid "Toggle single / Cycle multiple"
|
||||
msgstr "Przełącz pojedyncze / Podejrzyj wiele"
|
||||
|
||||
@@ -655,9 +631,7 @@ msgstr "Kliknięcie środkowym przyciskiem + Shift"
|
||||
|
||||
#: ui/BoxMiddleClickOptions.ui.h:14
|
||||
msgid "Behavior for Shift+Middle-Click."
|
||||
msgstr ""
|
||||
"Konfiguruje działanie kliknięcia środkowym przyciskiem z przytrzymanym "
|
||||
"klawiszem Shift."
|
||||
msgstr "Zachowanie dla Shift+środkowy przycisk"
|
||||
|
||||
#: ui/BoxOverlayShortcut.ui.h:1
|
||||
msgid "Hotkeys prefix"
|
||||
@@ -749,40 +723,39 @@ msgstr "Użyj tą wartość by ograniczyć liczbę przechwyceń przewijania mysz
|
||||
|
||||
#: ui/BoxScrollPanelOptions.ui.h:3
|
||||
msgid "Show popup when changing workspace"
|
||||
msgstr ""
|
||||
msgstr "Pokaż wyskakujące okno podczas zmiany przestrzeni roboczej"
|
||||
|
||||
#: ui/BoxScrollPanelOptions.ui.h:4
|
||||
msgid "This affects workspace popup when scrolling on the panel only."
|
||||
msgstr ""
|
||||
msgstr "Ma wpływ na wyskakujące okno w przestrzeni roboczej tylko na panelu"
|
||||
|
||||
#: ui/BoxSecondaryMenuOptions.ui.h:1
|
||||
msgid "Integrate <i>AppMenu</i> items"
|
||||
msgstr "Zintegruj elementy <i>menu programów</i>"
|
||||
msgstr "Zintegruj elementy <i>Menu programów</i>"
|
||||
|
||||
#: ui/BoxSecondaryMenuOptions.ui.h:2
|
||||
msgid "<i>Show Details</i> menu item"
|
||||
msgstr "<i>Wyświetl szczegóły</i>"
|
||||
|
||||
#: ui/BoxShowApplicationsOptions.ui.h:1
|
||||
#, fuzzy
|
||||
msgid "Show Applications icon"
|
||||
msgstr "Opcje wyświetlania programów"
|
||||
|
||||
#: ui/BoxShowApplicationsOptions.ui.h:2
|
||||
msgid "Show Applications icon side padding (px)"
|
||||
msgstr "Wewnętrzny margines przycisku <i>Pokaż programy</i> (px)"
|
||||
msgstr "Wewnętrzny margines przycisku Pokaż programy (px)"
|
||||
|
||||
#: ui/BoxShowApplicationsOptions.ui.h:4
|
||||
msgid "Override escape key and return to desktop"
|
||||
msgstr ""
|
||||
msgstr "Nadpisz przycisk wyjścia i wróć do pulpitu"
|
||||
|
||||
#: ui/BoxShowDesktopOptions.ui.h:1
|
||||
msgid "Override Show Desktop line color"
|
||||
msgstr ""
|
||||
msgstr "Nadpisz kolor przycisku Pokaż pulpit"
|
||||
|
||||
#: ui/BoxShowDesktopOptions.ui.h:2
|
||||
msgid "Reveal the desktop when hovering the Show Desktop button"
|
||||
msgstr "Pokaż pulpit po najechaniu na przycisk <i>Pokaż pulpit</i>"
|
||||
msgstr "Pokaż pulpit po najechaniu na przycisk Pokaż pulpit"
|
||||
|
||||
#: ui/BoxShowDesktopOptions.ui.h:3
|
||||
msgid "Delay before revealing the desktop (ms)"
|
||||
@@ -793,22 +766,20 @@ msgid "Fade duration (ms)"
|
||||
msgstr "Opóźnienie ukrywania (ms)"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:1
|
||||
#, fuzzy
|
||||
msgid "Time (ms) before showing"
|
||||
msgstr "Opóźnienie (ms) przed pokazaniem (domyślnie 100)"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:2
|
||||
msgid "(400 is default)"
|
||||
msgstr ""
|
||||
msgstr "(Domyślnie 400)"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:3
|
||||
#, fuzzy
|
||||
msgid "Time (ms) before hiding"
|
||||
msgstr "Opóźnienie ukrywania miniatur (domyślnie 100 ms)"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:4
|
||||
msgid "(100 is default)"
|
||||
msgstr ""
|
||||
msgstr "(Domyślnie 100)"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:5
|
||||
msgid "Immediate on application icon click"
|
||||
@@ -932,7 +903,6 @@ msgid "Use custom opacity for the previews background"
|
||||
msgstr "Własna przeźroczystość dla tła podglądu okna"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:35
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"If disabled, the previews background have the same opacity as the panel."
|
||||
msgstr ""
|
||||
@@ -947,12 +917,10 @@ msgid "Display window preview headers"
|
||||
msgstr "Wyświetlaj nagłówek w podglądzie okna"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:40
|
||||
#, fuzzy
|
||||
msgid "Icon size (px) of the window preview"
|
||||
msgstr "Wielkość czcionki etykiet (px) etykiet podglądu"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:41
|
||||
#, fuzzy
|
||||
msgid "If disabled, the previews icon size will be based on headerbar size"
|
||||
msgstr ""
|
||||
"Jeśli wyłączone, podgląd okna będzie mieć taką samą przeźroczystość jak panel"
|
||||
@@ -1002,31 +970,26 @@ msgid "Window peeking mode opacity"
|
||||
msgstr "Przeźroczystość podglądanych okien"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:56
|
||||
msgid ""
|
||||
"All windows except for the peeked one have their opacity set to the same "
|
||||
"value."
|
||||
msgstr ""
|
||||
"Wszystkie okna, za wyjątkiem okna głównego, mają tą samą przeźroczystość."
|
||||
msgid "All windows except for the peeked one have their opacity set to the same value."
|
||||
msgstr "Wszystkie okna, za wyjątkiem okna głównego, mają tą samą przeźroczystość."
|
||||
|
||||
#: ui/SettingsAbout.ui.h:1
|
||||
msgid "Info"
|
||||
msgstr ""
|
||||
msgstr "Info"
|
||||
|
||||
#: ui/SettingsAbout.ui.h:2
|
||||
#, fuzzy
|
||||
msgid "Version"
|
||||
msgstr "wersja: "
|
||||
msgstr "Wersja"
|
||||
|
||||
#: ui/SettingsAbout.ui.h:3
|
||||
msgid "Source"
|
||||
msgstr ""
|
||||
msgstr "Źródło"
|
||||
|
||||
#: ui/SettingsAbout.ui.h:4
|
||||
msgid "GitHub"
|
||||
msgstr "GitHub"
|
||||
|
||||
#: ui/SettingsAbout.ui.h:5
|
||||
#, fuzzy
|
||||
msgid "Export and Import"
|
||||
msgstr "Ustawienia eksportu i importu"
|
||||
|
||||
@@ -1074,7 +1037,6 @@ msgid "Toggle windows"
|
||||
msgstr "Przełącz okna"
|
||||
|
||||
#: ui/SettingsAction.ui.h:10
|
||||
#, fuzzy
|
||||
msgid "Scroll action"
|
||||
msgstr "Działanie przewijania na ikonie"
|
||||
|
||||
@@ -1100,7 +1062,7 @@ msgstr "Przełącz między oknami"
|
||||
|
||||
#: ui/SettingsAction.ui.h:16
|
||||
msgid "Change volume"
|
||||
msgstr ""
|
||||
msgstr "Zmień głośność"
|
||||
|
||||
#: ui/SettingsAction.ui.h:17
|
||||
msgid "Scroll icon action"
|
||||
@@ -1112,10 +1074,9 @@ msgstr "Reakcja na przewijanie myszą nad ikoną programu."
|
||||
|
||||
#: ui/SettingsAction.ui.h:19
|
||||
msgid "Same as panel"
|
||||
msgstr ""
|
||||
msgstr "Tak jak panel"
|
||||
|
||||
#: ui/SettingsAction.ui.h:20
|
||||
#, fuzzy
|
||||
msgid "Hotkey overlay"
|
||||
msgstr "Pokazywanie cyfr"
|
||||
|
||||
@@ -1132,7 +1093,6 @@ msgstr ""
|
||||
"Super+(0-9) - możliwe użycie razem z Shift i Ctrl."
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:1
|
||||
#, fuzzy
|
||||
msgid "Applications"
|
||||
msgstr "Tryb listy (nie scalaj ikon)"
|
||||
|
||||
@@ -1141,7 +1101,6 @@ msgid "Show favorite applications"
|
||||
msgstr "Pokaż ulubione programy"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:3
|
||||
#, fuzzy
|
||||
msgid "Show favorite applications on secondary panels"
|
||||
msgstr "Pokaż ulubione programy"
|
||||
|
||||
@@ -1159,7 +1118,7 @@ msgstr "Tryb listy (nie scalaj ikon)"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:7
|
||||
msgid "Show notification counter badge"
|
||||
msgstr ""
|
||||
msgstr "Pokaż licznik powiadomień"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:8
|
||||
msgid "Show window previews on hover"
|
||||
@@ -1170,7 +1129,6 @@ msgid "Show tooltip on hover"
|
||||
msgstr "Pokaż szczegóły po najechaniu myszą"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:10
|
||||
#, fuzzy
|
||||
msgid "Isolate"
|
||||
msgstr "Niezależne obszary robocze"
|
||||
|
||||
@@ -1184,33 +1142,29 @@ msgstr "Niezależne obszary robocze"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:13
|
||||
msgid "Overview"
|
||||
msgstr ""
|
||||
msgstr "Przegląd"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:14
|
||||
msgid "Click empty space to close overview"
|
||||
msgstr ""
|
||||
msgstr "Kliknij na pustą przestrzeń, aby zamknąć podgląd"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:15
|
||||
msgid "Disable show overview on startup"
|
||||
msgstr ""
|
||||
msgstr "Wyłącz pokazywanie podglądu przy uruchomieniu"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:1
|
||||
msgid "Font size"
|
||||
msgstr ""
|
||||
msgstr "Rozmiar czcionki"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:2
|
||||
msgid "Tray Font Size"
|
||||
msgstr ""
|
||||
msgstr "Rozmiar czcionki zasobnika"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:3
|
||||
#, fuzzy
|
||||
msgid "(0 = theme default)"
|
||||
msgstr ""
|
||||
"Rozmiar czcionki zasobnika\n"
|
||||
"(0 - domyślne motywu)"
|
||||
msgstr "(0 - domyślne motywu)"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:4
|
||||
#, fuzzy
|
||||
msgid "LeftBox Font Size"
|
||||
msgstr ""
|
||||
"Rozmiar czcionki lewej strony panelu\n"
|
||||
@@ -1218,36 +1172,27 @@ msgstr ""
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:5
|
||||
msgid "Padding"
|
||||
msgstr ""
|
||||
msgstr "Odstęp"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:6
|
||||
#, fuzzy
|
||||
msgid "Tray Item Padding"
|
||||
msgstr ""
|
||||
"Odstęp elementów zasobnika\n"
|
||||
"(-1 - domyślne motywu)"
|
||||
msgstr "Odstęp elementów zasobnika"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:7
|
||||
#, fuzzy
|
||||
msgid "(-1 = theme default)"
|
||||
msgstr ""
|
||||
"Odstęp elementów lewej strony panelu\n"
|
||||
"(-1 - domyślne motywu)"
|
||||
msgstr "(-1 - domyślne motywu)"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:8
|
||||
#, fuzzy
|
||||
msgid "Status Icon Padding"
|
||||
msgstr ""
|
||||
"Odstęp elementów menu systemowego\n"
|
||||
"(-1 - domyślne motywu)"
|
||||
msgstr "Odstęp ikon stanu"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:9
|
||||
msgid "LeftBox Padding"
|
||||
msgstr ""
|
||||
msgstr "Do lewej"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:10
|
||||
msgid "Animate"
|
||||
msgstr ""
|
||||
msgstr "Animacja"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:11
|
||||
msgid "Animate switching applications"
|
||||
@@ -1259,49 +1204,44 @@ msgstr "Animuj uruchamianie nowych programów"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:13
|
||||
msgid "Gnome functionality"
|
||||
msgstr ""
|
||||
msgstr "Funkcja Gnome"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:14
|
||||
#, fuzzy
|
||||
msgid "Keep original gnome-shell dash"
|
||||
msgstr "Zachowaj oryginalny panel (podgląd)"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:15
|
||||
msgid "(overview)"
|
||||
msgstr ""
|
||||
msgstr "(przegląd)"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:16
|
||||
#, fuzzy
|
||||
msgid "Keep original gnome-shell top panel"
|
||||
msgstr "Zachowaj oryginalny panel (podgląd)"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:17
|
||||
#, fuzzy
|
||||
msgid "Activate panel menu buttons on click only"
|
||||
msgstr ""
|
||||
"Aktywuj przyciski menu panelu (np. menu kalendarza) tylko po kliknięciu"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:18
|
||||
msgid "(e.g. date menu)"
|
||||
msgstr ""
|
||||
msgstr "(np. menu daty)"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:19
|
||||
msgid "Force Activities hot corner on primary monitor"
|
||||
msgstr ""
|
||||
msgstr "Wymuś Aktywności gorącego rogu na głównym monitorze"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:20
|
||||
#, fuzzy
|
||||
msgid "App icon secondary menu"
|
||||
msgstr "Menu kontekstowe programu (prawy przycisk myszy)"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:21
|
||||
#, fuzzy
|
||||
msgid "(right-click menu)"
|
||||
msgstr "Menu kontekstowe programu (prawy przycisk myszy)"
|
||||
msgstr "(prawy przycisk myszy)"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:1
|
||||
msgid "Panel"
|
||||
msgstr ""
|
||||
msgstr "Panel"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:2
|
||||
msgid "Display the main panel on"
|
||||
@@ -1321,93 +1261,70 @@ msgstr "Ukryj i odsłoń panel według preferencji"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:6
|
||||
msgid "Order and Position on monitors"
|
||||
msgstr ""
|
||||
msgstr "Kolejność i pozycja na monitorach"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:7
|
||||
#, fuzzy
|
||||
msgid "Monitor"
|
||||
msgstr "Monitor "
|
||||
msgstr "Monitor"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:8
|
||||
#, fuzzy
|
||||
msgid "Apply changes to all monitors"
|
||||
msgstr "Wyświetl panel na wszystkich monitorach"
|
||||
msgstr "Zastosuj zmiany na wszyskich monitorach"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:9
|
||||
msgid "Panel screen position"
|
||||
msgstr "Położenie panelu na ekranie"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:14
|
||||
#, fuzzy
|
||||
msgid "Panel thickness"
|
||||
msgstr "Inteligentne ukrywanie panelu"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:15
|
||||
#, fuzzy
|
||||
msgid "(default is 48)"
|
||||
msgstr ""
|
||||
"Rozmiar panelu\n"
|
||||
"(domyślnie 48)"
|
||||
msgstr "(domyślnie 48)"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:17
|
||||
#, no-c-format
|
||||
msgid "Panel length (%)"
|
||||
msgstr ""
|
||||
msgstr "Długość panela (%)"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:18
|
||||
#, fuzzy
|
||||
msgid "(default is 100)"
|
||||
msgstr ""
|
||||
"Rozmiar panelu\n"
|
||||
"(domyślnie 48)"
|
||||
msgstr "(domyślnie 100)"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:19
|
||||
msgid "Anchor"
|
||||
msgstr ""
|
||||
msgstr "Zakotwiczenie"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:23
|
||||
msgid "Taskbar Display"
|
||||
msgstr ""
|
||||
msgstr "Wyświetlanie paska zadań"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:1
|
||||
msgid "AppIcon style"
|
||||
msgstr ""
|
||||
msgstr "Styl ikon aplikacji"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:2
|
||||
#, fuzzy
|
||||
msgid "App Icon Margin"
|
||||
msgstr ""
|
||||
"Odstęp między\n"
|
||||
"ikonami (domyślnie 8)"
|
||||
msgstr "Odstęp między ikonami"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:3
|
||||
#, fuzzy
|
||||
msgid "(default is 8)"
|
||||
msgstr ""
|
||||
"Rozmiar panelu\n"
|
||||
"(domyślnie 48)"
|
||||
msgstr "(domyślnie 8)"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:4
|
||||
#, fuzzy
|
||||
msgid "App Icon Padding"
|
||||
msgstr ""
|
||||
"Wypełnienie wnętrza\n"
|
||||
"ikony (domyślnie 4)"
|
||||
msgstr "Wypełnienie ikony aplikacji"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:5
|
||||
#, fuzzy
|
||||
msgid "(default is 4)"
|
||||
msgstr ""
|
||||
"Rozmiar panelu\n"
|
||||
"(domyślnie 48)"
|
||||
msgstr "(domyślnie 4)"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:6
|
||||
#, fuzzy
|
||||
msgid "Animate hovering app icons"
|
||||
msgstr "Animuj przełączenie programów"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:7
|
||||
#, fuzzy
|
||||
msgid "Running indicator"
|
||||
msgstr "Pozycja wskaźnika aktywnych okien"
|
||||
|
||||
@@ -1441,7 +1358,7 @@ msgstr "Ciągły"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:19
|
||||
msgid "Ciliora"
|
||||
msgstr "Ciliora"
|
||||
msgstr "Rzęski"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:20
|
||||
msgid "Metro"
|
||||
@@ -1452,12 +1369,10 @@ msgid "Running indicator style (Unfocused apps)"
|
||||
msgstr "Wygląd wskaźnika (okno na drugim planie)"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:22
|
||||
#, fuzzy
|
||||
msgid "Panel style"
|
||||
msgstr "Inteligentne ukrywanie panelu"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:23
|
||||
#, fuzzy
|
||||
msgid "Override panel theme background color"
|
||||
msgstr "Zastąp kolor panelu "
|
||||
|
||||
@@ -1479,19 +1394,18 @@ msgid "Change opacity when a window gets close to the panel"
|
||||
msgstr "Zmiana przeźroczystości w kontakcie z oknem"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:30
|
||||
#, fuzzy
|
||||
msgid "Override panel theme gradient"
|
||||
msgstr "Zastąp kolor panelu gradientem "
|
||||
|
||||
#: ui/SettingsStyle.ui.h:32
|
||||
#, no-c-format
|
||||
msgid "Gradient top color and opacity (%)"
|
||||
msgstr "Góra, kolor i przeźroczystość (%)"
|
||||
msgstr "Gradient górnego koloru i przeźroczystość (%)"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:34
|
||||
#, no-c-format
|
||||
msgid "Gradient bottom color and opacity (%)"
|
||||
msgstr "Dół, kolor i przeźroczystość (%)"
|
||||
msgstr "Gradient dolnego koloru i przeźroczystość (%)"
|
||||
|
||||
msgid "Weekday"
|
||||
msgstr "Dzień tygodnia"
|
||||
@@ -1600,8 +1514,7 @@ msgstr "Izoluj obszary robocze i monitory w ustawieniach Przełączanie program
|
||||
#~ msgstr "Wyloguj"
|
||||
|
||||
#~ msgid "Update successful, please restart GNOME Shell"
|
||||
#~ msgstr ""
|
||||
#~ "Aktualizacja zakończona pomyślnie, prosimy zrestartować powłokę GNOME"
|
||||
#~ msgstr "Aktualizacja zakończona pomyślnie, prosimy zrestartować powłokę GNOME"
|
||||
|
||||
#~ msgid "Restart GNOME Shell"
|
||||
#~ msgstr "Zrestartuj powłokę GNOME"
|
||||
@@ -1622,13 +1535,13 @@ msgstr "Izoluj obszary robocze i monitory w ustawieniach Przełączanie program
|
||||
#~ msgstr "Menu systemowe na wszystkich monitorach"
|
||||
|
||||
#~ msgid "Current Show Applications icon"
|
||||
#~ msgstr "Aktualna ikona przycisku <i>Pokaż programy</i>"
|
||||
#~ msgstr "Aktualna ikona przycisku Pokaż programy"
|
||||
|
||||
#~ msgid "Select a Show Applications image icon"
|
||||
#~ msgstr "Wybierz ikonę przycisku <i>Pokaż programy</i>"
|
||||
#~ msgstr "Wybierz ikonę przycisku Pokaż programy"
|
||||
|
||||
#~ msgid "Custom Show Applications image icon"
|
||||
#~ msgstr "Wybierz własną ikonę przycisku <i>Pokaż programy</i>"
|
||||
#~ msgstr "Wybierz własną ikonę przycisku Pokaż programy"
|
||||
|
||||
#~ msgid "Taskbar position"
|
||||
#~ msgstr "Położenie paska zadań"
|
||||
@@ -1657,6 +1570,18 @@ msgstr "Izoluj obszary robocze i monitory w ustawieniach Przełączanie program
|
||||
#~ msgid "Fine-Tune"
|
||||
#~ msgstr "Dostrajanie"
|
||||
|
||||
#~ msgid "Position"
|
||||
#~ msgstr "Pozycja"
|
||||
|
||||
#~ msgid "Icon style"
|
||||
#~ msgstr "Styl ikony"
|
||||
|
||||
#~ msgid "Normal"
|
||||
#~ msgstr "Normalna"
|
||||
|
||||
#~ msgid "Symbolic"
|
||||
#~ msgstr "Symboliczna"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "This allows you to update the extension directly from the GitHub "
|
||||
#~ "repository."
|
||||
|
||||
@@ -69,7 +69,7 @@ msgstr "Final"
|
||||
|
||||
#: prefs.js:413
|
||||
msgid "Show Applications button"
|
||||
msgstr "Mostrar botão de plicações"
|
||||
msgstr "Mostrar botão de aplicações"
|
||||
|
||||
#: prefs.js:414
|
||||
msgid "Activities button"
|
||||
@@ -1136,12 +1136,12 @@ msgstr ""
|
||||
#: ui/SettingsBehavior.ui.h:1
|
||||
#, fuzzy
|
||||
msgid "Applications"
|
||||
msgstr "Mostrar botão de plicações"
|
||||
msgstr "Mostrar botão de aplicações"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:2
|
||||
#, fuzzy
|
||||
msgid "Show favorite applications"
|
||||
msgstr "Mostrar botão de plicações"
|
||||
msgstr "Mostrar botão de aplicações"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:3
|
||||
msgid "Show favorite applications on secondary panels"
|
||||
@@ -1150,7 +1150,7 @@ msgstr ""
|
||||
#: ui/SettingsBehavior.ui.h:4
|
||||
#, fuzzy
|
||||
msgid "Show running applications"
|
||||
msgstr "Mostrar botão de plicações"
|
||||
msgstr "Mostrar botão de aplicações"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:5
|
||||
msgid "Show <i>AppMenu</i> button"
|
||||
|
||||
250
po/sk.po
250
po/sk.po
@@ -2,29 +2,30 @@
|
||||
# Copyright (C) 2018
|
||||
# This file is distributed under the same license as the dash-to-panel package.
|
||||
# Jose Riha <jose1711 gmail com>, 2021.
|
||||
# Jozef Gaal <preklady@mayday.sk>, 2024.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-02-08 08:31-0500\n"
|
||||
"PO-Revision-Date: 2021-08-05 14:16+0200\n"
|
||||
"Last-Translator: Jose Riha <jose1711@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"PO-Revision-Date: 2024-12-07 02:10+0100\n"
|
||||
"Last-Translator: Jozef Gaal <preklady@mayday.sk>\n"
|
||||
"Language-Team: Jozef Gaal <preklady@mayday.sk>\n"
|
||||
"Language: sk\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 3.0\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n>=2 && n<=4 ? 1 : 2);\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: prefs.js:247
|
||||
msgid "Show Desktop button height (px)"
|
||||
msgstr "Výška tlačidla plochy (px)"
|
||||
msgstr "Výška tlačidla zobrazenia plochy (px)"
|
||||
|
||||
#: prefs.js:247
|
||||
msgid "Show Desktop button width (px)"
|
||||
msgstr "Šírka tlačidla plochy (px)"
|
||||
msgstr "Šírka tlačidla zobrazenia plochy (px)"
|
||||
|
||||
#: prefs.js:259
|
||||
msgid "Unavailable when gnome-shell top panel is present"
|
||||
@@ -78,11 +79,11 @@ msgstr "Zoznam úloh"
|
||||
|
||||
#: prefs.js:416
|
||||
msgid "Date menu"
|
||||
msgstr "Menu hodín"
|
||||
msgstr "Ponuka dátumu"
|
||||
|
||||
#: prefs.js:417
|
||||
msgid "System menu"
|
||||
msgstr "Systémové menu"
|
||||
msgstr "Ponuka systému"
|
||||
|
||||
#: prefs.js:418
|
||||
msgid "Left box"
|
||||
@@ -118,19 +119,19 @@ msgstr "Vyberte umiestnenie prvku"
|
||||
|
||||
#: prefs.js:443
|
||||
msgid "Stacked to top"
|
||||
msgstr "Zvrchu"
|
||||
msgstr "Hore"
|
||||
|
||||
#: prefs.js:443
|
||||
msgid "Stacked to left"
|
||||
msgstr "Zľava"
|
||||
msgstr "Vľavo"
|
||||
|
||||
#: prefs.js:444
|
||||
msgid "Stacked to bottom"
|
||||
msgstr "Zdola"
|
||||
msgstr "Dole"
|
||||
|
||||
#: prefs.js:444
|
||||
msgid "Stacked to right"
|
||||
msgstr "Sprava"
|
||||
msgstr "Vpravo"
|
||||
|
||||
#: prefs.js:445
|
||||
msgid "Centered"
|
||||
@@ -158,7 +159,7 @@ msgstr "Otvoriť ikonu"
|
||||
|
||||
#: prefs.js:577
|
||||
msgid "Show Desktop options"
|
||||
msgstr "Nastavenia plochy"
|
||||
msgstr "Nastavenia tlačidla zobrazenia plochy"
|
||||
|
||||
#: prefs.js:661
|
||||
#, javascript-format
|
||||
@@ -168,7 +169,7 @@ msgstr "%d ms"
|
||||
#: prefs.js:666
|
||||
#, javascript-format
|
||||
msgid "%d °"
|
||||
msgstr ""
|
||||
msgstr "%d °"
|
||||
|
||||
#: prefs.js:671 prefs.js:676
|
||||
#, javascript-format
|
||||
@@ -190,7 +191,7 @@ msgstr[2] "%d ikon"
|
||||
|
||||
#: prefs.js:782
|
||||
msgid "Running Indicator Options"
|
||||
msgstr "Možnosti indikátora bežiacich aplikácií"
|
||||
msgstr "Možnosti indikátora činnosti"
|
||||
|
||||
#: prefs.js:928
|
||||
msgid "Primary monitor"
|
||||
@@ -234,7 +235,7 @@ msgstr "Nastavenie ďalších klávesových skratiek"
|
||||
|
||||
#: prefs.js:1898
|
||||
msgid "Secondary Menu Options"
|
||||
msgstr "Nastavenie sekundárneho menu"
|
||||
msgstr "Možnosti sekundárnej ponuky"
|
||||
|
||||
#: prefs.js:1924 ui/SettingsFineTune.ui.h:22
|
||||
msgid "Advanced Options"
|
||||
@@ -327,7 +328,7 @@ msgstr "Zatiaľ nedostupné!"
|
||||
|
||||
#: ui/BoxAdvancedOptions.ui.h:2
|
||||
msgid "For real..."
|
||||
msgstr ""
|
||||
msgstr "Naozaj..."
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:1
|
||||
msgid "Animation type"
|
||||
@@ -343,7 +344,7 @@ msgstr "Vlnenie"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:4
|
||||
msgid "Plank"
|
||||
msgstr "Prekrytie"
|
||||
msgstr "Doska"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:5
|
||||
msgid "Duration"
|
||||
@@ -351,7 +352,7 @@ msgstr "Trvanie"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:6
|
||||
msgid "Rotation"
|
||||
msgstr "Otočenie"
|
||||
msgstr "Otáčanie"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:7
|
||||
msgid "Travel"
|
||||
@@ -363,11 +364,11 @@ msgstr "Priblíženie"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:9
|
||||
msgid "Convexity"
|
||||
msgstr "Vypuklina"
|
||||
msgstr "Vypuklosť"
|
||||
|
||||
#: ui/BoxAnimateAppIconHoverOptions.ui.h:10
|
||||
msgid "Extent"
|
||||
msgstr "Rozšírenie"
|
||||
msgstr "Rozsah"
|
||||
|
||||
#: ui/BoxDotOptions.ui.h:1
|
||||
msgid "Highlight focused application"
|
||||
@@ -453,7 +454,7 @@ msgstr "0"
|
||||
|
||||
#: ui/BoxDynamicOpacityOptions.ui.h:9
|
||||
msgid "Opacity change animation duration (ms)"
|
||||
msgstr "Rýchlosť animácie zobrazenia/skrytia panela"
|
||||
msgstr "Dĺžka animácie zmeny priehľadnosti (ms)"
|
||||
|
||||
#: ui/BoxGroupAppsOptions.ui.h:1
|
||||
msgid "Font size (px) of the application titles (default is 14)"
|
||||
@@ -492,16 +493,12 @@ msgid "Font color of the minimized application titles"
|
||||
msgstr "Farba písma názvu minimalizovanej aplikácie"
|
||||
|
||||
#: ui/BoxGroupAppsOptions.ui.h:10
|
||||
#, fuzzy
|
||||
msgid "Maximum width (px) of the application titles"
|
||||
msgstr "Maximálna šírka (px) pre názov aplikácie (predvolená: 160)"
|
||||
msgstr "Maximálna šírka (px) pre názov aplikácie"
|
||||
|
||||
#: ui/BoxGroupAppsOptions.ui.h:11
|
||||
#, fuzzy
|
||||
msgid "(default is 160)"
|
||||
msgstr ""
|
||||
"Dĺžka panela (%)\n"
|
||||
"(predvolená: 100)"
|
||||
msgstr "(predvolená je 160)"
|
||||
|
||||
#: ui/BoxGroupAppsOptions.ui.h:12
|
||||
msgid "Use a fixed width for the application titles"
|
||||
@@ -525,9 +522,8 @@ msgid "Use the favorite icons as application launchers"
|
||||
msgstr "Použiť ikony obľúbených aplikácií ako spúšťače"
|
||||
|
||||
#: ui/BoxIntellihideOptions.ui.h:1
|
||||
#, fuzzy
|
||||
msgid "Only hide the panel when it is obstructed by windows"
|
||||
msgstr "Skryť panel iba pri prekrytí oknami aplikácií "
|
||||
msgstr "Skryť panel len vtedy, keď je prekrytý oknami"
|
||||
|
||||
#: ui/BoxIntellihideOptions.ui.h:2
|
||||
msgid "The panel hides from"
|
||||
@@ -550,14 +546,12 @@ msgid "Allow the panel to be revealed while in fullscreen mode"
|
||||
msgstr "Povoliť zobrazenie panela v režime celej obrazovky"
|
||||
|
||||
#: ui/BoxIntellihideOptions.ui.h:10
|
||||
#, fuzzy
|
||||
msgid "Only hide secondary panels"
|
||||
msgstr "Skryť iba sekundárne panely (pre viac monitorov)"
|
||||
msgstr "Skryť iba sekundárne panely"
|
||||
|
||||
#: ui/BoxIntellihideOptions.ui.h:11
|
||||
#, fuzzy
|
||||
msgid "(requires multi-monitors option)"
|
||||
msgstr "Skryť iba sekundárne panely (pre viac monitorov)"
|
||||
msgstr "(vyžaduje možnosť viacerých monitorov)"
|
||||
|
||||
#: ui/BoxIntellihideOptions.ui.h:12
|
||||
msgid "Keyboard shortcut to reveal and hold the panel"
|
||||
@@ -585,7 +579,7 @@ msgstr "Oneskorenie pred skrytím pri štarte (ms)"
|
||||
|
||||
#: ui/BoxMiddleClickOptions.ui.h:1
|
||||
msgid "Shift+Click action"
|
||||
msgstr "Akcia pri Shift+Click"
|
||||
msgstr "Akcia pri Shift+Kliknutie"
|
||||
|
||||
#: ui/BoxMiddleClickOptions.ui.h:2
|
||||
msgid ""
|
||||
@@ -640,7 +634,7 @@ msgstr "Shift + prostredné tlačidlo myši."
|
||||
|
||||
#: ui/BoxOverlayShortcut.ui.h:1
|
||||
msgid "Hotkeys prefix"
|
||||
msgstr "Skratka"
|
||||
msgstr "Predpona klávesových skratiek"
|
||||
|
||||
#: ui/BoxOverlayShortcut.ui.h:2
|
||||
msgid "Hotkeys will either be Super+Number or Super+Alt+Num"
|
||||
@@ -686,7 +680,7 @@ msgstr "Skratka pre zobrazenie prehľadu na 2 sekundy"
|
||||
|
||||
#: ui/BoxOverlayShortcut.ui.h:13
|
||||
msgid "e.g. <Super>q"
|
||||
msgstr "napr: <Super>q"
|
||||
msgstr "napr. <Super>q"
|
||||
|
||||
#: ui/BoxOverlayShortcut.ui.h:14
|
||||
msgid "Show window previews on hotkey"
|
||||
@@ -735,16 +729,15 @@ msgstr ""
|
||||
|
||||
#: ui/BoxSecondaryMenuOptions.ui.h:1
|
||||
msgid "Integrate <i>AppMenu</i> items"
|
||||
msgstr "Zobraziť položky menu <i>aplikácie</i>"
|
||||
msgstr "Integrovať položky <i>ponuky aplikácií</i>"
|
||||
|
||||
#: ui/BoxSecondaryMenuOptions.ui.h:2
|
||||
msgid "<i>Show Details</i> menu item"
|
||||
msgstr "Zobraziť menu <i>Detail</i>"
|
||||
msgstr "Položka ponuky <i>Zobraziť podrobnosti</i>"
|
||||
|
||||
#: ui/BoxShowApplicationsOptions.ui.h:1
|
||||
#, fuzzy
|
||||
msgid "Show Applications icon"
|
||||
msgstr "Zobraziť ikonu <i>aplikácií</i>"
|
||||
msgstr "Zobraziť ikonu aplikácií"
|
||||
|
||||
#: ui/BoxShowApplicationsOptions.ui.h:2
|
||||
msgid "Show Applications icon side padding (px)"
|
||||
@@ -756,7 +749,7 @@ msgstr "Zmeniť správanie klávesu Esc a vrátiť sa na plochu"
|
||||
|
||||
#: ui/BoxShowDesktopOptions.ui.h:1
|
||||
msgid "Override Show Desktop line color"
|
||||
msgstr "Vlastná farba deliacej čiary plochy"
|
||||
msgstr "Prepísať farbu čiary tlačidla zobrazenia plochy"
|
||||
|
||||
#: ui/BoxShowDesktopOptions.ui.h:2
|
||||
msgid "Reveal the desktop when hovering the Show Desktop button"
|
||||
@@ -771,22 +764,20 @@ msgid "Fade duration (ms)"
|
||||
msgstr "Skryť po (ms)"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:1
|
||||
#, fuzzy
|
||||
msgid "Time (ms) before showing"
|
||||
msgstr "Pauza (ms) pred zobrazením náhľadu (predvolená: 400)"
|
||||
msgstr "Čas (ms) pred zobrazením"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:2
|
||||
msgid "(400 is default)"
|
||||
msgstr ""
|
||||
msgstr "(400 is predvolené)"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:3
|
||||
#, fuzzy
|
||||
msgid "Time (ms) before hiding"
|
||||
msgstr "Pauza (ms) pred skrytím náhľadu (predvolená: 100)"
|
||||
msgstr "Čas (ms) pred skrytím"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:4
|
||||
msgid "(100 is default)"
|
||||
msgstr ""
|
||||
msgstr "(100 is predvolené)"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:5
|
||||
msgid "Immediate on application icon click"
|
||||
@@ -909,10 +900,10 @@ msgid "Use custom opacity for the previews background"
|
||||
msgstr "Použiť vlastné nastavenie priehľadnosti náhľadov"
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:35
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"If disabled, the previews background have the same opacity as the panel."
|
||||
msgstr "Pri vypnutí sa použije hodnota priehľadnosti panela"
|
||||
msgstr ""
|
||||
"Ak je vypnuté, pozadie náhľadov bude mať rovnakú nepriehľadnosť ako panel."
|
||||
|
||||
#: ui/BoxWindowPreviewOptions.ui.h:36
|
||||
msgid "Close button and header position"
|
||||
@@ -979,25 +970,23 @@ msgstr "Všetky okna, okrem aktívneho, majú rovnaké nastavenie priehľadnosti
|
||||
|
||||
#: ui/SettingsAbout.ui.h:1
|
||||
msgid "Info"
|
||||
msgstr ""
|
||||
msgstr "Informácie"
|
||||
|
||||
#: ui/SettingsAbout.ui.h:2
|
||||
#, fuzzy
|
||||
msgid "Version"
|
||||
msgstr "verzia: "
|
||||
msgstr "Verzia"
|
||||
|
||||
#: ui/SettingsAbout.ui.h:3
|
||||
msgid "Source"
|
||||
msgstr ""
|
||||
msgstr "Zdroj"
|
||||
|
||||
#: ui/SettingsAbout.ui.h:4
|
||||
msgid "GitHub"
|
||||
msgstr "GitHub"
|
||||
|
||||
#: ui/SettingsAbout.ui.h:5
|
||||
#, fuzzy
|
||||
msgid "Export and Import"
|
||||
msgstr "Export a import nastavení"
|
||||
msgstr "Export a import"
|
||||
|
||||
#: ui/SettingsAbout.ui.h:6
|
||||
msgid "Export and import settings"
|
||||
@@ -1042,13 +1031,12 @@ msgid "Toggle windows"
|
||||
msgstr "Prepínanie okien"
|
||||
|
||||
#: ui/SettingsAction.ui.h:10
|
||||
#, fuzzy
|
||||
msgid "Scroll action"
|
||||
msgstr "Akcia kolieska myši"
|
||||
|
||||
#: ui/SettingsAction.ui.h:11
|
||||
msgid "Scroll panel action"
|
||||
msgstr "Akcia panelu pri skrolovaní"
|
||||
msgstr "Akcia kolieska myši na paneli"
|
||||
|
||||
#: ui/SettingsAction.ui.h:12
|
||||
msgid "Behavior when mouse scrolling over the panel."
|
||||
@@ -1072,7 +1060,7 @@ msgstr "Upraviť hlasitosť"
|
||||
|
||||
#: ui/SettingsAction.ui.h:17
|
||||
msgid "Scroll icon action"
|
||||
msgstr "Akcia kolieska myši"
|
||||
msgstr "Akcia kolieska myši na ikone"
|
||||
|
||||
#: ui/SettingsAction.ui.h:18
|
||||
msgid "Behavior when mouse scrolling over an application icon."
|
||||
@@ -1083,9 +1071,8 @@ msgid "Same as panel"
|
||||
msgstr "Rovnaké ako panel"
|
||||
|
||||
#: ui/SettingsAction.ui.h:20
|
||||
#, fuzzy
|
||||
msgid "Hotkey overlay"
|
||||
msgstr "Zobraziť číslo"
|
||||
msgstr "Klávesové skratky"
|
||||
|
||||
#: ui/SettingsAction.ui.h:21
|
||||
msgid "Use hotkeys to activate apps"
|
||||
@@ -1100,9 +1087,8 @@ msgstr ""
|
||||
"použiť v kombinácií s Shift a Ctrl."
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:1
|
||||
#, fuzzy
|
||||
msgid "Applications"
|
||||
msgstr "Nezoskupené aplikácie"
|
||||
msgstr "Aplikácie"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:2
|
||||
msgid "Show favorite applications"
|
||||
@@ -1118,7 +1104,7 @@ msgstr "Zobraziť bežiace aplikácie"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:5
|
||||
msgid "Show <i>AppMenu</i> button"
|
||||
msgstr "Zobraziť tlačidlo aplikácií"
|
||||
msgstr "Zobraziť tlačidlo <i>ponuky aplikácií</i>"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:6
|
||||
msgid "Ungroup applications"
|
||||
@@ -1126,7 +1112,7 @@ msgstr "Nezoskupené aplikácie"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:7
|
||||
msgid "Show notification counter badge"
|
||||
msgstr ""
|
||||
msgstr "Zobraziť znak počítadla oznámení"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:8
|
||||
msgid "Show window previews on hover"
|
||||
@@ -1137,9 +1123,8 @@ msgid "Show tooltip on hover"
|
||||
msgstr "Zobraziť tip okna pri podržaní myši"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:10
|
||||
#, fuzzy
|
||||
msgid "Isolate"
|
||||
msgstr "Oddeliť monitory"
|
||||
msgstr "Oddeliť"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:11
|
||||
msgid "Isolate Workspaces"
|
||||
@@ -1151,7 +1136,7 @@ msgstr "Oddeliť monitory"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:13
|
||||
msgid "Overview"
|
||||
msgstr ""
|
||||
msgstr "Prehľad"
|
||||
|
||||
#: ui/SettingsBehavior.ui.h:14
|
||||
msgid "Click empty space to close overview"
|
||||
@@ -1163,59 +1148,43 @@ msgstr "Vypnúť zobrazenie prehľadu po štarte"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:1
|
||||
msgid "Font size"
|
||||
msgstr ""
|
||||
msgstr "Veľkosť písma"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:2
|
||||
msgid "Tray Font Size"
|
||||
msgstr ""
|
||||
msgstr "Veľkosť písma systémového bloku"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:3
|
||||
#, fuzzy
|
||||
msgid "(0 = theme default)"
|
||||
msgstr ""
|
||||
"Veľkosť písma stavovej oblasti\n"
|
||||
"(0 = určená motívom)"
|
||||
msgstr "(0 = predvolené témou)"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:4
|
||||
#, fuzzy
|
||||
msgid "LeftBox Font Size"
|
||||
msgstr ""
|
||||
"Veľkosť písma ľavého bloku\n"
|
||||
"(0 = určená motívom)"
|
||||
msgstr "Veľkosť písma ľavého bloku"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:5
|
||||
msgid "Padding"
|
||||
msgstr ""
|
||||
msgstr "Odsadenie"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:6
|
||||
#, fuzzy
|
||||
msgid "Tray Item Padding"
|
||||
msgstr ""
|
||||
"Odsadenie položiek v systémovej oblasti\n"
|
||||
"(-1 = určené motívom)"
|
||||
msgstr "Odsadenie položky v systémovom bloku"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:7
|
||||
#, fuzzy
|
||||
msgid "(-1 = theme default)"
|
||||
msgstr ""
|
||||
"Odsadenie v ľavom bloku\n"
|
||||
"(-1 = určené motívom)"
|
||||
msgstr "(-1 = predvolené témou)"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:8
|
||||
#, fuzzy
|
||||
msgid "Status Icon Padding"
|
||||
msgstr ""
|
||||
"Odsadenie medzi stavovými ikonami\n"
|
||||
"(-1 = určené motívom)"
|
||||
msgstr "Odsadenie stavových ikon"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:9
|
||||
msgid "LeftBox Padding"
|
||||
msgstr ""
|
||||
msgstr "Odsadenie ľavého bloku"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:10
|
||||
#, fuzzy
|
||||
msgid "Animate"
|
||||
msgstr "Typ animácie"
|
||||
msgstr "Animovať"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:11
|
||||
msgid "Animate switching applications"
|
||||
@@ -1227,48 +1196,43 @@ msgstr "Animovať vytváranie nových okien"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:13
|
||||
msgid "Gnome functionality"
|
||||
msgstr ""
|
||||
msgstr "Funkcionalita Gnome"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:14
|
||||
#, fuzzy
|
||||
msgid "Keep original gnome-shell dash"
|
||||
msgstr "Ponechať pôvodný 'gnome-shell dash' (prehľad úloh)"
|
||||
msgstr "Ponechať pôvodný gnome-shell dash"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:15
|
||||
msgid "(overview)"
|
||||
msgstr ""
|
||||
msgstr "(prehľad)"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:16
|
||||
msgid "Keep original gnome-shell top panel"
|
||||
msgstr "Ponechať pôvodný horný panel gnome-shell"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:17
|
||||
#, fuzzy
|
||||
msgid "Activate panel menu buttons on click only"
|
||||
msgstr "Aktivovať tlačidlá na paneli iba po stlačení (napr. menu hodín)"
|
||||
msgstr "Aktivovať tlačidlá ponuky na paneli iba pri kliknutí"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:18
|
||||
#, fuzzy
|
||||
msgid "(e.g. date menu)"
|
||||
msgstr "Menu hodín"
|
||||
msgstr "(napr. ponuka s dátumom)"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:19
|
||||
msgid "Force Activities hot corner on primary monitor"
|
||||
msgstr "Vynútiť aktívny roh na primárnom monitore"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:20
|
||||
#, fuzzy
|
||||
msgid "App icon secondary menu"
|
||||
msgstr "Nastavenie pravého kliknutia na ikonu aplikácie"
|
||||
msgstr "Sekundárna ponuka ikony aplikácie"
|
||||
|
||||
#: ui/SettingsFineTune.ui.h:21
|
||||
#, fuzzy
|
||||
msgid "(right-click menu)"
|
||||
msgstr "Nastavenie pravého kliknutia na ikonu aplikácie"
|
||||
msgstr "(ponuka pravého tlačidla myši)"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:1
|
||||
msgid "Panel"
|
||||
msgstr ""
|
||||
msgstr "Panel"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:2
|
||||
msgid "Display the main panel on"
|
||||
@@ -1287,14 +1251,12 @@ msgid "Hide and reveal the panel according to preferences"
|
||||
msgstr "Zobraziť/skryť panel podľa nastavení"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:6
|
||||
#, fuzzy
|
||||
msgid "Order and Position on monitors"
|
||||
msgstr "Poradie a pozícia na monitore"
|
||||
msgstr "Poradie a pozícia na monitoroch"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:7
|
||||
#, fuzzy
|
||||
msgid "Monitor"
|
||||
msgstr "Monitor "
|
||||
msgstr "Monitor"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:8
|
||||
msgid "Apply changes to all monitors"
|
||||
@@ -1305,90 +1267,65 @@ msgid "Panel screen position"
|
||||
msgstr "Pozícia panela na obrazovke"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:14
|
||||
#, fuzzy
|
||||
msgid "Panel thickness"
|
||||
msgstr ""
|
||||
"Šírka panela\n"
|
||||
"(predvolená: 48)"
|
||||
msgstr "Šírka panela"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:15
|
||||
#, fuzzy
|
||||
msgid "(default is 48)"
|
||||
msgstr ""
|
||||
"Šírka panela\n"
|
||||
"(predvolená: 48)"
|
||||
msgstr "(predvolená je 48)"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:17
|
||||
#, fuzzy, no-c-format
|
||||
#, no-c-format
|
||||
msgid "Panel length (%)"
|
||||
msgstr ""
|
||||
"Dĺžka panela (%)\n"
|
||||
"(predvolená: 100)"
|
||||
msgstr "Dĺžka panela (%)"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:18
|
||||
#, fuzzy
|
||||
msgid "(default is 100)"
|
||||
msgstr ""
|
||||
"Dĺžka panela (%)\n"
|
||||
"(predvolená: 100)"
|
||||
msgstr "(predvolená je 100)"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:19
|
||||
msgid "Anchor"
|
||||
msgstr "Ukotvenie"
|
||||
|
||||
#: ui/SettingsPosition.ui.h:23
|
||||
#, fuzzy
|
||||
msgid "Taskbar Display"
|
||||
msgstr "Zoznam úloh"
|
||||
msgstr "Zobrazenie panela úloh"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:1
|
||||
msgid "AppIcon style"
|
||||
msgstr ""
|
||||
msgstr "Štýl ikony aplikácií"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:2
|
||||
#, fuzzy
|
||||
msgid "App Icon Margin"
|
||||
msgstr ""
|
||||
"Rozostup ikon aplikácií\n"
|
||||
"(predvolený: 8)"
|
||||
msgstr "Rozostup ikon aplikácií"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:3
|
||||
#, fuzzy
|
||||
msgid "(default is 8)"
|
||||
msgstr ""
|
||||
"Rozostup ikon aplikácií\n"
|
||||
"(predvolený: 8)"
|
||||
msgstr "(predvolené je 8)"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:4
|
||||
#, fuzzy
|
||||
msgid "App Icon Padding"
|
||||
msgstr ""
|
||||
"Odsadenie ikon aplikácií\n"
|
||||
"(predvolené: 4)"
|
||||
msgstr "Odsadenie ikon aplikácií"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:5
|
||||
#, fuzzy
|
||||
msgid "(default is 4)"
|
||||
msgstr ""
|
||||
"Odsadenie ikon aplikácií\n"
|
||||
"(predvolené: 4)"
|
||||
msgstr "(predvolené je 4)"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:6
|
||||
msgid "Animate hovering app icons"
|
||||
msgstr "Animovať prepínanie medzi ikonami aplikácií"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:7
|
||||
#, fuzzy
|
||||
msgid "Running indicator"
|
||||
msgstr "Pozícia indikátora"
|
||||
msgstr "Indikátor činnosti"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:8
|
||||
msgid "Running indicator position"
|
||||
msgstr "Pozícia indikátora"
|
||||
msgstr "Pozícia indikátora činnosti"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:13
|
||||
msgid "Running indicator style (Focused app)"
|
||||
msgstr "Štýl indikátora bežiacich aplikácií (na popredí)"
|
||||
msgstr "Štýl indikátora bežiacich aplikácií (na popredí)činnosti"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:14
|
||||
msgid "Dots"
|
||||
@@ -1404,7 +1341,7 @@ msgstr "Čiarky"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:17
|
||||
msgid "Segmented"
|
||||
msgstr "Segmenty"
|
||||
msgstr "Segmentované"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:18
|
||||
msgid "Solid"
|
||||
@@ -1423,18 +1360,16 @@ msgid "Running indicator style (Unfocused apps)"
|
||||
msgstr "Štýl indikátora bežiacich aplikácií (na pozadí)"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:22
|
||||
#, fuzzy
|
||||
msgid "Panel style"
|
||||
msgstr "Inteligentné skrývanie (Intellihide)"
|
||||
msgstr "Štýl panelu"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:23
|
||||
#, fuzzy
|
||||
msgid "Override panel theme background color"
|
||||
msgstr "Vlastná farba pozadia panela (ignorovať motív) "
|
||||
msgstr "Prepísať farbu pozadia témy panela"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:24
|
||||
msgid "Override panel theme background opacity"
|
||||
msgstr "Vlastná priehľadnosť panela (ignorovať motív)"
|
||||
msgstr "Prepísať nepriehľadnosť pozadia témy panela"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:26
|
||||
#, no-c-format
|
||||
@@ -1450,9 +1385,8 @@ msgid "Change opacity when a window gets close to the panel"
|
||||
msgstr "Zmeniť priehľadnosť pri priblížení okna"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:30
|
||||
#, fuzzy
|
||||
msgid "Override panel theme gradient"
|
||||
msgstr "Vlastné nastavenie farebného prechodu panela (ignorovať motív) "
|
||||
msgstr "Prepísať gradient témy panela"
|
||||
|
||||
#: ui/SettingsStyle.ui.h:32
|
||||
#, no-c-format
|
||||
|
||||
100
prefs.js
100
prefs.js
@@ -21,22 +21,17 @@
|
||||
* Some code was also adapted from the upstream Gnome Shell source code.
|
||||
*/
|
||||
|
||||
const GdkPixbuf = imports.gi.GdkPixbuf;
|
||||
const Gio = imports.gi.Gio;
|
||||
const GLib = imports.gi.GLib;
|
||||
const GObject = imports.gi.GObject;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const Adw = imports.gi.Adw;
|
||||
const Gdk = imports.gi.Gdk;
|
||||
const Mainloop = imports.mainloop;
|
||||
import GdkPixbuf from 'gi://GdkPixbuf';
|
||||
import Gio from 'gi://Gio';
|
||||
import GLib from 'gi://GLib';
|
||||
import GObject from 'gi://GObject';
|
||||
import Gtk from 'gi://Gtk';
|
||||
import Gdk from 'gi://Gdk';
|
||||
|
||||
const Me = imports.misc.extensionUtils.getCurrentExtension();
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']);
|
||||
const _ = Gettext.gettext;
|
||||
const N_ = function(e) { return e };
|
||||
const PanelSettings = Me.imports.panelSettings;
|
||||
const Pos = Me.imports.panelPositions;
|
||||
import * as PanelSettings from './panelSettings.js';
|
||||
import * as Pos from './panelPositions.js';
|
||||
|
||||
import {ExtensionPreferences, gettext as _, ngettext} from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
|
||||
|
||||
const SCALE_UPDATE_TIMEOUT = 500;
|
||||
const DEFAULT_PANEL_SIZES = [ 96, 64, 48, 32, 24 ];
|
||||
@@ -146,51 +141,55 @@ function checkHotkeyPrefix(settings) {
|
||||
}
|
||||
|
||||
function mergeObjects(main, bck) {
|
||||
for (var prop in bck) {
|
||||
for (const prop in bck) {
|
||||
if (!main.hasOwnProperty(prop) && bck.hasOwnProperty(prop)) {
|
||||
main[prop] = bck[prop];
|
||||
}
|
||||
}
|
||||
|
||||
return main;
|
||||
};
|
||||
}
|
||||
|
||||
const Preferences = class {
|
||||
|
||||
constructor(window) {
|
||||
this._settings = ExtensionUtils.getSettings('org.gnome.shell.extensions.zorin-taskbar');
|
||||
this._gnomeInterfaceSettings = ExtensionUtils.getSettings('org.gnome.desktop.interface');
|
||||
constructor(window, settings, gnomeInterfaceSettings, path) {
|
||||
// this._settings = ExtensionUtils.getSettings('org.gnome.shell.extensions.zorin-taskbar');
|
||||
this._rtl = (Gtk.Widget.get_default_direction() == Gtk.TextDirection.RTL);
|
||||
this._builder = new Gtk.Builder();
|
||||
this._builder.set_scope(new BuilderScope(this));
|
||||
this._builder.set_translation_domain(Me.metadata['gettext-domain']);
|
||||
this._settings = settings;
|
||||
this._gnomeInterfaceSettings = gnomeInterfaceSettings;
|
||||
this._path = path;
|
||||
|
||||
this._metadata = ExtensionPreferences.lookupByURL(import.meta.url).metadata;
|
||||
this._builder.set_translation_domain(this._metadata['gettext-domain']);
|
||||
|
||||
window.set_search_enabled(true);
|
||||
|
||||
// dialogs
|
||||
this._builder.add_from_file(Me.path + '/ui/BoxShowDesktopOptions.ui');
|
||||
this._builder.add_from_file(Me.path + '/ui/BoxDynamicOpacityOptions.ui');
|
||||
this._builder.add_from_file(Me.path + '/ui/BoxIntellihideOptions.ui');
|
||||
this._builder.add_from_file(Me.path + '/ui/BoxShowDateMenuOptions.ui');
|
||||
this._builder.add_from_file(Me.path + '/ui/BoxWindowPreviewOptions.ui');
|
||||
this._builder.add_from_file(Me.path + '/ui/BoxGroupAppsOptions.ui');
|
||||
this._builder.add_from_file(Me.path + '/ui/BoxMiddleClickOptions.ui');
|
||||
this._builder.add_from_file(Me.path + '/ui/BoxOverlayShortcut.ui');
|
||||
this._builder.add_from_file(this._path + '/ui/BoxShowDesktopOptions.ui');
|
||||
this._builder.add_from_file(this._path + '/ui/BoxDynamicOpacityOptions.ui');
|
||||
this._builder.add_from_file(this._path + '/ui/BoxIntellihideOptions.ui');
|
||||
this._builder.add_from_file(this._path + '/ui/BoxShowDateMenuOptions.ui');
|
||||
this._builder.add_from_file(this._path + '/ui/BoxWindowPreviewOptions.ui');
|
||||
this._builder.add_from_file(this._path + '/ui/BoxGroupAppsOptions.ui');
|
||||
this._builder.add_from_file(this._path + '/ui/BoxMiddleClickOptions.ui');
|
||||
this._builder.add_from_file(this._path + '/ui/BoxOverlayShortcut.ui');
|
||||
|
||||
// pages
|
||||
this._builder.add_from_file(Me.path + '/ui/SettingsStyle.ui');
|
||||
this._builder.add_from_file(this._path + '/ui/SettingsStyle.ui');
|
||||
let pageStyle = this._builder.get_object('style');
|
||||
window.add(pageStyle);
|
||||
|
||||
this._builder.add_from_file(Me.path + '/ui/SettingsPosition.ui');
|
||||
this._builder.add_from_file(this._path + '/ui/SettingsPosition.ui');
|
||||
let pagePosition = this._builder.get_object('position');
|
||||
window.add(pagePosition);
|
||||
|
||||
this._builder.add_from_file(Me.path + '/ui/SettingsBehavior.ui');
|
||||
this._builder.add_from_file(this._path + '/ui/SettingsBehavior.ui');
|
||||
let pageBehavior = this._builder.get_object('behavior');
|
||||
window.add(pageBehavior);
|
||||
|
||||
this._builder.add_from_file(Me.path + '/ui/SettingsAction.ui');
|
||||
this._builder.add_from_file(this._path + '/ui/SettingsAction.ui');
|
||||
let pageAction = this._builder.get_object('action');
|
||||
window.add(pageAction);
|
||||
|
||||
@@ -627,6 +626,12 @@ const Preferences = class {
|
||||
|
||||
this._updateWidgetSettingsForMonitor(this._currentMonitorIndex);
|
||||
|
||||
//panel style
|
||||
this._settings.bind('floating-rounded-theme',
|
||||
this._builder.get_object('floating_rounded_theme_switch'),
|
||||
'active',
|
||||
Gio.SettingsBindFlags.DEFAULT);
|
||||
|
||||
//dynamic opacity
|
||||
this._settings.bind('trans-use-custom-opacity',
|
||||
this._builder.get_object('trans_opacity_override_switch'),
|
||||
@@ -700,11 +705,6 @@ const Preferences = class {
|
||||
'sensitive',
|
||||
Gio.SettingsBindFlags.DEFAULT);
|
||||
|
||||
this._settings.bind('intellihide-floating-rounded-theme',
|
||||
this._builder.get_object('intellihide_floating_rounded_theme_switch'),
|
||||
'active',
|
||||
Gio.SettingsBindFlags.DEFAULT);
|
||||
|
||||
this._settings.bind('intellihide-hide-from-windows',
|
||||
this._builder.get_object('intellihide_window_hide_switch'),
|
||||
'active',
|
||||
@@ -757,7 +757,6 @@ const Preferences = class {
|
||||
let dialog = this._createPreferencesDialog(_('Intellihide options'), box, () =>
|
||||
{
|
||||
// restore default settings
|
||||
this._settings.set_value('intellihide-floating-rounded-theme', this._settings.get_default_value('intellihide-floating-rounded-theme'));
|
||||
this._settings.set_value('intellihide-hide-from-windows', this._settings.get_default_value('intellihide-hide-from-windows'));
|
||||
this._settings.set_value('intellihide-behaviour', this._settings.get_default_value('intellihide-behaviour'));
|
||||
this._settings.set_value('intellihide-use-pressure', this._settings.get_default_value('intellihide-use-pressure'));
|
||||
@@ -1053,7 +1052,7 @@ const Preferences = class {
|
||||
{objectName: 'panel_length_scale', valueName: '', range: LENGTH_MARKS }
|
||||
];
|
||||
|
||||
for(var idx in sizeScales) {
|
||||
for(const idx in sizeScales) {
|
||||
let size_scale = this._builder.get_object(sizeScales[idx].objectName);
|
||||
let range = sizeScales[idx].range;
|
||||
size_scale.set_range(range[range.length - 1], range[0]);
|
||||
@@ -1142,9 +1141,9 @@ const BuilderScope = GObject.registerClass({
|
||||
panel_size_scale_value_changed_cb(scale) {
|
||||
// Avoid settings the size continuously
|
||||
if (this._preferences._panel_size_timeout > 0)
|
||||
Mainloop.source_remove(this._preferences._panel_size_timeout);
|
||||
GLib.Source.remove(this._preferences._panel_size_timeout);
|
||||
|
||||
this._preferences._panel_size_timeout = Mainloop.timeout_add(SCALE_UPDATE_TIMEOUT, (() => {
|
||||
this._preferences._panel_size_timeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, SCALE_UPDATE_TIMEOUT, () => {
|
||||
const value = scale.get_value();
|
||||
const monitorSync = this._preferences._settings.get_boolean('panel-element-positions-monitors-sync');
|
||||
const monitorsToSetFor = monitorSync ? this._preferences.monitors : [this._preferences._currentMonitorIndex];
|
||||
@@ -1154,17 +1153,18 @@ const BuilderScope = GObject.registerClass({
|
||||
|
||||
this._preferences._panel_size_timeout = 0;
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}));
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
function init() {
|
||||
ExtensionUtils.initTranslations();
|
||||
}
|
||||
export default class ZorinTaskbarPreferences extends ExtensionPreferences {
|
||||
fillPreferencesWindow(window) {
|
||||
window._settings = this.getSettings('org.gnome.shell.extensions.zorin-taskbar');
|
||||
window._gnomeInterfaceSettings = this.getSettings('org.gnome.desktop.interface');
|
||||
|
||||
function fillPreferencesWindow(window) {
|
||||
// use default width or window
|
||||
window.set_default_size(0, 625);
|
||||
// use default width or window
|
||||
window.set_default_size(0, 625);
|
||||
|
||||
let preferences = new Preferences(window);
|
||||
let preferences = new Preferences(window, window._settings, window._gnomeInterfaceSettings, this.path);
|
||||
}
|
||||
}
|
||||
|
||||
39
progress.js
39
progress.js
@@ -20,19 +20,22 @@
|
||||
* and code from the Dash to Panel extension
|
||||
*/
|
||||
|
||||
const Me = imports.misc.extensionUtils.getCurrentExtension();
|
||||
const Gio = imports.gi.Gio;
|
||||
const Cairo = imports.cairo;
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Pango = imports.gi.Pango;
|
||||
const St = imports.gi.St;
|
||||
const Signals = imports.signals;
|
||||
const Utils = Me.imports.utils;
|
||||
import Cairo from 'cairo';
|
||||
import Gio from 'gi://Gio';
|
||||
import Clutter from 'gi://Clutter';
|
||||
import Pango from 'gi://Pango';
|
||||
import St from 'gi://St';
|
||||
import * as Utils from './utils.js';
|
||||
import {SETTINGS} from './extension.js';
|
||||
|
||||
import {EventEmitter} from 'resource:///org/gnome/shell/misc/signals.js';
|
||||
|
||||
|
||||
var ProgressManager = class {
|
||||
export const ProgressManager = class extends EventEmitter {
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
this._entriesByDBusName = {};
|
||||
|
||||
this._launcher_entry_dbus_signal_id =
|
||||
@@ -163,11 +166,12 @@ var ProgressManager = class {
|
||||
}
|
||||
}
|
||||
};
|
||||
Signals.addSignalMethods(ProgressManager.prototype);
|
||||
|
||||
class AppProgress {
|
||||
export class AppProgress extends EventEmitter {
|
||||
|
||||
constructor(dbusName, appId, properties) {
|
||||
super();
|
||||
|
||||
this._dbusName = dbusName;
|
||||
this._appId = appId;
|
||||
this._count = 0;
|
||||
@@ -263,11 +267,11 @@ class AppProgress {
|
||||
if (property == 'count') {
|
||||
this.setCount(other[property].get_int64());
|
||||
} else if (property == 'count-visible') {
|
||||
this.setCountVisible(Me.settings.get_boolean('progress-show-count') && other[property].get_boolean());
|
||||
this.setCountVisible(SETTINGS.get_boolean('progress-show-count') && other[property].get_boolean());
|
||||
} else if (property == 'progress') {
|
||||
this.setProgress(other[property].get_double());
|
||||
} else if (property == 'progress-visible') {
|
||||
this.setProgressVisible(Me.settings.get_boolean('progress-show-bar') && other[property].get_boolean());
|
||||
this.setProgressVisible(SETTINGS.get_boolean('progress-show-bar') && other[property].get_boolean());
|
||||
} else if (property == 'urgent') {
|
||||
this.setUrgent(other[property].get_boolean());
|
||||
} else {
|
||||
@@ -277,11 +281,10 @@ class AppProgress {
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
Signals.addSignalMethods(AppProgress.prototype);
|
||||
}
|
||||
|
||||
|
||||
var ProgressIndicator = class {
|
||||
export const ProgressIndicator = class {
|
||||
|
||||
constructor(source, progressManager) {
|
||||
this._source = source;
|
||||
@@ -406,13 +409,13 @@ var ProgressIndicator = class {
|
||||
if (hasColor)
|
||||
this._progressbar_background = color
|
||||
else
|
||||
this._progressbar_background = new Clutter.Color({red: 204, green: 204, blue: 204, alpha: 255});
|
||||
this._progressbar_background = new Utils.ColorUtils.Color({red: 204, green: 204, blue: 204, alpha: 255});
|
||||
|
||||
[hasColor, color] = node.lookup_color('-progress-bar-border', false);
|
||||
if (hasColor)
|
||||
this._progressbar_border = color;
|
||||
else
|
||||
this._progressbar_border = new Clutter.Color({red: 230, green: 230, blue: 230, alpha: 255});
|
||||
this._progressbar_border = new Utils.ColorUtils.Color({red: 230, green: 230, blue: 230, alpha: 255});
|
||||
|
||||
this._updateProgressOverlay();
|
||||
}
|
||||
|
||||
17
proximity.js
17
proximity.js
@@ -18,13 +18,12 @@
|
||||
* This file is based on code from the Dash to Panel extension
|
||||
*/
|
||||
|
||||
const Meta = imports.gi.Meta;
|
||||
import Meta from 'gi://Meta';
|
||||
import Mtk from 'gi://Mtk';
|
||||
|
||||
const Layout = imports.ui.layout;
|
||||
const Main = imports.ui.main;
|
||||
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||
|
||||
const Me = imports.misc.extensionUtils.getCurrentExtension();
|
||||
const Utils = Me.imports.utils;
|
||||
import * as Utils from './utils.js';
|
||||
|
||||
//timeout intervals
|
||||
const MIN_UPDATE_MS = 200;
|
||||
@@ -32,13 +31,13 @@ const MIN_UPDATE_MS = 200;
|
||||
//timeout names
|
||||
const T1 = 'limitUpdateTimeout';
|
||||
|
||||
var Mode = {
|
||||
export const Mode = {
|
||||
ALL_WINDOWS: 0,
|
||||
FOCUSED_WINDOWS: 1,
|
||||
MAXIMIZED_WINDOWS: 2
|
||||
};
|
||||
|
||||
class ProximityWatch {
|
||||
export class ProximityWatch {
|
||||
|
||||
constructor(actor, monitorIndex, mode, xThreshold, yThreshold, handler) {
|
||||
this.actor = actor;
|
||||
@@ -60,7 +59,7 @@ class ProximityWatch {
|
||||
_updateWatchRect() {
|
||||
let [actorX, actorY] = this.actor.get_position();
|
||||
|
||||
this.rect = new Meta.Rectangle({
|
||||
this.rect = new Mtk.Rectangle({
|
||||
x: actorX - this.threshold[0],
|
||||
y: actorY - this.threshold[1],
|
||||
width: this.actor.width + this.threshold[0] * 2,
|
||||
@@ -69,7 +68,7 @@ class ProximityWatch {
|
||||
}
|
||||
};
|
||||
|
||||
var ProximityManager = class {
|
||||
export const ProximityManager = class {
|
||||
|
||||
constructor() {
|
||||
this._counter = 1;
|
||||
|
||||
@@ -189,10 +189,10 @@
|
||||
<summary>Keybinding toggle intellihide</summary>
|
||||
<description>Keybinding to reveal the panel while in intellihide mode</description>
|
||||
</key>
|
||||
<key type="b" name="intellihide-floating-rounded-theme">
|
||||
<default>true</default>
|
||||
<key type="b" name="floating-rounded-theme">
|
||||
<default>false</default>
|
||||
<summary>Floating rounded theme</summary>
|
||||
<description>Display the panel with a floating rounded theme while in intellihide mode</description>
|
||||
<description>Display the panel with a floating rounded theme</description>
|
||||
</key>
|
||||
<key type="as" name="panel-context-menu-commands">
|
||||
<default>[]</default>
|
||||
|
||||
@@ -22,34 +22,39 @@
|
||||
*/
|
||||
|
||||
#zorintaskbarTaskbar .dash-item-container > StWidget,
|
||||
.zorintaskbarMainPanel .show-apps {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#zorintaskbarScrollview .app-well-app .overview-icon,
|
||||
.zorintaskbarMainPanel .show-apps .overview-icon {
|
||||
background: none;
|
||||
border: none;
|
||||
.zorintaskbarMainPanel .dash-item-container .show-apps {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#zorintaskbarScrollview .app-well-app .overview-label {
|
||||
/* must match TITLE_RIGHT_PADDING in apppicons.js */
|
||||
padding-right: 8px;
|
||||
#zorintaskbarScrollview .overview-tile,
|
||||
.zorintaskbarMainPanel .overview-tile {
|
||||
background: none;
|
||||
}
|
||||
|
||||
#zorintaskbarScrollview .app-well-app .favorite {
|
||||
#zorintaskbarScrollview .overview-tile .overview-label {
|
||||
/* must match TITLE_RIGHT_PADDING in apppicons.js */
|
||||
padding-right: 8px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.zorintaskbarMainPanel .dash-item-container .show-apps .overview-icon {
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
#zorintaskbarTaskbar .dash-item-container .overview-tile:hover,
|
||||
#zorintaskbarTaskbar .dash-item-container .overview-tile .dtp-container .overview-icon,
|
||||
#zorintaskbarScrollview .overview-tile:hover .dtp-container.animate-appicon-hover,
|
||||
.zorintaskbarMainPanel .dash-item-container .show-apps:hover .overview-icon {
|
||||
background: none;
|
||||
}
|
||||
|
||||
#zorintaskbarScrollview .overview-tile .favorite {
|
||||
/*background-color: rgba(80, 150, 255, 0.4);*/
|
||||
}
|
||||
|
||||
#zorintaskbarScrollview .app-well-app-running-dot {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
#zorintaskbarTaskbar .scrollview-fade {
|
||||
background-gradient-end: rgba(0, 0, 0, 0);
|
||||
background-gradient-end: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
.zorintaskbarSecondaryMenu {
|
||||
@@ -57,13 +62,13 @@
|
||||
}
|
||||
|
||||
.zorintaskbarMainPanel.vertical .panel-button {
|
||||
text-align: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.zorintaskbarMainPanel.vertical .panel-button.vertical *,
|
||||
.zorintaskbarMainPanel.vertical .panel-button.clock-display * {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.zorintaskbarMainPanel.vertical .panel-button > *,
|
||||
@@ -71,7 +76,7 @@
|
||||
.zorintaskbarMainPanel.vertical .panel-button.vertical .system-status-icon,
|
||||
.zorintaskbarMainPanel.vertical .panel-button.clock-display > *,
|
||||
.zorintaskbarMainPanel.vertical .panel-button.clock-display .clock {
|
||||
padding: 8px 0;
|
||||
padding: 8px 0;
|
||||
}
|
||||
|
||||
.zorintaskbarMainPanel.vertical .panel-button.clock-display {
|
||||
@@ -100,17 +105,28 @@
|
||||
}
|
||||
|
||||
.popup-menu.panel-menu {
|
||||
margin-bottom: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
#panel #panelLeft, #panel #panelCenter {
|
||||
spacing: 0px;
|
||||
spacing: 0px;
|
||||
}
|
||||
|
||||
#panelBox.floating {
|
||||
padding: 8px;
|
||||
background: transparent;
|
||||
}
|
||||
#panelBox.floating.top {
|
||||
padding: 8px 8px 0 8px;
|
||||
}
|
||||
#panelBox.floating.right {
|
||||
padding: 8px 8px 8px 0;
|
||||
}
|
||||
#panelBox.floating.bottom {
|
||||
padding: 0 8px 8px 8px;
|
||||
}
|
||||
#panelBox.floating.left {
|
||||
padding: 8px 0 8px 8px;
|
||||
}
|
||||
|
||||
#panelBox.floating #panel,
|
||||
#panelBox.floating .panel-button,
|
||||
@@ -129,15 +145,14 @@
|
||||
}
|
||||
|
||||
#zorintaskbarScrollview .notification-badge {
|
||||
background-color: rgba(255,0,0,0.8);
|
||||
margin: 2px;
|
||||
background-color: rgba(255,0,0,0.8);
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
#zorintaskbarScrollview .progress-bar {
|
||||
/* Customization of the progress bar style, e.g.:
|
||||
-progress-bar-background: rgba(0.8, 0.8, 0.8, 1);
|
||||
-progress-bar-border: rgba(0.9, 0.9, 0.9, 1);
|
||||
*/
|
||||
/* Customization of the progress bar style, e.g.:
|
||||
-progress-bar-background: rgba(0.8, 0.8, 0.8, 1);
|
||||
-progress-bar-border: rgba(0.9, 0.9, 0.9, 1); */
|
||||
}
|
||||
|
||||
.preview-container,
|
||||
|
||||
147
taskbar.js
147
taskbar.js
@@ -22,45 +22,41 @@
|
||||
*/
|
||||
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Gio = imports.gi.Gio;
|
||||
const GLib = imports.gi.GLib;
|
||||
const GObject = imports.gi.GObject;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const Signals = imports.signals;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
import Clutter from 'gi://Clutter';
|
||||
import Gio from 'gi://Gio';
|
||||
import GLib from 'gi://GLib';
|
||||
import GObject from 'gi://GObject';
|
||||
import Graphene from 'gi://Graphene';
|
||||
import Shell from 'gi://Shell';
|
||||
import St from 'gi://St';
|
||||
|
||||
const SearchController = imports.ui.main.overview._overview._controls._searchController;
|
||||
const AppDisplay = imports.ui.main.overview._overview._controls.appDisplay;
|
||||
const AppFavorites = imports.ui.appFavorites;
|
||||
const Dash = imports.ui.dash;
|
||||
const DND = imports.ui.dnd;
|
||||
const IconGrid = imports.ui.iconGrid;
|
||||
const Main = imports.ui.main;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
const Workspace = imports.ui.workspace;
|
||||
import * as AppFavorites from 'resource:///org/gnome/shell/ui/appFavorites.js';
|
||||
import * as Dash from 'resource:///org/gnome/shell/ui/dash.js';
|
||||
import * as DND from 'resource:///org/gnome/shell/ui/dnd.js';
|
||||
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||
import {EventEmitter} from 'resource:///org/gnome/shell/misc/signals.js';
|
||||
|
||||
const Me = imports.misc.extensionUtils.getCurrentExtension();
|
||||
const AppIcons = Me.imports.appIcons;
|
||||
const Panel = Me.imports.panel;
|
||||
const PanelManager = Me.imports.panelManager;
|
||||
const PanelSettings = Me.imports.panelSettings;
|
||||
const Pos = Me.imports.panelPositions;
|
||||
const Utils = Me.imports.utils;
|
||||
const WindowPreview = Me.imports.windowPreview;
|
||||
import * as AppIcons from './appIcons.js';
|
||||
import * as PanelManager from './panelManager.js';
|
||||
import * as PanelSettings from './panelSettings.js';
|
||||
import * as Pos from './panelPositions.js';
|
||||
import * as Utils from './utils.js';
|
||||
import * as WindowPreview from './windowPreview.js';
|
||||
import {SETTINGS} from './extension.js';
|
||||
|
||||
var DASH_ANIMATION_TIME = Dash.DASH_ANIMATION_TIME / (Dash.DASH_ANIMATION_TIME > 1 ? 1000 : 1);
|
||||
var DASH_ITEM_HOVER_TIMEOUT = Dash.DASH_ITEM_HOVER_TIMEOUT;
|
||||
var MIN_ICON_SIZE = 4;
|
||||
var APPICON_MARGIN = 4;
|
||||
var APPICON_PADDING = 8;
|
||||
const SearchController = Main.overview.searchController;
|
||||
|
||||
export const DASH_ANIMATION_TIME = .2; // Dash.DASH_ANIMATION_TIME is now private
|
||||
const DASH_ITEM_HOVER_TIMEOUT = .3; // Dash.DASH_ITEM_HOVER_TIMEOUT is now private
|
||||
export const MIN_ICON_SIZE = 4;
|
||||
export const APPICON_MARGIN = 4;
|
||||
export const APPICON_PADDING = 8;
|
||||
|
||||
const T1 = 'ensureAppIconVisibilityTimeout'
|
||||
const T2 = 'showLabelTimeout'
|
||||
const T3 = 'resetHoverTimeout'
|
||||
|
||||
|
||||
/**
|
||||
* Extend DashItemContainer
|
||||
*
|
||||
@@ -70,9 +66,9 @@ const T3 = 'resetHoverTimeout'
|
||||
* thus use this ugly pattern.
|
||||
*/
|
||||
|
||||
function extendDashItemContainer(dashItemContainer) {
|
||||
export function extendDashItemContainer(dashItemContainer) {
|
||||
dashItemContainer.showLabel = AppIcons.ItemShowLabel;
|
||||
};
|
||||
}
|
||||
|
||||
/* This class is a fork of the upstream DashActor class (ui.dash.js)
|
||||
*
|
||||
@@ -80,7 +76,7 @@ function extendDashItemContainer(dashItemContainer) {
|
||||
* - modified chldBox calculations for when 'show-apps-at-top' option is checked
|
||||
* - handle horizontal dash
|
||||
*/
|
||||
var TaskbarActor = GObject.registerClass({
|
||||
export const TaskbarActor = GObject.registerClass({
|
||||
}, class TaskbarActor extends St.Widget {
|
||||
_init(delegate) {
|
||||
this._delegate = delegate;
|
||||
@@ -110,7 +106,7 @@ var TaskbarActor = GObject.registerClass({
|
||||
|
||||
scrollview.allocate(childBox);
|
||||
|
||||
let [value, , upper, , , pageSize] = scrollview[orientation[0] + 'scroll'].adjustment.get_values();
|
||||
let [value, , upper, , , pageSize] = scrollview[orientation[0] + 'adjustment'].get_values();
|
||||
upper = Math.floor(upper);
|
||||
scrollview._dtpFadeSize = upper > pageSize ? this._delegate.iconSize : 0;
|
||||
|
||||
@@ -161,9 +157,11 @@ var TaskbarActor = GObject.registerClass({
|
||||
* - Sync minimization application target position.
|
||||
*/
|
||||
|
||||
var Taskbar = class {
|
||||
export const Taskbar = class extends EventEmitter {
|
||||
|
||||
constructor(panel) {
|
||||
super();
|
||||
|
||||
this.dtpPanel = panel;
|
||||
|
||||
// start at smallest size due to running indicator drawing area expanding but not shrinking
|
||||
@@ -186,12 +184,12 @@ var Taskbar = class {
|
||||
|
||||
this._container = new TaskbarActor(this);
|
||||
this._scrollView = new St.ScrollView({ name: 'zorintaskbarScrollview',
|
||||
hscrollbar_policy: Gtk.PolicyType.NEVER,
|
||||
vscrollbar_policy: Gtk.PolicyType.NEVER,
|
||||
hscrollbar_policy: St.PolicyType.NEVER,
|
||||
vscrollbar_policy: St.PolicyType.NEVER,
|
||||
enable_mouse_scrolling: true });
|
||||
|
||||
this._scrollView.connect('scroll-event', this._onScrollEvent.bind(this));
|
||||
this._scrollView.add_actor(this._box);
|
||||
this._scrollView.add_child(this._box);
|
||||
|
||||
this._showAppsIconWrapper = panel.showAppsIconWrapper;
|
||||
this._showAppsIconWrapper.connect('menu-state-changed', (showAppsIconWrapper, opened) => {
|
||||
@@ -215,31 +213,33 @@ var Taskbar = class {
|
||||
this._hookUpLabel(this._showAppsIcon, this._showAppsIconWrapper);
|
||||
|
||||
this._container.add_child(new St.Widget({ width: 0, reactive: false }));
|
||||
this._container.add_actor(this._scrollView);
|
||||
this._container.add_child(this._scrollView);
|
||||
|
||||
let orientation = panel.getOrientation();
|
||||
let fadeStyle = 'background-gradient-direction:' + orientation;
|
||||
let fade1 = new St.Widget({ style_class: 'scrollview-fade', reactive: false });
|
||||
let fade2 = new St.Widget({ style_class: 'scrollview-fade',
|
||||
reactive: false,
|
||||
pivot_point: new imports.gi.Graphene.Point({ x: .5, y: .5 }),
|
||||
pivot_point: new Graphene.Point({ x: .5, y: .5 }),
|
||||
rotation_angle_z: 180 });
|
||||
|
||||
fade1.set_style(fadeStyle);
|
||||
fade2.set_style(fadeStyle);
|
||||
|
||||
this._container.add_actor(fade1);
|
||||
this._container.add_actor(fade2);
|
||||
this._container.add_child(fade1);
|
||||
this._container.add_child(fade2);
|
||||
|
||||
this.previewMenu = new WindowPreview.PreviewMenu(panel);
|
||||
this.previewMenu.enable();
|
||||
|
||||
let rtl = Clutter.get_default_text_direction() == Clutter.TextDirection.RTL;
|
||||
this.actor = new St.Bin({ child: this._container,
|
||||
y_align: St.Align.START, x_align:rtl?St.Align.END:St.Align.START
|
||||
this.actor = new St.Bin({
|
||||
child: this._container,
|
||||
y_align: Clutter.ActorAlign.START,
|
||||
x_align: rtl ? Clutter.ActorAlign.END : Clutter.ActorAlign.START
|
||||
});
|
||||
|
||||
let adjustment = this._scrollView[orientation[0] + 'scroll'].adjustment;
|
||||
const adjustment = this._scrollView[orientation[0] + 'adjustment'];
|
||||
|
||||
this._workId = Main.initializeDeferredWork(this._box, this._redisplay.bind(this));
|
||||
|
||||
@@ -269,9 +269,9 @@ var Taskbar = class {
|
||||
}
|
||||
],
|
||||
[
|
||||
this._appSystem,
|
||||
'app-state-changed',
|
||||
this._queueRedisplay.bind(this)
|
||||
this._appSystem,
|
||||
'app-state-changed',
|
||||
this._queueRedisplay.bind(this)
|
||||
],
|
||||
[
|
||||
AppFavorites.getAppFavorites(),
|
||||
@@ -290,7 +290,7 @@ var Taskbar = class {
|
||||
'window-left-monitor'
|
||||
],
|
||||
() => {
|
||||
if (Me.settings.get_boolean('isolate-monitors')) {
|
||||
if (SETTINGS.get_boolean('isolate-monitors')) {
|
||||
this._queueRedisplay();
|
||||
}
|
||||
}
|
||||
@@ -317,7 +317,7 @@ var Taskbar = class {
|
||||
this._syncShowAppsButtonToggled.bind(this)
|
||||
],
|
||||
[
|
||||
Me.settings,
|
||||
SETTINGS,
|
||||
[
|
||||
'changed::show-favorites',
|
||||
'changed::show-running-apps',
|
||||
@@ -329,7 +329,7 @@ var Taskbar = class {
|
||||
}
|
||||
],
|
||||
[
|
||||
Me.settings,
|
||||
SETTINGS,
|
||||
'changed::group-apps',
|
||||
() => {
|
||||
setAttributes()
|
||||
@@ -337,7 +337,7 @@ var Taskbar = class {
|
||||
}
|
||||
],
|
||||
[
|
||||
Me.settings,
|
||||
SETTINGS,
|
||||
[
|
||||
'changed::group-apps-use-launchers',
|
||||
'changed::taskbar-locked'
|
||||
@@ -358,11 +358,11 @@ var Taskbar = class {
|
||||
);
|
||||
|
||||
let setAttributes = () => {
|
||||
this.isGroupApps = Me.settings.get_boolean('group-apps');
|
||||
this.usingLaunchers = !this.isGroupApps && Me.settings.get_boolean('group-apps-use-launchers');
|
||||
this.showFavorites = Me.settings.get_boolean('show-favorites') &&
|
||||
(this.dtpPanel.isPrimary || Me.settings.get_boolean('show-favorites-all-monitors'))
|
||||
this.showRunningApps = Me.settings.get_boolean('show-running-apps')
|
||||
this.isGroupApps = SETTINGS.get_boolean('group-apps');
|
||||
this.usingLaunchers = !this.isGroupApps && SETTINGS.get_boolean('group-apps-use-launchers');
|
||||
this.showFavorites = SETTINGS.get_boolean('show-favorites') &&
|
||||
(this.dtpPanel.isPrimary || SETTINGS.get_boolean('show-favorites-all-monitors'))
|
||||
this.showRunningApps = SETTINGS.get_boolean('show-running-apps')
|
||||
this.allowSplitApps = this.usingLaunchers || (!this.isGroupApps && !this.showFavorites)
|
||||
}
|
||||
|
||||
@@ -407,7 +407,7 @@ var Taskbar = class {
|
||||
|
||||
let adjustment, delta;
|
||||
|
||||
adjustment = this._scrollView[orientation[0] + 'scroll'].get_adjustment();
|
||||
adjustment = this._scrollView[orientation[0] + 'adjustment'];
|
||||
|
||||
let increment = adjustment.step_increment;
|
||||
|
||||
@@ -454,7 +454,9 @@ var Taskbar = class {
|
||||
if (initial != this.fullScrollView && !this._waitIdleId) {
|
||||
this._waitIdleId = GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, () => {
|
||||
this._getAppIcons().forEach(a => a.updateTitleStyle())
|
||||
this._waitIdleId = 0
|
||||
this._waitIdleId = 0;
|
||||
|
||||
return GLib.SOURCE_REMOVE;
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -512,7 +514,7 @@ var Taskbar = class {
|
||||
}
|
||||
|
||||
_onDragMotion(dragEvent) {
|
||||
let app = Dash.getAppFromSource(dragEvent.source);
|
||||
let app = Dash.Dash.getAppFromSource(dragEvent.source);
|
||||
if (app == null)
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
|
||||
@@ -584,7 +586,7 @@ var Taskbar = class {
|
||||
{
|
||||
setSizeManually: true,
|
||||
showLabel: false,
|
||||
isDraggable: !Me.settings.get_boolean('taskbar-locked'),
|
||||
isDraggable: !SETTINGS.get_boolean('taskbar-locked'),
|
||||
},
|
||||
this.previewMenu,
|
||||
this.iconAnimator
|
||||
@@ -726,7 +728,7 @@ var Taskbar = class {
|
||||
|
||||
_adjustIconSize() {
|
||||
const thisMonitorIndex = this.dtpPanel.monitor.index;
|
||||
let panelSize = PanelSettings.getPanelSize(Me.settings, thisMonitorIndex);
|
||||
let panelSize = PanelSettings.getPanelSize(SETTINGS, thisMonitorIndex);
|
||||
let availSize = panelSize - APPICON_PADDING * 2;
|
||||
let minIconSize = MIN_ICON_SIZE + panelSize % 2;
|
||||
|
||||
@@ -958,8 +960,8 @@ var Taskbar = class {
|
||||
icon.updateHotkeyNumberOverlay();
|
||||
});
|
||||
|
||||
if (Me.settings.get_boolean('hot-keys') &&
|
||||
Me.settings.get_string('hotkeys-overlay-combo') === 'ALWAYS')
|
||||
if (SETTINGS.get_boolean('hot-keys') &&
|
||||
SETTINGS.get_string('hotkeys-overlay-combo') === 'ALWAYS')
|
||||
this.toggleNumberOverlay(true);
|
||||
}
|
||||
|
||||
@@ -1196,14 +1198,13 @@ var Taskbar = class {
|
||||
}
|
||||
};
|
||||
|
||||
Signals.addSignalMethods(Taskbar.prototype);
|
||||
|
||||
var TaskbarItemContainer = GObject.registerClass({
|
||||
export const TaskbarItemContainer = GObject.registerClass({
|
||||
|
||||
}, class TaskbarItemContainer extends Dash.DashItemContainer {
|
||||
|
||||
_init() {
|
||||
super._init()
|
||||
this.x_expand = this.y_expand = false
|
||||
}
|
||||
|
||||
vfunc_allocate(box) {
|
||||
@@ -1241,7 +1242,7 @@ var TaskbarItemContainer = GObject.registerClass({
|
||||
}
|
||||
});
|
||||
|
||||
var DragPlaceholderItem = GObject.registerClass({
|
||||
const DragPlaceholderItem = GObject.registerClass({
|
||||
}, class DragPlaceholderItem extends St.Widget {
|
||||
|
||||
_init(appIcon, iconSize, isVertical) {
|
||||
@@ -1255,7 +1256,7 @@ var DragPlaceholderItem = GObject.registerClass({
|
||||
height: iconSize
|
||||
});
|
||||
|
||||
this.add_actor(this._clone);
|
||||
this.add_child(this._clone);
|
||||
}
|
||||
|
||||
destroy() {
|
||||
@@ -1264,7 +1265,7 @@ var DragPlaceholderItem = GObject.registerClass({
|
||||
}
|
||||
});
|
||||
|
||||
function getAppStableSequence(app, monitor) {
|
||||
export function getAppStableSequence(app, monitor) {
|
||||
let windows = AppIcons.getInterestingWindows(app, monitor);
|
||||
|
||||
return windows.reduce((prevWindow, window) => {
|
||||
@@ -1272,10 +1273,10 @@ function getAppStableSequence(app, monitor) {
|
||||
}, Infinity);
|
||||
}
|
||||
|
||||
function sortWindowsCompareFunction(windowA, windowB) {
|
||||
export function sortWindowsCompareFunction(windowA, windowB) {
|
||||
return getWindowStableSequence(windowA) - getWindowStableSequence(windowB);
|
||||
}
|
||||
|
||||
function getWindowStableSequence(window) {
|
||||
export function getWindowStableSequence(window) {
|
||||
return ('_dtpPosition' in window ? window._dtpPosition : window.get_stable_sequence());
|
||||
}
|
||||
|
||||
@@ -18,21 +18,17 @@
|
||||
* This file is based on code from the Dash to Panel extension
|
||||
*/
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const GdkPixbuf = imports.gi.GdkPixbuf;
|
||||
const Main = imports.ui.main;
|
||||
const Meta = imports.gi.Meta;
|
||||
const St = imports.gi.St;
|
||||
const Config = imports.misc.config;
|
||||
import GdkPixbuf from 'gi://GdkPixbuf';
|
||||
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||
import St from 'gi://St';
|
||||
|
||||
const Me = imports.misc.extensionUtils.getCurrentExtension();
|
||||
const Panel = Me.imports.panel;
|
||||
const Proximity = Me.imports.proximity;
|
||||
const Utils = Me.imports.utils;
|
||||
import * as Proximity from './proximity.js';
|
||||
import * as Utils from './utils.js';
|
||||
import {SETTINGS} from './extension.js';
|
||||
|
||||
const TRANS_DYNAMIC_DISTANCE = 20;
|
||||
|
||||
var DynamicTransparency = class {
|
||||
export const DynamicTransparency = class {
|
||||
|
||||
constructor(dtpPanel) {
|
||||
this._dtpPanel = dtpPanel;
|
||||
@@ -77,7 +73,7 @@ var DynamicTransparency = class {
|
||||
() => this._updateAlphaAndSet()
|
||||
],
|
||||
[
|
||||
Me.settings,
|
||||
SETTINGS,
|
||||
[
|
||||
'changed::trans-use-custom-opacity',
|
||||
'changed::trans-panel-opacity',
|
||||
@@ -87,7 +83,7 @@ var DynamicTransparency = class {
|
||||
() => this._updateAlphaAndSet()
|
||||
],
|
||||
[
|
||||
Me.settings,
|
||||
SETTINGS,
|
||||
[
|
||||
'changed::trans-dynamic-behavior',
|
||||
'changed::trans-use-dynamic-opacity'
|
||||
@@ -100,7 +96,7 @@ var DynamicTransparency = class {
|
||||
_updateProximityWatch() {
|
||||
this._proximityManager.removeWatch(this._proximityWatchId);
|
||||
|
||||
if (Me.settings.get_boolean('trans-use-dynamic-opacity')) {
|
||||
if (SETTINGS.get_boolean('trans-use-dynamic-opacity')) {
|
||||
let isVertical = this._dtpPanel.checkIfVertical();
|
||||
let threshold = TRANS_DYNAMIC_DISTANCE;
|
||||
|
||||
@@ -110,7 +106,7 @@ var DynamicTransparency = class {
|
||||
this._proximityWatchId = this._proximityManager.createWatch(
|
||||
this._dtpPanel.panelBox.get_parent(),
|
||||
this._dtpPanel.monitor.index,
|
||||
Proximity.Mode[Me.settings.get_string('trans-dynamic-behavior')],
|
||||
Proximity.Mode[SETTINGS.get_string('trans-dynamic-behavior')],
|
||||
isVertical ? threshold : 0,
|
||||
isVertical ? 0 : threshold,
|
||||
overlap => {
|
||||
@@ -147,11 +143,11 @@ var DynamicTransparency = class {
|
||||
}
|
||||
|
||||
_updateAlpha(themeBackground) {
|
||||
if (this._windowOverlap && !Main.overview.visibleTarget && Me.settings.get_boolean('trans-use-dynamic-opacity')) {
|
||||
this.alpha = Me.settings.get_double('trans-dynamic-anim-target');
|
||||
if (this._windowOverlap && !Main.overview.visibleTarget && SETTINGS.get_boolean('trans-use-dynamic-opacity')) {
|
||||
this.alpha = SETTINGS.get_double('trans-dynamic-anim-target');
|
||||
} else {
|
||||
this.alpha = Me.settings.get_boolean('trans-use-custom-opacity') ?
|
||||
Me.settings.get_double('trans-panel-opacity') :
|
||||
this.alpha = SETTINGS.get_boolean('trans-use-custom-opacity') ?
|
||||
SETTINGS.get_double('trans-panel-opacity') :
|
||||
(themeBackground || this._getThemeBackground()).alpha * 0.003921569; // 1 / 255 = 0.003921569
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,23 +11,6 @@
|
||||
<property name="margin-start">32</property>
|
||||
<property name="margin-end">32</property>
|
||||
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
<property name="title" translatable="yes">Floating rounded theme</property>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="intellihide_floating_rounded_theme_switch">
|
||||
<property name="valign">center</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
|
||||
@@ -107,7 +90,7 @@
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
<property name="title" translatable="yes">Keyboard shortcut to reveal and hold the panel</property>
|
||||
<property name="subtitle" translatable="yes">Syntax: <Shift>, <Ctrl>, <Alt>, <Super></property>
|
||||
<property name="subtitle" translatable="yes">Syntax: &lt;Shift&gt;, &lt;Ctrl&gt;, &lt;Alt&gt;, &lt;Super&gt;</property>
|
||||
<child>
|
||||
<object class="GtkEntry" id="intellihide_toggle_entry">
|
||||
<property name="valign">center</property>
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
<property name="title" translatable="yes">Shortcut to show the overlay for 2 seconds</property>
|
||||
<property name="subtitle" translatable="yes">Syntax: <Shift>, <Ctrl>, <Alt>, <Super></property>
|
||||
<property name="subtitle" translatable="yes">Syntax: &lt;Shift&gt;, &lt;Ctrl&gt;, &lt;Alt&gt;, &lt;Super&gt;</property>
|
||||
<child>
|
||||
<object class="GtkEntry" id="shortcut_entry">
|
||||
<property name="valign">center</property>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
|
||||
<object class="AdwPreferencesPage" id="action">
|
||||
<property name="title">Action</property>
|
||||
<property name="title" translatable="yes">Action</property>
|
||||
<property name="icon_name">view-pin-symbolic</property>
|
||||
|
||||
<!-- group click action -->
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<object class="AdwPreferencesPage" id="behavior">
|
||||
<property name="title">Behavior</property>
|
||||
<property name="title" translatable="yes">Behavior</property>
|
||||
<property name="icon_name">preferences-system-symbolic</property>
|
||||
|
||||
<!-- group applications -->
|
||||
@@ -87,7 +87,7 @@
|
||||
<!-- group hover -->
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup" id="behavior_group_hover">
|
||||
<property name="title">Hover</property>
|
||||
<property name="title" translatable="yes">Hover</property>
|
||||
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
</object>
|
||||
|
||||
<object class="AdwPreferencesPage" id="position">
|
||||
<property name="title">Position</property>
|
||||
<property name="title" translatable="yes">Position</property>
|
||||
<property name="icon_name">find-location-symbolic</property>
|
||||
|
||||
<!-- group panel -->
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
</object>
|
||||
|
||||
<object class="AdwPreferencesPage" id="style">
|
||||
<property name="title">Style</property>
|
||||
<property name="title" translatable="yes">Style</property>
|
||||
<property name="icon_name">applications-graphics-symbolic</property>
|
||||
|
||||
<!-- group panel intellihide -->
|
||||
@@ -50,6 +50,17 @@
|
||||
<object class="AdwPreferencesGroup" id="style_group_dynamic_trans2">
|
||||
<property name="title" translatable="yes">Panel style</property>
|
||||
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
<property name="title" translatable="yes">Floating rounded theme</property>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="floating_rounded_theme_switch">
|
||||
<property name="valign">center</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
<property name="title" translatable="yes">Override panel theme background opacity</property>
|
||||
|
||||
192
utils.js
192
utils.js
@@ -21,27 +21,24 @@
|
||||
* Some code was also adapted from the upstream Gnome Shell source code.
|
||||
*/
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const GdkPixbuf = imports.gi.GdkPixbuf;
|
||||
const Gi = imports._gi;
|
||||
const Gio = imports.gi.Gio;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
const Mainloop = imports.mainloop;
|
||||
const Config = imports.misc.config;
|
||||
const Util = imports.misc.util;
|
||||
const Main = imports.ui.main;
|
||||
const MessageTray = imports.ui.messageTray;
|
||||
import Clutter from 'gi://Clutter';
|
||||
import Cogl from 'gi://Cogl';
|
||||
import GdkPixbuf from 'gi://GdkPixbuf';
|
||||
import Gio from 'gi://Gio';
|
||||
import GLib from 'gi://GLib';
|
||||
import Graphene from 'gi://Graphene';
|
||||
import Meta from 'gi://Meta';
|
||||
import Shell from 'gi://Shell';
|
||||
import St from 'gi://St';
|
||||
import * as Util from 'resource:///org/gnome/shell/misc/util.js';
|
||||
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||
import * as MessageTray from 'resource:///org/gnome/shell/ui/messageTray.js';
|
||||
|
||||
var TRANSLATION_DOMAIN = imports.misc.extensionUtils.getCurrentExtension().metadata['gettext-domain'];
|
||||
var SCROLL_TIME = Util.SCROLL_TIME / (Util.SCROLL_TIME > 1 ? 1000 : 1);
|
||||
const SCROLL_TIME = Util.SCROLL_TIME / (Util.SCROLL_TIME > 1 ? 1000 : 1);
|
||||
|
||||
// simplify global signals and function injections handling
|
||||
// abstract class
|
||||
var BasicHandler = class {
|
||||
export const BasicHandler = class {
|
||||
|
||||
constructor() {
|
||||
this._storage = new Object();
|
||||
@@ -101,7 +98,7 @@ var BasicHandler = class {
|
||||
}
|
||||
|
||||
// Manage global signals
|
||||
var GlobalSignalsHandler = class extends BasicHandler {
|
||||
export const GlobalSignalsHandler = class extends BasicHandler {
|
||||
|
||||
_create(item) {
|
||||
let handlers = [];
|
||||
@@ -134,7 +131,7 @@ var GlobalSignalsHandler = class extends BasicHandler {
|
||||
* Manage function injection: both instances and prototype can be overridden
|
||||
* and restored
|
||||
*/
|
||||
var InjectionsHandler = class extends BasicHandler {
|
||||
export const InjectionsHandler = class extends BasicHandler {
|
||||
|
||||
_create(item) {
|
||||
let object = item[0];
|
||||
@@ -157,7 +154,7 @@ var InjectionsHandler = class extends BasicHandler {
|
||||
/**
|
||||
* Manage timeouts: the added timeouts have their id reset on completion
|
||||
*/
|
||||
var TimeoutsHandler = class extends BasicHandler {
|
||||
export const TimeoutsHandler = class extends BasicHandler {
|
||||
|
||||
_create(item) {
|
||||
let name = item[0];
|
||||
@@ -166,9 +163,11 @@ var TimeoutsHandler = class extends BasicHandler {
|
||||
|
||||
this._remove(item);
|
||||
|
||||
this[name] = Mainloop.timeout_add(delay, () => {
|
||||
this[name] = GLib.timeout_add(GLib.PRIORITY_DEFAULT, delay, () => {
|
||||
this[name] = 0;
|
||||
timeoutHandler();
|
||||
|
||||
return GLib.SOURCE_REMOVE;
|
||||
});
|
||||
|
||||
return [[name]];
|
||||
@@ -182,7 +181,7 @@ var TimeoutsHandler = class extends BasicHandler {
|
||||
let name = item[0];
|
||||
|
||||
if (this[name]) {
|
||||
Mainloop.source_remove(this[name]);
|
||||
GLib.Source.remove(this[name]);
|
||||
this[name] = 0;
|
||||
}
|
||||
}
|
||||
@@ -194,7 +193,7 @@ var TimeoutsHandler = class extends BasicHandler {
|
||||
|
||||
// This is wrapper to maintain compatibility with GNOME-Shell 3.30+ as well as
|
||||
// previous versions.
|
||||
var DisplayWrapper = {
|
||||
export const DisplayWrapper = {
|
||||
getScreen() {
|
||||
return global.screen || global.display;
|
||||
},
|
||||
@@ -209,7 +208,7 @@ var DisplayWrapper = {
|
||||
};
|
||||
|
||||
let unredirectEnabled = true
|
||||
var setDisplayUnredirect = (enable) => {
|
||||
export const setDisplayUnredirect = (enable) => {
|
||||
if (enable && !unredirectEnabled)
|
||||
Meta.enable_unredirect_for_display(global.display);
|
||||
else if (!enable && unredirectEnabled)
|
||||
@@ -218,40 +217,34 @@ var setDisplayUnredirect = (enable) => {
|
||||
unredirectEnabled = enable;
|
||||
};
|
||||
|
||||
var getSystemMenuInfo = function() {
|
||||
if (Config.PACKAGE_VERSION < '43')
|
||||
return {
|
||||
name: 'aggregateMenu',
|
||||
constructor: imports.ui.panel.AggregateMenu
|
||||
};
|
||||
|
||||
export const getSystemMenuInfo = function() {
|
||||
return {
|
||||
name: 'quickSettings',
|
||||
constructor: imports.ui.panel.QuickSettings
|
||||
constructor: Main.panel.statusArea.quickSettings.constructor
|
||||
};
|
||||
}
|
||||
|
||||
var getCurrentWorkspace = function() {
|
||||
export const getCurrentWorkspace = function() {
|
||||
return DisplayWrapper.getWorkspaceManager().get_active_workspace();
|
||||
};
|
||||
|
||||
var getWorkspaceByIndex = function(index) {
|
||||
export const getWorkspaceByIndex = function(index) {
|
||||
return DisplayWrapper.getWorkspaceManager().get_workspace_by_index(index);
|
||||
};
|
||||
|
||||
var getWorkspaceCount = function() {
|
||||
export const getWorkspaceCount = function() {
|
||||
return DisplayWrapper.getWorkspaceManager().n_workspaces;
|
||||
};
|
||||
|
||||
var getStageTheme = function() {
|
||||
export const getStageTheme = function() {
|
||||
return St.ThemeContext.get_for_stage(global.stage);
|
||||
};
|
||||
|
||||
var getScaleFactor = function() {
|
||||
export const getScaleFactor = function() {
|
||||
return getStageTheme().scale_factor || 1;
|
||||
};
|
||||
|
||||
var findIndex = function(array, predicate) {
|
||||
export const findIndex = function(array, predicate) {
|
||||
if (array) {
|
||||
if (Array.prototype.findIndex) {
|
||||
return array.findIndex(predicate);
|
||||
@@ -267,7 +260,7 @@ var findIndex = function(array, predicate) {
|
||||
return -1;
|
||||
};
|
||||
|
||||
var find = function(array, predicate) {
|
||||
export const find = function(array, predicate) {
|
||||
let index = findIndex(array, predicate);
|
||||
|
||||
if (index > -1) {
|
||||
@@ -275,8 +268,8 @@ var find = function(array, predicate) {
|
||||
}
|
||||
};
|
||||
|
||||
var mergeObjects = function(main, bck) {
|
||||
for (var prop in bck) {
|
||||
export const mergeObjects = function(main, bck) {
|
||||
for (const prop in bck) {
|
||||
if (!main.hasOwnProperty(prop) && bck.hasOwnProperty(prop)) {
|
||||
main[prop] = bck[prop];
|
||||
}
|
||||
@@ -285,24 +278,14 @@ var mergeObjects = function(main, bck) {
|
||||
return main;
|
||||
};
|
||||
|
||||
var hookVfunc = function(proto, symbol, func) {
|
||||
if (!func) return
|
||||
|
||||
if (Gi.gobject_prototype_symbol && proto[Gi.gobject_prototype_symbol]) {
|
||||
proto[Gi.gobject_prototype_symbol][Gi.hook_up_vfunc_symbol] (symbol, func);
|
||||
} else {
|
||||
proto[Gi.hook_up_vfunc_symbol] (symbol, func);
|
||||
}
|
||||
};
|
||||
|
||||
var getTrackedActorData = (actor) => {
|
||||
export const getTrackedActorData = (actor) => {
|
||||
let trackedIndex = Main.layoutManager._findActor(actor);
|
||||
|
||||
if (trackedIndex >= 0)
|
||||
return Main.layoutManager._trackedActors[trackedIndex]
|
||||
}
|
||||
|
||||
var getTransformedAllocation = function(actor) {
|
||||
export const getTransformedAllocation = function(actor) {
|
||||
let extents = actor.get_transformed_extents();
|
||||
let topLeft = extents.get_top_left();
|
||||
let bottomRight = extents.get_bottom_right();
|
||||
@@ -310,13 +293,13 @@ var getTransformedAllocation = function(actor) {
|
||||
return { x1: topLeft.x, x2: bottomRight.x, y1: topLeft.y, y2: bottomRight.y };
|
||||
};
|
||||
|
||||
var setClip = function(actor, x, y, width, height) {
|
||||
export const setClip = function(actor, x, y, width, height) {
|
||||
actor.set_clip(0, 0, width, height);
|
||||
actor.set_position(x, y);
|
||||
actor.set_size(width, height);
|
||||
};
|
||||
|
||||
var addKeybinding = function(key, settings, handler, modes) {
|
||||
export const addKeybinding = function(key, settings, handler, modes) {
|
||||
if (!Main.wm._allowedKeybindings[key]) {
|
||||
Main.wm.addKeybinding(
|
||||
key,
|
||||
@@ -328,19 +311,19 @@ var addKeybinding = function(key, settings, handler, modes) {
|
||||
}
|
||||
};
|
||||
|
||||
var removeKeybinding = function(key) {
|
||||
export const removeKeybinding = function(key) {
|
||||
if (Main.wm._allowedKeybindings[key]) {
|
||||
Main.wm.removeKeybinding(key);
|
||||
}
|
||||
};
|
||||
|
||||
var getrgbColor = function(color) {
|
||||
color = typeof color === 'string' ? Clutter.color_from_string(color)[1] : color;
|
||||
export const getrgbColor = function(color) {
|
||||
color = typeof color === 'string' ? ColorUtils.color_from_string(color)[1] : color;
|
||||
|
||||
return { red: color.red, green: color.green, blue: color.blue };
|
||||
};
|
||||
|
||||
var getrgbaColor = function(color, alpha, offset) {
|
||||
export const getrgbaColor = function(color, alpha, offset) {
|
||||
if (alpha <= 0) {
|
||||
return 'transparent; ';
|
||||
}
|
||||
@@ -360,14 +343,14 @@ var getrgbaColor = function(color, alpha, offset) {
|
||||
return 'rgba(' + rgb.red + ',' + rgb.green + ',' + rgb.blue + ',' + (Math.floor(alpha * 100) * 0.01) + '); ' ;
|
||||
};
|
||||
|
||||
var checkIfColorIsBright = function(color) {
|
||||
export const checkIfColorIsBright = function(color) {
|
||||
let rgb = getrgbColor(color);
|
||||
let brightness = 0.2126 * rgb.red + 0.7152 * rgb.green + 0.0722 * rgb.blue;
|
||||
|
||||
return brightness > 128;
|
||||
};
|
||||
|
||||
var getMouseScrollDirection = function(event) {
|
||||
export const getMouseScrollDirection = function(event) {
|
||||
let direction;
|
||||
|
||||
switch (event.get_scroll_direction()) {
|
||||
@@ -384,7 +367,7 @@ var getMouseScrollDirection = function(event) {
|
||||
return direction;
|
||||
};
|
||||
|
||||
var checkIfWindowHasTransient = function(window) {
|
||||
export const checkIfWindowHasTransient = function(window) {
|
||||
let hasTransient;
|
||||
|
||||
window.foreach_transient(t => !(hasTransient = true));
|
||||
@@ -392,7 +375,7 @@ var checkIfWindowHasTransient = function(window) {
|
||||
return hasTransient;
|
||||
};
|
||||
|
||||
var activateSiblingWindow = function(windows, direction, startWindow) {
|
||||
export const activateSiblingWindow = function(windows, direction, startWindow) {
|
||||
let windowIndex = windows.indexOf(global.display.focus_window);
|
||||
let nextWindowIndex = windowIndex < 0 ?
|
||||
startWindow ? windows.indexOf(startWindow) : 0 :
|
||||
@@ -409,7 +392,7 @@ var activateSiblingWindow = function(windows, direction, startWindow) {
|
||||
}
|
||||
};
|
||||
|
||||
var animateWindowOpacity = function(window, tweenOpts) {
|
||||
export const animateWindowOpacity = function(window, tweenOpts) {
|
||||
//there currently is a mutter bug with the windowactor opacity, starting with 3.34
|
||||
//https://gitlab.gnome.org/GNOME/mutter/issues/836
|
||||
|
||||
@@ -438,7 +421,7 @@ var animateWindowOpacity = function(window, tweenOpts) {
|
||||
animate(window, tweenOpts);
|
||||
};
|
||||
|
||||
var animate = function(actor, options) {
|
||||
export const animate = function(actor, options) {
|
||||
//the original animations used Tweener instead of Clutter animations, so we
|
||||
//use "time" and "delay" properties defined in seconds, as opposed to Clutter
|
||||
//animations "duration" and "delay" which are defined in milliseconds
|
||||
@@ -471,15 +454,15 @@ var animate = function(actor, options) {
|
||||
actor.ease.apply(actor, params);
|
||||
}
|
||||
|
||||
var isAnimating = function(actor, prop) {
|
||||
export const isAnimating = function(actor, prop) {
|
||||
return !!actor.get_transition(prop);
|
||||
}
|
||||
|
||||
var stopAnimations = function(actor) {
|
||||
export const stopAnimations = function(actor) {
|
||||
actor.remove_all_transitions();
|
||||
}
|
||||
|
||||
var getIndicators = function(delegate) {
|
||||
export const getIndicators = function(delegate) {
|
||||
if (delegate instanceof St.BoxLayout) {
|
||||
return delegate;
|
||||
}
|
||||
@@ -487,11 +470,11 @@ var getIndicators = function(delegate) {
|
||||
return delegate.indicators;
|
||||
}
|
||||
|
||||
var getPoint = function(coords) {
|
||||
return new imports.gi.Graphene.Point(coords);
|
||||
export const getPoint = function(coords) {
|
||||
return new Graphene.Point(coords);
|
||||
}
|
||||
|
||||
var notify = function(text, iconName, action, isTransient) {
|
||||
export const notify = function(text, iconName, action, isTransient) {
|
||||
let source = new MessageTray.SystemNotificationSource();
|
||||
let notification = new MessageTray.Notification(source, 'Dash to Panel', text);
|
||||
let notifyFunc = source.showNotification || source.notify;
|
||||
@@ -522,9 +505,9 @@ var notify = function(text, iconName, action, isTransient) {
|
||||
* it would be clamp to the current one in any case.
|
||||
* Return the amount of shift applied
|
||||
*/
|
||||
var ensureActorVisibleInScrollView = function(scrollView, actor, fadeSize, onComplete) {
|
||||
let vadjustment = scrollView.vscroll.adjustment;
|
||||
let hadjustment = scrollView.hscroll.adjustment;
|
||||
export const ensureActorVisibleInScrollView = function(scrollView, actor, fadeSize, onComplete) {
|
||||
const vadjustment = scrollView.vadjustment;
|
||||
const hadjustment = scrollView.hadjustment;
|
||||
let [vvalue, vlower, vupper, vstepIncrement, vpageIncrement, vpageSize] = vadjustment.get_values();
|
||||
let [hvalue, hlower, hupper, hstepIncrement, hpageIncrement, hpageSize] = hadjustment.get_values();
|
||||
|
||||
@@ -579,7 +562,12 @@ var ensureActorVisibleInScrollView = function(scrollView, actor, fadeSize, onCom
|
||||
/**
|
||||
* ColorUtils is adapted from https://github.com/micheleg/dash-to-dock
|
||||
*/
|
||||
var ColorUtils = {
|
||||
let colorNs = Clutter.Color ? Clutter : Cogl
|
||||
|
||||
export const ColorUtils = {
|
||||
color_from_string: colorNs.color_from_string,
|
||||
Color: colorNs.Color,
|
||||
|
||||
colorLuminance(r, g, b, dlum) {
|
||||
// Darken or brighten color by a fraction dlum
|
||||
// Each rgb value is modified by the same fraction.
|
||||
@@ -690,7 +678,7 @@ const MAX_CACHED_ITEMS = 1000;
|
||||
const BATCH_SIZE_TO_DELETE = 50;
|
||||
const DOMINANT_COLOR_ICON_SIZE = 64;
|
||||
|
||||
var DominantColorExtractor = class {
|
||||
export const DominantColorExtractor = class {
|
||||
|
||||
constructor(app){
|
||||
this._app = app;
|
||||
@@ -701,14 +689,9 @@ var DominantColorExtractor = class {
|
||||
*/
|
||||
_getIconPixBuf() {
|
||||
let iconTexture = this._app.create_icon_texture(16);
|
||||
let isGtk3 = !!Gtk.IconTheme.prototype.set_custom_theme;
|
||||
|
||||
if (themeLoader === null) {
|
||||
let ifaceSettings = new Gio.Settings({ schema: "org.gnome.desktop.interface" });
|
||||
let themeFunc = isGtk3 ? 'set_custom_theme' : 'set_theme_name';
|
||||
|
||||
themeLoader = new Gtk.IconTheme(),
|
||||
themeLoader[themeFunc](ifaceSettings.get_string('icon-theme')); // Make sure the correct theme is loaded
|
||||
themeLoader = new St.IconTheme();
|
||||
}
|
||||
|
||||
// Unable to load the icon texture, use fallback
|
||||
@@ -730,19 +713,11 @@ var DominantColorExtractor = class {
|
||||
|
||||
// Get the pixel buffer from the icon theme
|
||||
if (iconTexture instanceof Gio.ThemedIcon) {
|
||||
let params = [iconTexture.get_names()[0], DOMINANT_COLOR_ICON_SIZE, 0];
|
||||
|
||||
if (!isGtk3) {
|
||||
params.splice(1, 0, null);
|
||||
params.splice(3, 1, 1, 1, 1);
|
||||
}
|
||||
|
||||
let icon_info = themeLoader.lookup_icon.apply(themeLoader, params);
|
||||
let icon_info = themeLoader.lookup_icon(iconTexture.get_names()[0],
|
||||
DOMINANT_COLOR_ICON_SIZE, 0);
|
||||
|
||||
if (icon_info !== null) {
|
||||
if (isGtk3) return icon_info.load_icon();
|
||||
|
||||
return GdkPixbuf.Pixbuf.new_from_file(icon_info.get_file().get_path());
|
||||
return icon_info.load_icon();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -880,7 +855,7 @@ var DominantColorExtractor = class {
|
||||
|
||||
};
|
||||
|
||||
var drawRoundedLine = function(cr, x, y, width, height, isRoundLeft, isRoundRight, stroke, fill) {
|
||||
export const drawRoundedLine = function(cr, x, y, width, height, isRoundLeft, isRoundRight, stroke, fill) {
|
||||
if (height > width) {
|
||||
y += Math.floor((height - width) / 2.0);
|
||||
height = width;
|
||||
@@ -888,8 +863,8 @@ var drawRoundedLine = function(cr, x, y, width, height, isRoundLeft, isRoundRigh
|
||||
|
||||
height = 2.0 * Math.floor(height / 2.0);
|
||||
|
||||
var leftRadius = isRoundLeft ? height / 2.0 : 0.0;
|
||||
var rightRadius = isRoundRight ? height / 2.0 : 0.0;
|
||||
const leftRadius = isRoundLeft ? height / 2.0 : 0.0;
|
||||
const rightRadius = isRoundRight ? height / 2.0 : 0.0;
|
||||
|
||||
cr.moveTo(x + width - rightRadius, y);
|
||||
cr.lineTo(x + leftRadius, y);
|
||||
@@ -912,28 +887,3 @@ var drawRoundedLine = function(cr, x, y, width, height, isRoundLeft, isRoundRigh
|
||||
cr.setSource(stroke);
|
||||
cr.stroke();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if an app exists in the system.
|
||||
*/
|
||||
var checkedCommandsMap = new Map();
|
||||
|
||||
function checkIfCommandExists(app) {
|
||||
let answer = checkedCommandsMap.get(app);
|
||||
if (answer === undefined) {
|
||||
// Command is a shell built in, use shell to call it.
|
||||
// Quotes around app value are important. They let command operate
|
||||
// on the whole value, instead of having shell interpret it.
|
||||
let cmd = "sh -c 'command -v \"" + app + "\"'";
|
||||
try {
|
||||
let out = GLib.spawn_command_line_sync(cmd);
|
||||
// out contains 1: stdout, 2: stderr, 3: exit code
|
||||
answer = out[3] == 0;
|
||||
} catch (ex) {
|
||||
answer = false;
|
||||
}
|
||||
|
||||
checkedCommandsMap.set(app, answer);
|
||||
}
|
||||
return answer;
|
||||
}
|
||||
|
||||
@@ -18,24 +18,19 @@
|
||||
* This file is based on code from the Dash to Panel extension
|
||||
*/
|
||||
|
||||
const GObject = imports.gi.GObject;
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Graphene = imports.gi.Graphene;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const Main = imports.ui.main;
|
||||
const Mainloop = imports.mainloop;
|
||||
const Meta = imports.gi.Meta;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
const Signals = imports.signals;
|
||||
const St = imports.gi.St;
|
||||
const WindowManager = imports.ui.windowManager;
|
||||
const Workspace = imports.ui.workspace;
|
||||
import GObject from 'gi://GObject';
|
||||
import Clutter from 'gi://Clutter';
|
||||
import GLib from 'gi://GLib';
|
||||
import Graphene from 'gi://Graphene';
|
||||
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||
import Meta from 'gi://Meta';
|
||||
import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
|
||||
import St from 'gi://St';
|
||||
|
||||
const Me = imports.misc.extensionUtils.getCurrentExtension();
|
||||
const Panel = Me.imports.panel;
|
||||
const Taskbar = Me.imports.taskbar;
|
||||
const Utils = Me.imports.utils;
|
||||
import * as Taskbar from './taskbar.js';
|
||||
import * as Utils from './utils.js';
|
||||
import {SETTINGS} from './extension.js';
|
||||
import {gettext as _} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||
|
||||
//timeout intervals
|
||||
const ENSURE_VISIBLE_MS = 200;
|
||||
@@ -74,7 +69,7 @@ let scaleFactor = 1;
|
||||
let animationTime = 0;
|
||||
let aspectRatio = {};
|
||||
|
||||
var PreviewMenu = GObject.registerClass({
|
||||
export const PreviewMenu = GObject.registerClass({
|
||||
Signals: { 'open-state-changed': {} }
|
||||
}, class PreviewMenu extends St.Widget {
|
||||
|
||||
@@ -108,13 +103,13 @@ var PreviewMenu = GObject.registerClass({
|
||||
this._box = new St.BoxLayout({ vertical: this.isVertical });
|
||||
this._scrollView = new St.ScrollView({
|
||||
name: 'zorintaskbarPreviewScrollview',
|
||||
hscrollbar_policy: Gtk.PolicyType.NEVER,
|
||||
vscrollbar_policy: Gtk.PolicyType.NEVER,
|
||||
hscrollbar_policy: St.PolicyType.NEVER,
|
||||
vscrollbar_policy: St.PolicyType.NEVER,
|
||||
enable_mouse_scrolling: true,
|
||||
y_expand: !this.isVertical
|
||||
});
|
||||
|
||||
this._scrollView.add_actor(this._box);
|
||||
this._scrollView.add_child(this._box);
|
||||
this.menu.add_child(this._scrollView);
|
||||
this.add_child(this.menu);
|
||||
}
|
||||
@@ -157,7 +152,7 @@ var PreviewMenu = GObject.registerClass({
|
||||
}
|
||||
],
|
||||
[
|
||||
Me.settings,
|
||||
SETTINGS,
|
||||
[
|
||||
'changed::panel-sizes',
|
||||
'changed::window-preview-size'
|
||||
@@ -275,7 +270,7 @@ var PreviewMenu = GObject.registerClass({
|
||||
requestPeek(window) {
|
||||
this._timeoutsHandler.remove(T3);
|
||||
|
||||
if (Me.settings.get_boolean('peek-mode')) {
|
||||
if (SETTINGS.get_boolean('peek-mode')) {
|
||||
if (this.peekInitialWorkspaceIndex < 0) {
|
||||
this._timeoutsHandler.add([T3, ENTER_PEEK_MODE_TIMEOUT, () => this._peek(window)]);
|
||||
} else {
|
||||
@@ -448,7 +443,7 @@ var PreviewMenu = GObject.registerClass({
|
||||
let x, y, w;
|
||||
let geom = this.panel.getGeometry();
|
||||
let panelBoxTheme = this.panel.panelBox.get_theme_node();
|
||||
let previewSize = (Me.settings.get_int('window-preview-size') +
|
||||
let previewSize = (SETTINGS.get_int('window-preview-size') +
|
||||
WINDOW_PREVIEW_PADDING * 2) * scaleFactor;
|
||||
|
||||
if (this.isVertical) {
|
||||
@@ -526,7 +521,7 @@ var PreviewMenu = GObject.registerClass({
|
||||
}
|
||||
|
||||
_getScrollAdjustmentValues() {
|
||||
let [value , , upper, , , pageSize] = this._scrollView[(this.isVertical ? 'v' : 'h') + 'scroll'].adjustment.get_values();
|
||||
let [value , , upper, , , pageSize] = this._scrollView[(this.isVertical ? 'v' : 'h') + 'adjustment'].get_values();
|
||||
|
||||
return [value, upper, pageSize];
|
||||
}
|
||||
@@ -717,7 +712,7 @@ var PreviewMenu = GObject.registerClass({
|
||||
}
|
||||
});
|
||||
|
||||
var Preview = GObject.registerClass({
|
||||
export const Preview = GObject.registerClass({
|
||||
}, class Preview extends St.Widget {
|
||||
|
||||
_init(previewMenu) {
|
||||
@@ -741,7 +736,7 @@ var Preview = GObject.registerClass({
|
||||
let [previewBinWidth, previewBinHeight] = this._getBinSize();
|
||||
let closeButton = new St.Button({ style_class: 'window-close', accessible_name: 'Close window' });
|
||||
|
||||
closeButton.add_actor(new St.Icon({ icon_name: 'window-close-symbolic' }));
|
||||
closeButton.add_child(new St.Icon({ icon_name: 'window-close-symbolic' }));
|
||||
|
||||
this._closeButtonBin = new St.Widget({
|
||||
style_class: 'preview-close-btn-container',
|
||||
@@ -827,12 +822,14 @@ var Preview = GObject.registerClass({
|
||||
this._addClone(cloneBin, animateSize);
|
||||
this._previewMenu.updatePosition();
|
||||
} else if (!this._waitWindowId) {
|
||||
this._waitWindowId = Mainloop.idle_add(() => {
|
||||
this._waitWindowId = GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, () => {
|
||||
this._waitWindowId = 0;
|
||||
|
||||
if (this._previewMenu.opened) {
|
||||
_assignWindowClone();
|
||||
}
|
||||
|
||||
return GLib.SOURCE_REMOVE;
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -900,7 +897,7 @@ var Preview = GObject.registerClass({
|
||||
this._hideOrShowCloseButton(true);
|
||||
this.reactive = false;
|
||||
|
||||
if (!Me.settings.get_boolean('group-apps')) {
|
||||
if (!SETTINGS.get_boolean('group-apps')) {
|
||||
this._previewMenu.close();
|
||||
} else {
|
||||
this._previewMenu.endPeekHere();
|
||||
@@ -915,7 +912,7 @@ var Preview = GObject.registerClass({
|
||||
this.activate();
|
||||
break;
|
||||
case 2: // Middle click
|
||||
if (Me.settings.get_boolean('preview-middle-click-close')) {
|
||||
if (SETTINGS.get_boolean('preview-middle-click-close')) {
|
||||
this._onCloseBtnClick();
|
||||
}
|
||||
break;
|
||||
@@ -1090,7 +1087,7 @@ var Preview = GObject.registerClass({
|
||||
}
|
||||
|
||||
_getPreviewDimensions() {
|
||||
let size = Me.settings.get_int('window-preview-size') * scaleFactor;
|
||||
let size = SETTINGS.get_int('window-preview-size') * scaleFactor;
|
||||
let w, h;
|
||||
|
||||
if (this._previewMenu.isVertical) {
|
||||
@@ -1105,7 +1102,7 @@ var Preview = GObject.registerClass({
|
||||
}
|
||||
});
|
||||
|
||||
var WindowCloneLayout = GObject.registerClass({
|
||||
export const WindowCloneLayout = GObject.registerClass({
|
||||
}, class WindowCloneLayout extends Clutter.BinLayout {
|
||||
|
||||
_init(frameRect, bufferRect) {
|
||||
@@ -1133,11 +1130,11 @@ var WindowCloneLayout = GObject.registerClass({
|
||||
}
|
||||
});
|
||||
|
||||
function setStyle(actor, style) {
|
||||
export function setStyle(actor, style) {
|
||||
actor.set_style(style);
|
||||
}
|
||||
|
||||
function getTweenOpts(opts) {
|
||||
export function getTweenOpts(opts) {
|
||||
let defaults = {
|
||||
time: animationTime,
|
||||
transition: 'easeInOutQuad'
|
||||
|
||||
Reference in New Issue
Block a user