Fixed notification badge sizing on 200% scaled displays
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
.~
|
||||
*~
|
||||
gschemas.compiled
|
||||
zorin-taskbar@zorinos.com*.zip
|
||||
*.mo
|
||||
po/zorin-taskbar.pot
|
||||
Settings.ui.h
|
||||
@@ -0,0 +1,96 @@
|
||||
# Basic Makefile
|
||||
|
||||
UUID = zorin-taskbar@zorinos.com
|
||||
BASE_MODULES = extension.js stylesheet.css metadata.json COPYING README.md
|
||||
EXTRA_MODULES = appIcons.js convenience.js panel.js panelManager.js proximity.js intellihide.js progress.js panelPositions.js panelStyle.js overview.js taskbar.js transparency.js windowPreview.js prefs.js utils.js Settings.ui
|
||||
EXTRA_IMAGES = show-desktop-symbolic.svg
|
||||
|
||||
TOLOCALIZE = prefs.js appIcons.js
|
||||
MSGSRC = $(wildcard po/*.po)
|
||||
ifeq ($(strip $(DESTDIR)),)
|
||||
INSTALLBASE = $(HOME)/.local/share/gnome-shell/extensions
|
||||
else
|
||||
INSTALLBASE = $(DESTDIR)/usr/share/gnome-shell/extensions
|
||||
endif
|
||||
INSTALLNAME = zorin-taskbar@zorinos.com
|
||||
|
||||
# The command line passed variable VERSION is used to set the version string
|
||||
# in the metadata and in the generated zip-file.
|
||||
ifdef VERSION
|
||||
else
|
||||
VERSION = 40
|
||||
endif
|
||||
|
||||
ifdef TARGET
|
||||
FILESUFFIX = _v$(VERSION)_$(TARGET)
|
||||
else
|
||||
FILESUFFIX = _v$(VERSION)
|
||||
endif
|
||||
|
||||
all: extension
|
||||
|
||||
clean:
|
||||
rm -f ./schemas/gschemas.compiled
|
||||
|
||||
extension: ./schemas/gschemas.compiled $(MSGSRC:.po=.mo)
|
||||
|
||||
./schemas/gschemas.compiled: ./schemas/org.gnome.shell.extensions.zorin-taskbar.gschema.xml
|
||||
glib-compile-schemas ./schemas/
|
||||
|
||||
potfile: ./po/zorin-taskbar.pot
|
||||
|
||||
mergepo: potfile
|
||||
for l in $(MSGSRC); do \
|
||||
msgmerge -U $$l ./po/zorin-taskbar.pot; \
|
||||
done;
|
||||
|
||||
./po/zorin-taskbar.pot: $(TOLOCALIZE) Settings.ui
|
||||
mkdir -p po
|
||||
xgettext -k_ -kN_ -o po/zorin-taskbar.pot --package-name "Zorin Taskbar" $(TOLOCALIZE)
|
||||
intltool-extract --type=gettext/glade Settings.ui
|
||||
xgettext -k_ -kN_ --join-existing -o po/zorin-taskbar.pot Settings.ui.h
|
||||
|
||||
./po/%.mo: ./po/%.po
|
||||
msgfmt -c $< -o $@
|
||||
|
||||
install: install-local
|
||||
|
||||
install-local: _build
|
||||
rm -rf $(INSTALLBASE)/$(INSTALLNAME)
|
||||
mkdir -p $(INSTALLBASE)/$(INSTALLNAME)
|
||||
cp -r ./_build/* $(INSTALLBASE)/$(INSTALLNAME)/
|
||||
-rm -fR _build
|
||||
echo done
|
||||
|
||||
zip-file: _build
|
||||
cd _build ; \
|
||||
zip -qr "$(UUID)$(FILESUFFIX).zip" .
|
||||
mv _build/$(UUID)$(FILESUFFIX).zip ./
|
||||
-rm -fR _build
|
||||
|
||||
_build: all
|
||||
-rm -fR ./_build
|
||||
mkdir -p _build
|
||||
cp $(BASE_MODULES) $(EXTRA_MODULES) _build
|
||||
|
||||
ifeq ($(TARGET),ego)
|
||||
find _build -name '*.js' -exec sed -i '/\/\/!start-update/,/\/\/!end-update/d' {} +
|
||||
endif
|
||||
|
||||
mkdir -p _build/img
|
||||
cd img ; cp $(EXTRA_IMAGES) ../_build/img/
|
||||
mkdir -p _build/schemas
|
||||
cp schemas/*.xml _build/schemas/
|
||||
cp schemas/gschemas.compiled _build/schemas/
|
||||
mkdir -p _build/locale
|
||||
for l in $(MSGSRC:.po=.mo) ; do \
|
||||
lf=_build/locale/`basename $$l .mo`; \
|
||||
mkdir -p $$lf; \
|
||||
mkdir -p $$lf/LC_MESSAGES; \
|
||||
cp $$l $$lf/LC_MESSAGES/zorin-taskbar.mo; \
|
||||
done;
|
||||
ifneq ($(and $(COMMIT),$(VERSION)),)
|
||||
sed -i 's/"version": [[:digit:]][[:digit:]]*/"version": $(VERSION),\n"commit": "$(COMMIT)"/' _build/metadata.json;
|
||||
else ifneq ($(VERSION),)
|
||||
sed -i 's/"version": [[:digit:]][[:digit:]]*/"version": $(VERSION)/' _build/metadata.json;
|
||||
endif
|
||||
@@ -1,4 +1,4 @@
|
||||
# Zorin Taskbar
|
||||
The official taskbar for Zorin OS.
|
||||
|
||||
Based on the [Dash to Dock](https://github.com/micheleg/dash-to-dock) Gnome Shell extension by micheleg.
|
||||
Based on the [Dash to Panel](https://github.com/home-sweet-gnome/dash-to-panel) Gnome Shell extension and the [Dash to Dock](https://github.com/micheleg/dash-to-dock) extension by micheleg.
|
||||
|
||||
+3159
File diff suppressed because it is too large
Load Diff
+1736
File diff suppressed because it is too large
Load Diff
+61
-75
@@ -1,10 +1,9 @@
|
||||
/*
|
||||
* Taskbar: A taskbar extension for the Gnome panel.
|
||||
* Copyright (C) 2016 Zorin OS
|
||||
* This file is part of the Zorin Taskbar extension for Zorin OS.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
@@ -17,87 +16,74 @@
|
||||
*
|
||||
*
|
||||
* Credits:
|
||||
* This file is based on code from the Dash to Dock extension by micheleg.
|
||||
* This file is based on code from the Dash to Dock extension by micheleg
|
||||
* and code from the Dash to Panel extension
|
||||
* Some code was also adapted from the upstream Gnome Shell source code.
|
||||
*/
|
||||
|
||||
const Config = imports.misc.config;
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
const Gettext = imports.gettext;
|
||||
const Gio = imports.gi.Gio;
|
||||
|
||||
const Lang = imports.lang;
|
||||
/**
|
||||
* initTranslations:
|
||||
* @domain: (optional): the gettext domain to use
|
||||
*
|
||||
* Initialize Gettext to load translations from extensionsdir/locale.
|
||||
* If @domain is not provided, it will be taken from metadata['gettext-domain']
|
||||
*/
|
||||
function initTranslations(domain) {
|
||||
let extension = ExtensionUtils.getCurrentExtension();
|
||||
|
||||
domain = domain || extension.metadata['gettext-domain'];
|
||||
|
||||
// simplify global signals and function injections handling
|
||||
// abstract class
|
||||
const BasicHandler = new Lang.Class({
|
||||
Name: 'Taskbar.BasicHandler',
|
||||
// Check if this extension was built with "make zip-file", and thus
|
||||
// has the locale files in a subfolder
|
||||
// otherwise assume that extension has been installed in the
|
||||
// same prefix as gnome-shell
|
||||
let localeDir = extension.dir.get_child('locale');
|
||||
if (localeDir.query_exists(null))
|
||||
Gettext.bindtextdomain(domain, localeDir.get_path());
|
||||
else
|
||||
Gettext.bindtextdomain(domain, Config.LOCALEDIR);
|
||||
}
|
||||
|
||||
_init: function(){
|
||||
this._storage = new Object();
|
||||
},
|
||||
/**
|
||||
* getSettings:
|
||||
* @schema: (optional): the GSettings schema id
|
||||
*
|
||||
* Builds and return a GSettings schema for @schema, using schema files
|
||||
* in extensionsdir/schemas. If @schema is not provided, it is taken from
|
||||
* metadata['settings-schema'].
|
||||
*/
|
||||
function getSettings(schema) {
|
||||
let extension = ExtensionUtils.getCurrentExtension();
|
||||
|
||||
add: function(/*unlimited 3-long array arguments*/){
|
||||
schema = schema || extension.metadata['settings-schema'];
|
||||
|
||||
// convert arguments object to array, concatenate with generic
|
||||
let args = Array.concat('generic', Array.slice(arguments));
|
||||
// call addWithLabel with ags as if they were passed arguments
|
||||
this.addWithLabel.apply(this, args);
|
||||
},
|
||||
const GioSSS = Gio.SettingsSchemaSource;
|
||||
|
||||
destroy: function() {
|
||||
for( let label in this._storage )
|
||||
this.removeWithLabel(label);
|
||||
},
|
||||
// Check if this extension was built with "make zip-file", and thus
|
||||
// has the schema files in a subfolder
|
||||
// otherwise assume that extension has been installed in the
|
||||
// same prefix as gnome-shell (and therefore schemas are available
|
||||
// in the standard folders)
|
||||
let schemaDir = extension.dir.get_child('schemas');
|
||||
let schemaSource;
|
||||
if (schemaDir.query_exists(null))
|
||||
schemaSource = GioSSS.new_from_directory(schemaDir.get_path(),
|
||||
GioSSS.get_default(),
|
||||
false);
|
||||
else
|
||||
schemaSource = GioSSS.get_default();
|
||||
|
||||
addWithLabel: function( label /* plus unlimited 3-long array arguments*/) {
|
||||
let schemaObj = schemaSource.lookup(schema, true);
|
||||
if (!schemaObj)
|
||||
throw new Error('Schema ' + schema + ' could not be found for extension '
|
||||
+ extension.metadata.uuid + '. Please check your installation.');
|
||||
|
||||
if(this._storage[label] == undefined)
|
||||
this._storage[label] = new Array();
|
||||
|
||||
// skip first element of the arguments
|
||||
for( let i = 1; i < arguments.length; i++ ) {
|
||||
this._storage[label].push( this._create(arguments[i]) );
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
removeWithLabel: function(label){
|
||||
|
||||
if(this._storage[label]) {
|
||||
for( let i = 0; i < this._storage[label].length; i++ ) {
|
||||
this._remove(this._storage[label][i]);
|
||||
}
|
||||
|
||||
delete this._storage[label];
|
||||
}
|
||||
},
|
||||
|
||||
/* Virtual methods to be implemented by subclass */
|
||||
// create single element to be stored in the storage structure
|
||||
_create: function(item){
|
||||
throw new Error('no implementation of _create in ' + this);
|
||||
},
|
||||
|
||||
// correctly delete single element
|
||||
_remove: function(item){
|
||||
throw new Error('no implementation of _remove in ' + this);
|
||||
}
|
||||
});
|
||||
|
||||
// Manage global signals
|
||||
const GlobalSignalsHandler = new Lang.Class({
|
||||
Name: 'Taskbar.GlobalSignalsHandler',
|
||||
Extends: BasicHandler,
|
||||
|
||||
_create: function(item) {
|
||||
|
||||
let object = item[0];
|
||||
let event = item[1];
|
||||
let callback = item[2]
|
||||
let id = object.connect(event, callback);
|
||||
|
||||
return [object, id];
|
||||
},
|
||||
|
||||
_remove: function(item){
|
||||
item[0].disconnect(item[1]);
|
||||
}
|
||||
});
|
||||
return new Gio.Settings({
|
||||
settings_schema: schemaObj
|
||||
});
|
||||
}
|
||||
|
||||
Vendored
+328
@@ -0,0 +1,328 @@
|
||||
gnome-shell-extension-zorin-taskbar (40.17) focal; urgency=medium
|
||||
|
||||
* Fixed notification badge sizing on 200% scaled displays
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Wed, 21 Jul 2021 13:00:25 +0100
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (40.16) focal; urgency=medium
|
||||
|
||||
* Fixed bug that caused the panel to disappear after locking the
|
||||
screen while fullscreen content is playing
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Wed, 02 Jun 2021 20:24:27 +0100
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (40.15) focal; urgency=medium
|
||||
|
||||
* Updated translations
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Sun, 23 May 2021 20:32:41 +0100
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (40.14) focal; urgency=medium
|
||||
|
||||
* Fixed new translations
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Sun, 23 May 2021 20:26:18 +0100
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (40.13) focal; urgency=medium
|
||||
|
||||
* Added new translations and made the main panel always appear on the
|
||||
primary display
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Sun, 23 May 2021 20:03:46 +0100
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (40.12) focal; urgency=medium
|
||||
|
||||
* Updated Russian and Japanese translations
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Wed, 05 May 2021 20:10:48 +0100
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (40.11) focal; urgency=medium
|
||||
|
||||
* No longer animates disposed icons
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Tue, 06 Apr 2021 13:13:47 +0100
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (40.10) focal; urgency=medium
|
||||
|
||||
* Added Zorin Appearance link to taskbar right-click menu
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Tue, 23 Mar 2021 19:36:07 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (40.9) focal; urgency=medium
|
||||
|
||||
* Removed Terminal from right-click menu
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Mon, 22 Mar 2021 15:38:20 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (40.8) focal; urgency=medium
|
||||
|
||||
* Removed dot style settings and moved Intellihide to Style tab in
|
||||
prefs
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Sun, 21 Mar 2021 15:08:03 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (40.7) focal; urgency=medium
|
||||
|
||||
* Removed style override for app-well-app items
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Sun, 21 Feb 2021 20:00:12 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (40.6) focal; urgency=medium
|
||||
|
||||
* Improved styling of progress bars
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Sun, 21 Feb 2021 15:54:07 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (40.5) focal; urgency=medium
|
||||
|
||||
* Re-based on upstream as at commit
|
||||
e4a71fa014b565171c93d15f436be9c3599b11fb
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Sun, 21 Feb 2021 15:22:52 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (40.4) focal; urgency=medium
|
||||
|
||||
* Updated notification badge overlay and limited minimum panel size to
|
||||
24px
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Sun, 21 Feb 2021 15:02:09 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (40.3) focal; urgency=medium
|
||||
|
||||
* Increased border radius of floating panel and preview container
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Sun, 21 Feb 2021 00:50:25 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (40.2) focal; urgency=medium
|
||||
|
||||
* Imporved visibility of window previews by styling them with the dash-
|
||||
label class
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Thu, 31 Dec 2020 18:34:46 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (40.1) focal; urgency=medium
|
||||
|
||||
* Added floating rounded theme when using Intellihide
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Wed, 30 Dec 2020 00:44:32 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (40) focal; urgency=medium
|
||||
|
||||
* Re-based on upstream version 40 as at commit
|
||||
48a69e529614d1da456802b818e7d7f0d4d1d642
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Mon, 28 Dec 2020 22:08:11 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (2.0.11) bionic; urgency=medium
|
||||
|
||||
* Set variables to 0 on destroy in taskbar.js
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Tue, 19 Feb 2019 18:35:40 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (2.0.10) bionic; urgency=medium
|
||||
|
||||
* Fixed bugs with windowPreview peek mode
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Fri, 15 Feb 2019 00:13:19 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (2.0.9) bionic; urgency=medium
|
||||
|
||||
* Fixed touch support in Gnome Shell 3.30 and made touching an app
|
||||
icon show its window preview if more than one window is opened
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Thu, 14 Feb 2019 13:27:40 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (2.0.8) bionic; urgency=medium
|
||||
|
||||
* Added definition check when getting taskbar icons
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Tue, 05 Feb 2019 18:17:32 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (2.0.7) bionic; urgency=medium
|
||||
|
||||
* Fixed _dragInfo definition check
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Tue, 05 Feb 2019 14:45:45 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (2.0.6) bionic; urgency=medium
|
||||
|
||||
* Fixed name of Taskbar Actor
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Sat, 12 Jan 2019 18:35:19 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (2.0.5) bionic; urgency=medium
|
||||
|
||||
* Re-based on Dash to Panel as at commit
|
||||
b6094fdaec89349cc6f3e0da887d19fdf3db1c60
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Sat, 12 Jan 2019 16:02:44 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (2.0.4) bionic; urgency=medium
|
||||
|
||||
* Re-based on Dash to Panel as at commit
|
||||
6e53889082eef4eed9cdc1c496e90a6f8450d1fd
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Fri, 11 Jan 2019 16:41:36 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (2.0.3) bionic; urgency=medium
|
||||
|
||||
* Re-based on Dash to Panel as at commit
|
||||
8e715c7b07d30bfe0858a1eb93638c653b8bd268
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Tue, 08 Jan 2019 18:46:52 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (2.0.2) bionic; urgency=medium
|
||||
|
||||
* Re-based on Dash to Panel as at commit
|
||||
dcd8a017e2a9ae66518ade2ae7a74d9836dd3633
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Thu, 03 Jan 2019 14:27:47 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (2.0.1) bionic; urgency=medium
|
||||
|
||||
* Updated URL in metadata.json
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Mon, 31 Dec 2018 14:27:13 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (2.0) bionic; urgency=medium
|
||||
|
||||
* Re-based on Dash to Panel commit
|
||||
e2eeb0290152bdf9ea3a9643ce6d36d8ba12813d
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Sun, 30 Dec 2018 18:44:22 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (1.4.4) xenial; urgency=medium
|
||||
|
||||
* Re-based on Dash to Panel version 13
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Wed, 07 Mar 2018 15:16:36 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (1.4.3) xenial; urgency=medium
|
||||
|
||||
* Fixed window preview issue with Remmina
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Tue, 06 Mar 2018 22:37:07 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (1.4.2) xenial; urgency=medium
|
||||
|
||||
* Various bug fixes
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Tue, 06 Mar 2018 20:44:12 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (1.4.1) xenial; urgency=medium
|
||||
|
||||
* Added more required imports
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Tue, 06 Mar 2018 11:22:48 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (1.4) xenial; urgency=medium
|
||||
|
||||
* Re-based on Dash to Panel version 12
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Tue, 06 Mar 2018 01:25:06 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (1.3) xenial; urgency=medium
|
||||
|
||||
* Added opacify peek on window preview hover
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Fri, 28 Jul 2017 00:40:19 +0100
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (1.2.1) xenial; urgency=medium
|
||||
|
||||
* Removed window preview opening animation
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Fri, 14 Apr 2017 20:05:44 +0100
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (1.2) xenial; urgency=medium
|
||||
|
||||
* Re-based on Dash to Panel commit
|
||||
1415cbdf5cadff94f4d9483b4b77676a3a2ea8d1
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Tue, 11 Apr 2017 22:16:41 +0100
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (1.1.5) xenial; urgency=medium
|
||||
|
||||
* Enabled opening animations for window previews
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Thu, 12 Jan 2017 11:54:50 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (1.1.4) xenial; urgency=medium
|
||||
|
||||
* App running indicators now appear on top when the panel is on top
|
||||
and bug fixes
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Wed, 11 Jan 2017 12:46:23 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (1.1.3) xenial; urgency=medium
|
||||
|
||||
* Fixed another high CPU usage issue – credit to jderose9
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Tue, 10 Jan 2017 22:01:51 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (1.1.2) xenial; urgency=medium
|
||||
|
||||
* Reduced CPU usage – credit to jderose9 – and improved the
|
||||
responsiveness of DPI changes
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Tue, 10 Jan 2017 12:40:58 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (1.1.1) xenial; urgency=medium
|
||||
|
||||
* Removed window preview menu enter timeout to fix keygrab focus
|
||||
lockup bug and make the taskbar experience faster
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Sun, 08 Jan 2017 20:02:26 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (1.1) xenial; urgency=medium
|
||||
|
||||
* Added full support for HiDPI displays
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Mon, 02 Jan 2017 00:28:46 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (1.0.6) xenial; urgency=medium
|
||||
|
||||
* Fixed a number of memory leaks in the Window Preview code
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Tue, 27 Dec 2016 15:53:08 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (1.0.5) xenial; urgency=medium
|
||||
|
||||
* Updated copyright notices
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Fri, 04 Nov 2016 14:34:48 +0000
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (1.0.4) xenial; urgency=medium
|
||||
|
||||
* Disconnected signals
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Sun, 23 Oct 2016 13:43:35 +0100
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (1.0.3) xenial; urgency=medium
|
||||
|
||||
* Fixed Work ID issue
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Thu, 20 Oct 2016 22:59:07 +0100
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (1.0.2) xenial; urgency=medium
|
||||
|
||||
* Ready for public use in Zorin OS 12
|
||||
|
||||
-- Artyom Zorin <azorin@zoringroup.com> Sun, 18 Sep 2016 20:24:18 +0100
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (1.0.1) xenial; urgency=medium
|
||||
|
||||
* Updated copyright notice
|
||||
|
||||
-- Zorin OS <os@zoringroup.com> Mon, 12 Sep 2016 19:23:04 +0100
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (1.0) xenial; urgency=medium
|
||||
|
||||
* Initial stable release
|
||||
|
||||
-- Zorin OS <os@zoringroup.com> Sat, 03 Sep 2016 23:19:10 +0100
|
||||
|
||||
gnome-shell-extension-zorin-taskbar (0.9) xenial; urgency=low
|
||||
|
||||
* Pre-release
|
||||
|
||||
-- Zorin OS <os@zoringroup.com> Fri, 02 Sep 2016 10:47:51 -0400
|
||||
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
Source: gnome-shell-extension-zorin-taskbar
|
||||
Section: gnome
|
||||
Priority: optional
|
||||
Maintainer: Artyom Zorin <azorin@zoringroup.com>
|
||||
Build-Depends: debhelper-compat (= 12), libglib2.0-bin, zip
|
||||
Standards-Version: 4.5.0
|
||||
Rules-Requires-Root: no
|
||||
|
||||
Package: gnome-shell-extension-zorin-taskbar
|
||||
Architecture: all
|
||||
Depends: ${misc:Depends}, gnome-shell (>= 3.18)
|
||||
Description: Zorin Taskbar extension
|
||||
A taskbar extension for the Zorin Desktop environment.
|
||||
Vendored
+73
@@ -0,0 +1,73 @@
|
||||
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: gnome-shell-extension-zorin-taskbar
|
||||
|
||||
Files: *
|
||||
Copyright: 2016-2020, Jason DeRose (https://github.com/jderose9)
|
||||
2016-2020, Zorin OS Technologies Ltd.
|
||||
License: GPL-2+
|
||||
|
||||
Files: po/cs.po
|
||||
Copyright: 2017-2018 Milan Zink <zeten30@gmail.com>
|
||||
License: GPL-2+
|
||||
|
||||
Files: po/es.po
|
||||
Copyright: 2017 Fran Glais <franglais125@gmail.com>
|
||||
License: GPL-2+
|
||||
|
||||
Files: po/gl.po
|
||||
Copyright: 2020 Fran Dieguez <frandieguez@gnome.org>
|
||||
License: GPL-2+
|
||||
|
||||
Files: po/pt_BR.po
|
||||
Copyright: 2017 Fábio Nogueira <fnogueira@gnome.org>
|
||||
License: GPL-2+
|
||||
|
||||
Files: po/ru.po
|
||||
Copyright: 2017 Alex Gluck <alexgluck@bk.ru>
|
||||
License: GPL-2+
|
||||
|
||||
Files: po/hu.po
|
||||
Copyright: 2017 Balázs Úr <urbalazs@gmail.com>
|
||||
License: GPL-2+
|
||||
|
||||
Files: po/it.po
|
||||
Copyright: 2018 Enrico Bella <enricobe@hotmail.com>
|
||||
License: GPL-2+
|
||||
|
||||
Files: po/ja.po
|
||||
Copyright: 2017-2018 Shinichirou Yamada <yamada_strong_yamada_nice_64bit@yahoo.co.jp>
|
||||
2018 sicklylife.jp <translation@sicklylife.jp>
|
||||
License: GPL-2+
|
||||
|
||||
Files: po/kk.po
|
||||
Copyright: 2017 Baurzhan Muftakhidinov <baurthefirst@gmail.com>
|
||||
License: GPL-2+
|
||||
|
||||
Files: po/zh_CN.po
|
||||
po/zh_TW.po
|
||||
Copyright: 2017 Boyuan Yang <073plan@gmail.com>
|
||||
License: GPL-2+
|
||||
|
||||
Files: po/tr.po
|
||||
Copyright: 2018 Serdar Sağlam <teknomobil@yandex.com>
|
||||
License: GPL-2+
|
||||
|
||||
Files: debian/*
|
||||
Copyright: 2017-2020 Jonathan Carter <jcc@debian.org>
|
||||
License: GPL-2+
|
||||
|
||||
License: GPL-2+
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License.
|
||||
.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
.
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
.
|
||||
On Debian systems, the complete text of the GNU General
|
||||
Public License can be found in `/usr/share/common-licenses/GPL-2'.
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
schemas/org.gnome.shell.extensions.zorin-taskbar.gschema.xml usr/share/glib-2.0/schemas
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
%:
|
||||
dh $@
|
||||
|
||||
override_dh_install:
|
||||
dh_install
|
||||
rm -f debian/gnome-shell-extension-zorin-taskbar/usr/share/gnome-shell/extensions/zorin-taskbar@zorinos.com/COPYING
|
||||
rm -f debian/gnome-shell-extension-zorin-taskbar/usr/share/gnome-shell/extensions/zorin-taskbar@zorinos.com/README.md
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
3.0 (native)
|
||||
+102
-127
@@ -1,10 +1,9 @@
|
||||
/*
|
||||
* Taskbar: A taskbar extension for the Gnome panel.
|
||||
* Copyright (C) 2016 Zorin OS
|
||||
* This file is part of the Zorin Taskbar extension for Zorin OS.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
@@ -15,151 +14,127 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*
|
||||
* Credits:
|
||||
* This file is based on code from the Dash to Dock extension by micheleg.
|
||||
* Some code was also adapted from the upstream Gnome Shell source code.
|
||||
*/
|
||||
|
||||
|
||||
const Me = imports.misc.extensionUtils.getCurrentExtension();
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Convenience = Me.imports.convenience;
|
||||
const Taskbar = Me.imports.taskbar;
|
||||
const Lang = imports.lang;
|
||||
const Main = imports.ui.main;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Gio = imports.gi.Gio;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Lang = imports.lang;
|
||||
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;
|
||||
|
||||
let appMenu;
|
||||
let container;
|
||||
let panel;
|
||||
let panelConnectId;
|
||||
let signalsHandler;
|
||||
let taskbar;
|
||||
const Me = ExtensionUtils.getCurrentExtension();
|
||||
const Convenience = Me.imports.convenience;
|
||||
const PanelManager = Me.imports.panelManager;
|
||||
const Utils = Me.imports.utils;
|
||||
|
||||
const ZORIN_DASH_UUID = 'zorin-dash@zorinos.com';
|
||||
|
||||
let panelManager;
|
||||
let oldDash;
|
||||
let extensionChangedHandler;
|
||||
let disabledZorinDash;
|
||||
let extensionSystem = (Main.extensionManager || imports.ui.extensionSystem);
|
||||
|
||||
function init() {
|
||||
Convenience.initTranslations(Utils.TRANSLATION_DOMAIN);
|
||||
|
||||
//create an object that persists until gnome-shell is restarted, even if the extension is disabled
|
||||
Me.persistentStorage = {};
|
||||
}
|
||||
|
||||
function enable() {
|
||||
panel = Main.panel;
|
||||
container = panel._leftBox;
|
||||
appMenu = panel.statusArea['appMenu'];
|
||||
// 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();
|
||||
}
|
||||
});
|
||||
|
||||
panelConnectId = panel.actor.connect('allocate', allocate);
|
||||
container.remove_child(appMenu.container);
|
||||
taskbar = new Taskbar.taskbar();
|
||||
Main.overview.dashIconSize = taskbar.iconSize;
|
||||
//create a global object that can emit signals and conveniently expose functionalities to other extensions
|
||||
global.zorinTaskbar = {};
|
||||
Signals.addSignalMethods(global.zorinTaskbar);
|
||||
|
||||
_enable();
|
||||
}
|
||||
|
||||
container.insert_child_at_index( taskbar.actor, 2 );
|
||||
function _enable() {
|
||||
let zorinDash = Main.extensionManager ?
|
||||
Main.extensionManager.lookup(ZORIN_DASH_UUID) : //gnome-shell >= 3.33.4
|
||||
ExtensionUtils.extensions[ZORIN_DASH_UUID];
|
||||
|
||||
// Since Gnome 3.8 dragging an app without having opened the overview before cause the attemp to
|
||||
//animate a null target since some variables are not initialized when the viewSelector is created
|
||||
if(Main.overview.viewSelector._activePage == null)
|
||||
Main.overview.viewSelector._activePage = Main.overview.viewSelector._workspacesPage;
|
||||
if (zorinDash && zorinDash.stateObj && zorinDash.stateObj.dockManager) {
|
||||
// Disable Zorin Dash
|
||||
let extensionOrder = (extensionSystem.extensionOrder || extensionSystem._extensionOrder);
|
||||
|
||||
// sync hover after a popupmenu is closed
|
||||
taskbar.connect('menu-closed', Lang.bind(this, function(){container.sync_hover();}));
|
||||
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);
|
||||
|
||||
signalsHandler = new Convenience.GlobalSignalsHandler();
|
||||
signalsHandler.add(
|
||||
// Keep dragged icon consistent in size with this dash
|
||||
[
|
||||
taskbar,
|
||||
'icon-size-changed',
|
||||
Lang.bind(this, function() {
|
||||
Main.overview.dashIconSize = taskbar.iconSize;
|
||||
})
|
||||
],
|
||||
// This duplicate the similar signal which is in owerview.js.
|
||||
// Being connected and thus executed later this effectively
|
||||
// overwrite any attempt to use the size of the default dash
|
||||
// which given the customization is usually much smaller.
|
||||
// I can't easily disconnect the original signal
|
||||
[
|
||||
Main.overview._controls.dash,
|
||||
'icon-size-changed',
|
||||
Lang.bind(this, function() {
|
||||
Main.overview.dashIconSize = taskbar.iconSize;
|
||||
})
|
||||
]
|
||||
//reset to prevent conflicts with the zorin-dash
|
||||
if (panelManager) {
|
||||
disable(true);
|
||||
}
|
||||
}
|
||||
|
||||
if (panelManager) return; //already initialized
|
||||
|
||||
Me.settings = Convenience.getSettings('org.gnome.shell.extensions.zorin-taskbar');
|
||||
Me.desktopSettings = Convenience.getSettings('org.gnome.desktop.interface');
|
||||
|
||||
panelManager = new PanelManager.dtpPanelManager();
|
||||
|
||||
panelManager.enable();
|
||||
|
||||
Utils.removeKeybinding('open-application-menu');
|
||||
Utils.addKeybinding(
|
||||
'open-application-menu',
|
||||
new Gio.Settings({ schema_id: WindowManager.SHELL_KEYBINDINGS_SCHEMA }),
|
||||
Lang.bind(this, function() {
|
||||
panelManager.primaryPanel.taskbar.popupFocusedAppSecondaryMenu();
|
||||
}),
|
||||
Shell.ActionMode.NORMAL | Shell.ActionMode.POPUP
|
||||
);
|
||||
}
|
||||
|
||||
function disable() {
|
||||
signalsHandler.destroy();
|
||||
container.remove_child(taskbar.actor);
|
||||
container.add_child(appMenu.container);
|
||||
taskbar.destroy();
|
||||
panel.actor.disconnect(panelConnectId);
|
||||
|
||||
// reset stored icon size to the default dash
|
||||
Main.overview.dashIconSize = Main.overview._controls.dash.iconSize;
|
||||
|
||||
appMenu = null;
|
||||
container = null;
|
||||
panel = null;
|
||||
panelConnectId = null;
|
||||
signalsHandler = null;
|
||||
taskbar = null;
|
||||
// Pretend I'm the dash: meant to make appgrd swarm animation come from the
|
||||
// right position of the appShowButton.
|
||||
oldDash = Main.overview._dash;
|
||||
Main.overview._dash = panelManager.primaryPanel.taskbar;
|
||||
}
|
||||
|
||||
function allocate(actor, box, flags) {
|
||||
let allocWidth = box.x2 - box.x1;
|
||||
let allocHeight = box.y2 - box.y1;
|
||||
function disable(reset) {
|
||||
panelManager.disable();
|
||||
Main.overview._dash = oldDash;
|
||||
Me.settings.run_dispose();
|
||||
Me.desktopSettings.run_dispose();
|
||||
|
||||
let [leftMinWidth, leftNaturalWidth] = panel._leftBox.get_preferred_width(-1);
|
||||
let [centerMinWidth, centerNaturalWidth] = panel._centerBox.get_preferred_width(-1);
|
||||
let [rightMinWidth, rightNaturalWidth] = panel._rightBox.get_preferred_width(-1);
|
||||
delete Me.settings;
|
||||
oldDash = null;
|
||||
panelManager = null;
|
||||
|
||||
Utils.removeKeybinding('open-application-menu');
|
||||
Utils.addKeybinding(
|
||||
'open-application-menu',
|
||||
new Gio.Settings({ schema_id: WindowManager.SHELL_KEYBINDINGS_SCHEMA }),
|
||||
Lang.bind(Main.wm, Main.wm._toggleAppMenu),
|
||||
Shell.ActionMode.NORMAL | Shell.ActionMode.POPUP
|
||||
);
|
||||
|
||||
let sideWidth = allocWidth - rightNaturalWidth - centerNaturalWidth;
|
||||
if (!reset) {
|
||||
extensionSystem.disconnect(extensionChangedHandler);
|
||||
delete global.zorinTaskbar;
|
||||
|
||||
let childBox = new Clutter.ActorBox();
|
||||
|
||||
childBox.y1 = 0;
|
||||
childBox.y2 = allocHeight;
|
||||
if (panel.actor.get_text_direction() == Clutter.TextDirection.RTL) {
|
||||
childBox.x1 = allocWidth - Math.min(Math.floor(sideWidth), leftNaturalWidth);
|
||||
childBox.x2 = allocWidth;
|
||||
} else {
|
||||
childBox.x1 = 0;
|
||||
childBox.x2 = sideWidth;
|
||||
// Re-enable Zorin Dash if it was disabled by Zorin Taskbar
|
||||
if (disabledZorinDash && Main.sessionMode.allowExtensions) {
|
||||
(extensionSystem._callExtensionEnable || extensionSystem.enableExtension).call(extensionSystem, ZORIN_DASH_UUID);
|
||||
}
|
||||
}
|
||||
panel._leftBox.allocate(childBox, flags);
|
||||
|
||||
childBox.y1 = 0;
|
||||
childBox.y2 = allocHeight;
|
||||
if (panel.actor.get_text_direction() == Clutter.TextDirection.RTL) {
|
||||
childBox.x1 = rightNaturalWidth;
|
||||
childBox.x2 = childBox.x1 + centerNaturalWidth;
|
||||
} else {
|
||||
childBox.x1 = allocWidth - centerNaturalWidth - rightNaturalWidth;
|
||||
childBox.x2 = childBox.x1 + centerNaturalWidth;
|
||||
}
|
||||
panel._centerBox.allocate(childBox, flags);
|
||||
|
||||
childBox.y1 = 0;
|
||||
childBox.y2 = allocHeight;
|
||||
if (panel.actor.get_text_direction() == Clutter.TextDirection.RTL) {
|
||||
childBox.x1 = 0;
|
||||
childBox.x2 = rightNaturalWidth;
|
||||
} else {
|
||||
childBox.x1 = allocWidth - rightNaturalWidth;
|
||||
childBox.x2 = allocWidth;
|
||||
}
|
||||
panel._rightBox.allocate(childBox, flags);
|
||||
|
||||
let [cornerMinWidth, cornerWidth] = panel._leftCorner.actor.get_preferred_width(-1);
|
||||
let [cornerMinHeight, cornerHeight] = panel._leftCorner.actor.get_preferred_width(-1);
|
||||
childBox.x1 = 0;
|
||||
childBox.x2 = cornerWidth;
|
||||
childBox.y1 = allocHeight;
|
||||
childBox.y2 = allocHeight + cornerHeight;
|
||||
panel._leftCorner.actor.allocate(childBox, flags);
|
||||
|
||||
let [cornerMinWidth, cornerWidth] = panel._rightCorner.actor.get_preferred_width(-1);
|
||||
let [cornerMinHeight, cornerHeight] = panel._rightCorner.actor.get_preferred_width(-1);
|
||||
childBox.x1 = allocWidth - cornerWidth;
|
||||
childBox.x2 = allocWidth;
|
||||
childBox.y1 = allocHeight;
|
||||
childBox.y2 = allocHeight + cornerHeight;
|
||||
panel._rightCorner.actor.allocate(childBox, flags);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,198 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
sodipodi:docname="show-desktop-symbolic.svg"
|
||||
inkscape:export-filename="/home/sam/source-symbolic.png"
|
||||
inkscape:export-xdpi="270"
|
||||
inkscape:export-ydpi="270"
|
||||
height="16"
|
||||
id="svg7384"
|
||||
style="enable-background:new"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
width="16">
|
||||
<sodipodi:namedview
|
||||
inkscape:bbox-nodes="true"
|
||||
inkscape:bbox-paths="false"
|
||||
bordercolor="#666666"
|
||||
borderlayer="false"
|
||||
borderopacity="1"
|
||||
inkscape:current-layer="layer9"
|
||||
inkscape:cx="4.383315"
|
||||
inkscape:cy="8.4624117"
|
||||
gridtolerance="10"
|
||||
inkscape:guide-bbox="true"
|
||||
guidetolerance="10"
|
||||
id="namedview88"
|
||||
inkscape:object-nodes="true"
|
||||
inkscape:object-paths="true"
|
||||
objecttolerance="10"
|
||||
pagecolor="#f7f7f7"
|
||||
inkscape:pageopacity="1"
|
||||
inkscape:pageshadow="2"
|
||||
showborder="true"
|
||||
showgrid="false"
|
||||
showguides="false"
|
||||
inkscape:showpageshadow="false"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:snap-bbox-edge-midpoints="false"
|
||||
inkscape:snap-bbox-midpoints="true"
|
||||
inkscape:snap-center="false"
|
||||
inkscape:snap-global="true"
|
||||
inkscape:snap-grids="true"
|
||||
inkscape:snap-intersection-paths="false"
|
||||
inkscape:snap-midpoints="true"
|
||||
inkscape:snap-nodes="true"
|
||||
inkscape:snap-object-midpoints="true"
|
||||
inkscape:snap-others="true"
|
||||
inkscape:snap-page="false"
|
||||
inkscape:snap-smooth-nodes="true"
|
||||
inkscape:snap-to-guides="true"
|
||||
inkscape:window-height="1000"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:zoom="45.254834">
|
||||
<inkscape:grid
|
||||
color="#000000"
|
||||
dotted="false"
|
||||
empcolor="#0800ff"
|
||||
empopacity="0.4627451"
|
||||
empspacing="4"
|
||||
enabled="true"
|
||||
id="grid4866"
|
||||
opacity="0.16470588"
|
||||
originx="-404"
|
||||
originy="-552"
|
||||
snapvisiblegridlinesonly="true"
|
||||
spacingx="0.25px"
|
||||
spacingy="0.25px"
|
||||
type="xygrid"
|
||||
visible="true" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata90">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title>Paper Symbolic Icon Theme</dc:title>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" />
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/by-sa/3.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Notice" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Attribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#ShareAlike" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<title
|
||||
id="title8473">Paper Symbolic Icon Theme</title>
|
||||
<defs
|
||||
id="defs7386">
|
||||
<linearGradient
|
||||
id="linearGradient6882"
|
||||
osb:paint="solid">
|
||||
<stop
|
||||
id="stop6884"
|
||||
offset="0"
|
||||
style="stop-color:#555555;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient5606"
|
||||
osb:paint="solid">
|
||||
<stop
|
||||
id="stop5608"
|
||||
offset="0"
|
||||
style="stop-color:#000000;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter7554"
|
||||
style="color-interpolation-filters:sRGB">
|
||||
<feBlend
|
||||
inkscape:collect="always"
|
||||
id="feBlend7556"
|
||||
in2="BackgroundImage"
|
||||
mode="darken" />
|
||||
</filter>
|
||||
</defs>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer9"
|
||||
inkscape:label="status"
|
||||
style="display:inline"
|
||||
transform="translate(-645.0002,335)">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 648.0002,-333 c -1.5,0 -3,1.5 -3,3 l 0,6 c 0,1.5 1.5,3 3,3 l 10,0 c 1.5,0 3,-1.5 3,-3 l 0,-6 c 0,-1.5 -1.5,-3 -3,-3 z m 0,2 10,0 c 0.5,0 1,0.5 1,1 l 0,6 c 0,0.5 -0.5,1 -1,1 l -10,0 c -0.5,0 -1,-0.5 -1,-1 l 0,-6 c 0,-0.5 0.5,-1 1,-1 z"
|
||||
id="path5875"
|
||||
sodipodi:nodetypes="ssssssssssssssssss"
|
||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker:none;enable-background:new" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer10"
|
||||
inkscape:label="devices"
|
||||
style="display:inline;filter:url(#filter7554)"
|
||||
transform="translate(-645.0002,335)" />
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
inkscape:label="places"
|
||||
style="display:inline"
|
||||
transform="translate(-404,-282)" />
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer14"
|
||||
inkscape:label="mimetypes"
|
||||
style="display:inline"
|
||||
transform="translate(-645.0002,335)" />
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer15"
|
||||
inkscape:label="emblems"
|
||||
style="display:inline"
|
||||
transform="translate(-645.0002,335)" />
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="g71291"
|
||||
inkscape:label="emotes"
|
||||
style="display:inline"
|
||||
transform="translate(-645.0002,335)" />
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="categories"
|
||||
style="display:inline"
|
||||
transform="translate(-404,-132)" />
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer12"
|
||||
inkscape:label="actions"
|
||||
style="display:inline"
|
||||
transform="translate(-645.0002,335)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.2 KiB |
+441
@@ -0,0 +1,441 @@
|
||||
/*
|
||||
* This file is part of the Zorin Taskbar extension for Zorin OS.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Credits:
|
||||
* This file is based on code from the Dash to Panel extension
|
||||
*/
|
||||
|
||||
const Lang = imports.lang;
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.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;
|
||||
|
||||
const Me = imports.misc.extensionUtils.getCurrentExtension();
|
||||
const Panel = Me.imports.panel;
|
||||
const Proximity = Me.imports.proximity;
|
||||
const Utils = Me.imports.utils;
|
||||
|
||||
var INTELLIHIDE_PRESSURE_THRESHOLD = 100;
|
||||
var INTELLIHIDE_PRESSURE_TIME = 1000;
|
||||
var INTELLIHIDE_ANIMATION_TIME = 200;
|
||||
var INTELLIHIDE_CLOSE_DELAY = 400;
|
||||
var INTELLIHIDE_ENABLE_START_DELAY = 2000;
|
||||
|
||||
//timeout intervals
|
||||
const CHECK_POINTER_MS = 200;
|
||||
const CHECK_GRAB_MS = 400;
|
||||
const POST_ANIMATE_MS = 50;
|
||||
const MIN_UPDATE_MS = 250;
|
||||
|
||||
//timeout names
|
||||
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);
|
||||
|
||||
var Hold = {
|
||||
NONE: 0,
|
||||
TEMPORARY: 1,
|
||||
PERMANENT: 2
|
||||
};
|
||||
|
||||
var Intellihide = Utils.defineClass({
|
||||
Name: 'ZorinTaskbar.Intellihide',
|
||||
|
||||
_init: function(dtpPanel) {
|
||||
this._dtpPanel = dtpPanel;
|
||||
this._panelBox = dtpPanel.panelBox;
|
||||
this._panelManager = dtpPanel.panelManager;
|
||||
this._proximityManager = this._panelManager.proximityManager;
|
||||
this._holdStatus = Hold.NONE;
|
||||
|
||||
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.enabled = false;
|
||||
this._changeEnabledStatus();
|
||||
},
|
||||
|
||||
enable: function() {
|
||||
this.enabled = true;
|
||||
this._monitor = this._dtpPanel.monitor;
|
||||
this._animationDestination = -1;
|
||||
this._pendingUpdate = false;
|
||||
this._hoveredOut = false;
|
||||
this._windowOverlap = false;
|
||||
this._translationProp = 'translation_' + (this._dtpPanel.checkIfVertical() ? 'x' : 'y');
|
||||
|
||||
this._panelBox.translation_y = 0;
|
||||
this._panelBox.translation_x = 0;
|
||||
|
||||
this._setTrackPanel(true);
|
||||
this._bindGeneralSignals();
|
||||
|
||||
if (Me.settings.get_boolean('intellihide-hide-from-windows')) {
|
||||
this._proximityWatchId = this._proximityManager.createWatch(
|
||||
this._panelBox.get_parent(),
|
||||
Proximity.Mode[Me.settings.get_string('intellihide-behaviour')],
|
||||
0, 0,
|
||||
overlap => {
|
||||
this._windowOverlap = overlap;
|
||||
this._queueUpdatePanelPosition();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
this._setRevealMechanism();
|
||||
this._queueUpdatePanelPosition();
|
||||
this._toggleFloatingRoundedTheme();
|
||||
},
|
||||
|
||||
disable: function(reset) {
|
||||
if (this._proximityWatchId) {
|
||||
this._proximityManager.removeWatch(this._proximityWatchId);
|
||||
}
|
||||
|
||||
this._setTrackPanel(false);
|
||||
|
||||
this._signalsHandler.destroy();
|
||||
this._timeoutsHandler.destroy();
|
||||
|
||||
this._removeRevealMechanism();
|
||||
|
||||
this._revealPanel(!reset);
|
||||
|
||||
this.enabled = false;
|
||||
|
||||
if (this._panelBox.has_style_class_name('floating')) {
|
||||
this._panelBox.remove_style_class_name('floating');
|
||||
|
||||
this._resetPanelGeometry();
|
||||
}
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
Me.settings.disconnect(this._intellihideChangedId);
|
||||
Me.settings.disconnect(this._intellihideOnlySecondaryChangedId);
|
||||
|
||||
if (this.enabled) {
|
||||
this.disable();
|
||||
}
|
||||
},
|
||||
|
||||
toggle: function() {
|
||||
this[this._holdStatus & Hold.PERMANENT ? 'release' : 'revealAndHold'](Hold.PERMANENT);
|
||||
},
|
||||
|
||||
revealAndHold: function(holdStatus) {
|
||||
if (this.enabled && !this._holdStatus) {
|
||||
this._revealPanel();
|
||||
}
|
||||
|
||||
this._holdStatus |= holdStatus;
|
||||
},
|
||||
|
||||
release: function(holdStatus) {
|
||||
this._holdStatus -= holdStatus;
|
||||
|
||||
if (this.enabled && !this._holdStatus) {
|
||||
this._queueUpdatePanelPosition();
|
||||
}
|
||||
},
|
||||
|
||||
reset: function() {
|
||||
this.disable(true);
|
||||
this.enable();
|
||||
},
|
||||
|
||||
_toggleFloatingRoundedTheme: function() {
|
||||
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: function() {
|
||||
this._dtpPanel.geom = this._dtpPanel.getGeometry();
|
||||
this._dtpPanel._setPanelGhostSize();
|
||||
this._dtpPanel._setPanelPosition();
|
||||
this._dtpPanel.dynamicTransparency.updateExternalStyle();
|
||||
},
|
||||
|
||||
_changeEnabledStatus: function() {
|
||||
let intellihide = Me.settings.get_boolean('intellihide');
|
||||
let onlySecondary = Me.settings.get_boolean('intellihide-only-secondary');
|
||||
let enabled = intellihide && !(this._dtpPanel.isPrimary && onlySecondary);
|
||||
|
||||
if (this.enabled !== enabled) {
|
||||
this[enabled ? 'enable' : 'disable']();
|
||||
}
|
||||
},
|
||||
|
||||
_bindGeneralSignals: function() {
|
||||
this._signalsHandler.add(
|
||||
[
|
||||
this._dtpPanel.taskbar,
|
||||
'menu-closed',
|
||||
() => this._panelBox.sync_hover()
|
||||
],
|
||||
[
|
||||
Me.settings,
|
||||
[
|
||||
'changed::intellihide-use-pressure',
|
||||
'changed::intellihide-hide-from-windows',
|
||||
'changed::intellihide-behaviour'
|
||||
],
|
||||
() => this.reset()
|
||||
],
|
||||
[
|
||||
Me.settings,
|
||||
[
|
||||
'changed::intellihide-floating-rounded-theme'
|
||||
],
|
||||
() => this._toggleFloatingRoundedTheme()
|
||||
],
|
||||
[
|
||||
this._panelBox,
|
||||
'notify::hover',
|
||||
() => this._onHoverChanged()
|
||||
],
|
||||
[
|
||||
this._dtpPanel.taskbar.previewMenu,
|
||||
'open-state-changed',
|
||||
() => this._queueUpdatePanelPosition()
|
||||
],
|
||||
[
|
||||
Main.overview,
|
||||
[
|
||||
'showing',
|
||||
'hiding'
|
||||
],
|
||||
() => this._queueUpdatePanelPosition()
|
||||
]
|
||||
);
|
||||
},
|
||||
|
||||
_onHoverChanged: function() {
|
||||
this._hoveredOut = !this._panelBox.hover;
|
||||
this._queueUpdatePanelPosition();
|
||||
},
|
||||
|
||||
_setTrackPanel: function(enable) {
|
||||
let trackedIndex = Main.layoutManager._findActor(this._panelBox);
|
||||
let actorData = Main.layoutManager._trackedActors[trackedIndex]
|
||||
|
||||
actorData.affectsStruts = !enable;
|
||||
actorData.trackFullscreen = !enable;
|
||||
|
||||
this._panelBox.track_hover = enable;
|
||||
this._panelBox.reactive = enable;
|
||||
this._panelBox.visible = enable ? enable : this._panelBox.visible;
|
||||
|
||||
Main.layoutManager._queueUpdateRegions();
|
||||
},
|
||||
|
||||
_setRevealMechanism: function() {
|
||||
if (global.display.supports_extended_barriers() && Me.settings.get_boolean('intellihide-use-pressure')) {
|
||||
this._edgeBarrier = this._createBarrier();
|
||||
this._pressureBarrier = new Layout.PressureBarrier(
|
||||
INTELLIHIDE_PRESSURE_THRESHOLD,
|
||||
INTELLIHIDE_PRESSURE_TIME,
|
||||
Shell.ActionMode.NORMAL
|
||||
);
|
||||
this._pressureBarrier.addBarrier(this._edgeBarrier);
|
||||
this._signalsHandler.add([this._pressureBarrier, 'trigger', () => this._queueUpdatePanelPosition(true)]);
|
||||
} else {
|
||||
this._pointerWatch = PointerWatcher.getPointerWatcher()
|
||||
.addWatch(CHECK_POINTER_MS, (x, y) => this._checkMousePointer(x, y));
|
||||
}
|
||||
},
|
||||
|
||||
_removeRevealMechanism: function() {
|
||||
if (this._pointerWatch) {
|
||||
PointerWatcher.getPointerWatcher()._removeWatch(this._pointerWatch);
|
||||
}
|
||||
|
||||
if (this._pressureBarrier) {
|
||||
this._pressureBarrier.destroy();
|
||||
this._edgeBarrier.destroy();
|
||||
}
|
||||
},
|
||||
|
||||
_createBarrier: function() {
|
||||
let position = this._dtpPanel.geom.position;
|
||||
let opts = { display: global.display };
|
||||
|
||||
if (this._dtpPanel.checkIfVertical()) {
|
||||
opts.y1 = this._monitor.y;
|
||||
opts.y2 = this._monitor.y + this._monitor.height;
|
||||
opts.x1 = opts.x2 = this._monitor.x;
|
||||
} else {
|
||||
opts.x1 = this._monitor.x;
|
||||
opts.x2 = this._monitor.x + this._monitor.width;
|
||||
opts.y1 = opts.y2 = this._monitor.y;
|
||||
}
|
||||
|
||||
if (position == St.Side.TOP) {
|
||||
opts.directions = Meta.BarrierDirection.POSITIVE_Y;
|
||||
} else if (position == St.Side.BOTTOM) {
|
||||
opts.y1 = opts.y2 = opts.y1 + this._monitor.height;
|
||||
opts.directions = Meta.BarrierDirection.NEGATIVE_Y;
|
||||
} else if (position == St.Side.LEFT) {
|
||||
opts.directions = Meta.BarrierDirection.POSITIVE_X;
|
||||
} else {
|
||||
opts.x1 = opts.x2 = opts.x1 + this._monitor.width;
|
||||
opts.directions = Meta.BarrierDirection.NEGATIVE_X;
|
||||
}
|
||||
|
||||
return new Meta.Barrier(opts);
|
||||
},
|
||||
|
||||
_checkMousePointer: function(x, y) {
|
||||
let position = this._dtpPanel.geom.position;
|
||||
|
||||
if (!this._panelBox.hover && !Main.overview.visible &&
|
||||
((position == St.Side.TOP && y <= this._monitor.y + 1) ||
|
||||
(position == St.Side.BOTTOM && y >= this._monitor.y + this._monitor.height - 1) ||
|
||||
(position == St.Side.LEFT && x <= this._monitor.x + 1) ||
|
||||
(position == St.Side.RIGHT && x >= this._monitor.x + this._monitor.width - 1)) &&
|
||||
((x >= this._monitor.x && x < this._monitor.x + this._monitor.width) &&
|
||||
(y >= this._monitor.y && y < this._monitor.y + this._monitor.height))) {
|
||||
this._queueUpdatePanelPosition(true);
|
||||
}
|
||||
},
|
||||
|
||||
_queueUpdatePanelPosition: function(fromRevealMechanism) {
|
||||
if (!fromRevealMechanism && this._timeoutsHandler.getId(T2) && !Main.overview.visible) {
|
||||
//unless this is a mouse interaction or entering/leaving the overview, limit the number
|
||||
//of updates, but remember to update again when the limit timeout is reached
|
||||
this._pendingUpdate = true;
|
||||
} else if (!this._holdStatus) {
|
||||
this._checkIfShouldBeVisible(fromRevealMechanism) ? this._revealPanel() : this._hidePanel();
|
||||
this._timeoutsHandler.add([T2, MIN_UPDATE_MS, () => this._endLimitUpdate()]);
|
||||
}
|
||||
},
|
||||
|
||||
_endLimitUpdate: function() {
|
||||
if (this._pendingUpdate) {
|
||||
this._pendingUpdate = false;
|
||||
this._queueUpdatePanelPosition();
|
||||
}
|
||||
},
|
||||
|
||||
_checkIfShouldBeVisible: function(fromRevealMechanism) {
|
||||
if (Main.overview.visibleTarget || this._dtpPanel.taskbar.previewMenu.opened ||
|
||||
this._panelBox.get_hover() || this._checkIfGrab()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (fromRevealMechanism) {
|
||||
let mouseBtnIsPressed = global.get_pointer()[2] & Clutter.ModifierType.BUTTON1_MASK;
|
||||
|
||||
//the user is trying to reveal the panel
|
||||
if (this._monitor.inFullscreen && !mouseBtnIsPressed) {
|
||||
return Me.settings.get_boolean('intellihide-show-in-fullscreen');
|
||||
}
|
||||
|
||||
return !mouseBtnIsPressed;
|
||||
}
|
||||
|
||||
if (!Me.settings.get_boolean('intellihide-hide-from-windows')) {
|
||||
return this._panelBox.hover;
|
||||
}
|
||||
|
||||
return !this._windowOverlap;
|
||||
},
|
||||
|
||||
_checkIfGrab: function() {
|
||||
if (GrabHelper._grabHelperStack.some(gh => gh._owner == this._dtpPanel.panel.actor)) {
|
||||
//there currently is a grab on a child of the panel, check again soon to catch its release
|
||||
this._timeoutsHandler.add([T1, CHECK_GRAB_MS, () => this._queueUpdatePanelPosition()]);
|
||||
|
||||
return true;
|
||||
}
|
||||
},
|
||||
|
||||
_revealPanel: function(immediate) {
|
||||
if (!this._panelBox.visible) {
|
||||
this._panelBox.visible = true;
|
||||
this._dtpPanel.taskbar._shownInitially = false;
|
||||
}
|
||||
|
||||
this._animatePanel(0, immediate);
|
||||
},
|
||||
|
||||
_hidePanel: function(immediate) {
|
||||
let position = this._dtpPanel.geom.position;
|
||||
let size = this._panelBox[position == St.Side.LEFT || position == St.Side.RIGHT ? 'width' : 'height'];
|
||||
let coefficient = position == St.Side.TOP || position == St.Side.LEFT ? -1 : 1;
|
||||
|
||||
this._animatePanel(size * coefficient, immediate);
|
||||
},
|
||||
|
||||
_animatePanel: function(destination, immediate) {
|
||||
let animating = Utils.isAnimating(this._panelBox, this._translationProp);
|
||||
|
||||
if (!((animating && destination === this._animationDestination) ||
|
||||
(!animating && destination === this._panelBox[this._translationProp]))) {
|
||||
//the panel isn't already at, or animating to the asked destination
|
||||
if (animating) {
|
||||
Utils.stopAnimations(this._panelBox);
|
||||
}
|
||||
|
||||
this._animationDestination = destination;
|
||||
|
||||
if (immediate) {
|
||||
this._panelBox[this._translationProp] = destination;
|
||||
this._panelBox.visible = !destination;
|
||||
} else {
|
||||
let tweenOpts = {
|
||||
//when entering/leaving the overview, use its animation time instead of the one from the settings
|
||||
time: Main.overview.visible ?
|
||||
SIDE_CONTROLS_ANIMATION_TIME :
|
||||
INTELLIHIDE_ANIMATION_TIME * 0.001,
|
||||
//only delay the animation when hiding the panel after the user hovered out
|
||||
delay: destination != 0 && this._hoveredOut ? INTELLIHIDE_CLOSE_DELAY * 0.001 : 0,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: () => {
|
||||
this._panelBox.visible = !destination;
|
||||
Main.layoutManager._queueUpdateRegions();
|
||||
this._timeoutsHandler.add([T3, POST_ANIMATE_MS, () => this._queueUpdatePanelPosition()]);
|
||||
}
|
||||
};
|
||||
|
||||
tweenOpts[this._translationProp] = destination;
|
||||
Utils.animate(this._panelBox, tweenOpts);
|
||||
}
|
||||
}
|
||||
|
||||
this._hoveredOut = false;
|
||||
},
|
||||
});
|
||||
Executable → Regular
+4
-3
@@ -2,7 +2,8 @@
|
||||
"extension-id": "zorin-taskbar",
|
||||
"uuid": "zorin-taskbar@zorinos.com",
|
||||
"name": "Zorin Taskbar",
|
||||
"description": "The official taskbar for Zorin OS.",
|
||||
"shell-version": [ "3.18" ],
|
||||
"url": "https://github.com/ZorinOS/zorin-taskbar"
|
||||
"description": "A taskbar extension for the Zorin Desktop environment.",
|
||||
"shell-version": [ "3.18", "3.20", "3.22", "3.24", "3.26", "3.28", "3.30", "3.32", "3.34", "3.36", "3.38" ],
|
||||
"gettext-domain": "zorin-taskbar",
|
||||
"version": 9999
|
||||
}
|
||||
|
||||
+396
@@ -0,0 +1,396 @@
|
||||
/*
|
||||
* This file is part of the Zorin Taskbar extension for Zorin OS.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Credits:
|
||||
* This file is based on code from the Dash to Dock extension by micheleg
|
||||
* and code from the Dash to Panel extension
|
||||
* 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;
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Lang = imports.lang;
|
||||
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 ViewSelector = imports.ui.viewSelector;
|
||||
|
||||
const Meta = imports.gi.Meta;
|
||||
|
||||
const GS_HOTKEYS_KEY = 'switch-to-application-';
|
||||
const OVERLAY_TIMEOUT = 750;
|
||||
const SHORTCUT_TIMEOUT = 2000;
|
||||
|
||||
//timeout names
|
||||
const T1 = 'swipeEndTimeout';
|
||||
|
||||
var dtpOverview = Utils.defineClass({
|
||||
Name: 'ZorinTaskbar.Overview',
|
||||
|
||||
_init: function() {
|
||||
this._numHotkeys = 10;
|
||||
this._timeoutsHandler = new Utils.TimeoutsHandler();
|
||||
},
|
||||
|
||||
enable : function(panel) {
|
||||
this._panel = panel;
|
||||
this.taskbar = panel.taskbar;
|
||||
|
||||
this._injectionsHandler = new Utils.InjectionsHandler();
|
||||
this._signalsHandler = new Utils.GlobalSignalsHandler();
|
||||
|
||||
this._optionalWorkspaceIsolation();
|
||||
this._optionalHotKeys();
|
||||
this._optionalNumberOverlay();
|
||||
this._toggleDash();
|
||||
},
|
||||
|
||||
disable: function () {
|
||||
this._signalsHandler.destroy();
|
||||
this._injectionsHandler.destroy();
|
||||
|
||||
this._toggleDash(true);
|
||||
|
||||
// Remove key bindings
|
||||
this._disableHotKeys();
|
||||
this._disableExtraShortcut();
|
||||
},
|
||||
|
||||
_toggleDash: function(visible) {
|
||||
// To hide the dash, set its width to 1, so it's almost not taken into account by code
|
||||
// calculaing the reserved space in the overview. The reason to keep it at 1 is
|
||||
// to allow its visibility change to trigger an allocaion of the appGrid which
|
||||
// in turn is triggergin the appsIcon spring animation, required when no other
|
||||
// actors has this effect, i.e in horizontal mode and without the workspaceThumnails
|
||||
// 1 static workspace only)
|
||||
|
||||
if (visible === undefined) {
|
||||
visible = false;
|
||||
}
|
||||
|
||||
let visibilityFunc = visible ? 'show' : 'hide';
|
||||
let width = visible ? -1 : 1;
|
||||
let overviewControls = Main.overview._overview._controls || Main.overview._controls;
|
||||
|
||||
overviewControls.dash.actor[visibilityFunc]();
|
||||
overviewControls.dash.actor.set_width(width);
|
||||
|
||||
// This force the recalculation of the icon size
|
||||
overviewControls.dash._maxHeight = -1;
|
||||
},
|
||||
|
||||
/**
|
||||
* Isolate overview to open new windows for inactive apps
|
||||
*/
|
||||
_optionalWorkspaceIsolation: function() {
|
||||
let label = 'optionalWorkspaceIsolation';
|
||||
|
||||
this._signalsHandler.add([
|
||||
Me.settings,
|
||||
'changed::isolate-workspaces',
|
||||
Lang.bind(this, function() {
|
||||
this._panel.panelManager.allPanels.forEach(p => p.taskbar.resetAppIcons());
|
||||
|
||||
if (Me.settings.get_boolean('isolate-workspaces'))
|
||||
Lang.bind(this, enable)();
|
||||
else
|
||||
Lang.bind(this, disable)();
|
||||
})
|
||||
]);
|
||||
|
||||
if (Me.settings.get_boolean('isolate-workspaces'))
|
||||
Lang.bind(this, enable)();
|
||||
|
||||
function enable() {
|
||||
this._injectionsHandler.removeWithLabel(label);
|
||||
|
||||
this._injectionsHandler.addWithLabel(label, [
|
||||
Shell.App.prototype,
|
||||
'activate',
|
||||
IsolatedOverview
|
||||
]);
|
||||
|
||||
this._signalsHandler.removeWithLabel(label);
|
||||
|
||||
this._signalsHandler.addWithLabel(label, [
|
||||
global.window_manager,
|
||||
'switch-workspace',
|
||||
() => this._panel.panelManager.allPanels.forEach(p => p.taskbar.handleIsolatedWorkspaceSwitch())
|
||||
]);
|
||||
}
|
||||
|
||||
function disable() {
|
||||
this._signalsHandler.removeWithLabel(label);
|
||||
this._injectionsHandler.removeWithLabel(label);
|
||||
}
|
||||
|
||||
function IsolatedOverview() {
|
||||
// These lines take care of Nautilus for icons on Desktop
|
||||
let activeWorkspace = Utils.DisplayWrapper.getWorkspaceManager().get_active_workspace();
|
||||
let windows = this.get_windows().filter(w => w.get_workspace().index() == activeWorkspace.index());
|
||||
|
||||
if (windows.length > 0 &&
|
||||
(!(windows.length == 1 && windows[0].skip_taskbar) ||
|
||||
this.is_on_workspace(activeWorkspace)))
|
||||
return Main.activateWindow(windows[0]);
|
||||
|
||||
return this.open_new_window(-1);
|
||||
}
|
||||
},
|
||||
|
||||
// Hotkeys
|
||||
_activateApp: function(appIndex) {
|
||||
let seenApps = {};
|
||||
let apps = [];
|
||||
|
||||
this.taskbar._getAppIcons().forEach(function(appIcon) {
|
||||
if (!seenApps[appIcon.app]) {
|
||||
apps.push(appIcon);
|
||||
}
|
||||
|
||||
seenApps[appIcon.app] = (seenApps[appIcon.app] || 0) + 1;
|
||||
});
|
||||
|
||||
this._showOverlay();
|
||||
|
||||
if (appIndex < apps.length) {
|
||||
let appIcon = apps[appIndex];
|
||||
let seenAppCount = seenApps[appIcon.app];
|
||||
let windowCount = appIcon.window || appIcon._hotkeysCycle ? seenAppCount : appIcon._nWindows;
|
||||
|
||||
if (Me.settings.get_boolean('shortcut-previews') && windowCount > 1 &&
|
||||
!(Clutter.get_current_event().get_state() & ~(Clutter.ModifierType.MOD1_MASK | Clutter.ModifierType.MOD4_MASK))) { //ignore the alt (MOD1_MASK) and super key (MOD4_MASK)
|
||||
if (this._hotkeyPreviewCycleInfo && this._hotkeyPreviewCycleInfo.appIcon != appIcon) {
|
||||
this._endHotkeyPreviewCycle();
|
||||
}
|
||||
|
||||
if (!this._hotkeyPreviewCycleInfo) {
|
||||
this._hotkeyPreviewCycleInfo = {
|
||||
appIcon: appIcon,
|
||||
currentWindow: appIcon.window,
|
||||
keyFocusOutId: appIcon.actor.connect('key-focus-out', () => appIcon.actor.grab_key_focus()),
|
||||
capturedEventId: global.stage.connect('captured-event', (actor, e) => {
|
||||
if (e.type() == Clutter.EventType.KEY_RELEASE && e.get_key_symbol() == (Clutter.KEY_Super_L || Clutter.Super_L)) {
|
||||
this._endHotkeyPreviewCycle(true);
|
||||
}
|
||||
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
})
|
||||
};
|
||||
|
||||
appIcon._hotkeysCycle = appIcon.window;
|
||||
appIcon.window = null;
|
||||
appIcon._previewMenu.open(appIcon);
|
||||
appIcon.actor.grab_key_focus();
|
||||
}
|
||||
|
||||
appIcon._previewMenu.focusNext();
|
||||
} else {
|
||||
// Activate with button = 1, i.e. same as left click
|
||||
let button = 1;
|
||||
this._endHotkeyPreviewCycle();
|
||||
appIcon.activate(button, true);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_endHotkeyPreviewCycle: function(focusWindow) {
|
||||
if (this._hotkeyPreviewCycleInfo) {
|
||||
global.stage.disconnect(this._hotkeyPreviewCycleInfo.capturedEventId);
|
||||
this._hotkeyPreviewCycleInfo.appIcon.actor.disconnect(this._hotkeyPreviewCycleInfo.keyFocusOutId);
|
||||
|
||||
if (focusWindow) {
|
||||
this._hotkeyPreviewCycleInfo.appIcon._previewMenu.activateFocused();
|
||||
}
|
||||
|
||||
this._hotkeyPreviewCycleInfo.appIcon.window = this._hotkeyPreviewCycleInfo.currentWindow;
|
||||
delete this._hotkeyPreviewCycleInfo.appIcon._hotkeysCycle;
|
||||
this._hotkeyPreviewCycleInfo = 0;
|
||||
}
|
||||
},
|
||||
|
||||
_optionalHotKeys: function() {
|
||||
this._hotKeysEnabled = false;
|
||||
if (Me.settings.get_boolean('hot-keys'))
|
||||
this._enableHotKeys();
|
||||
|
||||
this._signalsHandler.add([
|
||||
Me.settings,
|
||||
'changed::hot-keys',
|
||||
Lang.bind(this, function() {
|
||||
if (Me.settings.get_boolean('hot-keys'))
|
||||
Lang.bind(this, this._enableHotKeys)();
|
||||
else
|
||||
Lang.bind(this, this._disableHotKeys)();
|
||||
})
|
||||
]);
|
||||
},
|
||||
|
||||
_resetHotkeys: function() {
|
||||
this._disableHotKeys();
|
||||
this._enableHotKeys();
|
||||
},
|
||||
|
||||
_enableHotKeys: function() {
|
||||
if (this._hotKeysEnabled)
|
||||
return;
|
||||
|
||||
//3.32 introduced app hotkeys, disable them to prevent conflicts
|
||||
if (Main.wm._switchToApplication) {
|
||||
for (let i = 1; i < 10; ++i) {
|
||||
Utils.removeKeybinding(GS_HOTKEYS_KEY + i);
|
||||
}
|
||||
}
|
||||
|
||||
// Setup keyboard bindings for taskbar elements
|
||||
let shortcutNumKeys = Me.settings.get_string('shortcut-num-keys');
|
||||
let bothNumKeys = shortcutNumKeys == 'BOTH';
|
||||
let keys = [];
|
||||
|
||||
if (bothNumKeys || shortcutNumKeys == 'NUM_ROW') {
|
||||
keys.push('app-hotkey-', 'app-shift-hotkey-', 'app-ctrl-hotkey-'); // Regular numbers
|
||||
}
|
||||
|
||||
if (bothNumKeys || shortcutNumKeys == 'NUM_KEYPAD') {
|
||||
keys.push('app-hotkey-kp-', 'app-shift-hotkey-kp-', 'app-ctrl-hotkey-kp-'); // Key-pad numbers
|
||||
}
|
||||
|
||||
keys.forEach( function(key) {
|
||||
for (let i = 0; i < this._numHotkeys; i++) {
|
||||
let appNum = i;
|
||||
|
||||
Utils.addKeybinding(key + (i + 1), Me.settings, () => this._activateApp(appNum));
|
||||
}
|
||||
}, this);
|
||||
|
||||
this._hotKeysEnabled = true;
|
||||
|
||||
if (Me.settings.get_string('hotkeys-overlay-combo') === 'ALWAYS')
|
||||
this.taskbar.toggleNumberOverlay(true);
|
||||
},
|
||||
|
||||
_disableHotKeys: function() {
|
||||
if (!this._hotKeysEnabled)
|
||||
return;
|
||||
|
||||
let keys = ['app-hotkey-', 'app-shift-hotkey-', 'app-ctrl-hotkey-', // Regular numbers
|
||||
'app-hotkey-kp-', 'app-shift-hotkey-kp-', 'app-ctrl-hotkey-kp-']; // Key-pad numbers
|
||||
keys.forEach( function(key) {
|
||||
for (let i = 0; i < this._numHotkeys; i++) {
|
||||
Utils.removeKeybinding(key + (i + 1));
|
||||
}
|
||||
}, this);
|
||||
|
||||
if (Main.wm._switchToApplication) {
|
||||
let gsSettings = new Gio.Settings({ schema_id: imports.ui.windowManager.SHELL_KEYBINDINGS_SCHEMA });
|
||||
|
||||
for (let i = 1; i < 10; ++i) {
|
||||
Utils.addKeybinding(GS_HOTKEYS_KEY + i, gsSettings, Main.wm._switchToApplication.bind(Main.wm));
|
||||
}
|
||||
}
|
||||
|
||||
this._hotKeysEnabled = false;
|
||||
|
||||
this.taskbar.toggleNumberOverlay(false);
|
||||
},
|
||||
|
||||
_optionalNumberOverlay: function() {
|
||||
// Enable extra shortcut
|
||||
if (Me.settings.get_boolean('hot-keys'))
|
||||
this._enableExtraShortcut();
|
||||
|
||||
this._signalsHandler.add([
|
||||
Me.settings,
|
||||
'changed::hot-keys',
|
||||
Lang.bind(this, this._checkHotkeysOptions)
|
||||
], [
|
||||
Me.settings,
|
||||
'changed::hotkeys-overlay-combo',
|
||||
Lang.bind(this, function() {
|
||||
if (Me.settings.get_boolean('hot-keys') && Me.settings.get_string('hotkeys-overlay-combo') === 'ALWAYS')
|
||||
this.taskbar.toggleNumberOverlay(true);
|
||||
else
|
||||
this.taskbar.toggleNumberOverlay(false);
|
||||
})
|
||||
], [
|
||||
Me.settings,
|
||||
'changed::shortcut-num-keys',
|
||||
() => this._resetHotkeys()
|
||||
]);
|
||||
},
|
||||
|
||||
_checkHotkeysOptions: function() {
|
||||
if (Me.settings.get_boolean('hot-keys'))
|
||||
this._enableExtraShortcut();
|
||||
else
|
||||
this._disableExtraShortcut();
|
||||
},
|
||||
|
||||
_enableExtraShortcut: function() {
|
||||
Utils.addKeybinding('shortcut', Me.settings, () => this._showOverlay(true));
|
||||
},
|
||||
|
||||
_disableExtraShortcut: function() {
|
||||
Utils.removeKeybinding('shortcut');
|
||||
},
|
||||
|
||||
_showOverlay: function(overlayFromShortcut) {
|
||||
//wait for intellihide timeout initialization
|
||||
if (!this._panel.intellihide) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Restart the counting if the shortcut is pressed again
|
||||
if (this._numberOverlayTimeoutId) {
|
||||
Mainloop.source_remove(this._numberOverlayTimeoutId);
|
||||
this._numberOverlayTimeoutId = 0;
|
||||
}
|
||||
|
||||
let hotkey_option = Me.settings.get_string('hotkeys-overlay-combo');
|
||||
|
||||
if (hotkey_option === 'NEVER')
|
||||
return;
|
||||
|
||||
if (hotkey_option === 'TEMPORARILY' || overlayFromShortcut)
|
||||
this.taskbar.toggleNumberOverlay(true);
|
||||
|
||||
this._panel.intellihide.revealAndHold(Intellihide.Hold.TEMPORARY);
|
||||
|
||||
let timeout = OVERLAY_TIMEOUT;
|
||||
|
||||
if (overlayFromShortcut) {
|
||||
timeout = SHORTCUT_TIMEOUT;
|
||||
}
|
||||
|
||||
// Hide the overlay/dock after the timeout
|
||||
this._numberOverlayTimeoutId = Mainloop.timeout_add(timeout, Lang.bind(this, function() {
|
||||
this._numberOverlayTimeoutId = 0;
|
||||
|
||||
if (hotkey_option != 'ALWAYS') {
|
||||
this.taskbar.toggleNumberOverlay(false);
|
||||
}
|
||||
|
||||
this._panel.intellihide.release(Intellihide.Hold.TEMPORARY);
|
||||
}));
|
||||
}
|
||||
});
|
||||
Executable
+927
@@ -0,0 +1,927 @@
|
||||
/*
|
||||
* This file is part of the Zorin Taskbar extension for Zorin OS.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Credits:
|
||||
* This file is based on code from the Dash to Dock extension by micheleg
|
||||
* and code from the Dash to Panel extension
|
||||
*
|
||||
* Code to re-anchor the panel was taken from Thoma5 BottomPanel:
|
||||
* https://github.com/Thoma5/gnome-shell-extension-bottompanel
|
||||
*
|
||||
* Pattern for moving clock based on Frippery Move Clock by R M Yorston
|
||||
* http://frippery.org/extensions/
|
||||
*
|
||||
* 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 = Me.imports.panel;
|
||||
const Pos = Me.imports.panelPositions;
|
||||
const Proximity = Me.imports.proximity;
|
||||
const Taskbar = Me.imports.taskbar;
|
||||
const Utils = Me.imports.utils;
|
||||
|
||||
const Config = imports.misc.config;
|
||||
const Lang = imports.lang;
|
||||
const Gi = imports._gi;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.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 WorkspacesView = imports.ui.workspacesView;
|
||||
|
||||
var dtpPanelManager = Utils.defineClass({
|
||||
Name: 'ZorinTaskbar.PanelManager',
|
||||
|
||||
_init: function() {
|
||||
this.overview = new Overview.dtpOverview();
|
||||
this.panelsElementPositions = {};
|
||||
|
||||
this._saveMonitors();
|
||||
|
||||
Utils.getAppDisplayViews().forEach(v => {
|
||||
Utils.wrapActor(v.view);
|
||||
Utils.wrapActor(v.view._grid);
|
||||
});
|
||||
},
|
||||
|
||||
enable: function(reset) {
|
||||
this.panelPositions = Pos.getSettingsPositions(Me.settings, 'panel-positions');
|
||||
this.dtpPrimaryMonitor = Main.layoutManager.primaryMonitor; // The real primary monitor should always have the main panel
|
||||
this.proximityManager = new Proximity.ProximityManager();
|
||||
|
||||
Utils.wrapActor(Main.panel);
|
||||
Utils.wrapActor(Main.overview.dash || 0);
|
||||
|
||||
this.primaryPanel = this._createPanel(this.dtpPrimaryMonitor, false);
|
||||
this.allPanels = [ this.primaryPanel ];
|
||||
|
||||
this.overview.enable(this.primaryPanel);
|
||||
|
||||
if (Me.settings.get_boolean('multi-monitors')) {
|
||||
Main.layoutManager.monitors.filter(m => m != this.dtpPrimaryMonitor).forEach(m => {
|
||||
this.allPanels.push(this._createPanel(m, true));
|
||||
});
|
||||
}
|
||||
|
||||
global.zorinTaskbar.panels = this.allPanels;
|
||||
global.zorinTaskbar.emit('panels-created');
|
||||
|
||||
this.allPanels.forEach(p => {
|
||||
let panelPosition = p.getPosition();
|
||||
let leftOrRight = (panelPosition == St.Side.LEFT || panelPosition == St.Side.RIGHT);
|
||||
|
||||
p.panelBox.set_size(
|
||||
leftOrRight ? -1 : p.geom.w + p.geom.lrPadding,
|
||||
leftOrRight ? p.geom.h + p.geom.tbPadding : -1
|
||||
);
|
||||
|
||||
this._findPanelMenuButtons(p.panelBox).forEach(pmb => this._adjustPanelMenuButton(pmb, p.monitor, panelPosition));
|
||||
|
||||
p.taskbar.iconAnimator.start();
|
||||
});
|
||||
|
||||
//in 3.32, BoxPointer now inherits St.Widget
|
||||
if (BoxPointer.BoxPointer.prototype.vfunc_get_preferred_height) {
|
||||
let panelManager = this;
|
||||
|
||||
Utils.hookVfunc(BoxPointer.BoxPointer.prototype, '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);
|
||||
|
||||
return panelManager._getBoxPointerPreferredHeight(this, alloc);
|
||||
});
|
||||
}
|
||||
|
||||
this._updatePanelElementPositions();
|
||||
this.setFocusedMonitor(this.dtpPrimaryMonitor);
|
||||
|
||||
if (this.primaryPanel.checkIfVertical()) {
|
||||
Main.wm._getPositionForDirection = newGetPositionForDirection;
|
||||
}
|
||||
|
||||
if (reset) return;
|
||||
|
||||
this._oldViewSelectorAnimateIn = Main.overview.viewSelector._animateIn;
|
||||
Main.overview.viewSelector._animateIn = Lang.bind(this.primaryPanel, newViewSelectorAnimateIn);
|
||||
this._oldViewSelectorAnimateOut = Main.overview.viewSelector._animateOut;
|
||||
Main.overview.viewSelector._animateOut = Lang.bind(this.primaryPanel, newViewSelectorAnimateOut);
|
||||
|
||||
if (Config.PACKAGE_VERSION > '3.35.1') {
|
||||
this._oldDoSpringAnimation = AppDisplay.BaseAppView.prototype._doSpringAnimation;
|
||||
AppDisplay.BaseAppView.prototype._doSpringAnimation = newDoSpringAnimation;
|
||||
}
|
||||
|
||||
this._oldUpdatePanelBarrier = Main.layoutManager._updatePanelBarrier;
|
||||
Main.layoutManager._updatePanelBarrier = (panel) => {
|
||||
let panelUpdates = panel ? [panel] : this.allPanels;
|
||||
|
||||
panelUpdates.forEach(p => newUpdatePanelBarrier.call(Main.layoutManager, p));
|
||||
};
|
||||
Main.layoutManager._updatePanelBarrier();
|
||||
|
||||
this._oldUpdateHotCorners = Main.layoutManager._updateHotCorners;
|
||||
Main.layoutManager._updateHotCorners = Lang.bind(Main.layoutManager, newUpdateHotCorners);
|
||||
Main.layoutManager._updateHotCorners();
|
||||
|
||||
if (Main.layoutManager._interfaceSettings) {
|
||||
this._enableHotCornersId = Main.layoutManager._interfaceSettings.connect('changed::enable-hot-corners', () => Main.layoutManager._updateHotCorners());
|
||||
}
|
||||
|
||||
this._oldOverviewRelayout = Main.overview._relayout;
|
||||
Main.overview._relayout = Lang.bind(Main.overview, this._newOverviewRelayout);
|
||||
|
||||
this._oldUpdateWorkspacesViews = Main.overview.viewSelector._workspacesDisplay._updateWorkspacesViews;
|
||||
Main.overview.viewSelector._workspacesDisplay._updateWorkspacesViews = Lang.bind(Main.overview.viewSelector._workspacesDisplay, this._newUpdateWorkspacesViews);
|
||||
|
||||
this._oldGetShowAppsButton = Main.overview.getShowAppsButton;
|
||||
Main.overview.getShowAppsButton = this._newGetShowAppsButton.bind(this);
|
||||
|
||||
this._needsDashItemContainerAllocate = !Dash.DashItemContainer.prototype.hasOwnProperty('vfunc_allocate');
|
||||
|
||||
if (this._needsDashItemContainerAllocate) {
|
||||
Utils.hookVfunc(Dash.DashItemContainer.prototype, 'allocate', this._newDashItemContainerAllocate);
|
||||
}
|
||||
|
||||
// Since Gnome 3.8 dragging an app without having opened the overview before cause the attemp to
|
||||
//animate a null target since some variables are not initialized when the viewSelector is created
|
||||
if(Main.overview.viewSelector._activePage == null)
|
||||
Main.overview.viewSelector._activePage = Main.overview.viewSelector._workspacesPage;
|
||||
|
||||
LookingGlass.LookingGlass.prototype._oldResize = LookingGlass.LookingGlass.prototype._resize;
|
||||
LookingGlass.LookingGlass.prototype._resize = _newLookingGlassResize;
|
||||
|
||||
LookingGlass.LookingGlass.prototype._oldOpen = LookingGlass.LookingGlass.prototype.open;
|
||||
LookingGlass.LookingGlass.prototype.open = _newLookingGlassOpen;
|
||||
|
||||
this._signalsHandler = new Utils.GlobalSignalsHandler();
|
||||
|
||||
if (Config.PACKAGE_VERSION > '3.35.9') {
|
||||
let currentAppsView;
|
||||
|
||||
this._oldAnimateIconPosition = IconGrid.animateIconPosition;
|
||||
IconGrid.animateIconPosition = newAnimateIconPosition.bind(this);
|
||||
|
||||
this._signalsHandler.add(
|
||||
[
|
||||
Utils.DisplayWrapper.getScreen(),
|
||||
'window-entered-monitor',
|
||||
() => this._needsIconAllocate = 1
|
||||
]
|
||||
);
|
||||
|
||||
Utils.getAppDisplayViews().forEach(v => {
|
||||
if (!v.control || v.control.has_style_pseudo_class('checked')) {
|
||||
currentAppsView = v;
|
||||
}
|
||||
|
||||
if (v.control) {
|
||||
this._signalsHandler.add(
|
||||
[
|
||||
v.control,
|
||||
'clicked',
|
||||
() => {
|
||||
this._needsIconAllocate = currentAppsView != v;
|
||||
currentAppsView = v;
|
||||
}
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
this._signalsHandler.add(
|
||||
[
|
||||
v.view,
|
||||
'notify::visible',
|
||||
() => this._needsIconAllocate = !(currentAppsView != v && !v.view.visible)
|
||||
],
|
||||
[
|
||||
v.view._grid,
|
||||
'animation-done',
|
||||
() => this._needsIconAllocate = 0
|
||||
]
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
//listen settings
|
||||
this._signalsHandler.add(
|
||||
[
|
||||
Me.settings,
|
||||
[
|
||||
'changed::multi-monitors',
|
||||
'changed::isolate-monitors',
|
||||
'changed::panel-positions'
|
||||
],
|
||||
() => this._reset()
|
||||
],
|
||||
[
|
||||
Me.settings,
|
||||
'changed::panel-element-positions',
|
||||
() => this._updatePanelElementPositions()
|
||||
],
|
||||
[
|
||||
Me.settings,
|
||||
'changed::intellihide-key-toggle-text',
|
||||
() => this._setKeyBindings(true)
|
||||
],
|
||||
[
|
||||
Utils.DisplayWrapper.getMonitorManager(),
|
||||
'monitors-changed',
|
||||
() => {
|
||||
if (Main.layoutManager.primaryMonitor) {
|
||||
this._saveMonitors();
|
||||
this._reset();
|
||||
}
|
||||
}
|
||||
]
|
||||
);
|
||||
|
||||
Panel.panelBoxes.forEach(c => this._signalsHandler.add(
|
||||
[Main.panel[c], 'actor-added', (parent, child) => this._adjustPanelMenuButton(this._getPanelMenuButton(child), this.primaryPanel.monitor, this.primaryPanel.getPosition())]
|
||||
));
|
||||
|
||||
this._setKeyBindings(true);
|
||||
},
|
||||
|
||||
disable: function(reset) {
|
||||
this.overview.disable();
|
||||
this.proximityManager.destroy();
|
||||
|
||||
this.allPanels.forEach(p => {
|
||||
p.taskbar.iconAnimator.pause();
|
||||
|
||||
this._findPanelMenuButtons(p.panelBox).forEach(pmb => {
|
||||
if (pmb.menu._boxPointer._dtpGetPreferredHeightId) {
|
||||
pmb.menu._boxPointer._container.disconnect(pmb.menu._boxPointer._dtpGetPreferredHeightId);
|
||||
}
|
||||
|
||||
pmb.menu._boxPointer.sourceActor = pmb.menu._boxPointer._dtpSourceActor;
|
||||
delete pmb.menu._boxPointer._dtpSourceActor;
|
||||
pmb.menu._boxPointer._userArrowSide = St.Side.TOP;
|
||||
})
|
||||
|
||||
this._removePanelBarriers(p);
|
||||
|
||||
p.disable();
|
||||
|
||||
let clipContainer = p.panelBox.get_parent();
|
||||
|
||||
Main.layoutManager._untrackActor(p.panelBox);
|
||||
Main.layoutManager.removeChrome(clipContainer);
|
||||
|
||||
if (p.isStandalone) {
|
||||
p.panelBox.destroy();
|
||||
} else {
|
||||
p.panelBox.remove_child(p);
|
||||
p.remove_child(p.panel.actor);
|
||||
p.panelBox.add(p.panel.actor);
|
||||
|
||||
p.panelBox.set_position(clipContainer.x, clipContainer.y);
|
||||
|
||||
clipContainer.remove_child(p.panelBox);
|
||||
Main.layoutManager.addChrome(p.panelBox, { affectsStruts: true, trackFullscreen: true });
|
||||
}
|
||||
});
|
||||
|
||||
if (BoxPointer.BoxPointer.prototype.vfunc_get_preferred_height) {
|
||||
Utils.hookVfunc(BoxPointer.BoxPointer.prototype, 'get_preferred_height', BoxPointer.BoxPointer.prototype.vfunc_get_preferred_height);
|
||||
}
|
||||
|
||||
delete Main.wm._getPositionForDirection;
|
||||
|
||||
if (Main.layoutManager.primaryMonitor) {
|
||||
Main.layoutManager.panelBox.set_position(Main.layoutManager.primaryMonitor.x, Main.layoutManager.primaryMonitor.y);
|
||||
Main.layoutManager.panelBox.set_size(Main.layoutManager.primaryMonitor.width, -1);
|
||||
}
|
||||
|
||||
if (reset) return;
|
||||
|
||||
this._setKeyBindings(false);
|
||||
|
||||
this._signalsHandler.destroy();
|
||||
|
||||
Main.layoutManager._updateHotCorners = this._oldUpdateHotCorners;
|
||||
Main.layoutManager._updateHotCorners();
|
||||
|
||||
if (this._enableHotCornersId) {
|
||||
Main.layoutManager._interfaceSettings.disconnect(this._enableHotCornersId);
|
||||
}
|
||||
|
||||
Main.layoutManager._updatePanelBarrier = this._oldUpdatePanelBarrier;
|
||||
Main.layoutManager._updatePanelBarrier();
|
||||
|
||||
Main.overview.viewSelector._animateIn = this._oldViewSelectorAnimateIn;
|
||||
Main.overview.viewSelector._animateOut = this._oldViewSelectorAnimateOut;
|
||||
|
||||
Main.overview._relayout = this._oldOverviewRelayout;
|
||||
Main.overview._relayout();
|
||||
|
||||
Main.overview.viewSelector._workspacesDisplay._updateWorkspacesViews = this._oldUpdateWorkspacesViews;
|
||||
|
||||
Utils.getPanelGhost().set_size(-1, -1);
|
||||
|
||||
if (this._needsDashItemContainerAllocate) {
|
||||
Utils.hookVfunc(Dash.DashItemContainer.prototype, 'allocate', function(box, flags) { this.vfunc_allocate(box, flags); });
|
||||
}
|
||||
|
||||
if (this._oldDoSpringAnimation) {
|
||||
AppDisplay.BaseAppView.prototype._doSpringAnimation = this._oldDoSpringAnimation;
|
||||
}
|
||||
|
||||
if (this._oldAnimateIconPosition) {
|
||||
IconGrid.animateIconPosition = this._oldAnimateIconPosition;
|
||||
}
|
||||
|
||||
LookingGlass.LookingGlass.prototype._resize = LookingGlass.LookingGlass.prototype._oldResize;
|
||||
delete LookingGlass.LookingGlass.prototype._oldResize;
|
||||
|
||||
LookingGlass.LookingGlass.prototype.open = LookingGlass.LookingGlass.prototype._oldOpen;
|
||||
delete LookingGlass.LookingGlass.prototype._oldOpen
|
||||
},
|
||||
|
||||
setFocusedMonitor: function(monitor, ignoreRelayout) {
|
||||
this._needsIconAllocate = 1;
|
||||
|
||||
if (!this.checkIfFocusedMonitor(monitor)) {
|
||||
Main.overview.viewSelector._workspacesDisplay._primaryIndex = monitor.index;
|
||||
|
||||
Main.overview._overview.clear_constraints();
|
||||
Main.overview._overview.add_constraint(new Layout.MonitorConstraint({ index: monitor.index }));
|
||||
|
||||
if (ignoreRelayout) return;
|
||||
|
||||
this._newOverviewRelayout.call(Main.overview);
|
||||
}
|
||||
},
|
||||
|
||||
_saveMonitors: function() {
|
||||
//Mutter meta_monitor_manager_get_primary_monitor (global.display.get_primary_monitor()) doesn't return the same
|
||||
//monitor as GDK gdk_screen_get_primary_monitor (imports.gi.Gdk.Screen.get_default().get_primary_monitor()).
|
||||
//Since the Mutter function is what's used in gnome-shell and we can't access it from the settings dialog, store
|
||||
//the monitors information in a setting so we can use the same monitor indexes as the ones in gnome-shell
|
||||
let primaryIndex = Main.layoutManager.primaryIndex;
|
||||
let monitors = [primaryIndex];
|
||||
|
||||
Main.layoutManager.monitors.filter(m => m.index != primaryIndex).forEach(m => monitors.push(m.index));
|
||||
Me.settings.set_value('available-monitors', new GLib.Variant('ai', monitors));
|
||||
},
|
||||
|
||||
checkIfFocusedMonitor: function(monitor) {
|
||||
return Main.overview.viewSelector._workspacesDisplay._primaryIndex == monitor.index;
|
||||
},
|
||||
|
||||
_createPanel: function(monitor, isStandalone) {
|
||||
let panelBox;
|
||||
let panel;
|
||||
let clipContainer = new Clutter.Actor();
|
||||
|
||||
if (isStandalone) {
|
||||
panelBox = new St.BoxLayout({ name: 'panelBox' });
|
||||
} else {
|
||||
panelBox = Main.layoutManager.panelBox;
|
||||
Main.layoutManager._untrackActor(panelBox);
|
||||
panelBox.remove_child(Main.panel.actor);
|
||||
Main.layoutManager.removeChrome(panelBox);
|
||||
}
|
||||
|
||||
Main.layoutManager.addChrome(clipContainer, { affectsInputRegion: false });
|
||||
clipContainer.add_child(panelBox);
|
||||
Main.layoutManager.trackChrome(panelBox, { trackFullscreen: true, affectsStruts: true, affectsInputRegion: true });
|
||||
|
||||
panel = new Panel.dtpPanel(this, monitor, panelBox, isStandalone);
|
||||
panelBox.add(panel);
|
||||
panel.enable();
|
||||
|
||||
panelBox.visible = true;
|
||||
if (monitor.inFullscreen) {
|
||||
panelBox.hide();
|
||||
}
|
||||
panelBox.set_position(0, 0);
|
||||
|
||||
return panel;
|
||||
},
|
||||
|
||||
_reset: function() {
|
||||
this.disable(true);
|
||||
this.allPanels = [];
|
||||
this.enable(true);
|
||||
},
|
||||
|
||||
_updatePanelElementPositions: function() {
|
||||
this.panelsElementPositions = Pos.getSettingsPositions(Me.settings, 'panel-element-positions');
|
||||
this.allPanels.forEach(p => p.updateElementPositions());
|
||||
},
|
||||
|
||||
_adjustPanelMenuButton: function(button, monitor, arrowSide) {
|
||||
if (button) {
|
||||
Utils.wrapActor(button);
|
||||
button.menu._boxPointer._dtpSourceActor = button.menu._boxPointer.sourceActor;
|
||||
button.menu._boxPointer.sourceActor = button.actor;
|
||||
button.menu._boxPointer._userArrowSide = arrowSide;
|
||||
button.menu._boxPointer._dtpInPanel = 1;
|
||||
|
||||
if (!button.menu._boxPointer.vfunc_get_preferred_height) {
|
||||
button.menu._boxPointer._dtpGetPreferredHeightId = button.menu._boxPointer._container.connect('get-preferred-height', (actor, forWidth, alloc) => {
|
||||
this._getBoxPointerPreferredHeight(button.menu._boxPointer, alloc, monitor);
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_getBoxPointerPreferredHeight: function(boxPointer, alloc, monitor) {
|
||||
if (boxPointer._dtpInPanel && boxPointer.sourceActor && Me.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
|
||||
|
||||
if (excess > 0) {
|
||||
alloc.natural_size -= excess;
|
||||
}
|
||||
}
|
||||
|
||||
return [alloc.min_size, alloc.natural_size];
|
||||
},
|
||||
|
||||
_findPanelMenuButtons: function(container) {
|
||||
let panelMenuButtons = [];
|
||||
let panelMenuButton;
|
||||
|
||||
let find = parent => parent.get_children().forEach(c => {
|
||||
if ((panelMenuButton = this._getPanelMenuButton(c))) {
|
||||
panelMenuButtons.push(panelMenuButton);
|
||||
}
|
||||
|
||||
find(c);
|
||||
});
|
||||
|
||||
find(container);
|
||||
|
||||
return panelMenuButtons;
|
||||
},
|
||||
|
||||
_removePanelBarriers: function(panel) {
|
||||
if (panel.isStandalone && panel._rightPanelBarrier) {
|
||||
panel._rightPanelBarrier.destroy();
|
||||
}
|
||||
|
||||
if (panel._leftPanelBarrier) {
|
||||
panel._leftPanelBarrier.destroy();
|
||||
delete panel._leftPanelBarrier;
|
||||
}
|
||||
},
|
||||
|
||||
_getPanelMenuButton: function(obj) {
|
||||
return obj._delegate && obj._delegate instanceof PanelMenu.Button ? obj._delegate : 0;
|
||||
},
|
||||
|
||||
_setKeyBindings: function(enable) {
|
||||
let keys = {
|
||||
'intellihide-key-toggle': () => this.allPanels.forEach(p => p.intellihide.toggle())
|
||||
};
|
||||
|
||||
Object.keys(keys).forEach(k => {
|
||||
Utils.removeKeybinding(k);
|
||||
|
||||
if (enable) {
|
||||
Utils.addKeybinding(k, Me.settings, keys[k], Shell.ActionMode.NORMAL);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
_newOverviewRelayout: function() {
|
||||
// To avoid updating the position and size of the workspaces
|
||||
// we just hide the overview. The positions will be updated
|
||||
// when it is next shown.
|
||||
this.hide();
|
||||
|
||||
let workArea = Main.layoutManager.getWorkAreaForMonitor(Main.overview.viewSelector._workspacesDisplay._primaryIndex);
|
||||
|
||||
this._coverPane.set_position(0, workArea.y);
|
||||
this._coverPane.set_size(workArea.width, workArea.height);
|
||||
|
||||
this._updateBackgrounds();
|
||||
},
|
||||
|
||||
_newUpdateWorkspacesViews: function() {
|
||||
for (let i = 0; i < this._workspacesViews.length; i++)
|
||||
this._workspacesViews[i].destroy();
|
||||
|
||||
this._workspacesViews = [];
|
||||
|
||||
let monitors = Main.layoutManager.monitors;
|
||||
|
||||
for (let i = 0; i < monitors.length; i++) {
|
||||
let workspaces;
|
||||
let view;
|
||||
if (this._workspacesOnlyOnPrimary && i != Main.layoutManager.primaryIndex) {
|
||||
view = new WorkspacesView.ExtraWorkspaceView(i);
|
||||
view.getActiveWorkspace = view.getActiveWorkspace || function() { return this._workspace; };
|
||||
workspaces = [view._workspace];
|
||||
} else {
|
||||
view = new WorkspacesView.WorkspacesView(i, this._scrollAdjustment || 0);
|
||||
workspaces = view._workspaces;
|
||||
}
|
||||
|
||||
Utils.wrapActor(view);
|
||||
view.actor.connect('scroll-event', this._onScrollEvent.bind(this));
|
||||
if (i == Main.layoutManager.primaryIndex && view.scrollAdjustment) {
|
||||
this._scrollAdjustment = view.scrollAdjustment;
|
||||
this._scrollAdjustment.connect('notify::value',
|
||||
this._scrollValueChanged.bind(this));
|
||||
}
|
||||
|
||||
workspaces.forEach(w => w.setFullGeometry = geom => w._fullGeometry = geom);
|
||||
this._workspacesViews.push(view);
|
||||
}
|
||||
|
||||
this._workspacesViews.forEach(wv => Main.layoutManager.overviewGroup.add_actor(wv.actor));
|
||||
|
||||
if (this._syncWorkspacesFullGeometry) {
|
||||
//gnome-shell 3.36.4
|
||||
if (this._fullGeometry)
|
||||
this._syncWorkspacesFullGeometry();
|
||||
if (this._actualGeometry)
|
||||
this._syncWorkspacesActualGeometry();
|
||||
} else if (this._updateWorkspacesFullGeometry) {
|
||||
this._updateWorkspacesFullGeometry();
|
||||
this._updateWorkspacesActualGeometry();
|
||||
}
|
||||
},
|
||||
|
||||
_newGetShowAppsButton: function() {
|
||||
let focusedMonitorIndex = Utils.findIndex(this.allPanels, p => this.checkIfFocusedMonitor(p.monitor));
|
||||
|
||||
return this.allPanels[focusedMonitorIndex].taskbar.showAppsButton;
|
||||
},
|
||||
|
||||
_newDashItemContainerAllocate: function(box, flags) {
|
||||
if (this.child == null)
|
||||
return;
|
||||
|
||||
Utils.setAllocation(this, box, flags);
|
||||
|
||||
let availWidth = box.x2 - box.x1;
|
||||
let availHeight = box.y2 - box.y1;
|
||||
let [minChildWidth, minChildHeight, natChildWidth, natChildHeight] = this.child.get_preferred_size();
|
||||
let [childScaleX, childScaleY] = this.child.get_scale();
|
||||
|
||||
let childWidth = Math.min(natChildWidth * childScaleX, availWidth);
|
||||
let childHeight = Math.min(natChildHeight * childScaleY, availHeight);
|
||||
let childBox = new Clutter.ActorBox();
|
||||
|
||||
childBox.x1 = (availWidth - childWidth) / 2;
|
||||
childBox.y1 = (availHeight - childHeight) / 2;
|
||||
childBox.x2 = childBox.x1 + childWidth;
|
||||
childBox.y2 = childBox.y1 + childHeight;
|
||||
|
||||
Utils.allocate(this.child, childBox, flags);
|
||||
},
|
||||
});
|
||||
|
||||
// This class drives long-running icon animations, to keep them running in sync
|
||||
// with each other.
|
||||
var IconAnimator = Utils.defineClass({
|
||||
Name: 'ZorinTaskbar.IconAnimator',
|
||||
|
||||
_init: function(actor) {
|
||||
this._count = 0;
|
||||
this._started = false;
|
||||
this._animations = {
|
||||
dance: [],
|
||||
};
|
||||
this._timeline = new Clutter.Timeline({
|
||||
duration: 3000,
|
||||
repeat_count: -1,
|
||||
});
|
||||
|
||||
/* Just use the construction property when no need to support 3.36 */
|
||||
if (this._timeline.set_actor)
|
||||
this._timeline.set_actor(actor);
|
||||
|
||||
this._timeline.connect('new-frame', () => {
|
||||
const progress = this._timeline.get_progress();
|
||||
const danceRotation = progress < 1/6 ? 15*Math.sin(progress*24*Math.PI) : 0;
|
||||
const dancers = this._animations.dance;
|
||||
for (let i = 0, iMax = dancers.length; i < iMax; i++) {
|
||||
dancers[i].target.rotation_angle_z = danceRotation;
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
this._timeline.stop();
|
||||
this._timeline = null;
|
||||
for (const name in this._animations) {
|
||||
const pairs = this._animations[name];
|
||||
for (let i = 0, iMax = pairs.length; i < iMax; i++) {
|
||||
const pair = pairs[i];
|
||||
pair.target.disconnect(pair.targetDestroyId);
|
||||
}
|
||||
}
|
||||
this._animations = null;
|
||||
},
|
||||
|
||||
pause: function() {
|
||||
if (this._started && this._count > 0) {
|
||||
this._timeline.stop();
|
||||
}
|
||||
this._started = false;
|
||||
},
|
||||
|
||||
start: function() {
|
||||
if (!this._started && this._count > 0) {
|
||||
this._timeline.start();
|
||||
}
|
||||
this._started = true;
|
||||
},
|
||||
|
||||
addAnimation: function(target, name) {
|
||||
const targetDestroyId = target.connect('destroy', () => this.removeAnimation(target, name));
|
||||
this._animations[name].push({ target, targetDestroyId });
|
||||
if (this._started && this._count === 0) {
|
||||
this._timeline.start();
|
||||
}
|
||||
this._count++;
|
||||
},
|
||||
|
||||
removeAnimation: function(target, name) {
|
||||
const pairs = this._animations[name];
|
||||
for (let i = 0, iMax = pairs.length; i < iMax; i++) {
|
||||
const pair = pairs[i];
|
||||
if (pair.target === target) {
|
||||
target.disconnect(pair.targetDestroyId);
|
||||
pairs.splice(i, 1);
|
||||
this._count--;
|
||||
if (this._started && this._count === 0) {
|
||||
this._timeline.stop();
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
function newViewSelectorAnimateIn(oldPage) {
|
||||
if (oldPage)
|
||||
oldPage.hide();
|
||||
|
||||
let vs = Main.overview.viewSelector;
|
||||
|
||||
vs.emit('page-empty');
|
||||
|
||||
vs._activePage.show();
|
||||
|
||||
if (vs._activePage == vs._appsPage && oldPage == vs._workspacesPage) {
|
||||
// Restore opacity, in case we animated via _fadePageOut
|
||||
vs._activePage.opacity = 255;
|
||||
let animate = Me.settings.get_boolean('animate-show-apps');
|
||||
if(animate)
|
||||
vs.appDisplay.animate(IconGrid.AnimationDirection.IN);
|
||||
} else {
|
||||
vs._fadePageIn();
|
||||
}
|
||||
}
|
||||
|
||||
function newViewSelectorAnimateOut(page) {
|
||||
let oldPage = page;
|
||||
let vs = Main.overview.viewSelector;
|
||||
|
||||
if (page == vs._appsPage &&
|
||||
vs._activePage == vs._workspacesPage &&
|
||||
!Main.overview.animationInProgress) {
|
||||
let animate = Me.settings.get_boolean('animate-show-apps');
|
||||
if(animate)
|
||||
vs.appDisplay.animate(IconGrid.AnimationDirection.OUT, Lang.bind(this,
|
||||
function() {
|
||||
vs._animateIn(oldPage)
|
||||
}));
|
||||
else
|
||||
vs._animateIn(oldPage)
|
||||
} else {
|
||||
vs._fadePageOut(page);
|
||||
}
|
||||
}
|
||||
|
||||
function newGetPositionForDirection(direction, fromWs, toWs) {
|
||||
let [xDest, yDest] = WM.WindowManager.prototype._getPositionForDirection(direction, fromWs, toWs);
|
||||
|
||||
if (direction == Meta.MotionDirection.UP ||
|
||||
direction == Meta.MotionDirection.UP_LEFT ||
|
||||
direction == Meta.MotionDirection.UP_RIGHT) {
|
||||
yDest -= Main.panel.height;
|
||||
} else if (direction != Meta.MotionDirection.LEFT &&
|
||||
direction != Meta.MotionDirection.RIGHT) {
|
||||
yDest += Main.panel.height;
|
||||
}
|
||||
|
||||
return [xDest, yDest];
|
||||
}
|
||||
|
||||
function newDoSpringAnimation(animationDirection) {
|
||||
this._grid.opacity = 255;
|
||||
this._grid.animateSpring(animationDirection, Main.overview.getShowAppsButton());
|
||||
}
|
||||
|
||||
function newAnimateIconPosition(icon, box, flags, nChangedIcons) {
|
||||
if (this._needsIconAllocate) {
|
||||
Utils.allocate(icon, box, flags);
|
||||
return;
|
||||
}
|
||||
|
||||
return this._oldAnimateIconPosition(icon, box, flags, nChangedIcons);;
|
||||
}
|
||||
|
||||
function newUpdateHotCorners() {
|
||||
// destroy old hot corners
|
||||
this.hotCorners.forEach(function(corner) {
|
||||
if (corner)
|
||||
corner.destroy();
|
||||
});
|
||||
this.hotCorners = [];
|
||||
|
||||
//global.settings is ubuntu specific setting to disable the hot corner (Tweak tool > Top Bar > Activities Overview Hot Corner)
|
||||
//this._interfaceSettings is for the setting to disable the hot corner introduced in gnome-shell 3.34
|
||||
if ((global.settings.list_keys().indexOf('enable-hot-corners') >= 0 && !global.settings.get_boolean('enable-hot-corners')) ||
|
||||
(this._interfaceSettings && !this._interfaceSettings.get_boolean('enable-hot-corners'))) {
|
||||
this.emit('hot-corners-changed');
|
||||
return;
|
||||
}
|
||||
|
||||
// build new hot corners
|
||||
for (let i = 0; i < this.monitors.length; i++) {
|
||||
let panel = Utils.find(global.zorinTaskbar.panels, p => p.monitor.index == i);
|
||||
let panelPosition = panel ? panel.getPosition() : St.Side.BOTTOM;
|
||||
let panelTopLeft = panelPosition == St.Side.TOP || panelPosition == St.Side.LEFT;
|
||||
let monitor = this.monitors[i];
|
||||
let cornerX = this._rtl ? monitor.x + monitor.width : monitor.x;
|
||||
let cornerY = monitor.y;
|
||||
|
||||
let haveTopLeftCorner = true;
|
||||
|
||||
// If the panel is on the bottom, unless this is explicitly forced, don't add a topleft
|
||||
// hot corner unless it is actually a top left panel. Otherwise, it stops the mouse
|
||||
// as you are dragging across. In the future, maybe we will automatically move the
|
||||
// hotcorner to the bottom when the panel is positioned at the bottom
|
||||
if (i != this.primaryIndex || !panelTopLeft) {
|
||||
// Check if we have a top left (right for RTL) corner.
|
||||
// I.e. if there is no monitor directly above or to the left(right)
|
||||
let besideX = this._rtl ? monitor.x + 1 : cornerX - 1;
|
||||
let besideY = cornerY;
|
||||
let aboveX = cornerX;
|
||||
let aboveY = cornerY - 1;
|
||||
|
||||
for (let j = 0; j < this.monitors.length; j++) {
|
||||
if (i == j)
|
||||
continue;
|
||||
let otherMonitor = this.monitors[j];
|
||||
if (besideX >= otherMonitor.x &&
|
||||
besideX < otherMonitor.x + otherMonitor.width &&
|
||||
besideY >= otherMonitor.y &&
|
||||
besideY < otherMonitor.y + otherMonitor.height) {
|
||||
haveTopLeftCorner = false;
|
||||
break;
|
||||
}
|
||||
if (aboveX >= otherMonitor.x &&
|
||||
aboveX < otherMonitor.x + otherMonitor.width &&
|
||||
aboveY >= otherMonitor.y &&
|
||||
aboveY < otherMonitor.y + otherMonitor.height) {
|
||||
haveTopLeftCorner = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (haveTopLeftCorner) {
|
||||
let corner = new Layout.HotCorner(this, monitor, cornerX, cornerY);
|
||||
|
||||
corner.setBarrierSize = size => corner.__proto__.setBarrierSize.call(corner, Math.min(size, 32));
|
||||
corner.setBarrierSize(panel ? panel.dtpSize : 32);
|
||||
this.hotCorners.push(corner);
|
||||
} else {
|
||||
this.hotCorners.push(null);
|
||||
}
|
||||
}
|
||||
|
||||
this.emit('hot-corners-changed');
|
||||
}
|
||||
|
||||
function newUpdatePanelBarrier(panel) {
|
||||
let barriers = {
|
||||
_rightPanelBarrier: [(panel.isStandalone ? panel : this)],
|
||||
_leftPanelBarrier: [panel]
|
||||
};
|
||||
|
||||
Object.keys(barriers).forEach(k => {
|
||||
let obj = barriers[k][0];
|
||||
|
||||
if (obj[k]) {
|
||||
obj[k].destroy();
|
||||
obj[k] = null;
|
||||
}
|
||||
});
|
||||
|
||||
if (!this.primaryMonitor || !panel.panelBox.height) {
|
||||
return;
|
||||
}
|
||||
|
||||
let barrierSize = Math.min(10, panel.panelBox.height);
|
||||
let fixed1 = panel.monitor.y;
|
||||
let fixed2 = panel.monitor.y + barrierSize;
|
||||
|
||||
if (panel.checkIfVertical()) {
|
||||
barriers._rightPanelBarrier.push(panel.monitor.y + panel.monitor.height, Meta.BarrierDirection.POSITIVE_Y);
|
||||
barriers._leftPanelBarrier.push(panel.monitor.y, Meta.BarrierDirection.NEGATIVE_Y);
|
||||
} else {
|
||||
barriers._rightPanelBarrier.push(panel.monitor.x + panel.monitor.width, Meta.BarrierDirection.NEGATIVE_X);
|
||||
barriers._leftPanelBarrier.push(panel.monitor.x, Meta.BarrierDirection.POSITIVE_X);
|
||||
}
|
||||
|
||||
switch (panel.getPosition()) {
|
||||
//values are initialized as St.Side.TOP
|
||||
case St.Side.BOTTOM:
|
||||
fixed1 = panel.monitor.y + panel.monitor.height - barrierSize;
|
||||
fixed2 = panel.monitor.y + panel.monitor.height;
|
||||
break;
|
||||
case St.Side.LEFT:
|
||||
fixed1 = panel.monitor.x;
|
||||
fixed2 = panel.monitor.x + barrierSize;
|
||||
break;
|
||||
case St.Side.RIGHT:
|
||||
fixed1 = panel.monitor.x + panel.monitor.width;
|
||||
fixed2 = panel.monitor.x + panel.monitor.width - barrierSize;
|
||||
break;
|
||||
}
|
||||
|
||||
//remove left barrier if it overlaps one of the hotcorners
|
||||
for (let k in this.hotCorners) {
|
||||
let hc = this.hotCorners[k];
|
||||
|
||||
if (hc && hc._monitor == panel.monitor &&
|
||||
((fixed1 == hc._x || fixed2 == hc._x) || fixed1 == hc._y || fixed2 == hc._y)) {
|
||||
delete barriers._leftPanelBarrier;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Object.keys(barriers).forEach(k => {
|
||||
let barrierOptions = {
|
||||
display: global.display,
|
||||
directions: barriers[k][2]
|
||||
};
|
||||
|
||||
barrierOptions[panel.varCoord.c1] = barrierOptions[panel.varCoord.c2] = barriers[k][1];
|
||||
barrierOptions[panel.fixedCoord.c1] = fixed1;
|
||||
barrierOptions[panel.fixedCoord.c2] = fixed2;
|
||||
|
||||
barriers[k][0][k] = new Meta.Barrier(barrierOptions);
|
||||
});
|
||||
}
|
||||
|
||||
function _newLookingGlassResize() {
|
||||
let primaryMonitorPanel = Utils.find(global.zorinTaskbar.panels, p => p.monitor == Main.layoutManager.primaryMonitor);
|
||||
let topOffset = primaryMonitorPanel.getPosition() == St.Side.TOP ? primaryMonitorPanel.dtpSize + 8 : 32;
|
||||
|
||||
this._oldResize();
|
||||
Utils.wrapActor(this);
|
||||
Utils.wrapActor(this._objInspector);
|
||||
|
||||
this._hiddenY = Main.layoutManager.primaryMonitor.y + topOffset - this.actor.height;
|
||||
this._targetY = this._hiddenY + this.actor.height;
|
||||
this.actor.y = this._hiddenY;
|
||||
|
||||
this._objInspector.actor.set_position(this.actor.x + Math.floor(this.actor.width * 0.1), this._targetY + Math.floor(this.actor.height * 0.1));
|
||||
}
|
||||
|
||||
function _newLookingGlassOpen() {
|
||||
if (this._open)
|
||||
return;
|
||||
|
||||
this._resize();
|
||||
this._oldOpen();
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
* This file is part of the Zorin Taskbar extension for Zorin OS.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Credits:
|
||||
* 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';
|
||||
|
||||
var STACKED_TL = 'stackedTL';
|
||||
var STACKED_BR = 'stackedBR';
|
||||
var CENTERED = 'centered';
|
||||
var CENTERED_MONITOR = 'centerMonitor';
|
||||
|
||||
var TOP = 'TOP';
|
||||
var BOTTOM = 'BOTTOM';
|
||||
var LEFT = 'LEFT';
|
||||
var RIGHT = 'RIGHT';
|
||||
|
||||
var 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 },
|
||||
{ element: TASKBAR, visible: true, position: STACKED_TL },
|
||||
{ element: CENTER_BOX, visible: true, position: STACKED_BR },
|
||||
{ element: RIGHT_BOX, visible: true, position: STACKED_BR },
|
||||
{ element: SYSTEM_MENU, visible: true, position: STACKED_BR },
|
||||
{ element: DATE_MENU, visible: true, position: STACKED_BR },
|
||||
{ element: DESKTOP_BTN, visible: false, position: STACKED_BR },
|
||||
];
|
||||
|
||||
var optionDialogFunctions = {};
|
||||
|
||||
optionDialogFunctions[SHOW_APPS_BTN] = '_showShowAppsButtonOptions';
|
||||
optionDialogFunctions[DATE_MENU] = '_showDateMenuOptions';
|
||||
optionDialogFunctions[DESKTOP_BTN] = '_showDesktopButtonOptions';
|
||||
|
||||
function getSettingsPositions(settings, setting) {
|
||||
var positions = null;
|
||||
|
||||
try {
|
||||
positions = JSON.parse(settings.get_string(setting));
|
||||
} catch(e) {
|
||||
log('Error parsing positions: ' + e.message);
|
||||
}
|
||||
|
||||
return positions;
|
||||
}
|
||||
|
||||
function checkIfCentered(position) {
|
||||
return position == CENTERED || position == CENTERED_MONITOR;
|
||||
}
|
||||
+176
@@ -0,0 +1,176 @@
|
||||
/*
|
||||
* This file is part of the Zorin Taskbar extension for Zorin OS.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Credits:
|
||||
* This file is based on code from the Dash to Panel extension
|
||||
* Ideas for recursing child actors and assigning inline styles
|
||||
* are based on code from the StatusAreaHorizontalSpacing extension
|
||||
* https://bitbucket.org/mathematicalcoffee/status-area-horizontal-spacing-gnome-shell-extension
|
||||
* mathematical.coffee@gmail.com
|
||||
*/
|
||||
|
||||
const Me = imports.misc.extensionUtils.getCurrentExtension();
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
const Lang = imports.lang;
|
||||
const Main = imports.ui.main;
|
||||
const Mainloop = imports.mainloop;
|
||||
const St = imports.gi.St;
|
||||
const Shell = imports.gi.Shell;
|
||||
|
||||
const Panel = Me.imports.panel;
|
||||
const Taskbar = Me.imports.taskbar;
|
||||
const Utils = Me.imports.utils;
|
||||
|
||||
var dtpPanelStyle = Utils.defineClass({
|
||||
Name: 'ZorinTaskbar.PanelStyle',
|
||||
|
||||
_init: function() {
|
||||
|
||||
},
|
||||
|
||||
enable : function(panel) {
|
||||
this.panel = panel;
|
||||
|
||||
this._applyStyles();
|
||||
},
|
||||
|
||||
disable: function () {
|
||||
this._removeStyles();
|
||||
},
|
||||
|
||||
_applyStyles: function() {
|
||||
this._rightBoxOperations = [];
|
||||
|
||||
// center box has been moved next to the right box and will be treated the same
|
||||
this._centerBoxOperations = this._rightBoxOperations;
|
||||
|
||||
this._leftBoxOperations = [];
|
||||
|
||||
this._applyStylesRecursively();
|
||||
|
||||
/* connect signal */
|
||||
this._rightBoxActorAddedID = this.panel._rightBox.connect('actor-added',
|
||||
Lang.bind(this, function (container, actor) {
|
||||
if(this._rightBoxOperations.length && !this._ignoreAddedChild)
|
||||
this._recursiveApply(actor, this._rightBoxOperations);
|
||||
|
||||
this._ignoreAddedChild = 0;
|
||||
})
|
||||
);
|
||||
this._centerBoxActorAddedID = this.panel._centerBox.connect('actor-added',
|
||||
Lang.bind(this, function (container, actor) {
|
||||
if(this._centerBoxOperations.length && !this._ignoreAddedChild)
|
||||
this._recursiveApply(actor, this._centerBoxOperations);
|
||||
|
||||
this._ignoreAddedChild = 0;
|
||||
})
|
||||
);
|
||||
this._leftBoxActorAddedID = this.panel._leftBox.connect('actor-added',
|
||||
Lang.bind(this, function (container, actor) {
|
||||
if(this._leftBoxOperations.length)
|
||||
this._recursiveApply(actor, this._leftBoxOperations);
|
||||
})
|
||||
);
|
||||
},
|
||||
|
||||
_removeStyles: function() {
|
||||
/* disconnect signal */
|
||||
if (this._rightBoxActorAddedID)
|
||||
this.panel._rightBox.disconnect(this._rightBoxActorAddedID);
|
||||
if (this._centerBoxActorAddedID)
|
||||
this.panel._centerBox.disconnect(this._centerBoxActorAddedID);
|
||||
if (this._leftBoxActorAddedID)
|
||||
this.panel._leftBox.disconnect(this._leftBoxActorAddedID);
|
||||
|
||||
this._restoreOriginalStyle(this.panel._rightBox);
|
||||
this._restoreOriginalStyle(this.panel._centerBox);
|
||||
this._restoreOriginalStyle(this.panel._leftBox);
|
||||
|
||||
this._applyStylesRecursively(true);
|
||||
},
|
||||
|
||||
_applyStylesRecursively: function(restore) {
|
||||
/*recurse actors */
|
||||
if(this._rightBoxOperations.length) {
|
||||
// add the system menu as we move it from the rightbox to the panel to position it independently
|
||||
let children = this.panel._rightBox.get_children().concat([this.panel.statusArea.aggregateMenu.container]);
|
||||
for(let i in children)
|
||||
this._recursiveApply(children[i], this._rightBoxOperations, restore);
|
||||
}
|
||||
|
||||
if(this._centerBoxOperations.length) {
|
||||
// add the date menu as we move it from the centerbox to the panel to position it independently
|
||||
let children = this.panel._centerBox.get_children().concat([this.panel.statusArea.dateMenu.container]);
|
||||
for(let i in children)
|
||||
this._recursiveApply(children[i], this._centerBoxOperations, restore);
|
||||
}
|
||||
|
||||
if(this._leftBoxOperations.length) {
|
||||
let children = this.panel._leftBox.get_children();
|
||||
for(let i in children)
|
||||
this._recursiveApply(children[i], this._leftBoxOperations, restore);
|
||||
}
|
||||
},
|
||||
|
||||
_recursiveApply: function(actor, operations, restore) {
|
||||
for(let i in operations) {
|
||||
let o = operations[i];
|
||||
if(o.compareFn(actor))
|
||||
if(restore)
|
||||
o.restoreFn ? o.restoreFn(actor) : this._restoreOriginalStyle(actor);
|
||||
else
|
||||
o.applyFn(actor, i);
|
||||
}
|
||||
|
||||
if(actor.get_children) {
|
||||
let children = actor.get_children();
|
||||
for(let i in children) {
|
||||
this._recursiveApply(children[i], operations, restore);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_restoreOriginalStyle: function(actor) {
|
||||
if (actor._dtp_original_inline_style !== undefined) {
|
||||
actor.set_style(actor._dtp_original_inline_style);
|
||||
delete actor._dtp_original_inline_style;
|
||||
delete actor._dtp_style_overrides;
|
||||
}
|
||||
|
||||
if (actor.has_style_class_name('panel-button')) {
|
||||
this._refreshPanelButton(actor);
|
||||
}
|
||||
},
|
||||
|
||||
_refreshPanelButton: function(actor) {
|
||||
if (actor.visible && imports.misc.config.PACKAGE_VERSION >= '3.34.0') {
|
||||
//force gnome 3.34+ to refresh (having problem with the -natural-hpadding)
|
||||
let parent = actor.get_parent();
|
||||
let children = parent.get_children();
|
||||
let actorIndex = 0;
|
||||
|
||||
if (children.length > 1) {
|
||||
actorIndex = children.indexOf(actor);
|
||||
}
|
||||
|
||||
this._ignoreAddedChild = [this.panel._centerBox, this.panel._rightBox].indexOf(parent) >= 0;
|
||||
|
||||
parent.remove_child(actor);
|
||||
parent.insert_child_at_index(actor, actorIndex);
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
@@ -0,0 +1,14 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: af\n"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Lêers"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Instellings"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: an\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Monitor d'o sistema"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Fichers"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Configuración"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: ar\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "مرقاب النّظام"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "الملفات"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "الإعدادات"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: as\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "চিস্টেম মনিটৰ"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "ফাইলসমূহ"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "সংহতিসমূহ"
|
||||
@@ -0,0 +1,14 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: ast\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Monitor del Sistema"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Ficheros"
|
||||
@@ -0,0 +1,11 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: az\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Sistem İzləyicisi"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: be\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Сістэмны назіральнік"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Файлы"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Настройкі"
|
||||
@@ -0,0 +1,11 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: be@latin\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Systemny naziralnik"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: bg\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Наблюдение на системата"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Файлове"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Настройки"
|
||||
@@ -0,0 +1,14 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: bn\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "সিস্টেম পর্যবেক্ষক"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "ফাইল"
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: bn_IN\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "System Monitor"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "ফাইল"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "সেটিং"
|
||||
@@ -0,0 +1,11 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: bo\n"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "ཡིག་ཆ"
|
||||
@@ -0,0 +1,11 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: br\n"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Arventennoù"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: bs\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Nadzor sistema"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Datoteke"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Postavke"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: ca\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Monitor del sistema"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Fitxers"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Paràmetres"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: ca-valencia\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Monitor del sistema"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Fitxers"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Paràmetres"
|
||||
@@ -0,0 +1,14 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: ckb\n"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "پەڕگەکان"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "ڕێكخستنەكان"
|
||||
@@ -0,0 +1,14 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: crh\n"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Dosyeler"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Ayarlar"
|
||||
@@ -0,0 +1,11 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: cy\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Arsylwr System"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: da\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Systemovervågning"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Filer"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Indstillinger"
|
||||
@@ -0,0 +1,11 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: dz\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "རིམ་ལུགས་ལྟ་རྟོག་པ།"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: el\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Παρακολούθηση συστήματος"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Αρχεία"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Ρυθμίσεις"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: eo\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Sistemmonitoro"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Dosieroj"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Agordoj"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: et\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Süsteemijälgija"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Failid"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Sätted"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: eu\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Sistemaren monitorea"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Fitxategiak"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Ezarpenak"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: fa\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "پایشگر سامانه"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "پروندهها"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "تنظیمات"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: fi\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Järjestelmän valvonta"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Tiedostot"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Asetukset"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: fur\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Monitor di sisteme"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "File"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Impostazions"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: ga\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Monatóir an Chórais"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Comhaid"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Socruithe"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: gd\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Monatair an t-siostaim"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Faidhlichean"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Roghainnean"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: gu\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "સિસ્ટમ મૉનિટર"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "ફાઇલો"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "સુયોજનો"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: he\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "צג המערכת"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "קבצים"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "הגדרות"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: hi\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "तंत्र मॉनीटर"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "फ़ाइल"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "सेटिंग्स"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: hr\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Nadgledatelj sustava"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Datoteke"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Postavke"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: id\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Monitor Sistem"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Berkas"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Pengaturan"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: is\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Kerfisvakt"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Skrár"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Stillingar"
|
||||
@@ -0,0 +1,11 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: ka\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "სისტემის მონიტორი"
|
||||
@@ -0,0 +1,11 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: kab\n"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Iɣewwaṛen"
|
||||
@@ -0,0 +1,609 @@
|
||||
# Kazakh translation for dash-to-panel
|
||||
# Copyright (c) 2017 dash-to-panel authors.
|
||||
# This file is distributed under the same license as the dash-to-panel package.
|
||||
# Baurzhan Muftakhidinov <baurthefirst@gmail.com>, 2017-2018.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: dash-to-panel master\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-02-02 21:29+0500\n"
|
||||
"PO-Revision-Date: 2018-02-03 15:22+0500\n"
|
||||
"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
|
||||
"Language-Team: Kazakh <kk_KZ@googlegroups.com>\n"
|
||||
"Language: kk\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Poedit 2.0.3\n"
|
||||
|
||||
#: prefs.js:295
|
||||
msgid "Running Indicator Options"
|
||||
msgstr "Орындалып тұрған индикатор баптаулары"
|
||||
|
||||
#: prefs.js:302 prefs.js:447 prefs.js:499 prefs.js:608 prefs.js:684
|
||||
#: prefs.js:753 prefs.js:829 prefs.js:871
|
||||
msgid "Reset to defaults"
|
||||
msgstr "Бастапқы мәндерге тастау"
|
||||
|
||||
#: prefs.js:440
|
||||
msgid "Show Desktop options"
|
||||
msgstr "Жұмыс үстел баптауларын көрсету"
|
||||
|
||||
#: prefs.js:492
|
||||
msgid "Window preview options"
|
||||
msgstr "Терезе кіші көрінісі баптаулары"
|
||||
|
||||
#: prefs.js:601
|
||||
msgid "Ungrouped application options"
|
||||
msgstr "Топталмаған қолданба баптаулары"
|
||||
|
||||
#: prefs.js:677
|
||||
msgid "Customize middle-click behavior"
|
||||
msgstr "Орта шерту әрекетін баптау"
|
||||
|
||||
#: prefs.js:746
|
||||
msgid "Advanced hotkeys options"
|
||||
msgstr "Кеңейтілген жарлық баптаулары"
|
||||
|
||||
#: prefs.js:822
|
||||
msgid "Secondary Menu Options"
|
||||
msgstr "Қосымша мәзір баптаулары"
|
||||
|
||||
#: prefs.js:864 Settings.ui.h:113
|
||||
msgid "Advanced Options"
|
||||
msgstr "Кеңейтілген баптаулар"
|
||||
|
||||
#: appIcons.js:1179
|
||||
msgid "Show Details"
|
||||
msgstr "Ақпаратын көрсету"
|
||||
|
||||
#: appIcons.js:1198
|
||||
msgid "New Window"
|
||||
msgstr "Жаңа терезе"
|
||||
|
||||
#: appIcons.js:1198 appIcons.js:1260 appIcons.js:1262 Settings.ui.h:8
|
||||
msgid "Quit"
|
||||
msgstr "Шығу"
|
||||
|
||||
#: appIcons.js:1262
|
||||
msgid "Windows"
|
||||
msgstr "Терезелер"
|
||||
|
||||
#: appIcons.js:1421
|
||||
msgid "Taskbar Settings"
|
||||
msgstr "Панелінің баптаулары"
|
||||
|
||||
#: appIcons.js:1428
|
||||
msgid "Restore Windows"
|
||||
msgstr "Терезелерді қалпына келтіру"
|
||||
|
||||
#: appIcons.js:1428
|
||||
msgid "Show Desktop"
|
||||
msgstr "Жұмыс үстелді көрсету"
|
||||
|
||||
#: Settings.ui.h:1
|
||||
msgid ""
|
||||
"When set to minimize, double clicking minimizes all the windows of the "
|
||||
"application."
|
||||
msgstr ""
|
||||
"Қайыруға орнатылған кезде, қос шерту нәтижесінде қолданбаның барлық "
|
||||
"терезелерін қайырады."
|
||||
|
||||
#: Settings.ui.h:2
|
||||
msgid "Shift+Click action"
|
||||
msgstr "Shift+Click әрекеті"
|
||||
|
||||
#: Settings.ui.h:3
|
||||
msgid "Raise window"
|
||||
msgstr "Терезені көтеру"
|
||||
|
||||
#: Settings.ui.h:4
|
||||
msgid "Minimize window"
|
||||
msgstr "Терезені минималды қылу"
|
||||
|
||||
#: Settings.ui.h:5
|
||||
msgid "Launch new instance"
|
||||
msgstr "Жаңа экземплярды жөнелту"
|
||||
|
||||
#: Settings.ui.h:6
|
||||
msgid "Cycle through windows"
|
||||
msgstr "Терезелер арасында циклмен ауысу"
|
||||
|
||||
#: Settings.ui.h:7
|
||||
msgid "Cycle windows + minimize"
|
||||
msgstr "Терезелер арасында циклмен ауысу + қайыру"
|
||||
|
||||
#: Settings.ui.h:9
|
||||
msgid "Behavior for Middle-Click."
|
||||
msgstr "Орта батырманың мінез-құлығы."
|
||||
|
||||
#: Settings.ui.h:10
|
||||
msgid "Middle-Click action"
|
||||
msgstr "Орта батырма әрекеті"
|
||||
|
||||
#: Settings.ui.h:11
|
||||
msgid "Behavior for Shift+Middle-Click."
|
||||
msgstr "Shift+Орта батырманың мінез-құлығы."
|
||||
|
||||
#: Settings.ui.h:12
|
||||
msgid "Shift+Middle-Click action"
|
||||
msgstr "Shift+Орта батырма әрекеті"
|
||||
|
||||
#: Settings.ui.h:13
|
||||
msgid "Integrate <i>AppMenu</i> items"
|
||||
msgstr "<i>Қолданбалар мәзірі</i> нәрселерін интеграциялау"
|
||||
|
||||
#: Settings.ui.h:14
|
||||
msgid "<i>Show Details</i> menu item"
|
||||
msgstr "<i>Ақпаратын көрсету</i> мәзір элементі"
|
||||
|
||||
#: Settings.ui.h:15
|
||||
msgid "Highlight focused application"
|
||||
msgstr "Фокустағы қолданбаларды түспен ерекшелеу"
|
||||
|
||||
#: Settings.ui.h:16
|
||||
msgid "Highlight color"
|
||||
msgstr "Ерекшелеу түсі"
|
||||
|
||||
#: Settings.ui.h:17
|
||||
msgid "Highlight opacity"
|
||||
msgstr "Ерекшелеудің мөлдірсіздігі"
|
||||
|
||||
#: Settings.ui.h:18
|
||||
msgid "5"
|
||||
msgstr "5"
|
||||
|
||||
#: Settings.ui.h:19
|
||||
msgid "Indicator height (px)"
|
||||
msgstr "Индикатор биіктігі (пикс)"
|
||||
|
||||
#: Settings.ui.h:20
|
||||
msgid "0"
|
||||
msgstr "0"
|
||||
|
||||
#: Settings.ui.h:21
|
||||
msgid "Indicator color - Override Theme"
|
||||
msgstr "Индикатор түсі - теманы үстінен басу"
|
||||
|
||||
#: Settings.ui.h:22
|
||||
msgid "1 window open (or ungrouped)"
|
||||
msgstr "1 терезе ашық (немесе топталмаған)"
|
||||
|
||||
#: Settings.ui.h:23
|
||||
msgid "Apply to all"
|
||||
msgstr "Барлығы үшін іске асыру"
|
||||
|
||||
#: Settings.ui.h:24
|
||||
msgid "2 windows open"
|
||||
msgstr "2 терезе ашық"
|
||||
|
||||
#: Settings.ui.h:25
|
||||
msgid "3 windows open"
|
||||
msgstr "3 терезе ашық"
|
||||
|
||||
#: Settings.ui.h:26
|
||||
msgid "4+ windows open"
|
||||
msgstr "4+ терезе ашық"
|
||||
|
||||
#: Settings.ui.h:27
|
||||
msgid "Use different for unfocused"
|
||||
msgstr "Фокустағы емес үшін басқаны қолдану"
|
||||
|
||||
#: Settings.ui.h:28
|
||||
msgid "Font size (px) of the application titles (default is 14)"
|
||||
msgstr "Қолданба атауының қарібі (пикс, бастапқы мәні 14)"
|
||||
|
||||
#: Settings.ui.h:29
|
||||
msgid "Font color of the application titles"
|
||||
msgstr "Қолданба атауының қаріп түсі"
|
||||
|
||||
#: Settings.ui.h:30
|
||||
msgid "Maximum width (px) of the application titles (default is 160)"
|
||||
msgstr "Қолданба атауының максималды ені (пикс, бастапқы мәні 160)"
|
||||
|
||||
#: Settings.ui.h:31
|
||||
msgid "Use a fixed width for the application titles"
|
||||
msgstr "Қолданба атауы үшін біркелкі енді қолдану"
|
||||
|
||||
#: Settings.ui.h:32
|
||||
msgid ""
|
||||
"The application titles all have the same width, even if their texts are "
|
||||
"shorter than the maximum width. The maximum width value is used as the fixed "
|
||||
"width."
|
||||
msgstr ""
|
||||
"Қолданба атаулары үшін біркелкі енді қолдану, олардың мәтіні максималды "
|
||||
"енінен кіші болса да. Максималды мәні тұрақты ені ретінде қолданылады."
|
||||
|
||||
#: Settings.ui.h:33
|
||||
msgid "Display running indicators on unfocused applications"
|
||||
msgstr "Фокустағы емес қолданбалардың орындалу индикаторын көрсету"
|
||||
|
||||
#: Settings.ui.h:34
|
||||
msgid "Use the favorite icons as application launchers"
|
||||
msgstr "Таңдамалы таңбашаларды қолданба жөнелткіштері ретінде қолдану"
|
||||
|
||||
#: Settings.ui.h:35
|
||||
msgid "Preview timeout on icon leave (ms)"
|
||||
msgstr "Таңбашадан кеткен кезде кіші көріністі көрсету уақыты (мс)"
|
||||
|
||||
#: Settings.ui.h:36
|
||||
msgid ""
|
||||
"If set too low, the window preview of running applications may seem to close "
|
||||
"too quickly when trying to enter the popup. If set too high, the preview may "
|
||||
"linger too long when moving to an adjacent icon."
|
||||
msgstr ""
|
||||
"Мәні тым аз болса, кіші көрініске өту талабын жасау кезінде орындалып тұрған "
|
||||
"қолданбаның кіші көрінісі тым жылдам жабылуы мүмкін. Мәні тым үлкен болса, "
|
||||
"көрші таңбашаға ауысу кезінде ағымдағы кіші көрініс ұзақ уақыт бойы "
|
||||
"көрсетілуі мүмкін."
|
||||
|
||||
#: Settings.ui.h:37
|
||||
msgid "Time (ms) before showing (100 is default)"
|
||||
msgstr "Көрсету алдындағы уақыт (мс) (бастапқы шамасы 100)"
|
||||
|
||||
#: Settings.ui.h:38
|
||||
msgid "Enable window peeking"
|
||||
msgstr "Терезелерді анықтауды іске қосу"
|
||||
|
||||
#: Settings.ui.h:39
|
||||
msgid ""
|
||||
"When hovering over a window preview for some time, the window gets "
|
||||
"distinguished."
|
||||
msgstr ""
|
||||
"Курсор терезенің кіші көрінісі үстінен біраз уақыт бойы өтсе, ол терезе "
|
||||
"анықталатын болады."
|
||||
|
||||
#: Settings.ui.h:40
|
||||
msgid "Enter window peeking mode timeout (ms)"
|
||||
msgstr "Терезені анықтауды кідіріс уақытын енгізу (мс)"
|
||||
|
||||
#: Settings.ui.h:41
|
||||
msgid ""
|
||||
"Time of inactivity while hovering over a window preview needed to enter the "
|
||||
"window peeking mode."
|
||||
msgstr ""
|
||||
"Терезені анықтау үшін курсор терезенің үстінен қанша уақыт бойы аялдау керек."
|
||||
|
||||
#: Settings.ui.h:42
|
||||
msgid "Window peeking mode opacity"
|
||||
msgstr "Терезелерді анықтау режимінің мөлдірсіздігі"
|
||||
|
||||
#: Settings.ui.h:43
|
||||
msgid ""
|
||||
"All windows except for the peeked one have their opacity set to the same "
|
||||
"value."
|
||||
msgstr ""
|
||||
"Анықталған терезеден басқаларының мөлдірсіздігі бастапқы шамасына тең болады."
|
||||
|
||||
#: Settings.ui.h:44
|
||||
msgid "Middle click to close window"
|
||||
msgstr "Терезені жабу үшін орта шерту"
|
||||
|
||||
#: Settings.ui.h:45
|
||||
msgid "Middle click on the preview to close the window."
|
||||
msgstr "Терезені жабу үшін кіші көріністе орта шерту."
|
||||
|
||||
#: Settings.ui.h:46
|
||||
msgid "Super"
|
||||
msgstr "Super"
|
||||
|
||||
#: Settings.ui.h:47
|
||||
msgid "Super + Alt"
|
||||
msgstr "Super + Alt"
|
||||
|
||||
#: Settings.ui.h:48
|
||||
msgid "Hotkeys prefix"
|
||||
msgstr "Ыстық пернелер префиксі"
|
||||
|
||||
#: Settings.ui.h:49
|
||||
msgid "Hotkeys will either be Super+Number or Super+Alt+Num"
|
||||
msgstr "Ыстық пернелер Super+Сан or Super+Alt+Сан болады"
|
||||
|
||||
#: Settings.ui.h:50
|
||||
msgid "Never"
|
||||
msgstr "Ешқашан"
|
||||
|
||||
#: Settings.ui.h:51
|
||||
msgid "Show temporarily"
|
||||
msgstr "Уақытша көрсету"
|
||||
|
||||
#: Settings.ui.h:52
|
||||
msgid "Always visible"
|
||||
msgstr "Әрқашан көрінеді"
|
||||
|
||||
#: Settings.ui.h:53
|
||||
msgid "Number overlay"
|
||||
msgstr "Цифрлық оверлей"
|
||||
|
||||
#: Settings.ui.h:54
|
||||
msgid ""
|
||||
"Temporarily show the application numbers over the icons when using the "
|
||||
"hotkeys."
|
||||
msgstr ""
|
||||
"Ыстық пернелерді көрсету кезінде таңбашалардың үстінен өткізгенде қолданба "
|
||||
"нөмірлерін уақытша көрсету."
|
||||
|
||||
#: Settings.ui.h:55
|
||||
msgid "Hide timeout (ms)"
|
||||
msgstr "Жасыру кідірісі (мс)"
|
||||
|
||||
#: Settings.ui.h:56
|
||||
msgid "Shortcut to show the overlay for 2 seconds"
|
||||
msgstr "Оверлейді 2 секундқа көрсету үшін пернетақта жарлығы"
|
||||
|
||||
#: Settings.ui.h:57
|
||||
msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
|
||||
msgstr "Синтаксисі: <Shift>, <Ctrl>, <Alt>, <Super>"
|
||||
|
||||
#: Settings.ui.h:58
|
||||
msgid "Show Desktop button width (px)"
|
||||
msgstr "Жұмыс үстелі батырмасының (пикс)"
|
||||
|
||||
#: Settings.ui.h:59
|
||||
msgid "Panel screen position"
|
||||
msgstr "Панельдің экрандағы орны"
|
||||
|
||||
#: Settings.ui.h:60
|
||||
msgid "Bottom"
|
||||
msgstr "Төмен"
|
||||
|
||||
#: Settings.ui.h:61
|
||||
msgid "Top"
|
||||
msgstr "Жоғары"
|
||||
|
||||
#: Settings.ui.h:62
|
||||
msgid ""
|
||||
"Panel Size\n"
|
||||
"(default is 48)"
|
||||
msgstr ""
|
||||
"Панель өлшемі\n"
|
||||
"(бастапқы мәні 48)"
|
||||
|
||||
#: Settings.ui.h:64
|
||||
msgid ""
|
||||
"App Icon Margin\n"
|
||||
"(default is 8)"
|
||||
msgstr ""
|
||||
"Қолданба таңбашасының шет өрісі\n"
|
||||
"(бастапқы мәні 8)"
|
||||
|
||||
#: Settings.ui.h:66
|
||||
msgid "Running indicator position"
|
||||
msgstr "Орындалып тұрған индикатор орны"
|
||||
|
||||
#: Settings.ui.h:67
|
||||
msgid "Running indicator style (Focused app)"
|
||||
msgstr "Орындалып тұрған индикатордың стилі (фокустегі қолданба)"
|
||||
|
||||
#: Settings.ui.h:68
|
||||
msgid "Dots"
|
||||
msgstr "Нүктелер"
|
||||
|
||||
#: Settings.ui.h:69
|
||||
msgid "Squares"
|
||||
msgstr "Шаршылар"
|
||||
|
||||
#: Settings.ui.h:70
|
||||
msgid "Dashes"
|
||||
msgstr "Штрихтер"
|
||||
|
||||
#: Settings.ui.h:71
|
||||
msgid "Segmented"
|
||||
msgstr "Сегменттелген"
|
||||
|
||||
#: Settings.ui.h:72
|
||||
msgid "Solid"
|
||||
msgstr "Бүтін"
|
||||
|
||||
#: Settings.ui.h:73
|
||||
msgid "Ciliora"
|
||||
msgstr "Ciliora"
|
||||
|
||||
#: Settings.ui.h:74
|
||||
msgid "Metro"
|
||||
msgstr "Metro"
|
||||
|
||||
#: Settings.ui.h:75
|
||||
msgid "Running indicator style (Unfocused apps)"
|
||||
msgstr "Орындалып тұрған индикатордың стилі (фокустегі емес қолданба)"
|
||||
|
||||
#: Settings.ui.h:76
|
||||
msgid "Clock location"
|
||||
msgstr "Сағаттың орналасуы"
|
||||
|
||||
#: Settings.ui.h:77
|
||||
msgid "Natural"
|
||||
msgstr "Табиғи"
|
||||
|
||||
#: Settings.ui.h:78
|
||||
msgid "Left of status menu"
|
||||
msgstr "Қалып-күй мәзірінің сол жағы"
|
||||
|
||||
#: Settings.ui.h:79
|
||||
msgid "Right of status menu"
|
||||
msgstr "Қалып-күй мәзірінің оң жағы"
|
||||
|
||||
#: Settings.ui.h:80
|
||||
msgid "Taskbar position"
|
||||
msgstr "Тапсырмалар панелінің орны"
|
||||
|
||||
#: Settings.ui.h:81
|
||||
msgid "Left side of panel"
|
||||
msgstr "Панельдің сол жағы"
|
||||
|
||||
#: Settings.ui.h:82
|
||||
msgid "Centered in monitor"
|
||||
msgstr "Монитордың ортасында"
|
||||
|
||||
#: Settings.ui.h:83
|
||||
msgid "Centered in content"
|
||||
msgstr "Құраманың ортасында"
|
||||
|
||||
#: Settings.ui.h:84
|
||||
msgid "Position and Style"
|
||||
msgstr "Орны және стилі"
|
||||
|
||||
#: Settings.ui.h:85
|
||||
msgid "Show favorite applications"
|
||||
msgstr "Таңдамалы қолданбаларды көрсету"
|
||||
|
||||
#: Settings.ui.h:86
|
||||
msgid "Show <i>Applications</i> icon"
|
||||
msgstr "<i>Қолданбалар</i> таңбашасын көрсету"
|
||||
|
||||
#: Settings.ui.h:87
|
||||
msgid "Animate <i>Show Applications</i>."
|
||||
msgstr "<i>Қолданбаларды көрсету</i> анимациясын іске қосу."
|
||||
|
||||
#: Settings.ui.h:88
|
||||
msgid "Show <i>Activities</i> button"
|
||||
msgstr "<i>Көрініс</i> таңбашасын көрсету"
|
||||
|
||||
#: Settings.ui.h:89
|
||||
msgid "Show <i>Desktop</i> button"
|
||||
msgstr "<i>Жұмыс үстелі</i> батырмасын көрсету"
|
||||
|
||||
#: Settings.ui.h:90
|
||||
msgid "Show <i>AppMenu</i> button"
|
||||
msgstr "<i>Қолданбалар мәзірі</i> таңбашасын көрсету"
|
||||
|
||||
#: Settings.ui.h:91
|
||||
msgid "Top Bar > Show App Menu must be enabled in Tweak Tool"
|
||||
msgstr ""
|
||||
"Кеңейтілген баптаулар (Tweak) сайманында Үстіндегі панель >Қолданбалар "
|
||||
"мәзірін көрсету іске қосылған болуы тиіс"
|
||||
|
||||
#: Settings.ui.h:92
|
||||
msgid "Show window previews on hover"
|
||||
msgstr "Курсор үстінен өткен кезде, терезенің кіші көрінісін көрсету"
|
||||
|
||||
#: Settings.ui.h:93
|
||||
msgid "Isolate Workspaces"
|
||||
msgstr "Жұмыс орындарын оқшаулау"
|
||||
|
||||
#: Settings.ui.h:94
|
||||
msgid "Ungroup applications"
|
||||
msgstr "Қолданбаларды топтаудан босату"
|
||||
|
||||
#: Settings.ui.h:95
|
||||
msgid "Behaviour when clicking on the icon of a running application."
|
||||
msgstr "Орындалып тұрған қолданбаның таңбашасына шерту кезіндегі мінез-құлығы."
|
||||
|
||||
#: Settings.ui.h:96
|
||||
msgid "Click action"
|
||||
msgstr "Шерту әрекеті"
|
||||
|
||||
#: Settings.ui.h:97
|
||||
msgid ""
|
||||
"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
|
||||
"together with Shift and Ctrl."
|
||||
msgstr ""
|
||||
"Super+(0-9) қолданбаларды белсендіру үшін жарлықтар ретінде іске қосу. "
|
||||
"Сонымен қатар, ол Shift пен Ctrl пернелерімен бірге қолданылуы мүмкін."
|
||||
|
||||
#: Settings.ui.h:98
|
||||
msgid "Use hotkeys to activate apps"
|
||||
msgstr "Қолданбаларды белсендіру үшін ыстық пернелерді қолдану"
|
||||
|
||||
#: Settings.ui.h:99
|
||||
msgid "Behavior"
|
||||
msgstr "Мінез-құлығы"
|
||||
|
||||
#: Settings.ui.h:100
|
||||
msgid ""
|
||||
"Tray Font Size\n"
|
||||
"(0 = theme default)"
|
||||
msgstr ""
|
||||
"Трей қарібінің өлшемі\n"
|
||||
"(0 = теманың бастапқы өлшемі)"
|
||||
|
||||
#: Settings.ui.h:102
|
||||
msgid ""
|
||||
"LeftBox Font Size\n"
|
||||
"(0 = theme default)"
|
||||
msgstr ""
|
||||
"Сол жақ аймағының қаріп өлшемі\n"
|
||||
"(0 = теманың бастапқы өлшемі)"
|
||||
|
||||
#: Settings.ui.h:104
|
||||
msgid ""
|
||||
"Tray Item Padding\n"
|
||||
"(-1 = theme default)"
|
||||
msgstr ""
|
||||
"Трейдегі нәрсенің шегінісі\n"
|
||||
"(-1 = теманың бастапқы өлшемі)"
|
||||
|
||||
#: Settings.ui.h:106
|
||||
msgid ""
|
||||
"Status Icon Padding\n"
|
||||
"(-1 = theme default)"
|
||||
msgstr ""
|
||||
"Қалып-күй таңбашасының шегінісі\n"
|
||||
"(-1 = теманың бастапқы өлшемі)"
|
||||
|
||||
#: Settings.ui.h:108
|
||||
msgid ""
|
||||
"LeftBox Padding\n"
|
||||
"(-1 = theme default)"
|
||||
msgstr ""
|
||||
"Сол жақ аймағының шегінісі\n"
|
||||
"(-1 = теманың бастапқы өлшемі)"
|
||||
|
||||
#: Settings.ui.h:110
|
||||
msgid "Animate switching applications"
|
||||
msgstr "Қолданбаларды ауыстыру анимациясын іске қосу"
|
||||
|
||||
#: Settings.ui.h:111
|
||||
msgid "Animate launching new windows"
|
||||
msgstr "Қолданбаларды жөнелту анимациясын іске қосу"
|
||||
|
||||
#: Settings.ui.h:112
|
||||
msgid "App icon secondary (right-click) menu"
|
||||
msgstr "Қолданба таңбашысының қосалқы (оң жақпен шерту) мәзірі"
|
||||
|
||||
#: Settings.ui.h:114
|
||||
msgid "Fine-Tune"
|
||||
msgstr "Дәлдеп баптау"
|
||||
|
||||
#: Settings.ui.h:115
|
||||
msgid "version: "
|
||||
msgstr "нұсқасы: "
|
||||
|
||||
#: Settings.ui.h:116
|
||||
msgid "Github"
|
||||
msgstr "Github"
|
||||
|
||||
#: Settings.ui.h:117
|
||||
msgid ""
|
||||
"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
|
||||
"See the <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
|
||||
"\">GNU General Public License, version 2 or later</a> for details.</span>"
|
||||
msgstr ""
|
||||
"<span size=\"small\">Бұл бағдарлама ЕШҚАНДАЙ КЕПІЛДЕМЕСІЗ таратылады.\n"
|
||||
"Көбірек білу үшін <a href=\"https://www.gnu.org/licenses/old-licenses/"
|
||||
"gpl-2.0.html\">GNU General Public License, нұсқасы 2 немесе кейінірек</a> "
|
||||
"қараңыз.</span>"
|
||||
|
||||
#: Settings.ui.h:119
|
||||
msgid "About"
|
||||
msgstr "Осы туралы"
|
||||
|
||||
msgid "Weekday"
|
||||
msgstr "Жұмыс күні"
|
||||
|
||||
msgid "Date"
|
||||
msgstr "Күн"
|
||||
|
||||
msgid "Seconds"
|
||||
msgstr "Секундтар"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Жүйелік бақылаушы"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Файлдар"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Баптаулар"
|
||||
@@ -0,0 +1,11 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: km\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "កម្មវិធីត្រួតពិនិត្យប្រព័ន្ធ"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: kn\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "ಗಣಕ ಮೇಲ್ವಿಚಾರಕ"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "ಕಡತಗಳು"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "ಸಿದ್ಧತೆಗಳು"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: ko\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "시스템 정보"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "파일"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "설정"
|
||||
@@ -0,0 +1,11 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: ku\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Temaşekerê Pergalê"
|
||||
@@ -0,0 +1,14 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: ky\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Тутум монитору"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Файлдар"
|
||||
@@ -0,0 +1,11 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: li\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Prosesbeheer"
|
||||
@@ -0,0 +1,11 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: ln\n"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Ba Fisyé"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: lt\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Sistemos monitorius"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Failai"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Nustatymai"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: lv\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Sistēmas pārraugs"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Datnes"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Iestatījumi"
|
||||
@@ -0,0 +1,11 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: mai\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "सिस्टम मानीटर"
|
||||
@@ -0,0 +1,11 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: mg\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Mpanara-maso ny rafitra"
|
||||
@@ -0,0 +1,14 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: mjw\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "System Monitor"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Files"
|
||||
@@ -0,0 +1,14 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: mk\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Надгледувач на системот"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Датотеки"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: ml\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "സിസ്റ്റം നിരീക്ഷകന്"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "ഫയലുകള്"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "സജ്ജീകരണങ്ങള്"
|
||||
@@ -0,0 +1,11 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: mn\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Системийн монитор"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: mr\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "प्रणाली मॉनिटर"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "फाइल्स्"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "सेटिंग्ज"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: ms\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Pemantau Sistem"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Fail"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Tetapan"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: nb\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Systemmonitor"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Filer"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Innstillinger"
|
||||
@@ -0,0 +1,11 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: nds\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Sysmonitor"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: ne\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "प्रणाली निगरानी"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "फाइलहरू"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "सेटिङ"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: nl\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Systeemmonitor"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Bestanden"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Instellingen"
|
||||
@@ -0,0 +1,14 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: nn\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Systemovervakar"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Filer"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: oc\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Monitor sistèma"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Fichièrs"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Paramètres"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: or\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "ତନ୍ତ୍ର ପ୍ରଦର୍ଶିକା"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "ଫାଇଲଗୁଡିକ"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "ସେଟିଙ୍ଗଗୁଡିକ"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: pa\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "ਸਿਸਟਮ ਨਿਗਰਾਨ"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "ਫਾਇਲਾਂ"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "ਸੈਟਿੰਗ"
|
||||
@@ -0,0 +1,11 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: ps\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "غونډال ليدانی"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: pt\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Monitor de sistema"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Ficheiros"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Definições"
|
||||
+475
@@ -0,0 +1,475 @@
|
||||
# Dash to panel.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# F�bio Nogueira <fnogueira@gnome.org>, 2017
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-04-16 22:54-0300\n"
|
||||
"PO-Revision-Date: 2017-09-15 11:03-0300\n"
|
||||
"Last-Translator: Fábio Nogueira <fnogueira@gnome.org>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: pt_BR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.0.3\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: appIcons.js:918
|
||||
msgid "Show Details"
|
||||
msgstr "Exibir detalhes"
|
||||
|
||||
#: appIcons.js:937
|
||||
msgid "New Window"
|
||||
msgstr "Nova janela"
|
||||
|
||||
#: appIcons.js:937 appIcons.js:998 appIcons.js:1000 Settings.ui.h:8
|
||||
msgid "Quit"
|
||||
msgstr "Sair"
|
||||
|
||||
#: appIcons.js:1000
|
||||
msgid "Windows"
|
||||
msgstr "Janelas"
|
||||
|
||||
#: appIcons.js:1159
|
||||
msgid "Taskbar Settings"
|
||||
msgstr "Configurações da barra de tarefas"
|
||||
|
||||
#: appIcons.js:1166
|
||||
msgid "Restore Windows"
|
||||
msgstr "Restaurar janelas"
|
||||
|
||||
#: appIcons.js:1166
|
||||
msgid "Show Desktop"
|
||||
msgstr "Exibir área de trabalho"
|
||||
|
||||
#: prefs.js:266
|
||||
msgid "Running Indicator Options"
|
||||
msgstr "Opções do indicador de execução"
|
||||
|
||||
#: prefs.js:273 prefs.js:433 prefs.js:498 prefs.js:566 prefs.js:608
|
||||
msgid "Reset to defaults"
|
||||
msgstr "Restaurar o padrão"
|
||||
|
||||
#: prefs.js:426
|
||||
msgid "Customize middle-click behavior"
|
||||
msgstr "Personalizar o comportamento do clique-do-meio"
|
||||
|
||||
#: prefs.js:491
|
||||
msgid "Advanced hotkeys options"
|
||||
msgstr "Opções avançadas das teclas de atalho"
|
||||
|
||||
#: prefs.js:559
|
||||
msgid "Secondary Menu Options"
|
||||
msgstr "Opções do menu secundário"
|
||||
|
||||
#: prefs.js:601 Settings.ui.h:85
|
||||
msgid "Advanced Options"
|
||||
msgstr "Opções avançadas"
|
||||
|
||||
#: Settings.ui.h:1
|
||||
msgid ""
|
||||
"When set to minimize, double clicking minimizes all the windows of the "
|
||||
"application."
|
||||
msgstr ""
|
||||
"Quando definido para minimizar, clicando duas vezes minimiza todas as "
|
||||
"janelas da aplicação."
|
||||
|
||||
#: Settings.ui.h:2
|
||||
msgid "Shift+Click action"
|
||||
msgstr "Ação do Shift+clique"
|
||||
|
||||
#: Settings.ui.h:3
|
||||
msgid "Raise window"
|
||||
msgstr "Elevar a janela"
|
||||
|
||||
#: Settings.ui.h:4
|
||||
msgid "Minimize window"
|
||||
msgstr "Minimizar a janela"
|
||||
|
||||
#: Settings.ui.h:5
|
||||
msgid "Launch new instance"
|
||||
msgstr "Carregar nova instância"
|
||||
|
||||
#: Settings.ui.h:6
|
||||
msgid "Cycle through windows"
|
||||
msgstr "Percorrer as janelas"
|
||||
|
||||
#: Settings.ui.h:7
|
||||
msgid "Cycle windows + minimize"
|
||||
msgstr "Percorrer as janelas + minimizar"
|
||||
|
||||
#: Settings.ui.h:9
|
||||
msgid "Behavior for Middle-Click."
|
||||
msgstr "Comportamento do clique-do-meio."
|
||||
|
||||
#: Settings.ui.h:10
|
||||
msgid "Middle-Click action"
|
||||
msgstr "Ação do clique-do-meio"
|
||||
|
||||
#: Settings.ui.h:11
|
||||
msgid "Behavior for Shift+Middle-Click."
|
||||
msgstr "Comportamento para o Shift+Clique-do-meio."
|
||||
|
||||
#: Settings.ui.h:12
|
||||
msgid "Shift+Middle-Click action"
|
||||
msgstr "Ação do Shift+Clique-do-meio"
|
||||
|
||||
#: Settings.ui.h:13
|
||||
msgid "Integrate <i>AppMenu</i> items"
|
||||
msgstr "Itens integrados ao <i>Menu de aplicativos</i>"
|
||||
|
||||
#: Settings.ui.h:14
|
||||
msgid "<i>Show Details</i> menu item"
|
||||
msgstr "Item do menu <i>Exibir detalhes</i>"
|
||||
|
||||
#: Settings.ui.h:15
|
||||
msgid "Highlight focused application"
|
||||
msgstr "Destaque para o aplicativo em foco"
|
||||
|
||||
#: Settings.ui.h:16
|
||||
msgid "Height (px)"
|
||||
msgstr "Altura (px)"
|
||||
|
||||
#: Settings.ui.h:17
|
||||
msgid "0"
|
||||
msgstr "0"
|
||||
|
||||
#: Settings.ui.h:18
|
||||
msgid "Color - Override Theme"
|
||||
msgstr "Cor - Tema de sobreposição"
|
||||
|
||||
#: Settings.ui.h:19
|
||||
msgid "1 window open"
|
||||
msgstr "1 janela aberta"
|
||||
|
||||
#: Settings.ui.h:20
|
||||
msgid "Apply to all"
|
||||
msgstr "Aplicar para tudo"
|
||||
|
||||
#: Settings.ui.h:21
|
||||
msgid "2 windows open"
|
||||
msgstr "2 janelas abertas"
|
||||
|
||||
#: Settings.ui.h:22
|
||||
msgid "3 windows open"
|
||||
msgstr "3 janelas abertas"
|
||||
|
||||
#: Settings.ui.h:23
|
||||
msgid "4+ windows open"
|
||||
msgstr "4 ou + janelas abertas"
|
||||
|
||||
#: Settings.ui.h:24
|
||||
msgid "Use different for unfocused"
|
||||
msgstr "Utilizar uma diferente para o que não está focado"
|
||||
|
||||
#: Settings.ui.h:25
|
||||
msgid "Preview timeout on icon leave (ms)"
|
||||
msgstr "Tempo limite de pré-visualização sobre o ícone sair (ms)"
|
||||
|
||||
#: Settings.ui.h:26
|
||||
msgid ""
|
||||
"If set too low, the window preview of running applications may seem to close "
|
||||
"too quickly when trying to enter the popup. If set too high, the preview may "
|
||||
"linger too long when moving to an adjacent icon."
|
||||
msgstr ""
|
||||
"Se definido como muito baixo, a pré-visualização da janela de aplicativos em "
|
||||
"execução pode fechar muito rapidamente ao tentar inserir o pop-up. Se "
|
||||
"definido como muito alto, a visualização pode demorar muito tempo ao mover-"
|
||||
"se para um ícone adjacente."
|
||||
|
||||
#: Settings.ui.h:27
|
||||
msgid "Super"
|
||||
msgstr "Super"
|
||||
|
||||
#: Settings.ui.h:28
|
||||
msgid "Super + Alt"
|
||||
msgstr "Super + Alt"
|
||||
|
||||
#: Settings.ui.h:29
|
||||
msgid "Hotkeys prefix"
|
||||
msgstr "Prefixo das teclas de atalho"
|
||||
|
||||
#: Settings.ui.h:30
|
||||
msgid "Hotkeys will either be Super+Number or Super+Alt+Num"
|
||||
msgstr "As teclas de atalho serão Super+Número ou Super+Alt+Número"
|
||||
|
||||
#: Settings.ui.h:31
|
||||
msgid "Number overlay"
|
||||
msgstr "Sobreposição de número"
|
||||
|
||||
#: Settings.ui.h:32
|
||||
msgid ""
|
||||
"Temporarily show the application numbers over the icons when using the "
|
||||
"hotkeys."
|
||||
msgstr ""
|
||||
"Exibe temporariamente os números das aplicações sobre os ícones ao usar as "
|
||||
"teclas de atalho."
|
||||
|
||||
#: Settings.ui.h:33
|
||||
msgid "Hide timeout (ms)"
|
||||
msgstr "Ocultar tempo limite (ms)"
|
||||
|
||||
#: Settings.ui.h:34
|
||||
msgid "Shortcut to show the overlay for 2 seconds"
|
||||
msgstr "Atalho para exibir a sobreposição por 2 segundos"
|
||||
|
||||
#: Settings.ui.h:35
|
||||
msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
|
||||
msgstr "Sintaxe: <Shift>, <Ctrl>, <Alt>, <Super>"
|
||||
|
||||
#: Settings.ui.h:36
|
||||
msgid "Panel screen position"
|
||||
msgstr "Posição da tela do painel"
|
||||
|
||||
#: Settings.ui.h:37
|
||||
msgid "Bottom"
|
||||
msgstr "Embaixo"
|
||||
|
||||
#: Settings.ui.h:38
|
||||
msgid "Top"
|
||||
msgstr "Topo"
|
||||
|
||||
#: Settings.ui.h:39
|
||||
msgid ""
|
||||
"Panel Size\n"
|
||||
"(default is 48)"
|
||||
msgstr ""
|
||||
"Tamanho do painel\n"
|
||||
"(O padrão é 48)"
|
||||
|
||||
#: Settings.ui.h:41
|
||||
msgid ""
|
||||
"App Icon Margin\n"
|
||||
"(default is 8)"
|
||||
msgstr ""
|
||||
"Margem do ícone do Aplicativo\n"
|
||||
"(O padrão é 8)"
|
||||
|
||||
#: Settings.ui.h:43
|
||||
msgid "Running indicator position"
|
||||
msgstr "Posição do indicador de execução"
|
||||
|
||||
#: Settings.ui.h:44
|
||||
msgid "Running indicator style (Focused app)"
|
||||
msgstr "Estilo do indicador de execução (Aplicativo em foco)"
|
||||
|
||||
#: Settings.ui.h:45
|
||||
msgid "Dots"
|
||||
msgstr "Pontos"
|
||||
|
||||
#: Settings.ui.h:46
|
||||
msgid "Squares"
|
||||
msgstr "Quadrados"
|
||||
|
||||
#: Settings.ui.h:47
|
||||
msgid "Dashes"
|
||||
msgstr "Traços"
|
||||
|
||||
#: Settings.ui.h:48
|
||||
msgid "Segmented"
|
||||
msgstr "Segmentado"
|
||||
|
||||
#: Settings.ui.h:49
|
||||
msgid "Solid"
|
||||
msgstr "Sólido"
|
||||
|
||||
#: Settings.ui.h:50
|
||||
msgid "Ciliora"
|
||||
msgstr "Ciliora"
|
||||
|
||||
#: Settings.ui.h:51
|
||||
msgid "Metro"
|
||||
msgstr "Metro"
|
||||
|
||||
#: Settings.ui.h:52
|
||||
msgid "Running indicator style (Unfocused apps)"
|
||||
msgstr "Estilo do indicador de execução (Aplicativos fora de foco)"
|
||||
|
||||
#: Settings.ui.h:53
|
||||
msgid "Clock location"
|
||||
msgstr "Local do relógio"
|
||||
|
||||
#: Settings.ui.h:54
|
||||
msgid "Natural"
|
||||
msgstr "Natural"
|
||||
|
||||
#: Settings.ui.h:55
|
||||
msgid "Left of status menu"
|
||||
msgstr "Esquerda do menu de status"
|
||||
|
||||
#: Settings.ui.h:56
|
||||
msgid "Right of status menu"
|
||||
msgstr "Direita do menu de status"
|
||||
|
||||
#: Settings.ui.h:57
|
||||
msgid "Position and Style"
|
||||
msgstr "Posição e Estilo"
|
||||
|
||||
#: Settings.ui.h:58
|
||||
msgid "Show <i>Applications</i> icon"
|
||||
msgstr "Mostrar ícone <i>Aplicativos</i>"
|
||||
|
||||
#: Settings.ui.h:59
|
||||
msgid "Animate <i>Show Applications</i>."
|
||||
msgstr "<i>Mostrar aplicativos</i> animado."
|
||||
|
||||
#: Settings.ui.h:60
|
||||
msgid "Show <i>Activities</i> button"
|
||||
msgstr "Mostrar botão <i>Atividades</i>"
|
||||
|
||||
#: Settings.ui.h:61
|
||||
msgid "Show <i>Desktop</i> button"
|
||||
msgstr "Mostrar botão <i>Área de trabalho</i>"
|
||||
|
||||
#: Settings.ui.h:62
|
||||
msgid "Show <i>AppMenu</i> button"
|
||||
msgstr "Mostrar botão <i>Menu de aplicativos</i>"
|
||||
|
||||
#: Settings.ui.h:63
|
||||
msgid "Top Bar > Show App Menu must be enabled in Tweak Tool"
|
||||
msgstr ""
|
||||
"Barra superior > Mostrar o Menu do aplicativos deve ser ativado na "
|
||||
"Ferramenta de ajustes do GNOME"
|
||||
|
||||
#: Settings.ui.h:64
|
||||
msgid "Show window previews on hover"
|
||||
msgstr "Mostrar pré-visulização da janela ao pairar"
|
||||
|
||||
#: Settings.ui.h:65
|
||||
msgid "Time (ms) before showing (100 is default)"
|
||||
msgstr "Tempo (ms) antes de exibir (100 é o padrão)"
|
||||
|
||||
#: Settings.ui.h:66
|
||||
msgid "Isolate Workspaces"
|
||||
msgstr "Isolar Espaços de trabalho"
|
||||
|
||||
#: Settings.ui.h:67
|
||||
msgid "Behaviour when clicking on the icon of a running application."
|
||||
msgstr "Comportamento ao clicar sobre o ícone de um aplicativo em execução."
|
||||
|
||||
#: Settings.ui.h:68
|
||||
msgid "Click action"
|
||||
msgstr "Ação do clique"
|
||||
|
||||
#: Settings.ui.h:69
|
||||
msgid ""
|
||||
"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
|
||||
"together with Shift and Ctrl."
|
||||
msgstr ""
|
||||
"Habilita o Super+(0-9) como atalho para os aplicativos. Isto pode ser usado "
|
||||
"junto com Shift e Ctrl."
|
||||
|
||||
#: Settings.ui.h:70
|
||||
msgid "Use hotkeys to activate apps"
|
||||
msgstr "Utilizar teclas de atalho para ativar os aplicativos"
|
||||
|
||||
#: Settings.ui.h:71
|
||||
msgid "Behavior"
|
||||
msgstr "Comportamento"
|
||||
|
||||
#: Settings.ui.h:72
|
||||
msgid ""
|
||||
"Tray Font Size\n"
|
||||
"(0 = theme default)"
|
||||
msgstr ""
|
||||
"Tamanho da fonte da bandeja\n"
|
||||
"(0 = padrão do tema)"
|
||||
|
||||
#: Settings.ui.h:74
|
||||
msgid ""
|
||||
"LeftBox Font Size\n"
|
||||
"(0 = theme default)"
|
||||
msgstr ""
|
||||
"Tamanho da fonte da caixa da esquerda\n"
|
||||
"(0 = padrão do tema)"
|
||||
|
||||
#: Settings.ui.h:76
|
||||
msgid ""
|
||||
"Tray Item Padding\n"
|
||||
"(-1 = theme default)"
|
||||
msgstr ""
|
||||
"Preenchimento do ítem da bandeja\n"
|
||||
"(-1 = padrão do tema)"
|
||||
|
||||
#: Settings.ui.h:78
|
||||
msgid ""
|
||||
"Status Icon Padding\n"
|
||||
"(-1 = theme default)"
|
||||
msgstr ""
|
||||
"Preenchimento do ícone de status\n"
|
||||
"(-1 = padrão do tema)"
|
||||
|
||||
#: Settings.ui.h:80
|
||||
msgid ""
|
||||
"LeftBox Padding\n"
|
||||
"(-1 = theme default)"
|
||||
msgstr ""
|
||||
"Preenchimento da caixa da esquerda\n"
|
||||
"(-1 = padrão do tema)"
|
||||
|
||||
#: Settings.ui.h:82
|
||||
msgid "Animate switching applications"
|
||||
msgstr "Animar alternações dos aplicativos"
|
||||
|
||||
#: Settings.ui.h:83
|
||||
msgid "Animate launching new windows"
|
||||
msgstr "Carregamento animado de novas janelas"
|
||||
|
||||
#: Settings.ui.h:84
|
||||
msgid "App icon secondary (right-click) menu"
|
||||
msgstr "Ícone do aplicativo do menu secundário (clique-direito)"
|
||||
|
||||
#: Settings.ui.h:86
|
||||
msgid "Fine-Tune"
|
||||
msgstr "Sintonia fina"
|
||||
|
||||
#: Settings.ui.h:87
|
||||
msgid "version: "
|
||||
msgstr "versão: "
|
||||
|
||||
#: Settings.ui.h:88
|
||||
msgid "Github"
|
||||
msgstr "Github"
|
||||
|
||||
#: Settings.ui.h:89
|
||||
msgid ""
|
||||
"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
|
||||
"See the <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
|
||||
"\">GNU General Public License, version 2 or later</a> for details.</span>"
|
||||
msgstr ""
|
||||
"<span size=\"small\">Este programa vem com ABSOLUTAMENTE NENHUMA GARANTIA.\n"
|
||||
"Veja a <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
|
||||
"\">Licença Pública Geral GNU, versão 2 ou posterior</a> para maiores "
|
||||
"detalhes.</span>"
|
||||
|
||||
#: Settings.ui.h:91
|
||||
msgid "About"
|
||||
msgstr "Sobre"
|
||||
|
||||
#~ msgid "Panel Size"
|
||||
#~ msgstr "Tamanho do painel"
|
||||
|
||||
#~ msgid "Appearance"
|
||||
#~ msgstr "Aparência"
|
||||
|
||||
msgid "Weekday"
|
||||
msgstr "Dia de semana"
|
||||
|
||||
msgid "Date"
|
||||
msgstr "Data"
|
||||
|
||||
msgid "Seconds"
|
||||
msgstr "Segundos"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Monitor do sistema"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Arquivos"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Configurações"
|
||||
@@ -0,0 +1,17 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: ro\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "Monitor de sistem"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "Fișiere"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Configurări"
|
||||
@@ -0,0 +1,14 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Project-Id-Version: Zorin OS\n"
|
||||
"Language: si\n"
|
||||
|
||||
msgid "System Monitor"
|
||||
msgstr "පද්ධති නිරීක්ෂකය"
|
||||
|
||||
msgid "Files"
|
||||
msgstr "ගොනු"
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user