Compare commits

..

7 Commits

Author SHA1 Message Date
Florian Müllner
df463177e7 Bump version to 3.36.2
Update NEWS.
2020-04-29 22:45:40 +02:00
Florian Müllner
62af36ebfa Update sass submodule 2020-04-29 22:44:25 +02:00
Kristjan SCHMIDT
c5246b7415 Update Esperanto translation 2020-04-18 09:00:46 +00:00
Xiaoguang Wang
d39c1fd685 windowPicker: Wrong signal ID _nWorkspacesNotifyId
https://gitlab.gnome.org/GNOME/gnome-shell-extensions/merge_requests/106


(cherry picked from commit f9aaa732b2)
2020-04-10 14:31:24 +00:00
Florian Müllner
665a7fbbcb ci: Update URL check
Gitlab started inserting a /-/ in its URLs, account for that.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/113


(cherry picked from commit 7b82c5e12b)
2020-04-10 14:30:49 +00:00
Yosef Or Boczko
c477f10bfb Update Hebrew translation 2020-04-01 15:22:37 +00:00
Florian Müllner
2ae0f368b9 Bump version to 3.36.1
Update NEWS.
2020-03-31 00:58:41 +02:00
31 changed files with 1063 additions and 1356 deletions

View File

@@ -1,12 +1,10 @@
image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v2
stages:
- review
- commit_check
- source_check
- build
variables:
LINT_LOG: "eslint-report.txt"
JS_LOG: "js-report.txt"
.only_default: &only_default
only:
@@ -16,25 +14,15 @@ variables:
check_commit_log:
image: registry.gitlab.gnome.org/gnome/gjs:fedora.static-analysis
stage: review
stage: commit_check
script:
- ./.gitlab-ci/check-commit-log.sh
only:
- merge_requests
js_check:
stage: review
script:
- find extensions -name '*.js' -exec js68 -c -s '{}' ';' 2>&1 | tee $JS_LOG
- (! grep -q . $JS_LOG)
<<: *only_default
artifacts:
paths:
- ${JS_LOG}
when: on_failure
eslint:
stage: review
image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v1
stage: source_check
script:
- eslint -o $LINT_LOG extensions --no-color || { cat $LINT_LOG; false; }
<<: *only_default
@@ -43,13 +31,10 @@ eslint:
- ${LINT_LOG}
when: on_failure
build-bundles:
build-shell-extensions:
image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v1
stage: build
script:
- ./export-zips.sh
- meson _build .
- ninja -C _build test install
<<: *only_default
artifacts:
name: 'Extension bundles'
expose_as: 'Get Extension bundles here'
paths:
- zip-files/

27
NEWS
View File

