diff --git a/NEWS b/NEWS
index 829f2b3d..34d13c1d 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,22 @@
+3.31.92
+=======
+* Misc. bug fixes and cleanups [Florian; !57, !58, !59, !60]
+
+Contributors:
+ Florian Müllner
+
+3.31.91
+=======
+* apps-menu: Remove outdated legacy-tray handling [Florian; !53]
+* user-theme: Allow using XDG user data dir [Tomasz; !55]
+* Misc. bug fixes and cleanups [Florian; !52, !54, !56]
+
+Contributors:
+ Tomasz Gąsior, Florian Müllner
+
+Translators:
+ Matej Urbančič [sl], Gun Chleoc [gd]
+
3.31.90
=======
* Misc. bug fixes and cleanups [Florian; !49, !50, !51]
diff --git a/data/gnome-shell-sass/_colors.scss b/data/gnome-shell-sass/_colors.scss
index d1fa4b6f..447ad70b 100644
--- a/data/gnome-shell-sass/_colors.scss
+++ b/data/gnome-shell-sass/_colors.scss
@@ -2,26 +2,23 @@
// it gets @if ed depending on $variant
-$base_color: if($variant =='light', #ffffff, #292929);
-$bg_color: if($variant =='light', #ededed, #393f3f);
-$fg_color: if($variant =='light', #2e3436, #eeeeec);
+$base_color: if($variant == 'light', #ffffff, lighten(desaturate(#241f31, 20%), 2%));
+$bg_color: if($variant == 'light', #f6f5f4, desaturate(#3d3846, 10%));
+$fg_color: if($variant == 'light', #2e3436, #eeeeec);
$selected_fg_color: #ffffff;
-$selected_bg_color: if($variant == 'light', #4a90d9, darken(#4a90d9,20%));
-$selected_borders_color: if($variant=='light', darken($selected_bg_color, 30%),
- darken($selected_bg_color, 20%));
-$borders_color: if($variant =='light', darken($bg_color,30%), darken($bg_color,12%));
-$borders_edge: if($variant =='light', white, transparentize($fg_color, 0.9));
-$link_color: if($variant == 'light', darken($selected_bg_color,10%),
- lighten($selected_bg_color,20%));
-$link_visited_color: if($variant == 'light', darken($selected_bg_color,20%),
- lighten($selected_bg_color,10%));
+$selected_bg_color: if($variant == 'light', #3584e4, darken(#3584e4, 20%));
+$selected_borders_color: if($variant== 'light', darken($selected_bg_color, 15%), darken($selected_bg_color, 30%));
+$borders_color: if($variant == 'light', darken($bg_color, 18%), darken($bg_color, 10%));
+$borders_edge: if($variant == 'light', transparentize(white, 0.2), transparentize($fg_color, 0.93));
+$link_color: if($variant == 'light', darken($selected_bg_color, 10%), lighten($selected_bg_color, 20%));
+$link_visited_color: if($variant == 'light', darken($selected_bg_color, 20%), lighten($selected_bg_color, 10%));
$top_hilight: $borders_edge;
$warning_color: #f57900;
$error_color: #cc0000;
-$success_color: if($variant =='light', #73d216, darken(#73d216,10%));
-$destructive_color: if($variant =='light', #ef2929, darken(#ef2929,10%));
+$success_color: if($variant == 'light', #33d17a, darken(#33d17a, 10%));
+$destructive_color: if($variant == 'light', #e01b24, darken(#e01b24, 10%));
$osd_fg_color: #eeeeec;
$osd_bg_color: #2e3436;
diff --git a/data/gnome-shell-sass/_common.scss b/data/gnome-shell-sass/_common.scss
index 06c50d1d..9dedbdcd 100644
--- a/data/gnome-shell-sass/_common.scss
+++ b/data/gnome-shell-sass/_common.scss
@@ -267,8 +267,7 @@ StScrollBar {
}
.end-session-dialog-logout-icon {
- //border: 2px solid #8b8b8b;
- border-radius: 5px;
+ border-radius: 99px;
width: 48px;
height: 48px;
background-size: contain;
@@ -428,7 +427,7 @@ StScrollBar {
}
.polkit-dialog-user-icon {
- border-radius: 5px;
+ border-radius: 99px;
background-size: contain;
width: 48px;
height: 48px;
@@ -508,6 +507,7 @@ StScrollBar {
.popup-menu-arrow { } //defined globally in the TOP BAR
.popup-sub-menu {
+ padding-bottom: 1px;
background-color: darken($bg_color,2%);
box-shadow: inset 0 -1px 0px lighten($borders_color,5%);
}
@@ -729,9 +729,7 @@ StScrollBar {
/* TOP BAR */
#panel {
- background-color: rgba(0, 0, 0, 0.35);
- /* transition from solid to transparent */
- transition-duration: 500ms;
+ background-color: black;
font-weight: bold;
height: 1.86em;
font-feature-settings: "tnum";
@@ -748,7 +746,7 @@ StScrollBar {
.panel-corner {
-panel-corner-radius: $panel-corner-radius;
- -panel-corner-background-color: rgba(0, 0, 0, 0.35);
+ -panel-corner-background-color: black;
-panel-corner-border-width: 2px;
-panel-corner-border-color: transparent;
@@ -767,9 +765,7 @@ StScrollBar {
-natural-hpadding: 12px;
-minimum-hpadding: 6px;
font-weight: bold;
- color: #eee;
- text-shadow: 0px 1px 2px rgba(0, 0, 0, 0.9);
- transition-duration: 100ms;
+ color: #ccc;
.app-menu-icon {
-st-icon-style: symbolic;
@@ -778,21 +774,8 @@ StScrollBar {
//dimensions of the icon are hardcoded
}
- .system-status-icon,
- .app-menu-icon > StIcon,
- .popup-menu-arrow {
- icon-shadow: 0px 1px 2px rgba(0, 0, 0, 0.9);
- }
-
&:hover {
color: lighten($fg_color, 10%);
- text-shadow: 0px 1px 6px rgba(0, 0, 0, 1);
-
- .system-status-icon,
- .app-menu-icon > StIcon,
- .popup-menu-arrow {
- icon-shadow: 0px 1px 6px rgba(0, 0, 0, 1);
- }
}
&:active, &:overview, &:focus, &:checked {
@@ -801,8 +784,6 @@ StScrollBar {
background-color: rgba(0, 0, 0, 0.01);
box-shadow: inset 0 -2px 0px lighten($selected_bg_color,5%);
color: lighten($fg_color,10%);
-
- & > .system-status-icon { icon-shadow: black 0 2px 2px; }
}
.system-status-icon { icon-size: 1.09em; padding: 0 5px; }
@@ -827,31 +808,6 @@ StScrollBar {
.screencast-indicator { color: $warning_color; }
.remote-access-indicator { color: $warning_color; }
-
- &.solid {
- background-color: black;
- /* transition from transparent to solid */
- transition-duration: 300ms;
-
- .panel-corner {
- -panel-corner-background-color: black;
- }
-
- .panel-button {
- color: #ccc;
- text-shadow: none;
-
- &:hover, &:active, &:overview, &:focus, &:checked {
- color: lighten($fg_color, 10%);
- }
- }
-
- .system-status-icon,
- .app-menu-icon > StIcon,
- .popup-menu-arrow {
- icon-shadow: none;
- }
- }
}
// calendar popover
@@ -922,14 +878,47 @@ StScrollBar {
font-weight: bold;
}
- .world-clocks-grid {
+ .weather-header.location {
+ font-weight: normal;
+ font-size: 0.9em;
+ }
+
+ .world-clocks-grid,
+ .weather-grid {
spacing-rows: 0.4em;
+ spacing-columns: 0.8em;
}
.weather-box {
spacing: 0.4em;
}
+ .world-clocks-city {
+ font-weight: bold;
+ font-size: 0.9em;
+ }
+
+ .world-clocks-time {
+ color: darken($fg_color,20%);
+ font-feature-settings: "tnum";
+ font-size: 1.2em;
+ }
+
+ .world-clocks-timezone {
+ color: darken($fg_color,40%);
+ font-feature-settings: "tnum";
+ font-size: 0.9em;
+ }
+
+ .weather-forecast-icon {
+ icon-size: 2.18em;
+ }
+
+ .weather-forecast-time {
+ color: darken($fg_color,40%);
+ font-size: 0.8em;
+ }
+
.calendar-month-label {
color: darken($fg_color,5%);
font-weight: bold;
@@ -938,7 +927,6 @@ StScrollBar {
}
.pager-button {
- color: white;
background-color: transparent;
width: 32px;
border-radius: 4px;
@@ -946,13 +934,8 @@ StScrollBar {
&:active { background-color: transparentize($bg_color,0.95); }
}
- .calendar-change-month-back { //arrow back
- background-image: url("resource:///org/gnome/shell/theme/calendar-arrow-left.svg");
- &:rtl { background-image: url("resource:///org/gnome/shell/theme/calendar-arrow-right.svg"); }
- }
- .calendar-change-month-forward { //arrow foreward
- background-image: url("resource:///org/gnome/shell/theme/calendar-arrow-right.svg");
- &:rtl { background-image: url("resource:///org/gnome/shell/theme/calendar-arrow-left.svg"); }
+ .calendar-change-month-back StIcon, .calendar-change-month-forward StIcon { // arrows
+ icon-size: 1.09em;
}
.calendar-day-base {
@@ -1090,18 +1073,14 @@ StScrollBar {
background-color: $bg_color;
border: 2px solid $bg_color;
border-radius: 2px;
- icon-size: 16px;
- padding: 8px; }
+ icon-size: 32px !important;
+ padding: 6px; }
}
// a little unstructured mess:
- .system-switch-user-submenu-icon.user-icon {
- icon-size: 20px;
- padding: 0 2px;
- }
- .system-switch-user-submenu-icon.default-icon {
+ .system-switch-user-submenu-icon {
icon-size: 16px;
padding: 0 4px;
}
@@ -1113,6 +1092,11 @@ StScrollBar {
.label-shadow { color: transparent; }
}
+ .app-menu,
+ .app-well-menu {
+ max-width: 27.25em;
+ }
+
.aggregate-menu {
min-width: 21em;
.popup-menu-icon { padding: 0 4px; }
@@ -1142,17 +1126,16 @@ StScrollBar {
& > StIcon { icon-size: 16px; }
}
-//Activities Ripples
+// Activities Ripples
.ripple-box {
width: 52px;
height: 52px;
- background-image: url("resource:///org/gnome/shell/theme/corner-ripple-ltr.png");
- background-size: contain;
+ border-radius: 0 0 52px 0; // radius the size of the box give us the curve
+ background-color: lighten(transparentize($selected_bg_color, 0.7), 40%);
+ box-shadow: 0 0 2px 2px lighten($selected_bg_color, 20%);
}
-.ripple-box:rtl {
- background-image: url("resource:///org/gnome/shell/theme/corner-ripple-rtl.png");
-}
+.ripple-box:rtl { border-radius: 0 0 0 52px; } // just a simple change to the border radius position
// not really top bar only
.popup-menu-arrow { width: 16px; height: 16px; }
@@ -1161,14 +1144,26 @@ StScrollBar {
//close buttons
.window-close {
- background-image: url("resource:///org/gnome/shell/theme/close-window.svg");
- background-size: 32px;
- height: 32px;
- width: 32px;
- -shell-close-overlap: 16px;
+ background-color: white;
+ border-radius: 24px;
+ border: 4px solid $selected_bg_color;
+ box-shadow: inset 0 -4px 0 0 transparentize($selected_bg_color, 0.5);
+ color: $selected_bg_color;
+ height: 24px;
+ width: 24px;
+ -shell-close-overlap: 14px;
- &:hover { background-image: url("resource:///org/gnome/shell/theme/close-window-hover.svg"); }
- &:active { background-image: url("resource:///org/gnome/shell/theme/close-window-active.svg"); }
+ &:hover {
+ background-color: $selected_bg_color;
+ border-color: white;
+ color: white;
+ }
+
+ &:active {
+ background-color: mix(white, $selected_bg_color, 75%);
+ border-color: $selected_bg_color;
+ color: $selected_bg_color;
+ }
}
/* NETWORK DIALOGS */
@@ -1289,6 +1284,8 @@ StScrollBar {
.search-section-separator { height: 2px; background-color: rgba(255, 255, 255, 0.2); }
+ .search-section:last-child .search-section-separator { background-color: transparent; }
+
.list-search-result-content { spacing: 30px; }
.list-search-result-title { color: darken($osd_fg_color,5%); spacing: 12px; }
.list-search-result-description { color: transparentize(darken($osd_fg_color,15%), 0.5); }
@@ -1447,15 +1444,17 @@ StScrollBar {
padding: 15px 20px;
.page-indicator-icon {
- width: 18px;
- height: 18px;
- background-image: url(resource:///org/gnome/shell/theme/page-indicator-inactive.svg);
+ width: 12px;
+ height: 12px;
+ background-color: transparent;
+ border: 2px solid rgba(255, 255, 255, 0.4);
+ border-radius:12px;
}
- &:hover .page-indicator-icon { background-image: url(resource:///org/gnome/shell/theme/page-indicator-hover.svg); }
- &:active .page-indicator-icon { background-image: url(resource:///org/gnome/shell/theme/page-indicator-active.svg); }
+ &:hover .page-indicator-icon { border-color: white; }
+ &:active .page-indicator-icon { border: none; margin: 2px; background-color:#fff; }
&:checked .page-indicator-icon,
- &:checked:active { background-image: url(resource:///org/gnome/shell/theme/page-indicator-checked.svg); }
+ &:checked:active { background-color: #fff;}
}
.no-frequent-applications-label { @extend %status_text; }
@@ -1639,6 +1638,15 @@ StScrollBar {
#keyboard {
background-color: transparentize($osd_bg_color, 0.3);
+
+ .page-indicator {
+ padding: 4px 4px;
+
+ .page-indicator-icon {
+ width: 6px;
+ height: 6px
+ }
+ }
}
.key-container {
@@ -1648,8 +1656,8 @@ StScrollBar {
.keyboard-key {
background-color: #393f3f;
- min-height: 2em;
- min-width: 2em;
+ min-height: 1.2em;
+ min-width: 1.2em;
font-size: 16pt;
border-radius: 3px;
border: 1px solid #464d4d;
@@ -1700,6 +1708,20 @@ StScrollBar {
-boxpointer-gap: 5px;
}
+.emoji-page {
+ .keyboard-key {
+ background-color: transparent;
+ border: none;
+ }
+}
+
+.emoji-panel {
+ .keyboard-key:latched {
+ border-color: #005684;
+ background-color: #006098;
+ }
+}
+
// IBus Candidate Popup
.candidate-popup-content {
@@ -1734,13 +1756,11 @@ StScrollBar {
/* Auth Dialogs & Screen Shield */
-.framed-user-icon {
+.user-icon {
background-size: contain;
- border: 2px solid $osd_fg_color;
color: $osd_fg_color;
- border-radius: 3px;
+ border-radius: 99px;
&:hover {
- border-color: lighten($osd_fg_color,30%);
color: lighten($osd_fg_color,30%);
}
}
diff --git a/extensions/apps-menu/extension.js b/extensions/apps-menu/extension.js
index 845149af..d7ba570a 100644
--- a/extensions/apps-menu/extension.js
+++ b/extensions/apps-menu/extension.js
@@ -1,20 +1,13 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
/* exported init enable disable */
-const Atk = imports.gi.Atk;
+const {
+ Atk, Clutter, Gio, GLib, GMenu, GObject, Gtk, Meta, Shell, St
+} = imports.gi;
const DND = imports.ui.dnd;
-const GMenu = imports.gi.GMenu;
-const GObject = imports.gi.GObject;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-const Clutter = imports.gi.Clutter;
const Main = imports.ui.main;
-const Meta = imports.gi.Meta;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
-const Gtk = imports.gi.Gtk;
-const GLib = imports.gi.GLib;
-const Gio = imports.gi.Gio;
const Signals = imports.signals;
const Gettext = imports.gettext.domain('gnome-shell-extensions');
@@ -29,11 +22,14 @@ const HORIZ_FACTOR = 5;
const MENU_HEIGHT_OFFSET = 132;
const NAVIGATION_REGION_OVERSHOOT = 50;
+Gio._promisify(Gio._LocalFilePrototype, 'query_info_async', 'query_info_finish');
+Gio._promisify(Gio._LocalFilePrototype, 'set_attributes_async', 'set_attributes_finish');
+
class ActivitiesMenuItem extends PopupMenu.PopupBaseMenuItem {
constructor(button) {
super();
this._button = button;
- this.actor.add_child(new St.Label({ text: _("Activities Overview") }));
+ this.actor.add_child(new St.Label({ text: _('Activities Overview') }));
}
activate(event) {
@@ -52,8 +48,11 @@ class ApplicationMenuItem extends PopupMenu.PopupBaseMenuItem {
this._iconBin = new St.Bin();
this.actor.add_child(this._iconBin);
- let appLabel = new St.Label({ text: app.get_name(), y_expand: true,
- y_align: Clutter.ActorAlign.CENTER });
+ let appLabel = new St.Label({
+ text: app.get_name(),
+ y_expand: true,
+ y_align: Clutter.ActorAlign.CENTER
+ });
this.actor.add_child(appLabel);
this.actor.label_actor = appLabel;
@@ -74,13 +73,6 @@ class ApplicationMenuItem extends PopupMenu.PopupBaseMenuItem {
return maybeStartDrag.call(draggable, event);
return false;
};
-
- draggable.connect('drag-begin', () => {
- Shell.util_set_hidden_from_pick(Main.legacyTray.actor, true);
- });
- draggable.connect('drag-end', () => {
- Shell.util_set_hidden_from_pick(Main.legacyTray.actor, false);
- });
}
activate(event) {
@@ -126,7 +118,7 @@ class CategoryMenuItem extends PopupMenu.PopupBaseMenuItem {
if (this._category)
name = this._category.get_name();
else
- name = _("Favorites");
+ name = _('Favorites');
this.actor.add_child(new St.Label({ text: name }));
this.actor.connect('motion-event', this._onMotionEvent.bind(this));
@@ -314,48 +306,32 @@ class DesktopTarget {
return source._app.app_info;
}
- _touchFile(file) {
- let queryFlags = Gio.FileQueryInfoFlags.NONE;
- let ioPriority = GLib.PRIORITY_DEFAULT;
-
- let info = new Gio.FileInfo();
- info.set_attribute_uint64(Gio.FILE_ATTRIBUTE_TIME_ACCESS,
- GLib.get_real_time());
- file.set_attributes_async (info, queryFlags, ioPriority, null,
- (o, res) => {
- try {
- o.set_attributes_finish(res);
- } catch (e) {
- log(`Failed to update access time: ${e.message}`);
- }
- });
- }
-
- _markTrusted(file) {
+ async _markTrusted(file) {
let modeAttr = Gio.FILE_ATTRIBUTE_UNIX_MODE;
let trustedAttr = 'metadata::trusted';
let queryFlags = Gio.FileQueryInfoFlags.NONE;
let ioPriority = GLib.PRIORITY_DEFAULT;
- file.query_info_async(modeAttr, queryFlags, ioPriority, null,
- (o, res) => {
- try {
- let info = o.query_info_finish(res);
- let mode = info.get_attribute_uint32(modeAttr) | 0o100;
+ try {
+ let info = await file.query_info_async(modeAttr, queryFlags, ioPriority, null);
- info.set_attribute_uint32(modeAttr, mode);
- info.set_attribute_string(trustedAttr, 'yes');
- file.set_attributes_async (info, queryFlags, ioPriority, null,
- (o, res) => {
- o.set_attributes_finish(res);
+ let mode = info.get_attribute_uint32(modeAttr) | 0o100;
+ info.set_attribute_uint32(modeAttr, mode);
+ info.set_attribute_string(trustedAttr, 'yes');
+ await file.set_attributes_async(info, queryFlags, ioPriority, null);
- // Hack: force nautilus to reload file info
- this._touchFile(file);
- });
- } catch (e) {
- log(`Failed to mark file as trusted: ${e.message}`);
- }
- });
+ // Hack: force nautilus to reload file info
+ info = new Gio.FileInfo();
+ info.set_attribute_uint64(Gio.FILE_ATTRIBUTE_TIME_ACCESS,
+ GLib.get_real_time());
+ try {
+ await file.set_attributes_async(info, queryFlags, ioPriority, null);
+ } catch (e) {
+ log(`Failed to update access time: ${e.message}`);
+ }
+ } catch (e) {
+ log(`Failed to mark file as trusted: ${e.message}`);
+ }
}
destroy() {
@@ -414,9 +390,11 @@ class ApplicationsButton extends PanelMenu.Button {
let hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
- this._label = new St.Label({ text: _("Applications"),
- y_expand: true,
- y_align: Clutter.ActorAlign.CENTER });
+ this._label = new St.Label({
+ text: _('Applications'),
+ y_expand: true,
+ y_align: Clutter.ActorAlign.CENTER
+ });
hbox.add_child(this._label);
hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
@@ -472,8 +450,10 @@ class ApplicationsButton extends PanelMenu.Button {
}
_createVertSeparator() {
- let separator = new St.DrawingArea({ style_class: 'calendar-vertical-separator',
- pseudo_class: 'highlighted' });
+ let separator = new St.DrawingArea({
+ style_class: 'calendar-vertical-separator',
+ pseudo_class: 'highlighted'
+ });
separator.connect('repaint', this._onVertSepRepaint.bind(this));
return separator;
}
@@ -485,12 +465,12 @@ class ApplicationsButton extends PanelMenu.Button {
this._tree.disconnect(this._treeChangedId);
this._tree = null;
+ let handler = Main.sessionMode.hasOverview ?
+ Main.overview.toggle.bind(Main.overview) : null;
Main.wm.setCustomKeybindingHandler('panel-main-menu',
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
- Main.sessionMode.hasOverview ?
- Main.overview.toggle.bind(Main.overview) :
- null);
+ handler);
this._desktopTarget.destroy();
}
@@ -506,8 +486,8 @@ class ApplicationsButton extends PanelMenu.Button {
_onMenuKeyPress(actor, event) {
let symbol = event.get_key_symbol();
if (symbol == Clutter.KEY_Left || symbol == Clutter.KEY_Right) {
- let direction = symbol == Clutter.KEY_Left ? Gtk.DirectionType.LEFT
- : Gtk.DirectionType.RIGHT;
+ let direction = symbol == Clutter.KEY_Left ?
+ Gtk.DirectionType.LEFT : Gtk.DirectionType.RIGHT;
if (this.menu.actor.navigate_focus(global.stage.key_focus, direction, false))
return true;
}
@@ -544,7 +524,7 @@ class ApplicationsButton extends PanelMenu.Button {
Main.wm.setCustomKeybindingHandler('panel-main-menu',
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
- () => { this.menu.toggle(); });
+ () => this.menu.toggle());
}
_redisplay() {
@@ -615,9 +595,12 @@ class ApplicationsButton extends PanelMenu.Button {
this.menu.addMenuItem(section);
this.mainBox = new St.BoxLayout({ vertical: false });
this.leftBox = new St.BoxLayout({ vertical: true });
- this.applicationsScrollBox = new St.ScrollView({ x_fill: true, y_fill: false,
- y_align: St.Align.START,
- style_class: 'apps-menu vfade' });
+ this.applicationsScrollBox = new St.ScrollView({
+ x_fill: true,
+ y_fill: false,
+ y_align: St.Align.START,
+ style_class: 'apps-menu vfade'
+ });
this.applicationsScrollBox.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
let vscroll = this.applicationsScrollBox.get_vscroll_bar();
vscroll.connect('scroll-start', () => {
@@ -626,21 +609,30 @@ class ApplicationsButton extends PanelMenu.Button {
vscroll.connect('scroll-stop', () => {
this.menu.passEvents = false;
});
- this.categoriesScrollBox = new St.ScrollView({ x_fill: true, y_fill: false,
- y_align: St.Align.START,
- style_class: 'vfade' });
+ this.categoriesScrollBox = new St.ScrollView({
+ x_fill: true,
+ y_fill: false,
+ y_align: St.Align.START,
+ style_class: 'vfade'
+ });
this.categoriesScrollBox.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
vscroll = this.categoriesScrollBox.get_vscroll_bar();
- vscroll.connect('scroll-start', () => { this.menu.passEvents = true; });
- vscroll.connect('scroll-stop', () => { this.menu.passEvents = false; });
- this.leftBox.add(this.categoriesScrollBox, { expand: true,
- x_fill: true, y_fill: true,
- y_align: St.Align.START });
+ vscroll.connect('scroll-start', () => this.menu.passEvents = true);
+ vscroll.connect('scroll-stop', () => this.menu.passEvents = false);
+ this.leftBox.add(this.categoriesScrollBox, {
+ expand: true,
+ x_fill: true,
+ y_fill: true,
+ y_align: St.Align.START
+ });
let activities = new ActivitiesMenuItem(this);
- this.leftBox.add(activities.actor, { expand: false,
- x_fill: true, y_fill: false,
- y_align: St.Align.START });
+ this.leftBox.add(activities.actor, {
+ expand: false,
+ x_fill: true,
+ y_fill: false,
+ y_align: St.Align.START
+ });
this.applicationsBox = new St.BoxLayout({ vertical: true });
this.applicationsScrollBox.add_actor(this.applicationsBox);
@@ -648,8 +640,16 @@ class ApplicationsButton extends PanelMenu.Button {
this.categoriesScrollBox.add_actor(this.categoriesBox);
this.mainBox.add(this.leftBox);
- this.mainBox.add(this._createVertSeparator(), { expand: false, x_fill: false, y_fill: true });
- this.mainBox.add(this.applicationsScrollBox, { expand: true, x_fill: true, y_fill: true });
+ this.mainBox.add(this._createVertSeparator(), {
+ expand: false,
+ x_fill: false,
+ y_fill: true
+ });
+ this.mainBox.add(this.applicationsScrollBox, {
+ expand: true,
+ x_fill: true,
+ y_fill: true
+ });
section.actor.add_actor(this.mainBox);
}
@@ -667,17 +667,19 @@ class ApplicationsButton extends PanelMenu.Button {
let iter = root.iter();
let nextType;
while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) {
- if (nextType == GMenu.TreeItemType.DIRECTORY) {
- let dir = iter.get_directory();
- if (!dir.get_is_nodisplay()) {
- let categoryId = dir.get_menu_id();
- this.applicationsByCategory[categoryId] = [];
- this._loadCategory(categoryId, dir);
- if (this.applicationsByCategory[categoryId].length > 0) {
- let categoryMenuItem = new CategoryMenuItem(this, dir);
- this.categoriesBox.add_actor(categoryMenuItem.actor);
- }
- }
+ if (nextType != GMenu.TreeItemType.DIRECTORY)
+ continue;
+
+ let dir = iter.get_directory();
+ if (dir.get_is_nodisplay())
+ continue;
+
+ let categoryId = dir.get_menu_id();
+ this.applicationsByCategory[categoryId] = [];
+ this._loadCategory(categoryId, dir);
+ if (this.applicationsByCategory[categoryId].length > 0) {
+ let categoryMenuItem = new CategoryMenuItem(this, dir);
+ this.categoriesBox.add_actor(categoryMenuItem.actor);
}
}
@@ -706,22 +708,20 @@ class ApplicationsButton extends PanelMenu.Button {
}
_displayButtons(apps) {
- if (apps) {
- for (let i = 0; i < apps.length; i++) {
- let app = apps[i];
- let item;
- if (app instanceof Shell.App)
- item = this._applicationsButtons.get(app);
- else
- item = new PopupMenu.PopupSeparatorMenuItem();
- if (!item) {
- item = new ApplicationMenuItem(this, app);
- item.setDragEnabled(this._desktopTarget.hasDesktop);
- this._applicationsButtons.set(app, item);
- }
- if (!item.actor.get_parent())
- this.applicationsBox.add_actor(item.actor);
+ for (let i = 0; i < apps.length; i++) {
+ let app = apps[i];
+ let item;
+ if (app instanceof Shell.App)
+ item = this._applicationsButtons.get(app);
+ else
+ item = new PopupMenu.PopupSeparatorMenuItem();
+ if (!item) {
+ item = new ApplicationMenuItem(this, app);
+ item.setDragEnabled(this._desktopTarget.hasDesktop);
+ this._applicationsButtons.set(app, item);
}
+ if (!item.actor.get_parent())
+ this.applicationsBox.add_actor(item.actor);
}
}
diff --git a/extensions/auto-move-windows/extension.js b/extensions/auto-move-windows/extension.js
index 35979971..646156aa 100644
--- a/extensions/auto-move-windows/extension.js
+++ b/extensions/auto-move-windows/extension.js
@@ -125,9 +125,9 @@ function myCheckWorkspaces() {
}
// make sure the original method only removes empty workspaces at the end
- keepAliveWorkspaces.forEach(ws => { ws._keepAliveId = 1; });
+ keepAliveWorkspaces.forEach(ws => ws._keepAliveId = 1);
prevCheckWorkspaces.call(this);
- keepAliveWorkspaces.forEach(ws => { delete ws._keepAliveId; });
+ keepAliveWorkspaces.forEach(ws => delete ws._keepAliveId);
return false;
}
diff --git a/extensions/auto-move-windows/prefs.js b/extensions/auto-move-windows/prefs.js
index e0aa3b37..f9c4699e 100644
--- a/extensions/auto-move-windows/prefs.js
+++ b/extensions/auto-move-windows/prefs.js
@@ -2,9 +2,7 @@
// Start apps on custom workspaces
/* exported init buildPrefsWidget */
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
-const Gtk = imports.gi.Gtk;
+const { Gio, GObject, Gtk } = imports.gi;
const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext;
@@ -36,35 +34,48 @@ const Widget = GObject.registerClass({
this._changedPermitted = false;
this._store = new Gtk.ListStore();
- this._store.set_column_types([Gio.AppInfo, GObject.TYPE_STRING, Gio.Icon, GObject.TYPE_INT,
- Gtk.Adjustment]);
+ this._store.set_column_types([
+ Gio.AppInfo,
+ GObject.TYPE_STRING,
+ Gio.Icon,
+ GObject.TYPE_INT,
+ Gtk.Adjustment
+ ]);
let scrolled = new Gtk.ScrolledWindow({ shadow_type: Gtk.ShadowType.IN });
scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
this.add(scrolled);
- this._treeView = new Gtk.TreeView({ model: this._store,
- hexpand: true, vexpand: true });
+ this._treeView = new Gtk.TreeView({
+ model: this._store,
+ hexpand: true,
+ vexpand: true
+ });
this._treeView.get_selection().set_mode(Gtk.SelectionMode.SINGLE);
- let appColumn = new Gtk.TreeViewColumn({ expand: true, sort_column_id: Columns.DISPLAY_NAME,
- title: _("Application") });
+ let appColumn = new Gtk.TreeViewColumn({
+ expand: true,
+ sort_column_id: Columns.DISPLAY_NAME,
+ title: _('Application')
+ });
let iconRenderer = new Gtk.CellRendererPixbuf;
appColumn.pack_start(iconRenderer, false);
- appColumn.add_attribute(iconRenderer, "gicon", Columns.ICON);
+ appColumn.add_attribute(iconRenderer, 'gicon', Columns.ICON);
let nameRenderer = new Gtk.CellRendererText;
appColumn.pack_start(nameRenderer, true);
- appColumn.add_attribute(nameRenderer, "text", Columns.DISPLAY_NAME);
+ appColumn.add_attribute(nameRenderer, 'text', Columns.DISPLAY_NAME);
this._treeView.append_column(appColumn);
- let workspaceColumn = new Gtk.TreeViewColumn({ title: _("Workspace"),
- sort_column_id: Columns.WORKSPACE });
+ let workspaceColumn = new Gtk.TreeViewColumn({
+ title: _('Workspace'),
+ sort_column_id: Columns.WORKSPACE
+ });
let workspaceRenderer = new Gtk.CellRendererSpin({ editable: true });
workspaceRenderer.connect('edited', this._workspaceEdited.bind(this));
workspaceColumn.pack_start(workspaceRenderer, true);
- workspaceColumn.add_attribute(workspaceRenderer, "adjustment", Columns.ADJUSTMENT);
- workspaceColumn.add_attribute(workspaceRenderer, "text", Columns.WORKSPACE);
+ workspaceColumn.add_attribute(workspaceRenderer, 'adjustment', Columns.ADJUSTMENT);
+ workspaceColumn.add_attribute(workspaceRenderer, 'text', Columns.WORKSPACE);
this._treeView.append_column(workspaceColumn);
scrolled.add(this._treeView);
@@ -73,13 +84,15 @@ const Widget = GObject.registerClass({
toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_INLINE_TOOLBAR);
this.add(toolbar);
- let newButton = new Gtk.ToolButton({ icon_name: 'bookmark-new-symbolic',
- label: _("Add Rule"),
- is_important: true });
+ let newButton = new Gtk.ToolButton({
+ icon_name: 'bookmark-new-symbolic',
+ label: _('Add Rule'),
+ is_important: true
+ });
newButton.connect('clicked', this._createNew.bind(this));
toolbar.add(newButton);
- let delButton = new Gtk.ToolButton({ icon_name: 'edit-delete-symbolic' });
+ let delButton = new Gtk.ToolButton({ icon_name: 'edit-delete-symbolic' });
delButton.connect('clicked', this._deleteSelected.bind(this));
toolbar.add(delButton);
@@ -94,17 +107,21 @@ const Widget = GObject.registerClass({
}
_createNew() {
- let dialog = new Gtk.Dialog({ title: _("Create new matching rule"),
- transient_for: this.get_toplevel(),
- use_header_bar: true,
- modal: true });
+ let dialog = new Gtk.Dialog({
+ title: _('Create new matching rule'),
+ transient_for: this.get_toplevel(),
+ use_header_bar: true,
+ modal: true
+ });
dialog.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL);
- let addButton = dialog.add_button(_("Add"), Gtk.ResponseType.OK);
+ let addButton = dialog.add_button(_('Add'), Gtk.ResponseType.OK);
dialog.set_default_response(Gtk.ResponseType.OK);
- let grid = new Gtk.Grid({ column_spacing: 10,
- row_spacing: 15,
- margin: 10 });
+ let grid = new Gtk.Grid({
+ column_spacing: 10,
+ row_spacing: 15,
+ margin: 10
+ });
dialog._appChooser = new Gtk.AppChooserWidget({ show_all: true });
dialog._appChooser.connect('application-selected', (w, appInfo) => {
addButton.sensitive = appInfo && this._checkId(appInfo.get_id());
@@ -113,13 +130,19 @@ const Widget = GObject.registerClass({
addButton.sensitive = appInfo && this._checkId(appInfo.get_id());
grid.attach(dialog._appChooser, 0, 0, 2, 1);
- grid.attach(new Gtk.Label({ label: _("Workspace"),
- halign: Gtk.Align.END }), 0, 1, 1, 1);
- let adjustment = new Gtk.Adjustment({ lower: 1,
- upper: WORKSPACE_MAX,
- step_increment: 1 });
- dialog._spin = new Gtk.SpinButton({ adjustment: adjustment,
- snap_to_ticks: true });
+ grid.attach(new Gtk.Label({
+ label: _('Workspace'),
+ halign: Gtk.Align.END
+ }), 0, 1, 1, 1);
+ let adjustment = new Gtk.Adjustment({
+ lower: 1,
+ upper: WORKSPACE_MAX,
+ step_increment: 1
+ });
+ dialog._spin = new Gtk.SpinButton({
+ adjustment: adjustment,
+ snap_to_ticks: true
+ });
dialog._spin.set_value(1);
grid.attach(dialog._spin, 1, 1, 1, 1);
dialog.get_content_area().add(grid);
@@ -141,14 +164,7 @@ const Widget = GObject.registerClass({
this._appendItem(appInfo.get_id(), index);
this._changedPermitted = true;
- let iter = this._store.append();
- let adj = new Gtk.Adjustment({ lower: 1,
- upper: WORKSPACE_MAX,
- step_increment: 1,
- value: index });
- this._store.set(iter,
- [Columns.APPINFO, Columns.ICON, Columns.DISPLAY_NAME, Columns.WORKSPACE, Columns.ADJUSTMENT],
- [appInfo, appInfo.get_icon(), appInfo.get_display_name(), index, adj]);
+ this._appendRow(appInfo, index);
dialog.destroy();
});
@@ -198,20 +214,29 @@ const Widget = GObject.registerClass({
continue;
validItems.push(currentItems[i]);
- let iter = this._store.append();
- let adj = new Gtk.Adjustment({ lower: 1,
- upper: WORKSPACE_MAX,
- step_increment: 1,
- value: index });
- this._store.set(iter,
- [Columns.APPINFO, Columns.ICON, Columns.DISPLAY_NAME, Columns.WORKSPACE, Columns.ADJUSTMENT],
- [appInfo, appInfo.get_icon(), appInfo.get_display_name(), parseInt(index), adj]);
+ this._appendRow(appInfo, parseInt(index));
}
if (validItems.length != currentItems.length) // some items were filtered out
this._settings.set_strv(SETTINGS_KEY, validItems);
}
+ _appendRow(appInfo, workspace) {
+ let iter = this._store.append();
+ let icon = appInfo.get_icon();
+ let displayName = appInfo.get_display_name();
+ let adj = new Gtk.Adjustment({
+ lower: 1,
+ upper: WORKSPACE_MAX,
+ step_increment: 1,
+ value: workspace
+ });
+ let { APPINFO, ICON, DISPLAY_NAME, WORKSPACE, ADJUSTMENT } = Columns;
+ this._store.set(iter,
+ [APPINFO, ICON, DISPLAY_NAME, WORKSPACE, ADJUSTMENT],
+ [appInfo, icon, displayName, workspace, adj]);
+ }
+
_checkId(id) {
let items = this._settings.get_strv(SETTINGS_KEY);
return !items.some(i => i.startsWith(`${id}:`));
diff --git a/extensions/drive-menu/extension.js b/extensions/drive-menu/extension.js
index 89747ec9..7c8e36cf 100644
--- a/extensions/drive-menu/extension.js
+++ b/extensions/drive-menu/extension.js
@@ -1,9 +1,6 @@
/* exported init enable disable */
// Drive menu extension
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
-const St = imports.gi.St;
-const Shell = imports.gi.Shell;
+const { Gio, GObject, Shell, St } = imports.gi;
const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext;
@@ -25,8 +22,10 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
this.mount = mount;
- let ejectIcon = new St.Icon({ icon_name: 'media-eject-symbolic',
- style_class: 'popup-menu-icon ' });
+ let ejectIcon = new St.Icon({
+ icon_name: 'media-eject-symbolic',
+ style_class: 'popup-menu-icon'
+ });
let ejectButton = new St.Button({ child: ejectIcon });
ejectButton.connect('clicked', this._eject.bind(this));
this.actor.add(ejectButton);
@@ -66,17 +65,17 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
}
_eject() {
- let mountOp = new ShellMountOperation.ShellMountOperation(this.mount);
+ let unmountArgs = [
+ Gio.MountUnmountFlags.NONE,
+ (new ShellMountOperation.ShellMountOperation(this.mount)).mountOp,
+ null // Gio.Cancellable
+ ];
if (this.mount.can_eject())
- this.mount.eject_with_operation(Gio.MountUnmountFlags.NONE,
- mountOp.mountOp,
- null, // Gio.Cancellable
+ this.mount.eject_with_operation(...unmountArgs,
this._ejectFinish.bind(this));
else
- this.mount.unmount_with_operation(Gio.MountUnmountFlags.NONE,
- mountOp.mountOp,
- null, // Gio.Cancellable
+ this.mount.unmount_with_operation(...unmountArgs,
this._unmountFinish.bind(this));
}
@@ -98,7 +97,7 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
_reportFailure(exception) {
// TRANSLATORS: %s is the filesystem name
- let msg = _("Ejecting drive “%s” failed:").format(this.mount.get_name());
+ let msg = _('Ejecting drive “%s” failed:').format(this.mount.get_name());
Main.notifyError(msg, exception.message);
}
@@ -114,11 +113,13 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem {
let DriveMenu = GObject.registerClass(
class DriveMenu extends PanelMenu.Button {
_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({ icon_name: 'media-eject-symbolic',
- style_class: 'system-status-icon' });
+ let icon = new St.Icon({
+ icon_name: 'media-eject-symbolic',
+ style_class: 'system-status-icon'
+ });
hbox.add_child(icon);
hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
@@ -139,7 +140,7 @@ class DriveMenu extends PanelMenu.Button {
this._monitor.get_mounts().forEach(this._addMount.bind(this));
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
- this.menu.addAction(_("Open Files"), event => {
+ this.menu.addAction(_('Open Files'), event => {
let appSystem = Shell.AppSystem.get_default();
let app = appSystem.lookup_app('org.gnome.Nautilus.desktop');
app.activate_full(-1, event.get_time());
diff --git a/extensions/native-window-placement/extension.js b/extensions/native-window-placement/extension.js
index faf7fab5..8a8b0937 100644
--- a/extensions/native-window-placement/extension.js
+++ b/extensions/native-window-placement/extension.js
@@ -112,10 +112,11 @@ class NaturalLayoutStrategy extends Workspace.LayoutStrategy {
overlap = false;
for (let i = 0; i < rects.length; i++) {
for (let j = 0; j < rects.length; j++) {
- if (i != j && rects[i].adjusted(-WINDOW_PLACEMENT_NATURAL_GAPS, -WINDOW_PLACEMENT_NATURAL_GAPS,
- WINDOW_PLACEMENT_NATURAL_GAPS, WINDOW_PLACEMENT_NATURAL_GAPS)
- .overlap(rects[j].adjusted(-WINDOW_PLACEMENT_NATURAL_GAPS, -WINDOW_PLACEMENT_NATURAL_GAPS,
- WINDOW_PLACEMENT_NATURAL_GAPS, WINDOW_PLACEMENT_NATURAL_GAPS))) {
+ let adjustments = [-1, -1, 1, 1]
+ .map(v => v *= WINDOW_PLACEMENT_NATURAL_GAPS);
+ let iAdjusted = rects[i].adjusted(...adjustments);
+ let jAdjusted = rects[j].adjusted(...adjustments);
+ if (i != j && iAdjusted.overlap(jAdjusted)) {
loopCounter++;
overlap = true;
diff --git a/extensions/places-menu/extension.js b/extensions/places-menu/extension.js
index 9fced354..c477a4ac 100644
--- a/extensions/places-menu/extension.js
+++ b/extensions/places-menu/extension.js
@@ -1,9 +1,7 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
/* exported init enable disable */
-const Clutter = imports.gi.Clutter;
-const GObject = imports.gi.GObject;
-const St = imports.gi.St;
+const { Clutter, GObject, St } = imports.gi;
const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
@@ -24,16 +22,20 @@ class PlaceMenuItem extends PopupMenu.PopupBaseMenuItem {
super();
this._info = info;
- this._icon = new St.Icon({ gicon: info.icon,
- icon_size: PLACE_ICON_SIZE });
+ this._icon = new St.Icon({
+ gicon: info.icon,
+ icon_size: PLACE_ICON_SIZE
+ });
this.actor.add_child(this._icon);
this._label = new St.Label({ text: info.name, x_expand: true });
this.actor.add_child(this._label);
if (info.isRemovable()) {
- this._ejectIcon = new St.Icon({ icon_name: 'media-eject-symbolic',
- style_class: 'popup-menu-icon ' });
+ this._ejectIcon = new St.Icon({
+ icon_name: 'media-eject-symbolic',
+ style_class: 'popup-menu-icon'
+ });
this._ejectButton = new St.Button({ child: this._ejectIcon });
this._ejectButton.connect('clicked', info.eject.bind(info));
this.actor.add_child(this._ejectButton);
@@ -74,12 +76,14 @@ const SECTIONS = [
let PlacesMenu = GObject.registerClass(
class PlacesMenu extends PanelMenu.Button {
_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({ text: _("Places"),
- y_expand: true,
- y_align: Clutter.ActorAlign.CENTER });
+ let label = new St.Label({
+ text: _('Places'),
+ y_expand: true,
+ y_align: Clutter.ActorAlign.CENTER
+ });
hbox.add_child(label);
hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
this.add_actor(hbox);
diff --git a/extensions/places-menu/placeDisplay.js b/extensions/places-menu/placeDisplay.js
index 133e7784..e97cef4f 100644
--- a/extensions/places-menu/placeDisplay.js
+++ b/extensions/places-menu/placeDisplay.js
@@ -1,9 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-const GLib = imports.gi.GLib;
-const Gio = imports.gi.Gio;
-const Shell = imports.gi.Shell;
-const Mainloop = imports.mainloop;
+const { Gio, GLib, Shell } = imports.gi;
const Signals = imports.signals;
const Main = imports.ui.main;
@@ -41,50 +38,36 @@ class PlaceInfo {
return false;
}
- _createLaunchCallback(launchContext, tryMount) {
- return (_ignored, result) => {
- try {
- Gio.AppInfo.launch_default_for_uri_finish(result);
- } catch (e) {
- if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_MOUNTED)) {
- let source = {
- get_icon: () => { return this.icon; }
- };
- let op = new ShellMountOperation.ShellMountOperation(source);
- this.file.mount_enclosing_volume(0, op.mountOp, null, (file, result) => {
- try {
- op.close();
- file.mount_enclosing_volume_finish(result);
- } catch (e) {
- if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.FAILED_HANDLED))
- // e.g. user canceled the password dialog
- return;
- Main.notifyError(_("Failed to mount volume for “%s”").format(this.name), e.message);
- return;
- }
-
- if (tryMount) {
- let callback = this._createLaunchCallback(launchContext, false);
- Gio.AppInfo.launch_default_for_uri_async(file.get_uri(),
- launchContext,
- null,
- callback);
- }
- });
- } else {
- Main.notifyError(_("Failed to launch “%s”").format(this.name), e.message);
- }
+ async _ensureMountAndLaunch(context, tryMount) {
+ try {
+ await this._launchDefaultForUri(this.file.get_uri(), context, null);
+ } catch (e) {
+ if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_MOUNTED)) {
+ Main.notifyError(_('Failed to launch “%s”').format(this.name), e.message);
+ return;
}
- };
+
+ let source = {
+ get_icon: () => this.icon
+ };
+ let op = new ShellMountOperation.ShellMountOperation(source);
+ try {
+ await this._mountEnclosingVolume(0, op.mountOp, null);
+
+ if (tryMount)
+ this._ensureMountAndLaunch(context, false);
+ } catch (e) {
+ if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.FAILED_HANDLED))
+ Main.notifyError(_('Failed to mount volume for “%s”').format(this.name), e.message);
+ } finally {
+ op.close();
+ }
+ }
}
launch(timestamp) {
let launchContext = global.create_app_launch_context(timestamp, -1);
- let callback = this._createLaunchCallback(launchContext, true);
- Gio.AppInfo.launch_default_for_uri_async(this.file.get_uri(),
- launchContext,
- null,
- callback);
+ this._ensureMountAndLaunch(launchContext, true);
}
getIcon() {
@@ -128,12 +111,38 @@ class PlaceInfo {
throw e;
}
}
+
+ _launchDefaultForUri(uri, context, cancel) {
+ return new Promise((resolve, reject) => {
+ Gio.AppInfo.launch_default_for_uri_async(uri, context, cancel, (o, res) => {
+ try {
+ Gio.AppInfo.launch_default_for_uri_finish(res);
+ resolve();
+ } catch (e) {
+ reject(e);
+ }
+ });
+ });
+ }
+
+ _mountEnclosingVolume(flags, mountOp, cancel) {
+ return new Promise((resolve, reject) => {
+ this.file.mount_enclosing_volume(flags, mountOp, cancel, (o, res) => {
+ try {
+ this.file.mount_enclosing_volume_finish(res);
+ resolve();
+ } catch (e) {
+ reject(e);
+ }
+ });
+ });
+ }
}
Signals.addSignalMethods(PlaceInfo.prototype);
class RootInfo extends PlaceInfo {
_init() {
- super._init('devices', Gio.File.new_for_path('/'), _("Computer"));
+ super._init('devices', Gio.File.new_for_path('/'), _('Computer'));
let busName = 'org.freedesktop.hostname1';
let objPath = '/org/freedesktop/hostname1';
@@ -156,7 +165,7 @@ class RootInfo extends PlaceInfo {
// GDBusProxy will emit a g-properties-changed when hostname1 goes down
// ignore it
if (proxy.g_name_owner) {
- this.name = proxy.PrettyHostname || _("Computer");
+ this.name = proxy.PrettyHostname || _('Computer');
this.emit('changed');
}
}
@@ -186,17 +195,17 @@ class PlaceDeviceInfo extends PlaceInfo {
}
eject() {
- let mountOp = new ShellMountOperation.ShellMountOperation(this._mount);
+ let unmountArgs = [
+ Gio.MountUnmountFlags.NONE,
+ (new ShellMountOperation.ShellMountOperation(this._mount)).mountOp,
+ null // Gio.Cancellable
+ ];
if (this._mount.can_eject())
- this._mount.eject_with_operation(Gio.MountUnmountFlags.NONE,
- mountOp.mountOp,
- null, // Gio.Cancellable
+ this._mount.eject_with_operation(...unmountArgs,
this._ejectFinish.bind(this));
else
- this._mount.unmount_with_operation(Gio.MountUnmountFlags.NONE,
- mountOp.mountOp,
- null, // Gio.Cancellable
+ this._mount.unmount_with_operation(...unmountArgs,
this._unmountFinish.bind(this));
}
@@ -217,7 +226,7 @@ class PlaceDeviceInfo extends PlaceInfo {
}
_reportFailure(exception) {
- let msg = _("Ejecting drive “%s” failed:").format(this._mount.get_name());
+ let msg = _('Ejecting drive “%s” failed:').format(this._mount.get_name());
Main.notifyError(msg, exception.message);
}
}
@@ -288,11 +297,12 @@ var PlacesManager = class {
if (this._bookmarkTimeoutId > 0)
return;
/* Defensive event compression */
- this._bookmarkTimeoutId = Mainloop.timeout_add(100, () => {
- this._bookmarkTimeoutId = 0;
- this._reloadBookmarks();
- return false;
- });
+ this._bookmarkTimeoutId = GLib.timeout_add(
+ GLib.PRIORITY_DEFAULT, 100, () => {
+ this._bookmarkTimeoutId = 0;
+ this._reloadBookmarks();
+ return false;
+ });
});
this._reloadBookmarks();
@@ -300,9 +310,17 @@ var PlacesManager = class {
}
_connectVolumeMonitorSignals() {
- const signals = ['volume-added', 'volume-removed', 'volume-changed',
- 'mount-added', 'mount-removed', 'mount-changed',
- 'drive-connected', 'drive-disconnected', 'drive-changed'];
+ const signals = [
+ 'volume-added',
+ 'volume-removed',
+ 'volume-changed',
+ 'mount-added',
+ 'mount-removed',
+ 'mount-changed',
+ 'drive-connected',
+ 'drive-disconnected',
+ 'drive-changed'
+ ];
this._volumeMonitorSignals = [];
let func = this._updateMounts.bind(this);
@@ -323,18 +341,18 @@ var PlacesManager = class {
if (this._monitor)
this._monitor.cancel();
if (this._bookmarkTimeoutId)
- Mainloop.source_remove(this._bookmarkTimeoutId);
+ GLib.source_remove(this._bookmarkTimeoutId);
}
_updateSpecials() {
- this._places.special.forEach(p => { p.destroy(); });
+ this._places.special.forEach(p => p.destroy());
this._places.special = [];
let homePath = GLib.get_home_dir();
this._places.special.push(new PlaceInfo('special',
Gio.File.new_for_path(homePath),
- _("Home")));
+ _('Home')));
let specials = [];
let dirs = DEFAULT_DIRECTORIES.slice();
@@ -369,16 +387,16 @@ var PlacesManager = class {
let networkMounts = [];
let networkVolumes = [];
- this._places.devices.forEach(p => { p.destroy(); });
+ this._places.devices.forEach(p => p.destroy());
this._places.devices = [];
- this._places.network.forEach(p => { p.destroy(); });
+ this._places.network.forEach(p => p.destroy());
this._places.network = [];
/* Add standard places */
this._places.devices.push(new RootInfo());
this._places.network.push(new PlaceInfo('network',
Gio.File.new_for_uri('network:///'),
- _("Browse Network"),
+ _('Browse Network'),
'network-workgroup-symbolic'));
/* first go through all connected drives */
diff --git a/extensions/screenshot-window-sizer/extension.js b/extensions/screenshot-window-sizer/extension.js
index c00fb994..41c4c853 100644
--- a/extensions/screenshot-window-sizer/extension.js
+++ b/extensions/screenshot-window-sizer/extension.js
@@ -19,9 +19,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
+const { Meta, Shell, St } = imports.gi;
const Main = imports.ui.main;
const Tweener = imports.ui.tweener;
@@ -52,11 +50,12 @@ function flashMessage(message) {
text.set_position(monitor.x + Math.floor(monitor.width / 2 - text.width / 2),
monitor.y + Math.floor(monitor.height / 2 - text.height / 2));
- Tweener.addTween(text,
- { opacity: 0,
- time: MESSAGE_FADE_TIME,
- transition: 'easeOutQuad',
- onComplete: hideMessage });
+ Tweener.addTween(text, {
+ opacity: 0,
+ time: MESSAGE_FADE_TIME,
+ transition: 'easeOutQuad',
+ onComplete: hideMessage
+ });
}
let SIZES = [
@@ -74,8 +73,8 @@ function cycleScreenshotSizes(display, window, binding) {
let backwards = (modifiers & Meta.VirtualModifier.SHIFT_MASK) != 0;
// Unmaximize first
- if (window.maximized_horizontally || window.maximizedVertically)
- window.unmaximize(Meta.MaximizeFlags.HORIZONTAL | Meta.MaximizeFlags.VERTICAL);
+ if (window.get_maximized() != 0)
+ window.unmaximize(Meta.MaximizeFlags.BOTH);
let workArea = window.get_work_area_current_monitor();
let outerRect = window.get_frame_rect();
diff --git a/extensions/user-theme/extension.js b/extensions/user-theme/extension.js
index 9ffaf6fa..d00c0774 100644
--- a/extensions/user-theme/extension.js
+++ b/extensions/user-theme/extension.js
@@ -1,9 +1,8 @@
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
-// Load shell theme from ~/.themes/name/gnome-shell
+// Load shell theme from ~/.local/share/themes/name/gnome-shell
/* exported init */
-const GLib = imports.gi.GLib;
-const Gio = imports.gi.Gio;
+const { Gio, GLib } = imports.gi;
const Main = imports.ui.main;
const SETTINGS_KEY = 'name';
@@ -31,37 +30,29 @@ class ThemeManager {
}
_changeTheme() {
- let _stylesheet = null;
- let _themeName = this._settings.get_string(SETTINGS_KEY);
+ let stylesheet = null;
+ let themeName = this._settings.get_string(SETTINGS_KEY);
- if (_themeName) {
- let _userCssStylesheet = GLib.build_filenamev([
- GLib.get_home_dir(), '.themes', _themeName, 'gnome-shell', 'gnome-shell.css'
- ]);
- let file = Gio.file_new_for_path(_userCssStylesheet);
- if (file.query_exists(null))
- _stylesheet = _userCssStylesheet;
- else {
- let sysdirs = GLib.get_system_data_dirs();
- sysdirs.unshift(GLib.get_user_data_dir());
- for (let i = 0; i < sysdirs.length; i++) {
- _userCssStylesheet = GLib.build_filenamev([
- sysdirs[i], 'themes', _themeName, 'gnome-shell', 'gnome-shell.css'
- ]);
- let file = Gio.file_new_for_path(_userCssStylesheet);
- if (file.query_exists(null)) {
- _stylesheet = _userCssStylesheet;
- break;
- }
- }
- }
+ if (themeName) {
+ let stylesheetPaths = [
+ [GLib.get_home_dir(), '.themes'],
+ [GLib.get_user_data_dir(), 'themes'],
+ ...GLib.get_system_data_dirs().map(dir => [dir, 'themes'])
+ ].map(themeDir => GLib.build_filenamev([
+ ...themeDir, themeName, 'gnome-shell', 'gnome-shell.css'
+ ]));
+
+ stylesheet = stylesheetPaths.find(path => {
+ let file = Gio.file_new_for_path(path);
+ return file.query_exists(null);
+ });
}
- if (_stylesheet)
- global.log(`loading user theme: ${_stylesheet}`);
+ if (stylesheet)
+ global.log(`loading user theme: ${stylesheet}`);
else
global.log('loading default theme (Adwaita)');
- Main.setThemeStylesheet(_stylesheet);
+ Main.setThemeStylesheet(stylesheet);
Main.loadTheme();
}
}
diff --git a/extensions/window-list/extension.js b/extensions/window-list/extension.js
index e4633e21..e1ea742e 100644
--- a/extensions/window-list/extension.js
+++ b/extensions/window-list/extension.js
@@ -1,12 +1,5 @@
/* exported init */
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
-const Gtk = imports.gi.Gtk;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
+const { Clutter, Gio, GLib, GObject, Gtk, Meta, Shell, St } = imports.gi;
const DND = imports.ui.dnd;
const Main = imports.ui.main;
@@ -86,13 +79,10 @@ class WindowContextMenu extends PopupMenu.PopupMenu {
this._maximizeItem = new PopupMenu.PopupMenuItem('');
this._maximizeItem.connect('activate', () => {
- if (this._metaWindow.maximized_vertically &&
- this._metaWindow.maximized_horizontally)
- this._metaWindow.unmaximize(Meta.MaximizeFlags.HORIZONTAL |
- Meta.MaximizeFlags.VERTICAL);
+ if (this._metaWindow.get_maximized() == Meta.MaximizeFlags.BOTH)
+ this._metaWindow.unmaximize(Meta.MaximizeFlags.BOTH);
else
- this._metaWindow.maximize(Meta.MaximizeFlags.HORIZONTAL |
- Meta.MaximizeFlags.VERTICAL);
+ this._metaWindow.maximize(Meta.MaximizeFlags.BOTH);
});
this.addMenuItem(this._maximizeItem);
@@ -104,7 +94,7 @@ class WindowContextMenu extends PopupMenu.PopupMenu {
this._updateMaximizeItem.bind(this));
this._updateMaximizeItem();
- this._closeItem = new PopupMenu.PopupMenuItem(_("Close"));
+ this._closeItem = new PopupMenu.PopupMenuItem(_('Close'));
this._closeItem.connect('activate', () => {
this._metaWindow.delete(global.get_current_time());
});
@@ -123,15 +113,15 @@ class WindowContextMenu extends PopupMenu.PopupMenu {
}
_updateMinimizeItem() {
- this._minimizeItem.label.text = this._metaWindow.minimized ? _("Unminimize")
- : _("Minimize");
+ this._minimizeItem.label.text = this._metaWindow.minimized ?
+ _('Unminimize') : _('Minimize');
}
_updateMaximizeItem() {
let maximized = this._metaWindow.maximized_vertically &&
this._metaWindow.maximized_horizontally;
- this._maximizeItem.label.text = maximized ? _("Unmaximize")
- : _("Maximize");
+ this._maximizeItem.label.text = maximized ?
+ _('Unmaximize') : _('Maximize');
}
_onDestroy() {
@@ -144,8 +134,11 @@ class WindowContextMenu extends PopupMenu.PopupMenu {
class WindowTitle {
constructor(metaWindow) {
this._metaWindow = metaWindow;
- this.actor = new St.BoxLayout({ style_class: 'window-button-box',
- x_expand: true, y_expand: true });
+ this.actor = new St.BoxLayout({
+ style_class: 'window-button-box',
+ x_expand: true,
+ y_expand: true
+ });
this._icon = new St.Bin({ style_class: 'window-button-icon' });
this.actor.add(this._icon);
@@ -195,8 +188,10 @@ class WindowTitle {
if (app)
this._icon.child = app.create_icon_texture(ICON_TEXTURE_SIZE);
else
- this._icon.child = new St.Icon({ icon_name: 'icon-missing',
- icon_size: ICON_TEXTURE_SIZE });
+ this._icon.child = new St.Icon({
+ icon_name: 'icon-missing',
+ icon_size: ICON_TEXTURE_SIZE
+ });
}
_onDestroy() {
@@ -217,12 +212,13 @@ class BaseButton {
this._perMonitor = perMonitor;
this._monitorIndex = monitorIndex;
- this.actor = new St.Button({ style_class: 'window-button',
- x_fill: true,
- y_fill: true,
- can_focus: true,
- button_mask: St.ButtonMask.ONE |
- St.ButtonMask.THREE });
+ this.actor = new St.Button({
+ style_class: 'window-button',
+ x_fill: true,
+ y_fill: true,
+ can_focus: true,
+ button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE
+ });
this.actor._delegate = this;
this.actor.connect('allocation-changed',
@@ -406,37 +402,35 @@ class AppContextMenu extends PopupMenu.PopupMenu {
this._appButton = appButton;
- this._minimizeItem = new PopupMenu.PopupMenuItem(_("Minimize all"));
+ this._minimizeItem = new PopupMenu.PopupMenuItem(_('Minimize all'));
this._minimizeItem.connect('activate', () => {
- this._appButton.getWindowList().forEach(w => { w.minimize(); });
+ this._appButton.getWindowList().forEach(w => w.minimize());
});
this.addMenuItem(this._minimizeItem);
- this._unminimizeItem = new PopupMenu.PopupMenuItem(_("Unminimize all"));
+ this._unminimizeItem = new PopupMenu.PopupMenuItem(_('Unminimize all'));
this._unminimizeItem.connect('activate', () => {
- this._appButton.getWindowList().forEach(w => { w.unminimize(); });
+ this._appButton.getWindowList().forEach(w => w.unminimize());
});
this.addMenuItem(this._unminimizeItem);
- this._maximizeItem = new PopupMenu.PopupMenuItem(_("Maximize all"));
+ this._maximizeItem = new PopupMenu.PopupMenuItem(_('Maximize all'));
this._maximizeItem.connect('activate', () => {
this._appButton.getWindowList().forEach(w => {
- w.maximize(Meta.MaximizeFlags.HORIZONTAL |
- Meta.MaximizeFlags.VERTICAL);
+ w.maximize(Meta.MaximizeFlags.BOTH);
});
});
this.addMenuItem(this._maximizeItem);
- this._unmaximizeItem = new PopupMenu.PopupMenuItem(_("Unmaximize all"));
+ this._unmaximizeItem = new PopupMenu.PopupMenuItem(_('Unmaximize all'));
this._unmaximizeItem.connect('activate', () => {
this._appButton.getWindowList().forEach(w => {
- w.unmaximize(Meta.MaximizeFlags.HORIZONTAL |
- Meta.MaximizeFlags.VERTICAL);
+ w.unmaximize(Meta.MaximizeFlags.BOTH);
});
});
this.addMenuItem(this._unmaximizeItem);
- let item = new PopupMenu.PopupMenuItem(_("Close all"));
+ let item = new PopupMenu.PopupMenuItem(_('Close all'));
item.connect('activate', () => {
this._appButton.getWindowList().forEach(w => {
w.delete(global.get_current_time());
@@ -450,10 +444,10 @@ class AppContextMenu extends PopupMenu.PopupMenu {
this._minimizeItem.actor.visible = windows.some(w => !w.minimized);
this._unminimizeItem.actor.visible = windows.some(w => w.minimized);
this._maximizeItem.actor.visible = windows.some(w => {
- return !(w.maximized_horizontally && w.maximized_vertically);
+ return w.get_maximized() != Meta.MaximizeFlags.BOTH;
});
this._unmaximizeItem.actor.visible = windows.some(w => {
- return w.maximized_horizontally && w.maximized_vertically;
+ return w.get_maximized() == Meta.MaximizeFlags.BOTH;
});
super.open(animate);
@@ -470,21 +464,29 @@ class AppButton extends BaseButton {
let stack = new St.Widget({ layout_manager: new Clutter.BinLayout() });
this.actor.set_child(stack);
- this._singleWindowTitle = new St.Bin({ x_expand: true,
- y_fill: true,
- x_align: St.Align.START });
+ this._singleWindowTitle = new St.Bin({
+ x_expand: true,
+ y_fill: true,
+ x_align: St.Align.START
+ });
stack.add_actor(this._singleWindowTitle);
- this._multiWindowTitle = new St.BoxLayout({ style_class: 'window-button-box',
- x_expand: true });
+ this._multiWindowTitle = new St.BoxLayout({
+ style_class: 'window-button-box',
+ x_expand: true
+ });
stack.add_actor(this._multiWindowTitle);
- this._icon = new St.Bin({ style_class: 'window-button-icon',
- child: app.create_icon_texture(ICON_TEXTURE_SIZE) });
+ this._icon = new St.Bin({
+ style_class: 'window-button-icon',
+ child: app.create_icon_texture(ICON_TEXTURE_SIZE)
+ });
this._multiWindowTitle.add(this._icon);
- let label = new St.Label({ text: app.get_name(),
- y_align: Clutter.ActorAlign.CENTER });
+ let label = new St.Label({
+ text: app.get_name(),
+ y_align: Clutter.ActorAlign.CENTER
+ });
this._multiWindowTitle.add(label);
this._multiWindowTitle.label_actor = label;
@@ -545,7 +547,7 @@ class AppButton extends BaseButton {
let rect = this._getIconGeometry();
let windows = this.app.get_windows();
- windows.forEach(w => { w.set_icon_geometry(rect); });
+ windows.forEach(w => w.set_icon_geometry(rect));
}
getWindowList() {
@@ -645,21 +647,26 @@ class AppButton extends BaseButton {
let WorkspaceIndicator = GObject.registerClass(
class WorkspaceIndicator extends PanelMenu.Button {
_init() {
- super._init(0.0, _("Workspace Indicator"), true);
+ super._init(0.0, _('Workspace Indicator'), true);
this.setMenu(new PopupMenu.PopupMenu(this, 0.0, St.Side.BOTTOM));
this.add_style_class_name('window-list-workspace-indicator');
this.menu.actor.remove_style_class_name('panel-menu');
- let container = new St.Widget({ layout_manager: new Clutter.BinLayout(),
- x_expand: true, y_expand: true });
+ let container = new St.Widget({
+ layout_manager: new Clutter.BinLayout(),
+ x_expand: true,
+ y_expand: true
+ });
this.add_actor(container);
let workspaceManager = global.workspace_manager;
this._currentWorkspace = workspaceManager.get_active_workspace().index();
- this.statusLabel = new St.Label({ text: this._getStatusText(),
- x_align: Clutter.ActorAlign.CENTER,
- y_align: Clutter.ActorAlign.CENTER });
+ this.statusLabel = new St.Label({
+ text: this._getStatusText(),
+ x_align: Clutter.ActorAlign.CENTER,
+ y_align: Clutter.ActorAlign.CENTER
+ });
container.add_actor(this.statusLabel);
this.workspacesItems = [];
@@ -768,23 +775,27 @@ class WindowList {
this._perMonitor = perMonitor;
this._monitor = monitor;
- this.actor = new St.Widget({ name: 'panel',
- style_class: 'bottom-panel solid',
- reactive: true,
- track_hover: true,
- layout_manager: new Clutter.BinLayout() });
+ this.actor = new St.Widget({
+ name: 'panel',
+ style_class: 'bottom-panel solid',
+ reactive: true,
+ track_hover: true,
+ layout_manager: new Clutter.BinLayout()
+ });
this.actor.connect('destroy', this._onDestroy.bind(this));
let box = new St.BoxLayout({ x_expand: true, y_expand: true });
this.actor.add_actor(box);
let layout = new Clutter.BoxLayout({ homogeneous: true });
- this._windowList = new St.Widget({ style_class: 'window-list',
- reactive: true,
- layout_manager: layout,
- x_align: Clutter.ActorAlign.START,
- x_expand: true,
- y_expand: true });
+ this._windowList = new St.Widget({
+ style_class: 'window-list',
+ reactive: true,
+ layout_manager: layout,
+ x_align: Clutter.ActorAlign.START,
+ x_expand: true,
+ y_expand: true
+ });
box.add(this._windowList, { expand: true });
this._windowList.connect('style-changed', () => {
@@ -812,10 +823,12 @@ class WindowList {
this._menuManager = new PopupMenu.PopupMenuManager(this);
this._menuManager.addMenu(this._workspaceIndicator.menu);
- Main.layoutManager.addChrome(this.actor, { affectsStruts: true,
- trackFullscreen: true });
+ Main.layoutManager.addChrome(this.actor, {
+ affectsStruts: true,
+ trackFullscreen: true
+ });
Main.uiGroup.set_child_above_sibling(this.actor, Main.layoutManager.panelBox);
- Main.ctrlAltTabManager.addGroup(this.actor, _("Window List"), 'start-here-symbolic');
+ Main.ctrlAltTabManager.addGroup(this.actor, _('Window List'), 'start-here-symbolic');
this.actor.width = this._monitor.width;
this.actor.connect('notify::height', this._updatePosition.bind(this));
@@ -1212,7 +1225,7 @@ class Extension {
}
_buildWindowLists() {
- this._windowLists.forEach(list => { list.actor.destroy(); });
+ this._windowLists.forEach(list => list.actor.destroy());
this._windowLists = [];
let showOnAllMonitors = this._settings.get_boolean('show-on-all-monitors');
diff --git a/extensions/window-list/prefs.js b/extensions/window-list/prefs.js
index 639ec56b..78792b5a 100644
--- a/extensions/window-list/prefs.js
+++ b/extensions/window-list/prefs.js
@@ -1,9 +1,7 @@
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
/* exported init buildPrefsWidget */
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
-const Gtk = imports.gi.Gtk;
+const { Gio, GObject, Gtk } = imports.gi;
const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext;
@@ -24,16 +22,20 @@ class WindowListPrefsWidget extends Gtk.Grid {
this.row_spacing = 6;
this.orientation = Gtk.Orientation.VERTICAL;
- let groupingLabel = '%s'.format(_("Window Grouping"));
- this.add(new Gtk.Label({ label: groupingLabel, use_markup: true,
- halign: Gtk.Align.START }));
+ let groupingLabel = '%s'.format(_('Window Grouping'));
+ this.add(new Gtk.Label({
+ label: groupingLabel, use_markup: true,
+ halign: Gtk.Align.START
+ }));
let align = new Gtk.Alignment({ left_padding: 12 });
this.add(align);
- let grid = new Gtk.Grid({ orientation: Gtk.Orientation.VERTICAL,
- row_spacing: 6,
- column_spacing: 6 });
+ let grid = new Gtk.Grid({
+ orientation: Gtk.Orientation.VERTICAL,
+ row_spacing: 6,
+ column_spacing: 6
+ });
align.add(grid);
this._settings = ExtensionUtils.getSettings();
@@ -42,9 +44,9 @@ class WindowListPrefsWidget extends Gtk.Grid {
let modes = range.deep_unpack()[1].deep_unpack();
let modeLabels = {
- 'never': _("Never group windows"),
- 'auto': _("Group windows when space is limited"),
- 'always': _("Always group windows")
+ 'never': _('Never group windows'),
+ 'auto': _('Group windows when space is limited'),
+ 'always': _('Always group windows')
};
let radio = null;
@@ -56,9 +58,11 @@ class WindowListPrefsWidget extends Gtk.Grid {
continue;
}
- radio = new Gtk.RadioButton({ active: currentMode == mode,
- label: label,
- group: radio });
+ radio = new Gtk.RadioButton({
+ active: currentMode == mode,
+ label: label,
+ group: radio
+ });
grid.add(radio);
radio.connect('toggled', button => {
@@ -67,8 +71,10 @@ class WindowListPrefsWidget extends Gtk.Grid {
});
}
- let check = new Gtk.CheckButton({ label: _("Show on all monitors"),
- margin_top: 6 });
+ let check = new Gtk.CheckButton({
+ label: _('Show on all monitors'),
+ margin_top: 6
+ });
this._settings.bind('show-on-all-monitors', check, 'active', Gio.SettingsBindFlags.DEFAULT);
this.add(check);
}
diff --git a/extensions/windowsNavigator/extension.js b/extensions/windowsNavigator/extension.js
index a4d74740..7d58ebe2 100644
--- a/extensions/windowsNavigator/extension.js
+++ b/extensions/windowsNavigator/extension.js
@@ -1,7 +1,6 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
/* exported enable disable */
-const Clutter = imports.gi.Clutter;
-const St = imports.gi.St;
+const { Clutter, St } = imports.gi;
const Main = imports.ui.main;
const Workspace = imports.ui.workspace;
@@ -230,8 +229,10 @@ function enable() {
workspaceInjections['_init'] = injectToFunction(Workspace.Workspace.prototype, '_init', function(metaWorkspace) {
if (metaWorkspace && metaWorkspace.index() < 9) {
- createdActors.push(this._tip = new St.Label({ style_class: 'extension-windowsNavigator-window-tooltip',
- visible: false }));
+ createdActors.push(this._tip = new St.Label({
+ style_class: 'extension-windowsNavigator-window-tooltip',
+ visible: false
+ }));
this.actor.add_actor(this._tip);
let signalId = this.actor.connect('notify::scale-x', () => {
diff --git a/extensions/workspace-indicator/extension.js b/extensions/workspace-indicator/extension.js
index ea891e07..3be12686 100644
--- a/extensions/workspace-indicator/extension.js
+++ b/extensions/workspace-indicator/extension.js
@@ -1,11 +1,7 @@
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
/* exported init enable disable */
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const Clutter = imports.gi.Clutter;
-const St = imports.gi.St;
+const { Clutter, Gio, GObject, Meta, St } = imports.gi;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
@@ -22,13 +18,15 @@ const WORKSPACE_KEY = 'workspace-names';
let WorkspaceIndicator = GObject.registerClass(
class WorkspaceIndicator extends PanelMenu.Button {
_init() {
- super._init(0.0, _("Workspace Indicator"));
+ super._init(0.0, _('Workspace Indicator'));
let workspaceManager = global.workspace_manager;
this._currentWorkspace = workspaceManager.get_active_workspace().index();
- this.statusLabel = new St.Label({ y_align: Clutter.ActorAlign.CENTER,
- text: this._labelText() });
+ this.statusLabel = new St.Label({
+ y_align: Clutter.ActorAlign.CENTER,
+ text: this._labelText()
+ });
this.add_actor(this.statusLabel);
diff --git a/extensions/workspace-indicator/prefs.js b/extensions/workspace-indicator/prefs.js
index dae2e957..d8640559 100644
--- a/extensions/workspace-indicator/prefs.js
+++ b/extensions/workspace-indicator/prefs.js
@@ -1,9 +1,7 @@
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
/* exported init buildPrefsWidget */
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
-const Gtk = imports.gi.Gtk;
+const { Gio, GObject, Gtk } = imports.gi;
const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext;
@@ -129,22 +127,28 @@ class WorkspaceSettingsWidget extends Gtk.Grid {
this.margin = 12;
this.orientation = Gtk.Orientation.VERTICAL;
- this.add(new Gtk.Label({ label: '%s'.format(_("Workspace Names")),
- use_markup: true, margin_bottom: 6,
- hexpand: true, halign: Gtk.Align.START }));
+ this.add(new Gtk.Label({
+ label: '%s'.format(_('Workspace Names')),
+ use_markup: true,
+ margin_bottom: 6,
+ hexpand: true,
+ halign: Gtk.Align.START
+ }));
let scrolled = new Gtk.ScrolledWindow({ shadow_type: Gtk.ShadowType.IN });
scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
this.add(scrolled);
this._store = new WorkspaceNameModel();
- this._treeView = new Gtk.TreeView({ model: this._store,
- headers_visible: false,
- reorderable: true,
- hexpand: true,
- vexpand: true });
+ this._treeView = new Gtk.TreeView({
+ model: this._store,
+ headers_visible: false,
+ reorderable: true,
+ hexpand: true,
+ vexpand: true
+ });
- let column = new Gtk.TreeViewColumn({ title: _("Name") });
+ let column = new Gtk.TreeViewColumn({ title: _('Name') });
let renderer = new Gtk.CellRendererText({ editable: true });
renderer.connect('edited', this._cellEdited.bind(this));
column.pack_start(renderer, true);
@@ -184,7 +188,7 @@ class WorkspaceSettingsWidget extends Gtk.Grid {
let iter = this._store.append();
let index = this._store.get_path(iter).get_indices()[0];
- let label = _("Workspace %d").format(index + 1);
+ let label = _('Workspace %d').format(index + 1);
this._store.set(iter, [this._store.Columns.LABEL], [label]);
}
diff --git a/lint/eslintrc-gjs.json b/lint/eslintrc-gjs.json
index b4672991..74cadf26 100644
--- a/lint/eslintrc-gjs.json
+++ b/lint/eslintrc-gjs.json
@@ -12,6 +12,7 @@
"error",
"never"
],
+ "arrow-spacing": "error",
"brace-style": "error",
"comma-spacing": [
"error",
@@ -24,6 +25,9 @@
"error",
4,
{
+ "ignoredNodes": [
+ "CallExpression[callee.object.name=GObject][callee.property.name=registerClass] > ClassExpression:first-child"
+ ],
"MemberExpression": "off"
}
],
@@ -57,6 +61,19 @@
"allow": ["!!"]
}
],
+ "no-restricted-properties": [
+ "error",
+ {
+ "object": "Lang",
+ "property": "bind",
+ "message": "Use arrow notation or Function.prototype.bind()"
+ },
+ {
+ "object": "Lang",
+ "property": "Class",
+ "message": "Use ES6 classes"
+ }
+ ],
"nonblock-statement-body-position": [
"error",
"below"
diff --git a/lint/eslintrc-legacy.json b/lint/eslintrc-legacy.json
index 0bbbff18..aca79adf 100644
--- a/lint/eslintrc-legacy.json
+++ b/lint/eslintrc-legacy.json
@@ -5,16 +5,12 @@
4,
{
"ignoredNodes": [
- "ConditionalExpression",
"CallExpression > ArrowFunctionExpression",
"CallExpression[callee.object.name=GObject][callee.property.name=registerClass] > ClassExpression:first-child"
],
"CallExpression": { "arguments": "first" },
- "ArrayExpression": "first",
- "ObjectExpression": "first",
"MemberExpression": "off"
}
- ],
- "quotes": "off"
+ ]
}
}
diff --git a/lint/eslintrc-shell.json b/lint/eslintrc-shell.json
index 198a7509..fc6f5819 100644
--- a/lint/eslintrc-shell.json
+++ b/lint/eslintrc-shell.json
@@ -1,13 +1,5 @@
{
"rules": {
- "arrow-spacing": "error",
- "brace-style": [
- "error",
- "1tbs",
- {
- "allowSingleLine": true
- }
- ],
"camelcase": [
"error",
{
@@ -15,26 +7,6 @@
"allow": ["^vfunc_"]
}
],
- "indent": [
- "error",
- 4,
- {
- "ignoredNodes": [
- "ArrayExpression > ObjectExpression",
- "CallExpression[callee.object.name=GObject][callee.property.name=registerClass] > ClassExpression:first-child",
- "ConditionalExpression"
- ],
- "MemberExpression": "off"
- }
- ],
- "key-spacing": [
- "error",
- {
- "mode": "minimum",
- "beforeColon": false,
- "afterColon": true
- }
- ],
"no-unused-vars": [
"error",
{
diff --git a/meson.build b/meson.build
index 0115562f..ed228fe9 100644
--- a/meson.build
+++ b/meson.build
@@ -1,5 +1,5 @@
project('gnome-shell-extensions',
- version: '3.31.90',
+ version: '3.31.92',
meson_version: '>= 0.44.0',
license: 'GPL2+'
)
diff --git a/po/gd.po b/po/gd.po
index de073009..c5497507 100644
--- a/po/gd.po
+++ b/po/gd.po
@@ -5,9 +5,9 @@
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n"
-"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-"
-"extensions/issues\n"
-"POT-Creation-Date: 2017-12-18 18:40+0000\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
+"issues\n"
+"POT-Creation-Date: 2018-11-13 00:23+0000\n"
"PO-Revision-Date: 2018-02-26 12:52+0100\n"
"Last-Translator: GunChleoc \n"
"Language-Team: Fòram na Gàidhlig\n"
@@ -29,126 +29,81 @@ msgstr "GNOME clasaigeach"
msgid "This session logs you into GNOME Classic"
msgstr "Clàraidh an seisean seo a-steach gu GNOME clasaigeach thu"
-#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7
-msgid "Attach modal dialog to the parent window"
-msgstr "Ceangail còmhradh mòdach ris an uinneag-pàraint"
-
-#: 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 ""
-"Tar-àithnidh an iuchair seo an iuchair ann an org.gnome.mutter nuair a thèid "
-"Slige GNOME a ruith."
-
-#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:16
-msgid "Arrangement of buttons on the titlebar"
-msgstr "Seòrsachadh nam putanan air a’ bhàr-tiotail"
-
-#: 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 ""
-"Tar-àithnidh an iuchair seo an iuchair ann an org.gnome.desktop.wm."
-"preferences nuair a thèid Slige GNOME a ruith."
-
-#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:24
-msgid "Enable edge tiling when dropping windows on screen edges"
-msgstr ""
-"Cuir leacadh nan oirean an comas nuair a thèid uinneagan a leigeil às aig "
-"oir na sgrìn"
-
-#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:32
-msgid "Workspaces only on primary monitor"
-msgstr "Rumannan-obrach air a’ phrìomh-sgrìn a-mhàin"
-
-#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:40
-msgid "Delay focus changes in mouse mode until the pointer stops moving"
-msgstr ""
-"Cuir dàil air atharraichean an fòcais ann am modh luchaige gus an sguir an "
-"tomhaire air gluasad"
+#: extensions/alternate-tab/prefs.js:19
+msgid "Thumbnail only"
+msgstr "Dealbhag a-mhàin"
#: extensions/alternate-tab/prefs.js:20
-msgid "Thumbnail only"
-msgstr "Dealbhagan a-mhàin"
-
-#: extensions/alternate-tab/prefs.js:21
msgid "Application icon only"
msgstr "Ìomhaigheag na h-aplacaid a-mhàin"
-#: extensions/alternate-tab/prefs.js:22
+#: extensions/alternate-tab/prefs.js:21
msgid "Thumbnail and application icon"
msgstr "Dealbhag is ìomhaigheag na h-aplacaid"
-#: extensions/alternate-tab/prefs.js:38
+#: extensions/alternate-tab/prefs.js:34
msgid "Present windows as"
msgstr "Seall uinneagan mar"
-#: extensions/alternate-tab/prefs.js:69
+#: extensions/alternate-tab/prefs.js:65
msgid "Show only windows in the current workspace"
-msgstr "Na seall ach na h-uinneagan san rum-obrach làithreach"
+msgstr "Na seall ach na h-uinneagan san rùm-obrach làithreach"
-#: extensions/apps-menu/extension.js:41
+#: extensions/apps-menu/extension.js:37
msgid "Activities Overview"
msgstr "Foir-shealladh nan gnìomhachdan"
-#: extensions/apps-menu/extension.js:141
+#: extensions/apps-menu/extension.js:130
msgid "Favorites"
msgstr "Annsachdan"
-#: extensions/apps-menu/extension.js:436
+#: extensions/apps-menu/extension.js:417
msgid "Applications"
msgstr "Aplacaidean"
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6
msgid "Application and workspace list"
-msgstr "Ìomhaigheag na h-aplacaid is liosta nan rumannan-obrach"
+msgstr "Liosta nan aplacaidean is rumannan-obrach"
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7
msgid ""
"A list of strings, each containing an application id (desktop file name), "
"followed by a colon and the workspace number"
-msgstr ""
-"Liosta dhe shreangan le id aplacaid (ainm faidhle desktop) aig gach tè air a "
-"leantainn le còilean is àireamh an ruim-obrach"
+msgstr "Liosta dhe shreangan le id aplacaid (ainm faidhle desktop) aig gach tè ’ga leantainn le còilean is àireamh an ruim-obrach"
-#: extensions/auto-move-windows/prefs.js:56
+#: extensions/auto-move-windows/prefs.js:53
msgid "Application"
msgstr "Aplacaid"
-#: extensions/auto-move-windows/prefs.js:65
-#: extensions/auto-move-windows/prefs.js:123
+#: extensions/auto-move-windows/prefs.js:62
+#: extensions/auto-move-windows/prefs.js:117
msgid "Workspace"
-msgstr "Rum-obrach"
+msgstr "Rùm-obrach"
-#: extensions/auto-move-windows/prefs.js:81
+#: extensions/auto-move-windows/prefs.js:78
msgid "Add Rule"
msgstr "Cuir riaghailt ris"
-#: extensions/auto-move-windows/prefs.js:102
+#: extensions/auto-move-windows/prefs.js:98
msgid "Create new matching rule"
msgstr "Cruthaich riaghailt maidsidh ùr"
-#: extensions/auto-move-windows/prefs.js:107
+#: extensions/auto-move-windows/prefs.js:103
msgid "Add"
msgstr "Cuir ris"
#. TRANSLATORS: %s is the filesystem name
-#: extensions/drive-menu/extension.js:107
+#: extensions/drive-menu/extension.js:103
+#: extensions/places-menu/placeDisplay.js:225
#, javascript-format
-#| msgid "Ejecting drive '%s' failed:"
msgid "Ejecting drive “%s” failed:"
msgstr "Cha deach leinn draibh “%s” a ghluasad a-mach:"
-#: extensions/drive-menu/extension.js:125
+#: extensions/drive-menu/extension.js:118
msgid "Removable devices"
-msgstr "Draibhean so-ghiùlain"
+msgstr "Uidheaman so-ghiùlain"
-#: extensions/drive-menu/extension.js:150
-#| msgid "Open File"
+#: extensions/drive-menu/extension.js:143
msgid "Open Files"
msgstr "Fosgail faidhlichean"
@@ -164,86 +119,68 @@ msgstr "Teacsa fàilteachaidh eile."
msgid ""
"If not empty, it contains the text that will be shown when clicking on the "
"panel."
-msgstr ""
-"Mur eil seo falamh, tha an teacsa ’na bhroinn a thèid a shealltainn le "
-"briogadh air a’ phanail."
+msgstr "Mur eil seo falamh, tha an teacsa ’na bhroinn a thèid a shealltainn le briogadh air a’ phanail."
-#: extensions/example/prefs.js:30
+#: extensions/example/prefs.js:27
msgid "Message"
msgstr "Teachdaireachd"
#. TRANSLATORS: Example is the name of the extension, should not be
#. translated
-#: extensions/example/prefs.js:43
-#| msgid ""
-#| "Example aims to show how to build well behaved extensions for the Shell "
-#| "and as such it has little functionality on its own.\n"
-#| "Nevertheless it's possible to customize the greeting message."
+#: 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."
-msgstr ""
-"Tha am ball-eisimpleir airson sealltainn dhut mar a thogas tu leudachain le "
-"deagh-ghiùlan airson na Slige agus mar sin cha dèan e fhèin mòran.\n"
-"’S urrainn dhut an teachdaireachd fàilteachaidh a ghnàthachadh co-dhiù."
+msgstr "Tha am ball-eisimpleir airson sealltainn dhut mar a thogas tu leudachain le deagh-ghiùlan airson na Slige agus mar sin cha dèan e fhèin mòran.\n’S urrainn dhut an teachdaireachd fàilteachaidh a ghnàthachadh co-dhiù."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
msgid "Use more screen for windows"
-msgstr "Cleachd cuid nas motha dhen sgrìn airson uinneagan"
+msgstr "Cleachd barrachd dhen sgrìn airson uinneagan"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
msgid ""
"Try to use more screen for placing window thumbnails by adapting to screen "
"aspect ratio, and consolidating them further to reduce the bounding box. "
"This setting applies only with the natural placement strategy."
-msgstr ""
-"Feuch barrachd rum air an sgrìn a chleachdadh nuair a thèid dealbhagan nan "
-"uinneagan a chur ann le gleusadh a-rèir co-mheas deilbh na sgrìn agus le "
-"barrachd co-dhaingneachaidh ach am bi am bogsa-iadhaidh nas lugha. Cha bhi "
-"an roghainn seo an sàs ach leis an ro-innleachd suidheachaidh nàdarra."
+msgstr "Feuch barrachd rùm air an sgrìn a chleachdadh nuair a thèid dealbhagan nan uinneagan a chur ann le gleusadh a-rèir co-mheas deilbh na sgrìn agus le barrachd co-dhaingneachaidh ach am bi am bogsa-iadhaidh nas lugha. Cha bhi an roghainn seo an sàs ach leis an ro-innleachd suidheachaidh nàdarra."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
msgid "Place window captions on top"
-msgstr "Cuir caipseanan nan uinneagan air a’ bharr"
+msgstr "Cuir caipseanan nan uinneagan air a’ bhàrr"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
msgid ""
"If true, place window captions on top the respective thumbnail, overriding "
"shell default of placing it at the bottom. Changing this setting requires "
"restarting the shell to have any effect."
-msgstr ""
-"Mas e true a th’ ann, thèid caipseanan nan uinneagan a chur ri barr nan "
-"dealbhagan, a’ tar-àithneadh bun-roghainn na slige a chuireas aig a’ bhonn "
-"iad. Ma dh’atharraicheas tu an roghainn seo, feumaidh tu an t-slige a "
-"thòiseachadh às ùr gus an dèid a cur an sàs."
+msgstr "Mas e true a th’ ann, thèid caipseanan nan uinneagan a chur ri bàrr nan dealbhagan, a’ tar-àithneadh bun-roghainn na slige a chuireas aig a’ bhonn iad. Ma dh’atharraicheas tu an roghainn seo, feumaidh tu an t-slige ath-thòiseachadh gus an dèid a cur an sàs."
-#: extensions/places-menu/extension.js:78
-#: extensions/places-menu/extension.js:81
+#: extensions/places-menu/extension.js:79
+#: extensions/places-menu/extension.js:82
msgid "Places"
msgstr "Ionadan"
-#: extensions/places-menu/placeDisplay.js:65
+#: extensions/places-menu/placeDisplay.js:67
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "Cha b’ urrainn dhuinn an t-iom-dhraibh airson “%s” a mhunntachadh"
-#: extensions/places-menu/placeDisplay.js:78
+#: extensions/places-menu/placeDisplay.js:80
#, javascript-format
-#| msgid "Failed to launch \"%s\""
msgid "Failed to launch “%s”"
msgstr "Cha b’ urrainn dhuinn “%s” a chur gu dol"
-#: extensions/places-menu/placeDisplay.js:137
-#: extensions/places-menu/placeDisplay.js:160
+#: extensions/places-menu/placeDisplay.js:141
+#: extensions/places-menu/placeDisplay.js:164
msgid "Computer"
msgstr "Coimpiutair"
-#: extensions/places-menu/placeDisplay.js:303
+#: extensions/places-menu/placeDisplay.js:342
msgid "Home"
msgstr "Dachaigh"
-#: extensions/places-menu/placeDisplay.js:347
+#: extensions/places-menu/placeDisplay.js:386
msgid "Browse Network"
msgstr "Brabhsaich an lìonra"
@@ -252,7 +189,6 @@ msgid "Cycle Screenshot Sizes"
msgstr "Cuartaich meudan nan glacaidhean-sgrìn"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
-#| msgid "Cycle Screenshot Sizes"
msgid "Cycle Screenshot Sizes Backward"
msgstr "Cuartaich meudan nan glacaidhean-sgrìn gu contrarra"
@@ -264,115 +200,143 @@ msgstr "Ainm an ùrlair"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "Ainm an ùrlair a thèid a luchdadh o ~/.themes/name/gnome-shell"
-#: extensions/window-list/extension.js:110
+#: extensions/window-list/extension.js:106
msgid "Close"
msgstr "Dùin"
-#: extensions/window-list/extension.js:129
+#: extensions/window-list/extension.js:125
msgid "Unminimize"
msgstr "Neo-fhìor-lùghdaich"
-#: extensions/window-list/extension.js:130
+#: extensions/window-list/extension.js:126
msgid "Minimize"
msgstr "Fìor-lùghdaich"
-#: extensions/window-list/extension.js:136
+#: extensions/window-list/extension.js:132
msgid "Unmaximize"
msgstr "Neo-làn-mheudaich"
-#: extensions/window-list/extension.js:137
+#: extensions/window-list/extension.js:133
msgid "Maximize"
msgstr "Làn-mheudaich"
-#: extensions/window-list/extension.js:420
+#: extensions/window-list/extension.js:408
msgid "Minimize all"
msgstr "Fìor-lùghdaich na h-uile"
-#: extensions/window-list/extension.js:428
+#: extensions/window-list/extension.js:414
msgid "Unminimize all"
msgstr "Neo-fhìor-lùghdaich na h-uile"
-#: extensions/window-list/extension.js:436
+#: extensions/window-list/extension.js:420
msgid "Maximize all"
msgstr "Làn-mheudaich na h-uile"
-#: extensions/window-list/extension.js:445
+#: extensions/window-list/extension.js:429
msgid "Unmaximize all"
msgstr "Neo-làn-mheudaich na h-uile"
-#: extensions/window-list/extension.js:454
+#: extensions/window-list/extension.js:438
msgid "Close all"
msgstr "Dùin na h-uile"
-#: extensions/window-list/extension.js:678
-#: extensions/workspace-indicator/extension.js:30
+#: extensions/window-list/extension.js:646
+#: extensions/workspace-indicator/extension.js:26
msgid "Workspace Indicator"
-msgstr "Taisbeanair ruim-obrach"
+msgstr "Taisbeanair rùim-obrach"
-#: extensions/window-list/extension.js:842
+#: extensions/window-list/extension.js:816
msgid "Window List"
msgstr "Liosta nan uinneagan"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
msgid "When to group windows"
-msgstr "Cuin a thèid na h-uinneagan a bhuidhneachadh"
+msgstr "Cuin a thèid uinneagan a bhuidhneachadh"
#: 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 ""
"Decides when to group windows from the same application on the window list. "
"Possible values are “never”, “auto” and “always”."
-msgstr ""
-"Mìnichidh seo cuin a thèid uinneagan aig an aon aplacaid a bhuidhneachadh "
-"air liosta nan uinneagan. ’S e “never”, “auto” agus “always” a tha sna "
-"roghainnean dligheach."
+msgstr "Taghaidh seo cuin a thèid na h-uinneagan aig aplacaid a bhuidhneachadh air liosta nan uinneagan. ’S e “never”, “auto” agus “always” a tha sna roghainnean dligheach."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
msgid "Show the window list on all monitors"
-msgstr "Seall liosta nan uinneagan air a h-uile sgrìn"
+msgstr "Seall liosta nan uinneagan air a h-uile monatair"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
msgid ""
"Whether to show the window list on all connected monitors or only on the "
"primary one."
-msgstr ""
-"Co-dhiù an dèid liosta nan uinneagan a shealltainn air gach sgrìn "
-"cheangailte no air a’ phrìomh-thè a-mhàin."
+msgstr "Co-dhiù an dèid liosta nan uinneagan a shealltainn air gach monatair ceangailte no air a’ phrìomh-fhear a-mhàin."
-#: extensions/window-list/prefs.js:32
+#: extensions/window-list/prefs.js:28
msgid "Window Grouping"
msgstr "Buidhneachadh nan uinneagan"
-#: extensions/window-list/prefs.js:50
+#: extensions/window-list/prefs.js:46
msgid "Never group windows"
msgstr "Na buidhnich na h-uinneagan idir"
-#: extensions/window-list/prefs.js:51
+#: extensions/window-list/prefs.js:47
msgid "Group windows when space is limited"
-msgstr "Buidhnich na h-uinneagan nuair a bhios an rum gann"
+msgstr "Buidhnich na h-uinneagan nuair a bhios an rùm gann"
-#: extensions/window-list/prefs.js:52
+#: extensions/window-list/prefs.js:48
msgid "Always group windows"
msgstr "Buidhnich na h-uinneagan an-còmhnaidh"
-#: extensions/window-list/prefs.js:75
+#: extensions/window-list/prefs.js:71
msgid "Show on all monitors"
-msgstr "Seall air a h-uile sgrìn"
+msgstr "Seall air a h-uile monatair"
-#: extensions/workspace-indicator/prefs.js:141
+#: extensions/workspace-indicator/prefs.js:134
msgid "Workspace Names"
msgstr "Ainmean nan rumannan-obrach"
-#: extensions/workspace-indicator/prefs.js:157
+#: extensions/workspace-indicator/prefs.js:150
msgid "Name"
msgstr "Ainm"
-#: extensions/workspace-indicator/prefs.js:198
+#: extensions/workspace-indicator/prefs.js:190
#, javascript-format
msgid "Workspace %d"
-msgstr "Rum-obrach %d"
+msgstr "Rùm-obrach %d"
+
+#~ msgid "Attach modal dialog to the parent window"
+#~ msgstr "Ceangail còmhradh mòdach ris an uinneag-pàraint"
+
+#~ msgid ""
+#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell."
+#~ msgstr ""
+
+#~ "Tar-àithnidh an iuchair seo an iuchair ann an org.gnome.mutter nuair a "
+#~ "thèid Slige GNOME a ruith."
+
+#~ msgid "Arrangement of buttons on the titlebar"
+#~ msgstr "Seòrsachadh nam putanan air a’ bhàr-tiotail"
+
+#~ msgid ""
+#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
+#~ "running GNOME Shell."
+#~ msgstr ""
+
+#~ "Tar-àithnidh an iuchair seo an iuchair ann an org.gnome.desktop.wm."
+#~ "preferences nuair a thèid Slige GNOME a ruith."
+
+#~ msgid "Enable edge tiling when dropping windows on screen edges"
+#~ msgstr ""
+
+#~ "Cuir leacadh nan oirean an comas nuair a thèid uinneagan a leigeil às aig "
+#~ "oir na sgrìn"
+
+#~ msgid "Workspaces only on primary monitor"
+#~ msgstr "Rumannan-obrach air a’ phrìomh-sgrìn a-mhàin"
+
+#~ msgid "Delay focus changes in mouse mode until the pointer stops moving"
+#~ msgstr ""
+
+#~ "Cuir dàil air atharraichean an fòcais ann am modh luchaige gus an sguir "
+#~ "an tomhaire air gluasad"
#~ msgid "Notifications"
#~ msgstr "Brathan"
@@ -427,6 +391,7 @@ msgstr "Rum-obrach %d"
#~ "Clicking \n"
#~ " native switches the Alternate Tab extension off. \n"
#~ msgstr ""
+
#~ "Seo a' chiad turas a chì thu leudachan Alt Taba chaochlaidich. \n"
#~ "Tagh an giùlan as fhearr leat:\n"
#~ "\n"
diff --git a/po/sl.po b/po/sl.po
index 91f0cc86..c751dac1 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -2,7 +2,7 @@
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell-extensions package.
#
-# Matej Urbančič , + 2011–2017.
+# Matej Urbančič , + 2011–2019.
#
msgid ""
msgstr ""
@@ -10,7 +10,7 @@ msgstr ""
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=extensions\n"
"POT-Creation-Date: 2017-07-07 10:35+0200\n"
-"PO-Revision-Date: 2017-07-07 10:36+0200\n"
+"PO-Revision-Date: 2019-02-12 20:43+0100\n"
"Last-Translator: Matej Urbančič \n"
"Language-Team: Slovenian GNOME Translation Team \n"
"Language: sl_SI\n"
@@ -20,7 +20,7 @@ msgstr ""
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
"%100==4 ? 3 : 0);\n"
"X-Poedit-SourceCharset: utf-8\n"
-"X-Generator: Poedit 2.0.1\n"
+"X-Generator: Poedit 2.1.1\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -32,7 +32,7 @@ msgstr "Seja omogoča prijavo v običajno namizje GNOME."
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7
msgid "Attach modal dialog to the parent window"
-msgstr "Priponi modalno pogovorno okno nadrejenemu oknu"
+msgstr "Pripni modalno pogovorno okno nadrejenemu oknu"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:8
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:25
@@ -41,8 +41,8 @@ msgstr "Priponi modalno pogovorno okno nadrejenemu oknu"
msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr ""
-"Možnost prepiše ključ med nastavitvami org.gnome.mutter med zagonom lupine "
-"GNOME."
+"Možnost med zagonom lupine GNOME prepiše ključ med nastavitvami org.gnome."
+"mutter."
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:16
msgid "Arrangement of buttons on the titlebar"
@@ -53,8 +53,8 @@ msgid ""
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
"GNOME Shell."
msgstr ""
-"Možnost prepiše ključ med nastavitvami org.gnome.desktop.wm med zagonom "
-"lupine GNOME."
+"Možnost med zagonom lupine GNOME prepiše ključ med nastavitvami org.gnome."
+"desktop.wm."
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:24
msgid "Enable edge tiling when dropping windows on screen edges"
@@ -111,8 +111,8 @@ msgid ""
"A list of strings, each containing an application id (desktop file name), "
"followed by a colon and the workspace number"
msgstr ""
-"Seznam nizov z določilom ID programa (ime programa), ki mu sledi "
-"dvopičje in nato številka delovne površine."
+"Seznam nizov z določilom ID programa (ime programa), ki mu sledi dvopičje in "
+"nato številka delovne površine."
#: extensions/auto-move-windows/prefs.js:60
msgid "Application"
@@ -174,8 +174,8 @@ msgid ""
"as such it has little functionality on its own.\n"
"Nevertheless it’s possible to customize the greeting message."
msgstr ""
-"Primer je oblikovan kot predloga za izgradnjo kakovostnih razširitev "
-"za lupino, zato je delovanje deloma prilagojeno.\n"
+"Primer je oblikovan kot predloga za izgradnjo kakovostnih razširitev za "
+"lupino, zato je delovanje deloma prilagojeno.\n"
"Kljub vsemu je mogoče prilagajati pozdravno sporočilo."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
@@ -202,9 +202,9 @@ msgid ""
"shell default of placing it at the bottom. Changing this setting requires "
"restarting the shell to have any effect."
msgstr ""
-"Izbrana možnost določi postavitev nazivov oken na vrh posamezne sličice"
-"in s tem prepiše privzeti izpis pod sličico. Za uveljavitev sprememb je "
-"treba lupino ponovno zagnati."
+"Izbrana možnost določi postavitev nazivov oken na vrh posamezne sličice in s "
+"tem prepiše privzeti izpis pod sličico. Za uveljavitev sprememb je treba "
+"lupino ponovno zagnati."
#: extensions/places-menu/extension.js:78
#: extensions/places-menu/extension.js:81