Compare commits

..

15 Commits

Author SHA1 Message Date
Florian Müllner fb66afbf71 Bump version to 3.38.2
Update NEWS.
2020-12-03 00:14:49 +01:00
Florian Müllner 365fa6abc9 Update sass submodule 2020-12-03 00:14:49 +01:00
Florian Müllner d7a824f35f workspace-indicator: Use overlap to determine preview visibility
In order to better reflect the actual workspace, show any preview
that is at least partially located on the monitor, not only those
that have the major part on that monitor.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/142>

(cherry picked from commit 50d3ee5703)
2020-12-03 00:09:21 +01:00
Florian Müllner 0d8e412220 window-list: Use overlap to determine preview visibility
In order to better reflect the actual workspace, show any preview
that is at least partially located on the monitor, not only those
that have the major part on that monitor.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/142>

(cherry picked from commit 08dfb78815)
2020-12-03 00:09:19 +01:00
Florian Müllner 991f6ef508 workspace-indicator: Account for monitor offset in window previews
Windows' frame rects are in screen coordinates, while the workspace
thumbnails are based on the monitor work area. Unless we account
for the difference, previews end up mispositioned in multi-monitor
setups.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/142>

(cherry picked from commit 6949a5d075)
2020-12-03 00:09:16 +01:00
Florian Müllner 37f03f5e2e window-list: Account for monitor offset in window previews
Windows' frame rects are in screen coordinates, while the workspace
thumbnails are based on the monitor work area. Unless we account
for the difference, previews end up mispositioned in multi-monitor
setups.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/142>

(cherry picked from commit 893d3b0473)
2020-12-03 00:09:12 +01:00
Florian Müllner b4a4ff0a06 workspace-indicator: Round calculated preview sizes
While not strictly necessary, there's no reason to differ from the
copy in the window-list extension ...

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/142>

(cherry picked from commit f5128e13f2)
2020-12-03 00:09:09 +01:00
Ray Strode de8876bd5e window-list: Stop monitoring drag operation if window list is destroyed
If a user is in the middle of a drag in the window list and the
window list associated with the drag gets destroyed, the drag
monitor gets leaked.

Later when the drag motion is processed, spew goes to the log:

clutter_actor_contains: assertion 'CLUTTER_IS_ACTOR (self)' failed

Examples of triggers for this bug:

- The monitor topology changes
- The screen gets locked during the drag

This commit fixes the spew and the leak by ensuring any pending
drag monitoring is disabled when the window lists are destroyed.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/145>

(cherry picked from commit 8318ea919f)
2020-12-03 00:08:57 +01:00
Thun Pin 5ad272e628 window-navigator: Adjust to 3.38 overview changes
gnome-shell's overview code changed significantly in 3.38,
adjust the extension to work without the separate overlay.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/259

(cherry picked from commit 737c897624)
2020-12-03 00:08:30 +01:00
Florian Müllner 3b22582752 auto-move-windows: Exclude sticky windows from empty-check
We modify gnome-shell's workspace tracker to only remove empty
workspaces from the end. However we currently don't take into
account that sticky windows appear on all workspaces, so those
are preventing any workspace from getting removed at the moment.

Exclude them when determining whether a workspace is empty to
get the expected behavior.

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

(cherry picked from commit 61cf679b8c)
2020-12-03 00:08:07 +01:00
Florian Müllner e734fcbd21 window-list: Adjust to overview changes
Window DND in the overview is now based on the metaWindow,
not the window actor (misnamed as "real window").

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/133
2020-11-19 04:54:07 +01:00
Florian Müllner 435879c121 workspace-indicator: Adjust to overview changes
Window DND in the overview is now based on the metaWindow,
not the window actor (misnamed as "real window").

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/133
2020-11-19 04:54:07 +01:00
Florian Müllner ed81650f55 window-list: Use custom layout manager for thumbnails
The current code positions window previews explicitly using a fixed
layout manager. For that it relies on a valid parent allocation,
which is error-prone and frequently results in warnings.

Address this by moving the positioning code into a custom layout
manager, and only update the visibility from the window preview.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/260
2020-10-21 13:44:44 +02:00
Florian Müllner 1276a880de workspace-indicator: Use custom layout manager for thumbnails
The current code positions window previews explicitly using a fixed
layout manager. For that it relies on a valid parent allocation,
which is error-prone and frequently results in warnings.

Address this by moving the positioning code into a custom layout
manager, and only update the visibility from the window preview.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/260
2020-10-21 13:44:44 +02:00
Sergio Costas 584016c291 window-list: Honor changes in skip-taskbar property
Although window-list checks the 'skip-taskbar' property when a
window is added to the desktop to decide wether it should be
shown in the bar or not, it doesn't honor that when the property
is changed after a window has already been added. Since the new
WaylandClient API allows to change this property for already
mapped windows, supporting this is a good idea.

This patch fixes this.

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