@@ -1,32 +1,17 @@
3.37.2
3.36.2
======
* window-list, auto-move: Modernize preference dialogs [Florian; !121]
* Adjust to gnome-shell changes [Florian; !122]
* Misc. bug fixes and cleanups [Florian, Xiaoguang; !113, !106]
Contributors:
Florian Müllner
Florian Müllner, Xiaoguang Wang
Translators:
Cheng-Chia Tseng [zh_TW], Yuri Chornoivan [uk], Daniel Mustieles [es],
Emin Tufan Çetin [tr], Danial Behzadi [fa], Daniel Șerbănescu [ro],
Matej Urbančič [sl]
3.37.1
Yosef Or Boczko [he], Kristjan SCHMIDT [eo]
3.36.1
======
* drive-menu: Emphasize eject buttons [Florian; #223]
* user-theme: Add preference dialog [Florian; !117]
* window-list: Fix inconsistent state in preference dialog [Milan; !119]
* workspace-indicator: Overhaul preference dialog [Florian; !120]
* user-theme: Support session mode styles [Florian; !118]
* Misc. bug fixes and cleanups [Florian, Xiaoguang; !113, !106, !114, !116]
Contributors:
Milan Crha, Florian Müllner, Xiaoguang Wang
Translators:
Daniel Korostil [uk], Yosef Or Boczko [he], Kristjan SCHMIDT [eo],
Dz Chen [zh_CN], Danial Behzadi [fa], Yuri Chornoivan [uk],
Anders Jonsson [sv], Daniel Mustieles [es]
Daniel Korostil [uk]
3.36.0
======

View File

@@ -21,23 +21,16 @@ for f in $extensiondir/*; do
uuid=$name@gnome-shell-extensions.gcampax.github.com
schema=$schemadir/org.gnome.shell.extensions.$name.gschema.xml
xgettext --from-code=UTF-8 --output-dir=$builddir --output=$name.pot $f/*.js
cp $srcdir/NEWS $srcdir/COPYING $f
cp -r $localedir $f
if [ -f $builddir/$name.pot ]; then
mkdir $f/po
for l in $(<$srcdir/po/LINGUAS); do
msgmerge --quiet --output-file=$f/po/$l.po \
$srcdir/po/$l.po $builddir/$name.pot
done
if [ -f $schema ]; then
mkdir $f/schemas
cp $schema $f/schemas;
glib-compile-schemas $f/schemas
fi
cp $srcdir/NEWS $srcdir/COPYING $f
sources=(NEWS COPYING $(cd $f; ls *.js))
[ -f $schema ] || unset schema
gnome-extensions pack ${sources[@]/#/--extra-source=} \
${schema:+--schema=$schema} --out-dir=$srcdir/zip-files $f
(cd $f && zip -rmq $srcdir/zip-files/$uuid.shell-extension.zip .)
done
rm -rf $builddir

View File

@@ -35,16 +35,17 @@ class WindowMover {
_updateAppData() {
let ids = [...this._appConfigs.keys()];
let removedApps = [...this._appData.keys()]
.filter(a => !ids.includes(a.id));
let removedApps = [...this._appData.keys()].filter(
a => !ids.includes(a.id)
);
removedApps.forEach(app => {
app.disconnect(this._appData.get(app).windowsChangedId);
this._appData.delete(app);
});
let addedApps = ids
.map(id => this._appSystem.lookup_app(id))
.filter(app => app && !this._appData.has(app));
let addedApps = ids.map(id => this._appSystem.lookup_app(id)).filter(
app => app && !this._appData.has(app)
);
addedApps.forEach(app => {
let data = {
windowsChangedId: app.connect('windows-changed',
@@ -93,9 +94,9 @@ class WindowMover {
// the window still exists and is just moved to a different workspace
// or something; assume it'll be added back immediately, so keep it
// to avoid moving it again
windows.push(...data.windows.filter(w => {
return !windows.includes(w) && w.get_compositor_private() !== null;
}));
windows.push(...data.windows.filter(
w => !windows.includes(w) && w.get_compositor_private() !== null
));
let workspaceNum = this._appConfigs.get(app.id);
windows.filter(w => !data.windows.includes(w)).forEach(window => {

View File

@@ -2,10 +2,11 @@
// Start apps on custom workspaces
/* exported init buildPrefsWidget */
const { Gio, GLib, GObject, Gtk, Pango } = imports.gi;
const { Gio, GObject, Gtk } = imports.gi;
const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext;
const N_ = e => e;
const ExtensionUtils = imports.misc.extensionUtils;
@@ -13,282 +14,269 @@ const SETTINGS_KEY = 'application-list';
const WORKSPACE_MAX = 36; // compiled in limit of mutter
const AutoMoveSettingsWidget = GObject.registerClass(
class AutoMoveSettingsWidget extends Gtk.ScrolledWindow {
_init() {
super._init({
hscrollbar_policy: Gtk.PolicyType.NEVER,
});
const Columns = {
APPINFO: 0,
DISPLAY_NAME: 1,
ICON: 2,
WORKSPACE: 3,
ADJUSTMENT: 4,
};
const box = new Gtk.Box({
orientation: Gtk.Orientation.VERTICAL,
halign: Gtk.Align.CENTER,
spacing: 12,
margin_top: 36,
margin_bottom: 36,
margin_start: 36,
margin_end: 36,
});
this.add(box);
box.add(new Gtk.Label({
label: '<b>%s</b>'.format(_('Workspace Rules')),
use_markup: true,
halign: Gtk.Align.START,
}));
this._list = new Gtk.ListBox({
selection_mode: Gtk.SelectionMode.NONE,
valign: Gtk.Align.START,
});
this._list.set_header_func(this._updateHeader.bind(this));
box.add(this._list);
const context = this._list.get_style_context();
const cssProvider = new Gtk.CssProvider();
cssProvider.load_from_data(
'list { min-width: 30em; }');
context.add_provider(cssProvider,
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);
context.add_class('frame');
this._list.add(new NewRuleRow());
this._actionGroup = new Gio.SimpleActionGroup();
this._list.insert_action_group('rules', this._actionGroup);
let action;
action = new Gio.SimpleAction({ name: 'add' });
action.connect('activate', this._onAddActivated.bind(this));
this._actionGroup.add_action(action);
action = new Gio.SimpleAction({
name: 'remove',
parameter_type: new GLib.VariantType('s'),
});
action.connect('activate', this._onRemoveActivated.bind(this));
this._actionGroup.add_action(action);
action = new Gio.SimpleAction({ name: 'update' });
action.connect('activate', () => {
this._settings.set_strv(SETTINGS_KEY,
this._getRuleRows().map(row => `${row.id}:${row.value}`));
});
this._actionGroup.add_action(action);
this._updateAction = action;
const Widget = GObject.registerClass(
class Widget extends Gtk.Grid {
_init(params) {
super._init(params);
this.set_orientation(Gtk.Orientation.VERTICAL);
this._settings = ExtensionUtils.getSettings();
this._changedId = this._settings.connect('changed',
this._sync.bind(this));
this._sync();
this._settings.connect('changed', this._refresh.bind(this));
this._changedPermitted = false;
this.connect('destroy', () => this._settings.run_dispose());
this._store = new Gtk.ListStore();
this._store.set_column_types([
Gio.AppInfo,
GObject.TYPE_STRING,
Gio.Icon,
GObject.TYPE_INT,
Gtk.Adjustment,
]);
this.show_all();
}
let scrolled = new Gtk.ScrolledWindow({ shadow_type: Gtk.ShadowType.IN });
scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
this.add(scrolled);
_onAddActivated() {
const dialog = new NewRuleDialog(this.get_toplevel());
dialog.connect('response', (dlg, id) => {
const appInfo = id === Gtk.ResponseType.OK
? dialog.get_widget().get_app_info() : null;
if (appInfo) {
this._settings.set_strv(SETTINGS_KEY, [
...this._settings.get_strv(SETTINGS_KEY),
`${appInfo.get_id()}:1`,
]);
}
dialog.destroy();
});
}
_onRemoveActivated(action, param) {
const removed = param.deepUnpack();
this._settings.set_strv(SETTINGS_KEY,
this._settings.get_strv(SETTINGS_KEY).filter(entry => {
const [id] = entry.split(':');
return id !== removed;
}));
}
_getRuleRows() {
return this._list.get_children().filter(row => !!row.id);
}
_sync() {
const oldRules = this._getRuleRows();
const newRules = this._settings.get_strv(SETTINGS_KEY).map(entry => {
const [id, value] = entry.split(':');
return { id, value };
});
this._settings.block_signal_handler(this._changedId);
this._updateAction.enabled = false;
newRules.forEach(({ id, value }, index) => {
const row = oldRules.find(r => r.id === id);
const appInfo = row
? null : Gio.DesktopAppInfo.new(id);
if (row)
row.set({ value });
else if (appInfo)
this._list.insert(new RuleRow(appInfo, value), index);
});
const removed = oldRules.filter(
({ id }) => !newRules.find(r => r.id === id));
removed.forEach(r => r.destroy());
this._settings.unblock_signal_handler(this._changedId);
this._updateAction.enabled = true;
}
_updateHeader(row, before) {
if (!before || row.get_header())
return;
row.set_header(new Gtk.Separator());
}
});
const RuleRow = GObject.registerClass({
Properties: {
'id': GObject.ParamSpec.string(
'id', 'id', 'id',
GObject.ParamFlags.READABLE,
''),
'value': GObject.ParamSpec.uint(
'value', 'value', 'value',
GObject.ParamFlags.READWRITE,
1, WORKSPACE_MAX, 1),
},
}, class RuleRow extends Gtk.ListBoxRow {
_init(appInfo, value) {
super._init({
activatable: false,
value,
});
this._appInfo = appInfo;
const box = new Gtk.Box({
spacing: 6,
margin_top: 6,
margin_bottom: 6,
margin_start: 6,
margin_end: 6,
});
const icon = new Gtk.Image({
gicon: appInfo.get_icon(),
pixel_size: 32,
});
icon.get_style_context().add_class('icon-dropshadow');
box.add(icon);
const label = new Gtk.Label({
label: appInfo.get_display_name(),
halign: Gtk.Align.START,
this._treeView = new Gtk.TreeView({
model: this._store,
hexpand: true,
max_width_chars: 20,
ellipsize: Pango.EllipsizeMode.END,
vexpand: true,
});
box.add(label);
this._treeView.get_selection().set_mode(Gtk.SelectionMode.SINGLE);
const spinButton = new Gtk.SpinButton({
adjustment: new Gtk.Adjustment({
lower: 1,
upper: WORKSPACE_MAX,
step_increment: 1,
}),
snap_to_ticks: true,
margin_end: 6,
let appColumn = new Gtk.TreeViewColumn({
expand: true,
sort_column_id: Columns.DISPLAY_NAME,
title: _('Application'),
});
this.bind_property('value',
spinButton, 'value',
GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL);
box.add(spinButton);
let iconRenderer = new Gtk.CellRendererPixbuf();
appColumn.pack_start(iconRenderer, false);
appColumn.add_attribute(iconRenderer, 'gicon', Columns.ICON);
let nameRenderer = new Gtk.CellRendererText();
appColumn.pack_start(nameRenderer, true);
appColumn.add_attribute(nameRenderer, 'text', Columns.DISPLAY_NAME);
this._treeView.append_column(appColumn);
const button = new Gtk.Button({
action_name: 'rules.remove',
action_target: new GLib.Variant('s', this.id),
image: new Gtk.Image({
icon_name: 'edit-delete-symbolic',
pixel_size: 16,
}),
let workspaceColumn = new Gtk.TreeViewColumn({
title: _('Workspace'),
sort_column_id: Columns.WORKSPACE,
});
box.add(button);
let workspaceRenderer = new Gtk.CellRendererSpin({ editable: true });
workspaceRenderer.connect('edited', this._workspaceEdited.bind(this));
workspaceColumn.pack_start(workspaceRenderer, true);
workspaceColumn.add_attribute(workspaceRenderer, 'adjustment', Columns.ADJUSTMENT);
workspaceColumn.add_attribute(workspaceRenderer, 'text', Columns.WORKSPACE);
this._treeView.append_column(workspaceColumn);
this.add(box);
scrolled.add(this._treeView);
this.connect('notify::value', () => {
const actionGroup = this.get_action_group('rules');
actionGroup.activate_action('update', null);
let toolbar = new Gtk.Toolbar({ icon_size: Gtk.IconSize.SMALL_TOOLBAR });
toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_INLINE_TOOLBAR);
this.add(toolbar);
let newButton = new Gtk.ToolButton({
icon_name: 'bookmark-new-symbolic',
label: _('Add Rule'),
is_important: true,
});
newButton.connect('clicked', this._createNew.bind(this));
toolbar.add(newButton);
this.show_all();
let delButton = new Gtk.ToolButton({ icon_name: 'edit-delete-symbolic' });
delButton.connect('clicked', this._deleteSelected.bind(this));
toolbar.add(delButton);
let selection = this._treeView.get_selection();
selection.connect('changed', () => {
delButton.sensitive = selection.count_selected_rows() > 0;
});
delButton.sensitive = selection.count_selected_rows() > 0;
this._changedPermitted = true;
this._refresh();
}
get id() {
return this._appInfo.get_id();
}
});
const NewRuleRow = GObject.registerClass(
class NewRuleRow extends Gtk.ListBoxRow {
_init() {
super._init({
action_name: 'rules.add',
});
this.get_accessible().set_name(_('Add Rule'));
this.add(new Gtk.Image({
icon_name: 'list-add-symbolic',
pixel_size: 16,
margin_top: 12,
margin_bottom: 12,
margin_start: 12,
margin_end: 12,
}));
this.show_all();
}
});
const NewRuleDialog = GObject.registerClass(
class NewRuleDialog extends Gtk.AppChooserDialog {
_init(parent) {
super._init({
transient_for: parent,
_createNew() {
let dialog = new Gtk.Dialog({
title: _('Create new matching rule'),
transient_for: this.get_toplevel(),
use_header_bar: true,
modal: true,
});
dialog.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL);
let addButton = dialog.add_button(_('Add'), Gtk.ResponseType.OK);
dialog.set_default_response(Gtk.ResponseType.OK);
this._settings = ExtensionUtils.getSettings();
this.get_widget().set({
show_all: true,
show_other: true, // hide more button
let grid = new Gtk.Grid({
column_spacing: 10,
row_spacing: 15,
margin: 10,
});
dialog._appChooser = new Gtk.AppChooserWidget({ show_all: true });
dialog._appChooser.connect('application-selected', (w, appInfo) => {
addButton.sensitive = appInfo && this._checkId(appInfo.get_id());
});
let appInfo = dialog._appChooser.get_app_info();
addButton.sensitive = appInfo && this._checkId(appInfo.get_id());
this.get_widget().connect('application-selected',
this._updateSensitivity.bind(this));
this._updateSensitivity();
grid.attach(dialog._appChooser, 0, 0, 2, 1);
grid.attach(new Gtk.Label({
label: _('Workspace'),
halign: Gtk.Align.END,
}), 0, 1, 1, 1);
let adjustment = new Gtk.Adjustment({
lower: 1,
upper: WORKSPACE_MAX,
step_increment: 1,
});
dialog._spin = new Gtk.SpinButton({
adjustment,
snap_to_ticks: true,
});
dialog._spin.set_value(1);
grid.attach(dialog._spin, 1, 1, 1, 1);
dialog.get_content_area().add(grid);
this.show();
dialog.connect('response', (dlg, id) => {
if (id !== Gtk.ResponseType.OK) {
dialog.destroy();
return;
}
appInfo = dialog._appChooser.get_app_info();
if (!appInfo)
return;
let index = Math.floor(dialog._spin.value);
if (isNaN(index) || index < 0)
index = 1;
this._changedPermitted = false;
this._appendItem(appInfo.get_id(), index);
this._changedPermitted = true;
this._appendRow(appInfo, index);
dialog.destroy();
});
dialog.show_all();
}
_updateSensitivity() {
const rules = this._settings.get_strv(SETTINGS_KEY);
const appInfo = this.get_widget().get_app_info();
this.set_response_sensitive(Gtk.ResponseType.OK,
appInfo && !rules.some(i => i.startsWith(appInfo.get_id())));
_deleteSelected() {
let [any, model_, iter] = this._treeView.get_selection().get_selected();
if (any) {
let appInfo = this._store.get_value(iter, Columns.APPINFO);
this._changedPermitted = false;
this._removeItem(appInfo.get_id());
this._changedPermitted = true;
this._store.remove(iter);
}
}
_workspaceEdited(renderer, pathString, text) {
let index = parseInt(text);
if (isNaN(index) || index < 0)
index = 1;
let path = Gtk.TreePath.new_from_string(pathString);
let [model_, iter] = this._store.get_iter(path);
let appInfo = this._store.get_value(iter, Columns.APPINFO);
this._changedPermitted = false;
this._changeItem(appInfo.get_id(), index);
this._store.set_value(iter, Columns.WORKSPACE, index);
this._changedPermitted = true;
}
_refresh() {
if (!this._changedPermitted)
// Ignore this notification, model is being modified outside
return;
this._store.clear();
let currentItems = this._settings.get_strv(SETTINGS_KEY);
let validItems = [];
for (let i = 0; i < currentItems.length; i++) {
let [id, index] = currentItems[i].split(':');
let appInfo = Gio.DesktopAppInfo.new(id);
if (!appInfo)
continue;
validItems.push(currentItems[i]);
this._appendRow(appInfo, parseInt(index));
}
if (validItems.length !== currentItems.length) // some items were filtered out
this._settings.set_strv(SETTINGS_KEY, validItems);
}
_appendRow(appInfo, workspace) {
let iter = this._store.append();
let icon = appInfo.get_icon();
let displayName = appInfo.get_display_name();
let adj = new Gtk.Adjustment({
lower: 1,
upper: WORKSPACE_MAX,
step_increment: 1,
value: workspace,
});
let { APPINFO, ICON, DISPLAY_NAME, WORKSPACE, ADJUSTMENT } = Columns;
this._store.set(iter,
[APPINFO, ICON, DISPLAY_NAME, WORKSPACE, ADJUSTMENT],
[appInfo, icon, displayName, workspace, adj]);
}
_checkId(id) {
let items = this._settings.get_strv(SETTINGS_KEY);
return !items.some(i => i.startsWith(`${id}:`));
}
_appendItem(id, workspace) {
let currentItems = this._settings.get_strv(SETTINGS_KEY);
currentItems.push(`${id}:${workspace}`);
this._settings.set_strv(SETTINGS_KEY, currentItems);
}
_removeItem(id) {
let currentItems = this._settings.get_strv(SETTINGS_KEY);
let index = currentItems.map(el => el.split(':')[0]).indexOf(id);
if (index < 0)
return;
currentItems.splice(index, 1);
this._settings.set_strv(SETTINGS_KEY, currentItems);
}
_changeItem(id, workspace) {
let currentItems = this._settings.get_strv(SETTINGS_KEY);
let index = currentItems.map(el => el.split(':')[0]).indexOf(id);
if (index < 0)
currentItems.push(`${id}:${workspace}`);
else
currentItems[index] = `${id}:${workspace}`;
this._settings.set_strv(SETTINGS_KEY, currentItems);
}
});
function init() {
ExtensionUtils.initTranslations();
}
function buildPrefsWidget() {
return new AutoMoveSettingsWidget();
let widget = new Widget({ margin: 12 });
widget.show_all();
return widget;
}

View File

@@ -1,6 +1,6 @@
/* exported init enable disable */
// Drive menu extension
const { Clutter, Gio, GObject, Shell, St } = imports.gi;
const { Gio, GObject, Shell, St } = imports.gi;
const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext;
@@ -14,15 +14,9 @@ const ShellMountOperation = imports.ui.shellMountOperation;
var MountMenuItem = GObject.registerClass(
class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
_init(mount) {
super._init({
style_class: 'drive-menu-item',
});
super._init();
this.label = new St.Label({
text: mount.get_name(),
x_expand: true,
y_align: Clutter.ActorAlign.CENTER,
});
this.label = new St.Label({ text: mount.get_name() });
this.add_child(this.label);
this.label_actor = this.label;
@@ -34,10 +28,7 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
icon_name: 'media-eject-symbolic',
style_class: 'popup-menu-icon',
});
let ejectButton = new St.Button({
child: ejectIcon,
style_class: 'button',
});
let ejectButton = new St.Button({ child: ejectIcon });
ejectButton.connect('clicked', this._eject.bind(this));
this.add(ejectButton);

View File

@@ -1,7 +1 @@
.drive-menu-item { spacing: 12px; }
.drive-menu-item .button {
border-radius: 99px;
padding: 3px;
min-height: auto;
}
/* This extensions requires no custom styling */

View File

@@ -3,7 +3,7 @@ js_sources = []
metadata_name = 'metadata.json'
foreach e : enabled_extensions
foreach e : all_extensions
uuid = e + uuid_suffix
metadata_conf = configuration_data()
@@ -19,11 +19,27 @@ foreach e : enabled_extensions
subdir(e)
install_data (extension_sources + extension_data,
install_dir: join_paths(extensiondir, uuid)
)
js_sources += extension_sources
if (enabled_extensions.contains(e))
install_data (extension_sources + extension_data,
install_dir: join_paths(extensiondir, uuid)
)
endif
endforeach
install_data (extension_schemas,
install_dir: schemadir
)
foreach js_source : js_sources
if (js68.found())
path_array = '@0@'.format(js_source).split('/')
name = join_paths(path_array[-2], path_array[-1])
test('Checking syntax of ' + name, js68,
args: ['-s', '-c', js_source],
workdir: meson.current_source_dir()
)
endif
endforeach

View File

@@ -20,9 +20,7 @@ const PLACE_ICON_SIZE = 16;
var PlaceMenuItem = GObject.registerClass(
class PlaceMenuItem extends PopupMenu.PopupBaseMenuItem {
_init(info) {
super._init({
style_class: 'place-menu-item',
});
super._init();
this._info = info;
this._icon = new St.Icon({
@@ -31,11 +29,7 @@ class PlaceMenuItem extends PopupMenu.PopupBaseMenuItem {
});
this.add_child(this._icon);
this._label = new St.Label({
text: info.name,
x_expand: true,
y_align: Clutter.ActorAlign.CENTER,
});
this._label = new St.Label({ text: info.name, x_expand: true });
this.add_child(this._label);
if (info.isRemovable()) {
@@ -43,10 +37,7 @@ class PlaceMenuItem extends PopupMenu.PopupBaseMenuItem {
icon_name: 'media-eject-symbolic',
style_class: 'popup-menu-icon',
});
this._ejectButton = new St.Button({
child: this._ejectIcon,
style_class: 'button',
});
this._ejectButton = new St.Button({ child: this._ejectIcon });
this._ejectButton.connect('clicked', info.eject.bind(info));
this.add_child(this._ejectButton);
}

View File

@@ -1,8 +1 @@
.place-menu-item .button {
border-radius: 99px;
padding: 3px;
min-height: auto;
}
.place-menu-item .button:ltr { margin-left: 6px; }
.place-menu-item .button:rtl { margin-right: 6px; }
/* none used*/

View File

@@ -2,14 +2,11 @@
// Load shell theme from ~/.local/share/themes/name/gnome-shell
/* exported init */
const { Gio } = imports.gi;
const { Gio, GLib } = imports.gi;
const ExtensionUtils = imports.misc.extensionUtils;
const Main = imports.ui.main;
const Me = ExtensionUtils.getCurrentExtension();
const Util = Me.imports.util;
const SETTINGS_KEY = 'name';
class ThemeManager {
@@ -37,11 +34,13 @@ class ThemeManager {
let themeName = this._settings.get_string(SETTINGS_KEY);
if (themeName) {
const stylesheetPaths = Util.getThemeDirs()
.map(dir => `${dir}/${themeName}/gnome-shell/gnome-shell.css`);
stylesheetPaths.push(...Util.getModeThemeDirs()
.map(dir => `${dir}/${themeName}.css`));
let stylesheetPaths = [
[GLib.get_home_dir(), '.themes'],
[GLib.get_user_data_dir(), 'themes'],
...GLib.get_system_data_dirs().map(dir => [dir, 'themes']),
].map(themeDir => GLib.build_filenamev([
...themeDir, themeName, 'gnome-shell', 'gnome-shell.css',
]));
stylesheet = stylesheetPaths.find(path => {
let file = Gio.file_new_for_path(path);

View File

@@ -4,5 +4,4 @@ extension_data += configure_file(
configuration: metadata_conf
)
extension_sources += files('prefs.js', 'util.js')
extension_schemas += files(metadata_conf.get('gschemaname') + '.gschema.xml')

View File

@@ -1,189 +0,0 @@
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
/* exported init buildPrefsWidget */
// we use async/await here to not block the mainloop, not to parallelize
/* eslint-disable no-await-in-loop */
const { Gio, GLib, GObject, Gtk } = imports.gi;
const ExtensionUtils = imports.misc.extensionUtils;
const Me = ExtensionUtils.getCurrentExtension();
const Util = Me.imports.util;
Gio._promisify(Gio._LocalFilePrototype,
'enumerate_children_async', 'enumerate_children_finish');
Gio._promisify(Gio._LocalFilePrototype,
'query_info_async', 'query_info_finish');
Gio._promisify(Gio.FileEnumerator.prototype,
'next_files_async', 'next_files_finish');
const UserThemePrefsWidget = GObject.registerClass(
class UserThemePrefsWidget extends Gtk.ScrolledWindow {
_init() {
super._init({
hscrollbar_policy: Gtk.PolicyType.NEVER,
});
const box = new Gtk.Box();
this.add(box);
this._list = new Gtk.ListBox({
selection_mode: Gtk.SelectionMode.NONE,
halign: Gtk.Align.CENTER,
valign: Gtk.Align.START,
hexpand: true,
margin: 60,
});
this._list.get_style_context().add_class('frame');
this._list.set_header_func(this._updateHeader.bind(this));
box.add(this._list);
this._actionGroup = new Gio.SimpleActionGroup();
this._list.insert_action_group('theme', this._actionGroup);
this._settings = ExtensionUtils.getSettings();
this._actionGroup.add_action(
this._settings.create_action('name'));
this.connect('destroy', () => this._settings.run_dispose());
this._rows = new Map();
this._addTheme(''); // default
this._collectThemes();
}
async _collectThemes() {
for (const dirName of Util.getThemeDirs()) {
const dir = Gio.File.new_for_path(dirName);
for (const name of await this._enumerateDir(dir)) {
if (this._rows.has(name))
continue;
const file = dir.resolve_relative_path(
`${name}/gnome-shell/gnome-shell.css`);
try {
await file.query_info_async(
Gio.FILE_ATTRIBUTE_STANDARD_NAME,
Gio.FileQueryInfoFlags.NONE,
GLib.PRIORITY_DEFAULT, null);
this._addTheme(name);
} catch (e) {
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND))
logError(e);
}
}
}
for (const dirName of Util.getModeThemeDirs()) {
const dir = Gio.File.new_for_path(dirName);
for (const filename of await this._enumerateDir(dir)) {
if (!filename.endsWith('.css'))
continue;
const name = filename.slice(0, -4);
if (!this._rows.has(name))
this._addTheme(name);
}
}
}
_addTheme(name) {
const row = new ThemeRow(name);
this._rows.set(name, row);
this._list.add(row);
row.show_all();
}
async _enumerateDir(dir) {
const fileInfos = [];
let fileEnum;
try {
fileEnum = await dir.enumerate_children_async(
Gio.FILE_ATTRIBUTE_STANDARD_NAME,
Gio.FileQueryInfoFlags.NONE,
GLib.PRIORITY_DEFAULT, null);
} catch (e) {
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND))
logError(e);
return [];
}
let infos;
do {
infos = await fileEnum.next_files_async(100,
GLib.PRIORITY_DEFAULT, null);
fileInfos.push(...infos);
} while (infos.length > 0);
return fileInfos.map(info => info.get_name());
}
_updateHeader(row, before) {
if (!before || row.get_header())
return;
row.set_header(new Gtk.Separator());
}
});
const ThemeRow = GObject.registerClass(
class ThemeRow extends Gtk.ListBoxRow {
_init(name) {
this._name = new GLib.Variant('s', name);
super._init({
action_name: 'theme.name',
action_target: this._name,
});
const box = new Gtk.Box({
spacing: 12,
margin: 12,
});
this.add(box);
box.add(new Gtk.Label({
label: name || 'Default',
hexpand: true,
xalign: 0,
max_width_chars: 25,
width_chars: 25,
}));
this._checkmark = new Gtk.Image({
icon_name: 'emblem-ok-symbolic',
pixel_size: 16,
});
box.add(this._checkmark);
box.show_all();
const id = this.connect('parent-set', () => {
this.disconnect(id);
const actionGroup = this.get_action_group('theme');
actionGroup.connect('action-state-changed::name',
this._syncCheckmark.bind(this));
this._syncCheckmark();
});
}
_syncCheckmark() {
const actionGroup = this.get_action_group('theme');
const state = actionGroup.get_action_state('name');
this._checkmark.opacity = this._name.equal(state);
}
});
function init() {
}
function buildPrefsWidget() {
let widget = new UserThemePrefsWidget();
widget.show_all();
return widget;
}

View File

@@ -1,17 +0,0 @@
/* exported getThemeDirs getModeThemeDirs */
const { GLib } = imports.gi;
const fn = (...args) => GLib.build_filenamev(args);
function getThemeDirs() {
return [
fn(GLib.get_home_dir(), '.themes'),
fn(GLib.get_user_data_dir(), 'themes'),
...GLib.get_system_data_dirs().map(dir => fn(dir, 'themes')),
];
}
function getModeThemeDirs() {
return GLib.get_system_data_dirs()
.map(dir => fn(dir, 'gnome-shell', 'theme'));
}

View File

@@ -220,12 +220,13 @@ const BaseButton = GObject.registerClass({
super._init({
style_class: 'window-button',
x_fill: true,
y_fill: true,
can_focus: true,
x_expand: true,
button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE,
});
this.connect('notify::allocation',
this.connect('allocation-changed',
this._updateIconGeometry.bind(this));
this.connect('clicked', this._onClicked.bind(this));
this.connect('destroy', this._onDestroy.bind(this));
@@ -490,6 +491,8 @@ class AppButton extends BaseButton {
this._singleWindowTitle = new St.Bin({
x_expand: true,
y_fill: true,
x_align: St.Align.START,
});
stack.add_actor(this._singleWindowTitle);
@@ -937,7 +940,10 @@ class WindowList extends St.Widget {
let button = new AppButton(app, this._perMonitor, this._monitor.index);
this._settings.bind('display-all-workspaces',
button, 'ignore-workspace', Gio.SettingsBindFlags.GET);
this._windowList.add_child(button);
this._windowList.layout_manager.pack(button,
true, true, true,
Clutter.BoxAlignment.START,
Clutter.BoxAlignment.START);
}
_removeApp(app) {
@@ -964,7 +970,10 @@ class WindowList extends St.Widget {
let button = new WindowButton(win, this._perMonitor, this._monitor.index);
this._settings.bind('display-all-workspaces',
button, 'ignore-workspace', Gio.SettingsBindFlags.GET);
this._windowList.add_child(button);
this._windowList.layout_manager.pack(button,
true, true, true,
Clutter.BoxAlignment.START,
Clutter.BoxAlignment.START);
}
_onWindowRemoved(ws, win) {

View File

@@ -14,17 +14,13 @@ function init() {
}
const WindowListPrefsWidget = GObject.registerClass(
class WindowListPrefsWidget extends Gtk.Box {
_init() {
super._init({
orientation: Gtk.Orientation.VERTICAL,
spacing: 6,
margin_top: 36,
margin_bottom: 36,
margin_start: 36,
margin_end: 36,
halign: Gtk.Align.CENTER,
});
class WindowListPrefsWidget extends Gtk.Grid {
_init(params) {
super._init(params);
this.margin = 24;
this.row_spacing = 6;
this.orientation = Gtk.Orientation.VERTICAL;
let groupingLabel = '<b>%s</b>'.format(_('Window Grouping'));
this.add(new Gtk.Label({
@@ -32,22 +28,15 @@ class WindowListPrefsWidget extends Gtk.Box {
halign: Gtk.Align.START,
}));
const box = new Gtk.Box({
let align = new Gtk.Alignment({ left_padding: 12 });
this.add(align);
let grid = new Gtk.Grid({
orientation: Gtk.Orientation.VERTICAL,
spacing: 12,
margin_bottom: 12,
row_spacing: 6,
column_spacing: 6,
});
this.add(box);
const context = box.get_style_context();
const cssProvider = new Gtk.CssProvider();
cssProvider.load_from_data(
'box { padding: 12px; }');
context.add_provider(cssProvider,
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);
context.add_class('frame');
context.add_class('view');
align.add(grid);
this._settings = ExtensionUtils.getSettings();
let currentMode = this._settings.get_string('grouping-mode');
@@ -61,7 +50,6 @@ class WindowListPrefsWidget extends Gtk.Box {
};
let radio = null;
let currentRadio = null;
for (let i = 0; i < modes.length; i++) {
let mode = modes[i];
let label = modeLabels[mode];
@@ -71,15 +59,11 @@ class WindowListPrefsWidget extends Gtk.Box {
}
radio = new Gtk.RadioButton({
active: !i,
active: currentMode === mode,
label,
group: radio,
margin_end: 12,
});
box.add(radio);
if (currentMode === mode)
currentRadio = radio;
grid.add(radio);
radio.connect('toggled', button => {
if (button.active)
@@ -87,25 +71,25 @@ class WindowListPrefsWidget extends Gtk.Box {
});
}
if (currentRadio)
currentRadio.active = true;
let check = new Gtk.CheckButton({
label: _('Show on all monitors'),
margin_top: 6,
});
this._settings.bind('show-on-all-monitors', check, 'active', Gio.SettingsBindFlags.DEFAULT);
this.add(check);
check = new Gtk.CheckButton({
label: _('Show windows from all workspaces'),
margin_top: 6,
});
this._settings.bind('display-all-workspaces', check, 'active', Gio.SettingsBindFlags.DEFAULT);
this.add(check);
this.show_all();
}
});
function buildPrefsWidget() {
return new WindowListPrefsWidget();
let widget = new WindowListPrefsWidget();
widget.show_all();
return widget;
}

View File

@@ -286,6 +286,8 @@ class WindowPickerToggle extends St.Button {
style_class: 'window-picker-toggle',
child: iconBin,
visible: !Main.sessionMode.hasOverview,
x_fill: true,
y_fill: true,
toggle_mode: true,
});

View File

@@ -106,6 +106,8 @@ class WorkspaceThumbnail extends St.Button {
layout_manager: new Clutter.BinLayout(),
clip_to_allocation: true,
}),
x_fill: true,
y_fill: true,
});
this.connect('destroy', this._onDestroy.bind(this));

View File

@@ -112,6 +112,8 @@ class WorkspaceThumbnail extends St.Button {
layout_manager: new Clutter.BinLayout(),
clip_to_allocation: true,
}),
x_fill: true,
y_fill: true,
});
this.connect('destroy', this._onDestroy.bind(this));

View File

@@ -1,7 +1,7 @@
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
/* exported init buildPrefsWidget */
const { Gdk, Gio, GLib, GObject, Gtk, Pango } = imports.gi;
const { Gio, GObject, Gtk } = imports.gi;
const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext;
@@ -12,221 +12,189 @@ const ExtensionUtils = imports.misc.extensionUtils;
const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences';
const WORKSPACE_KEY = 'workspace-names';
const WorkspaceNameModel = GObject.registerClass(
class WorkspaceNameModel extends Gtk.ListStore {
_init(params) {
super._init(params);
this.set_column_types([GObject.TYPE_STRING]);
this.Columns = {
LABEL: 0,
};
this._settings = new Gio.Settings({ schema_id: WORKSPACE_SCHEMA });
this._reloadFromSettings();
// overriding class closure doesn't work, because GtkTreeModel
// plays tricks with marshallers and class closures
this.connect('row-changed', this._onRowChanged.bind(this));
this.connect('row-inserted', this._onRowInserted.bind(this));
this.connect('row-deleted', this._onRowDeleted.bind(this));
}
_reloadFromSettings() {
if (this._preventChanges)
return;
this._preventChanges = true;
let newNames = this._settings.get_strv(WORKSPACE_KEY);
let i = 0;
let [ok, iter] = this.get_iter_first();
while (ok && i < newNames.length) {
this.set(iter, [this.Columns.LABEL], [newNames[i]]);
ok = this.iter_next(iter);
i++;
}
while (ok)
ok = this.remove(iter);
for (; i < newNames.length; i++) {
iter = this.append();
this.set(iter, [this.Columns.LABEL], [newNames[i]]);
}
this._preventChanges = false;
}
_onRowChanged(self, path, iter) {
if (this._preventChanges)
return;
this._preventChanges = true;
let index = path.get_indices()[0];
let names = this._settings.get_strv(WORKSPACE_KEY);
if (index >= names.length) {
// fill with blanks
for (let i = names.length; i <= index; i++)
names[i] = '';
}
names[index] = this.get_value(iter, this.Columns.LABEL);
this._settings.set_strv(WORKSPACE_KEY, names);
this._preventChanges = false;
}
_onRowInserted(self, path, iter) {
if (this._preventChanges)
return;
this._preventChanges = true;
let index = path.get_indices()[0];
let names = this._settings.get_strv(WORKSPACE_KEY);
let label = this.get_value(iter, this.Columns.LABEL) || '';
names.splice(index, 0, label);
this._settings.set_strv(WORKSPACE_KEY, names);
this._preventChanges = false;
}
_onRowDeleted(self, path) {
if (this._preventChanges)
return;
this._preventChanges = true;
let index = path.get_indices()[0];
let names = this._settings.get_strv(WORKSPACE_KEY);
if (index >= names.length)
return;
names.splice(index, 1);
// compact the array
for (let i = names.length - 1; i >= 0 && !names[i]; i++)
names.pop();
this._settings.set_strv(WORKSPACE_KEY, names);
this._preventChanges = false;
}
});
const WorkspaceSettingsWidget = GObject.registerClass(
class WorkspaceSettingsWidget extends Gtk.ScrolledWindow {
_init() {
super._init({
hscrollbar_policy: Gtk.PolicyType.NEVER,
});
class WorkspaceSettingsWidget extends Gtk.Grid {
_init(params) {
super._init(params);
this.margin = 12;
this.orientation = Gtk.Orientation.VERTICAL;
const box = new Gtk.Box({
orientation: Gtk.Orientation.VERTICAL,
halign: Gtk.Align.CENTER,
spacing: 12,
margin_top: 36,
margin_bottom: 36,
margin_start: 36,
margin_end: 36,
});
this.add(box);
box.add(new Gtk.Label({
this.add(new Gtk.Label({
label: '<b>%s</b>'.format(_('Workspace Names')),
use_markup: true,
margin_bottom: 6,
hexpand: true,
halign: Gtk.Align.START,
}));
this._list = new Gtk.ListBox({
selection_mode: Gtk.SelectionMode.NONE,
valign: Gtk.Align.START,
});
this._list.set_header_func(this._updateHeader.bind(this));
this._list.connect('row-activated', (l, row) => row.edit());
box.add(this._list);
let scrolled = new Gtk.ScrolledWindow({ shadow_type: Gtk.ShadowType.IN });
scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
this.add(scrolled);
const context = this._list.get_style_context();
const cssProvider = new Gtk.CssProvider();
cssProvider.load_from_data(
'list { min-width: 25em; }');
context.add_provider(cssProvider,
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);
context.add_class('frame');
this._list.add(new NewWorkspaceRow());
this._actionGroup = new Gio.SimpleActionGroup();
this._list.insert_action_group('workspaces', this._actionGroup);
let action;
action = new Gio.SimpleAction({ name: 'add' });
action.connect('activate', () => {
const names = this._settings.get_strv(WORKSPACE_KEY);
this._settings.set_strv(WORKSPACE_KEY, [
...names,
_('Workspace %d').format(names.length + 1),
]);
});
this._actionGroup.add_action(action);
action = new Gio.SimpleAction({
name: 'remove',
parameter_type: new GLib.VariantType('s'),
});
action.connect('activate', (a, param) => {
const removed = param.deepUnpack();
this._settings.set_strv(WORKSPACE_KEY,
this._settings.get_strv(WORKSPACE_KEY)
.filter(name => name !== removed));
});
this._actionGroup.add_action(action);
action = new Gio.SimpleAction({ name: 'update' });
action.connect('activate', () => {
const names = this._getWorkspaceRows().map(row => row.name);
this._settings.set_strv(WORKSPACE_KEY, names);
});
this._actionGroup.add_action(action);
this._settings = new Gio.Settings({
schema_id: WORKSPACE_SCHEMA,
});
this._settings.connect(`changed::${WORKSPACE_KEY}`,
this._sync.bind(this));
this._sync();
this.show_all();
}
_getWorkspaceRows() {
return this._list.get_children().filter(row => row.name);
}
_sync() {
const rows = this._getWorkspaceRows();
const oldNames = rows.map(row => row.name);
const newNames = this._settings.get_strv(WORKSPACE_KEY);
const removed = oldNames.filter(n => !newNames.includes(n));
const added = newNames.filter(n => !oldNames.includes(n));
removed.forEach(n => rows.find(r => r.name === n).destroy());
added.forEach(n => {
this._list.insert(new WorkspaceRow(n), newNames.indexOf(n));
});
}
_updateHeader(row, before) {
if (!before || row.get_header())
return;
row.set_header(new Gtk.Separator());
}
});
const WorkspaceRow = GObject.registerClass(
class WorkspaceRow extends Gtk.ListBoxRow {
_init(name) {
super._init({ name });
const box = new Gtk.Box({
spacing: 12,
margin_top: 6,
margin_bottom: 6,
margin_start: 6,
margin_end: 6,
});
const label = new Gtk.Label({
this._store = new WorkspaceNameModel();
this._treeView = new Gtk.TreeView({
model: this._store,
headers_visible: false,
reorderable: true,
hexpand: true,
xalign: 0,
max_width_chars: 25,
ellipsize: Pango.EllipsizeMode.END,
});
this.bind_property('name', label, 'label',
GObject.BindingFlags.SYNC_CREATE);
box.add(label);
const image = new Gtk.Image({
icon_name: 'edit-delete-symbolic',
pixel_size: 16,
});
const button = new Gtk.Button({
action_name: 'workspaces.remove',
action_target: new GLib.Variant('s', name),
image,
});
box.add(button);
this._entry = new Gtk.Entry({
max_width_chars: 25,
vexpand: true,
});
this._stack = new Gtk.Stack();
this._stack.add_named(box, 'display');
this._stack.add_named(this._entry, 'edit');
this.add(this._stack);
let column = new Gtk.TreeViewColumn({ title: _('Name') });
let renderer = new Gtk.CellRendererText({ editable: true });
renderer.connect('edited', this._cellEdited.bind(this));
column.pack_start(renderer, true);
column.add_attribute(renderer, 'text', this._store.Columns.LABEL);
this._treeView.append_column(column);
this._entry.connect('activate', () => {
this.name = this._entry.text;
this._stopEdit();
scrolled.add(this._treeView);
let toolbar = new Gtk.Toolbar({ icon_size: Gtk.IconSize.SMALL_TOOLBAR });
toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_INLINE_TOOLBAR);
let newButton = new Gtk.ToolButton({ icon_name: 'list-add-symbolic' });
newButton.connect('clicked', this._newClicked.bind(this));
toolbar.add(newButton);
let delButton = new Gtk.ToolButton({ icon_name: 'list-remove-symbolic' });
delButton.connect('clicked', this._delClicked.bind(this));
toolbar.add(delButton);
let selection = this._treeView.get_selection();
selection.connect('changed', () => {
delButton.sensitive = selection.count_selected_rows() > 0;
});
this._entry.connect('notify::has-focus', () => {
if (this._entry.has_focus)
return;
this._stopEdit();
});
this._entry.connect('key-press-event',
this._onEntryKeyPress.bind(this));
delButton.sensitive = selection.count_selected_rows() > 0;
this.connect('notify::name', () => {
button.action_target = new GLib.Variant('s', this.name);
const actionGroup = this.get_action_group('workspaces');
actionGroup.activate_action('update', null);
});
this.show_all();
this.add(toolbar);
}
edit() {
this._entry.text = this.name;
this._entry.grab_focus();
this._stack.visible_child_name = 'edit';
_cellEdited(renderer, path, newText) {
let [ok, iter] = this._store.get_iter_from_string(path);
if (ok)
this._store.set(iter, [this._store.Columns.LABEL], [newText]);
}
_stopEdit() {
this.grab_focus();
this._stack.visible_child_name = 'display';
_newClicked() {
let iter = this._store.append();
let index = this._store.get_path(iter).get_indices()[0];
let label = _('Workspace %d').format(index + 1);
this._store.set(iter, [this._store.Columns.LABEL], [label]);
}
_onEntryKeyPress(entry, event) {
const [, keyval] = event.get_keyval();
if (keyval !== Gdk.KEY_Escape)
return Gdk.EVENT_PROPAGATE;
this._stopEdit();
return Gdk.EVENT_STOP;
}
});
_delClicked() {
let [any, model_, iter] = this._treeView.get_selection().get_selected();
const NewWorkspaceRow = GObject.registerClass(
class NewWorkspaceRow extends Gtk.ListBoxRow {
_init() {
super._init({
action_name: 'workspaces.add',
});
this.get_accessible().set_name(_('Add Workspace'));
this.add(new Gtk.Image({
icon_name: 'list-add-symbolic',
pixel_size: 16,
margin_top: 12,
margin_bottom: 12,
margin_start: 12,
margin_end: 12,
}));
this.show_all();
if (any)
this._store.remove(iter);
}
});
@@ -235,5 +203,8 @@ function init() {
}
function buildPrefsWidget() {
return new WorkspaceSettingsWidget();
let widget = new WorkspaceSettingsWidget();
widget.show_all();
return widget;
}

View File

@@ -1,5 +1,5 @@
project('gnome-shell-extensions',
version: '3.37.2',
version: '3.36.2',
meson_version: '>= 0.44.0',
license: 'GPL2+'
)
@@ -20,6 +20,8 @@ schemadir = join_paths(datadir, 'glib-2.0', 'schemas')
sessiondir = join_paths(datadir, 'gnome-session', 'sessions')
xsessiondir = join_paths(datadir, 'xsessions')
js68 = find_program('js68', required: false)
ver_arr = meson.project_version().split('.')
if ver_arr[1].to_int().is_even()
shell_version = '@0@.@1@'.format(ver_arr[0], ver_arr[1])

View File

@@ -10,6 +10,7 @@ extensions/native-window-placement/org.gnome.shell.extensions.native-window-plac
extensions/places-menu/extension.js
extensions/places-menu/placeDisplay.js
extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml
extensions/user-theme/extension.js
extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml
extensions/window-list/extension.js
extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml

117
po/es.po
View File

@@ -4,15 +4,15 @@
# Jorge González <jorgegonz@svn.gnome.org>, 2011.
# Nicolás Satragno <nsatragno@gmail.com>, 2011.
#
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2011-2020.
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2011-2019.
#
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: 2020-05-03 17:53+0000\n"
"PO-Revision-Date: 2020-05-04 14:06+0200\n"
"POT-Creation-Date: 2019-08-09 22:24+0000\n"
"PO-Revision-Date: 2019-08-20 12:08+0200\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: Spanish - Spain <gnome-es-list@gnome.org>\n"
"Language: es_ES\n"
@@ -20,7 +20,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Gtranslator 3.36.0\n"
"X-Generator: Gtranslator 3.32.1\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -34,7 +34,7 @@ msgstr "Esta sesión inicia GNOME clásico"
msgid "Favorites"
msgstr "Favoritos"
#: extensions/apps-menu/extension.js:369
#: extensions/apps-menu/extension.js:368
msgid "Applications"
msgstr "Aplicaciones"
@@ -50,27 +50,39 @@ msgstr ""
"Una lista de cadenas, conteniendo cada una un ID de aplicación (nombre de "
"archivo de escritorio), seguido de dos puntos y el número del área de trabajo"
#: extensions/auto-move-windows/prefs.js:35
#| msgid "Workspace Names"
msgid "Workspace Rules"
msgstr "Reglas de las áreas de trabajo"
#: extensions/auto-move-windows/prefs.js:60
msgid "Application"
msgstr "Aplicación"
#: extensions/auto-move-windows/prefs.js:243
#: extensions/auto-move-windows/prefs.js:71
#: extensions/auto-move-windows/prefs.js:134
msgid "Workspace"
msgstr "Área de trabajo"
#: extensions/auto-move-windows/prefs.js:89
msgid "Add Rule"
msgstr "Añadir regla"
#: extensions/auto-move-windows/prefs.js:111
msgid "Create new matching rule"
msgstr "Crear regla de coincidencia nueva"
#: extensions/auto-move-windows/prefs.js:117
msgid "Add"
msgstr "Añadir"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
#: extensions/places-menu/placeDisplay.js:233
#: extensions/drive-menu/extension.js:102
#: extensions/places-menu/placeDisplay.js:232
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Falló al expulsar el dispositivo «%s»:"
#: extensions/drive-menu/extension.js:128
#: extensions/drive-menu/extension.js:118
msgid "Removable devices"
msgstr "Dispositivos extraíbles"
#: extensions/drive-menu/extension.js:155
#: extensions/drive-menu/extension.js:145
msgid "Open Files"
msgstr "Abrir archivos"
@@ -103,8 +115,8 @@ msgstr ""
"los sitúa por debajo. Cambiar esta configuración requiere reiniciar la shell "
"para que tenga efecto."
#: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:93
#: extensions/places-menu/extension.js:80
#: extensions/places-menu/extension.js:84
msgid "Places"
msgstr "Lugares"
@@ -123,11 +135,11 @@ msgstr "Falló al montar el volumen para «%s»"
msgid "Computer"
msgstr "Equipo"
#: extensions/places-menu/placeDisplay.js:359
#: extensions/places-menu/placeDisplay.js:358
msgid "Home"
msgstr "Carpeta personal"
#: extensions/places-menu/placeDisplay.js:404
#: extensions/places-menu/placeDisplay.js:403
msgid "Browse Network"
msgstr "Examinar la red"
@@ -147,47 +159,47 @@ msgstr "Nombre del tema"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "El nombre del tema, que se carga desde ~/.themes/nombre/gnome-shell"
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:99
msgid "Close"
msgstr "Cerrar"
#: extensions/window-list/extension.js:118
#: extensions/window-list/extension.js:119
msgid "Unminimize"
msgstr "Desminimizar"
#: extensions/window-list/extension.js:118
#: extensions/window-list/extension.js:119
msgid "Minimize"
msgstr "Minimizar"
#: extensions/window-list/extension.js:125
#: extensions/window-list/extension.js:126
msgid "Unmaximize"
msgstr "Desmaximizar"
#: extensions/window-list/extension.js:125
#: extensions/window-list/extension.js:126
msgid "Maximize"
msgstr "Maximizar"
#: extensions/window-list/extension.js:429
#: extensions/window-list/extension.js:431
msgid "Minimize all"
msgstr "Minimizar todo"
#: extensions/window-list/extension.js:435
#: extensions/window-list/extension.js:437
msgid "Unminimize all"
msgstr "Desminimizar todo"
#: extensions/window-list/extension.js:441
#: extensions/window-list/extension.js:443
msgid "Maximize all"
msgstr "Maximizar todo"
#: extensions/window-list/extension.js:449
#: extensions/window-list/extension.js:451
msgid "Unmaximize all"
msgstr "Desmaximizar todo"
#: extensions/window-list/extension.js:457
#: extensions/window-list/extension.js:459
msgid "Close all"
msgstr "Cerrar todo"
#: extensions/window-list/extension.js:737
#: extensions/window-list/extension.js:741
msgid "Window List"
msgstr "Lista de ventanas"
@@ -204,11 +216,15 @@ msgstr ""
"ventanas. Los valores posibles son «never», «auto» y «always»."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:100
#: extensions/window-list/prefs.js:82
#| msgid "Show only windows in the current workspace"
msgid "Show windows from all workspaces"
msgstr "Mostrar ventanas de todas las áreas de trabajo"
#: 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."
msgid "Whether to show windows from all workspaces or only the current one."
msgstr ""
"Indica si se deben mostrar ventanas de todas las áreas de trabajo o sólo de "
@@ -226,59 +242,44 @@ msgstr ""
"Indica si se debe mostrar la lista de ventanas en todas las pantallas "
"conectadas o sólo en la primaria."
#: extensions/window-list/prefs.js:29
#: extensions/window-list/prefs.js:25
msgid "Window Grouping"
msgstr "Agrupación de ventanas"
#: extensions/window-list/prefs.js:58
#: extensions/window-list/prefs.js:47
msgid "Never group windows"
msgstr "Nunca agrupar las ventanas"
#: extensions/window-list/prefs.js:59
#: extensions/window-list/prefs.js:48
msgid "Group windows when space is limited"
msgstr "Agrupar las ventanas cuando el espacio esté limitado"
#: extensions/window-list/prefs.js:60
#: extensions/window-list/prefs.js:49
msgid "Always group windows"
msgstr "Siempre agrupar las ventanas"
#: extensions/window-list/prefs.js:94
#: extensions/window-list/prefs.js:75
msgid "Show on all monitors"
msgstr "Mostrar en todas las pantallas"
#: extensions/window-list/workspaceIndicator.js:209
#: extensions/workspace-indicator/extension.js:215
#: extensions/window-list/workspaceIndicator.js:211
#: extensions/workspace-indicator/extension.js:216
msgid "Workspace Indicator"
msgstr "Indicador de área de trabajo"
#: extensions/workspace-indicator/prefs.js:34
#: extensions/workspace-indicator/prefs.js:131
msgid "Workspace Names"
msgstr "Nombres de los áreas de trabajo"
#: extensions/workspace-indicator/prefs.js:67
#: extensions/workspace-indicator/prefs.js:151
msgid "Name"
msgstr "Nombre"
#: extensions/workspace-indicator/prefs.js:191
#, javascript-format
msgid "Workspace %d"
msgstr "Área de trabajo %d"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "Añadir área de trabajo"
#~ msgid "Application"
#~ msgstr "Aplicación"
#~ msgid "Workspace"
#~ msgstr "Área de trabajo"
#~ msgid "Create new matching rule"
#~ msgstr "Crear regla de coincidencia nueva"
#~ msgid "Add"
#~ msgstr "Añadir"
#~ msgid "Name"
#~ msgstr "Nombre"
#~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Acoplar un diálogo modal a la ventana padre"

113
po/fa.po
View File

@@ -1,16 +1,15 @@
# Persian translation for gnome-shell-extensions.
# Copyright (C) 2011 Iranian Free Software Users Group (IFSUG.org) translation team.
# This file is distributed under the same license as the gnome-shell-extensions package.
# Arash Mousavi <mousavi.arash@gmail.com>, 2011-2017.
# Danial Behzadi <dani.behzi@ubuntu.com>, 2018-2020.
# Arash Mousavi <mousavi.arash@gmail.com>, 2011, 2013, 2014, 2015, 2016, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions gnome-3-0\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2020-05-03 17:53+0000\n"
"PO-Revision-Date: 2020-05-12 14:25+0000\n"
"POT-Creation-Date: 2019-08-09 22:24+0000\n"
"PO-Revision-Date: 2019-08-14 11:48+0430\n"
"Last-Translator: Danial Behzadi <dani.behzi@ubuntu.com>\n"
"Language-Team: Persian <>\n"
"Language: fa\n"
@@ -18,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-SourceCharset: utf-8\n"
"X-Generator: Poedit 2.3\n"
"X-Generator: Poedit 2.2.1\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
@@ -31,9 +30,9 @@ msgstr "این نشست شما را به گنوم کلاسیک وارد می‌
#: extensions/apps-menu/extension.js:113
msgid "Favorites"
msgstr "برگزیدهها"
msgstr "علاقه‌مندیها"
#: extensions/apps-menu/extension.js:369
#: extensions/apps-menu/extension.js:368
msgid "Applications"
msgstr "برنامه‌ها"
@@ -49,26 +48,39 @@ msgstr ""
"فهرستی از رشته‌ها، هرکدام حاوی شناسه‌ی یک برنامه (نام پرونده رومیزی)، در ادامه‌ی یک "
"ویرگول و شماره‌ی فضای کاری"
#: extensions/auto-move-windows/prefs.js:35
msgid "Workspace Rules"
msgstr "قواعد فضای کاری"
#: extensions/auto-move-windows/prefs.js:60
msgid "Application"
msgstr "برنامه"
#: extensions/auto-move-windows/prefs.js:243
#: extensions/auto-move-windows/prefs.js:71
#: extensions/auto-move-windows/prefs.js:134
msgid "Workspace"
msgstr "فضای‌کاری"
#: extensions/auto-move-windows/prefs.js:89
msgid "Add Rule"
msgstr "افزودن قاعده"
#: extensions/auto-move-windows/prefs.js:111
msgid "Create new matching rule"
msgstr "افزودن یک قاعده‌ی منطبق جدید"
#: extensions/auto-move-windows/prefs.js:117
msgid "Add"
msgstr "اضافه"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
#: extensions/places-menu/placeDisplay.js:233
#: extensions/drive-menu/extension.js:102
#: extensions/places-menu/placeDisplay.js:232
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "بیرون دادن دیسک‌گردان «%s» شکست خورد:"
#: extensions/drive-menu/extension.js:128
#: extensions/drive-menu/extension.js:118
msgid "Removable devices"
msgstr "دستگاه‌های جداشدنی"
#: extensions/drive-menu/extension.js:155
#: extensions/drive-menu/extension.js:145
msgid "Open Files"
msgstr "گشودن پرونده‌ها"
@@ -100,7 +112,7 @@ msgstr ""
"شل در پایین را تغییر می‌دهد. تغییر این گزینه، نیاز به راه‌اندازی مجدد شل دارد تا "
"تاثیر بگذارد."
#: extensions/places-menu/extension.js:89 extensions/places-menu/extension.js:93
#: extensions/places-menu/extension.js:80 extensions/places-menu/extension.js:84
msgid "Places"
msgstr "مکان‌ها"
@@ -119,11 +131,11 @@ msgstr "شکست در سوار کردن حجم برای «%s»"
msgid "Computer"
msgstr "رایانه"
#: extensions/places-menu/placeDisplay.js:359
#: extensions/places-menu/placeDisplay.js:358
msgid "Home"
msgstr "خانه"
#: extensions/places-menu/placeDisplay.js:404
#: extensions/places-menu/placeDisplay.js:403
msgid "Browse Network"
msgstr "مرور شبکه"
@@ -143,47 +155,47 @@ msgstr "نام تم"
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
#: extensions/window-list/extension.js:99
msgid "Close"
msgstr "خروج"
#: extensions/window-list/extension.js:118
#: extensions/window-list/extension.js:119
msgid "Unminimize"
msgstr "ناکمینه"
#: extensions/window-list/extension.js:118
#: extensions/window-list/extension.js:119
msgid "Minimize"
msgstr "کمینه"
#: extensions/window-list/extension.js:125
#: extensions/window-list/extension.js:126
msgid "Unmaximize"
msgstr "نابیشینه"
#: extensions/window-list/extension.js:125
#: extensions/window-list/extension.js:126
msgid "Maximize"
msgstr "بیشنه"
#: extensions/window-list/extension.js:429
#: extensions/window-list/extension.js:431
msgid "Minimize all"
msgstr "کمینهٔ همه"
#: extensions/window-list/extension.js:435
#: extensions/window-list/extension.js:437
msgid "Unminimize all"
msgstr "ناکمینهٔ همه"
#: extensions/window-list/extension.js:441
#: extensions/window-list/extension.js:443
msgid "Maximize all"
msgstr "بیشینهٔ همه"
#: extensions/window-list/extension.js:449
#: extensions/window-list/extension.js:451
msgid "Unmaximize all"
msgstr "نابیشینهٔ همه"
#: extensions/window-list/extension.js:457
#: extensions/window-list/extension.js:459
msgid "Close all"
msgstr "بستن همه"
#: extensions/window-list/extension.js:737
#: extensions/window-list/extension.js:741
msgid "Window List"
msgstr "فهرست پنجره"
@@ -200,7 +212,7 @@ msgstr ""
"ممکن عبارتند از «never»، «auto» و «always»."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:100
#: extensions/window-list/prefs.js:82
msgid "Show windows from all workspaces"
msgstr "نمایش پنجره‌ها از تمام فضاهای کاری"
@@ -220,59 +232,44 @@ msgstr ""
"اینکه آیا فهرست پنجره‌ها در تمام نمایشگرهای متصل نمایش داده شود یا فقط در نمایشگر "
"اصلی."
#: extensions/window-list/prefs.js:29
#: extensions/window-list/prefs.js:25
msgid "Window Grouping"
msgstr "گروه‌سازی پنجره‌ها"
#: extensions/window-list/prefs.js:58
#: extensions/window-list/prefs.js:47
msgid "Never group windows"
msgstr "هیچ‌گاه پنجره‌ها گروه نشوند"
#: extensions/window-list/prefs.js:59
#: extensions/window-list/prefs.js:48
msgid "Group windows when space is limited"
msgstr "پنجره‌ها زمانی که فضا محدود است گروه شوند"
#: extensions/window-list/prefs.js:60
#: extensions/window-list/prefs.js:49
msgid "Always group windows"
msgstr "همیشه پنجره‌ها گروه شوند"
#: extensions/window-list/prefs.js:94
#: extensions/window-list/prefs.js:75
msgid "Show on all monitors"
msgstr "نمایش در تمام نمایشگرها"
#: extensions/window-list/workspaceIndicator.js:209
#: extensions/workspace-indicator/extension.js:215
#: extensions/window-list/workspaceIndicator.js:211
#: extensions/workspace-indicator/extension.js:216
msgid "Workspace Indicator"
msgstr "نشانگر فضای‌کاری"
#: extensions/workspace-indicator/prefs.js:34
#: extensions/workspace-indicator/prefs.js:131
msgid "Workspace Names"
msgstr "نام‌های فضای کاری"
#: extensions/workspace-indicator/prefs.js:67
#: extensions/workspace-indicator/prefs.js:151
msgid "Name"
msgstr "نام"
#: extensions/workspace-indicator/prefs.js:191
#, javascript-format
msgid "Workspace %d"
msgstr "فضای کاری %Id"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "افزودن فضای‌کاری"
#~ msgid "Application"
#~ msgstr "برنامه"
#~ msgid "Workspace"
#~ msgstr "فضای‌کاری"
#~ msgid "Create new matching rule"
#~ msgstr "افزودن یک قاعده‌ی منطبق جدید"
#~ msgid "Add"
#~ msgstr "اضافه"
#~ msgid "Name"
#~ msgstr "نام"
#~ msgid "Attach modal dialog to the parent window"
#~ msgstr "اتصال محاوره modal به پنجره والد"

110
po/ro.po
View File

@@ -8,8 +8,8 @@ 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: 2020-05-03 17:53+0000\n"
"PO-Revision-Date: 2020-05-22 11:12+0200\n"
"POT-Creation-Date: 2019-08-09 22:24+0000\n"
"PO-Revision-Date: 2019-08-18 14:22+0300\n"
"Last-Translator: Florentina Mușat <florentina.musat.28 [at] gmail [dot] "
"com>\n"
"Language-Team: Gnome Romanian Translation Team\n"
@@ -19,7 +19,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
"20)) ? 1 : 2);;\n"
"X-Generator: Poedit 2.3\n"
"X-Generator: Poedit 2.2.3\n"
"X-Project-Style: gnome\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
@@ -34,7 +34,7 @@ msgstr "Această sesiune vă autentifică în GNOME Clasic"
msgid "Favorites"
msgstr "Favorite"
#: extensions/apps-menu/extension.js:369
#: extensions/apps-menu/extension.js:368
msgid "Applications"
msgstr "Aplicații"
@@ -51,26 +51,39 @@ msgstr ""
"fișierului de birou) urmat de simbolul „două puncte” și un număr al "
"spațiului de lucru"
#: extensions/auto-move-windows/prefs.js:35
msgid "Workspace Rules"
msgstr "Regulile spațiilor de lucru"
#: extensions/auto-move-windows/prefs.js:60
msgid "Application"
msgstr "Aplicație"
#: extensions/auto-move-windows/prefs.js:243
#: extensions/auto-move-windows/prefs.js:71
#: extensions/auto-move-windows/prefs.js:134
msgid "Workspace"
msgstr "Spațiu de lucru"
#: extensions/auto-move-windows/prefs.js:89
msgid "Add Rule"
msgstr "Adaugă o regulă"
#: extensions/auto-move-windows/prefs.js:111
msgid "Create new matching rule"
msgstr "Creează o regulă nouă de potrivire"
#: extensions/auto-move-windows/prefs.js:117
msgid "Add"
msgstr "Adaugă"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
#: extensions/places-menu/placeDisplay.js:233
#: extensions/drive-menu/extension.js:102
#: extensions/places-menu/placeDisplay.js:232
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Scoaterea unității „%s” a eșuat:"
#: extensions/drive-menu/extension.js:128
#: extensions/drive-menu/extension.js:118
msgid "Removable devices"
msgstr "Dispozitive detașabile"
#: extensions/drive-menu/extension.js:155
#: extensions/drive-menu/extension.js:145
msgid "Open Files"
msgstr "Deschide fișiere"
@@ -104,8 +117,8 @@ msgstr ""
"Schimbând această configurare necesită repornire shell-ului pentru a avea "
"efect."
#: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:93
#: extensions/places-menu/extension.js:80
#: extensions/places-menu/extension.js:84
msgid "Places"
msgstr "Locații"
@@ -124,11 +137,11 @@ msgstr "Eșec la montarea volumului pentru „%s”"
msgid "Computer"
msgstr "Calculator"
#: extensions/places-menu/placeDisplay.js:359
#: extensions/places-menu/placeDisplay.js:358
msgid "Home"
msgstr "Acasă"
#: extensions/places-menu/placeDisplay.js:404
#: extensions/places-menu/placeDisplay.js:403
msgid "Browse Network"
msgstr "Navighează rețeaua"
@@ -148,47 +161,47 @@ msgstr "Numele temei"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "Numele temei, ce va fi încărcată din ~/.themes/name/gnome-shell"
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:99
msgid "Close"
msgstr "Închide"
#: extensions/window-list/extension.js:118
#: extensions/window-list/extension.js:119
msgid "Unminimize"
msgstr "Deminimizează"
#: extensions/window-list/extension.js:118
#: extensions/window-list/extension.js:119
msgid "Minimize"
msgstr "Minimizează"
#: extensions/window-list/extension.js:125
#: extensions/window-list/extension.js:126
msgid "Unmaximize"
msgstr "Demaximizează"
#: extensions/window-list/extension.js:125
#: extensions/window-list/extension.js:126
msgid "Maximize"
msgstr "Maximizează"
#: extensions/window-list/extension.js:429
#: extensions/window-list/extension.js:431
msgid "Minimize all"
msgstr "Minimizează tot"
#: extensions/window-list/extension.js:435
#: extensions/window-list/extension.js:437
msgid "Unminimize all"
msgstr "Deminimizează tot"
#: extensions/window-list/extension.js:441
#: extensions/window-list/extension.js:443
msgid "Maximize all"
msgstr "Maximizează tot"
#: extensions/window-list/extension.js:449
#: extensions/window-list/extension.js:451
msgid "Unmaximize all"
msgstr "Demaximizează tot"
#: extensions/window-list/extension.js:457
#: extensions/window-list/extension.js:459
msgid "Close all"
msgstr "Închide tot"
#: extensions/window-list/extension.js:737
#: extensions/window-list/extension.js:741
msgid "Window List"
msgstr "Lista ferestrelor"
@@ -205,7 +218,7 @@ msgstr ""
"ferestrei. Valorile posibile sunt „niciodată”, „auto” și „întotdeauna”."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:100
#: extensions/window-list/prefs.js:82
msgid "Show windows from all workspaces"
msgstr "Arată ferestrele din toate spațiile de lucru"
@@ -227,59 +240,44 @@ msgstr ""
"Dacă să se arate lista ferestrelor pe toate monitoarele conectate sau doar "
"pe cel primar."
#: extensions/window-list/prefs.js:29
#: extensions/window-list/prefs.js:25
msgid "Window Grouping"
msgstr "Gruparea ferestrelor"
#: extensions/window-list/prefs.js:58
#: extensions/window-list/prefs.js:47
msgid "Never group windows"
msgstr "Nu grupa ferestrele niciodată"
#: extensions/window-list/prefs.js:59
#: extensions/window-list/prefs.js:48
msgid "Group windows when space is limited"
msgstr "Grupează ferestrele când spațiul e limitat"
#: extensions/window-list/prefs.js:60
#: extensions/window-list/prefs.js:49
msgid "Always group windows"
msgstr "Grupează ferestrele întotdeauna"
#: extensions/window-list/prefs.js:94
#: extensions/window-list/prefs.js:75
msgid "Show on all monitors"
msgstr "Arată pe toate monitoarele"
#: extensions/window-list/workspaceIndicator.js:209
#: extensions/workspace-indicator/extension.js:215
#: extensions/window-list/workspaceIndicator.js:211
#: extensions/workspace-indicator/extension.js:216
msgid "Workspace Indicator"
msgstr "Indicator al spațiului de lucru"
#: extensions/workspace-indicator/prefs.js:34
#: extensions/workspace-indicator/prefs.js:131
msgid "Workspace Names"
msgstr "Numele spațiilor de lucru"
#: extensions/workspace-indicator/prefs.js:67
#: extensions/workspace-indicator/prefs.js:151
msgid "Name"
msgstr "Nume"
#: extensions/workspace-indicator/prefs.js:191
#, javascript-format
msgid "Workspace %d"
msgstr "Spațiu de lucru %d"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "Adaugă un spațiu de lucru"
#~ msgid "Application"
#~ msgstr "Aplicație"
#~ msgid "Workspace"
#~ msgstr "Spațiu de lucru"
#~ msgid "Create new matching rule"
#~ msgstr "Creează o regulă nouă de potrivire"
#~ msgid "Add"
#~ msgstr "Adaugă"
#~ msgid "Name"
#~ msgstr "Nume"
#~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Atașează dialogul modal la fereastra părinte"

View File

@@ -2,15 +2,15 @@
# Copyright (C) YEAR Jens Lody
# This file is distributed under the same license as the gnome-shell-extension-openweather package.
#
# Matej Urbančič <mateju@svn.gnome.org>, 20182020.
# Matej Urbančič <mateju@svn.gnome.org>, 20182019.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extension-openweather 1.1\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2020-05-28 00:55+0000\n"
"PO-Revision-Date: 2020-06-01 15:34+0200\n"
"POT-Creation-Date: 2019-08-24 14:33+0000\n"
"PO-Revision-Date: 2019-08-24 19:08+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: sl\n"
@@ -19,7 +19,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100>=3 && n"
"%100<=4 ? 2 : 3);\n"
"X-Generator: Poedit 2.3\n"
"X-Generator: Poedit 2.2.1\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -49,26 +49,39 @@ msgstr ""
"Seznam nizov z določilom ID programa (ime programa), ki mu sledi dvopičje in "
"nato številka delovne površine."
#: extensions/auto-move-windows/prefs.js:35
msgid "Workspace Rules"
msgstr "Pravila delovnih površin"
#: extensions/auto-move-windows/prefs.js:60
msgid "Application"
msgstr "Program "
#: extensions/auto-move-windows/prefs.js:243
#: extensions/auto-move-windows/prefs.js:71
#: extensions/auto-move-windows/prefs.js:134
msgid "Workspace"
msgstr "Delovna površina"
#: extensions/auto-move-windows/prefs.js:89
msgid "Add Rule"
msgstr "Dodaj pravilo"
#: extensions/auto-move-windows/prefs.js:111
msgid "Create new matching rule"
msgstr "Ustvari novo skladno pravilo"
#: extensions/auto-move-windows/prefs.js:117
msgid "Add"
msgstr "Dodaj"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
#: extensions/drive-menu/extension.js:103
#: extensions/places-menu/placeDisplay.js:233
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Izmetavanje pogona »%s« je spodletelo:"
#: extensions/drive-menu/extension.js:128
#: extensions/drive-menu/extension.js:119
msgid "Removable devices"
msgstr "Odstranljive naprave"
#: extensions/drive-menu/extension.js:155
#: extensions/drive-menu/extension.js:146
msgid "Open Files"
msgstr "Odpri datoteke"
@@ -100,8 +113,8 @@ msgstr ""
"tem prepiše privzeti izpis pod sličico. Za uveljavitev sprememb je treba "
"lupino ponovno zagnati."
#: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:93
#: extensions/places-menu/extension.js:80
#: extensions/places-menu/extension.js:84
msgid "Places"
msgstr "Mesta"
@@ -164,27 +177,27 @@ msgstr "Pomanjšaj"
msgid "Maximize"
msgstr "Razpni"
#: extensions/window-list/extension.js:428
#: extensions/window-list/extension.js:431
msgid "Minimize all"
msgstr "Skrči vse"
#: extensions/window-list/extension.js:434
#: extensions/window-list/extension.js:437
msgid "Unminimize all"
msgstr "Pomanjšaj vse"
#: extensions/window-list/extension.js:440
#: extensions/window-list/extension.js:443
msgid "Maximize all"
msgstr "Razpni vse"
#: extensions/window-list/extension.js:448
#: extensions/window-list/extension.js:451
msgid "Unmaximize all"
msgstr "Pomanjšaj vse"
#: extensions/window-list/extension.js:456
#: extensions/window-list/extension.js:459
msgid "Close all"
msgstr "Zapri vse"
#: extensions/window-list/extension.js:734
#: extensions/window-list/extension.js:741
msgid "Window List"
msgstr "Seznam oken"
@@ -201,7 +214,7 @@ msgstr ""
"Veljavne vrednosti so »nikoli«, »samodejno« in »vedno«."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:100
#: extensions/window-list/prefs.js:82
msgid "Show windows from all workspaces"
msgstr "Pokaži okna vseh delovnih površin"
@@ -221,56 +234,44 @@ msgid ""
msgstr ""
"Ali naj bo prikazan seznam oken na vseh povezanih zasloni ali le na osnovnem."
#: extensions/window-list/prefs.js:29
#: extensions/window-list/prefs.js:25
msgid "Window Grouping"
msgstr "Združevanje oken"
#: extensions/window-list/prefs.js:58
#: extensions/window-list/prefs.js:47
msgid "Never group windows"
msgstr "Nikoli ne združuj oken"
#: extensions/window-list/prefs.js:59
#: extensions/window-list/prefs.js:48
msgid "Group windows when space is limited"
msgstr "Združi okna, ko je prostor omejen"
#: extensions/window-list/prefs.js:60
#: extensions/window-list/prefs.js:49
msgid "Always group windows"
msgstr "Okna vedno združi"
#: extensions/window-list/prefs.js:94
#: extensions/window-list/prefs.js:75
msgid "Show on all monitors"
msgstr "Pokaži na vseh zaslonih"
#: extensions/window-list/workspaceIndicator.js:207
#: extensions/workspace-indicator/extension.js:213
#: extensions/window-list/workspaceIndicator.js:211
#: extensions/workspace-indicator/extension.js:216
msgid "Workspace Indicator"
msgstr "Kazalnik delovnih površin"
#: extensions/workspace-indicator/prefs.js:34
#: extensions/workspace-indicator/prefs.js:129
msgid "Workspace Names"
msgstr "Imena delovnih površin"
#: extensions/workspace-indicator/prefs.js:67
#: extensions/workspace-indicator/prefs.js:149
msgid "Name"
msgstr "Ime"
#: extensions/workspace-indicator/prefs.js:189
#, javascript-format
msgid "Workspace %d"
msgstr "Delovna površina %d"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "Dodaj delovno površino"
#~ msgid "Application"
#~ msgstr "Program "
#~ msgid "Create new matching rule"
#~ msgstr "Ustvari novo skladno pravilo"
#~ msgid "Add"
#~ msgstr "Dodaj"
#~ msgid "Name"
#~ msgstr "Ime"
#~ msgid "..."
#~ msgstr "..."

View File

@@ -1,24 +1,24 @@
# Swedish translation for gnome-shell-extensions.
# Copyright © 2011, 2012, 2014, 2015, 2017, 2019, 2020 Free Software Foundation, Inc.
# Copyright © 2011, 2012, 2014, 2015, 2017, 2019 Free Software Foundation, Inc.
# This file is distributed under the same license as the gnome-shell-extensions package.
# Daniel Nylander <po@danielnylander.se>, 2011, 2012.
# Mattias Eriksson <snaggen@gmail.com>, 2014.
# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2015, 2017, 2019, 2020.
# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2015, 2017, 2019.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2020-04-17 16:03+0000\n"
"PO-Revision-Date: 2020-04-26 20:51+0200\n"
"POT-Creation-Date: 2019-08-09 22:24+0000\n"
"PO-Revision-Date: 2019-08-12 21:30+0200\n"
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.3\n"
"X-Generator: Poedit 2.2.3\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -32,7 +32,7 @@ msgstr "Denna session loggar in dig till GNOME Klassisk"
msgid "Favorites"
msgstr "Favoriter"
#: extensions/apps-menu/extension.js:369
#: extensions/apps-menu/extension.js:368
msgid "Applications"
msgstr "Program"
@@ -48,39 +48,39 @@ msgstr ""
"En lista över strängar, var och en innehållande ett program-id "
"(skrivbordsfilnamn), följt av ett kolontecken och arbetsytans nummer"
#: extensions/auto-move-windows/prefs.js:59
#: extensions/auto-move-windows/prefs.js:60
msgid "Application"
msgstr "Program"
#: extensions/auto-move-windows/prefs.js:70
#: extensions/auto-move-windows/prefs.js:133
#: extensions/auto-move-windows/prefs.js:71
#: extensions/auto-move-windows/prefs.js:134
msgid "Workspace"
msgstr "Arbetsyta"
#: extensions/auto-move-windows/prefs.js:88
#: extensions/auto-move-windows/prefs.js:89
msgid "Add Rule"
msgstr "Lägg till regel"
#: extensions/auto-move-windows/prefs.js:110
#: extensions/auto-move-windows/prefs.js:111
msgid "Create new matching rule"
msgstr "Skapa ny matchande regel"
#: extensions/auto-move-windows/prefs.js:116
#: extensions/auto-move-windows/prefs.js:117
msgid "Add"
msgstr "Lägg till"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
#: extensions/places-menu/placeDisplay.js:233
#: extensions/drive-menu/extension.js:102
#: extensions/places-menu/placeDisplay.js:232
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Utmatning av disk ”%s” misslyckades:"
#: extensions/drive-menu/extension.js:128
#: extensions/drive-menu/extension.js:118
msgid "Removable devices"
msgstr "Flyttbara enheter"
#: extensions/drive-menu/extension.js:155
#: extensions/drive-menu/extension.js:145
msgid "Open Files"
msgstr "Öppna filer"
@@ -113,8 +113,8 @@ msgstr ""
"skalets standardplacering under miniatyrbilden. För att ändra denna "
"inställning krävs att skalet startas om för att den ska få effekt."
#: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:93
#: extensions/places-menu/extension.js:80
#: extensions/places-menu/extension.js:84
msgid "Places"
msgstr "Platser"
@@ -133,11 +133,11 @@ msgstr "Misslyckades med att montera volym för ”%s”"
msgid "Computer"
msgstr "Dator"
#: extensions/places-menu/placeDisplay.js:359
#: extensions/places-menu/placeDisplay.js:358
msgid "Home"
msgstr "Hem"
#: extensions/places-menu/placeDisplay.js:404
#: extensions/places-menu/placeDisplay.js:403
msgid "Browse Network"
msgstr "Bläddra i nätverket"
@@ -157,47 +157,47 @@ msgstr "Temanamn"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "Namnet på temat, kommer att läsas in från ~/.themes/name/gnome-shell"
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:99
msgid "Close"
msgstr "Stäng"
#: extensions/window-list/extension.js:118
#: extensions/window-list/extension.js:119
msgid "Unminimize"
msgstr "Avminimera"
#: extensions/window-list/extension.js:118
#: extensions/window-list/extension.js:119
msgid "Minimize"
msgstr "Minimera"
#: extensions/window-list/extension.js:125
#: extensions/window-list/extension.js:126
msgid "Unmaximize"
msgstr "Avmaximera"
#: extensions/window-list/extension.js:125
#: extensions/window-list/extension.js:126
msgid "Maximize"
msgstr "Maximera"
#: extensions/window-list/extension.js:429
#: extensions/window-list/extension.js:431
msgid "Minimize all"
msgstr "Minimera alla"
#: extensions/window-list/extension.js:435
#: extensions/window-list/extension.js:437
msgid "Unminimize all"
msgstr "Avminimera alla"
#: extensions/window-list/extension.js:441
#: extensions/window-list/extension.js:443
msgid "Maximize all"
msgstr "Maximera alla"
#: extensions/window-list/extension.js:449
#: extensions/window-list/extension.js:451
msgid "Unmaximize all"
msgstr "Avmaximera alla"
#: extensions/window-list/extension.js:457
#: extensions/window-list/extension.js:459
msgid "Close all"
msgstr "Stäng alla"
#: extensions/window-list/extension.js:737
#: extensions/window-list/extension.js:741
msgid "Window List"
msgstr "Fönsterlista"
@@ -214,7 +214,7 @@ msgstr ""
"värden är ”never” (aldrig), ”auto” och ”always” (alltid)."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:89
#: extensions/window-list/prefs.js:82
msgid "Show windows from all workspaces"
msgstr "Visa fönster från alla arbetsytor"
@@ -251,31 +251,28 @@ msgstr "Gruppera fönster när utrymmet är begränsat"
msgid "Always group windows"
msgstr "Gruppera alltid fönster"
#: extensions/window-list/prefs.js:82
#: extensions/window-list/prefs.js:75
msgid "Show on all monitors"
msgstr "Visa på alla skärmar"
#: extensions/window-list/workspaceIndicator.js:209
#: extensions/workspace-indicator/extension.js:215
#: extensions/window-list/workspaceIndicator.js:211
#: extensions/workspace-indicator/extension.js:216
msgid "Workspace Indicator"
msgstr "Arbetsyteindikator"
#: extensions/workspace-indicator/prefs.js:34
#: extensions/workspace-indicator/prefs.js:131
msgid "Workspace Names"
msgstr "Namn på arbetsytor"
#: extensions/workspace-indicator/prefs.js:67
#: extensions/workspace-indicator/prefs.js:151
msgid "Name"
msgstr "Namn"
#: extensions/workspace-indicator/prefs.js:191
#, javascript-format
msgid "Workspace %d"
msgstr "Arbetsyta %d"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "Lägg till arbetsyta"
#~ msgid "Name"
#~ msgstr "Namn"
#~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Koppla samman modal dialog till föräldrafönstret"

133
po/tr.po
View File

@@ -7,15 +7,15 @@
# Muhammet Kara <muhammetk@gmail.com>, 2013, 2014, 2015.
# Furkan Tokaç <developmentft@gmail.com>, 2017.
# Sabri Ünal <libreajans@gmail.com>, 2014, 2019.
# Emin Tufan Çetin <etcetin@gmail.com>, 2019, 2020.
# Emin Tufan Çetin <etcetin@gmail.com>, 2019.
#
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: 2020-05-03 17:53+0000\n"
"PO-Revision-Date: 2020-05-05 17:28+0300\n"
"POT-Creation-Date: 2019-09-05 16:28+0000\n"
"PO-Revision-Date: 2019-09-06 23:07+0300\n"
"Last-Translator: Emin Tufan Çetin <etcetin@gmail.com>\n"
"Language-Team: Turkish <gnome-turk@gnome.org>\n"
"Language: tr\n"
@@ -35,7 +35,7 @@ msgstr "Bu oturum, GNOME Klasik sürümüne giriş yapmanızı sağlar"
#: extensions/apps-menu/extension.js:113
msgid "Favorites"
msgstr "Gözdeler"
msgstr "Favoriler"
#: extensions/apps-menu/extension.js:369
msgid "Applications"
@@ -53,26 +53,39 @@ msgstr ""
"Her biri, bir uygulama kimliği (masaüstü dosya adı) ardından gelen iki nokta "
"üst üste ve çalışma alanı numarasını içeren dizgeler listesi"
#: extensions/auto-move-windows/prefs.js:35
msgid "Workspace Rules"
msgstr "Çalışma Alanı Kuralları"
#: extensions/auto-move-windows/prefs.js:60
msgid "Application"
msgstr "Uygulama"
#: extensions/auto-move-windows/prefs.js:243
#: extensions/auto-move-windows/prefs.js:71
#: extensions/auto-move-windows/prefs.js:134
msgid "Workspace"
msgstr "Çalışma Alanı"
#: extensions/auto-move-windows/prefs.js:89
msgid "Add Rule"
msgstr "Kural Ekle"
#: extensions/auto-move-windows/prefs.js:111
msgid "Create new matching rule"
msgstr "Yeni bir eşleşme kuralı oluştur"
#: extensions/auto-move-windows/prefs.js:117
msgid "Add"
msgstr "Ekle"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
#: extensions/drive-menu/extension.js:103
#: extensions/places-menu/placeDisplay.js:233
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "“%s” sürücüsü çıkarılamadı:"
#: extensions/drive-menu/extension.js:128
#: extensions/drive-menu/extension.js:119
msgid "Removable devices"
msgstr "Çıkarılabilir aygıtlar"
#: extensions/drive-menu/extension.js:155
#: extensions/drive-menu/extension.js:146
msgid "Open Files"
msgstr "Dosyaları Aç"
@@ -83,13 +96,13 @@ msgstr "Pencereler için ekranın daha fazla kısmını kullan"
#: 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."
"aspect ratio, and consolidating them further to reduce the bounding box. This "
"setting applies only with the natural placement strategy."
msgstr ""
"Ekran en-boy oranına uyum sağlayarak ve sınır kutucuğunu küçültmek için daha "
"da sıkılaştırarak, pencere küçük resimlerini yerleştirmek için ekranda daha "
"fazla alan kullanmayı dene. Bu seçenek sadece doğal yerleştirme stratejisi "
"ile geçerlidir."
"Ekran en-boy oranına uyum sağlayarak ve sınır kutucuğunu küçültmek için daha da "
"sıkılaştırarak, pencere küçük resimlerini yerleştirmek için ekranda daha fazla "
"alan kullanmayı dene. Bu seçenek sadece doğal yerleştirme stratejisi ile "
"geçerlidir."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
msgid "Place window captions on top"
@@ -101,13 +114,11 @@ msgid ""
"shell default of placing it at the bottom. Changing this setting requires "
"restarting the shell to have any effect."
msgstr ""
"Eğer doğruysa, pencere açıklamalarını ilgili küçük resimlerin üzerine "
"yerleştir ve kabukta öntanımlı olan alta yerleştirme ayarını geçersiz kıl. "
"Yapılan değişikliklerin etkili olması için kabuğun yeniden başlatılması "
"gerekir."
"Eğer doğruysa, pencere açıklamalarını ilgili küçük resimlerin üzerine yerleştir "
"ve kabukta öntanımlı olan alta yerleştirme ayarını geçersiz kıl. Yapılan "
"değişikliklerin etkili olması için kabuğun yeniden başlatılması gerekir."
#: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:93
#: extensions/places-menu/extension.js:80 extensions/places-menu/extension.js:84
msgid "Places"
msgstr "Yerler"
@@ -170,27 +181,27 @@ msgstr "Önceki duruma getir"
msgid "Maximize"
msgstr "En büyük duruma getir"
#: extensions/window-list/extension.js:429
#: extensions/window-list/extension.js:431
msgid "Minimize all"
msgstr "Tümünü simge durumuna küçült"
#: extensions/window-list/extension.js:435
#: extensions/window-list/extension.js:437
msgid "Unminimize all"
msgstr "Tümünü önceki duruma getir"
#: extensions/window-list/extension.js:441
#: extensions/window-list/extension.js:443
msgid "Maximize all"
msgstr "Tümünü en büyük duruma getir"
#: extensions/window-list/extension.js:449
#: extensions/window-list/extension.js:451
msgid "Unmaximize all"
msgstr "Tümünü önceki duruma getir"
#: extensions/window-list/extension.js:457
#: extensions/window-list/extension.js:459
msgid "Close all"
msgstr "Tümünü kapat"
#: extensions/window-list/extension.js:737
#: extensions/window-list/extension.js:741
msgid "Window List"
msgstr "Pencere Listesi"
@@ -204,11 +215,11 @@ msgid ""
"Possible values are “never”, “auto” and “always”."
msgstr ""
"Pencere listesinde aynı uygulamaların ne zaman kümeleneceğine karar verir. "
"Olası değerler: “never” (hiçbir zaman), “auto” (kendiliğinden) ve "
"“always” (her zaman)."
"Olası değerler: “never” (hiçbir zaman), “auto” (kendiliğinden) ve “always” (her "
"zaman)."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:100
#: extensions/window-list/prefs.js:82
msgid "Show windows from all workspaces"
msgstr "Tüm çalışma alanlarındaki pencereleri göster"
@@ -227,59 +238,47 @@ msgid ""
"Whether to show the window list on all connected monitors or only on the "
"primary one."
msgstr ""
"Pencere listesinin tüm bağlı monitörlerde mi yoksa sadece birincil monitörde "
"mi gösterileceğini belirtir."
"Pencere listesinin tüm bağlı monitörlerde mi yoksa sadece birincil monitörde mi "
"gösterileceğini belirtir."
#: extensions/window-list/prefs.js:29
#: extensions/window-list/prefs.js:25
msgid "Window Grouping"
msgstr "Pencere Kümeleme"
#: extensions/window-list/prefs.js:58
#: extensions/window-list/prefs.js:47
msgid "Never group windows"
msgstr "Pencereleri hiçbir zaman kümeleme"
#: extensions/window-list/prefs.js:59
#: extensions/window-list/prefs.js:48
msgid "Group windows when space is limited"
msgstr "Yer kısıtlı olduğunda pencereleri kümele"
#: extensions/window-list/prefs.js:60
#: extensions/window-list/prefs.js:49
msgid "Always group windows"
msgstr "Pencereleri her zaman kümele"
#: extensions/window-list/prefs.js:94
#: extensions/window-list/prefs.js:75
msgid "Show on all monitors"
msgstr "Tüm monitörlerde göster"
#: extensions/window-list/workspaceIndicator.js:209
#: extensions/workspace-indicator/extension.js:215
#: extensions/window-list/workspaceIndicator.js:211
#: extensions/workspace-indicator/extension.js:216
msgid "Workspace Indicator"
msgstr "Çalışma Alanı Belirteci"
#: extensions/workspace-indicator/prefs.js:34
#: extensions/workspace-indicator/prefs.js:129
msgid "Workspace Names"
msgstr "Çalışma Alanı Adları"
#: extensions/workspace-indicator/prefs.js:67
#: extensions/workspace-indicator/prefs.js:149
msgid "Name"
msgstr "Ad"
#: extensions/workspace-indicator/prefs.js:189
#, javascript-format
msgid "Workspace %d"
msgstr "Çalışma Alanı %d"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "Çalışma Alanı Ekle"
#~ msgid "Application"
#~ msgstr "Uygulama"
#~ msgid "Create new matching rule"
#~ msgstr "Yeni bir eşleşme kuralı oluştur"
#~ msgid "Add"
#~ msgstr "Ekle"
#~ msgid "Name"
#~ msgstr "Ad"
#~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Yardımcı iletişim penceresini ana pencereye iliştir"
@@ -293,8 +292,8 @@ msgstr "Çalışma Alanı Ekle"
#~ msgstr "Başlık çubuğundaki düğmelerin düzeni"
#~ msgid ""
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
#~ "running GNOME Shell."
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when running "
#~ "GNOME Shell."
#~ msgstr ""
#~ "Bu anahtar, GNOME Kabuğu çalışırken org.gnome.desktop.wm.preferences "
#~ "içindeki anahtarı geçersiz kılar."
@@ -332,20 +331,20 @@ msgstr "Çalışma Alanı Ekle"
#~ msgstr "Alternatif karşılama metni."
#~ msgid ""
#~ "If not empty, it contains the text that will be shown when clicking on "
#~ "the panel."
#~ "If not empty, it contains the text that will be shown when clicking on the "
#~ "panel."
#~ msgstr "Eğer boş değilse, panele tıklandığında gösterilecek metni içerir."
#~ msgid "Message"
#~ msgstr "İleti"
#~ 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"
#~ "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 its possible to customize the greeting message."
#~ msgstr ""
#~ "Bu örnek, Shell için uygun eklentilerin nasıl geliştirileceğini "
#~ "göstermeyi amaçlar; bu yüzden kendi başına çok az işleve sahiptir.\n"
#~ "Bu örnek, Shell için uygun eklentilerin nasıl geliştirileceğini göstermeyi "
#~ "amaçlar; bu yüzden kendi başına çok az işleve sahiptir.\n"
#~ "Yine de karşılama iletisini özelleştirmek mümkündür."
#~ msgid "CPU"

106
po/uk.po
View File

@@ -4,23 +4,22 @@
# Alexandr Toorchyn <ilex@mail.ua>, 2011.
# Daniel Korostil <ted.korostiled@gmail.com>, 2013, 2014, 2015, 2017.
# vikaig <vikaig99@gmail.com>, 2019.
# Yuri Chornoivan <yurchor@ukr.net>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/is"
"sues\n"
"POT-Creation-Date: 2020-05-03 17:53+0000\n"
"PO-Revision-Date: 2020-05-03 22:19+0300\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2019-10-13 18:56+0000\n"
"PO-Revision-Date: 2019-10-18 18:01+0300\n"
"Last-Translator: vikaig <vikaig99@gmail.com>\n"
"Language-Team: linux.org.ua\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<"
"=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Lokalize 20.07.70\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Poedit 2.2.1\n"
"X-Project-Style: gnome\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
@@ -51,27 +50,39 @@ msgstr ""
"Список рядків, що містять ідентифікатор програми (назва файла стільниці),"
"двокрапка і номер робочого простору"
#: extensions/auto-move-windows/prefs.js:35
#| msgid "Workspace Names"
msgid "Workspace Rules"
msgstr "Правила робочих просторів"
#: extensions/auto-move-windows/prefs.js:60
msgid "Application"
msgstr "Програма"
#: extensions/auto-move-windows/prefs.js:243
#: extensions/auto-move-windows/prefs.js:71
#: extensions/auto-move-windows/prefs.js:134
msgid "Workspace"
msgstr "Робочий простір"
#: extensions/auto-move-windows/prefs.js:89
msgid "Add Rule"
msgstr "Додати правило"
#: extensions/auto-move-windows/prefs.js:111
msgid "Create new matching rule"
msgstr "Створити нове відповідне правило"
#: extensions/auto-move-windows/prefs.js:117
msgid "Add"
msgstr "Додати"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
#: extensions/drive-menu/extension.js:103
#: extensions/places-menu/placeDisplay.js:233
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Не вдалося витягнути пристрій «%s»:"
#: extensions/drive-menu/extension.js:128
#: extensions/drive-menu/extension.js:119
msgid "Removable devices"
msgstr "Змінні пристрої"
#: extensions/drive-menu/extension.js:155
#: extensions/drive-menu/extension.js:146
msgid "Open Files"
msgstr "Відкрити файли"
@@ -104,8 +115,8 @@ msgstr ""
"в нижній, як це робиться типово. Зміна цього параметра вимагає перезапуску "
"оболонки, щоб зміна вступила в силу."
#: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:93
#: extensions/places-menu/extension.js:80
#: extensions/places-menu/extension.js:84
msgid "Places"
msgstr "Місця"
@@ -168,27 +179,27 @@ msgstr "Відновити розгорнуте"
msgid "Maximize"
msgstr "Розгорнути"
#: extensions/window-list/extension.js:429
#: extensions/window-list/extension.js:431
msgid "Minimize all"
msgstr "Згорнути все"
#: extensions/window-list/extension.js:435
#: extensions/window-list/extension.js:437
msgid "Unminimize all"
msgstr "Відновити все згорнуте"
#: extensions/window-list/extension.js:441
#: extensions/window-list/extension.js:443
msgid "Maximize all"
msgstr "Розгорнути все"
#: extensions/window-list/extension.js:449
#: extensions/window-list/extension.js:451
msgid "Unmaximize all"
msgstr "Відновити все розгорнуте"
#: extensions/window-list/extension.js:457
#: extensions/window-list/extension.js:459
msgid "Close all"
msgstr "Закрити все"
#: extensions/window-list/extension.js:737
#: extensions/window-list/extension.js:741
msgid "Window List"
msgstr "Перелік вікон"
@@ -205,7 +216,7 @@ msgstr ""
"значеннями є «never», «auto» і «always»."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:100
#: extensions/window-list/prefs.js:82
msgid "Show windows from all workspaces"
msgstr "Показувати вікна з усіх робочих просторів"
@@ -225,59 +236,44 @@ msgstr ""
"Чи показувати переліку вікон на всіх під'єднаних моніторах, чи тільки на "
"основному."
#: extensions/window-list/prefs.js:29
#: extensions/window-list/prefs.js:25
msgid "Window Grouping"
msgstr "Групування вікон"
#: extensions/window-list/prefs.js:58
#: extensions/window-list/prefs.js:47
msgid "Never group windows"
msgstr "Ніколи не групувати вікна"
#: extensions/window-list/prefs.js:59
#: extensions/window-list/prefs.js:48
msgid "Group windows when space is limited"
msgstr "Групувати вікна коли простір обмежено"
#: extensions/window-list/prefs.js:60
#: extensions/window-list/prefs.js:49
msgid "Always group windows"
msgstr "Завжди групувати вікна"
#: extensions/window-list/prefs.js:94
#: extensions/window-list/prefs.js:75
msgid "Show on all monitors"
msgstr "Показувати на всіх моніторах"
#: extensions/window-list/workspaceIndicator.js:209
#: extensions/workspace-indicator/extension.js:215
#: extensions/window-list/workspaceIndicator.js:211
#: extensions/workspace-indicator/extension.js:216
msgid "Workspace Indicator"
msgstr "Покажчик робочого простору"
#: extensions/workspace-indicator/prefs.js:34
#: extensions/workspace-indicator/prefs.js:129
msgid "Workspace Names"
msgstr "Назви робочих просторів"
#: extensions/workspace-indicator/prefs.js:67
#: extensions/workspace-indicator/prefs.js:149
msgid "Name"
msgstr "Назва"
#: extensions/workspace-indicator/prefs.js:189
#, javascript-format
msgid "Workspace %d"
msgstr "Робочий простір %d"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "Додати робочий простір"
#~ msgid "Application"
#~ msgstr "Програма"
#~ msgid "Workspace"
#~ msgstr "Робочий простір"
#~ msgid "Create new matching rule"
#~ msgstr "Створити нове відповідне правило"
#~ msgid "Add"
#~ msgstr "Додати"
#~ msgid "Name"
#~ msgstr "Назва"
#~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Приєднати модальне вікно до батьківського вікна"

View File

@@ -1,27 +1,26 @@
# Chinese (China) translation for gnome-shell-extensions.
# Copyright (C) 2011-2019 gnome-shell-extensions's authors and contributors
# Copyright (C) 2011 Free Software Foundation, Inc.
# This file is distributed under the same license as the gnome-shell-extensions package.
# Wylmer Wang <wantinghard@gmail.com>, 2011.
# Aron Xu <aronxu@gnome.org>, 2011.
# tuhaihe <1132321739qq@gmail.com>, 2012, 2013.
# 甘露(Gan Lu) <rhythm.gan@gmail.com>, 2013.
# Mingcong Bai <jeffbai@aosc.xyz>, 2017.
# Dingzhong Chen <wsxy162@gmail.com>, 2019.
#
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: 2019-08-09 22:24+0000\n"
"PO-Revision-Date: 2019-09-10 02:34+0800\n"
"Last-Translator: Dingzhong Chen <wsxy162@gmail.com>\n"
"POT-Creation-Date: 2018-01-18 12:15+0000\n"
"PO-Revision-Date: 2017-08-18 21:26+0800\n"
"Last-Translator: Mingcong Bai <jeffbai@aosc.xyz>\n"
"Language-Team: Chinese (China) <i18n-zh@googlegroups.com>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Gtranslator 3.32.1\n"
"X-Generator: Poedit 2.0.2\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
@@ -32,11 +31,70 @@ msgstr "GNOME 经典模式"
msgid "This session logs you into GNOME Classic"
msgstr "该会话将登录到“GNOME 经典模式”"
#: extensions/apps-menu/extension.js:113
#: 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 "当运行 GNOME Shell 时该键会覆盖 org.gnome.mutter 中的键。"
#: 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 ""
"当运行 GNOME Shell 时该键会覆盖 org.gnome.desktop.wm.preferences 中的键。"
#: 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:19
msgid "Thumbnail only"
msgstr "仅缩略图"
#: extensions/alternate-tab/prefs.js:20
msgid "Application icon only"
msgstr "仅应用程序图标"
#: extensions/alternate-tab/prefs.js:21
msgid "Thumbnail and application icon"
msgstr "缩略图和应用程序图标"
#: extensions/alternate-tab/prefs.js:34
msgid "Present windows as"
msgstr "窗口展现为"
#: extensions/alternate-tab/prefs.js:65
msgid "Show only windows in the current workspace"
msgstr "仅显示当前工作区中的窗口"
#: extensions/apps-menu/extension.js:37
msgid "Activities Overview"
msgstr "活动概览"
#: extensions/apps-menu/extension.js:130
msgid "Favorites"
msgstr "收藏"
#: extensions/apps-menu/extension.js:368
#: extensions/apps-menu/extension.js:417
msgid "Applications"
msgstr "应用程序"
@@ -51,30 +109,30 @@ msgid ""
msgstr ""
"一系列字符串,每个字符串包含一个应用程序标识(桌面文件名称)、冒号加工作区号"
#: extensions/auto-move-windows/prefs.js:60
#: extensions/auto-move-windows/prefs.js:53
msgid "Application"
msgstr "应用程序"
#: extensions/auto-move-windows/prefs.js:71
#: extensions/auto-move-windows/prefs.js:134
#: extensions/auto-move-windows/prefs.js:62
#: extensions/auto-move-windows/prefs.js:117
msgid "Workspace"
msgstr "工作区"
#: extensions/auto-move-windows/prefs.js:89
#: extensions/auto-move-windows/prefs.js:78
msgid "Add Rule"
msgstr "添加规则"
#: extensions/auto-move-windows/prefs.js:111
#: extensions/auto-move-windows/prefs.js:98
msgid "Create new matching rule"
msgstr "创建新的匹配规则"
#: extensions/auto-move-windows/prefs.js:117
#: extensions/auto-move-windows/prefs.js:103
msgid "Add"
msgstr "添加"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:102
#: extensions/places-menu/placeDisplay.js:232
#: extensions/drive-menu/extension.js:103
#: extensions/places-menu/placeDisplay.js:219
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "弹出驱动器“%s”失败"
@@ -83,10 +141,39 @@ msgstr "弹出驱动器“%s”失败"
msgid "Removable devices"
msgstr "可移动设备"
#: extensions/drive-menu/extension.js:145
#: extensions/drive-menu/extension.js:143
msgid "Open Files"
msgstr "打开文件"
#: extensions/example/extension.js:17
msgid "Hello, world!"
msgstr "Hello, world!"
#: 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:27
msgid "Message"
msgstr "消息"
#. TRANSLATORS: Example is the name of the extension, should not be
#. translated
#: extensions/example/prefs.js:40
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 its possible to customize the greeting message."
msgstr ""
"示例意在展示如何为 Shell 创建良好工作的扩展,本身功能有限。\n"
"尽管如此,它还是具备定制祝福语的功能。"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
msgid "Use more screen for windows"
msgstr "展现窗口时利用更多屏幕空间"
@@ -113,31 +200,31 @@ msgstr ""
"如果设置为 true则将窗口说明文字放置在对应窗口的缩略图上方而不是默认的下"
"方。修改此设置需要重启 GNOME Shell 以使设置生效。"
#: extensions/places-menu/extension.js:80
#: extensions/places-menu/extension.js:84
#: extensions/places-menu/extension.js:79
#: extensions/places-menu/extension.js:82
msgid "Places"
msgstr "位置"
#: extensions/places-menu/placeDisplay.js:46
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "无法启动“%s”"
#: extensions/places-menu/placeDisplay.js:61
#: extensions/places-menu/placeDisplay.js:66
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "无法为“%s”挂载卷"
#: extensions/places-menu/placeDisplay.js:148
#: extensions/places-menu/placeDisplay.js:171
#: extensions/places-menu/placeDisplay.js:79
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "无法启动“%s”"
#: extensions/places-menu/placeDisplay.js:135
#: extensions/places-menu/placeDisplay.js:158
msgid "Computer"
msgstr "计算机"
#: extensions/places-menu/placeDisplay.js:358
#: extensions/places-menu/placeDisplay.js:336
msgid "Home"
msgstr "主文件夹"
#: extensions/places-menu/placeDisplay.js:403
#: extensions/places-menu/placeDisplay.js:378
msgid "Browse Network"
msgstr "浏览网络"
@@ -157,47 +244,52 @@ msgstr "主题名称"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "从 ~/.themes/name/gnome-shell 加载的主题名称"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:106
msgid "Close"
msgstr "关闭"
#: extensions/window-list/extension.js:119
#: extensions/window-list/extension.js:125
msgid "Unminimize"
msgstr "取消最小化"
#: extensions/window-list/extension.js:119
#: extensions/window-list/extension.js:126
msgid "Minimize"
msgstr "最小化"
#: extensions/window-list/extension.js:126
#: extensions/window-list/extension.js:132
msgid "Unmaximize"
msgstr "取消最大化"
#: extensions/window-list/extension.js:126
#: extensions/window-list/extension.js:133
msgid "Maximize"
msgstr "最大化"
#: extensions/window-list/extension.js:431
#: extensions/window-list/extension.js:408
msgid "Minimize all"
msgstr "全部最小化"
#: extensions/window-list/extension.js:437
#: extensions/window-list/extension.js:414
msgid "Unminimize all"
msgstr "全部取消最小化"
#: extensions/window-list/extension.js:443
#: extensions/window-list/extension.js:420
msgid "Maximize all"
msgstr "全部最大化"
#: extensions/window-list/extension.js:451
#: extensions/window-list/extension.js:429
msgid "Unmaximize all"
msgstr "全部取消最大化"
#: extensions/window-list/extension.js:459
#: extensions/window-list/extension.js:438
msgid "Close all"
msgstr "全部关闭"
#: extensions/window-list/extension.js:741
#: extensions/window-list/extension.js:646
#: extensions/workspace-indicator/extension.js:26
msgid "Workspace Indicator"
msgstr "工作区指示器"
#: extensions/window-list/extension.js:811
msgid "Window List"
msgstr "窗口列表"
@@ -214,124 +306,48 @@ msgstr ""
"不、“auto”自动和“always”总是。"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:82
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
#: 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:25
#: extensions/window-list/prefs.js:28
msgid "Window Grouping"
msgstr "窗口分组"
#: extensions/window-list/prefs.js:47
#: extensions/window-list/prefs.js:46
msgid "Never group windows"
msgstr "从不将窗口分组"
#: extensions/window-list/prefs.js:48
#: extensions/window-list/prefs.js:47
msgid "Group windows when space is limited"
msgstr "当空间有限时将窗口分组"
#: extensions/window-list/prefs.js:49
#: extensions/window-list/prefs.js:48
msgid "Always group windows"
msgstr "总是对窗口分组"
#: extensions/window-list/prefs.js:75
#: extensions/window-list/prefs.js:71
msgid "Show on all monitors"
msgstr "在所有显示器上显示"
#: extensions/window-list/workspaceIndicator.js:211
#: extensions/workspace-indicator/extension.js:216
msgid "Workspace Indicator"
msgstr "工作区指示器"
#: extensions/workspace-indicator/prefs.js:131
#: extensions/workspace-indicator/prefs.js:134
msgid "Workspace Names"
msgstr "工作区名称"
#: extensions/workspace-indicator/prefs.js:151
#: extensions/workspace-indicator/prefs.js:150
msgid "Name"
msgstr "名称"
#: extensions/workspace-indicator/prefs.js:191
#: extensions/workspace-indicator/prefs.js:190
#, javascript-format
msgid "Workspace %d"
msgstr "工作区 %d"
#~ msgid "Attach modal dialog to the parent window"
#~ msgstr "将模式对话框附着到父窗口"
#~ msgid ""
#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell."
#~ msgstr "当运行 GNOME Shell 时该键会覆盖 org.gnome.mutter 中的键。"
#~ msgid "Arrangement of buttons on the titlebar"
#~ msgstr "标题栏上按钮的排列"
#~ msgid ""
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
#~ "running GNOME Shell."
#~ msgstr ""
#~ "当运行 GNOME Shell 时该键会覆盖 org.gnome.desktop.wm.preferences 中的键。"
#~ msgid "Enable edge tiling when dropping windows on screen edges"
#~ msgstr "启用将窗口拖拽到屏幕边缘时平铺显示的功能"
#~ msgid "Workspaces only on primary monitor"
#~ msgstr "仅在主显示器上显示工作区"
#~ msgid "Delay focus changes in mouse mode until the pointer stops moving"
#~ msgstr "将鼠标模式下焦点的切换推迟到光标停止移动之后"
#~ msgid "Thumbnail only"
#~ msgstr "仅缩略图"
#~ msgid "Application icon only"
#~ msgstr "仅应用程序图标"
#~ msgid "Thumbnail and application icon"
#~ msgstr "缩略图和应用程序图标"
#~ msgid "Present windows as"
#~ msgstr "窗口展现为"
#~ msgid "Activities Overview"
#~ msgstr "活动概览"
#~ msgid "Hello, world!"
#~ msgstr "Hello, world!"
#~ msgid "Alternative greeting text."
#~ msgstr "替代的祝福语。"
#~ msgid ""
#~ "If not empty, it contains the text that will be shown when clicking on "
#~ "the panel."
#~ msgstr "如果不为空,所包含的文本会在点击面板时显示。"
#~ msgid "Message"
#~ msgstr "消息"
#~ 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 its possible to customize the greeting message."
#~ msgstr ""
#~ "示例意在展示如何为 Shell 创建良好工作的扩展,本身功能有限。\n"
#~ "尽管如此,它还是具备定制祝福语的功能。"
#~ msgid "GNOME Shell Classic"
#~ msgstr "GNOME Shell 经典模式"

View File

@@ -7,17 +7,17 @@
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions gnome-3-0\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2020-04-17 16:03+0000\n"
"PO-Revision-Date: 2020-05-02 16:06+0800\n"
"Last-Translator: Cheng-Chia Tseng <pswo10680@gmail.com>\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/is"
"sues\n"
"POT-Creation-Date: 2019-09-17 08:27+0000\n"
"PO-Revision-Date: 2019-10-08 18:58+0800\n"
"Last-Translator: pan93412 <pan93412@gmail.com>\n"
"Language-Team: Chinese <zh-l10n@linux.org.tw>\n"
"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.3\n"
"X-Generator: Lokalize 19.08.1\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
@@ -48,39 +48,39 @@ msgstr ""
"字串的列表,每個都包含一個應用程式 id (桌面檔名稱),後面接著半形分號 \";\" 與"
"工作區號碼"
#: extensions/auto-move-windows/prefs.js:59
#: extensions/auto-move-windows/prefs.js:60
msgid "Application"
msgstr "應用程式"
#: extensions/auto-move-windows/prefs.js:70
#: extensions/auto-move-windows/prefs.js:133
#: extensions/auto-move-windows/prefs.js:71
#: extensions/auto-move-windows/prefs.js:134
msgid "Workspace"
msgstr "工作區"
#: extensions/auto-move-windows/prefs.js:88
#: extensions/auto-move-windows/prefs.js:89
msgid "Add Rule"
msgstr "加入規則"
#: extensions/auto-move-windows/prefs.js:110
#: extensions/auto-move-windows/prefs.js:111
msgid "Create new matching rule"
msgstr "建立新的比對規則"
#: extensions/auto-move-windows/prefs.js:116
#: extensions/auto-move-windows/prefs.js:117
msgid "Add"
msgstr "加入"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
#: extensions/drive-menu/extension.js:103
#: extensions/places-menu/placeDisplay.js:233
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "裝置「%s」退出失敗"
#: extensions/drive-menu/extension.js:128
#: extensions/drive-menu/extension.js:119
msgid "Removable devices"
msgstr "可移除式裝置"
#: extensions/drive-menu/extension.js:155
#: extensions/drive-menu/extension.js:146
msgid "Open Files"
msgstr "開啟檔案"
@@ -110,8 +110,8 @@ msgstr ""
"如果為真,在對映的縮圖頂端放置視窗說明標題,凌駕 Shell 將它放置在底部的預設"
"值。變更這個設定值需要重新啟動 Shell 來套用效果。"
#: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:93
#: extensions/places-menu/extension.js:80
#: extensions/places-menu/extension.js:84
msgid "Places"
msgstr "位置"
@@ -174,27 +174,27 @@ msgstr "取消最大化"
msgid "Maximize"
msgstr "最大化"
#: extensions/window-list/extension.js:429
#: extensions/window-list/extension.js:431
msgid "Minimize all"
msgstr "全部最小化"
#: extensions/window-list/extension.js:435
#: extensions/window-list/extension.js:437
msgid "Unminimize all"
msgstr "全部取消最小化"
#: extensions/window-list/extension.js:441
#: extensions/window-list/extension.js:443
msgid "Maximize all"
msgstr "全部最大化"
#: extensions/window-list/extension.js:449
#: extensions/window-list/extension.js:451
msgid "Unmaximize all"
msgstr "全部取消最大化"
#: extensions/window-list/extension.js:457
#: extensions/window-list/extension.js:459
msgid "Close all"
msgstr "全部關閉"
#: extensions/window-list/extension.js:737
#: extensions/window-list/extension.js:741
msgid "Window List"
msgstr "視窗列表"
@@ -206,15 +206,18 @@ msgstr "何時群組視窗"
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」。"
msgstr "決定在視窗列表中何時群組視窗。可能的數值有「never」、「auto」、「always」。"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:89
#: extensions/window-list/prefs.js:82
#| msgid "Show only windows in the current workspace"
msgid "Show windows from all workspaces"
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."
msgid "Whether to show windows from all workspaces or only the current one."
msgstr "是否顯示所有工作區,還是僅顯示目前工作區的視窗。"
@@ -244,31 +247,28 @@ msgstr "當空間受限時群組視窗"
msgid "Always group windows"
msgstr "永遠群組視窗"
#: extensions/window-list/prefs.js:82
#: extensions/window-list/prefs.js:75
msgid "Show on all monitors"
msgstr "顯示於所有螢幕"
#: extensions/window-list/workspaceIndicator.js:209
#: extensions/workspace-indicator/extension.js:215
#: extensions/window-list/workspaceIndicator.js:211
#: extensions/workspace-indicator/extension.js:216
msgid "Workspace Indicator"
msgstr "工作區指示器"
#: extensions/workspace-indicator/prefs.js:34
#: extensions/workspace-indicator/prefs.js:129
msgid "Workspace Names"
msgstr "工作區名稱"
#: extensions/workspace-indicator/prefs.js:67
#: extensions/workspace-indicator/prefs.js:149
msgid "Name"
msgstr "名稱"
#: extensions/workspace-indicator/prefs.js:189
#, javascript-format
msgid "Workspace %d"
msgstr "工作區 %d"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "新增工作區"
#~ msgid "Name"
#~ msgstr "名稱"
#~ msgid "Attach modal dialog to the parent window"
#~ msgstr "附加強制對話盒到上層視窗"