Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4286fd1bcc | ||
|
|
3bb0897bc1 | ||
|
|
12eedcf6f7 | ||
|
|
08d382facc | ||
|
|
96a1de92db | ||
|
|
cc2f46b837 |
@@ -1,7 +1,7 @@
|
||||
include:
|
||||
- remote: "https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/6f86b8bcb0cd5168c32779c4fea9a893c4a0c046/templates/ci-fairy.yml"
|
||||
|
||||
image: registry.gitlab.gnome.org/gnome/gnome-shell/fedora/34:2021-08-12.0
|
||||
image: registry.gitlab.gnome.org/gnome/gnome-shell/fedora/33:2020-11-17.0
|
||||
|
||||
stages:
|
||||
- pre_review
|
||||
@@ -21,7 +21,6 @@ default:
|
||||
- 'api_failure'
|
||||
|
||||
variables:
|
||||
FDO_UPSTREAM_REPO: GNOME/gnome-shell-extensions
|
||||
LINT_LOG: "eslint-report.xml"
|
||||
JS_LOG: "js-report.txt"
|
||||
|
||||
@@ -90,7 +89,7 @@ js_check:
|
||||
eslint:
|
||||
stage: review
|
||||
script:
|
||||
- eslint -o $LINT_LOG -f junit --resolve-plugins-relative-to $(npm root -g) extensions
|
||||
- eslint -o $LINT_LOG -f junit extensions
|
||||
artifacts:
|
||||
paths:
|
||||
- ${LINT_LOG}
|
||||
|
||||
@@ -28,4 +28,4 @@ imports (like imports.lang or imports.dbus) and introspection,
|
||||
the other for Shell API. Within the same group, put everything
|
||||
in alphabetic order.
|
||||
|
||||
[coding-style]: https://gitlab.gnome.org/GNOME/gjs/blob/HEAD/doc/Style_Guide.md
|
||||
[coding-style]: https://gitlab.gnome.org/GNOME/gjs/blob/master/doc/Style_Guide.md
|
||||
|
||||
13
NEWS
13
NEWS
@@ -1,16 +1,13 @@
|
||||
41.beta
|
||||
=======
|
||||
40.2
|
||||
====
|
||||
* window-list: Extend reactive area of minimap to screen edges [Adam; !171]
|
||||
* drive-menu: Improve detection of network mounts [Florian; !27, !176]
|
||||
* Use distinct gettext domain for e.g.o uploads [Florian; #335]
|
||||
* Misc. bug fixes and cleanups [Florian; !172, !174, !177, !167, !178, !180,
|
||||
!181, !182, !183]
|
||||
* Misc. bug fixes [Florian; !172]
|
||||
|
||||
Contributors:
|
||||
Marco Trevisan (Treviño), Adam Goode, Florian Müllner
|
||||
Adam Goode, Florian Müllner
|
||||
|
||||
Translators:
|
||||
Hugo Carvalho [pt], Juliano de Souza Camargo [pt], Alexander Shopov [bg]
|
||||
Hugo Carvalho [pt], Juliano de Souza Camargo [pt]
|
||||
|
||||
40.1
|
||||
====
|
||||
|
||||
13
README.md
13
README.md
@@ -69,19 +69,6 @@ GSettings key.
|
||||
|
||||
Adds a simple workspace switcher to the top bar.
|
||||
|
||||
## Default branch
|
||||
|
||||
The default development branch is `main`. If you still have a local
|
||||
checkout under the old name, use:
|
||||
```sh
|
||||
git checkout master
|
||||
git branch -m master main
|
||||
git fetch
|
||||
git branch --unset-upstream
|
||||
git branch -u origin/master
|
||||
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
GNOME Shell Extensions are distributed under the terms of the GNU General
|
||||
|
||||
@@ -84,8 +84,8 @@ $variant: 'light';
|
||||
}
|
||||
|
||||
#appMenu {
|
||||
padding: 0 8px 0 8px;
|
||||
spinner-image: url("classic-process-working.svg");
|
||||
.panel-status-menu-box { padding: 0; }
|
||||
}
|
||||
.tile-preview-left.on-primary,
|
||||
.tile-preview-right.on-primary,
|
||||
|
||||
Submodule data/gnome-shell-sass updated: b267200d75...9d66f7dd54
@@ -7,23 +7,20 @@ builddir=`mktemp -p $srcdir -d _build.XXXXXX` || exit 1
|
||||
installdir=`mktemp -p $srcdir -d _install.XXXXXX` || exit 1
|
||||
|
||||
meson setup --prefix=$installdir -Dextension_set=all $srcdir $builddir
|
||||
meson install -C $builddir
|
||||
ninja -C$builddir install
|
||||
|
||||
rm -rf $srcdir/zip-files
|
||||
mkdir $srcdir/zip-files
|
||||
|
||||
extensiondir=$installdir/share/gnome-shell/extensions
|
||||
schemadir=$installdir/share/glib-2.0/schemas
|
||||
localedir=$installdir/share/locale
|
||||
|
||||
for f in $extensiondir/*; do
|
||||
name=`basename ${f%%@*}`
|
||||
uuid=$name@gnome-shell-extensions.gcampax.github.com
|
||||
schema=$schemadir/org.gnome.shell.extensions.$name.gschema.xml
|
||||
|
||||
olddomain=gnome-shell-extensions
|
||||
newdomain=gnome-shell-extension-$name
|
||||
sed -i "/gettext-domain/ s:$olddomain:$newdomain:" $f/metadata.json
|
||||
|
||||
xgettext --from-code=UTF-8 --output-dir=$builddir --output=$name.pot $f/*.js
|
||||
|
||||
if [ -f $builddir/$name.pot ]; then
|
||||
|
||||
@@ -12,7 +12,8 @@ const Main = imports.ui.main;
|
||||
const PanelMenu = imports.ui.panelMenu;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
|
||||
const _ = ExtensionUtils.gettext;
|
||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const appSys = Shell.AppSystem.get_default();
|
||||
|
||||
@@ -672,20 +673,17 @@ class ApplicationsButton extends PanelMenu.Button {
|
||||
|
||||
let appsMenuButton;
|
||||
|
||||
/** */
|
||||
function enable() {
|
||||
appsMenuButton = new ApplicationsButton();
|
||||
let index = Main.sessionMode.panel.left.indexOf('activities') + 1;
|
||||
Main.panel.addToStatusArea('apps-menu', appsMenuButton, index, 'left');
|
||||
}
|
||||
|
||||
/** */
|
||||
function disable() {
|
||||
Main.panel.menuManager.removeMenu(appsMenuButton.menu);
|
||||
appsMenuButton.destroy();
|
||||
}
|
||||
|
||||
/** */
|
||||
function init() {
|
||||
ExtensionUtils.initTranslations();
|
||||
}
|
||||
|
||||
@@ -108,14 +108,10 @@ class WindowMover {
|
||||
let prevCheckWorkspaces;
|
||||
let winMover;
|
||||
|
||||
/** */
|
||||
function init() {
|
||||
ExtensionUtils.initTranslations();
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {bool} - false (used as MetaLater handler)
|
||||
*/
|
||||
function myCheckWorkspaces() {
|
||||
let keepAliveWorkspaces = [];
|
||||
let foundNonEmpty = false;
|
||||
@@ -136,7 +132,6 @@ function myCheckWorkspaces() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/** */
|
||||
function enable() {
|
||||
prevCheckWorkspaces = Main.wm._workspaceTracker._checkWorkspaces;
|
||||
Main.wm._workspaceTracker._checkWorkspaces = myCheckWorkspaces;
|
||||
@@ -144,7 +139,6 @@ function enable() {
|
||||
winMover = new WindowMover();
|
||||
}
|
||||
|
||||
/** */
|
||||
function disable() {
|
||||
Main.wm._workspaceTracker._checkWorkspaces = prevCheckWorkspaces;
|
||||
winMover.destroy();
|
||||
|
||||
@@ -4,9 +4,10 @@
|
||||
|
||||
const { Gio, GLib, GObject, Gtk, Pango } = imports.gi;
|
||||
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const _ = ExtensionUtils.gettext;
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
|
||||
const SETTINGS_KEY = 'application-list';
|
||||
|
||||
@@ -265,14 +266,10 @@ class NewRuleDialog extends Gtk.AppChooserDialog {
|
||||
}
|
||||
});
|
||||
|
||||
/** */
|
||||
function init() {
|
||||
ExtensionUtils.initTranslations();
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {Gtk.Widget} - the prefs widget
|
||||
*/
|
||||
function buildPrefsWidget() {
|
||||
return new AutoMoveSettingsWidget();
|
||||
}
|
||||
|
||||
@@ -2,14 +2,15 @@
|
||||
// Drive menu extension
|
||||
const { Clutter, Gio, GObject, Shell, St } = imports.gi;
|
||||
|
||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
const Main = imports.ui.main;
|
||||
const PanelMenu = imports.ui.panelMenu;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
const ShellMountOperation = imports.ui.shellMountOperation;
|
||||
|
||||
const _ = ExtensionUtils.gettext;
|
||||
|
||||
var MountMenuItem = GObject.registerClass(
|
||||
class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
|
||||
_init(mount) {
|
||||
@@ -40,8 +41,6 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
|
||||
ejectButton.connect('clicked', this._eject.bind(this));
|
||||
this.add(ejectButton);
|
||||
|
||||
this.hide();
|
||||
|
||||
this._changedId = mount.connect('changed', this._syncVisibility.bind(this));
|
||||
this._syncVisibility();
|
||||
}
|
||||
@@ -55,21 +54,7 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
|
||||
super.destroy();
|
||||
}
|
||||
|
||||
_fsIsRemote(root) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const attr = Gio.FILE_ATTRIBUTE_FILESYSTEM_REMOTE;
|
||||
root.query_filesystem_info_async(attr, null, (o, res) => {
|
||||
try {
|
||||
const info = root.query_filesystem_info_finish(res);
|
||||
resolve(!info.get_attribute_boolean(attr));
|
||||
} catch (e) {
|
||||
reject(e);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
async _isInteresting() {
|
||||
_isInteresting() {
|
||||
if (!this.mount.can_eject() && !this.mount.can_unmount())
|
||||
return false;
|
||||
if (this.mount.is_shadowed())
|
||||
@@ -77,23 +62,17 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
|
||||
|
||||
let volume = this.mount.get_volume();
|
||||
|
||||
if (volume)
|
||||
return volume.get_identifier('class') !== 'network';
|
||||
|
||||
const root = this.mount.get_root();
|
||||
|
||||
try {
|
||||
return await this._fsIsRemote(root);
|
||||
} catch (e) {
|
||||
log(`Failed to query filesystem: ${e.message}`);
|
||||
if (!volume) {
|
||||
// probably a GDaemonMount, could be network or
|
||||
// local, but we can't tell; assume it's local for now
|
||||
return true;
|
||||
}
|
||||
|
||||
// Hack, fall back to looking at GType
|
||||
return Gio._LocalFilePrototype.isPrototypeOf(root);
|
||||
return volume.get_identifier('class') !== 'network';
|
||||
}
|
||||
|
||||
async _syncVisibility() {
|
||||
this.visible = await this._isInteresting();
|
||||
_syncVisibility() {
|
||||
this.visible = this._isInteresting();
|
||||
}
|
||||
|
||||
_eject() {
|
||||
@@ -156,8 +135,10 @@ class DriveMenu extends PanelMenu.Button {
|
||||
this.add_child(icon);
|
||||
|
||||
this._monitor = Gio.VolumeMonitor.get();
|
||||
this._addedId = this._monitor.connect('mount-added',
|
||||
(monitor, mount) => this._addMount(mount));
|
||||
this._addedId = this._monitor.connect('mount-added', (monitor, mount) => {
|
||||
this._addMount(mount);
|
||||
this._updateMenuVisibility();
|
||||
});
|
||||
this._removedId = this._monitor.connect('mount-removed', (monitor, mount) => {
|
||||
this._removeMount(mount);
|
||||
this._updateMenuVisibility();
|
||||
@@ -188,8 +169,6 @@ class DriveMenu extends PanelMenu.Button {
|
||||
let item = new MountMenuItem(mount);
|
||||
this._mounts.unshift(item);
|
||||
this.menu.addMenuItem(item, 0);
|
||||
|
||||
item.connect('notify::visible', () => this._updateMenuVisibility());
|
||||
}
|
||||
|
||||
_removeMount(mount) {
|
||||
@@ -216,20 +195,17 @@ class DriveMenu extends PanelMenu.Button {
|
||||
}
|
||||
});
|
||||
|
||||
/** */
|
||||
function init() {
|
||||
ExtensionUtils.initTranslations();
|
||||
}
|
||||
|
||||
let _indicator;
|
||||
|
||||
/** */
|
||||
function enable() {
|
||||
_indicator = new DriveMenu();
|
||||
Main.panel.addToStatusArea('drive-menu', _indicator);
|
||||
}
|
||||
|
||||
/** */
|
||||
function disable() {
|
||||
_indicator.destroy();
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@ const AppDisplay = imports.ui.appDisplay;
|
||||
|
||||
let _activateOriginal = null;
|
||||
|
||||
/** */
|
||||
function enable() {
|
||||
_activateOriginal = AppDisplay.AppIcon.prototype.activate;
|
||||
AppDisplay.AppIcon.prototype.activate = function () {
|
||||
@@ -11,7 +10,6 @@ function enable() {
|
||||
};
|
||||
}
|
||||
|
||||
/** */
|
||||
function disable() {
|
||||
AppDisplay.AppIcon.prototype.activate = _activateOriginal;
|
||||
}
|
||||
|
||||
@@ -238,13 +238,11 @@ class NaturalLayoutStrategy extends Workspace.LayoutStrategy {
|
||||
|
||||
let winInjections, workspaceInjections;
|
||||
|
||||
/** */
|
||||
function resetState() {
|
||||
winInjections = { };
|
||||
workspaceInjections = { };
|
||||
}
|
||||
|
||||
/** */
|
||||
function enable() {
|
||||
resetState();
|
||||
|
||||
@@ -284,11 +282,6 @@ function enable() {
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Object} object - object that was modified
|
||||
* @param {Object} injection - the map of previous injections
|
||||
* @param {string} name - the @injection key that should be removed
|
||||
*/
|
||||
function removeInjection(object, injection, name) {
|
||||
if (injection[name] === undefined)
|
||||
delete object[name];
|
||||
@@ -296,7 +289,6 @@ function removeInjection(object, injection, name) {
|
||||
object[name] = injection[name];
|
||||
}
|
||||
|
||||
/** */
|
||||
function disable() {
|
||||
var i;
|
||||
|
||||
|
||||
@@ -8,12 +8,13 @@ const Main = imports.ui.main;
|
||||
const PanelMenu = imports.ui.panelMenu;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
|
||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||
const _ = Gettext.gettext;
|
||||
const N_ = x => x;
|
||||
|
||||
const Me = ExtensionUtils.getCurrentExtension();
|
||||
const PlaceDisplay = Me.imports.placeDisplay;
|
||||
|
||||
const _ = ExtensionUtils.gettext;
|
||||
const N_ = x => x;
|
||||
|
||||
const PLACE_ICON_SIZE = 16;
|
||||
|
||||
var PlaceMenuItem = GObject.registerClass(
|
||||
@@ -132,14 +133,12 @@ class PlacesMenu extends PanelMenu.Button {
|
||||
}
|
||||
});
|
||||
|
||||
/** */
|
||||
function init() {
|
||||
ExtensionUtils.initTranslations();
|
||||
}
|
||||
|
||||
let _indicator;
|
||||
|
||||
/** */
|
||||
function enable() {
|
||||
_indicator = new PlacesMenu();
|
||||
|
||||
@@ -149,7 +148,6 @@ function enable() {
|
||||
Main.panel.addToStatusArea('places-menu', _indicator, pos, 'left');
|
||||
}
|
||||
|
||||
/** */
|
||||
function disable() {
|
||||
_indicator.destroy();
|
||||
}
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
const { Gio, GLib, Shell } = imports.gi;
|
||||
const Signals = imports.signals;
|
||||
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
const Main = imports.ui.main;
|
||||
const ShellMountOperation = imports.ui.shellMountOperation;
|
||||
|
||||
const _ = ExtensionUtils.gettext;
|
||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||
const _ = Gettext.gettext;
|
||||
const N_ = x => x;
|
||||
|
||||
const BACKGROUND_SCHEMA = 'org.gnome.desktop.background';
|
||||
|
||||
@@ -28,15 +28,11 @@ const MESSAGE_FADE_TIME = 2000;
|
||||
|
||||
let text;
|
||||
|
||||
/** */
|
||||
function hideMessage() {
|
||||
text.destroy();
|
||||
text = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} message - the message to flash
|
||||
*/
|
||||
function flashMessage(message) {
|
||||
if (!text) {
|
||||
text = new St.Label({ style_class: 'screenshot-sizer-message' });
|
||||
@@ -71,11 +67,6 @@ let SIZES = [
|
||||
[720, 360], // Phone landscape fullscreen
|
||||
];
|
||||
|
||||
/**
|
||||
* @param {Meta.Display} display - the display
|
||||
* @param {Meta.Window=} window - for per-window bindings, the window
|
||||
* @param {Meta.KeyBinding} binding - the key binding
|
||||
*/
|
||||
function cycleScreenshotSizes(display, window, binding) {
|
||||
// Probably this isn't useful with 5 sizes, but you can decrease instead
|
||||
// of increase by holding down shift.
|
||||
@@ -142,7 +133,6 @@ function cycleScreenshotSizes(display, window, binding) {
|
||||
flashMessage(message);
|
||||
}
|
||||
|
||||
/** */
|
||||
function enable() {
|
||||
Main.wm.addKeybinding(
|
||||
'cycle-screenshot-sizes',
|
||||
@@ -158,7 +148,6 @@ function enable() {
|
||||
cycleScreenshotSizes);
|
||||
}
|
||||
|
||||
/** */
|
||||
function disable() {
|
||||
Main.wm.removeKeybinding('cycle-screenshot-sizes');
|
||||
Main.wm.removeKeybinding('cycle-screenshot-sizes-backward');
|
||||
|
||||
@@ -58,9 +58,6 @@ class ThemeManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {ThemeManager} - the extension state object
|
||||
*/
|
||||
function init() {
|
||||
return new ThemeManager();
|
||||
}
|
||||
|
||||
@@ -174,13 +174,9 @@ class ThemeRow extends Gtk.ListBoxRow {
|
||||
}
|
||||
});
|
||||
|
||||
/** */
|
||||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {Gtk.Widget} - the prefs widget
|
||||
*/
|
||||
function buildPrefsWidget() {
|
||||
return new UserThemePrefsWidget();
|
||||
}
|
||||
|
||||
@@ -3,9 +3,6 @@ const { GLib } = imports.gi;
|
||||
|
||||
const fn = (...args) => GLib.build_filenamev(args);
|
||||
|
||||
/**
|
||||
* @returns {string[]} - an ordered list of theme directories
|
||||
*/
|
||||
function getThemeDirs() {
|
||||
return [
|
||||
fn(GLib.get_home_dir(), '.themes'),
|
||||
@@ -14,9 +11,6 @@ function getThemeDirs() {
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {string[]} - an ordered list of mode theme directories
|
||||
*/
|
||||
function getModeThemeDirs() {
|
||||
return GLib.get_system_data_dirs()
|
||||
.map(dir => fn(dir, 'gnome-shell', 'theme'));
|
||||
|
||||
@@ -11,7 +11,8 @@ const Me = ExtensionUtils.getCurrentExtension();
|
||||
const { WindowPicker, WindowPickerToggle } = Me.imports.windowPicker;
|
||||
const { WorkspaceIndicator } = Me.imports.workspaceIndicator;
|
||||
|
||||
const _ = ExtensionUtils.gettext;
|
||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const ICON_TEXTURE_SIZE = 24;
|
||||
const DND_ACTIVATE_TIMEOUT = 500;
|
||||
@@ -22,10 +23,34 @@ const GroupingMode = {
|
||||
ALWAYS: 2,
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {Shell.App} app - an app
|
||||
* @returns {number} - the smallest stable sequence of the app's windows
|
||||
*/
|
||||
|
||||
function _minimizeOrActivateWindow(window) {
|
||||
let focusWindow = global.display.focus_window;
|
||||
if (focusWindow === window ||
|
||||
focusWindow && focusWindow.get_transient_for() === window)
|
||||
window.minimize();
|
||||
else
|
||||
window.activate(global.get_current_time());
|
||||
}
|
||||
|
||||
function _openMenu(menu) {
|
||||
menu.open();
|
||||
|
||||
let event = Clutter.get_current_event();
|
||||
if (event && event.type() === Clutter.EventType.KEY_RELEASE)
|
||||
menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||
}
|
||||
|
||||
function _onMenuStateChanged(menu, isOpen) {
|
||||
if (isOpen)
|
||||
return;
|
||||
|
||||
let [x, y] = global.get_pointer();
|
||||
let actor = global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, x, y);
|
||||
if (Me.stateObj.someWindowListContains(actor))
|
||||
actor.sync_hover();
|
||||
}
|
||||
|
||||
function _getAppStableSequence(app) {
|
||||
let windows = app.get_windows().filter(w => !w.skip_taskbar);
|
||||
return windows.reduce((prev, cur) => {
|
||||
@@ -33,6 +58,7 @@ function _getAppStableSequence(app) {
|
||||
}, Infinity);
|
||||
}
|
||||
|
||||
|
||||
class WindowContextMenu extends PopupMenu.PopupMenu {
|
||||
constructor(source, metaWindow) {
|
||||
super(source, 0.5, St.Side.BOTTOM);
|
||||
@@ -256,37 +282,10 @@ const BaseButton = GObject.registerClass({
|
||||
return true;
|
||||
}
|
||||
|
||||
_openMenu(menu) {
|
||||
menu.open();
|
||||
|
||||
let event = Clutter.get_current_event();
|
||||
if (event && event.type() === Clutter.EventType.KEY_RELEASE)
|
||||
menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||
}
|
||||
|
||||
_minimizeOrActivateWindow(window) {
|
||||
let focusWindow = global.display.focus_window;
|
||||
if (focusWindow === window ||
|
||||
focusWindow && focusWindow.get_transient_for() === window)
|
||||
window.minimize();
|
||||
else
|
||||
window.activate(global.get_current_time());
|
||||
}
|
||||
|
||||
_onMenuStateChanged(menu, isOpen) {
|
||||
if (isOpen)
|
||||
return;
|
||||
|
||||
let [x, y] = global.get_pointer();
|
||||
let actor = global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, x, y);
|
||||
if (Me.stateObj.someWindowListContains(actor))
|
||||
actor.sync_hover();
|
||||
}
|
||||
|
||||
_onPopupMenu(_actor) {
|
||||
if (!this._canOpenPopupMenu() || this._contextMenu.isOpen)
|
||||
return;
|
||||
this._openMenu(this._contextMenu);
|
||||
_openMenu(this._contextMenu);
|
||||
}
|
||||
|
||||
_isFocused() {
|
||||
@@ -363,8 +362,7 @@ class WindowButton extends BaseButton {
|
||||
this.label_actor = this._windowTitle.label_actor;
|
||||
|
||||
this._contextMenu = new WindowContextMenu(this, this.metaWindow);
|
||||
this._contextMenu.connect('open-state-changed',
|
||||
this._onMenuStateChanged.bind(this));
|
||||
this._contextMenu.connect('open-state-changed', _onMenuStateChanged);
|
||||
this._contextMenu.actor.hide();
|
||||
this._contextMenuManager.addMenu(this._contextMenu);
|
||||
Main.uiGroup.add_actor(this._contextMenu.actor);
|
||||
@@ -384,9 +382,9 @@ class WindowButton extends BaseButton {
|
||||
}
|
||||
|
||||
if (button === 1)
|
||||
this._minimizeOrActivateWindow(this.metaWindow);
|
||||
_minimizeOrActivateWindow(this.metaWindow);
|
||||
else
|
||||
this._openMenu(this._contextMenu);
|
||||
_openMenu(this._contextMenu);
|
||||
}
|
||||
|
||||
_isFocused() {
|
||||
@@ -520,16 +518,14 @@ class AppButton extends BaseButton {
|
||||
|
||||
this._menuManager = new PopupMenu.PopupMenuManager(this);
|
||||
this._menu = new PopupMenu.PopupMenu(this, 0.5, St.Side.BOTTOM);
|
||||
this._menu.connect('open-state-changed',
|
||||
this._onMenuStateChanged.bind(this));
|
||||
this._menu.connect('open-state-changed', _onMenuStateChanged);
|
||||
this._menu.actor.hide();
|
||||
this._menu.connect('activate', this._onMenuActivate.bind(this));
|
||||
this._menuManager.addMenu(this._menu);
|
||||
Main.uiGroup.add_actor(this._menu.actor);
|
||||
|
||||
this._appContextMenu = new AppContextMenu(this);
|
||||
this._appContextMenu.connect('open-state-changed',
|
||||
this._onMenuStateChanged.bind(this));
|
||||
this._appContextMenu.connect('open-state-changed', _onMenuStateChanged);
|
||||
this._appContextMenu.actor.hide();
|
||||
Main.uiGroup.add_actor(this._appContextMenu.actor);
|
||||
|
||||
@@ -596,7 +592,7 @@ class AppButton extends BaseButton {
|
||||
this._singleWindowTitle.child = this._windowTitle;
|
||||
this._windowContextMenu = new WindowContextMenu(this, this.metaWindow);
|
||||
this._windowContextMenu.connect(
|
||||
'open-state-changed', this._onMenuStateChanged.bind(this));
|
||||
'open-state-changed', _onMenuStateChanged);
|
||||
Main.uiGroup.add_actor(this._windowContextMenu.actor);
|
||||
this._windowContextMenu.actor.hide();
|
||||
this._contextMenuManager.addMenu(this._windowContextMenu);
|
||||
@@ -635,7 +631,7 @@ class AppButton extends BaseButton {
|
||||
if (windows.length === 1) {
|
||||
if (contextMenuWasOpen)
|
||||
return;
|
||||
this._minimizeOrActivateWindow(windows[0]);
|
||||
_minimizeOrActivateWindow(windows[0]);
|
||||
} else {
|
||||
this._menu.removeAll();
|
||||
|
||||
@@ -646,12 +642,12 @@ class AppButton extends BaseButton {
|
||||
item._window = windows[i];
|
||||
this._menu.addMenuItem(item);
|
||||
}
|
||||
this._openMenu(this._menu);
|
||||
_openMenu(this._menu);
|
||||
}
|
||||
} else {
|
||||
if (contextMenuWasOpen)
|
||||
return;
|
||||
this._openMenu(this._contextMenu);
|
||||
_openMenu(this._contextMenu);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1109,8 +1105,6 @@ class WindowList extends St.Widget {
|
||||
|
||||
class Extension {
|
||||
constructor() {
|
||||
ExtensionUtils.initTranslations();
|
||||
|
||||
this._windowLists = null;
|
||||
this._hideOverviewOrig = Main.overview.hide;
|
||||
}
|
||||
@@ -1174,9 +1168,6 @@ class Extension {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {Extension} - the extension's state object
|
||||
*/
|
||||
function init() {
|
||||
return new Extension();
|
||||
}
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||
/* exported init buildPrefsWidget */
|
||||
|
||||
const { Gio, GLib, GObject, Gtk } = imports.gi;
|
||||
const { Gio, GObject, Gtk } = imports.gi;
|
||||
|
||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
|
||||
const _ = ExtensionUtils.gettext;
|
||||
|
||||
/** */
|
||||
function init() {
|
||||
ExtensionUtils.initTranslations();
|
||||
}
|
||||
@@ -25,17 +26,6 @@ class WindowListPrefsWidget extends Gtk.Box {
|
||||
halign: Gtk.Align.CENTER,
|
||||
});
|
||||
|
||||
this._actionGroup = new Gio.SimpleActionGroup();
|
||||
this.insert_action_group('window-list', this._actionGroup);
|
||||
|
||||
this._settings = ExtensionUtils.getSettings();
|
||||
this._actionGroup.add_action(
|
||||
this._settings.create_action('grouping-mode'));
|
||||
this._actionGroup.add_action(
|
||||
this._settings.create_action('show-on-all-monitors'));
|
||||
this._actionGroup.add_action(
|
||||
this._settings.create_action('display-all-workspaces'));
|
||||
|
||||
let groupingLabel = '<b>%s</b>'.format(_('Window Grouping'));
|
||||
this.append(new Gtk.Label({
|
||||
label: groupingLabel, use_markup: true,
|
||||
@@ -59,39 +49,61 @@ class WindowListPrefsWidget extends Gtk.Box {
|
||||
context.add_class('frame');
|
||||
context.add_class('view');
|
||||
|
||||
const modes = [
|
||||
{ mode: 'never', label: _('Never group windows') },
|
||||
{ mode: 'auto', label: _('Group windows when space is limited') },
|
||||
{ mode: 'always', label: _('Always group windows') },
|
||||
];
|
||||
let group = null;
|
||||
for (const { mode, label } of modes) {
|
||||
const check = new Gtk.CheckButton({
|
||||
action_name: 'window-list.grouping-mode',
|
||||
action_target: new GLib.Variant('s', mode),
|
||||
this._settings = ExtensionUtils.getSettings();
|
||||
let currentMode = this._settings.get_string('grouping-mode');
|
||||
let range = this._settings.get_range('grouping-mode');
|
||||
let modes = range.deep_unpack()[1].deep_unpack();
|
||||
|
||||
let modeLabels = {
|
||||
'never': _('Never group windows'),
|
||||
'auto': _('Group windows when space is limited'),
|
||||
'always': _('Always group windows'),
|
||||
};
|
||||
|
||||
let radio = null;
|
||||
let currentRadio = null;
|
||||
for (let i = 0; i < modes.length; i++) {
|
||||
let mode = modes[i];
|
||||
let label = modeLabels[mode];
|
||||
if (!label) {
|
||||
log('Unhandled option "%s" for grouping-mode'.format(mode));
|
||||
continue;
|
||||
}
|
||||
|
||||
radio = new Gtk.CheckButton({
|
||||
active: !i,
|
||||
label,
|
||||
group,
|
||||
group: radio,
|
||||
margin_end: 12,
|
||||
});
|
||||
group = check;
|
||||
box.append(check);
|
||||
box.append(radio);
|
||||
|
||||
if (currentMode === mode)
|
||||
currentRadio = radio;
|
||||
|
||||
radio.connect('toggled', button => {
|
||||
if (button.active)
|
||||
this._settings.set_string('grouping-mode', mode);
|
||||
});
|
||||
}
|
||||
|
||||
this.append(new Gtk.CheckButton({
|
||||
label: _('Show on all monitors'),
|
||||
action_name: 'window-list.show-on-all-monitors',
|
||||
}));
|
||||
if (currentRadio)
|
||||
currentRadio.active = true;
|
||||
|
||||
this.append(new Gtk.CheckButton({
|
||||
let check = new Gtk.CheckButton({
|
||||
label: _('Show on all monitors'),
|
||||
});
|
||||
this._settings.bind('show-on-all-monitors', check, 'active', Gio.SettingsBindFlags.DEFAULT);
|
||||
this.append(check);
|
||||
|
||||
check = new Gtk.CheckButton({
|
||||
label: _('Show windows from all workspaces'),
|
||||
action_name: 'window-list.display-all-workspaces',
|
||||
}));
|
||||
});
|
||||
this._settings.bind('display-all-workspaces', check, 'active', Gio.SettingsBindFlags.DEFAULT);
|
||||
this.append(check);
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* @returns {Gtk.Widget} - the prefs widget
|
||||
*/
|
||||
function buildPrefsWidget() {
|
||||
return new WindowListPrefsWidget();
|
||||
}
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
const { Clutter, Gio, GObject, Meta, St } = imports.gi;
|
||||
|
||||
const DND = imports.ui.dnd;
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
const Main = imports.ui.main;
|
||||
const PanelMenu = imports.ui.panelMenu;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
|
||||
const _ = ExtensionUtils.gettext;
|
||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const TOOLTIP_OFFSET = 6;
|
||||
const TOOLTIP_ANIMATION_TIME = 150;
|
||||
|
||||
@@ -262,9 +262,6 @@ class Extension {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {Extension} - the extension's state object
|
||||
*/
|
||||
function init() {
|
||||
return new Extension();
|
||||
}
|
||||
|
||||
@@ -9,7 +9,8 @@ const Main = imports.ui.main;
|
||||
const PanelMenu = imports.ui.panelMenu;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
|
||||
const _ = ExtensionUtils.gettext;
|
||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences';
|
||||
const WORKSPACE_KEY = 'workspace-names';
|
||||
@@ -442,20 +443,17 @@ class WorkspaceIndicator extends PanelMenu.Button {
|
||||
}
|
||||
});
|
||||
|
||||
/** */
|
||||
function init() {
|
||||
ExtensionUtils.initTranslations();
|
||||
}
|
||||
|
||||
let _indicator;
|
||||
|
||||
/** */
|
||||
function enable() {
|
||||
_indicator = new WorkspaceIndicator();
|
||||
Main.panel.addToStatusArea('workspace-indicator', _indicator);
|
||||
}
|
||||
|
||||
/** */
|
||||
function disable() {
|
||||
_indicator.destroy();
|
||||
}
|
||||
|
||||
@@ -3,11 +3,12 @@
|
||||
|
||||
const { Gio, GLib, GObject, Gtk, Pango } = imports.gi;
|
||||
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
|
||||
const _ = ExtensionUtils.gettext;
|
||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||
const _ = Gettext.gettext;
|
||||
const N_ = e => e;
|
||||
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
|
||||
const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences';
|
||||
const WORKSPACE_KEY = 'workspace-names';
|
||||
|
||||
@@ -208,14 +209,10 @@ class NewWorkspaceRow extends Gtk.ListBoxRow {
|
||||
}
|
||||
});
|
||||
|
||||
/** */
|
||||
function init() {
|
||||
ExtensionUtils.initTranslations();
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {Gtk.Widget} - the prefs widget
|
||||
*/
|
||||
function buildPrefsWidget() {
|
||||
return new WorkspaceSettingsWidget();
|
||||
}
|
||||
|
||||
@@ -1,12 +1,8 @@
|
||||
---
|
||||
# SPDX-License-Identifier: MIT OR LGPL-2.0-or-later
|
||||
# SPDX-FileCopyrightText: 2018 Claudio André <claudioandre.br@gmail.com>
|
||||
env:
|
||||
es6: true
|
||||
es2020: true
|
||||
extends: 'eslint:recommended'
|
||||
plugins:
|
||||
- jsdoc
|
||||
rules:
|
||||
array-bracket-newline:
|
||||
- error
|
||||
@@ -64,17 +60,6 @@ rules:
|
||||
- 'CallExpression[callee.object.name=GObject][callee.property.name=registerClass] > ClassExpression:first-child'
|
||||
# Allow dedenting chained member expressions
|
||||
MemberExpression: 'off'
|
||||
jsdoc/check-alignment: error
|
||||
jsdoc/check-param-names: error
|
||||
jsdoc/check-tag-names: error
|
||||
jsdoc/check-types: error
|
||||
jsdoc/implements-on-classes: error
|
||||
jsdoc/newline-after-description: error
|
||||
jsdoc/require-jsdoc: error
|
||||
jsdoc/require-param: error
|
||||
jsdoc/require-param-description: error
|
||||
jsdoc/require-param-name: error
|
||||
jsdoc/require-param-type: error
|
||||
key-spacing:
|
||||
- error
|
||||
- beforeColon: false
|
||||
@@ -122,15 +107,8 @@ rules:
|
||||
no-octal-escape: error
|
||||
no-proto: error
|
||||
no-prototype-builtins: 'off'
|
||||
no-restricted-globals: [error, window]
|
||||
no-restricted-properties:
|
||||
- error
|
||||
- object: imports
|
||||
property: format
|
||||
message: Use template strings
|
||||
- object: pkg
|
||||
property: initFormat
|
||||
message: Use template strings
|
||||
- object: Lang
|
||||
property: copyProperties
|
||||
message: Use Object.assign()
|
||||
@@ -189,7 +167,6 @@ rules:
|
||||
object-curly-newline:
|
||||
- error
|
||||
- consistent: true
|
||||
multiline: true
|
||||
object-curly-spacing: error
|
||||
object-shorthand: error
|
||||
operator-assignment: error
|
||||
@@ -237,14 +214,14 @@ rules:
|
||||
template-curly-spacing: error
|
||||
template-tag-spacing: error
|
||||
unicode-bom: error
|
||||
valid-jsdoc:
|
||||
- error
|
||||
- requireReturn: false
|
||||
wrap-iife:
|
||||
- error
|
||||
- inside
|
||||
yield-star-spacing: error
|
||||
yoda: error
|
||||
settings:
|
||||
jsdoc:
|
||||
mode: typescript
|
||||
globals:
|
||||
ARGV: readonly
|
||||
Debugger: readonly
|
||||
@@ -256,8 +233,5 @@ globals:
|
||||
logError: readonly
|
||||
print: readonly
|
||||
printerr: readonly
|
||||
window: readonly
|
||||
TextEncoder: readonly
|
||||
TextDecoder: readonly
|
||||
parserOptions:
|
||||
ecmaVersion: 2020
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
project('gnome-shell-extensions',
|
||||
version: '41.beta',
|
||||
version: '40.2',
|
||||
meson_version: '>= 0.44.0',
|
||||
license: 'GPL2+'
|
||||
)
|
||||
|
||||
622
po/bg.po
622
po/bg.po
@@ -1,263 +1,359 @@
|
||||
# Bulgarian translation for gnome-shell-extensions po-file.
|
||||
# Copyright (C) 2014, 2015, 2017 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2021 Alexander Shopov <ash@kambanaria.org>.
|
||||
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||
# Ivaylo Valkov <ivaylo@e-valkov.org>, 2014.
|
||||
# Alexander Shopov <ash@kambanaria.org>, 2014, 2015, 2021.
|
||||
# Lyubomir Vasilev <lyubomirv@abv.bg>, 2017.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
|
||||
"issues\n"
|
||||
"POT-Creation-Date: 2021-07-05 17:13+0000\n"
|
||||
"PO-Revision-Date: 2021-07-11 10:19+0200\n"
|
||||
"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
|
||||
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
|
||||
"Language: bg\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: data/gnome-classic.desktop.in:3
|
||||
msgid "GNOME Classic"
|
||||
msgstr "Класически GNOME"
|
||||
|
||||
#: data/gnome-classic.desktop.in:4
|
||||
msgid "This session logs you into GNOME Classic"
|
||||
msgstr "Работната среда изглежда като класическия GNOME (2.x)"
|
||||
|
||||
#: extensions/apps-menu/extension.js:113
|
||||
msgid "Favorites"
|
||||
msgstr "Любими"
|
||||
|
||||
#: extensions/apps-menu/extension.js:367
|
||||
msgid "Applications"
|
||||
msgstr "Програми"
|
||||
|
||||
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6
|
||||
msgid "Application and workspace list"
|
||||
msgstr "Списък с програмите и работните плотове"
|
||||
|
||||
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7
|
||||
msgid ""
|
||||
"A list of strings, each containing an application id (desktop file name), "
|
||||
"followed by a colon and the workspace number"
|
||||
msgstr ""
|
||||
"Списък от низове. Всеки съдържа идентификатор на програма (име на файл „."
|
||||
"desktop“), следван от знака „:“ и номер на работен плот"
|
||||
|
||||
#: extensions/auto-move-windows/prefs.js:35
|
||||
msgid "Workspace Rules"
|
||||
msgstr "Правила за работните плотове"
|
||||
|
||||
#: extensions/auto-move-windows/prefs.js:237
|
||||
msgid "Add Rule"
|
||||
msgstr "Добавяне на правило"
|
||||
|
||||
#. TRANSLATORS: %s is the filesystem name
|
||||
#: extensions/drive-menu/extension.js:132
|
||||
#: extensions/places-menu/placeDisplay.js:233
|
||||
#, javascript-format
|
||||
msgid "Ejecting drive “%s” failed:"
|
||||
msgstr "Неуспешно изваждане на устройство „%s“:"
|
||||
|
||||
#: extensions/drive-menu/extension.js:148
|
||||
msgid "Removable devices"
|
||||
msgstr "Преносими медии"
|
||||
|
||||
#: extensions/drive-menu/extension.js:172
|
||||
msgid "Open Files"
|
||||
msgstr "Отваряне на файлове"
|
||||
|
||||
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
||||
msgid "Use more screen for windows"
|
||||
msgstr "Повече пространство за прозорците"
|
||||
|
||||
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
|
||||
msgid ""
|
||||
"Try to use more screen for placing window thumbnails by adapting to screen "
|
||||
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
||||
"This setting applies only with the natural placement strategy."
|
||||
msgstr ""
|
||||
"Използване на по-голяма част от екрана за поставянето на мини изображения "
|
||||
"чрез промяна на съотношението на страните и допълнително обединяване за "
|
||||
"смаляване на обхващащия ги правоъгълник. Тази настройка се прилага само при "
|
||||
"естествената стратегия за поставяне на прозорците."
|
||||
|
||||
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
|
||||
msgid "Place window captions on top"
|
||||
msgstr "Заглавия на прозорците отгоре"
|
||||
|
||||
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
|
||||
msgid ""
|
||||
"If true, place window captions on top the respective thumbnail, overriding "
|
||||
"shell default of placing it at the bottom. Changing this setting requires "
|
||||
"restarting the shell to have any effect."
|
||||
msgstr ""
|
||||
"Ако е истина, заглавията на прозорците се поставят над мини изображенията "
|
||||
"им, а не както е стандартно — отдолу. За прилагане на промяната на "
|
||||
"настройката трябва да рестартирате обвивката на GNOME."
|
||||
|
||||
#: extensions/places-menu/extension.js:89
|
||||
#: extensions/places-menu/extension.js:92
|
||||
msgid "Places"
|
||||
msgstr "Места"
|
||||
|
||||
#: extensions/places-menu/placeDisplay.js:46
|
||||
#, javascript-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "Неуспешно стартиране на „%s“"
|
||||
|
||||
#: extensions/places-menu/placeDisplay.js:61
|
||||
#, javascript-format
|
||||
msgid "Failed to mount volume for “%s”"
|
||||
msgstr "Неуспешно монтиране на тома „%s“"
|
||||
|
||||
#: extensions/places-menu/placeDisplay.js:148
|
||||
#: extensions/places-menu/placeDisplay.js:171
|
||||
msgid "Computer"
|
||||
msgstr "Компютър"
|
||||
|
||||
#: extensions/places-menu/placeDisplay.js:359
|
||||
msgid "Home"
|
||||
msgstr "Домашна папка"
|
||||
|
||||
#: extensions/places-menu/placeDisplay.js:404
|
||||
msgid "Browse Network"
|
||||
msgstr "Мрежа"
|
||||
|
||||
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
|
||||
msgid "Cycle Screenshot Sizes"
|
||||
msgstr "Смяна на размерите на снимката на екрана"
|
||||
|
||||
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
|
||||
msgid "Cycle Screenshot Sizes Backward"
|
||||
msgstr "Смяна на размерите на снимката на екрана наобратно"
|
||||
|
||||
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
|
||||
msgid "Theme name"
|
||||
msgstr "Име на темата"
|
||||
|
||||
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6
|
||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||
msgstr ""
|
||||
"Името на темата, която да бъде заредена от „~/.themes/name/gnome-shell“"
|
||||
|
||||
#: extensions/window-list/extension.js:98
|
||||
msgid "Close"
|
||||
msgstr "Затваряне"
|
||||
|
||||
#: extensions/window-list/extension.js:118
|
||||
msgid "Unminimize"
|
||||
msgstr "Деминимизиране"
|
||||
|
||||
#: extensions/window-list/extension.js:118
|
||||
msgid "Minimize"
|
||||
msgstr "Минимизиране"
|
||||
|
||||
#: extensions/window-list/extension.js:125
|
||||
msgid "Unmaximize"
|
||||
msgstr "Демаксимизиране"
|
||||
|
||||
#: extensions/window-list/extension.js:125
|
||||
msgid "Maximize"
|
||||
msgstr "Максимизиране"
|
||||
|
||||
#: extensions/window-list/extension.js:432
|
||||
msgid "Minimize all"
|
||||
msgstr "Минимизиране на всички"
|
||||
|
||||
#: extensions/window-list/extension.js:438
|
||||
msgid "Unminimize all"
|
||||
msgstr "Деминимизиране на всички"
|
||||
|
||||
#: extensions/window-list/extension.js:444
|
||||
msgid "Maximize all"
|
||||
msgstr "Максимизиране на всички"
|
||||
|
||||
#: extensions/window-list/extension.js:452
|
||||
msgid "Unmaximize all"
|
||||
msgstr "Демаксимизиране на всички"
|
||||
|
||||
#: extensions/window-list/extension.js:460
|
||||
msgid "Close all"
|
||||
msgstr "Затваряне на всички"
|
||||
|
||||
#: extensions/window-list/extension.js:737
|
||||
msgid "Window List"
|
||||
msgstr "Списък на прозорците"
|
||||
|
||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
|
||||
msgid "When to group windows"
|
||||
msgstr "Кога прозорците да се групират"
|
||||
|
||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
|
||||
msgid ""
|
||||
"Decides when to group windows from the same application on the window list. "
|
||||
"Possible values are “never”, “auto” and “always”."
|
||||
msgstr ""
|
||||
"Кога прозорците на една програма да се групират в списъка с прозорците. "
|
||||
"Възможните стойности са „never“ (никога), „auto“ (автоматично) и "
|
||||
"„always“ (винаги)."
|
||||
|
||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||
#: extensions/window-list/prefs.js:100
|
||||
msgid "Show windows from all workspaces"
|
||||
msgstr "Да се показват прозорците от всички работни плотове"
|
||||
|
||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
||||
msgid "Whether to show windows from all workspaces or only the current one."
|
||||
msgstr ""
|
||||
"Дали да се показват прозорците от всички работни плотове или само от текущия."
|
||||
|
||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
|
||||
msgid "Show the window list on all monitors"
|
||||
msgstr "Извеждане на списъка с прозорци на всички монитори"
|
||||
|
||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
|
||||
msgid ""
|
||||
"Whether to show the window list on all connected monitors or only on the "
|
||||
"primary one."
|
||||
msgstr ""
|
||||
"Дали списъкът с прозорци да се извежда на всички монитори или само на "
|
||||
"основния"
|
||||
|
||||
#: extensions/window-list/prefs.js:29
|
||||
msgid "Window Grouping"
|
||||
msgstr "Групиране на прозорци"
|
||||
|
||||
#: extensions/window-list/prefs.js:58
|
||||
msgid "Never group windows"
|
||||
msgstr "Никога да не се групират"
|
||||
|
||||
#: extensions/window-list/prefs.js:59
|
||||
msgid "Group windows when space is limited"
|
||||
msgstr "Групиране при ограничено място"
|
||||
|
||||
#: extensions/window-list/prefs.js:60
|
||||
msgid "Always group windows"
|
||||
msgstr "Винаги да се групират"
|
||||
|
||||
#: extensions/window-list/prefs.js:94
|
||||
msgid "Show on all monitors"
|
||||
msgstr "На всички монитори"
|
||||
|
||||
#: extensions/window-list/workspaceIndicator.js:249
|
||||
#: extensions/workspace-indicator/extension.js:255
|
||||
msgid "Workspace Indicator"
|
||||
msgstr "Индикатор на работните плотове"
|
||||
|
||||
#: extensions/workspace-indicator/prefs.js:34
|
||||
msgid "Workspace Names"
|
||||
msgstr "Имена на работните плотове"
|
||||
|
||||
#: extensions/workspace-indicator/prefs.js:67
|
||||
#, javascript-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Работен плот %d"
|
||||
|
||||
#: extensions/workspace-indicator/prefs.js:208
|
||||
msgid "Add Workspace"
|
||||
msgstr "Добавяне на работен плот"
|
||||
# Bulgarian translation for gnome-shell-extensions po-file.
|
||||
# Copyright (C) 2014, 2015, 2017 Free Software Foundation, Inc.
|
||||
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||
# Ivaylo Valkov <ivaylo@e-valkov.org>, 2014.
|
||||
# Alexander Shopov <ash@kambanaria.org>, 2014, 2015.
|
||||
# Lyubomir Vasilev <lyubomirv@abv.bg>, 2017.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=extensions\n"
|
||||
"POT-Creation-Date: 2017-09-09 15:20+0000\n"
|
||||
"PO-Revision-Date: 2017-09-08 08:47+0300\n"
|
||||
"Last-Translator: Lyubomir Vasilev <lyubomirv@abv.bg>\n"
|
||||
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
|
||||
"Language: bg\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
|
||||
msgid "GNOME Classic"
|
||||
msgstr "Класически GNOME"
|
||||
|
||||
#: data/gnome-classic.desktop.in:4
|
||||
msgid "This session logs you into GNOME Classic"
|
||||
msgstr "Работната среда изглежда като класическия GNOME (2.x)"
|
||||
|
||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr "Прикрепяне на модалните прозорци към родителските им прозорци"
|
||||
|
||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:8
|
||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:25
|
||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:33
|
||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:41
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr ""
|
||||
"Този ключ при е с по-голям приоритет от „org.gnome.mutter“ при изпълнението "
|
||||
"на обвивката на GNOME."
|
||||
|
||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:16
|
||||
msgid "Arrangement of buttons on the titlebar"
|
||||
msgstr "Подредба на бутоните на заглавната лента"
|
||||
|
||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:17
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
||||
"GNOME Shell."
|
||||
msgstr ""
|
||||
"Този ключ при е с по-голям приоритет от „org.gnome.desktop.wm.preferences“ "
|
||||
"при изпълнението на обвивката на GNOME."
|
||||
|
||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:24
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr ""
|
||||
"Включване на специална подредба при приближаване на прозорец до ръбовете на "
|
||||
"екрана"
|
||||
|
||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:32
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Работни плотове само на основния екран"
|
||||
|
||||
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:40
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr "Забавяне на смяната на фокуса до спирането на движението на показалеца"
|
||||
|
||||
#: extensions/alternate-tab/prefs.js:20
|
||||
msgid "Thumbnail only"
|
||||
msgstr "Само миниатюри"
|
||||
|
||||
#: extensions/alternate-tab/prefs.js:21
|
||||
msgid "Application icon only"
|
||||
msgstr "Само икони на приложенията"
|
||||
|
||||
#: extensions/alternate-tab/prefs.js:22
|
||||
msgid "Thumbnail and application icon"
|
||||
msgstr "Миниатюри и икони на приложенията"
|
||||
|
||||
#: extensions/alternate-tab/prefs.js:38
|
||||
msgid "Present windows as"
|
||||
msgstr "Показване на прозорците като"
|
||||
|
||||
#: extensions/alternate-tab/prefs.js:69
|
||||
msgid "Show only windows in the current workspace"
|
||||
msgstr "Да се показват само прозорците на текущия работен плот"
|
||||
|
||||
#: extensions/apps-menu/extension.js:41
|
||||
msgid "Activities Overview"
|
||||
msgstr "Показване на програмите"
|
||||
|
||||
#: extensions/apps-menu/extension.js:141
|
||||
msgid "Favorites"
|
||||
msgstr "Любими"
|
||||
|
||||
#: extensions/apps-menu/extension.js:436
|
||||
msgid "Applications"
|
||||
msgstr "Програми"
|
||||
|
||||
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6
|
||||
msgid "Application and workspace list"
|
||||
msgstr "Списък с програмите и работните плотове"
|
||||
|
||||
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7
|
||||
msgid ""
|
||||
"A list of strings, each containing an application id (desktop file name), "
|
||||
"followed by a colon and the workspace number"
|
||||
msgstr ""
|
||||
"Списък от низове. Всеки съдържа идентификатор на програма (име на файл „."
|
||||
"desktop“ file name), следван от знака „:“ и номер на работен плот"
|
||||
|
||||
#: extensions/auto-move-windows/prefs.js:60
|
||||
msgid "Application"
|
||||
msgstr "Програма"
|
||||
|
||||
#: extensions/auto-move-windows/prefs.js:69
|
||||
#: extensions/auto-move-windows/prefs.js:127
|
||||
msgid "Workspace"
|
||||
msgstr "Работен плот"
|
||||
|
||||
#: extensions/auto-move-windows/prefs.js:85
|
||||
msgid "Add Rule"
|
||||
msgstr "Добавяне на правило"
|
||||
|
||||
#: extensions/auto-move-windows/prefs.js:106
|
||||
msgid "Create new matching rule"
|
||||
msgstr "Създаване на правило за съвпадение"
|
||||
|
||||
#: extensions/auto-move-windows/prefs.js:111
|
||||
msgid "Add"
|
||||
msgstr "Добавяне"
|
||||
|
||||
#. TRANSLATORS: %s is the filesystem name
|
||||
#: extensions/drive-menu/extension.js:107
|
||||
#, javascript-format
|
||||
msgid "Ejecting drive “%s” failed:"
|
||||
msgstr "Неуспешно изваждане на устройство „%s“:"
|
||||
|
||||
#: extensions/drive-menu/extension.js:125
|
||||
msgid "Removable devices"
|
||||
msgstr "Преносими медии"
|
||||
|
||||
#: extensions/drive-menu/extension.js:150
|
||||
msgid "Open Files"
|
||||
msgstr "Отваряне на файлове"
|
||||
|
||||
#: extensions/example/extension.js:17
|
||||
msgid "Hello, world!"
|
||||
msgstr "Здравей, свят!"
|
||||
|
||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:5
|
||||
msgid "Alternative greeting text."
|
||||
msgstr "Друго приветстващо съобщение."
|
||||
|
||||
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:6
|
||||
msgid ""
|
||||
"If not empty, it contains the text that will be shown when clicking on the "
|
||||
"panel."
|
||||
msgstr ""
|
||||
"Ако ключът не е празен, съдържанието му се извежда при натискането на панела."
|
||||
|
||||
#: extensions/example/prefs.js:30
|
||||
msgid "Message"
|
||||
msgstr "Съобщение"
|
||||
|
||||
#. TRANSLATORS: Example is the name of the extension, should not be
|
||||
#. translated
|
||||
#: extensions/example/prefs.js:43
|
||||
msgid ""
|
||||
"Example aims to show how to build well behaved extensions for the Shell and "
|
||||
"as such it has little functionality on its own.\n"
|
||||
"Nevertheless it’s possible to customize the greeting message."
|
||||
msgstr ""
|
||||
"Това е пример за добре работещо разширение на обвивката на GNOME и има "
|
||||
"минимална функционалност.\n"
|
||||
"С него можете да промените приветстващото съобщение на панела."
|
||||
|
||||
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
|
||||
msgid "Use more screen for windows"
|
||||
msgstr "Повече пространство за прозорците"
|
||||
|
||||
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
|
||||
msgid ""
|
||||
"Try to use more screen for placing window thumbnails by adapting to screen "
|
||||
"aspect ratio, and consolidating them further to reduce the bounding box. "
|
||||
"This setting applies only with the natural placement strategy."
|
||||
msgstr ""
|
||||
"Използване на по-голяма част от екрана за поставянето на мини изображения "
|
||||
"чрез промяна на съотношението на страните и допълнително обединяване за "
|
||||
"смаляване на обхващащия ги правоъгълник. Тази настройка се прилага само при "
|
||||
"естествената стратегия за поставяне на прозорците."
|
||||
|
||||
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
|
||||
msgid "Place window captions on top"
|
||||
msgstr "Заглавия на прозорците отгоре"
|
||||
|
||||
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
|
||||
msgid ""
|
||||
"If true, place window captions on top the respective thumbnail, overriding "
|
||||
"shell default of placing it at the bottom. Changing this setting requires "
|
||||
"restarting the shell to have any effect."
|
||||
msgstr ""
|
||||
"Ако е истина, заглавията на прозорците се поставят над мини изображенията "
|
||||
"им, а не както е стандартно — отдолу. За прилагане на промяната на "
|
||||
"настройката трябва да рестартирате обвивката на GNOME."
|
||||
|
||||
#: extensions/places-menu/extension.js:78
|
||||
#: extensions/places-menu/extension.js:81
|
||||
msgid "Places"
|
||||
msgstr "Места"
|
||||
|
||||
#: extensions/places-menu/placeDisplay.js:65
|
||||
#, javascript-format
|
||||
msgid "Failed to mount volume for “%s”"
|
||||
msgstr "Неуспешно монтиране на тома „%s“"
|
||||
|
||||
#: extensions/places-menu/placeDisplay.js:78
|
||||
#, javascript-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "Неуспешно стартиране на „%s“"
|
||||
|
||||
#: extensions/places-menu/placeDisplay.js:137
|
||||
#: extensions/places-menu/placeDisplay.js:160
|
||||
msgid "Computer"
|
||||
msgstr "Компютър"
|
||||
|
||||
#: extensions/places-menu/placeDisplay.js:303
|
||||
msgid "Home"
|
||||
msgstr "Домашна папка"
|
||||
|
||||
#: extensions/places-menu/placeDisplay.js:347
|
||||
msgid "Browse Network"
|
||||
msgstr "Мрежа"
|
||||
|
||||
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
|
||||
msgid "Cycle Screenshot Sizes"
|
||||
msgstr "Смяна на размерите на снимката на екрана"
|
||||
|
||||
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
|
||||
msgid "Cycle Screenshot Sizes Backward"
|
||||
msgstr "Смяна на размерите на снимката на екрана наобратно"
|
||||
|
||||
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
|
||||
msgid "Theme name"
|
||||
msgstr "Име на темата"
|
||||
|
||||
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6
|
||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||
msgstr ""
|
||||
"Името на темата, която да бъде заредена от „~/.themes/name/gnome-shell“"
|
||||
|
||||
#: extensions/window-list/extension.js:110
|
||||
msgid "Close"
|
||||
msgstr "Затваряне"
|
||||
|
||||
#: extensions/window-list/extension.js:129
|
||||
msgid "Unminimize"
|
||||
msgstr "Деминимизиране"
|
||||
|
||||
#: extensions/window-list/extension.js:130
|
||||
msgid "Minimize"
|
||||
msgstr "Минимизиране"
|
||||
|
||||
#: extensions/window-list/extension.js:136
|
||||
msgid "Unmaximize"
|
||||
msgstr "Демаксимизиране"
|
||||
|
||||
#: extensions/window-list/extension.js:137
|
||||
msgid "Maximize"
|
||||
msgstr "Максимизиране"
|
||||
|
||||
#: extensions/window-list/extension.js:420
|
||||
msgid "Minimize all"
|
||||
msgstr "Минимизиране на всички"
|
||||
|
||||
#: extensions/window-list/extension.js:428
|
||||
msgid "Unminimize all"
|
||||
msgstr "Деминимизиране на всички"
|
||||
|
||||
#: extensions/window-list/extension.js:436
|
||||
msgid "Maximize all"
|
||||
msgstr "Максимизиране на всички"
|
||||
|
||||
#: extensions/window-list/extension.js:445
|
||||
msgid "Unmaximize all"
|
||||
msgstr "Демаксимизиране на всички"
|
||||
|
||||
#: extensions/window-list/extension.js:454
|
||||
msgid "Close all"
|
||||
msgstr "Затваряне на всички"
|
||||
|
||||
#: extensions/window-list/extension.js:678
|
||||
#: extensions/workspace-indicator/extension.js:30
|
||||
msgid "Workspace Indicator"
|
||||
msgstr "Индикатор на работните плотове"
|
||||
|
||||
#: extensions/window-list/extension.js:842
|
||||
msgid "Window List"
|
||||
msgstr "Списък на прозорците"
|
||||
|
||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
|
||||
msgid "When to group windows"
|
||||
msgstr "Кога да се групират прозорците"
|
||||
|
||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
|
||||
msgid ""
|
||||
"Decides when to group windows from the same application on the window list. "
|
||||
"Possible values are “never”, “auto” and “always”."
|
||||
msgstr ""
|
||||
"Кога да се групират прозорците на една програма в списъка с прозорците. "
|
||||
"Възможните стойности са „never“ (никога), „auto“ (автоматично) и "
|
||||
"„always“ (винаги)."
|
||||
|
||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
|
||||
msgid "Show the window list on all monitors"
|
||||
msgstr "Извеждане на списъка с прозорци на всички монитори"
|
||||
|
||||
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
|
||||
msgid ""
|
||||
"Whether to show the window list on all connected monitors or only on the "
|
||||
"primary one."
|
||||
msgstr ""
|
||||
"Дали списъкът с прозорци да се извежда на всички монитори или само на "
|
||||
"основния"
|
||||
|
||||
#: extensions/window-list/prefs.js:32
|
||||
msgid "Window Grouping"
|
||||
msgstr "Групиране на прозорци"
|
||||
|
||||
#: extensions/window-list/prefs.js:50
|
||||
msgid "Never group windows"
|
||||
msgstr "Никога да не се групират"
|
||||
|
||||
#: extensions/window-list/prefs.js:51
|
||||
msgid "Group windows when space is limited"
|
||||
msgstr "Групиране при ограничено място"
|
||||
|
||||
#: extensions/window-list/prefs.js:52
|
||||
msgid "Always group windows"
|
||||
msgstr "Винаги да се групират"
|
||||
|
||||
#: extensions/window-list/prefs.js:75
|
||||
msgid "Show on all monitors"
|
||||
msgstr "На всички монитори"
|
||||
|
||||
#: extensions/workspace-indicator/prefs.js:141
|
||||
msgid "Workspace Names"
|
||||
msgstr "Имена на работните плотове"
|
||||
|
||||
#: extensions/workspace-indicator/prefs.js:157
|
||||
msgid "Name"
|
||||
msgstr "Име"
|
||||
|
||||
#: extensions/workspace-indicator/prefs.js:198
|
||||
#, javascript-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Работен плот %d"
|
||||
|
||||
Reference in New Issue
Block a user