(cherry picked from commit b65f362f0d)
2020-10-08 21:50:07 +00:00
34 changed files with 810 additions and 912 deletions
+18 -71
View File
@@ -1,86 +1,33 @@
include: image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v2
- remote: "https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/6f86b8bcb0cd5168c32779c4fea9a893c4a0c046/templates/ci-fairy.yml"
image: registry.gitlab.gnome.org/gnome/gnome-shell/fedora/33:2020-11-17.0
stages: stages:
- pre_review
- review - review
- build - build
default:
# Cancel jobs if newer commits are pushed to the branch
interruptible: true
# Auto-retry jobs in case of infra failures
retry:
max: 1
when:
- 'runner_system_failure'
- 'stuck_or_timeout_failure'
- 'scheduler_failure'
- 'api_failure'
variables: variables:
LINT_LOG: "eslint-report.xml" LINT_LOG: "eslint-report.txt"
JS_LOG: "js-report.txt" JS_LOG: "js-report.txt"
workflow: .only_default: &only_default
rules: only:
- if: '$CI_MERGE_REQUEST_IID' - branches
- if: '$CI_COMMIT_TAG' - tags
- if: '$CI_COMMIT_BRANCH' - merge_requests
.pipeline_guard: &pipeline_guard
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- if: '$CI_COMMIT_TAG'
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
- if: '$CI_COMMIT_BRANCH =~ /^gnome-[0-9-]+$/'
- when: 'manual'
check_commit_log: check_commit_log:
extends: image: registry.gitlab.gnome.org/gnome/gjs:fedora.static-analysis
- .fdo.ci-fairy stage: review
stage: pre_review
script: script:
- if [[ x"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "x" ]] ; - ./.gitlab-ci/check-commit-log.sh
then only:
ci-fairy check-commits --junit-xml=commit-message-junit-report.xml ; - merge_requests
else
echo "Not a merge request" ;
fi
<<: *pipeline_guard
artifacts:
expire_in: 1 week
paths:
- commit-message-junit-report.xml
reports:
junit: commit-message-junit-report.xml
check-merge-request:
extends:
- .fdo.ci-fairy
stage: pre_review
script:
- if [[ x"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "x" ]] ;
then
ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request-report.xml ;
else
echo "Not a merge request" ;
fi
<<: *pipeline_guard
artifacts:
expire_in: 1 week
paths:
- check-merge-request-report.xml
reports:
junit: check-merge-request-report.xml
js_check: js_check:
stage: review stage: review
script: script:
- find extensions -name '*.js' -exec js78 -c '{}' ';' 2>&1 | tee $JS_LOG - find extensions -name '*.js' -exec js68 -c -s '{}' ';' 2>&1 | tee $JS_LOG
- (! grep -q . $JS_LOG) - (! grep -q . $JS_LOG)
<<: *only_default
artifacts: artifacts:
paths: paths:
- ${JS_LOG} - ${JS_LOG}
@@ -89,18 +36,18 @@ js_check:
eslint: eslint:
stage: review stage: review
script: script:
- eslint -o $LINT_LOG -f junit extensions - eslint -o $LINT_LOG extensions --no-color || { cat $LINT_LOG; false; }
<<: *only_default
artifacts: artifacts:
paths: paths:
- ${LINT_LOG} - ${LINT_LOG}
reports: when: on_failure
junit: ${LINT_LOG}
build-bundles: build-bundles:
stage: build stage: build
needs: ["check_commit_log"]
script: script:
- ./export-zips.sh - ./export-zips.sh
<<: *only_default
artifacts: artifacts:
name: 'Extension bundles' name: 'Extension bundles'
expose_as: 'Get Extension bundles here' expose_as: 'Get Extension bundles here'
+31
View File
@@ -0,0 +1,31 @@
#!/usr/bin/env bash
if [ -z "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then
echo Cannot review non-merge request
exit 1
fi
git fetch $CI_MERGE_REQUEST_PROJECT_URL.git $CI_MERGE_REQUEST_TARGET_BRANCH_NAME
branch_point=$(git merge-base HEAD FETCH_HEAD)
commits=$(git log --format='format:%H' $branch_point..$CI_COMMIT_SHA)
if [ -z "$commits" ]; then
echo Commit range empty
exit 1
fi
function commit_message_has_url() {
commit=$1
commit_message=$(git show -s --format='format:%b' $commit)
echo "$commit_message" | grep -qe "\($CI_MERGE_REQUEST_PROJECT_URL/\(-/\)\?\(issues\|merge_requests\)/[0-9]\+\|https://bugzilla.gnome.org/show_bug.cgi?id=[0-9]\+\)"
return $?
}
for commit in $commits; do
if ! commit_message_has_url $commit; then
echo "Missing merge request or issue URL on commit $(echo $commit | cut -c -8)"
exit 1
fi
done
-13
View File
@@ -1,13 +0,0 @@
patterns:
deny:
- regex: '^$CI_MERGE_REQUEST_PROJECT_URL/(-/)?merge_requests/$CI_MERGE_REQUEST_IID$'
message: Commit message must not contain a link to its own merge request
- regex: '^extensions/'
message: Commit message subject should not be prefixed with 'extensions/', use the extension name instead
where: subject
- regex: '^[^:]+: [a-z]'
message: "Commit message subject should be properly Capitalized. E.g. 'window: Marginalize extradicity'"
where: subject
- regex: '^\S*\.js:'
message: Commit message subject prefix should not include .js
where: subject
+5 -35
View File
@@ -1,45 +1,15 @@
40.beta 3.38.2
======= ======
* Add tooltips to workspace thumbnails [Florian; !155]
* Drop arrows from top bar menus [Florian; !156]
* drive-menu: Mark mounts that can be unmounted as removable [Michael; !152]
* Remove horizontal-workspaces extension [Florian; !158]
* Adjust to shell overview changes [Florian; !159, !160]
* Fix crashes [Daniel; !157]
* Misc. bug fixes and cleanups [Florian; !154, !161]
Contributors:
Michael Lawton, Florian Müllner, Daniel van Vugt
Translators:
Аляксей [be], A S Alam [pa]
40.alpha.1
==========
* Don't depend on sassc when building from tarball [Florian; !150]
* Port extensions preferences to GTK4 [Florian; !148]
* Misc. bug fixes and cleanups [Florian, Jonas; !149, !151, !153]
Contributors:
Jonas Dreßler, Florian Müllner
40.alpha
========
* window-list: Honor changes in skip-taskbar property [Sergio; !130] * window-list: Honor changes in skip-taskbar property [Sergio; !130]
* window-list, workspace-indicator: Adjust to 3.38 changes [Florian; !133]
* window-list, workspace-indicator: Improve previews in workspace thumbs * window-list, workspace-indicator: Improve previews in workspace thumbs
[Florian; #260, !142] [Florian; #260, !142]
* window-list, workspace-indicator: Adjust to 3.38 changes [Florian; !133]
* auto-move: Improve behavior on multi-monitor setups [Florian; !135] * auto-move: Improve behavior on multi-monitor setups [Florian; !135]
* windowNavigator: Adjust to 3.38 changes [Thun; #259] * windowNavigator: Adjust to 3.38 changes [Thun; #259]
* Misc. bug fixes and cleanups [Florian, Jonas Å, Jordan, Ray; !131, !136, * Misc. bug fixes [Ray; !145]
!137, !140, !141, !144, !146, !145]
Contributors: Contributors:
Sergio Costas, Florian Müllner, Jordan Petridis, Thun Pin, Ray Strode, Sergio Costas, Florian Müllner, Thun Pin, Ray Strode
Jonas Ådahl
Translators:
Fabio Tomat [fur], Jordi Mas [ca]
3.38.1 3.38.1
====== ======
+1 -12
View File
@@ -33,18 +33,6 @@ $variant: 'light';
font-weight: normal; font-weight: normal;
color: $fg_color; color: $fg_color;
text-shadow: none; text-shadow: none;
transition-duration: 0ms;
border: 0;
border-radius: 0px;
&.clock-display {
.clock {
transition-duration: 0ms;
border: 0;
border-radius: 0px;
}
}
&:hover { &:hover {
color: lighten($fg_color,10%); color: lighten($fg_color,10%);
text-shadow: none; text-shadow: none;
@@ -81,6 +69,7 @@ $variant: 'light';
border-bottom: none; border-bottom: none;
.panel-button { color: $osd_fg_color; } .panel-button { color: $osd_fg_color; }
} }
.popup-menu-arrow { width: 0; height: 0; } // shell's display: none;
} }
#appMenu { #appMenu {
+10 -50
View File
@@ -28,42 +28,7 @@ theme_sources = files(
'gnome-shell-sass/_colors.scss', 'gnome-shell-sass/_colors.scss',
'gnome-shell-sass/_common.scss', 'gnome-shell-sass/_common.scss',
'gnome-shell-sass/_drawing.scss', 'gnome-shell-sass/_drawing.scss',
'gnome-shell-sass/_high-contrast-colors.scss', 'gnome-shell-sass/_high-contrast-colors.scss'
'gnome-shell-sass/_widgets.scss',
'gnome-shell-sass/widgets/_a11y.scss',
'gnome-shell-sass/widgets/_app-grid.scss',
'gnome-shell-sass/widgets/_base.scss',
'gnome-shell-sass/widgets/_buttons.scss',
'gnome-shell-sass/widgets/_calendar.scss',
'gnome-shell-sass/widgets/_check-box.scss',
'gnome-shell-sass/widgets/_corner-ripple.scss',
'gnome-shell-sass/widgets/_dash.scss',
'gnome-shell-sass/widgets/_dialogs.scss',
'gnome-shell-sass/widgets/_entries.scss',
'gnome-shell-sass/widgets/_hotplug.scss',
'gnome-shell-sass/widgets/_ibus-popup.scss',
'gnome-shell-sass/widgets/_keyboard.scss',
'gnome-shell-sass/widgets/_login-dialog.scss',
'gnome-shell-sass/widgets/_looking-glass.scss',
'gnome-shell-sass/widgets/_message-list.scss',
'gnome-shell-sass/widgets/_misc.scss',
'gnome-shell-sass/widgets/_network-dialog.scss',
'gnome-shell-sass/widgets/_notifications.scss',
'gnome-shell-sass/widgets/_osd.scss',
'gnome-shell-sass/widgets/_overview.scss',
'gnome-shell-sass/widgets/_panel.scss',
'gnome-shell-sass/widgets/_popovers.scss',
'gnome-shell-sass/widgets/_screen-shield.scss',
'gnome-shell-sass/widgets/_scrollbars.scss',
'gnome-shell-sass/widgets/_search-entry.scss',
'gnome-shell-sass/widgets/_search-results.scss',
'gnome-shell-sass/widgets/_slider.scss',
'gnome-shell-sass/widgets/_switcher-popup.scss',
'gnome-shell-sass/widgets/_switches.scss',
'gnome-shell-sass/widgets/_tiled-previews.scss',
'gnome-shell-sass/widgets/_window-picker.scss',
'gnome-shell-sass/widgets/_workspace-switcher.scss',
'gnome-shell-sass/widgets/_workspace-thumbnails.scss'
) )
theme_data = [ theme_data = [
@@ -76,20 +41,15 @@ theme_data = [
'gnome-classic-high-contrast.css' 'gnome-classic-high-contrast.css'
] ]
stylesheet = 'gnome-classic.css' style = 'gnome-classic'
if fs.exists(stylesheet) custom_target(style + '.css',
install_data(stylesheet, install_dir: themedir) input: style + '.scss',
else output: style + '.css',
sassc = find_program('sassc', required: true) depend_files: theme_sources,
custom_target(stylesheet, command: [sassc, '-a', '@INPUT@', '@OUTPUT@'],
input: fs.replace_suffix(stylesheet, '.scss'), install: true,
output: stylesheet, install_dir: themedir
depend_files: theme_sources, )
command: [sassc, '-a', '@INPUT@', '@OUTPUT@'],
install: true,
install_dir: themedir
)
endif
install_data(theme_data, install_dir: themedir) install_data(theme_data, install_dir: themedir)
+5 -1
View File
@@ -363,13 +363,17 @@ class ApplicationsButton extends PanelMenu.Button {
// role ATK_ROLE_MENU like other elements of the panel. // role ATK_ROLE_MENU like other elements of the panel.
this.accessible_role = Atk.Role.LABEL; this.accessible_role = Atk.Role.LABEL;
let hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
this._label = new St.Label({ this._label = new St.Label({
text: _('Applications'), text: _('Applications'),
y_expand: true, y_expand: true,
y_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER,
}); });
hbox.add_child(this._label);
hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
this.add_actor(this._label); this.add_actor(hbox);
this.name = 'panelApplications'; this.name = 'panelApplications';
this.label_actor = this._label; this.label_actor = this._label;
+1 -1
View File
@@ -72,7 +72,7 @@ class WindowMover {
} }
_moveWindow(window, workspaceNum) { _moveWindow(window, workspaceNum) {
if (window.skip_taskbar || window.is_on_all_workspaces()) if (window.skip_taskbar)
return; return;
// ensure we have the required number of workspaces // ensure we have the required number of workspaces
+52 -33
View File
@@ -29,9 +29,9 @@ class AutoMoveSettingsWidget extends Gtk.ScrolledWindow {
margin_start: 36, margin_start: 36,
margin_end: 36, margin_end: 36,
}); });
this.set_child(box); this.add(box);
box.append(new Gtk.Label({ box.add(new Gtk.Label({
label: '<b>%s</b>'.format(_('Workspace Rules')), label: '<b>%s</b>'.format(_('Workspace Rules')),
use_markup: true, use_markup: true,
halign: Gtk.Align.START, halign: Gtk.Align.START,
@@ -40,9 +40,9 @@ class AutoMoveSettingsWidget extends Gtk.ScrolledWindow {
this._list = new Gtk.ListBox({ this._list = new Gtk.ListBox({
selection_mode: Gtk.SelectionMode.NONE, selection_mode: Gtk.SelectionMode.NONE,
valign: Gtk.Align.START, valign: Gtk.Align.START,
show_separators: true,
}); });
box.append(this._list); this._list.set_header_func(this._updateHeader.bind(this));
box.add(this._list);
const context = this._list.get_style_context(); const context = this._list.get_style_context();
const cssProvider = new Gtk.CssProvider(); const cssProvider = new Gtk.CssProvider();
@@ -53,7 +53,7 @@ class AutoMoveSettingsWidget extends Gtk.ScrolledWindow {
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);
context.add_class('frame'); context.add_class('frame');
this._list.append(new NewRuleRow()); this._list.add(new NewRuleRow());
this._actionGroup = new Gio.SimpleActionGroup(); this._actionGroup = new Gio.SimpleActionGroup();
this._list.insert_action_group('rules', this._actionGroup); this._list.insert_action_group('rules', this._actionGroup);
@@ -84,10 +84,12 @@ class AutoMoveSettingsWidget extends Gtk.ScrolledWindow {
this._sync(); this._sync();
this.connect('destroy', () => this._settings.run_dispose()); this.connect('destroy', () => this._settings.run_dispose());
this.show_all();
} }
_onAddActivated() { _onAddActivated() {
const dialog = new NewRuleDialog(this.get_root()); const dialog = new NewRuleDialog(this.get_toplevel());
dialog.connect('response', (dlg, id) => { dialog.connect('response', (dlg, id) => {
const appInfo = id === Gtk.ResponseType.OK const appInfo = id === Gtk.ResponseType.OK
? dialog.get_widget().get_app_info() : null; ? dialog.get_widget().get_app_info() : null;
@@ -99,7 +101,6 @@ class AutoMoveSettingsWidget extends Gtk.ScrolledWindow {
} }
dialog.destroy(); dialog.destroy();
}); });
dialog.show();
} }
_onRemoveActivated(action, param) { _onRemoveActivated(action, param) {
@@ -112,7 +113,7 @@ class AutoMoveSettingsWidget extends Gtk.ScrolledWindow {
} }
_getRuleRows() { _getRuleRows() {
return [...this._list].filter(row => !!row.id); return this._list.get_children().filter(row => !!row.id);
} }
_sync() { _sync() {
@@ -138,11 +139,17 @@ class AutoMoveSettingsWidget extends Gtk.ScrolledWindow {
const removed = oldRules.filter( const removed = oldRules.filter(
({ id }) => !newRules.find(r => r.id === id)); ({ id }) => !newRules.find(r => r.id === id));
removed.forEach(r => this._list.remove(r)); removed.forEach(r => r.destroy());
this._settings.unblock_signal_handler(this._changedId); this._settings.unblock_signal_handler(this._changedId);
this._updateAction.enabled = true; this._updateAction.enabled = true;
} }
_updateHeader(row, before) {
if (!before || row.get_header())
return;
row.set_header(new Gtk.Separator());
}
}); });
const RuleRow = GObject.registerClass({ const RuleRow = GObject.registerClass({
@@ -158,6 +165,12 @@ const RuleRow = GObject.registerClass({
}, },
}, class RuleRow extends Gtk.ListBoxRow { }, class RuleRow extends Gtk.ListBoxRow {
_init(appInfo, value) { _init(appInfo, value) {
super._init({
activatable: false,
value,
});
this._appInfo = appInfo;
const box = new Gtk.Box({ const box = new Gtk.Box({
spacing: 6, spacing: 6,
margin_top: 6, margin_top: 6,
@@ -166,19 +179,12 @@ const RuleRow = GObject.registerClass({
margin_end: 6, margin_end: 6,
}); });
super._init({
activatable: false,
value,
child: box,
});
this._appInfo = appInfo;
const icon = new Gtk.Image({ const icon = new Gtk.Image({
gicon: appInfo.get_icon(), gicon: appInfo.get_icon(),
pixel_size: 32, pixel_size: 32,
}); });
icon.get_style_context().add_class('icon-dropshadow'); icon.get_style_context().add_class('icon-dropshadow');
box.append(icon); box.add(icon);
const label = new Gtk.Label({ const label = new Gtk.Label({
label: appInfo.get_display_name(), label: appInfo.get_display_name(),
@@ -187,7 +193,7 @@ const RuleRow = GObject.registerClass({
max_width_chars: 20, max_width_chars: 20,
ellipsize: Pango.EllipsizeMode.END, ellipsize: Pango.EllipsizeMode.END,
}); });
box.append(label); box.add(label);
const spinButton = new Gtk.SpinButton({ const spinButton = new Gtk.SpinButton({
adjustment: new Gtk.Adjustment({ adjustment: new Gtk.Adjustment({
@@ -201,17 +207,26 @@ const RuleRow = GObject.registerClass({
this.bind_property('value', this.bind_property('value',
spinButton, 'value', spinButton, 'value',
GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL); GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL);
box.append(spinButton); box.add(spinButton);
const button = new Gtk.Button({ const button = new Gtk.Button({
action_name: 'rules.remove', action_name: 'rules.remove',
action_target: new GLib.Variant('s', this.id), action_target: new GLib.Variant('s', this.id),
icon_name: 'edit-delete-symbolic', image: new Gtk.Image({
icon_name: 'edit-delete-symbolic',
pixel_size: 16,
}),
}); });
box.append(button); box.add(button);
this.connect('notify::value', this.add(box);
() => this.activate_action('rules.update', null));
this.connect('notify::value', () => {
const actionGroup = this.get_action_group('rules');
actionGroup.activate_action('update', null);
});
this.show_all();
} }
get id() { get id() {
@@ -224,17 +239,19 @@ class NewRuleRow extends Gtk.ListBoxRow {
_init() { _init() {
super._init({ super._init({
action_name: 'rules.add', action_name: 'rules.add',
child: new Gtk.Image({
icon_name: 'list-add-symbolic',
pixel_size: 16,
margin_top: 12,
margin_bottom: 12,
margin_start: 12,
margin_end: 12,
}),
}); });
this.update_property( this.get_accessible().set_name(_('Add Rule'));
[Gtk.AccessibleProperty.LABEL], [_('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();
} }
}); });
@@ -256,6 +273,8 @@ class NewRuleDialog extends Gtk.AppChooserDialog {
this.get_widget().connect('application-selected', this.get_widget().connect('application-selected',
this._updateSensitivity.bind(this)); this._updateSensitivity.bind(this));
this._updateSensitivity(); this._updateSensitivity();
this.show();
} }
_updateSensitivity() { _updateSensitivity() {
+4 -1
View File
@@ -127,12 +127,15 @@ class DriveMenu extends PanelMenu.Button {
_init() { _init() {
super._init(0.0, _('Removable devices')); super._init(0.0, _('Removable devices'));
let hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
let icon = new St.Icon({ let icon = new St.Icon({
icon_name: 'media-eject-symbolic', icon_name: 'media-eject-symbolic',
style_class: 'system-status-icon', style_class: 'system-status-icon',
}); });
this.add_child(icon); hbox.add_child(icon);
hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
this.add_child(hbox);
this._monitor = Gio.VolumeMonitor.get(); this._monitor = Gio.VolumeMonitor.get();
this._addedId = this._monitor.connect('mount-added', (monitor, mount) => { this._addedId = this._monitor.connect('mount-added', (monitor, mount) => {
@@ -0,0 +1,38 @@
/* exported init */
const { Meta } = imports.gi;
const { ThumbnailsBox } = imports.ui.workspaceThumbnail;
class Extension {
constructor() {
this._origUpdateSwitcherVisibility =
ThumbnailsBox.prototype._updateSwitcherVisibility;
}
enable() {
global.workspace_manager.override_workspace_layout(
Meta.DisplayCorner.TOPLEFT,
false,
1,
-1);
ThumbnailsBox.prototype._updateSwitcherVisibility = function () {
this.hide();
};
}
disable() {
global.workspace_manager.override_workspace_layout(
Meta.DisplayCorner.TOPLEFT,
false,
-1,
1);
ThumbnailsBox.prototype._updateSwitcherVisibility =
this._origUpdateSwitcherVisibility;
}
}
function init() {
return new Extension();
}
@@ -0,0 +1,5 @@
extension_data += configure_file(
input: metadata_name + '.in',
output: metadata_name,
configuration: metadata_conf
)
@@ -0,0 +1,10 @@
{
"extension-id": "@extension_id@",
"uuid": "@uuid@",
"settings-schema": "@gschemaname@",
"gettext-domain": "@gettext_domain@",
"name": "Horizontal workspaces",
"description": "Use a horizontal workspace layout",
"shell-version": [ "@shell_current@" ],
"url": "@url@"
}
@@ -0,0 +1 @@
/* This extensions requires no special styling */
@@ -103,6 +103,7 @@ class NaturalLayoutStrategy extends Workspace.LayoutStrategy {
direction++; direction++;
if (direction === 4) if (direction === 4)
direction = 0; direction = 0;
} }
let loopCounter = 0; let loopCounter = 0;
+4 -1
View File
@@ -88,12 +88,15 @@ class PlacesMenu extends PanelMenu.Button {
_init() { _init() {
super._init(0.0, _('Places')); super._init(0.0, _('Places'));
let hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
let label = new St.Label({ let label = new St.Label({
text: _('Places'), text: _('Places'),
y_expand: true, y_expand: true,
y_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER,
}); });
this.add_actor(label); hbox.add_child(label);
hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
this.add_actor(hbox);
this.placesManager = new PlaceDisplay.PlacesManager(); this.placesManager = new PlaceDisplay.PlacesManager();
+2 -1
View File
@@ -194,7 +194,7 @@ class PlaceDeviceInfo extends PlaceInfo {
} }
isRemovable() { isRemovable() {
return this._mount.can_eject() || this._mount.can_unmount(); return this._mount.can_eject();
} }
eject() { eject() {
@@ -486,6 +486,7 @@ var PlacesManager = class {
} }
_reloadBookmarks() { _reloadBookmarks() {
this._bookmarks = []; this._bookmarks = [];
let content = Shell.get_file_contents_utf8_sync(this._bookmarksFile.get_path()); let content = Shell.get_file_contents_utf8_sync(this._bookmarksFile.get_path());
+39 -32
View File
@@ -26,21 +26,18 @@ class UserThemePrefsWidget extends Gtk.ScrolledWindow {
}); });
const box = new Gtk.Box(); const box = new Gtk.Box();
this.set_child(box); this.add(box);
this._list = new Gtk.ListBox({ this._list = new Gtk.ListBox({
selection_mode: Gtk.SelectionMode.NONE, selection_mode: Gtk.SelectionMode.NONE,
show_separators: true,
halign: Gtk.Align.CENTER, halign: Gtk.Align.CENTER,
valign: Gtk.Align.START, valign: Gtk.Align.START,
hexpand: true, hexpand: true,
margin_start: 60, margin: 60,
margin_end: 60,
margin_top: 60,
margin_bottom: 60,
}); });
this._list.get_style_context().add_class('frame'); this._list.get_style_context().add_class('frame');
box.append(this._list); this._list.set_header_func(this._updateHeader.bind(this));
box.add(this._list);
this._actionGroup = new Gio.SimpleActionGroup(); this._actionGroup = new Gio.SimpleActionGroup();
this._list.insert_action_group('theme', this._actionGroup); this._list.insert_action_group('theme', this._actionGroup);
@@ -93,10 +90,11 @@ class UserThemePrefsWidget extends Gtk.ScrolledWindow {
} }
_addTheme(name) { _addTheme(name) {
const row = new ThemeRow(name, this._settings); const row = new ThemeRow(name);
this._rows.set(name, row); this._rows.set(name, row);
this._list.append(row); this._list.add(row);
row.show_all();
} }
async _enumerateDir(dir) { async _enumerateDir(dir) {
@@ -123,28 +121,31 @@ class UserThemePrefsWidget extends Gtk.ScrolledWindow {
return fileInfos.map(info => info.get_name()); 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( const ThemeRow = GObject.registerClass(
class ThemeRow extends Gtk.ListBoxRow { class ThemeRow extends Gtk.ListBoxRow {
_init(name, settings) { _init(name) {
this._name = name; this._name = new GLib.Variant('s', name);
this._settings = settings;
super._init({
action_name: 'theme.name',
action_target: this._name,
});
const box = new Gtk.Box({ const box = new Gtk.Box({
spacing: 12, spacing: 12,
margin_start: 12, margin: 12,
margin_end: 12,
margin_top: 12,
margin_bottom: 12,
});
super._init({
action_name: 'theme.name',
action_target: new GLib.Variant('s', name),
child: box,
}); });
this.add(box);
box.append(new Gtk.Label({ box.add(new Gtk.Label({
label: name || 'Default', label: name || 'Default',
hexpand: true, hexpand: true,
xalign: 0, xalign: 0,
@@ -156,21 +157,24 @@ class ThemeRow extends Gtk.ListBoxRow {
icon_name: 'emblem-ok-symbolic', icon_name: 'emblem-ok-symbolic',
pixel_size: 16, pixel_size: 16,
}); });
box.append(this._checkmark); box.add(this._checkmark);
const id = this._settings.connect('changed::name', box.show_all();
this._syncCheckmark.bind(this));
this._syncCheckmark();
this.connect('destroy', () => { const id = this.connect('parent-set', () => {
this._settings.disconnect(id); this.disconnect(id);
this._settings = null;
const actionGroup = this.get_action_group('theme');
actionGroup.connect('action-state-changed::name',
this._syncCheckmark.bind(this));
this._syncCheckmark();
}); });
} }
_syncCheckmark() { _syncCheckmark() {
const visible = this._name === this._settings.get_string('name'); const actionGroup = this.get_action_group('theme');
this._checkmark.opacity = visible ? 1. : 0; const state = actionGroup.get_action_state('name');
this._checkmark.opacity = this._name.equal(state);
} }
}); });
@@ -178,5 +182,8 @@ function init() {
} }
function buildPrefsWidget() { function buildPrefsWidget() {
return new UserThemePrefsWidget(); let widget = new UserThemePrefsWidget();
widget.show_all();
return widget;
} }
+19 -15
View File
@@ -612,6 +612,7 @@ class AppButton extends BaseButton {
this._contextMenuManager.addMenu(this._appContextMenu); this._contextMenuManager.addMenu(this._appContextMenu);
this.label_actor = this._multiWindowTitle.label_actor; this.label_actor = this._multiWindowTitle.label_actor;
} }
} }
_onClicked(actor, button) { _onClicked(actor, button) {
@@ -744,20 +745,21 @@ class WindowList extends St.Widget {
this._appStateChangedId = this._appSystem.connect( this._appStateChangedId = this._appSystem.connect(
'app-state-changed', this._onAppStateChanged.bind(this)); 'app-state-changed', this._onAppStateChanged.bind(this));
// Hack: OSK gesture is tied to visibility, piggy-back on that this._keyboardVisiblechangedId = Main.layoutManager.connect(
this._keyboardVisiblechangedId = 'keyboard-visible-changed',
Main.keyboard._bottomDragAction.connect('notify::enabled', (o, state) => {
action => { Main.layoutManager.keyboardBox.visible = state;
const visible = !action.enabled; let { keyboardBox } = Main.layoutManager;
if (visible) { keyboardBox.visible = state;
Main.uiGroup.set_child_above_sibling( if (state) {
this, Main.layoutManager.keyboardBox); Main.uiGroup.set_child_above_sibling(
} else { this, keyboardBox);
Main.uiGroup.set_child_above_sibling( } else {
this, Main.layoutManager.panelBox); Main.uiGroup.set_child_above_sibling(
} this, Main.layoutManager.panelBox);
this._updateKeyboardAnchor(); }
}); this._updateKeyboardAnchor();
});
let workspaceManager = global.workspace_manager; let workspaceManager = global.workspace_manager;
@@ -1075,9 +1077,11 @@ class WindowList extends St.Widget {
this._appSystem.disconnect(this._appStateChangedId); this._appSystem.disconnect(this._appStateChangedId);
this._appStateChangedId = 0; this._appStateChangedId = 0;
Main.keyboard._bottomDragAction.disconnect(this._keyboardVisiblechangedId); Main.layoutManager.disconnect(this._keyboardVisiblechangedId);
this._keyboardVisiblechangedId = 0; this._keyboardVisiblechangedId = 0;
Main.layoutManager.hideKeyboard();
this._disconnectWorkspaceSignals(); this._disconnectWorkspaceSignals();
global.workspace_manager.disconnect(this._nWorkspacesChangedId); global.workspace_manager.disconnect(this._nWorkspacesChangedId);
this._nWorkspacesChangedId = 0; this._nWorkspacesChangedId = 0;
+8 -6
View File
@@ -27,7 +27,7 @@ class WindowListPrefsWidget extends Gtk.Box {
}); });
let groupingLabel = '<b>%s</b>'.format(_('Window Grouping')); let groupingLabel = '<b>%s</b>'.format(_('Window Grouping'));
this.append(new Gtk.Label({ this.add(new Gtk.Label({
label: groupingLabel, use_markup: true, label: groupingLabel, use_markup: true,
halign: Gtk.Align.START, halign: Gtk.Align.START,
})); }));
@@ -37,7 +37,7 @@ class WindowListPrefsWidget extends Gtk.Box {
spacing: 12, spacing: 12,
margin_bottom: 12, margin_bottom: 12,
}); });
this.append(box); this.add(box);
const context = box.get_style_context(); const context = box.get_style_context();
const cssProvider = new Gtk.CssProvider(); const cssProvider = new Gtk.CssProvider();
@@ -70,13 +70,13 @@ class WindowListPrefsWidget extends Gtk.Box {
continue; continue;
} }
radio = new Gtk.CheckButton({ radio = new Gtk.RadioButton({
active: !i, active: !i,
label, label,
group: radio, group: radio,
margin_end: 12, margin_end: 12,
}); });
box.append(radio); box.add(radio);
if (currentMode === mode) if (currentMode === mode)
currentRadio = radio; currentRadio = radio;
@@ -94,13 +94,15 @@ class WindowListPrefsWidget extends Gtk.Box {
label: _('Show on all monitors'), label: _('Show on all monitors'),
}); });
this._settings.bind('show-on-all-monitors', check, 'active', Gio.SettingsBindFlags.DEFAULT); this._settings.bind('show-on-all-monitors', check, 'active', Gio.SettingsBindFlags.DEFAULT);
this.append(check); this.add(check);
check = new Gtk.CheckButton({ check = new Gtk.CheckButton({
label: _('Show windows from all workspaces'), label: _('Show windows from all workspaces'),
}); });
this._settings.bind('display-all-workspaces', check, 'active', Gio.SettingsBindFlags.DEFAULT); this._settings.bind('display-all-workspaces', check, 'active', Gio.SettingsBindFlags.DEFAULT);
this.append(check); this.add(check);
this.show_all();
} }
}); });
+7
View File
@@ -1,3 +1,10 @@
.bottom-panel {
/* .window-button-icon height +
.window-button vertical padding +
.window-button > StWidget vertical padding) */
height: 2.25em;
}
.window-list { .window-list {
spacing: 2px; spacing: 2px;
font-size: 10pt; font-size: 10pt;
+81 -119
View File
@@ -1,24 +1,16 @@
/* exported WindowPicker, WindowPickerToggle */ /* exported WindowPicker, WindowPickerToggle */
const { Clutter, GObject, Shell, St } = imports.gi; const { Clutter, GLib, GObject, Meta, Shell, St } = imports.gi;
const Layout = imports.ui.layout; const Layout = imports.ui.layout;
const Main = imports.ui.main; const Main = imports.ui.main;
const Overview = imports.ui.overview;
const { WorkspacesDisplay } = imports.ui.workspacesView; const { WorkspacesDisplay } = imports.ui.workspacesView;
const Workspace = imports.ui.workspace;
const { VIGNETTE_BRIGHTNESS } = imports.ui.lightbox;
const {
SIDE_CONTROLS_ANIMATION_TIME,
OverviewAdjustment,
ControlsState,
} = imports.ui.overviewControls;
let MyWorkspacesDisplay = GObject.registerClass( let MyWorkspacesDisplay = GObject.registerClass(
class MyWorkspacesDisplay extends WorkspacesDisplay { class MyWorkspacesDisplay extends WorkspacesDisplay {
_init(controls, overviewAdjustment) { _init() {
let workspaceManager = global.workspace_manager; let workspaceManager = global.workspace_manager;
this._overviewAdjustment = overviewAdjustment;
this._workspaceAdjustment = new St.Adjustment({ this._workspaceAdjustment = new St.Adjustment({
value: workspaceManager.get_active_workspace_index(), value: workspaceManager.get_active_workspace_index(),
lower: 0, lower: 0,
@@ -32,7 +24,7 @@ class MyWorkspacesDisplay extends WorkspacesDisplay {
workspaceManager.connect('notify::n-workspaces', workspaceManager.connect('notify::n-workspaces',
this._updateAdjustment.bind(this)); this._updateAdjustment.bind(this));
super._init(controls, this._workspaceAdjustment, this._overviewAdjustment); super._init(this._workspaceAdjustment);
this._workspaceAdjustment.actor = this; this._workspaceAdjustment.actor = this;
@@ -41,15 +33,19 @@ class MyWorkspacesDisplay extends WorkspacesDisplay {
primary: true, primary: true,
work_area: true, work_area: true,
})); }));
this._workareasChangedId = global.display.connect('workareas-changed',
this._onWorkAreasChanged.bind(this));
this._onWorkAreasChanged();
} }
prepareToEnterOverview(...args) { animateToOverview(...args) {
if (!this._scrollEventId) { if (!this._scrollEventId) {
this._scrollEventId = Main.windowPicker.connect('scroll-event', this._scrollEventId = Main.windowPicker.connect('scroll-event',
this._onScrollEvent.bind(this)); this._onScrollEvent.bind(this));
} }
super.prepareToEnterOverview(...args); super.animateToOverview(...args);
} }
vfunc_hide(...args) { vfunc_hide(...args) {
@@ -60,6 +56,13 @@ class MyWorkspacesDisplay extends WorkspacesDisplay {
super.vfunc_hide(...args); super.vfunc_hide(...args);
} }
_onWorkAreasChanged() {
let { primaryIndex } = Main.layoutManager;
this._actualGeometry =
Main.layoutManager.getWorkAreaForMonitor(primaryIndex);
this._syncWorkspacesActualGeometry();
}
_updateAdjustment() { _updateAdjustment() {
let workspaceManager = global.workspace_manager; let workspaceManager = global.workspace_manager;
this._workspaceAdjustment.set({ this._workspaceAdjustment.set({
@@ -68,7 +71,20 @@ class MyWorkspacesDisplay extends WorkspacesDisplay {
}); });
} }
_updateWorkspacesViews() {
super._updateWorkspacesViews();
this._workspacesViews.forEach(v => {
Main.layoutManager.overviewGroup.remove_actor(v);
Main.windowPicker.add_actor(v);
});
}
_onDestroy() { _onDestroy() {
if (this._workareasChangedId)
global.display.disconnect(this._workareasChangedId);
this._workareasChangedId = 0;
if (this._nWorkspacesChangedId) if (this._nWorkspacesChangedId)
global.workspace_manager.disconnect(this._nWorkspacesChangedId); global.workspace_manager.disconnect(this._nWorkspacesChangedId);
this._nWorkspacesChangedId = 0; this._nWorkspacesChangedId = 0;
@@ -77,69 +93,6 @@ class MyWorkspacesDisplay extends WorkspacesDisplay {
} }
}); });
const MyWorkspace = GObject.registerClass(
class MyWorkspace extends Workspace.Workspace {
_init(...args) {
super._init(...args);
this._adjChangedId =
this._overviewAdjustment.connect('notify::value', () => {
const { value: progress } = this._overviewAdjustment;
const brightness = 1 - (1 - VIGNETTE_BRIGHTNESS) * progress;
for (const bg of this._background?._backgroundGroup ?? []) {
bg.content.set({
vignette: true,
brightness,
});
}
});
}
_onDestroy() {
super._onDestroy();
if (this._adjChangedId)
this._overviewAdjustment.disconnect(this._adjChangedId);
this._adjChangedId = 0;
}
});
const MyWorkspaceBackground = GObject.registerClass(
class MyWorkspaceBackground extends Workspace.WorkspaceBackground {
_updateBorderRadius() {
}
vfunc_allocate(box) {
this.set_allocation(box);
const themeNode = this.get_theme_node();
const contentBox = themeNode.get_content_box(box);
this._bin.allocate(contentBox);
const [contentWidth, contentHeight] = contentBox.get_size();
const monitor = Main.layoutManager.monitors[this._monitorIndex];
const xRatio = contentWidth / this._workarea.width;
const yRatio = contentHeight / this._workarea.height;
const right = area => area.x + area.width;
const bottom = area => area.y + area.height;
const offsets = {
left: xRatio * (this._workarea.x - monitor.x),
right: xRatio * (right(monitor) - right(this._workarea)),
top: yRatio * (this._workarea.y - monitor.y),
bottom: yRatio * (bottom(monitor) - bottom(this._workarea)),
};
contentBox.set_origin(-offsets.left, -offsets.top);
contentBox.set_size(
offsets.left + contentWidth + offsets.right,
offsets.top + contentHeight + offsets.bottom);
this._backgroundGroup.allocate(contentBox);
}
});
var WindowPicker = GObject.registerClass({ var WindowPicker = GObject.registerClass({
Signals: { Signals: {
'open-state-changed': { param_types: [GObject.TYPE_BOOLEAN] }, 'open-state-changed': { param_types: [GObject.TYPE_BOOLEAN] },
@@ -152,9 +105,7 @@ var WindowPicker = GObject.registerClass({
this._overlayKeyId = 0; this._overlayKeyId = 0;
this._stageKeyPressId = 0; this._stageKeyPressId = 0;
super._init({ reactive: true }); super._init();
this._adjustment = new OverviewAdjustment(this);
this.connect('destroy', this._onDestroy.bind(this)); this.connect('destroy', this._onDestroy.bind(this));
@@ -165,14 +116,31 @@ var WindowPicker = GObject.registerClass({
this, 'height', this, 'height',
GObject.BindingFlags.SYNC_CREATE); GObject.BindingFlags.SYNC_CREATE);
this._workspacesDisplay = new MyWorkspacesDisplay(this, this._adjustment); this._backgroundGroup = new Meta.BackgroundGroup({ reactive: true });
this.add_child(this._backgroundGroup);
this._backgroundGroup.connect('scroll-event', (a, ev) => {
this.emit('scroll-event', ev);
});
// Trick WorkspacesDisplay constructor into adding actions here
let addActionOrig = Main.overview.addAction;
Main.overview.addAction = a => this._backgroundGroup.add_action(a);
this._workspacesDisplay = new MyWorkspacesDisplay();
this.add_child(this._workspacesDisplay); this.add_child(this._workspacesDisplay);
Main.overview.addAction = addActionOrig;
this._bgManagers = [];
this._monitorsChangedId = Main.layoutManager.connect('monitors-changed',
this._updateBackgrounds.bind(this));
this._updateBackgrounds();
Main.uiGroup.insert_child_below(this, global.window_group); Main.uiGroup.insert_child_below(this, global.window_group);
if (!Main.sessionMode.hasOverview) { if (!Main.sessionMode.hasOverview) {
this._injectBackgroundShade();
this._overlayKeyId = global.display.connect('overlay-key', () => { this._overlayKeyId = global.display.connect('overlay-key', () => {
if (!this._visible) if (!this._visible)
this.open(); this.open();
@@ -182,14 +150,6 @@ var WindowPicker = GObject.registerClass({
} }
} }
_injectBackgroundShade() {
this._origWorkspace = Workspace.Workspace;
this._origWorkspaceBackground = Workspace.WorkspaceBackground;
Workspace.Workspace = MyWorkspace;
Workspace.WorkspaceBackground = MyWorkspaceBackground;
}
get visible() { get visible() {
return this._visible; return this._visible;
} }
@@ -204,15 +164,9 @@ var WindowPicker = GObject.registerClass({
return; return;
this._fakeOverviewVisible(true); this._fakeOverviewVisible(true);
this._workspacesDisplay.prepareToEnterOverview(); this._shadeBackgrounds();
Main.overview._animationInProgress = true; this._fakeOverviewAnimation();
this._workspacesDisplay.animateToOverview(false);
this._adjustment.value = ControlsState.HIDDEN;
this._adjustment.ease(ControlsState.WINDOW_PICKER, {
duration: SIDE_CONTROLS_ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
onComplete: () => (Main.overview._animationInProgress = false),
});
this._stageKeyPressId = global.stage.connect('key-press-event', this._stageKeyPressId = global.stage.connect('key-press-event',
(a, event) => { (a, event) => {
@@ -236,17 +190,11 @@ var WindowPicker = GObject.registerClass({
if (!this._syncGrab()) if (!this._syncGrab())
return; return;
this._workspacesDisplay.prepareToLeaveOverview(); this._workspacesDisplay.animateFromOverview(false);
this._unshadeBackgrounds();
Main.overview._animationInProgress = true; this._fakeOverviewAnimation(() => {
this._adjustment.ease(ControlsState.HIDDEN, { this._workspacesDisplay.hide();
duration: SIDE_CONTROLS_ANIMATION_TIME, this._fakeOverviewVisible(false);
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
onComplete: () => {
Main.overview._animationInProgress = false;
this._workspacesDisplay.hide();
this._fakeOverviewVisible(false);
},
}); });
global.stage.disconnect(this._stageKeyPressId); global.stage.disconnect(this._stageKeyPressId);
@@ -255,8 +203,16 @@ var WindowPicker = GObject.registerClass({
this.emit('open-state-changed', this._visible); this.emit('open-state-changed', this._visible);
} }
getWorkspacesBoxForState() { _fakeOverviewAnimation(onComplete) {
return this.allocation; Main.overview._animationInProgress = true;
GLib.timeout_add(
GLib.PRIORITY_DEFAULT,
Overview.ANIMATION_TIME,
() => {
Main.overview._animationInProgress = false;
if (onComplete)
onComplete();
});
} }
_fakeOverviewVisible(visible) { _fakeOverviewVisible(visible) {
@@ -289,12 +245,6 @@ var WindowPicker = GObject.registerClass({
} }
_onDestroy() { _onDestroy() {
if (this._origWorkspace)
Workspace.Workspace = this._origWorkspace;
if (this._origWorkspaceBackground)
Workspace.WorkspaceBackground = this._origWorkspaceBackground;
if (this._monitorsChangedId) if (this._monitorsChangedId)
Main.layoutManager.disconnect(this._monitorsChangedId); Main.layoutManager.disconnect(this._monitorsChangedId);
this._monitorsChangedId = 0; this._monitorsChangedId = 0;
@@ -307,6 +257,18 @@ var WindowPicker = GObject.registerClass({
global.stage.disconnect(this._stageKeyPressId); global.stage.disconnect(this._stageKeyPressId);
this._stageKeyPressId = 0; this._stageKeyPressId = 0;
} }
_updateBackgrounds() {
Main.overview._updateBackgrounds.call(this);
}
_shadeBackgrounds() {
Main.overview._shadeBackgrounds.call(this);
}
_unshadeBackgrounds() {
Main.overview._unshadeBackgrounds.call(this);
}
}); });
var WindowPickerToggle = GObject.registerClass( var WindowPickerToggle = GObject.registerClass(
@@ -9,9 +9,6 @@ const PopupMenu = imports.ui.popupMenu;
const Gettext = imports.gettext.domain('gnome-shell-extensions'); const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext; const _ = Gettext.gettext;
const TOOLTIP_OFFSET = 6;
const TOOLTIP_ANIMATION_TIME = 150;
let WindowPreview = GObject.registerClass( let WindowPreview = GObject.registerClass(
class WindowPreview extends St.Button { class WindowPreview extends St.Button {
_init(window) { _init(window) {
@@ -110,14 +107,7 @@ class WorkspaceThumbnail extends St.Button {
}), }),
}); });
this._tooltip = new St.Label({
style_class: 'dash-label',
visible: false,
});
Main.uiGroup.add_child(this._tooltip);
this.connect('destroy', this._onDestroy.bind(this)); this.connect('destroy', this._onDestroy.bind(this));
this.connect('notify::hover', this._syncTooltip.bind(this));
this._index = index; this._index = index;
this._delegate = this; // needed for DND this._delegate = this; // needed for DND
@@ -202,39 +192,7 @@ class WorkspaceThumbnail extends St.Button {
ws.activate(global.get_current_time()); ws.activate(global.get_current_time());
} }
_syncTooltip() {
if (this.hover) {
this._tooltip.set({
text: Meta.prefs_get_workspace_name(this._index),
visible: true,
opacity: 0,
});
const [stageX, stageY] = this.get_transformed_position();
const thumbWidth = this.allocation.get_width();
const tipWidth = this._tooltip.width;
const tipHeight = this._tooltip.height;
const xOffset = Math.floor((thumbWidth - tipWidth) / 2);
const monitor = Main.layoutManager.findMonitorForActor(this);
const x = Math.clamp(
stageX + xOffset,
monitor.x,
monitor.x + monitor.width - tipWidth);
const y = stageY - tipHeight - TOOLTIP_OFFSET;
this._tooltip.set_position(x, y);
}
this._tooltip.ease({
opacity: this.hover ? 255 : 0,
duration: TOOLTIP_ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
onComplete: () => (this._tooltip.visible = this.hover),
});
}
_onDestroy() { _onDestroy() {
this._tooltip.destroy();
this._workspace.disconnect(this._windowAddedId); this._workspace.disconnect(this._windowAddedId);
this._workspace.disconnect(this._windowRemovedId); this._workspace.disconnect(this._windowRemovedId);
global.display.disconnect(this._restackedId); global.display.disconnect(this._restackedId);
@@ -15,9 +15,6 @@ const _ = Gettext.gettext;
const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences'; const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences';
const WORKSPACE_KEY = 'workspace-names'; const WORKSPACE_KEY = 'workspace-names';
const TOOLTIP_OFFSET = 6;
const TOOLTIP_ANIMATION_TIME = 150;
let WindowPreview = GObject.registerClass( let WindowPreview = GObject.registerClass(
class WindowPreview extends St.Button { class WindowPreview extends St.Button {
_init(window) { _init(window) {
@@ -116,14 +113,7 @@ class WorkspaceThumbnail extends St.Button {
}), }),
}); });
this._tooltip = new St.Label({
style_class: 'dash-label',
visible: false,
});
Main.uiGroup.add_child(this._tooltip);
this.connect('destroy', this._onDestroy.bind(this)); this.connect('destroy', this._onDestroy.bind(this));
this.connect('notify::hover', this._syncTooltip.bind(this));
this._index = index; this._index = index;
this._delegate = this; // needed for DND this._delegate = this; // needed for DND
@@ -208,39 +198,7 @@ class WorkspaceThumbnail extends St.Button {
ws.activate(global.get_current_time()); ws.activate(global.get_current_time());
} }
_syncTooltip() {
if (this.hover) {
this._tooltip.set({
text: Meta.prefs_get_workspace_name(this._index),
visible: true,
opacity: 0,
});
const [stageX, stageY] = this.get_transformed_position();
const thumbWidth = this.allocation.get_width();
const thumbHeight = this.allocation.get_height();
const tipWidth = this._tooltip.width;
const xOffset = Math.floor((thumbWidth - tipWidth) / 2);
const monitor = Main.layoutManager.findMonitorForActor(this);
const x = Math.clamp(
stageX + xOffset,
monitor.x,
monitor.x + monitor.width - tipWidth);
const y = stageY + thumbHeight + TOOLTIP_OFFSET;
this._tooltip.set_position(x, y);
}
this._tooltip.ease({
opacity: this.hover ? 255 : 0,
duration: TOOLTIP_ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
onComplete: () => (this._tooltip.visible = this.hover),
});
}
_onDestroy() { _onDestroy() {
this._tooltip.destroy();
this._workspace.disconnect(this._windowAddedId); this._workspace.disconnect(this._windowAddedId);
this._workspace.disconnect(this._windowRemovedId); this._workspace.disconnect(this._windowRemovedId);
global.display.disconnect(this._restackedId); global.display.disconnect(this._restackedId);
+51 -30
View File
@@ -1,7 +1,7 @@
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- // -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
/* exported init buildPrefsWidget */ /* exported init buildPrefsWidget */
const { Gio, GLib, GObject, Gtk, Pango } = imports.gi; const { Gdk, Gio, GLib, GObject, Gtk, Pango } = imports.gi;
const Gettext = imports.gettext.domain('gnome-shell-extensions'); const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext; const _ = Gettext.gettext;
@@ -28,9 +28,9 @@ class WorkspaceSettingsWidget extends Gtk.ScrolledWindow {
margin_start: 36, margin_start: 36,
margin_end: 36, margin_end: 36,
}); });
this.set_child(box); this.add(box);
box.append(new Gtk.Label({ box.add(new Gtk.Label({
label: '<b>%s</b>'.format(_('Workspace Names')), label: '<b>%s</b>'.format(_('Workspace Names')),
use_markup: true, use_markup: true,
halign: Gtk.Align.START, halign: Gtk.Align.START,
@@ -39,10 +39,10 @@ class WorkspaceSettingsWidget extends Gtk.ScrolledWindow {
this._list = new Gtk.ListBox({ this._list = new Gtk.ListBox({
selection_mode: Gtk.SelectionMode.NONE, selection_mode: Gtk.SelectionMode.NONE,
valign: Gtk.Align.START, valign: Gtk.Align.START,
show_separators: true,
}); });
this._list.set_header_func(this._updateHeader.bind(this));
this._list.connect('row-activated', (l, row) => row.edit()); this._list.connect('row-activated', (l, row) => row.edit());
box.append(this._list); box.add(this._list);
const context = this._list.get_style_context(); const context = this._list.get_style_context();
const cssProvider = new Gtk.CssProvider(); const cssProvider = new Gtk.CssProvider();
@@ -53,7 +53,7 @@ class WorkspaceSettingsWidget extends Gtk.ScrolledWindow {
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);
context.add_class('frame'); context.add_class('frame');
this._list.append(new NewWorkspaceRow()); this._list.add(new NewWorkspaceRow());
this._actionGroup = new Gio.SimpleActionGroup(); this._actionGroup = new Gio.SimpleActionGroup();
this._list.insert_action_group('workspaces', this._actionGroup); this._list.insert_action_group('workspaces', this._actionGroup);
@@ -94,10 +94,12 @@ class WorkspaceSettingsWidget extends Gtk.ScrolledWindow {
this._settings.connect(`changed::${WORKSPACE_KEY}`, this._settings.connect(`changed::${WORKSPACE_KEY}`,
this._sync.bind(this)); this._sync.bind(this));
this._sync(); this._sync();
this.show_all();
} }
_getWorkspaceRows() { _getWorkspaceRows() {
return [...this._list].filter(row => row.name); return this._list.get_children().filter(row => row.name);
} }
_sync() { _sync() {
@@ -109,11 +111,17 @@ class WorkspaceSettingsWidget extends Gtk.ScrolledWindow {
const removed = oldNames.filter(n => !newNames.includes(n)); const removed = oldNames.filter(n => !newNames.includes(n));
const added = newNames.filter(n => !oldNames.includes(n)); const added = newNames.filter(n => !oldNames.includes(n));
removed.forEach(n => this._list.remove(rows.find(r => r.name === n))); removed.forEach(n => rows.find(r => r.name === n).destroy());
added.forEach(n => { added.forEach(n => {
this._list.insert(new WorkspaceRow(n), newNames.indexOf(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( const WorkspaceRow = GObject.registerClass(
@@ -121,13 +129,6 @@ class WorkspaceRow extends Gtk.ListBoxRow {
_init(name) { _init(name) {
super._init({ name }); super._init({ name });
const controller = new Gtk.ShortcutController();
controller.add_shortcut(new Gtk.Shortcut({
trigger: Gtk.ShortcutTrigger.parse_string('Escape'),
action: Gtk.CallbackAction.new(this._stopEdit.bind(this)),
}));
this.add_controller(controller);
const box = new Gtk.Box({ const box = new Gtk.Box({
spacing: 12, spacing: 12,
margin_top: 6, margin_top: 6,
@@ -144,14 +145,18 @@ class WorkspaceRow extends Gtk.ListBoxRow {
}); });
this.bind_property('name', label, 'label', this.bind_property('name', label, 'label',
GObject.BindingFlags.SYNC_CREATE); GObject.BindingFlags.SYNC_CREATE);
box.append(label); box.add(label);
const image = new Gtk.Image({
icon_name: 'edit-delete-symbolic',
pixel_size: 16,
});
const button = new Gtk.Button({ const button = new Gtk.Button({
action_name: 'workspaces.remove', action_name: 'workspaces.remove',
action_target: new GLib.Variant('s', name), action_target: new GLib.Variant('s', name),
icon_name: 'edit-delete-symbolic', image,
}); });
box.append(button); box.add(button);
this._entry = new Gtk.Entry({ this._entry = new Gtk.Entry({
max_width_chars: 25, max_width_chars: 25,
@@ -160,7 +165,7 @@ class WorkspaceRow extends Gtk.ListBoxRow {
this._stack = new Gtk.Stack(); this._stack = new Gtk.Stack();
this._stack.add_named(box, 'display'); this._stack.add_named(box, 'display');
this._stack.add_named(this._entry, 'edit'); this._stack.add_named(this._entry, 'edit');
this.child = this._stack; this.add(this._stack);
this._entry.connect('activate', () => { this._entry.connect('activate', () => {
this.name = this._entry.text; this.name = this._entry.text;
@@ -171,11 +176,17 @@ class WorkspaceRow extends Gtk.ListBoxRow {
return; return;
this._stopEdit(); this._stopEdit();
}); });
this._entry.connect('key-press-event',
this._onEntryKeyPress.bind(this));
this.connect('notify::name', () => { this.connect('notify::name', () => {
button.action_target = new GLib.Variant('s', this.name); button.action_target = new GLib.Variant('s', this.name);
this.activate_action('workspaces.update', null);
const actionGroup = this.get_action_group('workspaces');
actionGroup.activate_action('update', null);
}); });
this.show_all();
} }
edit() { edit() {
@@ -188,6 +199,14 @@ class WorkspaceRow extends Gtk.ListBoxRow {
this.grab_focus(); this.grab_focus();
this._stack.visible_child_name = 'display'; this._stack.visible_child_name = 'display';
} }
_onEntryKeyPress(entry, event) {
const [, keyval] = event.get_keyval();
if (keyval !== Gdk.KEY_Escape)
return Gdk.EVENT_PROPAGATE;
this._stopEdit();
return Gdk.EVENT_STOP;
}
}); });
const NewWorkspaceRow = GObject.registerClass( const NewWorkspaceRow = GObject.registerClass(
@@ -195,17 +214,19 @@ class NewWorkspaceRow extends Gtk.ListBoxRow {
_init() { _init() {
super._init({ super._init({
action_name: 'workspaces.add', action_name: 'workspaces.add',
child: new Gtk.Image({
icon_name: 'list-add-symbolic',
pixel_size: 16,
margin_top: 12,
margin_bottom: 12,
margin_start: 12,
margin_end: 12,
}),
}); });
this.update_property( this.get_accessible().set_name(_('Add Workspace'));
[Gtk.AccessibleProperty.LABEL], [_('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();
} }
}); });
-6
View File
@@ -34,10 +34,4 @@ and will be picked automatically at next login.
<gnome:userid>fmuellner</gnome:userid> <gnome:userid>fmuellner</gnome:userid>
</foaf:Person> </foaf:Person>
</maintainer> </maintainer>
<maintainer>
<foaf:Person>
<foaf:name>Marge Bot</foaf:name>
<gnome:userid>marge-bot</gnome:userid>
</foaf:Person>
</maintainer>
</Project> </Project>
+6 -15
View File
@@ -1,5 +1,4 @@
--- ---
# SPDX-License-Identifier: MIT OR LGPL-2.0-or-later
env: env:
es6: true es6: true
extends: 'eslint:recommended' extends: 'eslint:recommended'
@@ -25,9 +24,7 @@ rules:
# allow: [^vfunc_, ^on_, _instance_init] # allow: [^vfunc_, ^on_, _instance_init]
comma-dangle: comma-dangle:
- error - error
- arrays: always-multiline - always-multiline
objects: always-multiline
functions: never
comma-spacing: comma-spacing:
- error - error
- before: false - before: false
@@ -90,7 +87,6 @@ rules:
- error - error
- all - all
- conditionalAssign: false - conditionalAssign: false
nestedBinaryExpressions: false
returnAssign: false returnAssign: false
no-implicit-coercion: no-implicit-coercion:
- error - error
@@ -109,15 +105,15 @@ rules:
no-prototype-builtins: 'off' no-prototype-builtins: 'off'
no-restricted-properties: no-restricted-properties:
- error - error
- object: Lang
property: copyProperties
message: Use Object.assign()
- object: Lang - object: Lang
property: bind property: bind
message: Use arrow notation or Function.prototype.bind() message: Use arrow notation or Function.prototype.bind()
- object: Lang - object: Lang
property: Class property: Class
message: Use ES6 classes message: Use ES6 classes
- object: imports
property: mainloop
message: Use GLib main loops and timeouts
no-restricted-syntax: no-restricted-syntax:
- error - error
- selector: >- - selector: >-
@@ -133,8 +129,6 @@ rules:
BlockStatement[body.length=1] BlockStatement[body.length=1]
CallExpression[arguments.length=0][callee.object.type="Super"][callee.property.name="_init"] CallExpression[arguments.length=0][callee.object.type="Super"][callee.property.name="_init"]
message: _init() that only calls super._init() is unnecessary message: _init() that only calls super._init() is unnecessary
- selector: BinaryExpression[operator="instanceof"][right.name="Array"]
message: Use Array.isArray()
no-return-assign: error no-return-assign: error
no-return-await: error no-return-await: error
no-self-compare: error no-self-compare: error
@@ -171,9 +165,6 @@ rules:
object-shorthand: error object-shorthand: error
operator-assignment: error operator-assignment: error
operator-linebreak: error operator-linebreak: error
padded-blocks:
- error
- never
# These may be a bit controversial, we can try them out and enable them later # These may be a bit controversial, we can try them out and enable them later
# prefer-const: error # prefer-const: error
# prefer-destructuring: error # prefer-destructuring: error
@@ -226,12 +217,12 @@ globals:
ARGV: readonly ARGV: readonly
Debugger: readonly Debugger: readonly
GIRepositoryGType: readonly GIRepositoryGType: readonly
globalThis: readonly
imports: readonly imports: readonly
Intl: readonly Intl: readonly
log: readonly log: readonly
logError: readonly logError: readonly
print: readonly print: readonly
printerr: readonly printerr: readonly
window: readonly
parserOptions: parserOptions:
ecmaVersion: 2020 ecmaVersion: 2017
+6 -7
View File
@@ -1,12 +1,11 @@
project('gnome-shell-extensions', project('gnome-shell-extensions',
version: '40.beta', version: '3.38.2',
meson_version: '>= 0.44.0', meson_version: '>= 0.44.0',
license: 'GPL2+' license: 'GPL2+'
) )
gettext_domain = meson.project_name() gettext_domain = meson.project_name()
fs = import('fs')
gnome = import('gnome') gnome = import('gnome')
i18n = import('i18n') i18n = import('i18n')
@@ -22,9 +21,9 @@ sessiondir = join_paths(datadir, 'gnome-session', 'sessions')
xsessiondir = join_paths(datadir, 'xsessions') xsessiondir = join_paths(datadir, 'xsessions')
ver_arr = meson.project_version().split('.') ver_arr = meson.project_version().split('.')
if ver_arr[1].version_compare('>=0') if ver_arr[1].to_int().is_even()
shell_version = ver_arr[0] shell_version = '@0@.@1@'.format(ver_arr[0], ver_arr[1])
else # pre-release (alpha, beta, rc) else
shell_version = '.'.join(ver_arr) shell_version = '.'.join(ver_arr)
endif endif
@@ -32,6 +31,7 @@ uuid_suffix = '@gnome-shell-extensions.gcampax.github.com'
classic_extensions = [ classic_extensions = [
'apps-menu', 'apps-menu',
'horizontal-workspaces',
'places-menu', 'places-menu',
'launch-new-instance', 'launch-new-instance',
'window-list' 'window-list'
@@ -86,10 +86,9 @@ foreach e : enabled_extensions
endforeach endforeach
if classic_mode_enabled if classic_mode_enabled
sassc = find_program('sassc', required: true)
subdir('data') subdir('data')
endif endif
subdir('extensions') subdir('extensions')
subdir('po') subdir('po')
meson.add_dist_script('meson/generate-stylesheets.py')
-13
View File
@@ -1,13 +0,0 @@
#!/usr/bin/env python3
import os
from pathlib import PurePath
import subprocess
sourceroot = os.environ.get('MESON_SOURCE_ROOT')
distroot = os.environ.get('MESON_DIST_ROOT')
stylesheet_path = PurePath('data/gnome-classic.css')
src = PurePath(sourceroot, stylesheet_path.with_suffix('.scss'))
dst = PurePath(distroot, stylesheet_path)
subprocess.call(['sassc', '-a', src, dst])
+197 -182
View File
@@ -6,11 +6,11 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n" "Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"issues\n" "shell&keywords=I18N+L10N&component=extensions\n"
"POT-Creation-Date: 2021-01-20 23:03+0000\n" "POT-Creation-Date: 2017-08-19 16:41+0000\n"
"PO-Revision-Date: 2021-01-24 15:33+0300\n" "PO-Revision-Date: 2017-09-01 17:56+0300\n"
"Last-Translator: Launchpad translators\n" "Last-Translator: Yuras Shumovich <shumovichy@gmail.com>\n"
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n" "Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
"Language: be\n" "Language: be\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -18,9 +18,9 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && 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" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Poedit 2.4.2\n" "X-Generator: Poedit 1.8.11\n"
#: data/gnome-classic.desktop.in:3 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic" msgid "GNOME Classic"
msgstr "Класічны GNOME" msgstr "Класічны GNOME"
@@ -28,69 +28,171 @@ msgstr "Класічны GNOME"
msgid "This session logs you into GNOME Classic" msgid "This session logs you into GNOME Classic"
msgstr "Гэты сеанс выкарыстоўвае класічны GNOME" msgstr "Гэты сеанс выкарыстоўвае класічны GNOME"
#: extensions/apps-menu/extension.js:113 #: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7
msgid "Favorites" msgid "Attach modal dialog to the parent window"
msgstr "Абраныя" msgstr "Прымацаваць мадальны дыялог да бацькоўскага акна"
#: extensions/apps-menu/extension.js:369 #: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:8
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:25
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:33
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:41
msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr "Гэты ключ засланяе ключ у org.gnome.mutter калі запушчаны GNOME Shell."
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:16
msgid "Arrangement of buttons on the titlebar"
msgstr "Парадак кнопак у загалоўнай стужцы"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:17
msgid ""
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
"GNOME Shell."
msgstr ""
"Гэты ключ засланяе ключ у org.gnome.desktop.wm.preferences калі запушчаны "
"GNOME Shell."
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:24
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Аўтаматычна змяняць памеры акна пры перамяшчэнні да края экрана"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:32
msgid "Workspaces only on primary monitor"
msgstr "Працоўныя прасторы толькі на асноўным маніторы"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:40
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Затрымліваць змяненні фокуса ў рэжыме мышы да спынення паказальніка"
#: extensions/alternate-tab/prefs.js:20
msgid "Thumbnail only"
msgstr "Толькі мініяцюра"
#: extensions/alternate-tab/prefs.js:21
msgid "Application icon only"
msgstr "Толькі значок праграмы"
#: extensions/alternate-tab/prefs.js:22
msgid "Thumbnail and application icon"
msgstr "Мініяцюра і значок праграмы"
#: extensions/alternate-tab/prefs.js:38
msgid "Present windows as"
msgstr "Адлюстроўваць вокны як"
#: extensions/alternate-tab/prefs.js:69
msgid "Show only windows in the current workspace"
msgstr "Паказваць вокны толькі з бягучай працоўная прасторы"
#: extensions/apps-menu/extension.js:41
msgid "Activities Overview"
msgstr "Агляд заняткаў"
#: extensions/apps-menu/extension.js:141
msgid "Favorites"
msgstr "Упадабаныя"
#: extensions/apps-menu/extension.js:436
msgid "Applications" msgid "Applications"
msgstr "Праграмы" msgstr "Праграмы"
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6 #: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6
msgid "Application and workspace list" msgid "Application and workspace list"
msgstr "Праграма і спіс працоўных прастор" msgstr "Праграма і спіс працоўных прастораў"
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7 #: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7
msgid "" msgid ""
"A list of strings, each containing an application id (desktop file name), " "A list of strings, each containing an application id (desktop file name), "
"followed by a colon and the workspace number" "followed by a colon and the workspace number"
msgstr "" msgstr ""
"Спіс радкоў, кожны з якіх змяшчае ідэнтыфікатар праграмы (імя файла *." "Спіс радкоў, кожны з якіх утрымлівае ідэнтыфікатар праграмы (імя *.desktop "
"desktop), затым двукроп'е і нумар працоўнай прасторы" "файла), затым двукроп'е і нумар працоўнай прасторы"
#: extensions/auto-move-windows/prefs.js:35 #: extensions/auto-move-windows/prefs.js:60
msgid "Workspace Rules" msgid "Application"
msgstr "Правілы для працоўнай прасторы" msgstr "Праграма"
#: extensions/auto-move-windows/prefs.js:237 #: extensions/auto-move-windows/prefs.js:69
#: extensions/auto-move-windows/prefs.js:127
msgid "Workspace"
msgstr "Працоўная прастора"
#: extensions/auto-move-windows/prefs.js:85
msgid "Add Rule" msgid "Add Rule"
msgstr "Дадаць правіла" msgstr "Дадаць правіла"
#: extensions/auto-move-windows/prefs.js:106
msgid "Create new matching rule"
msgstr "Стварыць новае правіла адпаведнасці"
#: extensions/auto-move-windows/prefs.js:111
msgid "Add"
msgstr "Дадаць"
#. TRANSLATORS: %s is the filesystem name #. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112 #: extensions/drive-menu/extension.js:107
#: extensions/places-menu/placeDisplay.js:233
#, javascript-format #, javascript-format
msgid "Ejecting drive “%s” failed:" msgid "Ejecting drive “%s” failed:"
msgstr "Не ўдалося выняць дыск «%s»:" msgstr "Не ўдалося выняць прывод \"%s\":"
#: extensions/drive-menu/extension.js:128 #: extensions/drive-menu/extension.js:125
msgid "Removable devices" msgid "Removable devices"
msgstr "Здымныя прылады" msgstr "Зменныя прыстасаванні"
#: extensions/drive-menu/extension.js:155 #: extensions/drive-menu/extension.js:150
msgid "Open Files" msgid "Open Files"
msgstr "Адкрыць файлы" msgstr "Адкрыць файлы"
#: extensions/example/extension.js:17
msgid "Hello, world!"
msgstr "Прывітанне, свет!"
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:5
msgid "Alternative greeting text."
msgstr "Альтэрнатыўны тэкст вітання."
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:6
msgid ""
"If not empty, it contains the text that will be shown when clicking on the "
"panel."
msgstr ""
"Калі не пуста, ўтрымлівае тэкст, які будзе паказвацца пры націсканні на "
"панэль."
#: extensions/example/prefs.js:30
msgid "Message"
msgstr "Паведамленне"
#. TRANSLATORS: Example is the name of the extension, should not be
#. translated
#: extensions/example/prefs.js:43
msgid ""
"Example aims to show how to build well behaved extensions for the Shell and "
"as such it has little functionality on its own.\n"
"Nevertheless its possible to customize the greeting message."
msgstr ""
"Example пакажа як ствараць пашырэнні для Shell. Сам па сабе ён мае мала "
"функцыянальнасці.\n"
"Тым не менш, можна змяніць тэкст прывітання."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
#, fuzzy
msgid "Use more screen for windows" msgid "Use more screen for windows"
msgstr "Выкарыстоўваць большую плошчу экрана для вокнаў" msgstr "Выкарыстоўваць большую плошчу экрана для вокнаў"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
#, fuzzy
msgid "" msgid ""
"Try to use more screen for placing window thumbnails by adapting to screen " "Try to use more screen for placing window thumbnails by adapting to screen "
"aspect ratio, and consolidating them further to reduce the bounding box. " "aspect ratio, and consolidating them further to reduce the bounding box. "
"This setting applies only with the natural placement strategy." "This setting applies only with the natural placement strategy."
msgstr "" msgstr ""
"Спрабаваць выкарыстаць большую плошчу экрана для размяшчэння мініяцюр праз " "Спрабаваць выкарыстаць большую плошчу экрана для размяшчэння мініяцюр шляхам "
"змяненне суадносінаў бакоў экрана, ўшчыльняючы іх, каб зменшыць памеры " "змянення суадносінаў бакоў экрана і ўшчыльняючы іх з мэтай змяншэння памераў "
"абмежавальнай рамкі. Гэты параметр ужываецца толькі з натуральным " "абмежавальнай рамкі. Гэты параметр ужываецца толькі разам з звычайным "
"размяшчэннем мініяцюр." "размяшчэннем мініяцюр."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
msgid "Place window captions on top" msgid "Place window captions on top"
msgstr "Размяшчаць подпіс акна зверху" msgstr "Змяшчаць загалоўкі вокнаў зверху"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
msgid "" msgid ""
@@ -98,243 +200,156 @@ msgid ""
"shell default of placing it at the bottom. Changing this setting requires " "shell default of placing it at the bottom. Changing this setting requires "
"restarting the shell to have any effect." "restarting the shell to have any effect."
msgstr "" msgstr ""
"Калі выбрана, подпіс акна будзе над мініяцюрай, а не пад ей (як " "Калі выбрана, загалоўкі вокнаў будуць размешчаны ўверсе мініяцюры, а не "
"перадвызначана). Каб змена налады ўступіла ў сілу, трэба перазапусціць " "знізу, як прадвызначана. Для таго, каб гэтая настройка ўступіла ў сілу, "
"абалонку." "трэба перазапусціць абалонку."
#: extensions/places-menu/extension.js:89 #: extensions/places-menu/extension.js:78
#: extensions/places-menu/extension.js:93 #: extensions/places-menu/extension.js:81
msgid "Places" msgid "Places"
msgstr "Месцы" msgstr "Месцы"
#: extensions/places-menu/placeDisplay.js:46 #: extensions/places-menu/placeDisplay.js:65
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "Не ўдалося запусціць «%s»"
#: extensions/places-menu/placeDisplay.js:61
#, javascript-format #, javascript-format
msgid "Failed to mount volume for “%s”" msgid "Failed to mount volume for “%s”"
msgstr "Не ўдалося прымацаваць том для «%s»." msgstr "Не ўдалося прымацаваць том для \"%s\"."
#: extensions/places-menu/placeDisplay.js:148 #: extensions/places-menu/placeDisplay.js:78
#: extensions/places-menu/placeDisplay.js:171 #, javascript-format
msgid "Failed to launch “%s”"
msgstr "Не ўдалося запусціць \"%s\""
#: extensions/places-menu/placeDisplay.js:137
#: extensions/places-menu/placeDisplay.js:160
msgid "Computer" msgid "Computer"
msgstr "Камп'ютар" msgstr "Камп'ютар"
#: extensions/places-menu/placeDisplay.js:359 #: extensions/places-menu/placeDisplay.js:303
msgid "Home" msgid "Home"
msgstr "Хатняя папка" msgstr "Дамашняя папка"
#: extensions/places-menu/placeDisplay.js:404 #: extensions/places-menu/placeDisplay.js:347
msgid "Browse Network" msgid "Browse Network"
msgstr "Агляд сеткі" msgstr "Агляд сеткі"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7 #: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
msgid "Cycle Screenshot Sizes" msgid "Cycle Screenshot Sizes"
msgstr "Паслядоўнасць змены памераў для здымка экрана" msgstr "Чаргаваць памеры экраннага здымка"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11 #: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
msgid "Cycle Screenshot Sizes Backward" msgid "Cycle Screenshot Sizes Backward"
msgstr "Адваротная паслядоўнасць змены памераў для здымка экрана" msgstr "Чаргаваць памеры экраннага здымка ў адваротным напрамку"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5 #: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
msgid "Theme name" msgid "Theme name"
msgstr "Назва тэмы" msgstr "Імя матыву аздаблення"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6 #: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell" msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "Назва тэмы, што загрузіцца з ~/.themes/name/gnome-shell" msgstr ""
"Імя матыву аздаблення, які будзе загружаны з ~/.themes/name/gnome-shell"
#: extensions/window-list/extension.js:98 #: extensions/window-list/extension.js:110
msgid "Close" msgid "Close"
msgstr "Закрыць" msgstr "Закрыць"
#: extensions/window-list/extension.js:118 #: extensions/window-list/extension.js:129
msgid "Unminimize" msgid "Unminimize"
msgstr "Скасаваць згортванне" msgstr "Скасаваць мінімалізацыю"
#: extensions/window-list/extension.js:118 #: extensions/window-list/extension.js:130
msgid "Minimize" msgid "Minimize"
msgstr "Згарнуць" msgstr "Мінімалізаваць"
#: extensions/window-list/extension.js:125 #: extensions/window-list/extension.js:136
msgid "Unmaximize" msgid "Unmaximize"
msgstr "Скасаваць разгортванне" msgstr "Скасаваць максімалізацыю"
#: extensions/window-list/extension.js:125 #: extensions/window-list/extension.js:137
msgid "Maximize" msgid "Maximize"
msgstr "Разгарнуць" msgstr "Максімалізаваць"
#: extensions/window-list/extension.js:432 #: extensions/window-list/extension.js:420
msgid "Minimize all" msgid "Minimize all"
msgstr "Згарнуць усе" msgstr "Мінімалізаваць усе"
#: extensions/window-list/extension.js:438 #: extensions/window-list/extension.js:428
msgid "Unminimize all" msgid "Unminimize all"
msgstr "Скасаваць згортванне для ўсіх" msgstr "Скасаваць мінімалізацыю для ўсіх"
#: extensions/window-list/extension.js:444 #: extensions/window-list/extension.js:436
msgid "Maximize all" msgid "Maximize all"
msgstr "Разгарнуць усе" msgstr "Максімалізаваць усе"
#: extensions/window-list/extension.js:452 #: extensions/window-list/extension.js:445
msgid "Unmaximize all" msgid "Unmaximize all"
msgstr "Скасаваць разгортванне для ўсіх" msgstr "Скасаваць максімалізацыю для ўсіх"
#: extensions/window-list/extension.js:460 #: extensions/window-list/extension.js:454
msgid "Close all" msgid "Close all"
msgstr "Закрыць усе" msgstr "Закрыць усе"
#: extensions/window-list/extension.js:737 #: extensions/window-list/extension.js:678
#: extensions/workspace-indicator/extension.js:30
msgid "Workspace Indicator"
msgstr "Індыкатар працоўнай прасторы"
#: extensions/window-list/extension.js:842
msgid "Window List" msgid "Window List"
msgstr "Спіс вокнаў" msgstr "Спіс вокнаў"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
msgid "When to group windows" msgid "When to group windows"
msgstr "Умовы групавання вокнаў" msgstr "Калі групаваць вокны"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
msgid "" msgid ""
"Decides when to group windows from the same application on the window list. " "Decides when to group windows from the same application on the window list. "
"Possible values are “never”, “auto” and “always”." "Possible values are “never”, “auto” and “always”."
msgstr "" msgstr ""
"Вызначае калі групаваць вокны адной праграмы ў спісе вокнаў. Магчымыя " "Вырашае калі групаваць вокны адной праграмы ў спісе вокнаў. Магчымыя "
"значэнні: «never» (ніколі), «auto» (аўтаматычна), «always» (заўсёды)." "значэнні: \"never\" (ніколі), \"auto\" (аўтаматычна), \"always\" (заўсёды)."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:100 msgid "Show the window list on all monitors"
msgid "Show windows from all workspaces" msgstr "Паказаць спіс вокнаў на ўсіх маніторах"
msgstr "Паказваць вокны з усіх працоўных прастор"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
msgid "Whether to show windows from all workspaces or only the current one."
msgstr "Паказваць вокны з усіх працоўных прастор ці толькі з бягучай."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
msgid "Show the window list on all monitors"
msgstr "Паказваць спіс вокнаў на ўсіх маніторах"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
msgid "" msgid ""
"Whether to show the window list on all connected monitors or only on the " "Whether to show the window list on all connected monitors or only on the "
"primary one." "primary one."
msgstr "" msgstr ""
"Паказваць спіс вокнаў на ўсіх падлучаных маніторах ці толькі на асноўным." "Ці паказваць спіс вокнаў на ўсіх злучаных маніторах або толькі на галоўным."
#: extensions/window-list/prefs.js:29 #: extensions/window-list/prefs.js:32
msgid "Window Grouping" msgid "Window Grouping"
msgstr "Групаванне вокнаў" msgstr "Групаванне вокнаў"
#: extensions/window-list/prefs.js:58 #: extensions/window-list/prefs.js:50
msgid "Never group windows" msgid "Never group windows"
msgstr "Ніколі не групаваць вокны" msgstr "Ніколі не групаваць вокны"
#: extensions/window-list/prefs.js:59 #: extensions/window-list/prefs.js:51
msgid "Group windows when space is limited" msgid "Group windows when space is limited"
msgstr "Групаваць вокны калі не хапае месца" msgstr "Групаваць вокны калі не хапае месца"
#: extensions/window-list/prefs.js:60 #: extensions/window-list/prefs.js:52
msgid "Always group windows" msgid "Always group windows"
msgstr "Заўсёды групаваць вокны" msgstr "Заўсёды групаваць вокны"
#: extensions/window-list/prefs.js:94 #: extensions/window-list/prefs.js:75
msgid "Show on all monitors" msgid "Show on all monitors"
msgstr "Паказваць на ўсіх маніторах" msgstr "Паказаць усе маніторы"
#: extensions/window-list/workspaceIndicator.js:247 #: extensions/workspace-indicator/prefs.js:141
#: extensions/workspace-indicator/extension.js:253
msgid "Workspace Indicator"
msgstr "Індыкатар працоўнай прасторы"
#: extensions/workspace-indicator/prefs.js:34
msgid "Workspace Names" msgid "Workspace Names"
msgstr "Назвы працоўных прастор" msgstr "Назвы працоўных прастораў"
#: extensions/workspace-indicator/prefs.js:67 #: extensions/workspace-indicator/prefs.js:157
msgid "Name"
msgstr "Імя"
#: extensions/workspace-indicator/prefs.js:198
#, javascript-format #, javascript-format
msgid "Workspace %d" msgid "Workspace %d"
msgstr "Працоўная прастора %d" msgstr "Працоўная прастора %d"
#: extensions/workspace-indicator/prefs.js:208
msgid "Add Workspace"
msgstr "Дадаць працоўную прастору"
#~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Прымацаваць мадальны дыялог да бацькоўскага акна"
#~ msgid ""
#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell."
#~ msgstr ""
#~ "Гэты ключ засланяе ключ у org.gnome.mutter калі запушчаны GNOME Shell."
#~ 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 ""
#~ "Гэты ключ засланяе ключ у org.gnome.desktop.wm.preferences калі запушчаны "
#~ "GNOME Shell."
#~ 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 "Application"
#~ msgstr "Праграма"
#~ msgid "Create new matching rule"
#~ msgstr "Стварыць новае правіла адпаведнасці"
#~ msgid "Add"
#~ msgstr "Дадаць"
#~ msgid "Hello, world!"
#~ msgstr "Прывітанне, свет!"
#~ 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 ""
#~ "Example пакажа як ствараць пашырэнні для Shell. Сам па сабе ён мае мала "
#~ "функцыянальнасці.\n"
#~ "Тым не менш, можна змяніць тэкст прывітання."
#~ msgid "Name"
#~ msgstr "Імя"
+1 -1
View File
@@ -83,7 +83,7 @@ msgid ""
msgstr "" msgstr ""
"Intenta utilitzar més espai de la pantalla per a posicionar les miniatures de " "Intenta utilitzar més espai de la pantalla per a posicionar les miniatures de "
"les finestres adaptant-les a la ràtio d'aspecte de la pantalla, consolidant-" "les finestres adaptant-les a la ràtio d'aspecte de la pantalla, consolidant-"
"les més per a reduir la caixa que les envolta. Aquest paràmetre de " "les més per a reduir la capsa que les envolta. Aquest paràmetre de "
"configuració només s'aplica a l'estratègia de posicionament de finestres " "configuració només s'aplica a l'estratègia de posicionament de finestres "
"natural." "natural."
+30 -30
View File
@@ -8,23 +8,23 @@ msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n" "Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n" "issues\n"
"POT-Creation-Date: 2020-10-08 21:24+0000\n" "POT-Creation-Date: 2020-05-28 00:55+0000\n"
"PO-Revision-Date: 2020-10-17 22:14+0200\n" "PO-Revision-Date: 2020-07-12 18:10+0200\n"
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n" "Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
"Language-Team: Friulian <fur@li.org>\n" "Language-Team: Friulian <fur@li.org>\n"
"Language: fur\n" "Language: fur\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.4.1\n" "X-Generator: Poedit 2.3.1\n"
#: data/gnome-classic.desktop.in:3 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic" msgid "GNOME Classic"
msgstr "GNOME Classic" msgstr "GNOME Classic"
#: data/gnome-classic.desktop.in:4 #: data/gnome-classic.desktop.in:4
msgid "This session logs you into GNOME Classic" msgid "This session logs you into GNOME Classic"
msgstr "Cheste session ti fâs jentrâ in GNOME Classic" msgstr "Cheste session a si invie cun GNOME classic"
#: extensions/apps-menu/extension.js:113 #: extensions/apps-menu/extension.js:113
msgid "Favorites" msgid "Favorites"
@@ -43,8 +43,8 @@ msgid ""
"A list of strings, each containing an application id (desktop file name), " "A list of strings, each containing an application id (desktop file name), "
"followed by a colon and the workspace number" "followed by a colon and the workspace number"
msgstr "" msgstr ""
"Une liste di stringhis, ogniune e ten il ID di une aplicazion (non dal file ." "Une liste di stringhis, ogniune a ten il ID di une aplicazion (non dal file ."
"desktop), cun daûr doi ponts e il numar dal spazi di lavôr" "desktop), seguît di doi ponts e il numar dal spazi di lavôr"
#: extensions/auto-move-windows/prefs.js:35 #: extensions/auto-move-windows/prefs.js:35
msgid "Workspace Rules" msgid "Workspace Rules"
@@ -63,15 +63,15 @@ msgstr "No si è rivâts a parâ fûr la unitât “%s”»:"
#: extensions/drive-menu/extension.js:128 #: extensions/drive-menu/extension.js:128
msgid "Removable devices" msgid "Removable devices"
msgstr "Dispositîfs estraibii" msgstr "Argagn rimovibil"
#: extensions/drive-menu/extension.js:155 #: extensions/drive-menu/extension.js:155
msgid "Open Files" msgid "Open Files"
msgstr "Vierç i files" msgstr "Vierç i file"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
msgid "Use more screen for windows" msgid "Use more screen for windows"
msgstr "Dopre plui schermi pai barcons" msgstr "Dopre plui spazi par i balcons"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
msgid "" msgid ""
@@ -79,14 +79,14 @@ msgid ""
"aspect ratio, and consolidating them further to reduce the bounding box. " "aspect ratio, and consolidating them further to reduce the bounding box. "
"This setting applies only with the natural placement strategy." "This setting applies only with the natural placement strategy."
msgstr "" msgstr ""
"Cîr di doprâ plui schermi par plaçâ lis miniaturis dai barcons, adatant il " "Cîr di doprâ plui puest par plaçâ lis miniaturis dai balcons, adatânsi al "
"rapuart di aspiet dal visôr e consolidant ancjemo di plui lis miniaturis par " "rapuart di aspiet dal visôr e consolidanlis ancjemo di plui par ridusi il "
"ridusi il spazi complessîf. Cheste impostazion si apliche dome se " "spazi complessîf. Cheste impostazion a si apliche dome se l'algoritmo di "
"l'algoritmi di plaçament al è naturâl." "posizionament al è \"natural\"."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
msgid "Place window captions on top" msgid "Place window captions on top"
msgstr "Met il titul dal barcon parsore" msgstr "Met il titul dal balcon insomp"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
msgid "" msgid ""
@@ -94,9 +94,9 @@ msgid ""
"shell default of placing it at the bottom. Changing this setting requires " "shell default of placing it at the bottom. Changing this setting requires "
"restarting the shell to have any effect." "restarting the shell to have any effect."
msgstr "" msgstr ""
"Se VÊR, al place i titui dai barcons denant des relativis miniaturis, " "Se VÊR, al place i titui dai balcons insomp as relativis miniaturis, lant in "
"sorpassant il compuartament predefinît de shell, che lis place in bas. " "volte al compuartament normâl de shell, che lis place in bas.Cambiant cheste "
"Cambiant cheste impostazion si scugne tornâ a inviâ la shell." "impostazion a si scugne tornâ a inviâ la shell."
#: extensions/places-menu/extension.js:89 #: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:93 #: extensions/places-menu/extension.js:93
@@ -120,7 +120,7 @@ msgstr "Computer"
#: extensions/places-menu/placeDisplay.js:359 #: extensions/places-menu/placeDisplay.js:359
msgid "Home" msgid "Home"
msgstr "Home" msgstr "Cjase"
#: extensions/places-menu/placeDisplay.js:404 #: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network" msgid "Browse Network"
@@ -128,11 +128,11 @@ msgstr "Esplore rêt"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7 #: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
msgid "Cycle Screenshot Sizes" msgid "Cycle Screenshot Sizes"
msgstr "Dimensions videadis catuardis ciclichis" msgstr "Dimensions caturis di schermi ciclichis"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11 #: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
msgid "Cycle Screenshot Sizes Backward" msgid "Cycle Screenshot Sizes Backward"
msgstr "Dimensions videadis caturadis ciclichis indaûr" msgstr "Dimensions caturis di schermi ciclichis indaûr"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5 #: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
msgid "Theme name" msgid "Theme name"
@@ -184,19 +184,19 @@ msgstr "Siere ducj"
#: extensions/window-list/extension.js:734 #: extensions/window-list/extension.js:734
msgid "Window List" msgid "Window List"
msgstr "Liste barcons" msgstr "Liste balcons"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
msgid "When to group windows" msgid "When to group windows"
msgstr "Cuant meti in grup i barcons" msgstr "Quant ingru i balcons"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
msgid "" msgid ""
"Decides when to group windows from the same application on the window list. " "Decides when to group windows from the same application on the window list. "
"Possible values are “never”, “auto” and “always”." "Possible values are “never”, “auto” and “always”."
msgstr "" msgstr ""
"Al decît cuant meti dongje i barcons de stesse aplicazion su la liste dai " "Al decît cuant intropâ i balcons de stesse aplicazion su le liste dai "
"barcons. I valôrs pussibii a son “never”, “auto” e “always”." "balcons. I pussibii valôrs a son “never”, “auto” e “always”."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:100 #: extensions/window-list/prefs.js:100
@@ -218,23 +218,23 @@ msgid ""
"primary one." "primary one."
msgstr "" msgstr ""
"Indiche se mostrâ la liste dai barcons su ducj i visôrs tacâts o nome sul " "Indiche se mostrâ la liste dai barcons su ducj i visôrs tacâts o nome sul "
"chel principâl." "principâl."
#: extensions/window-list/prefs.js:29 #: extensions/window-list/prefs.js:29
msgid "Window Grouping" msgid "Window Grouping"
msgstr "Intropament di barcons" msgstr "Ingrumament balcons"
#: extensions/window-list/prefs.js:58 #: extensions/window-list/prefs.js:58
msgid "Never group windows" msgid "Never group windows"
msgstr "No sta meti mai in grup i barcons" msgstr "No ingru i balcons"
#: extensions/window-list/prefs.js:59 #: extensions/window-list/prefs.js:59
msgid "Group windows when space is limited" msgid "Group windows when space is limited"
msgstr "Met dongje i barcons cuant che il spazi al è limitât" msgstr "Ingrume i balcons quanche al'è pôc puest"
#: extensions/window-list/prefs.js:60 #: extensions/window-list/prefs.js:60
msgid "Always group windows" msgid "Always group windows"
msgstr "Met simpri in grup i barcons" msgstr "Ingrume simpri i balcons"
#: extensions/window-list/prefs.js:94 #: extensions/window-list/prefs.js:94
msgid "Show on all monitors" msgid "Show on all monitors"
+176 -152
View File
@@ -2,21 +2,21 @@
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER # Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell-extensions package. # This file is distributed under the same license as the gnome-shell-extensions package.
# #
# A S Alam <aalam@users.sf.net>, 2011, 2012, 2013, 2014, 2015, 2018, 2021. # A S Alam <aalam@users.sf.net>, 2011, 2012, 2013, 2014, 2015, 2018.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell-extensions gnome-3-0\n" "Project-Id-Version: gnome-shell-extensions gnome-3-0\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/is" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/is"
"sues\n" "sues\n"
"POT-Creation-Date: 2020-05-28 00:55+0000\n" "POT-Creation-Date: 2018-02-20 23:07+0000\n"
"PO-Revision-Date: 2021-02-13 16:51-0800\n" "PO-Revision-Date: 2018-03-10 09:36-0600\n"
"Last-Translator: A S Alam <aalam@satluj.org>\n" "Last-Translator: A S Alam <alam.yellow@gmail.com>\n"
"Language-Team: Punjabi <punjabi-translation@googlegroups.com>\n" "Language-Team: Punjabi <punjabi-translation@googlegroups.com>\n"
"Language: pa\n" "Language: pa\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 20.08.1\n" "X-Generator: Lokalize 2.0\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
@@ -27,11 +27,73 @@ msgstr "ਗਨੋਮ ਕਲਾਸਿਕ"
msgid "This session logs you into GNOME Classic" msgid "This session logs you into GNOME Classic"
msgstr "ਇਹ ਸ਼ੈਸ਼ਨ ਤੁਹਾਨੂੰ ਗਨੋਮ ਕਲਾਸਿਕ ਵਿੱਚ ਲਾਗ ਕਰਦਾ ਹੈ" msgstr "ਇਹ ਸ਼ੈਸ਼ਨ ਤੁਹਾਨੂੰ ਗਨੋਮ ਕਲਾਸਿਕ ਵਿੱਚ ਲਾਗ ਕਰਦਾ ਹੈ"
#: 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 ""
"ਇਹ ਕੁੰਜੀ ਗਨੋਮ ਸ਼ੈੱਲ ਚੱਲਣ ਦੇ ਦੌਰਾਨ 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 ""
"ਇਹ ਕੁੰਜੀ ਗਨੋਮ ਸ਼ੈੱਲ ਚੱਲਣ ਦੇ ਦੌਰਾਨ org.gnome.desktop.wm.preferencesr ਕੁੰਜੀ ਨੂੰ"
" ਅਣਡਿੱਠਾ "
"ਕਰਦੀ ਹੈ।"
#: 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" msgid "Favorites"
msgstr "ਪਸੰਦੀਦਾ" msgstr "ਪਸੰਦੀਦਾ"
#: extensions/apps-menu/extension.js:369 #: extensions/apps-menu/extension.js:417
msgid "Applications" msgid "Applications"
msgstr "ਐਪਲੀਕੇਸ਼ਨ" msgstr "ਐਪਲੀਕੇਸ਼ਨ"
@@ -48,30 +110,81 @@ msgstr ""
" ਵਰਕਸਪੇਸ ਨੰਬਰ " " ਵਰਕਸਪੇਸ ਨੰਬਰ "
"ਰੱਖਦਾ ਹੈ" "ਰੱਖਦਾ ਹੈ"
#: extensions/auto-move-windows/prefs.js:35 #: extensions/auto-move-windows/prefs.js:53
#| msgid "Workspace Names" msgid "Application"
msgid "Workspace Rules" msgstr "ਐਪਲੀਕੇਸ਼ਨ"
msgstr "ਵਰਕਸਪੇਸ ਨਿਯਮ"
#: extensions/auto-move-windows/prefs.js:243 #: extensions/auto-move-windows/prefs.js:62
#: extensions/auto-move-windows/prefs.js:117
msgid "Workspace"
msgstr "ਵਰਕਸਪੇਸ"
#: extensions/auto-move-windows/prefs.js:78
msgid "Add Rule" msgid "Add Rule"
msgstr "ਨਿਯਮ ਜੋੜੋ" msgstr "ਨਿਯਮ ਜੋੜੋ"
#: extensions/auto-move-windows/prefs.js:98
msgid "Create new matching rule"
msgstr "ਨਵਾਂ ਮਿਲਾਉਣ ਨਿਯਮ ਬਣਾਓ"
#: extensions/auto-move-windows/prefs.js:103
msgid "Add"
msgstr "ਜੋੜੋ"
#. TRANSLATORS: %s is the filesystem name #. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112 #: extensions/drive-menu/extension.js:103
#: extensions/places-menu/placeDisplay.js:233 #: extensions/places-menu/placeDisplay.js:219
#, javascript-format #, javascript-format
#| msgid "Ejecting drive '%s' failed:"
msgid "Ejecting drive “%s” failed:" msgid "Ejecting drive “%s” failed:"
msgstr "ਡਰਾਇਵ “%s“ ਬਾਹਰ ਕੱਢਣ ਲਈ ਫੇਲ੍ਹ:" msgstr "ਡਰਾਇਵ “%s“ ਬਾਹਰ ਕੱਢਣ ਲਈ ਫੇਲ੍ਹ:"
#: extensions/drive-menu/extension.js:128 #: extensions/drive-menu/extension.js:118
msgid "Removable devices" msgid "Removable devices"
msgstr "ਹਟਾਉਣਯੋਗ ਜੰਤਰ" msgstr "ਹਟਾਉਣਯੋਗ ਜੰਤਰ"
#: extensions/drive-menu/extension.js:155 #: extensions/drive-menu/extension.js:143
#| msgid "Open File"
msgid "Open Files" msgid "Open Files"
msgstr "ਫਾਇਲਾਂ ਨੂੰ ਖੋਲ੍ਹੋ" msgstr "ਫਾਇਲਾਂ ਨੂੰ ਖੋਲ੍ਹੋ"
#: extensions/example/extension.js:17
msgid "Hello, world!"
msgstr "ਹੈਲੋ, ਵਰਲਡ!"
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:5
msgid "Alternative greeting text."
msgstr "ਬਦਲਵਾਂ ਸਵਾਗਤੀ ਟੈਕਸਟ ਹੈ।"
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:6
msgid ""
"If not empty, it contains the text that will be shown when clicking on the "
"panel."
msgstr ""
"ਜੇ ਖਾਲੀ ਨਹੀਂ ਤਾਂ ਇਹ ਟੈਕਸਟ ਰੱਖਦਾ ਹੈ, ਜੋ ਕਿ ਪੈਨਲ ਨੂੰ ਕਲਿੱਕ ਕਰਨ ਨਾਲ ਵੇਖਾਇਆ"
" ਜਾਵੇਗਾ।"
#: extensions/example/prefs.js: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 it's possible to customize the greeting message."
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 ""
"Example ਦਾ ਮਕਸਦ ਸ਼ੈਲ ਲਈ ਇੱਕ ਵਧੀਆ ਕੰਮ ਕਰਦੀ ਇਕਸਟੈਸ਼ਨ ਬਣਾਉਣ ਦੀ ਉਦਾਹਰਨ ਦੇਣਾ ਹੈ ਅਤੇ"
" ਇਸ ਦਾ "
"ਖੁਦ ਕੋਈ ਬਹੁਤਾ ਕੰਮ ਨਹੀਂ ਹੈ।\n"
"ਫੇਰ ਵੀ ਸਵਾਗਤੀ ਸੁਨੇਹੇ ਨੂੰ ਬਦਲਣਾ ਸੰਭਵ ਹੈ।"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5 #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
msgid "Use more screen for windows" msgid "Use more screen for windows"
msgstr "ਵਿੰਡੋਜ਼ ਲਈ ਹੋਰ ਸਕਰੀਨ ਵਰਤੋਂ" msgstr "ਵਿੰਡੋਜ਼ ਲਈ ਹੋਰ ਸਕਰੀਨ ਵਰਤੋਂ"
@@ -103,31 +216,32 @@ msgstr ""
"ਨੂੰ ਅਣਡਿੱਠਾ ਕਰਦਾ ਹੈ। ਇਹ ਸੈਟਿੰਗ ਬਦਲਾਅ ਦੇ ਚਾਲੂ ਹੋਣ ਲਈ ਸ਼ੈਲ ਨੂੰ ਮੁੜ-ਚਾਲੂ ਕਰਨ ਦੀ" "ਨੂੰ ਅਣਡਿੱਠਾ ਕਰਦਾ ਹੈ। ਇਹ ਸੈਟਿੰਗ ਬਦਲਾਅ ਦੇ ਚਾਲੂ ਹੋਣ ਲਈ ਸ਼ੈਲ ਨੂੰ ਮੁੜ-ਚਾਲੂ ਕਰਨ ਦੀ"
" ਲੋੜ ਹੈ।" " ਲੋੜ ਹੈ।"
#: extensions/places-menu/extension.js:89 #: extensions/places-menu/extension.js:79
#: extensions/places-menu/extension.js:93 #: extensions/places-menu/extension.js:82
msgid "Places" msgid "Places"
msgstr "ਥਾਵਾਂ" msgstr "ਥਾਵਾਂ"
#: extensions/places-menu/placeDisplay.js:46 #: extensions/places-menu/placeDisplay.js:66
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "“%s“ ਚਲਾਉਣ ਲਈ ਫੇਲ੍ਹ ਹੈ"
#: extensions/places-menu/placeDisplay.js:61
#, javascript-format #, javascript-format
msgid "Failed to mount volume for “%s”" msgid "Failed to mount volume for “%s”"
msgstr "“%s” ਲਈ ਵਾਲੀਅਮ ਮਾਊਂਟ ਕਰਨ ਲਈ ਅਸਫ਼ਲ" msgstr "“%s” ਲਈ ਵਾਲੀਅਮ ਮਾਊਂਟ ਕਰਨ ਲਈ ਅਸਫ਼ਲ"
#: extensions/places-menu/placeDisplay.js:148 #: extensions/places-menu/placeDisplay.js:79
#: extensions/places-menu/placeDisplay.js:171 #, javascript-format
#| msgid "Failed to launch \"%s\""
msgid "Failed to launch “%s”"
msgstr "“%s“ ਚਲਾਉਣ ਲਈ ਫੇਲ੍ਹ ਹੈ"
#: extensions/places-menu/placeDisplay.js:135
#: extensions/places-menu/placeDisplay.js:158
msgid "Computer" msgid "Computer"
msgstr "ਕੰਪਿਊਟਰ" msgstr "ਕੰਪਿਊਟਰ"
#: extensions/places-menu/placeDisplay.js:359 #: extensions/places-menu/placeDisplay.js:336
msgid "Home" msgid "Home"
msgstr "ਘਰ" msgstr "ਘਰ"
#: extensions/places-menu/placeDisplay.js:404 #: extensions/places-menu/placeDisplay.js:378
msgid "Browse Network" msgid "Browse Network"
msgstr "ਨੈੱਟਵਰਕ ਝਲਕ ਵੇਖੋ" msgstr "ਨੈੱਟਵਰਕ ਝਲਕ ਵੇਖੋ"
@@ -136,6 +250,7 @@ msgid "Cycle Screenshot Sizes"
msgstr "ਸਾਈਕਲ ਸਕਰੀਨਸ਼ਾਟ ਆਕਾਰ" msgstr "ਸਾਈਕਲ ਸਕਰੀਨਸ਼ਾਟ ਆਕਾਰ"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11 #: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
#| msgid "Cycle Screenshot Sizes"
msgid "Cycle Screenshot Sizes Backward" msgid "Cycle Screenshot Sizes Backward"
msgstr "ਸਾਈਕਲ ਸਕਰੀਨਸ਼ਾਟ ਆਕਾਰ ਪਿੱਛੇ ਵੱਲ" msgstr "ਸਾਈਕਲ ਸਕਰੀਨਸ਼ਾਟ ਆਕਾਰ ਪਿੱਛੇ ਵੱਲ"
@@ -147,47 +262,52 @@ msgstr "ਥੀਮ ਨਾਂ"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell" msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "ਥੀਮ ਦਾ ਨਾਂ, ਜੋ ~/.themes/name/gnome-shell ਤੋਂ ਲੋਡ ਕੀਤਾ ਜਾਵੇਗਾ" msgstr "ਥੀਮ ਦਾ ਨਾਂ, ਜੋ ~/.themes/name/gnome-shell ਤੋਂ ਲੋਡ ਕੀਤਾ ਜਾਵੇਗਾ"
#: extensions/window-list/extension.js:98 #: extensions/window-list/extension.js:106
msgid "Close" msgid "Close"
msgstr "ਬੰਦ ਕਰੋ" msgstr "ਬੰਦ ਕਰੋ"
#: extensions/window-list/extension.js:118 #: extensions/window-list/extension.js:125
msgid "Unminimize" msgid "Unminimize"
msgstr "ਅਣ-ਨਿਊਨਤਮ" msgstr "ਅਣ-ਨਿਊਨਤਮ"
#: extensions/window-list/extension.js:118 #: extensions/window-list/extension.js:126
msgid "Minimize" msgid "Minimize"
msgstr "ਨਿਊਨਤਮ" msgstr "ਨਿਊਨਤਮ"
#: extensions/window-list/extension.js:125 #: extensions/window-list/extension.js:132
msgid "Unmaximize" msgid "Unmaximize"
msgstr "ਅਣ-ਵੱਧੋ-ਵੱਧ" msgstr "ਅਣ-ਵੱਧੋ-ਵੱਧ"
#: extensions/window-list/extension.js:125 #: extensions/window-list/extension.js:133
msgid "Maximize" msgid "Maximize"
msgstr "ਵੱਧੋ-ਵੱਧ" msgstr "ਵੱਧੋ-ਵੱਧ"
#: extensions/window-list/extension.js:428 #: extensions/window-list/extension.js:408
msgid "Minimize all" msgid "Minimize all"
msgstr "ਸਭ ਨਿਊਨਤਮ ਕਰੋ" msgstr "ਸਭ ਨਿਊਨਤਮ ਕਰੋ"
#: extensions/window-list/extension.js:434 #: extensions/window-list/extension.js:414
msgid "Unminimize all" msgid "Unminimize all"
msgstr "ਸਭ ਅਣ-ਨਿਊਨਤਮ ਕਰੋ" msgstr "ਸਭ ਅਣ-ਨਿਊਨਤਮ ਕਰੋ"
#: extensions/window-list/extension.js:440 #: extensions/window-list/extension.js:420
msgid "Maximize all" msgid "Maximize all"
msgstr "ਸਭ ਵੱਧ-ਵੱਧ ਕਰੋ" msgstr "ਸਭ ਵੱਧ-ਵੱਧ ਕਰੋ"
#: extensions/window-list/extension.js:448 #: extensions/window-list/extension.js:429
msgid "Unmaximize all" msgid "Unmaximize all"
msgstr "ਸਭ ਅਣ-ਵੱਧੋ-ਵੱਧ ਕਰੋ" msgstr "ਸਭ ਅਣ-ਵੱਧੋ-ਵੱਧ ਕਰੋ"
#: extensions/window-list/extension.js:456 #: extensions/window-list/extension.js:438
msgid "Close all" msgid "Close all"
msgstr "ਸਭ ਬੰਦ ਕਰੋ" msgstr "ਸਭ ਬੰਦ ਕਰੋ"
#: extensions/window-list/extension.js:734 #: 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" msgid "Window List"
msgstr "ਵਿੰਡੋਜ਼ ਸੂਚੀ" msgstr "ਵਿੰਡੋਜ਼ ਸੂਚੀ"
@@ -196,157 +316,61 @@ msgid "When to group windows"
msgstr "ਵਿੰਡੋਜ਼ ਗਰੁੱਪ ਕਦੋਂ ਬਣਾਉਣਾ ਹੈ" msgstr "ਵਿੰਡੋਜ਼ ਗਰੁੱਪ ਕਦੋਂ ਬਣਾਉਣਾ ਹੈ"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
#| msgid ""
#| "Decides when to group windows from the same application on the window "
#| "list. Possible values are \"never\", \"auto\" and \"always\"."
msgid "" msgid ""
"Decides when to group windows from the same application on the window list. " "Decides when to group windows from the same application on the window list. "
"Possible values are “never”, “auto” and “always”." "Possible values are “never”, “auto” and “always”."
msgstr "" msgstr ""
"ਵਿੰਡੋ ਲਿਸਟ ਵਿੱਚ ਇਕੋ ਕੰਮ ਦੇ ਵਿੰਡੋ ਦਾ ਗਰੁੱਪ ਕਦੋਂ ਬਣਾਉਣਾ ਹੈ, ਇਹ ਦੱਸੋ। ਸੰਭਵ ਮੁੱਲ" "ਵਿੰਡੋ ਲਿਸਟ ਵਿੱਚ ਇਕੋ ਕੰਮ ਦੇ ਵਿੰਡੋ ਦਾ ਗਰੁੱਪ ਕਦੋਂ ਬਣਾਉਣਾ ਹੈ, ਇਹ ਦੱਸੋ। ਸੰਭਵ ਮੁੱਲ"
" ਹਨ “ਕਦੇ ਨਹੀਂ“, “ਆਟੋ“ " " ਹਨ “ਕਦੇ ਨਹੀਂ“, "
"ਅਤੇ “ਹਮੇਸ਼ਾ“।" "“ਆਟੋ“ ਅਤੇ “ਹਮੇਸ਼ਾ“।"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20 #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:100
#| 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 "ਕੀ ਸਭ ਵਰਕਸਪੇਸਾਂ ਤੋਂ ਵਿੰਡੋ ਵੇਖਣੀਆਂ ਹਨ ਜਾਂ ਸਿਰਫ਼ ਇੱਕ ਤੋਂ ਹੀ।"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
msgid "Show the window list on all monitors" msgid "Show the window list on all monitors"
msgstr "ਸਭ ਮਾਨੀਟਰਾਂ ਉੱਤੇ ਵਿੰਡੋ ਸੂਚੀ ਵੇਖਾਓ" 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 "" msgid ""
"Whether to show the window list on all connected monitors or only on the " "Whether to show the window list on all connected monitors or only on the "
"primary one." "primary one."
msgstr "" msgstr ""
"ਕੀ ਸਭ ਕਨੈਕਟ ਹੋਏ ਮਾਨੀਟਰਾਂ ਉੱਤੇ ਵਿੰਡੋ ਸੂਚੀ ਦੇਖਣੀ ਹੈ ਜਾਂ ਕੇਵਲ ਪ੍ਰਾਇਮਰੀ ਉੱਤੇ ਹੀ।" "ਕੀ ਸਭ ਕਨੈਕਟ ਹੋਏ ਮਾਨੀਟਰਾਂ ਉੱਤੇ ਵਿੰਡੋ ਸੂਚੀ ਦੇਖਣੀ ਹੈ ਜਾਂ ਕੇਵਲ ਪ੍ਰਾਇਮਰੀ ਉੱਤੇ ਹੀ।"
#: extensions/window-list/prefs.js:29 #: extensions/window-list/prefs.js:28
msgid "Window Grouping" msgid "Window Grouping"
msgstr "ਵਿੰਡੋ ਗਰੁੱਪਿੰਗ" msgstr "ਵਿੰਡੋ ਗਰੁੱਪਿੰਗ"
#: extensions/window-list/prefs.js:58 #: extensions/window-list/prefs.js:46
msgid "Never group windows" msgid "Never group windows"
msgstr "ਵਿੰਡੋ ਦਾ ਗਰੁੱਪ ਕਦੇ ਨਾ ਬਣਾਓ" msgstr "ਵਿੰਡੋ ਦਾ ਗਰੁੱਪ ਕਦੇ ਨਾ ਬਣਾਓ"
#: extensions/window-list/prefs.js:59 #: extensions/window-list/prefs.js:47
msgid "Group windows when space is limited" msgid "Group windows when space is limited"
msgstr "ਜਦੋਂ ਥਾਂ ਥੋੜੀ ਹੋਵੇ ਤਾਂ ਵਿੰਡੋਜ਼ ਦਾ ਗਰੁੱਪ ਬਣਾਓ" msgstr "ਜਦੋਂ ਥਾਂ ਥੋੜੀ ਹੋਵੇ ਤਾਂ ਵਿੰਡੋਜ਼ ਦਾ ਗਰੁੱਪ ਬਣਾਓ"
#: extensions/window-list/prefs.js:60 #: extensions/window-list/prefs.js:48
msgid "Always group windows" msgid "Always group windows"
msgstr "ਵਿੰਡੋ ਦਾ ਗਰੁੱਪ ਹਮੇਸ਼ਾ ਬਣਾਓ" msgstr "ਵਿੰਡੋ ਦਾ ਗਰੁੱਪ ਹਮੇਸ਼ਾ ਬਣਾਓ"
#: extensions/window-list/prefs.js:94 #: extensions/window-list/prefs.js:71
msgid "Show on all monitors" msgid "Show on all monitors"
msgstr "ਸਭ ਮਾਨੀਟਰਾਂ ਉੱਤੇ ਵੇਖਾਓ" msgstr "ਸਭ ਮਾਨੀਟਰਾਂ ਉੱਤੇ ਵੇਖਾਓ"
#: extensions/window-list/workspaceIndicator.js:207 #: extensions/workspace-indicator/prefs.js:134
#: extensions/workspace-indicator/extension.js:213
msgid "Workspace Indicator"
msgstr "ਵਰਕਸਪੇਸ ਇੰਡੀਕੇਟਰ"
#: extensions/workspace-indicator/prefs.js:34
msgid "Workspace Names" msgid "Workspace Names"
msgstr "ਵਰਕਸਪੇਸ ਨਾਂ" msgstr "ਵਰਕਸਪੇਸ ਨਾਂ"
#: extensions/workspace-indicator/prefs.js:67 #: extensions/workspace-indicator/prefs.js:150
msgid "Name"
msgstr "ਨਾਂ"
#: extensions/workspace-indicator/prefs.js:190
#, javascript-format #, javascript-format
msgid "Workspace %d" msgid "Workspace %d"
msgstr "ਵਰਕਸਪੇਸ %d" msgstr "ਵਰਕਸਪੇਸ %d"
#: extensions/workspace-indicator/prefs.js:218
#| msgid "Workspace"
msgid "Add Workspace"
msgstr "ਵਰਕਸਪੇਸ ਜੋੜੋ"
#~ msgid "Attach modal dialog to the parent window"
#~ msgstr "ਮੁੱਢਲੀ ਵਿੰਡੋ ਵਿੱਚ ਮਾਡਲ ਡਾਈਲਾਗ ਜੋੜੋ"
#~ msgid ""
#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell."
#~ msgstr "ਇਹ ਕੁੰਜੀ ਗਨੋਮ ਸ਼ੈੱਲ ਚੱਲਣ ਦੇ ਦੌਰਾਨ 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 ""
#~ "ਇਹ ਕੁੰਜੀ ਗਨੋਮ ਸ਼ੈੱਲ ਚੱਲਣ ਦੇ ਦੌਰਾਨ org.gnome.desktop.wm.preferencesr ਕੁੰਜੀ ਨੂੰ ਅਣਡਿੱਠਾ "
#~ "ਕਰਦੀ ਹੈ।"
#~ 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 "Application"
#~ msgstr "ਐਪਲੀਕੇਸ਼ਨ"
#~ msgid "Create new matching rule"
#~ msgstr "ਨਵਾਂ ਮਿਲਾਉਣ ਨਿਯਮ ਬਣਾਓ"
#~ msgid "Add"
#~ msgstr "ਜੋੜੋ"
#~ msgid "Hello, world!"
#~ msgstr "ਹੈਲੋ, ਵਰਲਡ!"
#~ 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 it's possible to customize the greeting message."
#~ 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 ""
#~ "Example ਦਾ ਮਕਸਦ ਸ਼ੈਲ ਲਈ ਇੱਕ ਵਧੀਆ ਕੰਮ ਕਰਦੀ ਇਕਸਟੈਸ਼ਨ ਬਣਾਉਣ ਦੀ ਉਦਾਹਰਨ ਦੇਣਾ ਹੈ ਅਤੇ ਇਸ "
#~ "ਦਾ ਖੁਦ ਕੋਈ ਬਹੁਤਾ ਕੰਮ ਨਹੀਂ ਹੈ।\n"
#~ "ਫੇਰ ਵੀ ਸਵਾਗਤੀ ਸੁਨੇਹੇ ਨੂੰ ਬਦਲਣਾ ਸੰਭਵ ਹੈ।"
#~ msgid "Name"
#~ msgstr "ਨਾਂ"
#~ msgid "GNOME Shell Classic" #~ msgid "GNOME Shell Classic"
#~ msgstr "ਗਨੋਮ ਸ਼ੈਲ ਕਲਾਸਿਕ" #~ msgstr "ਗਨੋਮ ਸ਼ੈਲ ਕਲਾਸਿਕ"