[gnome-shell-extensions/wip/rstrode/heads-up-display: 9/62] Add desktop icons extension




commit 8cf921029c35270bf9fd8d9949d3d13abfd78f92
Author: Carlos Soriano <csoriano gnome org>
Date:   Mon Aug 13 17:28:41 2018 +0200

    Add desktop icons extension

 extensions/desktop-icons/createFolderDialog.js     | 164 ++++
 extensions/desktop-icons/createThumbnail.js        |  35 +
 extensions/desktop-icons/dbusUtils.js              | 103 +++
 extensions/desktop-icons/desktopGrid.js            | 692 +++++++++++++++++
 extensions/desktop-icons/desktopIconsUtil.js       | 123 +++
 extensions/desktop-icons/desktopManager.js         | 754 +++++++++++++++++++
 extensions/desktop-icons/extension.js              |  71 ++
 extensions/desktop-icons/fileItem.js               | 830 +++++++++++++++++++++
 extensions/desktop-icons/meson.build               |  19 +
 extensions/desktop-icons/metadata.json.in          |  11 +
 extensions/desktop-icons/po/LINGUAS                |  19 +
 extensions/desktop-icons/po/POTFILES.in            |   4 +
 extensions/desktop-icons/po/cs.po                  | 195 +++++
 extensions/desktop-icons/po/da.po                  | 159 ++++
 extensions/desktop-icons/po/de.po                  | 192 +++++
 extensions/desktop-icons/po/es.po                  | 218 ++++++
 extensions/desktop-icons/po/fi.po                  | 191 +++++
 extensions/desktop-icons/po/fr.po                  | 164 ++++
 extensions/desktop-icons/po/fur.po                 | 187 +++++
 extensions/desktop-icons/po/hr.po                  | 186 +++++
 extensions/desktop-icons/po/hu.po                  | 189 +++++
 extensions/desktop-icons/po/id.po                  | 190 +++++
 extensions/desktop-icons/po/it.po                  | 189 +++++
 extensions/desktop-icons/po/ja.po                  | 187 +++++
 extensions/desktop-icons/po/meson.build            |   1 +
 extensions/desktop-icons/po/nl.po                  | 188 +++++
 extensions/desktop-icons/po/pl.po                  | 193 +++++
 extensions/desktop-icons/po/pt_BR.po               | 199 +++++
 extensions/desktop-icons/po/ru.po                  | 153 ++++
 extensions/desktop-icons/po/sv.po                  | 197 +++++
 extensions/desktop-icons/po/tr.po                  | 191 +++++
 extensions/desktop-icons/po/zh_TW.po               | 135 ++++
 extensions/desktop-icons/prefs.js                  | 159 ++++
 extensions/desktop-icons/schemas/meson.build       |   6 +
 ...nome.shell.extensions.desktop-icons.gschema.xml |  25 +
 extensions/desktop-icons/stylesheet.css            |  38 +
 meson.build                                        |   1 +
 po/ca.po                                           | 194 +++++
 po/cs.po                                           | 198 +++++
 po/da.po                                           | 194 +++++
 po/de.po                                           | 195 +++++
 po/en_GB.po                                        | 204 ++++-
 po/es.po                                           | 243 +++++-
 po/fi.po                                           | 209 +++++-
 po/fr.po                                           | 167 +++++
 po/fur.po                                          | 198 ++++-
 po/hr.po                                           | 195 +++++
 po/hu.po                                           | 195 +++++
 po/id.po                                           | 197 +++++
 po/it.po                                           | 192 +++++
 po/ja.po                                           | 210 +++++-
 po/nl.po                                           | 191 +++++
 po/pl.po                                           | 196 +++++
 po/pt_BR.po                                        | 216 +++++-
 po/ru.po                                           | 156 ++++
 po/sv.po                                           | 204 +++++
 po/tr.po                                           | 194 +++++
 po/zh_TW.po                                        | 149 +++-
 58 files changed, 10607 insertions(+), 48 deletions(-)
---
diff --git a/extensions/desktop-icons/createFolderDialog.js b/extensions/desktop-icons/createFolderDialog.js
new file mode 100644
index 0000000..f3e40e9
--- /dev/null
+++ b/extensions/desktop-icons/createFolderDialog.js
@@ -0,0 +1,164 @@
+/* Desktop Icons GNOME Shell extension
+ *
+ * Copyright (C) 2019 Andrea Azzaronea <andrea azzarone canonical com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+const { Clutter, GObject, GLib, Gio, St } = imports.gi;
+
+const Signals = imports.signals;
+
+const Dialog = imports.ui.dialog;
+const Gettext = imports.gettext.domain('desktop-icons');
+const ModalDialog = imports.ui.modalDialog;
+const ShellEntry = imports.ui.shellEntry;
+const Tweener = imports.ui.tweener;
+
+const ExtensionUtils = imports.misc.extensionUtils;
+const Me = ExtensionUtils.getCurrentExtension();
+const DesktopIconsUtil = Me.imports.desktopIconsUtil;
+const Extension = Me.imports.extension;
+
+const _ = Gettext.gettext;
+
+const DIALOG_GROW_TIME = 0.1;
+
+var CreateFolderDialog = class extends ModalDialog.ModalDialog {
+
+    constructor() {
+        super({ styleClass: 'create-folder-dialog' });
+
+        this._buildLayout();
+    }
+
+    _buildLayout() {
+        let label = new St.Label({ style_class: 'create-folder-dialog-label',
+                                   text: _('New folder name') });
+        this.contentLayout.add(label, { x_align: St.Align.START });
+
+        this._entry = new St.Entry({ style_class: 'create-folder-dialog-entry',
+                                     can_focus: true });
+        this._entry.clutter_text.connect('activate', this._onEntryActivate.bind(this));
+        this._entry.clutter_text.connect('text-changed', this._onTextChanged.bind(this));
+        ShellEntry.addContextMenu(this._entry);
+        this.contentLayout.add(this._entry);
+        this.setInitialKeyFocus(this._entry);
+
+        this._errorBox = new St.BoxLayout({ style_class: 'create-folder-dialog-error-box',
+                                            visible: false });
+        this.contentLayout.add(this._errorBox, { expand: true });
+
+        this._errorMessage = new St.Label({ style_class: 'create-folder-dialog-error-label' });
+        this._errorMessage.clutter_text.line_wrap = true;
+        this._errorBox.add(this._errorMessage, { expand: true,
+                                                 x_align: St.Align.START,
+                                                 x_fill: false,
+                                                 y_align: St.Align.MIDDLE,
+                                                 y_fill: false });
+
+        this._createButton = this.addButton({ action: this._onCreateButton.bind(this),
+                                              label: _('Create') });
+        this.addButton({ action: this.close.bind(this),
+                         label: _('Cancel'),
+                         key: Clutter.Escape });
+        this._onTextChanged();
+    }
+
+    _showError(message) {
+        this._errorMessage.set_text(message);
+
+        if (!this._errorBox.visible) {
+            let [errorBoxMinHeight, errorBoxNaturalHeight] = this._errorBox.get_preferred_height(-1);
+            let parentActor = this._errorBox.get_parent();
+
+            Tweener.addTween(parentActor,
+                             { height: parentActor.height + errorBoxNaturalHeight,
+                               time: DIALOG_GROW_TIME,
+                               transition: 'easeOutQuad',
+                               onComplete: () => {
+                                   parentActor.set_height(-1);
+                                   this._errorBox.show();
+                               }
+                             });
+        }
+    }
+
+    _hideError() {
+        if (this._errorBox.visible) {
+            let [errorBoxMinHeight, errorBoxNaturalHeight] = this._errorBox.get_preferred_height(-1);
+            let parentActor = this._errorBox.get_parent();
+
+            Tweener.addTween(parentActor,
+                             { height: parentActor.height - errorBoxNaturalHeight,
+                               time: DIALOG_GROW_TIME,
+                               transition: 'easeOutQuad',
+                               onComplete: () => {
+                                   parentActor.set_height(-1);
+                                   this._errorBox.hide();
+                                   this._errorMessage.set_text('');
+                               }
+                             });
+        }
+    }
+
+    _onCreateButton() {
+        this._onEntryActivate();
+    }
+
+    _onEntryActivate() {
+        if (!this._createButton.reactive)
+            return;
+
+        this.emit('response', this._entry.get_text());
+        this.close();
+    }
+
+    _onTextChanged() {
+        let text = this._entry.get_text();
+        let is_valid = true;
+
+        let found_name = false;
+        for(let name of Extension.desktopManager.getDesktopFileNames()) {
+            if (name === text) {
+                found_name = true;
+                break;
+            }
+        }
+
+        if (text.trim().length == 0) {
+            is_valid = false;
+            this._hideError();
+        } else if (text.includes('/')) {
+            is_valid = false;
+            this._showError(_('Folder names cannot contain “/”.'));
+        } else if (text === '.') {
+            is_valid = false;
+            this._showError(_('A folder cannot be called “.”.'));
+        } else if (text === '..') {
+            is_valid = false;
+            this._showError(_('A folder cannot be called “..”.'));
+        } else if (text.startsWith('.')) {
+            this._showError(_('Folders with “.” at the beginning of their name are hidden.'));
+        } else if (found_name) {
+            this._showError(_('There is already a file or folder with that name.'));
+            is_valid = false;
+        } else {
+            this._hideError();
+        }
+
+        this._createButton.reactive = is_valid;
+    }
+};
+Signals.addSignalMethods(CreateFolderDialog.prototype);
diff --git a/extensions/desktop-icons/createThumbnail.js b/extensions/desktop-icons/createThumbnail.js
new file mode 100755
index 0000000..212f6b7
--- /dev/null
+++ b/extensions/desktop-icons/createThumbnail.js
@@ -0,0 +1,35 @@
+#!/usr/bin/gjs
+
+/* Desktop Icons GNOME Shell extension
+ *
+ * Copyright (C) 2018 Sergio Costas <rastersoft gmail com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+const GnomeDesktop = imports.gi.GnomeDesktop;
+const Gio = imports.gi.Gio;
+
+let thumbnailFactory = GnomeDesktop.DesktopThumbnailFactory.new(GnomeDesktop.DesktopThumbnailSize.LARGE);
+
+let file = Gio.File.new_for_path(ARGV[0]);
+let fileUri = file.get_uri();
+
+let fileInfo = file.query_info('standard::content-type,time::modified', Gio.FileQueryInfoFlags.NONE, null);
+let modifiedTime = fileInfo.get_attribute_uint64('time::modified');
+let thumbnailPixbuf = thumbnailFactory.generate_thumbnail(fileUri, fileInfo.get_content_type());
+if (thumbnailPixbuf == null)
+    thumbnailFactory.create_failed_thumbnail(fileUri, modifiedTime);
+else
+    thumbnailFactory.save_thumbnail(thumbnailPixbuf, fileUri, modifiedTime);
diff --git a/extensions/desktop-icons/dbusUtils.js b/extensions/desktop-icons/dbusUtils.js
new file mode 100644
index 0000000..19fe987
--- /dev/null
+++ b/extensions/desktop-icons/dbusUtils.js
@@ -0,0 +1,103 @@
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+var NautilusFileOperationsProxy;
+var FreeDesktopFileManagerProxy;
+
+const NautilusFileOperationsInterface = `<node>
+<interface name='org.gnome.Nautilus.FileOperations'>
+    <method name='CopyURIs'>
+        <arg name='URIs' type='as' direction='in'/>
+        <arg name='Destination' type='s' direction='in'/>
+    </method>
+    <method name='MoveURIs'>
+        <arg name='URIs' type='as' direction='in'/>
+        <arg name='Destination' type='s' direction='in'/>
+    </method>
+    <method name='EmptyTrash'>
+    </method>
+    <method name='TrashFiles'>
+        <arg name='URIs' type='as' direction='in'/>
+    </method>
+    <method name='CreateFolder'>
+        <arg name='URI' type='s' direction='in'/>
+    </method>
+    <method name='RenameFile'>
+        <arg name='URI' type='s' direction='in'/>
+        <arg name='NewName' type='s' direction='in'/>
+    </method>
+    <method name='Undo'>
+    </method>
+    <method name='Redo'>
+    </method>
+    <property name='UndoStatus' type='i' access='read'/>
+</interface>
+</node>`;
+
+const NautilusFileOperationsProxyInterface = Gio.DBusProxy.makeProxyWrapper(NautilusFileOperationsInterface);
+
+const FreeDesktopFileManagerInterface = `<node>
+<interface name='org.freedesktop.FileManager1'>
+    <method name='ShowItems'>
+        <arg name='URIs' type='as' direction='in'/>
+        <arg name='StartupId' type='s' direction='in'/>
+    </method>
+    <method name='ShowItemProperties'>
+        <arg name='URIs' type='as' direction='in'/>
+        <arg name='StartupId' type='s' direction='in'/>
+    </method>
+</interface>
+</node>`;
+
+const FreeDesktopFileManagerProxyInterface = Gio.DBusProxy.makeProxyWrapper(FreeDesktopFileManagerInterface);
+
+function init() {
+    NautilusFileOperationsProxy = new NautilusFileOperationsProxyInterface(
+        Gio.DBus.session,
+        'org.gnome.Nautilus',
+        '/org/gnome/Nautilus',
+        (proxy, error) => {
+            if (error) {
+                log('Error connecting to Nautilus');
+            }
+        }
+    );
+
+    FreeDesktopFileManagerProxy = new FreeDesktopFileManagerProxyInterface(
+        Gio.DBus.session,
+        'org.freedesktop.FileManager1',
+        '/org/freedesktop/FileManager1',
+        (proxy, error) => {
+            if (error) {
+                log('Error connecting to Nautilus');
+            }
+        }
+    );
+}
+
+function openFileWithOtherApplication(filePath) {
+    let fdList = new Gio.UnixFDList();
+    let channel = GLib.IOChannel.new_file(filePath, "r");
+    fdList.append(channel.unix_get_fd());
+    channel.set_close_on_unref(true);
+    let builder = GLib.VariantBuilder.new(GLib.VariantType.new("a{sv}"));
+    let options = builder.end();
+    let parameters = GLib.Variant.new_tuple([GLib.Variant.new_string("0"),
+                                             GLib.Variant.new_handle(0),
+                                             options]);
+    Gio.bus_get(Gio.BusType.SESSION, null,
+        (source, result) => {
+            let dbus_connection = Gio.bus_get_finish(result);
+            dbus_connection.call_with_unix_fd_list("org.freedesktop.portal.Desktop",
+                                                   "/org/freedesktop/portal/desktop",
+                                                   "org.freedesktop.portal.OpenURI",
+                                                   "OpenFile",
+                                                   parameters,
+                                                   GLib.VariantType.new("o"),
+                                                   Gio.DBusCallFlags.NONE,
+                                                   -1,
+                                                   fdList,
+                                                   null,
+                                                   null);
+        }
+    );
+}
diff --git a/extensions/desktop-icons/desktopGrid.js b/extensions/desktop-icons/desktopGrid.js
new file mode 100644
index 0000000..a2d1f12
--- /dev/null
+++ b/extensions/desktop-icons/desktopGrid.js
@@ -0,0 +1,692 @@
+/* Desktop Icons GNOME Shell extension
+ *
+ * Copyright (C) 2017 Carlos Soriano <csoriano redhat com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+const Gtk = imports.gi.Gtk;
+const Clutter = imports.gi.Clutter;
+const St = imports.gi.St;
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+const Shell = imports.gi.Shell;
+
+const Signals = imports.signals;
+
+const Layout = imports.ui.layout;
+const Main = imports.ui.main;
+const BoxPointer = imports.ui.boxpointer;
+const PopupMenu = imports.ui.popupMenu;
+const GrabHelper = imports.ui.grabHelper;
+const Config = imports.misc.config;
+
+const ExtensionUtils = imports.misc.extensionUtils;
+const Me = ExtensionUtils.getCurrentExtension();
+const CreateFolderDialog = Me.imports.createFolderDialog;
+const Extension = Me.imports.extension;
+const FileItem = Me.imports.fileItem;
+const Prefs = Me.imports.prefs;
+const DBusUtils = Me.imports.dbusUtils;
+const DesktopIconsUtil = Me.imports.desktopIconsUtil;
+const Util = imports.misc.util;
+
+const Clipboard = St.Clipboard.get_default();
+const CLIPBOARD_TYPE = St.ClipboardType.CLIPBOARD;
+const Gettext = imports.gettext.domain('desktop-icons');
+
+const _ = Gettext.gettext;
+
+
+/* From NautilusFileUndoManagerState */
+var UndoStatus = {
+    NONE: 0,
+    UNDO: 1,
+    REDO: 2,
+};
+
+var StoredCoordinates = {
+    PRESERVE: 0,
+    OVERWRITE:1,
+    ASSIGN:2,
+};
+
+class Placeholder extends St.Bin {
+    constructor() {
+        super();
+    }
+}
+
+var DesktopGrid = class {
+
+    constructor(bgManager) {
+        this._bgManager = bgManager;
+
+        this._fileItemHandlers = new Map();
+        this._fileItems = [];
+
+        this.layout = new Clutter.GridLayout({
+            orientation: Clutter.Orientation.VERTICAL,
+            column_homogeneous: true,
+            row_homogeneous: true
+        });
+
+        this._actorLayout = new Clutter.BinLayout({
+            x_align: Clutter.BinAlignment.FIXED,
+            y_align: Clutter.BinAlignment.FIXED
+        });
+
+        this.actor = new St.Widget({
+            layout_manager: this._actorLayout
+        });
+        this.actor._delegate = this;
+
+        this._grid = new St.Widget({
+            name: 'DesktopGrid',
+            layout_manager: this.layout,
+            reactive: true,
+            x_expand: true,
+            y_expand: true,
+            can_focus: true,
+            opacity: 255
+        });
+        this.actor.add_child(this._grid);
+
+        this._renamePopup = new RenamePopup(this);
+        this.actor.add_child(this._renamePopup.actor);
+
+        this._bgManager._container.add_child(this.actor);
+
+        this.actor.connect('destroy', () => this._onDestroy());
+
+        let monitorIndex = bgManager._monitorIndex;
+        this._monitorConstraint = new Layout.MonitorConstraint({
+            index: monitorIndex,
+            work_area: true
+        });
+        this.actor.add_constraint(this._monitorConstraint);
+
+        this._addDesktopBackgroundMenu();
+
+        this._bgDestroyedId = bgManager.backgroundActor.connect('destroy',
+            () => this._backgroundDestroyed());
+
+        this._grid.connect('button-press-event', (actor, event) => this._onPressButton(actor, event));
+
+        this._grid.connect('key-press-event', this._onKeyPress.bind(this));
+
+        this._grid.connect('allocation-changed', () => Extension.desktopManager.scheduleReLayoutChildren());
+    }
+
+    _onKeyPress(actor, event) {
+        if (global.stage.get_key_focus() != actor)
+            return Clutter.EVENT_PROPAGATE;
+
+        let symbol = event.get_key_symbol();
+        let isCtrl = (event.get_state() & Clutter.ModifierType.CONTROL_MASK) != 0;
+        let isShift = (event.get_state() & Clutter.ModifierType.SHIFT_MASK) != 0;
+        if (isCtrl && isShift && [Clutter.Z, Clutter.z].indexOf(symbol) > -1) {
+            this._doRedo();
+            return Clutter.EVENT_STOP;
+        }
+        else if (isCtrl && [Clutter.Z, Clutter.z].indexOf(symbol) > -1) {
+            this._doUndo();
+            return Clutter.EVENT_STOP;
+        }
+        else if (isCtrl && [Clutter.C, Clutter.c].indexOf(symbol) > -1) {
+            Extension.desktopManager.doCopy();
+            return Clutter.EVENT_STOP;
+        }
+        else if (isCtrl && [Clutter.X, Clutter.x].indexOf(symbol) > -1) {
+            Extension.desktopManager.doCut();
+            return Clutter.EVENT_STOP;
+        }
+        else if (isCtrl && [Clutter.V, Clutter.v].indexOf(symbol) > -1) {
+            this._doPaste();
+            return Clutter.EVENT_STOP;
+        }
+        else if (symbol == Clutter.Return) {
+            Extension.desktopManager.doOpen();
+            return Clutter.EVENT_STOP;
+        }
+        else if (symbol == Clutter.Delete) {
+            Extension.desktopManager.doTrash();
+            return Clutter.EVENT_STOP;
+        } else if (symbol == Clutter.F2) {
+            // Support renaming other grids file items.
+            Extension.desktopManager.doRename();
+            return Clutter.EVENT_STOP;
+        }
+
+        return Clutter.EVENT_PROPAGATE;
+    }
+
+    _backgroundDestroyed() {
+        this._bgDestroyedId = 0;
+        if (this._bgManager == null)
+            return;
+
+        if (this._bgManager._backgroundSource) {
+            this._bgDestroyedId = this._bgManager.backgroundActor.connect('destroy',
+                () => this._backgroundDestroyed());
+        } else {
+            this.actor.destroy();
+        }
+    }
+
+    _onDestroy() {
+        if (this._bgDestroyedId && this._bgManager.backgroundActor != null)
+            this._bgManager.backgroundActor.disconnect(this._bgDestroyedId);
+        this._bgDestroyedId = 0;
+        this._bgManager = null;
+    }
+
+    _onNewFolderClicked() {
+
+        let dialog = new CreateFolderDialog.CreateFolderDialog();
+
+        dialog.connect('response', (dialog, name) => {
+            let dir = DesktopIconsUtil.getDesktopDir().get_child(name);
+            DBusUtils.NautilusFileOperationsProxy.CreateFolderRemote(dir.get_uri(),
+                (result, error) => {
+                    if (error)
+                        throw new Error('Error creating new folder: ' + error.message);
+                }
+            );
+        });
+
+        dialog.open();
+    }
+
+    _parseClipboardText(text) {
+        if (text === null)
+            return [false, false, null];
+
+        let lines = text.split('\n');
+        let [mime, action, ...files] = lines;
+
+        if (mime != 'x-special/nautilus-clipboard')
+            return [false, false, null];
+
+        if (!(['copy', 'cut'].includes(action)))
+            return [false, false, null];
+        let isCut = action == 'cut';
+
+        /* Last line is empty due to the split */
+        if (files.length <= 1)
+            return [false, false, null];
+        /* Remove last line */
+        files.pop();
+
+        return [true, isCut, files];
+    }
+
+    _doPaste() {
+        Clipboard.get_text(CLIPBOARD_TYPE,
+            (clipboard, text) => {
+                let [valid, is_cut, files] = this._parseClipboardText(text);
+                if (!valid)
+                    return;
+
+                let desktopDir = `${DesktopIconsUtil.getDesktopDir().get_uri()}`;
+                if (is_cut) {
+                    DBusUtils.NautilusFileOperationsProxy.MoveURIsRemote(files, desktopDir,
+                        (result, error) => {
+                            if (error)
+                                throw new Error('Error moving files: ' + error.message);
+                        }
+                    );
+                } else {
+                    DBusUtils.NautilusFileOperationsProxy.CopyURIsRemote(files, desktopDir,
+                        (result, error) => {
+                            if (error)
+                                throw new Error('Error copying files: ' + error.message);
+                        }
+                    );
+                }
+            }
+        );
+    }
+
+    _onPasteClicked() {
+        this._doPaste();
+    }
+
+    _doUndo() {
+        DBusUtils.NautilusFileOperationsProxy.UndoRemote(
+            (result, error) => {
+                if (error)
+                    throw new Error('Error performing undo: ' + error.message);
+            }
+        );
+    }
+
+    _onUndoClicked() {
+        this._doUndo();
+    }
+
+    _doRedo() {
+        DBusUtils.NautilusFileOperationsProxy.RedoRemote(
+            (result, error) => {
+                if (error)
+                    throw new Error('Error performing redo: ' + error.message);
+            }
+        );
+    }
+
+    _onRedoClicked() {
+        this._doRedo();
+    }
+
+    _onOpenDesktopInFilesClicked() {
+        Gio.AppInfo.launch_default_for_uri_async(DesktopIconsUtil.getDesktopDir().get_uri(),
+            null, null,
+            (source, result) => {
+                try {
+                    Gio.AppInfo.launch_default_for_uri_finish(result);
+                } catch (e) {
+                   log('Error opening Desktop in Files: ' + e.message);
+                }
+            }
+        );
+    }
+
+    _onOpenTerminalClicked() {
+        let desktopPath = DesktopIconsUtil.getDesktopDir().get_path();
+        DesktopIconsUtil.launchTerminal(desktopPath);
+    }
+
+    _syncUndoRedo() {
+        this._undoMenuItem.actor.visible = DBusUtils.NautilusFileOperationsProxy.UndoStatus == 
UndoStatus.UNDO;
+        this._redoMenuItem.actor.visible = DBusUtils.NautilusFileOperationsProxy.UndoStatus == 
UndoStatus.REDO;
+    }
+
+    _undoStatusChanged(proxy, properties, test) {
+        if ('UndoStatus' in properties.deep_unpack())
+            this._syncUndoRedo();
+    }
+
+    _createDesktopBackgroundMenu() {
+        let menu = new PopupMenu.PopupMenu(Main.layoutManager.dummyCursor,
+                                           0, St.Side.TOP);
+        menu.addAction(_("New Folder"), () => this._onNewFolderClicked());
+        menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+        this._pasteMenuItem = menu.addAction(_("Paste"), () => this._onPasteClicked());
+        this._undoMenuItem = menu.addAction(_("Undo"), () => this._onUndoClicked());
+        this._redoMenuItem = menu.addAction(_("Redo"), () => this._onRedoClicked());
+        menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+        menu.addAction(_("Show Desktop in Files"), () => this._onOpenDesktopInFilesClicked());
+        menu.addAction(_("Open in Terminal"), () => this._onOpenTerminalClicked());
+        menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+        menu.addSettingsAction(_("Change Background…"), 'gnome-background-panel.desktop');
+        menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+        menu.addSettingsAction(_("Display Settings"), 'gnome-display-panel.desktop');
+        menu.addSettingsAction(_("Settings"), 'gnome-control-center.desktop');
+
+        menu.actor.add_style_class_name('background-menu');
+
+        Main.layoutManager.uiGroup.add_child(menu.actor);
+        menu.actor.hide();
+
+        menu._propertiesChangedId = DBusUtils.NautilusFileOperationsProxy.connect('g-properties-changed',
+            this._undoStatusChanged.bind(this));
+        this._syncUndoRedo();
+
+        menu.connect('destroy',
+            () => DBusUtils.NautilusFileOperationsProxy.disconnect(menu._propertiesChangedId));
+        menu.connect('open-state-changed',
+            (popupm, isOpen) => {
+                if (isOpen) {
+                    Clipboard.get_text(CLIPBOARD_TYPE,
+                        (clipBoard, text) => {
+                            let [valid, is_cut, files] = this._parseClipboardText(text);
+                            this._pasteMenuItem.setSensitive(valid);
+                        }
+                    );
+                }
+            }
+        );
+        this._pasteMenuItem.setSensitive(false);
+
+        return menu;
+    }
+
+    _openMenu(x, y) {
+        Main.layoutManager.setDummyCursorGeometry(x, y, 0, 0);
+        this.actor._desktopBackgroundMenu.open(BoxPointer.PopupAnimation.NONE);
+        /* Since the handler is in the press event it needs to ignore the release event
+         * to not immediately close the menu on release
+         */
+        this.actor._desktopBackgroundManager.ignoreRelease();
+    }
+
+    _addFileItemTo(fileItem, column, row, coordinatesAction) {
+        let placeholder = this.layout.get_child_at(column, row);
+        placeholder.child = fileItem.actor;
+        this._fileItems.push(fileItem);
+        let selectedId = fileItem.connect('selected', this._onFileItemSelected.bind(this));
+        let renameId = fileItem.connect('rename-clicked', this.doRename.bind(this));
+        this._fileItemHandlers.set(fileItem, [selectedId, renameId]);
+
+        /* If this file is new in the Desktop and hasn't yet
+         * fixed coordinates, store the new possition to ensure
+         * that the next time it will be shown in the same possition.
+         * Also store the new possition if it has been moved by the user,
+         * and not triggered by a screen change.
+         */
+        if ((fileItem.savedCoordinates == null) || (coordinatesAction == StoredCoordinates.OVERWRITE)) {
+            let [fileX, fileY] = placeholder.get_transformed_position();
+            fileItem.savedCoordinates = [Math.round(fileX), Math.round(fileY)];
+        }
+    }
+
+    addFileItemCloseTo(fileItem, x, y, coordinatesAction) {
+        let [column, row] = this._getEmptyPlaceClosestTo(x, y, coordinatesAction);
+        this._addFileItemTo(fileItem, column, row, coordinatesAction);
+    }
+
+    _getEmptyPlaceClosestTo(x, y, coordinatesAction) {
+        let maxColumns = this._getMaxColumns();
+        let maxRows = this._getMaxRows();
+
+        let [actorX, actorY] = this._grid.get_transformed_position();
+        let actorWidth = this._grid.allocation.x2 - this._grid.allocation.x1;
+        let actorHeight = this._grid.allocation.y2 - this._grid.allocation.y1;
+        let placeX = Math.round((x - actorX) * maxColumns / actorWidth);
+        let placeY = Math.round((y - actorY) * maxRows / actorHeight);
+
+        placeX = DesktopIconsUtil.clamp(placeX, 0, maxColumns - 1);
+        placeY = DesktopIconsUtil.clamp(placeY, 0, maxRows - 1);
+        if (this.layout.get_child_at(placeX, placeY).child == null)
+            return [placeX, placeY];
+        let found = false;
+        let resColumn = null;
+        let resRow = null;
+        let minDistance = Infinity;
+        for (let column = 0; column < maxColumns; column++) {
+            for (let row = 0; row < maxRows; row++) {
+                let placeholder = this.layout.get_child_at(column, row);
+                if (placeholder.child != null)
+                    continue;
+
+                let [proposedX, proposedY] = placeholder.get_transformed_position();
+                if (coordinatesAction == StoredCoordinates.ASSIGN)
+                    return [column, row];
+                let distance = DesktopIconsUtil.distanceBetweenPoints(proposedX, proposedY, x, y);
+                if (distance < minDistance) {
+                    found = true;
+                    minDistance = distance;
+                    resColumn = column;
+                    resRow = row;
+                }
+            }
+        }
+
+        if (!found)
+            throw new Error(`Not enough place at monitor ${this._bgManager._monitorIndex}`);
+
+        return [resColumn, resRow];
+    }
+
+    removeFileItem(fileItem) {
+        let index = this._fileItems.indexOf(fileItem);
+        if (index > -1)
+            this._fileItems.splice(index, 1);
+        else
+            throw new Error('Error removing children from container');
+
+        let [column, row] = this._getPosOfFileItem(fileItem);
+        let placeholder = this.layout.get_child_at(column, row);
+        placeholder.child = null;
+        let [selectedId, renameId] = this._fileItemHandlers.get(fileItem);
+        fileItem.disconnect(selectedId);
+        fileItem.disconnect(renameId);
+        this._fileItemHandlers.delete(fileItem);
+    }
+
+    _fillPlaceholders() {
+        for (let column = 0; column < this._getMaxColumns(); column++) {
+            for (let row = 0; row < this._getMaxRows(); row++) {
+                this.layout.attach(new Placeholder(), column, row, 1, 1);
+            }
+        }
+    }
+
+    reset() {
+        let tmpFileItemsCopy = this._fileItems.slice();
+        for (let fileItem of tmpFileItemsCopy)
+            this.removeFileItem(fileItem);
+        this._grid.remove_all_children();
+
+        this._fillPlaceholders();
+    }
+
+    _onStageMotion(actor, event) {
+        if (this._drawingRubberBand) {
+            let [x, y] = event.get_coords();
+            this._updateRubberBand(x, y);
+            this._selectFromRubberband(x, y);
+        }
+        return Clutter.EVENT_PROPAGATE;
+    }
+
+    _onPressButton(actor, event) {
+        let button = event.get_button();
+        let [x, y] = event.get_coords();
+
+        this._grid.grab_key_focus();
+
+        if (button == 1) {
+            let shiftPressed = !!(event.get_state() & Clutter.ModifierType.SHIFT_MASK);
+            let controlPressed = !!(event.get_state() & Clutter.ModifierType.CONTROL_MASK);
+            if (!shiftPressed && !controlPressed)
+                Extension.desktopManager.clearSelection();
+            let [gridX, gridY] = this._grid.get_transformed_position();
+            Extension.desktopManager.startRubberBand(x, y, gridX, gridY);
+            return Clutter.EVENT_STOP;
+        }
+
+        if (button == 3) {
+            this._openMenu(x, y);
+
+            return Clutter.EVENT_STOP;
+        }
+
+        return Clutter.EVENT_PROPAGATE;
+    }
+
+    _addDesktopBackgroundMenu() {
+        this.actor._desktopBackgroundMenu = this._createDesktopBackgroundMenu();
+        this.actor._desktopBackgroundManager = new PopupMenu.PopupMenuManager({ actor: this.actor });
+        this.actor._desktopBackgroundManager.addMenu(this.actor._desktopBackgroundMenu);
+
+        this.actor.connect('destroy', () => {
+            this.actor._desktopBackgroundMenu.destroy();
+            this.actor._desktopBackgroundMenu = null;
+            this.actor._desktopBackgroundManager = null;
+        });
+    }
+
+    _getMaxColumns() {
+        let gridWidth = this._grid.allocation.x2 - this._grid.allocation.x1;
+        return Math.floor(gridWidth / 
Prefs.get_desired_width(St.ThemeContext.get_for_stage(global.stage).scale_factor));
+    }
+
+    _getMaxRows() {
+        let gridHeight = this._grid.allocation.y2 - this._grid.allocation.y1;
+        return Math.floor(gridHeight / 
Prefs.get_desired_height(St.ThemeContext.get_for_stage(global.stage).scale_factor));
+    }
+
+    acceptDrop(source, actor, x, y, time) {
+        /* Coordinates are relative to the grid, we want to transform them to
+         * absolute coordinates to work across monitors */
+        let [gridX, gridY] = this.actor.get_transformed_position();
+        let [absoluteX, absoluteY] = [x + gridX, y + gridY];
+        return Extension.desktopManager.acceptDrop(absoluteX, absoluteY);
+    }
+
+    _getPosOfFileItem(itemToFind) {
+        if (itemToFind == null)
+            throw new Error('Error at _getPosOfFileItem: child cannot be null');
+
+        let found = false;
+        let maxColumns = this._getMaxColumns();
+        let maxRows = this._getMaxRows();
+        let column = 0;
+        let row = 0;
+        for (column = 0; column < maxColumns; column++) {
+            for (row = 0; row < maxRows; row++) {
+                let item = this.layout.get_child_at(column, row);
+                if (item.child && item.child._delegate.file.equal(itemToFind.file)) {
+                    found = true;
+                    break;
+                }
+            }
+
+            if (found)
+                break;
+        }
+
+        if (!found)
+            throw new Error('Position of file item was not found');
+
+        return [column, row];
+    }
+
+    _onFileItemSelected(fileItem, keepCurrentSelection, addToSelection) {
+        this._grid.grab_key_focus();
+    }
+
+    doRename(fileItem) {
+        this._renamePopup.onFileItemRenameClicked(fileItem);
+    }
+};
+
+var RenamePopup = class {
+
+    constructor(grid) {
+        this._source = null;
+        this._isOpen = false;
+
+        this._renameEntry = new St.Entry({ hint_text: _("Enter file name…"),
+                                           can_focus: true,
+                                           x_expand: true });
+        this._renameEntry.clutter_text.connect('activate', this._onRenameAccepted.bind(this));
+        this._renameOkButton= new St.Button({ label: _("OK"),
+                                              style_class: 'app-view-control button',
+                                              button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE,
+                                              reactive: true,
+                                              can_focus: true,
+                                              x_expand: true });
+        this._renameCancelButton = new St.Button({ label: _("Cancel"),
+                                                   style_class: 'app-view-control button',
+                                                   button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE,
+                                                   reactive: true,
+                                                   can_focus: true,
+                                                   x_expand: true });
+        this._renameCancelButton.connect('clicked', () => { this._onRenameCanceled(); });
+        this._renameOkButton.connect('clicked', () => { this._onRenameAccepted(); });
+        let renameButtonsBoxLayout = new Clutter.BoxLayout({ homogeneous: true });
+        let renameButtonsBox = new St.Widget({ layout_manager: renameButtonsBoxLayout,
+                                               x_expand: true });
+        renameButtonsBox.add_child(this._renameCancelButton);
+        renameButtonsBox.add_child(this._renameOkButton);
+
+        let renameContentLayout = new Clutter.BoxLayout({ spacing: 6,
+                                                          orientation: Clutter.Orientation.VERTICAL });
+        let renameContent = new St.Widget({ style_class: 'rename-popup',
+                                            layout_manager: renameContentLayout,
+                                            x_expand: true });
+        renameContent.add_child(this._renameEntry);
+        renameContent.add_child(renameButtonsBox);
+
+        this._boxPointer = new BoxPointer.BoxPointer(St.Side.TOP, { can_focus: false, x_expand: false });
+        this.actor = this._boxPointer.actor;
+        this.actor.style_class = 'popup-menu-boxpointer';
+        this.actor.add_style_class_name('popup-menu');
+        this.actor.visible = false;
+        this._boxPointer.bin.set_child(renameContent);
+
+        this._grabHelper = new GrabHelper.GrabHelper(grid.actor, { actionMode: Shell.ActionMode.POPUP });
+        this._grabHelper.addActor(this.actor);
+    }
+
+    _popup() {
+        if (this._isOpen)
+            return;
+
+        this._isOpen = this._grabHelper.grab({ actor: this.actor,
+                                               onUngrab: this._popdown.bind(this) });
+
+        if (!this._isOpen) {
+            this._grabHelper.ungrab({ actor: this.actor });
+            return;
+        }
+
+        this._boxPointer.setPosition(this._source.actor, 0.5);
+        if (ExtensionUtils.versionCheck(['3.28', '3.30'], Config.PACKAGE_VERSION))
+            this._boxPointer.show(BoxPointer.PopupAnimation.FADE |
+                                  BoxPointer.PopupAnimation.SLIDE);
+        else
+            this._boxPointer.open(BoxPointer.PopupAnimation.FADE |
+                                  BoxPointer.PopupAnimation.SLIDE);
+
+        this.emit('open-state-changed', true);
+    }
+
+    _popdown() {
+        if (!this._isOpen)
+            return;
+
+        this._grabHelper.ungrab({ actor: this.actor });
+
+        if (ExtensionUtils.versionCheck(['3.28', '3.30'], Config.PACKAGE_VERSION))
+            this._boxPointer.hide(BoxPointer.PopupAnimation.FADE |
+                                   BoxPointer.PopupAnimation.SLIDE);
+        else
+            this._boxPointer.close(BoxPointer.PopupAnimation.FADE |
+                                  BoxPointer.PopupAnimation.SLIDE);
+
+        this._isOpen = false;
+        this.emit('open-state-changed', false);
+    }
+
+    onFileItemRenameClicked(fileItem) {
+        this._source = fileItem;
+
+        this._renameEntry.text = fileItem.displayName;
+
+        this._popup();
+        this._renameEntry.grab_key_focus();
+        this._renameEntry.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
+        let extensionOffset = DesktopIconsUtil.getFileExtensionOffset(fileItem.displayName, 
fileItem.isDirectory);
+        this._renameEntry.clutter_text.set_selection(0, extensionOffset);
+    }
+
+    _onRenameAccepted() {
+        this._popdown();
+        DBusUtils.NautilusFileOperationsProxy.RenameFileRemote(this._source.file.get_uri(),
+                                                               this._renameEntry.get_text(),
+            (result, error) => {
+                if (error)
+                    throw new Error('Error renaming file: ' + error.message);
+            }
+        );
+    }
+
+    _onRenameCanceled() {
+        this._popdown();
+    }
+};
+Signals.addSignalMethods(RenamePopup.prototype);
diff --git a/extensions/desktop-icons/desktopIconsUtil.js b/extensions/desktop-icons/desktopIconsUtil.js
new file mode 100644
index 0000000..0aea654
--- /dev/null
+++ b/extensions/desktop-icons/desktopIconsUtil.js
@@ -0,0 +1,123 @@
+/* Desktop Icons GNOME Shell extension
+ *
+ * Copyright (C) 2017 Carlos Soriano <csoriano redhat com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+const Gtk = imports.gi.Gtk;
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+const ExtensionUtils = imports.misc.extensionUtils;
+const Me = ExtensionUtils.getCurrentExtension();
+const Prefs = Me.imports.prefs;
+
+const TERMINAL_SCHEMA = 'org.gnome.desktop.default-applications.terminal';
+const EXEC_KEY = 'exec';
+
+var DEFAULT_ATTRIBUTES = 'metadata::*,standard::*,access::*,time::modified,unix::mode';
+
+function getDesktopDir() {
+    let desktopPath = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DESKTOP);
+    return Gio.File.new_for_commandline_arg(desktopPath);
+}
+
+function clamp(value, min, max) {
+    return Math.max(Math.min(value, max), min);
+};
+
+function launchTerminal(workdir) {
+    let terminalSettings = new Gio.Settings({ schema_id: TERMINAL_SCHEMA });
+    let exec = terminalSettings.get_string(EXEC_KEY);
+    let argv = [exec, `--working-directory=${workdir}`];
+
+    /* The following code has been extracted from GNOME Shell's
+     * source code in Misc.Util.trySpawn function and modified to
+     * set the working directory.
+     *
+     * https://gitlab.gnome.org/GNOME/gnome-shell/blob/gnome-3-30/js/misc/util.js
+     */
+
+    var success, pid;
+    try {
+        [success, pid] = GLib.spawn_async(workdir, argv, null,
+                                          GLib.SpawnFlags.SEARCH_PATH | GLib.SpawnFlags.DO_NOT_REAP_CHILD,
+                                          null);
+    } catch (err) {
+        /* Rewrite the error in case of ENOENT */
+        if (err.matches(GLib.SpawnError, GLib.SpawnError.NOENT)) {
+            throw new GLib.SpawnError({ code: GLib.SpawnError.NOENT,
+                                        message: _("Command not found") });
+        } else if (err instanceof GLib.Error) {
+            // The exception from gjs contains an error string like:
+            //   Error invoking GLib.spawn_command_line_async: Failed to
+            //   execute child process "foo" (No such file or directory)
+            // We are only interested in the part in the parentheses. (And
+            // we can't pattern match the text, since it gets localized.)
+            let message = err.message.replace(/.*\((.+)\)/, '$1');
+            throw new (err.constructor)({ code: err.code,
+                                          message: message });
+        } else {
+            throw err;
+        }
+    }
+    // Dummy child watch; we don't want to double-fork internally
+    // because then we lose the parent-child relationship, which
+    // can break polkit.  See https://bugzilla.redhat.com//show_bug.cgi?id=819275
+    GLib.child_watch_add(GLib.PRIORITY_DEFAULT, pid, () => {});
+}
+
+function distanceBetweenPoints(x, y, x2, y2) {
+    return (Math.pow(x - x2, 2) + Math.pow(y - y2, 2));
+}
+
+function getExtraFolders() {
+    let extraFolders = new Array();
+    if (Prefs.settings.get_boolean('show-home')) {
+        extraFolders.push([Gio.File.new_for_commandline_arg(GLib.get_home_dir()), 
Prefs.FileType.USER_DIRECTORY_HOME]);
+    }
+    if (Prefs.settings.get_boolean('show-trash')) {
+        extraFolders.push([Gio.File.new_for_uri('trash:///'), Prefs.FileType.USER_DIRECTORY_TRASH]);
+    }
+    return extraFolders;
+}
+
+function getFileExtensionOffset(filename, isDirectory) {
+    let offset = filename.length;
+
+    if (!isDirectory) {
+        let doubleExtensions = ['.gz', '.bz2', '.sit', '.Z', '.bz', '.xz'];
+        for (let extension of doubleExtensions) {
+            if (filename.endsWith(extension)) {
+                offset -= extension.length;
+                filename = filename.substring(0, offset);
+                break;
+            }
+        }
+        let lastDot = filename.lastIndexOf('.');
+        if (lastDot > 0)
+            offset = lastDot;
+    }
+    return offset;
+}
+
+function getGtkClassBackgroundColor(classname, state) {
+    let widget = new Gtk.WidgetPath();
+    widget.append_type(Gtk.Widget);
+
+    let context = new Gtk.StyleContext();
+    context.set_path(widget);
+    context.add_class(classname);
+    return context.get_background_color(state);
+}
diff --git a/extensions/desktop-icons/desktopManager.js b/extensions/desktop-icons/desktopManager.js
new file mode 100644
index 0000000..399aee0
--- /dev/null
+++ b/extensions/desktop-icons/desktopManager.js
@@ -0,0 +1,754 @@
+/* Desktop Icons GNOME Shell extension
+ *
+ * Copyright (C) 2017 Carlos Soriano <csoriano redhat com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+const Gtk = imports.gi.Gtk;
+const Clutter = imports.gi.Clutter;
+const GObject = imports.gi.GObject;
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+const St = imports.gi.St;
+const Mainloop = imports.mainloop;
+const Meta = imports.gi.Meta;
+
+const Animation = imports.ui.animation;
+const Background = imports.ui.background;
+const DND = imports.ui.dnd;
+const Main = imports.ui.main;
+const GrabHelper = imports.ui.grabHelper;
+
+const ExtensionUtils = imports.misc.extensionUtils;
+const Me = ExtensionUtils.getCurrentExtension();
+const Extension = Me.imports.extension;
+const DesktopGrid = Me.imports.desktopGrid;
+const FileItem = Me.imports.fileItem;
+const Prefs = Me.imports.prefs;
+const DBusUtils = Me.imports.dbusUtils;
+const DesktopIconsUtil = Me.imports.desktopIconsUtil;
+
+const Clipboard = St.Clipboard.get_default();
+const CLIPBOARD_TYPE = St.ClipboardType.CLIPBOARD;
+
+var S_IWOTH = 0x00002;
+
+function getDpy() {
+    return global.screen || global.display;
+}
+
+function findMonitorIndexForPos(x, y) {
+    return getDpy().get_monitor_index_for_rect(new Meta.Rectangle({x, y}));
+}
+
+
+var DesktopManager = GObject.registerClass({
+    Properties: {
+        'writable-by-others': GObject.ParamSpec.boolean(
+            'writable-by-others',
+            'WritableByOthers',
+            'Whether the desktop\'s directory can be written by others (o+w unix permission)',
+            GObject.ParamFlags.READABLE,
+            false
+        )
+    }
+}, class DesktopManager extends GObject.Object {
+    _init(params) {
+        super._init(params);
+
+        this._layoutChildrenId = 0;
+        this._deleteChildrenId = 0;
+        this._monitorDesktopDir = null;
+        this._desktopMonitorCancellable = null;
+        this._desktopGrids = {};
+        this._fileItemHandlers = new Map();
+        this._fileItems = new Map();
+        this._dragCancelled = false;
+        this._queryFileInfoCancellable = null;
+        this._unixMode = null;
+        this._writableByOthers = null;
+
+        this._monitorsChangedId = Main.layoutManager.connect('monitors-changed', () => 
this._recreateDesktopIcons());
+        this._rubberBand = new St.Widget({ style_class: 'rubber-band' });
+        this._rubberBand.hide();
+        Main.layoutManager._backgroundGroup.add_child(this._rubberBand);
+        this._grabHelper = new GrabHelper.GrabHelper(global.stage);
+
+        this._addDesktopIcons();
+        this._monitorDesktopFolder();
+
+        this.settingsId = Prefs.settings.connect('changed', () => this._recreateDesktopIcons());
+        this.gtkSettingsId = Prefs.gtkSettings.connect('changed', (obj, key) => {
+            if (key == 'show-hidden')
+                this._recreateDesktopIcons();
+        });
+
+        this._selection = new Set();
+        this._currentSelection = new Set();
+        this._inDrag = false;
+        this._dragXStart = Number.POSITIVE_INFINITY;
+        this._dragYStart = Number.POSITIVE_INFINITY;
+    }
+
+    startRubberBand(x, y) {
+        this._rubberBandInitialX = x;
+        this._rubberBandInitialY = y;
+        this._initRubberBandColor();
+        this._updateRubberBand(x, y);
+        this._rubberBand.show();
+        this._grabHelper.grab({ actor: global.stage });
+        Extension.lockActivitiesButton = true;
+        this._stageReleaseEventId = global.stage.connect('button-release-event', (actor, event) => {
+            this.endRubberBand();
+        });
+        this._rubberBandId = global.stage.connect('motion-event', (actor, event) => {
+            /* In some cases, when the user starts a rubberband selection and ends it
+             * (by releasing the left button) over a window instead of doing it over
+             * the desktop, the stage doesn't receive the "button-release" event.
+             * This happens currently with, at least, Dash to Dock extension, but
+             * it probably also happens with other applications or extensions.
+             * To fix this, we also end the rubberband selection if we detect mouse
+             * motion in the stage without the left button pressed during a
+             * rubberband selection.
+             *  */
+            let button = event.get_state();
+            if (!(button & Clutter.ModifierType.BUTTON1_MASK)) {
+                this.endRubberBand();
+                return;
+            }
+            [x, y] = event.get_coords();
+            this._updateRubberBand(x, y);
+            let x0, y0, x1, y1;
+            if (x >= this._rubberBandInitialX) {
+                x0 = this._rubberBandInitialX;
+                x1 = x;
+            } else {
+                x1 = this._rubberBandInitialX;
+                x0 = x;
+            }
+            if (y >= this._rubberBandInitialY) {
+                y0 = this._rubberBandInitialY;
+                y1 = y;
+            } else {
+                y1 = this._rubberBandInitialY;
+                y0 = y;
+            }
+            for (let [fileUri, fileItem] of this._fileItems) {
+                fileItem.emit('selected', true, true,
+                              fileItem.intersectsWith(x0, y0, x1 - x0, y1 - y0));
+            }
+        });
+    }
+
+    endRubberBand() {
+        this._rubberBand.hide();
+        Extension.lockActivitiesButton = false;
+        this._grabHelper.ungrab();
+        global.stage.disconnect(this._rubberBandId);
+        global.stage.disconnect(this._stageReleaseEventId);
+        this._rubberBandId = 0;
+        this._stageReleaseEventId = 0;
+
+        this._selection = new Set([...this._selection, ...this._currentSelection]);
+        this._currentSelection.clear();
+    }
+
+    _updateRubberBand(currentX, currentY) {
+        let x = this._rubberBandInitialX < currentX ? this._rubberBandInitialX
+                                                    : currentX;
+        let y = this._rubberBandInitialY < currentY ? this._rubberBandInitialY
+                                                    : currentY;
+        let width = Math.abs(this._rubberBandInitialX - currentX);
+        let height = Math.abs(this._rubberBandInitialY - currentY);
+        /* TODO: Convert to gobject.set for 3.30 */
+        this._rubberBand.set_position(x, y);
+        this._rubberBand.set_size(width, height);
+    }
+
+    _recreateDesktopIcons() {
+        this._destroyDesktopIcons();
+        this._addDesktopIcons();
+    }
+
+    _addDesktopIcons() {
+        forEachBackgroundManager(bgManager => {
+            let newGrid = new DesktopGrid.DesktopGrid(bgManager);
+            newGrid.actor.connect('destroy', (actor) => {
+                // if a grid loses its actor, remove it from the grid list
+                for (let grid in this._desktopGrids)
+                    if (this._desktopGrids[grid].actor == actor) {
+                        delete this._desktopGrids[grid];
+                        break;
+                    }
+            });
+            this._desktopGrids[bgManager._monitorIndex] = newGrid;
+        });
+
+        this._scanFiles();
+    }
+
+    _destroyDesktopIcons() {
+        Object.values(this._desktopGrids).forEach(grid => grid.actor.destroy());
+        this._desktopGrids = {};
+    }
+
+    /**
+     * Initialize rubberband color from the GTK rubberband class
+     * */
+    _initRubberBandColor() {
+        let rgba = DesktopIconsUtil.getGtkClassBackgroundColor('rubberband', Gtk.StateFlags.NORMAL);
+        let background_color =
+            'rgba(' + rgba.red * 255 + ', ' + rgba.green * 255 + ', ' + rgba.blue * 255 + ', 0.4)';
+        this._rubberBand.set_style('background-color: ' + background_color);
+    }
+
+    async _scanFiles() {
+        for (let [fileItem, id] of this._fileItemHandlers)
+            fileItem.disconnect(id);
+        this._fileItemHandlers = new Map();
+
+        if (!this._unixMode) {
+            let desktopDir = DesktopIconsUtil.getDesktopDir();
+            let fileInfo = desktopDir.query_info(Gio.FILE_ATTRIBUTE_UNIX_MODE,
+                                                 Gio.FileQueryInfoFlags.NONE,
+                                                 null);
+            this._unixMode = fileInfo.get_attribute_uint32(Gio.FILE_ATTRIBUTE_UNIX_MODE);
+            this._setWritableByOthers((this._unixMode & S_IWOTH) != 0);
+        }
+
+        try {
+            let tmpFileItems = new Map();
+            for (let [file, info, extra] of await this._enumerateDesktop()) {
+                let fileItem = new FileItem.FileItem(file, info, extra);
+                tmpFileItems.set(fileItem.file.get_uri(), fileItem);
+                let id = fileItem.connect('selected',
+                                          this._onFileItemSelected.bind(this));
+
+                this._fileItemHandlers.set(fileItem, id);
+            }
+            this._fileItems = tmpFileItems;
+        } catch (e) {
+            if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
+                log(`Error loading desktop files ${e.message}`);
+            return;
+        }
+
+        this.scheduleReLayoutChildren();
+    }
+
+    getDesktopFileNames () {
+        let fileList = [];
+        for (let [uri, item] of this._fileItems) {
+            fileList.push(item.fileName);
+        }
+        return fileList;
+    }
+
+    _enumerateDesktop() {
+        return new Promise((resolve, reject) => {
+            if (this._desktopEnumerateCancellable)
+                this._desktopEnumerateCancellable.cancel();
+
+            this._desktopEnumerateCancellable = new Gio.Cancellable();
+
+            let desktopDir = DesktopIconsUtil.getDesktopDir();
+            desktopDir.enumerate_children_async(DesktopIconsUtil.DEFAULT_ATTRIBUTES,
+                Gio.FileQueryInfoFlags.NONE,
+                GLib.PRIORITY_DEFAULT,
+                this._desktopEnumerateCancellable,
+                (source, result) => {
+                    try {
+                        let fileEnum = source.enumerate_children_finish(result);
+                        let resultGenerator = function *() {
+                            let info;
+                            for (let [newFolder, extras] of DesktopIconsUtil.getExtraFolders()) {
+                                yield [newFolder, newFolder.query_info(DesktopIconsUtil.DEFAULT_ATTRIBUTES, 
Gio.FileQueryInfoFlags.NONE, this._desktopEnumerateCancellable), extras];
+                            }
+                            while ((info = fileEnum.next_file(null)))
+                                yield [fileEnum.get_child(info), info, Prefs.FileType.NONE];
+                        }.bind(this);
+                        resolve(resultGenerator());
+                    } catch (e) {
+                        reject(e);
+                    }
+                });
+        });
+    }
+
+    _monitorDesktopFolder() {
+        if (this._monitorDesktopDir) {
+            this._monitorDesktopDir.cancel();
+            this._monitorDesktopDir = null;
+        }
+
+        let desktopDir = DesktopIconsUtil.getDesktopDir();
+        this._monitorDesktopDir = desktopDir.monitor_directory(Gio.FileMonitorFlags.WATCH_MOVES, null);
+        this._monitorDesktopDir.set_rate_limit(1000);
+        this._monitorDesktopDir.connect('changed', (obj, file, otherFile, eventType) => 
this._updateDesktopIfChanged(file, otherFile, eventType));
+    }
+
+    checkIfSpecialFilesAreSelected() {
+        for (let fileItem of this._selection) {
+            if (fileItem.isSpecial)
+                return true;
+        }
+        return false;
+    }
+
+    getNumberOfSelectedItems() {
+        return this._selection.size;
+    }
+
+    get writableByOthers() {
+        return this._writableByOthers;
+    }
+
+    _setWritableByOthers(value) {
+        if (value == this._writableByOthers)
+            return;
+
+        this._writableByOthers = value
+        this.notify('writable-by-others');
+    }
+
+    _updateDesktopIfChanged (file, otherFile, eventType) {
+        let {
+            DELETED, MOVED_IN, MOVED_OUT, CREATED, RENAMED, CHANGES_DONE_HINT, ATTRIBUTE_CHANGED
+        } = Gio.FileMonitorEvent;
+
+        let fileUri = file.get_uri();
+        let fileItem = null;
+        if (this._fileItems.has(fileUri))
+            fileItem = this._fileItems.get(fileUri);
+        switch(eventType) {
+            case RENAMED:
+                this._fileItems.delete(fileUri);
+                this._fileItems.set(otherFile.get_uri(), fileItem);
+                fileItem.onFileRenamed(otherFile);
+                return;
+            case CHANGES_DONE_HINT:
+            case ATTRIBUTE_CHANGED:
+                /* a file changed, rather than the desktop itself */
+                let desktopDir = DesktopIconsUtil.getDesktopDir();
+                if (file.get_uri() != desktopDir.get_uri()) {
+                    fileItem.onAttributeChanged();
+                    return;
+                }
+
+                if (this._queryFileInfoCancellable)
+                    this._queryFileInfoCancellable.cancel();
+
+                file.query_info_async(Gio.FILE_ATTRIBUTE_UNIX_MODE,
+                                      Gio.FileQueryInfoFlags.NONE,
+                                      GLib.PRIORITY_DEFAULT,
+                                      this._queryFileInfoCancellable,
+                    (source, result) => {
+                        try {
+                            let info = source.query_info_finish(result);
+                            this._queryFileInfoCancellable = null;
+
+                            this._unixMode = info.get_attribute_uint32(Gio.FILE_ATTRIBUTE_UNIX_MODE);
+                            this._setWritableByOthers((this._unixMode & S_IWOTH) != 0);
+
+                            if (this._writableByOthers)
+                                log(`desktop-icons: Desktop is writable by others - will not allow launching 
any desktop files`);
+                        } catch(error) {
+                            if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
+                                global.log('Error getting desktop unix mode: ' + error);
+                        }
+                    });
+
+                return;
+        }
+
+        // Only get a subset of events we are interested in.
+        // Note that CREATED will emit a CHANGES_DONE_HINT
+        if (![DELETED, MOVED_IN, MOVED_OUT, CREATED].includes(eventType))
+            return;
+
+        this._recreateDesktopIcons();
+    }
+
+    _setupDnD() {
+        this._draggableContainer = new St.Widget({
+            visible: true,
+            width: 1,
+            height: 1,
+            x: 0,
+            y: 0,
+            style_class: 'draggable'
+        });
+        this._draggableContainer._delegate = this;
+        this._draggable = DND.makeDraggable(this._draggableContainer,
+            {
+                manualMode: true,
+                dragActorOpacity: 100
+            });
+
+        this._draggable.connect('drag-cancelled', () => this._onDragCancelled());
+        this._draggable.connect('drag-end', () => this._onDragEnd());
+
+        this._draggable._dragActorDropped = event => this._dragActorDropped(event);
+    }
+
+    dragStart() {
+        if (this._inDrag) {
+            return;
+        }
+
+        this._setupDnD();
+        let event = Clutter.get_current_event();
+        let [x, y] = event.get_coords();
+        [this._dragXStart, this._dragYStart] = event.get_coords();
+        this._inDrag = true;
+
+        for (let fileItem of this._selection) {
+            let clone = new Clutter.Clone({
+                source: fileItem.actor,
+                reactive: false
+            });
+            clone.x = fileItem.actor.get_transformed_position()[0];
+            clone.y = fileItem.actor.get_transformed_position()[1];
+            this._draggableContainer.add_child(clone);
+        }
+
+        Main.layoutManager.uiGroup.add_child(this._draggableContainer);
+        this._draggable.startDrag(x, y, global.get_current_time(), event.get_event_sequence());
+    }
+
+    _onDragCancelled() {
+        let event = Clutter.get_current_event();
+        let [x, y] = event.get_coords();
+        this._dragCancelled = true;
+    }
+
+    _onDragEnd() {
+        this._inDrag = false;
+        Main.layoutManager.uiGroup.remove_child(this._draggableContainer);
+    }
+
+    _dragActorDropped(event) {
+        let [dropX, dropY] = event.get_coords();
+        let target = this._draggable._dragActor.get_stage().get_actor_at_pos(Clutter.PickMode.ALL,
+                                                                             dropX, dropY);
+
+        // We call observers only once per motion with the innermost
+        // target actor. If necessary, the observer can walk the
+        // parent itself.
+        let dropEvent = {
+            dropActor: this._draggable._dragActor,
+            targetActor: target,
+            clutterEvent: event
+        };
+        for (let dragMonitor of DND.dragMonitors) {
+            let dropFunc = dragMonitor.dragDrop;
+            if (dropFunc)
+                switch (dropFunc(dropEvent)) {
+                    case DragDropResult.FAILURE:
+                    case DragDropResult.SUCCESS:
+                        return true;
+                    case DragDropResult.CONTINUE:
+                        continue;
+                }
+        }
+
+        // At this point it is too late to cancel a drag by destroying
+        // the actor, the fate of which is decided by acceptDrop and its
+        // side-effects
+        this._draggable._dragCancellable = false;
+
+        let destroyActor = false;
+        while (target) {
+            if (target._delegate && target._delegate.acceptDrop) {
+                let [r, targX, targY] = target.transform_stage_point(dropX, dropY);
+                if (target._delegate.acceptDrop(this._draggable.actor._delegate,
+                    this._draggable._dragActor,
+                    targX,
+                    targY,
+                    event.get_time())) {
+                    // If it accepted the drop without taking the actor,
+                    // handle it ourselves.
+                    if (this._draggable._dragActor.get_parent() == Main.uiGroup) {
+                        if (this._draggable._restoreOnSuccess) {
+                            this._draggable._restoreDragActor(event.get_time());
+                            return true;
+                        }
+                        else {
+                            // We need this in order to make sure drag-end is fired
+                            destroyActor = true;
+                        }
+                    }
+
+                    this._draggable._dragInProgress = false;
+                    getDpy().set_cursor(Meta.Cursor.DEFAULT);
+                    this._draggable.emit('drag-end', event.get_time(), true);
+                    if (destroyActor) {
+                        this._draggable._dragActor.destroy();
+                    }
+                    this._draggable._dragComplete();
+
+                    return true;
+                }
+            }
+            target = target.get_parent();
+        }
+
+        this._draggable._cancelDrag(event.get_time());
+
+        return true;
+    }
+
+    acceptDrop(xEnd, yEnd) {
+        let savedCoordinates = new Map();
+        let [xDiff, yDiff] = [xEnd - this._dragXStart, yEnd - this._dragYStart];
+        /* Remove all items before dropping new ones, so we can freely reposition
+         * them.
+         */
+        for (let item of this._selection) {
+            let [itemX, itemY] = item.actor.get_transformed_position();
+            let monitorIndex = findMonitorIndexForPos(itemX, itemY);
+            savedCoordinates.set(item, [itemX, itemY]);
+            this._desktopGrids[monitorIndex].removeFileItem(item);
+        }
+
+        for (let item of this._selection) {
+            let [itemX, itemY] = savedCoordinates.get(item);
+            /* Set the new ideal position where the item drop should happen */
+            let newFileX = Math.round(xDiff + itemX);
+            let newFileY = Math.round(yDiff + itemY);
+            let monitorIndex = findMonitorIndexForPos(newFileX, newFileY);
+            this._desktopGrids[monitorIndex].addFileItemCloseTo(item, newFileX, newFileY, 
DesktopGrid.StoredCoordinates.OVERWRITE);
+        }
+
+        return true;
+    }
+
+    selectionDropOnFileItem (fileItemDestination) {
+        if (!fileItemDestination.isDirectory)
+            return false;
+
+        let droppedUris = [];
+        for (let fileItem of this._selection) {
+            if (fileItem.isSpecial)
+                return false;
+            if (fileItemDestination.file.get_uri() == fileItem.file.get_uri())
+                return false;
+            droppedUris.push(fileItem.file.get_uri());
+        }
+
+        if (droppedUris.length == 0)
+            return true;
+
+        DBusUtils.NautilusFileOperationsProxy.MoveURIsRemote(droppedUris,
+                                                             fileItemDestination.file.get_uri(),
+            (result, error) => {
+                if (error)
+                    throw new Error('Error moving files: ' + error.message);
+            }
+        );
+        for (let fileItem of this._selection) {
+            fileItem.state = FileItem.State.GONE;
+        }
+
+        this._recreateDesktopIcons();
+
+        return true;
+    }
+
+    _resetGridsAndScheduleLayout() {
+        this._deleteChildrenId = 0;
+
+        Object.values(this._desktopGrids).forEach((grid) => grid.reset());
+
+        this._layoutChildrenId = GLib.idle_add(GLib.PRIORITY_LOW, () => this._layoutChildren());
+
+        return GLib.SOURCE_REMOVE;
+    }
+
+    scheduleReLayoutChildren() {
+        if (this._deleteChildrenId != 0)
+            return;
+
+        if (this._layoutChildrenId != 0) {
+            GLib.source_remove(this._layoutChildrenId);
+            this._layoutChildrenId = 0;
+        }
+
+
+        this._deleteChildrenId = GLib.idle_add(GLib.PRIORITY_LOW, () => this._resetGridsAndScheduleLayout());
+    }
+
+    _addFileItemCloseTo(item) {
+        let coordinates;
+        let x = 0;
+        let y = 0;
+        let coordinatesAction = DesktopGrid.StoredCoordinates.ASSIGN;
+        if (item.savedCoordinates != null) {
+            [x, y] = item.savedCoordinates;
+            coordinatesAction = DesktopGrid.StoredCoordinates.PRESERVE;
+        }
+        let monitorIndex = findMonitorIndexForPos(x, y);
+        let desktopGrid = this._desktopGrids[monitorIndex];
+        try {
+            desktopGrid.addFileItemCloseTo(item, x, y, coordinatesAction);
+        } catch (e) {
+            log(`Error adding children to desktop: ${e.message}`);
+        }
+    }
+
+    _layoutChildren() {
+        let showHidden = Prefs.gtkSettings.get_boolean('show-hidden');
+        /*
+         * Paint the icons in two passes:
+         * * first pass paints those that have their coordinates defined in the metadata
+         * * second pass paints those new files that still don't have their definitive coordinates
+         */
+        for (let [fileUri, fileItem] of this._fileItems) {
+            if (fileItem.savedCoordinates == null)
+                continue;
+            if (fileItem.state != FileItem.State.NORMAL)
+                continue;
+            if (!showHidden && fileItem.isHidden)
+                continue;
+            this._addFileItemCloseTo(fileItem);
+        }
+
+        for (let [fileUri, fileItem] of this._fileItems) {
+            if (fileItem.savedCoordinates !== null)
+                continue;
+            if (fileItem.state != FileItem.State.NORMAL)
+                continue;
+            if (!showHidden && fileItem.isHidden)
+                continue;
+            this._addFileItemCloseTo(fileItem);
+        }
+
+        this._layoutChildrenId = 0;
+        return GLib.SOURCE_REMOVE;
+    }
+
+    doRename() {
+        if (this._selection.size != 1)
+            return;
+
+        let item = [...this._selection][0];
+        if (item.canRename())
+            item.doRename();
+    }
+
+    doOpen() {
+        for (let fileItem of this._selection)
+            fileItem.doOpen();
+    }
+
+    doTrash() {
+        DBusUtils.NautilusFileOperationsProxy.TrashFilesRemote([...this._selection].map((x) => { return 
x.file.get_uri(); }),
+            (source, error) => {
+                if (error)
+                    throw new Error('Error trashing files on the desktop: ' + error.message);
+            }
+        );
+    }
+
+    doEmptyTrash() {
+        DBusUtils.NautilusFileOperationsProxy.EmptyTrashRemote( (source, error) => {
+            if (error)
+                throw new Error('Error trashing files on the desktop: ' + error.message);
+        });
+    }
+
+    _onFileItemSelected(fileItem, keepCurrentSelection, rubberBandSelection, addToSelection) {
+
+        if (!keepCurrentSelection && !this._inDrag)
+            this.clearSelection();
+
+        let selection = keepCurrentSelection && rubberBandSelection ? this._currentSelection : 
this._selection;
+        if (addToSelection)
+            selection.add(fileItem);
+        else
+            selection.delete(fileItem);
+
+        for (let [fileUri, fileItem] of this._fileItems)
+            fileItem.isSelected = this._currentSelection.has(fileItem) || this._selection.has(fileItem);
+    }
+
+    clearSelection() {
+        for (let [fileUri, fileItem] of this._fileItems)
+            fileItem.isSelected = false;
+        this._selection = new Set();
+        this._currentSelection = new Set();
+    }
+
+    _getClipboardText(isCopy) {
+        let action = isCopy ? 'copy' : 'cut';
+        let text = `x-special/nautilus-clipboard\n${action}\n${
+            [...this._selection].map(s => s.file.get_uri()).join('\n')
+        }\n`;
+
+        return text;
+    }
+
+    doCopy() {
+        Clipboard.set_text(CLIPBOARD_TYPE, this._getClipboardText(true));
+    }
+
+    doCut() {
+        Clipboard.set_text(CLIPBOARD_TYPE, this._getClipboardText(false));
+    }
+
+    destroy() {
+        if (this._monitorDesktopDir)
+            this._monitorDesktopDir.cancel();
+        this._monitorDesktopDir = null;
+
+        if (this.settingsId)
+            Prefs.settings.disconnect(this.settingsId);
+        this.settingsId = 0;
+        if (this.gtkSettingsId)
+            Prefs.gtkSettings.disconnect(this.gtkSettingsId);
+        this.gtkSettingsId = 0;
+
+        if (this._layoutChildrenId)
+            GLib.source_remove(this._layoutChildrenId);
+        this._layoutChildrenId = 0;
+
+        if (this._deleteChildrenId)
+            GLib.source_remove(this._deleteChildrenId);
+        this._deleteChildrenId = 0;
+
+        if (this._monitorsChangedId)
+            Main.layoutManager.disconnect(this._monitorsChangedId);
+        this._monitorsChangedId = 0;
+        if (this._stageReleaseEventId)
+            global.stage.disconnect(this._stageReleaseEventId);
+        this._stageReleaseEventId = 0;
+
+        if (this._rubberBandId)
+            global.stage.disconnect(this._rubberBandId);
+        this._rubberBandId = 0;
+
+        this._rubberBand.destroy();
+
+        if (this._queryFileInfoCancellable)
+            this._queryFileInfoCancellable.cancel();
+
+        Object.values(this._desktopGrids).forEach(grid => grid.actor.destroy());
+        this._desktopGrids = {}
+    }
+});
+
+function forEachBackgroundManager(func) {
+    Main.layoutManager._bgManagers.forEach(func);
+}
diff --git a/extensions/desktop-icons/extension.js b/extensions/desktop-icons/extension.js
new file mode 100644
index 0000000..4b960ab
--- /dev/null
+++ b/extensions/desktop-icons/extension.js
@@ -0,0 +1,71 @@
+/* Desktop Icons GNOME Shell extension
+ *
+ * Copyright (C) 2017 Carlos Soriano <csoriano redhat com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+const Main = imports.ui.main;
+
+const ExtensionUtils = imports.misc.extensionUtils;
+const Me = ExtensionUtils.getCurrentExtension();
+const Prefs = Me.imports.prefs;
+const { DesktopManager } = Me.imports.desktopManager;
+const DBusUtils = Me.imports.dbusUtils;
+
+var desktopManager = null;
+var addBackgroundMenuOrig = null;
+var _startupPreparedId;
+var lockActivitiesButton = false;
+
+var oldShouldToggleByCornerOrButtonFunction = null;
+
+function init() {
+    addBackgroundMenuOrig = Main.layoutManager._addBackgroundMenu;
+
+    Prefs.initTranslations();
+}
+
+function newShouldToggleByCornerOrButton() {
+    if (lockActivitiesButton)
+        return false;
+    else
+        return oldShouldToggleByCornerOrButtonFunction.bind(Main.overview);
+}
+
+function enable() {
+    // register a new function to allow to lock the Activities button when doing a rubberband selection
+    oldShouldToggleByCornerOrButtonFunction = Main.overview.shouldToggleByCornerOrButton;
+    Main.overview.shouldToggleByCornerOrButton = newShouldToggleByCornerOrButton;
+    // wait until the startup process has ended
+    if (Main.layoutManager._startingUp)
+        _startupPreparedId = Main.layoutManager.connect('startup-complete', () => innerEnable(true));
+    else
+        innerEnable(false);
+}
+
+function innerEnable(disconnectSignal) {
+    if (disconnectSignal)
+        Main.layoutManager.disconnect(_startupPreparedId);
+    DBusUtils.init();
+    Prefs.init();
+    Main.layoutManager._addBackgroundMenu = function() {};
+    desktopManager = new DesktopManager();
+}
+
+function disable() {
+    desktopManager.destroy();
+    Main.layoutManager._addBackgroundMenu = addBackgroundMenuOrig;
+    Main.overview.shouldToggleByCornerOrButton = oldShouldToggleByCornerOrButtonFunction;
+}
diff --git a/extensions/desktop-icons/fileItem.js b/extensions/desktop-icons/fileItem.js
new file mode 100644
index 0000000..0c6a54d
--- /dev/null
+++ b/extensions/desktop-icons/fileItem.js
@@ -0,0 +1,830 @@
+/* Desktop Icons GNOME Shell extension
+ *
+ * Copyright (C) 2017 Carlos Soriano <csoriano redhat com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+const Gtk = imports.gi.Gtk;
+const Clutter = imports.gi.Clutter;
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+const St = imports.gi.St;
+const Pango = imports.gi.Pango;
+const Meta = imports.gi.Meta;
+const GdkPixbuf = imports.gi.GdkPixbuf;
+const Cogl = imports.gi.Cogl;
+const GnomeDesktop = imports.gi.GnomeDesktop;
+
+const Mainloop = imports.mainloop;
+const Signals = imports.signals;
+
+const Background = imports.ui.background;
+const Main = imports.ui.main;
+const PopupMenu = imports.ui.popupMenu;
+const Util = imports.misc.util;
+
+const ExtensionUtils = imports.misc.extensionUtils;
+const Me = ExtensionUtils.getCurrentExtension();
+const Extension = Me.imports.extension;
+const Prefs = Me.imports.prefs;
+const DBusUtils = Me.imports.dbusUtils;
+const DesktopIconsUtil = Me.imports.desktopIconsUtil;
+
+const Gettext = imports.gettext.domain('desktop-icons');
+
+const _ = Gettext.gettext;
+
+const DRAG_TRESHOLD = 8;
+
+var S_IXUSR = 0o00100;
+var S_IWOTH = 0o00002;
+
+var State = {
+    NORMAL: 0,
+    GONE: 1,
+};
+
+var FileItem = class {
+
+    constructor(file, fileInfo, fileExtra) {
+        this._fileExtra = fileExtra;
+        this._loadThumbnailDataCancellable = null;
+        this._thumbnailScriptWatch = 0;
+        this._setMetadataCancellable = null;
+        this._queryFileInfoCancellable = null;
+        this._isSpecial = this._fileExtra != Prefs.FileType.NONE;
+
+        this._file = file;
+
+        this._savedCoordinates = null;
+        let savedCoordinates = fileInfo.get_attribute_as_string('metadata::nautilus-icon-position');
+        if (savedCoordinates != null)
+            this._savedCoordinates = savedCoordinates.split(',').map(x => Number(x));
+
+        this._state = State.NORMAL;
+
+        this.actor = new St.Bin({ visible: true });
+        this.actor.set_fill(true, true);
+        let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
+        this.actor.set_height(Prefs.get_desired_height(scaleFactor));
+        this.actor.set_width(Prefs.get_desired_width(scaleFactor));
+        this.actor._delegate = this;
+        this.actor.connect('destroy', () => this._onDestroy());
+
+        this._container = new St.BoxLayout({ reactive: true,
+                                             track_hover: true,
+                                             can_focus: true,
+                                             style_class: 'file-item',
+                                             x_expand: true,
+                                             y_expand: true,
+                                             x_align: Clutter.ActorAlign.FILL,
+                                             vertical: true });
+        this.actor.set_child(this._container);
+        this._icon = new St.Bin();
+        this._icon.set_height(Prefs.get_icon_size() * scaleFactor);
+
+        this._iconContainer = new St.Bin({ visible: true });
+        this._iconContainer.child = this._icon;
+        this._container.add_child(this._iconContainer);
+
+        this._label = new St.Label({
+            style_class: 'name-label'
+        });
+
+        this._container.add_child(this._label);
+        let clutterText = this._label.get_clutter_text();
+        /* TODO: Convert to gobject.set for 3.30 */
+        clutterText.set_line_wrap(true);
+        clutterText.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR);
+        clutterText.set_ellipsize(Pango.EllipsizeMode.END);
+
+        this._container.connect('button-press-event', (actor, event) => this._onPressButton(actor, event));
+        this._container.connect('motion-event', (actor, event) => this._onMotion(actor, event));
+        this._container.connect('leave-event', (actor, event) => this._onLeave(actor, event));
+        this._container.connect('button-release-event', (actor, event) => this._onReleaseButton(actor, 
event));
+
+        /* Set the metadata and update relevant UI */
+        this._updateMetadataFromFileInfo(fileInfo);
+
+        this._menuManager = null;
+        this._menu = null;
+        this._updateIcon();
+
+        this._isSelected = false;
+        this._primaryButtonPressed = false;
+        if (this._attributeCanExecute && !this._isValidDesktopFile)
+            this._execLine = this.file.get_path();
+        if (fileExtra == Prefs.FileType.USER_DIRECTORY_TRASH) {
+            // if this icon is the trash, monitor the state of the directory to update the icon
+            this._trashChanged = false;
+            this._queryTrashInfoCancellable = null;
+            this._scheduleTrashRefreshId = 0;
+            this._monitorTrashDir = this._file.monitor_directory(Gio.FileMonitorFlags.WATCH_MOVES, null);
+            this._monitorTrashId = this._monitorTrashDir.connect('changed', (obj, file, otherFile, 
eventType) => {
+                switch(eventType) {
+                    case Gio.FileMonitorEvent.DELETED:
+                    case Gio.FileMonitorEvent.MOVED_OUT:
+                    case Gio.FileMonitorEvent.CREATED:
+                    case Gio.FileMonitorEvent.MOVED_IN:
+                        if (this._queryTrashInfoCancellable || this._scheduleTrashRefreshId) {
+                            if (this._scheduleTrashRefreshId)
+                                GLib.source_remove(this._scheduleTrashRefreshId);
+                            this._scheduleTrashRefreshId = Mainloop.timeout_add(200, () => 
this._refreshTrashIcon());
+                        } else {
+                            this._refreshTrashIcon();
+                        }
+                    break;
+                }
+            });
+        }
+
+        this._writebleByOthersId = Extension.desktopManager.connect('notify::writable-by-others', () => {
+            if (!this._isValidDesktopFile)
+                return;
+            this._refreshMetadataAsync(true);
+        });
+    }
+
+    onAttributeChanged() {
+        if (this._isDesktopFile) {
+            this._refreshMetadataAsync(true);
+        }
+    }
+
+    _onDestroy() {
+        /* Regular file data */
+        if (this._setMetadataCancellable)
+            this._setMetadataCancellable.cancel();
+        if (this._queryFileInfoCancellable)
+            this._queryFileInfoCancellable.cancel();
+
+        Extension.desktopManager.disconnect(this._writebleByOthersId);
+
+        /* Thumbnailing */
+        if (this._thumbnailScriptWatch)
+            GLib.source_remove(this._thumbnailScriptWatch);
+        if (this._loadThumbnailDataCancellable)
+            this._loadThumbnailDataCancellable.cancel();
+
+        /* Desktop file */
+        if (this._monitorDesktopFileId) {
+            this._monitorDesktopFile.disconnect(this._monitorDesktopFileId);
+            this._monitorDesktopFile.cancel();
+        }
+
+        /* Trash */
+        if (this._monitorTrashDir) {
+            this._monitorTrashDir.disconnect(this._monitorTrashId);
+            this._monitorTrashDir.cancel();
+        }
+        if (this._queryTrashInfoCancellable)
+            this._queryTrashInfoCancellable.cancel();
+        if (this._scheduleTrashRefreshId)
+            GLib.source_remove(this._scheduleTrashRefreshId);
+
+        /* Menu */
+        this._removeMenu();
+    }
+
+    _refreshMetadataAsync(rebuild) {
+        if (this._queryFileInfoCancellable)
+            this._queryFileInfoCancellable.cancel();
+        this._queryFileInfoCancellable = new Gio.Cancellable();
+        this._file.query_info_async(DesktopIconsUtil.DEFAULT_ATTRIBUTES,
+                                    Gio.FileQueryInfoFlags.NONE,
+                                    GLib.PRIORITY_DEFAULT,
+                                    this._queryFileInfoCancellable,
+            (source, result) => {
+                try {
+                    let newFileInfo = source.query_info_finish(result);
+                    this._queryFileInfoCancellable = null;
+                    this._updateMetadataFromFileInfo(newFileInfo);
+                    if (rebuild) {
+                        this._recreateMenu();
+                        this._updateIcon();
+                    }
+                } catch(error) {
+                    if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
+                        global.log("Error getting the file info: " + error);
+                }
+            });
+    }
+
+    _updateMetadataFromFileInfo(fileInfo) {
+        this._fileInfo = fileInfo;
+
+        let oldLabelText = this._label.text;
+
+        this._displayName = fileInfo.get_attribute_as_string('standard::display-name');
+        this._attributeCanExecute = fileInfo.get_attribute_boolean('access::can-execute');
+        this._unixmode = fileInfo.get_attribute_uint32('unix::mode')
+        this._writableByOthers = (this._unixmode & S_IWOTH) != 0;
+        this._trusted = fileInfo.get_attribute_as_string('metadata::trusted') == 'true';
+        this._attributeContentType = fileInfo.get_content_type();
+        this._isDesktopFile = this._attributeContentType == 'application/x-desktop';
+
+        if (this._isDesktopFile && this._writableByOthers)
+            log(`desktop-icons: File ${this._displayName} is writable by others - will not allow launching`);
+
+        if (this._isDesktopFile) {
+            this._desktopFile = Gio.DesktopAppInfo.new_from_filename(this._file.get_path());
+            if (!this._desktopFile) {
+                log(`Couldn’t parse ${this._displayName} as a desktop file, will treat it as a regular 
file.`);
+                this._isValidDesktopFile = false;
+            } else {
+                this._isValidDesktopFile = true;
+            }
+        } else {
+            this._isValidDesktopFile = false;
+        }
+
+        if (this.displayName != oldLabelText) {
+            this._label.text = this.displayName;
+        }
+
+        this._fileType = fileInfo.get_file_type();
+        this._isDirectory = this._fileType == Gio.FileType.DIRECTORY;
+        this._isSpecial = this._fileExtra != Prefs.FileType.NONE;
+        this._isHidden = fileInfo.get_is_hidden() | fileInfo.get_is_backup();
+        this._isSymlink = fileInfo.get_is_symlink();
+        this._modifiedTime = this._fileInfo.get_attribute_uint64("time::modified");
+        /*
+         * This is a glib trick to detect broken symlinks. If a file is a symlink, the filetype
+         * points to the final file, unless it is broken; thus if the file type is SYMBOLIC_LINK,
+         * it must be a broken link.
+         * https://developer.gnome.org/gio/stable/GFile.html#g-file-query-info
+         */
+        this._isBrokenSymlink = this._isSymlink && this._fileType == Gio.FileType.SYMBOLIC_LINK
+    }
+
+    onFileRenamed(file) {
+        this._file = file;
+        this._refreshMetadataAsync(false);
+    }
+
+    _updateIcon() {
+        if (this._fileExtra == Prefs.FileType.USER_DIRECTORY_TRASH) {
+            this._icon.child = this._createEmblemedStIcon(this._fileInfo.get_icon(), null);
+            return;
+        }
+
+        let thumbnailFactory = 
GnomeDesktop.DesktopThumbnailFactory.new(GnomeDesktop.DesktopThumbnailSize.LARGE);
+        if (thumbnailFactory.can_thumbnail(this._file.get_uri(),
+                                           this._attributeContentType,
+                                           this._modifiedTime)) {
+            let thumbnail = thumbnailFactory.lookup(this._file.get_uri(), this._modifiedTime);
+            if (thumbnail == null) {
+                if (!thumbnailFactory.has_valid_failed_thumbnail(this._file.get_uri(),
+                                                                 this._modifiedTime)) {
+                    let argv = [];
+                    argv.push(GLib.build_filenamev([ExtensionUtils.getCurrentExtension().path,
+                                                   'createThumbnail.js']));
+                    argv.push(this._file.get_path());
+                    let [success, pid] = GLib.spawn_async(null, argv, null,
+                                                          GLib.SpawnFlags.SEARCH_PATH | 
GLib.SpawnFlags.DO_NOT_REAP_CHILD, null);
+                    if (this._thumbnailScriptWatch)
+                        GLib.source_remove(this._thumbnailScriptWatch);
+                    this._thumbnailScriptWatch = GLib.child_watch_add(GLib.PRIORITY_DEFAULT,
+                                                                      pid,
+                        (pid, exitCode) => {
+                            this._thumbnailScriptWatch = 0;
+                            if (exitCode == 0)
+                                this._updateIcon();
+                            else
+                                global.log('Failed to generate thumbnail for ' + this._filePath);
+                            GLib.spawn_close_pid(pid);
+                            return false;
+                        }
+                    );
+                }
+            } else {
+                if (this._loadThumbnailDataCancellable)
+                    this._loadThumbnailDataCancellable.cancel();
+                this._loadThumbnailDataCancellable = new Gio.Cancellable();
+                let thumbnailFile = Gio.File.new_for_path(thumbnail);
+                thumbnailFile.load_bytes_async(this._loadThumbnailDataCancellable,
+                    (source, result) => {
+                        try {
+                            this._loadThumbnailDataCancellable = null;
+                            let [thumbnailData, etag_out] = source.load_bytes_finish(result);
+                            let thumbnailStream = Gio.MemoryInputStream.new_from_bytes(thumbnailData);
+                            let thumbnailPixbuf = GdkPixbuf.Pixbuf.new_from_stream(thumbnailStream, null);
+
+                            if (thumbnailPixbuf != null) {
+                                let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
+                                let thumbnailImage = new Clutter.Image();
+                                thumbnailImage.set_data(thumbnailPixbuf.get_pixels(),
+                                                        thumbnailPixbuf.has_alpha ? 
Cogl.PixelFormat.RGBA_8888 : Cogl.PixelFormat.RGB_888,
+                                                        thumbnailPixbuf.width,
+                                                        thumbnailPixbuf.height,
+                                                        thumbnailPixbuf.rowstride
+                                );
+                                let icon = new Clutter.Actor();
+                                icon.set_content(thumbnailImage);
+                                let width = Prefs.get_desired_width(scaleFactor);
+                                let height = Prefs.get_icon_size() * scaleFactor;
+                                let aspectRatio = thumbnailPixbuf.width / thumbnailPixbuf.height;
+                                if ((width / height) > aspectRatio)
+                                    icon.set_size(height * aspectRatio, height);
+                                else
+                                    icon.set_size(width, width / aspectRatio);
+                                this._icon.child = icon;
+                            }
+                        } catch (error) {
+                            if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
+                                global.log('Error while loading thumbnail: ' + error);
+                                this._icon.child = this._createEmblemedStIcon(this._fileInfo.get_icon(), 
null);
+                            }
+                        }
+                    }
+                );
+            }
+        }
+
+        if (this._isBrokenSymlink) {
+            this._icon.child = this._createEmblemedStIcon(null, 'text-x-generic');
+        } else {
+            if (this.trustedDesktopFile && this._desktopFile.has_key('Icon'))
+                this._icon.child = this._createEmblemedStIcon(null, this._desktopFile.get_string('Icon'));
+            else
+                this._icon.child = this._createEmblemedStIcon(this._fileInfo.get_icon(), null);
+        }
+    }
+
+    _refreshTrashIcon() {
+        if (this._queryTrashInfoCancellable)
+            this._queryTrashInfoCancellable.cancel();
+        this._queryTrashInfoCancellable = new Gio.Cancellable();
+
+        this._file.query_info_async(DesktopIconsUtil.DEFAULT_ATTRIBUTES,
+                                    Gio.FileQueryInfoFlags.NONE,
+                                    GLib.PRIORITY_DEFAULT,
+                                    this._queryTrashInfoCancellable,
+            (source, result) => {
+                try {
+                    this._fileInfo = source.query_info_finish(result);
+                    this._queryTrashInfoCancellable = null;
+                    this._updateIcon();
+                } catch(error) {
+                    if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
+                        global.log('Error getting the number of files in the trash: ' + error);
+                }
+            });
+
+        this._scheduleTrashRefreshId = 0;
+        return false;
+    }
+
+    get file() {
+        return this._file;
+    }
+
+    get isHidden() {
+        return this._isHidden;
+    }
+
+    _createEmblemedStIcon(icon, iconName) {
+        if (icon == null) {
+            if (GLib.path_is_absolute(iconName)) {
+                let iconFile = Gio.File.new_for_commandline_arg(iconName);
+                icon = new Gio.FileIcon({ file: iconFile });
+            } else {
+                icon = Gio.ThemedIcon.new_with_default_fallbacks(iconName);
+            }
+        }
+        let itemIcon = Gio.EmblemedIcon.new(icon, null);
+
+        if (this._isSymlink) {
+            if (this._isBrokenSymlink)
+                itemIcon.add_emblem(Gio.Emblem.new(Gio.ThemedIcon.new('emblem-unreadable')));
+            else
+                itemIcon.add_emblem(Gio.Emblem.new(Gio.ThemedIcon.new('emblem-symbolic-link')));
+        } else if (this.trustedDesktopFile) {
+            itemIcon.add_emblem(Gio.Emblem.new(Gio.ThemedIcon.new('emblem-symbolic-link')));
+        }
+
+        return new St.Icon({ gicon: itemIcon,
+                             icon_size: Prefs.get_icon_size()
+        });
+    }
+
+    doRename() {
+        if (!this.canRename()) {
+            log (`Error: ${this.file.get_uri()} cannot be renamed`);
+            return;
+        }
+
+        this.emit('rename-clicked');
+    }
+
+    doOpen() {
+        if (this._isBrokenSymlink) {
+            log(`Error: Can’t open ${this.file.get_uri()} because it is a broken symlink.`);
+            return;
+        }
+
+        if (this.trustedDesktopFile) {
+            this._desktopFile.launch_uris_as_manager([], null, GLib.SpawnFlags.SEARCH_PATH, null, null);
+            return;
+        }
+
+        if (this._attributeCanExecute && !this._isDirectory && !this._isValidDesktopFile) {
+            if (this._execLine)
+                Util.spawnCommandLine(this._execLine);
+            return;
+        }
+
+        Gio.AppInfo.launch_default_for_uri_async(this.file.get_uri(),
+            null, null,
+            (source, result) => {
+                try {
+                    Gio.AppInfo.launch_default_for_uri_finish(result);
+                } catch (e) {
+                    log('Error opening file ' + this.file.get_uri() + ': ' + e.message);
+                }
+            }
+        );
+    }
+
+    _onCopyClicked() {
+        Extension.desktopManager.doCopy();
+    }
+
+    _onCutClicked() {
+        Extension.desktopManager.doCut();
+    }
+
+    _onShowInFilesClicked() {
+
+        DBusUtils.FreeDesktopFileManagerProxy.ShowItemsRemote([this.file.get_uri()], '',
+            (result, error) => {
+                if (error)
+                    log('Error showing file on desktop: ' + error.message);
+            }
+        );
+    }
+
+    _onPropertiesClicked() {
+
+        DBusUtils.FreeDesktopFileManagerProxy.ShowItemPropertiesRemote([this.file.get_uri()], '',
+            (result, error) => {
+                if (error)
+                    log('Error showing properties: ' + error.message);
+            }
+        );
+    }
+
+    _onMoveToTrashClicked() {
+        Extension.desktopManager.doTrash();
+    }
+
+    _onEmptyTrashClicked() {
+        Extension.desktopManager.doEmptyTrash();
+    }
+
+    get _allowLaunchingText() {
+        if (this.trustedDesktopFile)
+            return _("Don’t Allow Launching");
+
+        return _("Allow Launching");
+    }
+
+    get metadataTrusted() {
+        return this._trusted;
+    }
+
+    set metadataTrusted(value) {
+        this._trusted = value;
+
+        let info = new Gio.FileInfo();
+        info.set_attribute_string('metadata::trusted',
+                                  value ? 'true' : 'false');
+        this._file.set_attributes_async(info,
+                                        Gio.FileQueryInfoFlags.NONE,
+                                        GLib.PRIORITY_LOW,
+                                        null,
+            (source, result) => {
+                try {
+                    source.set_attributes_finish(result);
+                    this._refreshMetadataAsync(true);
+                } catch(e) {
+                    log(`Failed to set metadata::trusted: ${e.message}`);
+                }
+        });
+    }
+
+    _onAllowDisallowLaunchingClicked() {
+        this.metadataTrusted = !this.trustedDesktopFile;
+
+        /*
+         * we're marking as trusted, make the file executable too. note that we
+         * do not ever remove the executable bit, since we don't know who set
+         * it.
+         */
+        if (this.metadataTrusted && !this._attributeCanExecute) {
+            let info = new Gio.FileInfo();
+            let newUnixMode = this._unixmode | S_IXUSR;
+            info.set_attribute_uint32(Gio.FILE_ATTRIBUTE_UNIX_MODE, newUnixMode);
+            this._file.set_attributes_async(info,
+                                            Gio.FileQueryInfoFlags.NONE,
+                                            GLib.PRIORITY_LOW,
+                                            null,
+                (source, result) => {
+                    try {
+                        source.set_attributes_finish (result);
+                    } catch(e) {
+                        log(`Failed to set unix mode: ${e.message}`);
+                    }
+            });
+        }
+    }
+
+    canRename() {
+        return !this.trustedDesktopFile && this._fileExtra == Prefs.FileType.NONE;
+    }
+
+    _doOpenWith() {
+        DBusUtils.openFileWithOtherApplication(this.file.get_path());
+    }
+
+    _getSelectionStyle() {
+        let rgba = DesktopIconsUtil.getGtkClassBackgroundColor('view', Gtk.StateFlags.SELECTED);
+        let background_color =
+            'rgba(' + rgba.red * 255 + ', ' + rgba.green * 255 + ', ' + rgba.blue * 255 + ', 0.6)';
+        let border_color =
+            'rgba(' + rgba.red * 255 + ', ' + rgba.green * 255 + ', ' + rgba.blue * 255 + ', 0.8)';
+
+        return 'background-color: ' + background_color + ';' +
+               'border-color: ' + border_color + ';'
+    }
+
+    _removeMenu() {
+        if (this._menu != null) {
+            if (this._menuManager != null)
+                this._menuManager.removeMenu(this._menu);
+
+            Main.layoutManager.uiGroup.remove_child(this._menu.actor);
+            this._menu.destroy();
+            this._menu = null;
+        }
+
+        this._menuManager = null;
+    }
+
+    _recreateMenu() {
+        this._removeMenu();
+
+        this._menuManager = new PopupMenu.PopupMenuManager({ actor: this.actor });
+        let side = St.Side.LEFT;
+        if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
+            side = St.Side.RIGHT;
+        this._menu = new PopupMenu.PopupMenu(this.actor, 0.5, side);
+        this._menu.addAction(_('Open'), () => this.doOpen());
+        switch (this._fileExtra) {
+        case Prefs.FileType.NONE:
+            if (!this._isDirectory)
+                this._actionOpenWith = this._menu.addAction(_('Open With Other Application'), () => 
this._doOpenWith());
+            else
+                this._actionOpenWith = null;
+            this._menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+            this._actionCut = this._menu.addAction(_('Cut'), () => this._onCutClicked());
+            this._actionCopy = this._menu.addAction(_('Copy'), () => this._onCopyClicked());
+            if (this.canRename())
+                this._menu.addAction(_('Rename…'), () => this.doRename());
+            this._actionTrash = this._menu.addAction(_('Move to Trash'), () => this._onMoveToTrashClicked());
+            if (this._isValidDesktopFile && !Extension.desktopManager.writableByOthers && 
!this._writableByOthers) {
+                this._menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+                this._allowLaunchingMenuItem = this._menu.addAction(this._allowLaunchingText,
+                                                                    () => 
this._onAllowDisallowLaunchingClicked());
+
+            }
+            break;
+        case Prefs.FileType.USER_DIRECTORY_TRASH:
+            this._menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+            this._menu.addAction(_('Empty Trash'), () => this._onEmptyTrashClicked());
+            break;
+        default:
+            break;
+        }
+        this._menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+        this._menu.addAction(_('Properties'), () => this._onPropertiesClicked());
+        this._menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+        this._menu.addAction(_('Show in Files'), () => this._onShowInFilesClicked());
+        if (this._isDirectory && this.file.get_path() != null)
+            this._actionOpenInTerminal = this._menu.addAction(_('Open in Terminal'), () => 
this._onOpenTerminalClicked());
+
+        this._menuManager.addMenu(this._menu);
+
+        Main.layoutManager.uiGroup.add_child(this._menu.actor);
+        this._menu.actor.hide();
+    }
+
+    _ensureMenu() {
+        if (this._menu == null)
+            this._recreateMenu();
+
+        return this._menu;
+    }
+
+    _onOpenTerminalClicked () {
+        DesktopIconsUtil.launchTerminal(this.file.get_path());
+    }
+
+    _onPressButton(actor, event) {
+        let button = event.get_button();
+        if (button == 3) {
+            if (!this.isSelected)
+                this.emit('selected', false, false, true);
+            this._ensureMenu().toggle();
+            if (this._actionOpenWith) {
+                let allowOpenWith = (Extension.desktopManager.getNumberOfSelectedItems() == 1);
+                this._actionOpenWith.setSensitive(allowOpenWith);
+            }
+            let specialFilesSelected = Extension.desktopManager.checkIfSpecialFilesAreSelected();
+            if (this._actionCut)
+                this._actionCut.setSensitive(!specialFilesSelected);
+            if (this._actionCopy)
+                this._actionCopy.setSensitive(!specialFilesSelected);
+            if (this._actionTrash)
+                this._actionTrash.setSensitive(!specialFilesSelected);
+            return Clutter.EVENT_STOP;
+        } else if (button == 1) {
+            if (event.get_click_count() == 1) {
+                let [x, y] = event.get_coords();
+                this._primaryButtonPressed = true;
+                this._buttonPressInitialX = x;
+                this._buttonPressInitialY = y;
+                let shiftPressed = !!(event.get_state() & Clutter.ModifierType.SHIFT_MASK);
+                let controlPressed = !!(event.get_state() & Clutter.ModifierType.CONTROL_MASK);
+                if (!this.isSelected) {
+                    this.emit('selected', shiftPressed || controlPressed, false, true);
+                }
+            }
+            return Clutter.EVENT_STOP;
+        }
+
+        return Clutter.EVENT_PROPAGATE;
+    }
+
+    _onLeave(actor, event) {
+        this._primaryButtonPressed = false;
+    }
+
+    _onMotion(actor, event) {
+        let [x, y] = event.get_coords();
+        if (this._primaryButtonPressed) {
+            let xDiff = x - this._buttonPressInitialX;
+            let yDiff = y - this._buttonPressInitialY;
+            let distance = Math.sqrt(Math.pow(xDiff, 2) + Math.pow(yDiff, 2));
+            if (distance > DRAG_TRESHOLD) {
+                // Don't need to track anymore this if we start drag, and also
+                // avoids reentrance here
+                this._primaryButtonPressed = false;
+                let event = Clutter.get_current_event();
+                let [x, y] = event.get_coords();
+                Extension.desktopManager.dragStart();
+            }
+        }
+
+        return Clutter.EVENT_PROPAGATE;
+    }
+
+    _onReleaseButton(actor, event) {
+        let button = event.get_button();
+        if (button == 1) {
+            // primaryButtonPressed is TRUE only if the user has pressed the button
+            // over an icon, and if (s)he has not started a drag&drop operation
+            if (this._primaryButtonPressed) {
+                this._primaryButtonPressed = false;
+                let shiftPressed = !!(event.get_state() & Clutter.ModifierType.SHIFT_MASK);
+                let controlPressed = !!(event.get_state() & Clutter.ModifierType.CONTROL_MASK);
+                if ((event.get_click_count() == 1) && Prefs.CLICK_POLICY_SINGLE && !shiftPressed && 
!controlPressed)
+                    this.doOpen();
+                this.emit('selected', shiftPressed || controlPressed, false, true);
+                return Clutter.EVENT_STOP;
+            }
+            if ((event.get_click_count() == 2) && (!Prefs.CLICK_POLICY_SINGLE))
+                this.doOpen();
+        }
+        return Clutter.EVENT_PROPAGATE;
+    }
+
+    get savedCoordinates() {
+        return this._savedCoordinates;
+    }
+
+    _onSetMetadataFileFinished(source, result) {
+        try {
+            let [success, info] = source.set_attributes_finish(result);
+        } catch (error) {
+            if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
+                log('Error setting metadata to desktop files ', error);
+        }
+    }
+
+    set savedCoordinates(pos) {
+        if (this._setMetadataCancellable)
+            this._setMetadataCancellable.cancel();
+
+        this._setMetadataCancellable = new Gio.Cancellable();
+        this._savedCoordinates = [pos[0], pos[1]];
+        let info = new Gio.FileInfo();
+        info.set_attribute_string('metadata::nautilus-icon-position',
+                                  `${pos[0]},${pos[1]}`);
+        this.file.set_attributes_async(info,
+                                       Gio.FileQueryInfoFlags.NONE,
+                                       GLib.PRIORITY_DEFAULT,
+                                       this._setMetadataCancellable,
+            (source, result) => {
+                this._setMetadataCancellable = null;
+                this._onSetMetadataFileFinished(source, result);
+            }
+        );
+    }
+
+    intersectsWith(argX, argY, argWidth, argHeight) {
+        let rect = new Meta.Rectangle({ x: argX, y: argY, width: argWidth, height: argHeight });
+        let [containerX, containerY] = this._container.get_transformed_position();
+        let boundingBox = new Meta.Rectangle({ x: containerX,
+                                               y: containerY,
+                                               width: this._container.allocation.x2 - 
this._container.allocation.x1,
+                                               height: this._container.allocation.y2 - 
this._container.allocation.y1 });
+        let [intersects, _] = rect.intersect(boundingBox);
+
+        return intersects;
+    }
+
+    set isSelected(isSelected) {
+        isSelected = !!isSelected;
+        if (isSelected == this._isSelected)
+            return;
+
+        if (isSelected) {
+            this._container.set_style(this._getSelectionStyle());
+        } else {
+            this._container.set_style('background-color: transparent');
+            this._container.set_style('border-color: transparent');
+        }
+
+        this._isSelected = isSelected;
+    }
+
+    get isSelected() {
+        return this._isSelected;
+    }
+
+    get isSpecial() {
+        return this._isSpecial;
+    }
+
+    get state() {
+        return this._state;
+    }
+
+    set state(state) {
+        if (state == this._state)
+            return;
+
+        this._state = state;
+    }
+
+    get isDirectory() {
+        return this._isDirectory;
+    }
+
+    get trustedDesktopFile() {
+        return this._isValidDesktopFile &&
+               this._attributeCanExecute &&
+               this.metadataTrusted &&
+               !Extension.desktopManager.writableByOthers &&
+               !this._writableByOthers;
+    }
+
+    get fileName() {
+        return this._fileInfo.get_name();
+    }
+
+    get displayName() {
+        if (this.trustedDesktopFile)
+            return this._desktopFile.get_name();
+
+        return this._displayName || null;
+    }
+
+    acceptDrop() {
+        return Extension.desktopManager.selectionDropOnFileItem(this);
+    }
+};
+Signals.addSignalMethods(FileItem.prototype);
diff --git a/extensions/desktop-icons/meson.build b/extensions/desktop-icons/meson.build
new file mode 100644
index 0000000..8431af6
--- /dev/null
+++ b/extensions/desktop-icons/meson.build
@@ -0,0 +1,19 @@
+extension_data += configure_file(
+  input: metadata_name + '.in',
+  output: metadata_name,
+  configuration: metadata_conf
+)
+
+extension_schemas += files(join_paths('schemas', metadata_conf.get('gschemaname') + '.gschema.xml'))
+
+extension_sources += files(
+  'createFolderDialog.js',
+  'createThumbnail.js',
+  'dbusUtils.js',
+  'desktopGrid.js',
+  'desktopIconsUtil.js',
+  'desktopManager.js',
+  'extension.js',
+  'fileItem.js',
+  'prefs.js'
+)
diff --git a/extensions/desktop-icons/metadata.json.in b/extensions/desktop-icons/metadata.json.in
new file mode 100644
index 0000000..78cabf0
--- /dev/null
+++ b/extensions/desktop-icons/metadata.json.in
@@ -0,0 +1,11 @@
+{
+"extension-id": "@extension_id@",
+"uuid": "@uuid@",
+"settings-schema": "@gschemaname@",
+"gettext-domain": "@gettext_domain@",
+"name": "Desktop Icons",
+"description": "Provide desktop icons support for classic mode",
+"original-authors": [  "csoriano redhat com" ],
+"shell-version": [ "@shell_current@" ],
+"url": "@url@"
+}
diff --git a/extensions/desktop-icons/po/LINGUAS b/extensions/desktop-icons/po/LINGUAS
new file mode 100644
index 0000000..65b7521
--- /dev/null
+++ b/extensions/desktop-icons/po/LINGUAS
@@ -0,0 +1,19 @@
+cs
+da
+de
+es
+fi
+fr
+fur
+hr
+hu
+id
+it
+ja
+nl
+pl
+pt_BR
+ru
+sv
+tr
+zh_TW
diff --git a/extensions/desktop-icons/po/POTFILES.in b/extensions/desktop-icons/po/POTFILES.in
new file mode 100644
index 0000000..7c2ebd3
--- /dev/null
+++ b/extensions/desktop-icons/po/POTFILES.in
@@ -0,0 +1,4 @@
+prefs.js
+desktopGrid.js
+fileItem.js
+schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml
\ No newline at end of file
diff --git a/extensions/desktop-icons/po/cs.po b/extensions/desktop-icons/po/cs.po
new file mode 100644
index 0000000..f5f9db4
--- /dev/null
+++ b/extensions/desktop-icons/po/cs.po
@@ -0,0 +1,195 @@
+# Czech translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Marek Černocký <marek manet cz>, 2018.
+# Milan Zink <zeten30 gmail com>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-03-01 12:49+0000\n"
+"PO-Revision-Date: 2019-03-02 18:02+0100\n"
+"Last-Translator: Daniel Rusek <mail asciiwolf com>\n"
+"Language-Team: Czech <zeten30 gmail com>\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"X-Generator: Poedit 2.2.1\n"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Název nové složky"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Vytvořit"
+
+#: createFolderDialog.js:74 desktopGrid.js:586
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Názvy složek nesmí obsahovat „/“."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Složka se nemůže jmenovat „.“."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Složka se nemůže jmenovat „..“."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Složky s „.“ na začátku jejich názvu jsou skryty."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Soubor nebo složka s tímto názvem již existuje."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Velikost ikon na pracovní ploše"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "malé"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "standardní"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "velké"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Zobrazovat osobní složku na pracovní ploše"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Zobrazovat ikonu koše na pracovní ploše"
+
+#: desktopGrid.js:320
+msgid "New Folder"
+msgstr "Nová složka"
+
+#: desktopGrid.js:322
+msgid "Paste"
+msgstr "Vložit"
+
+#: desktopGrid.js:323
+msgid "Undo"
+msgstr "Zpět"
+
+#: desktopGrid.js:324
+msgid "Redo"
+msgstr "Znovu"
+
+#: desktopGrid.js:326
+msgid "Show Desktop in Files"
+msgstr "Zobrazit plochu v Souborech"
+
+#: desktopGrid.js:327 fileItem.js:606
+msgid "Open in Terminal"
+msgstr "Otevřít v terminálu"
+
+#: desktopGrid.js:329
+msgid "Change Background…"
+msgstr "Změnit pozadí…"
+
+#: desktopGrid.js:331
+msgid "Display Settings"
+msgstr "Zobrazit nastavení"
+
+#: desktopGrid.js:332
+msgid "Settings"
+msgstr "Nastavení"
+
+#: desktopGrid.js:576
+msgid "Enter file name…"
+msgstr "Zadejte název souboru…"
+
+#: desktopGrid.js:580
+msgid "OK"
+msgstr "Budiž"
+
+#: fileItem.js:490
+msgid "Don’t Allow Launching"
+msgstr "Nepovolit spouštění"
+
+#: fileItem.js:492
+msgid "Allow Launching"
+msgstr "Povolit spouštění"
+
+#: fileItem.js:574
+msgid "Open"
+msgstr "Otevřít"
+
+#: fileItem.js:578
+msgid "Open With Other Application"
+msgstr "Otevřít pomocí jiné aplikace"
+
+#: fileItem.js:582
+msgid "Cut"
+msgstr "Vyjmout"
+
+#: fileItem.js:583
+msgid "Copy"
+msgstr "Kopírovat"
+
+#: fileItem.js:585
+msgid "Rename…"
+msgstr "Přejmenovat…"
+
+#: fileItem.js:586
+msgid "Move to Trash"
+msgstr "Přesunout do koše"
+
+#: fileItem.js:596
+msgid "Empty Trash"
+msgstr "Vyprázdnit koš"
+
+#: fileItem.js:602
+msgid "Properties"
+msgstr "Vlastnosti"
+
+#: fileItem.js:604
+msgid "Show in Files"
+msgstr "Zobrazit v Souborech"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Velikost ikon"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Nastavit velikost pro ikony na pracovní ploše."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Zobrazovat osobní složku"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Zobrazovat osobní složku na pracovní ploše."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Zobrazovat koš"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Zobrazovat ikonu koše na pracovní ploše."
+
+#~ msgid "Huge"
+#~ msgstr "obrovské"
+
+#~ msgid "Ok"
+#~ msgstr "Ok"
diff --git a/extensions/desktop-icons/po/da.po b/extensions/desktop-icons/po/da.po
new file mode 100644
index 0000000..d3f51f0
--- /dev/null
+++ b/extensions/desktop-icons/po/da.po
@@ -0,0 +1,159 @@
+# Danish translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Alan Mortensen <alanmortensen am gmail com>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-01-15 10:59+0000\n"
+"PO-Revision-Date: 2019-02-09 11:35+0100\n"
+"Last-Translator: Alan Mortensen <alanmortensen am gmail com>\n"
+"Language-Team: Danish <dansk dansk-gruppen dk>\n"
+"Language: da\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.0.6\n"
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Størrelsen på skrivebordsikoner"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Små"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Standard"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Store"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Vis den personlige mappe på skrivebordet"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Vis papirkurvsikonet på skrivebordet"
+
+#: desktopGrid.js:187 desktopGrid.js:306
+msgid "New Folder"
+msgstr "Ny mappe"
+
+#: desktopGrid.js:308
+msgid "Paste"
+msgstr "Indsæt"
+
+#: desktopGrid.js:309
+msgid "Undo"
+msgstr "Fortryd"
+
+#: desktopGrid.js:310
+msgid "Redo"
+msgstr "Omgør"
+
+#: desktopGrid.js:312
+msgid "Show Desktop in Files"
+msgstr "Vis skrivebordet i Filer"
+
+#: desktopGrid.js:313 fileItem.js:586
+msgid "Open in Terminal"
+msgstr "Åbn i terminal"
+
+#: desktopGrid.js:315
+msgid "Change Background…"
+msgstr "Skift baggrund …"
+
+#: desktopGrid.js:317
+msgid "Display Settings"
+msgstr "Skærmindstillinger"
+
+#: desktopGrid.js:318
+msgid "Settings"
+msgstr "Indstillinger"
+
+#: desktopGrid.js:559
+msgid "Enter file name…"
+msgstr "Indtast filnavn …"
+
+#: desktopGrid.js:563
+msgid "OK"
+msgstr "OK"
+
+#: desktopGrid.js:569
+msgid "Cancel"
+msgstr "Annullér"
+
+#: fileItem.js:490
+msgid "Don’t Allow Launching"
+msgstr "Tillad ikke opstart"
+
+#: fileItem.js:492
+msgid "Allow Launching"
+msgstr "Tillad opstart"
+
+#: fileItem.js:559
+msgid "Open"
+msgstr "Åbn"
+
+#: fileItem.js:562
+msgid "Cut"
+msgstr "Klip"
+
+#: fileItem.js:563
+msgid "Copy"
+msgstr "Kopiér"
+
+#: fileItem.js:565
+msgid "Rename…"
+msgstr "Omdøb …"
+
+#: fileItem.js:566
+msgid "Move to Trash"
+msgstr "Flyt til papirkurven"
+
+#: fileItem.js:576
+msgid "Empty Trash"
+msgstr "Tøm papirkurven"
+
+#: fileItem.js:582
+msgid "Properties"
+msgstr "Egenskaber"
+
+#: fileItem.js:584
+msgid "Show in Files"
+msgstr "Vis i Filer"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Ikonstørrelse"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Angiv størrelsen på skrivebordsikoner."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Vis personlig mappe"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Vis den personlige mappe på skrivebordet."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Vis papirkurvsikon"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Vis papirkurvsikonet på skrivebordet."
+
+#~ msgid "Huge"
+#~ msgstr "Enorme"
diff --git a/extensions/desktop-icons/po/de.po b/extensions/desktop-icons/po/de.po
new file mode 100644
index 0000000..ed5a257
--- /dev/null
+++ b/extensions/desktop-icons/po/de.po
@@ -0,0 +1,192 @@
+# German translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Mario Blättermann <mario blaettermann gmail com>, 2018.
+# rugk <rugk+i18n posteo de>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-03-07 22:46+0000\n"
+"PO-Revision-Date: 2019-03-09 15:42+0100\n"
+"Last-Translator: Tim Sabsch <tim sabsch com>\n"
+"Language-Team: German <gnome-de gnome org>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.2.1\n"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Neuer Ordner"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Erstellen"
+
+#: createFolderDialog.js:74 desktopGrid.js:586
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Ordnernamen dürfen kein »/« enthalten."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Ein Ordner darf nicht ».« genannt werden."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Ein Ordner darf nicht »..« genannt werden."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Ordner mit ».« am Anfang sind verborgen."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Es gibt bereits eine Datei oder einen Ordner mit diesem Namen."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Größe der Arbeitsflächensymbole"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Klein"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Standard"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Groß"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Den persönlichen Ordner auf der Arbeitsfläche anzeigen"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Papierkorb-Symbol auf der Arbeitsfläche anzeigen"
+
+#: desktopGrid.js:320
+msgid "New Folder"
+msgstr "Neuer Ordner"
+
+#: desktopGrid.js:322
+msgid "Paste"
+msgstr "Einfügen"
+
+#: desktopGrid.js:323
+msgid "Undo"
+msgstr "Rückgängig"
+
+#: desktopGrid.js:324
+msgid "Redo"
+msgstr "Wiederholen"
+
+#: desktopGrid.js:326
+msgid "Show Desktop in Files"
+msgstr "Schreibtisch in Dateien anzeigen"
+
+#: desktopGrid.js:327 fileItem.js:606
+msgid "Open in Terminal"
+msgstr "Im Terminal öffnen"
+
+#: desktopGrid.js:329
+msgid "Change Background…"
+msgstr "Hintergrund ändern …"
+
+#: desktopGrid.js:331
+msgid "Display Settings"
+msgstr "Anzeigeeinstellungen"
+
+#: desktopGrid.js:332
+msgid "Settings"
+msgstr "Einstellungen"
+
+#: desktopGrid.js:576
+msgid "Enter file name…"
+msgstr "Dateinamen eingeben …"
+
+#: desktopGrid.js:580
+msgid "OK"
+msgstr "OK"
+
+#: fileItem.js:490
+msgid "Don’t Allow Launching"
+msgstr "Start nicht erlauben"
+
+#: fileItem.js:492
+msgid "Allow Launching"
+msgstr "Start erlauben"
+
+#: fileItem.js:574
+msgid "Open"
+msgstr "Öffnen"
+
+#: fileItem.js:578
+msgid "Open With Other Application"
+msgstr "Mit anderer Anwendung öffnen"
+
+#: fileItem.js:582
+msgid "Cut"
+msgstr "Ausschneiden"
+
+#: fileItem.js:583
+msgid "Copy"
+msgstr "Kopieren"
+
+#: fileItem.js:585
+msgid "Rename…"
+msgstr "Umbenennen …"
+
+#: fileItem.js:586
+msgid "Move to Trash"
+msgstr "In den Papierkorb verschieben"
+
+#: fileItem.js:596
+msgid "Empty Trash"
+msgstr "Papierkorb leeren"
+
+#: fileItem.js:602
+msgid "Properties"
+msgstr "Eigenschaften"
+
+#: fileItem.js:604
+msgid "Show in Files"
+msgstr "In Dateiverwaltung anzeigen"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Symbolgröße"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Die Größe der Arbeitsflächensymbole festlegen."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Persönlichen Ordner anzeigen"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Den persönlichen Ordner auf der Arbeitsfläche anzeigen."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Papierkorb-Symbol anzeigen"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Das Papierkorb-Symbol auf der Arbeitsfläche anzeigen."
+
+#~ msgid "Huge"
+#~ msgstr "Riesig"
diff --git a/extensions/desktop-icons/po/es.po b/extensions/desktop-icons/po/es.po
new file mode 100644
index 0000000..8cc87da
--- /dev/null
+++ b/extensions/desktop-icons/po/es.po
@@ -0,0 +1,218 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Sergio Costas <rastersoft gmail com>, 2018.
+# Daniel Mustieles <daniel mustieles gmail com>, 2018-2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 1.0\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-03-01 12:11+0000\n"
+"PO-Revision-Date: 2019-03-04 10:37+0100\n"
+"Last-Translator: Daniel Mustieles <daniel mustieles gmail com>\n"
+"Language-Team: es <gnome-es-list gnome org>\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Gtranslator 3.31.90\n"
+
+#: createFolderDialog.js:48
+#| msgid "New Folder"
+msgid "New folder name"
+msgstr "Nombre de la nueva carpeta"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Crear"
+
+#: createFolderDialog.js:74 desktopGrid.js:586
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Los nombres de carpetas no pueden contener «/»."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Una carpeta no se puede llamar «.»."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Una carpeta no se puede llamar «..»."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Las carpetas cuyo nombre empieza por «.» están ocultas."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Ya hay un archivo o carpeta con ese nombre."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Tamaño de los iconos del escritorio"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Pequeño"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Estándar"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Grande"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Mostrar la carpeta personal en el escritorio"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Mostrar la papelera en el escritorio"
+
+#: desktopGrid.js:320
+msgid "New Folder"
+msgstr "Nueva carpeta"
+
+#: desktopGrid.js:322
+msgid "Paste"
+msgstr "Pegar"
+
+#: desktopGrid.js:323
+msgid "Undo"
+msgstr "Deshacer"
+
+#: desktopGrid.js:324
+msgid "Redo"
+msgstr "Rehacer"
+
+#: desktopGrid.js:326
+msgid "Show Desktop in Files"
+msgstr "Mostrar el escritorio en Archivos"
+
+#: desktopGrid.js:327 fileItem.js:606
+msgid "Open in Terminal"
+msgstr "Abrir en una terminal"
+
+#: desktopGrid.js:329
+msgid "Change Background…"
+msgstr "Cambiar el fondo..."
+
+#: desktopGrid.js:331
+msgid "Display Settings"
+msgstr "Configuración de pantalla"
+
+#: desktopGrid.js:332
+msgid "Settings"
+msgstr "Configuración"
+
+#: desktopGrid.js:576
+msgid "Enter file name…"
+msgstr "Introduzca el nombre del archivo…"
+
+#: desktopGrid.js:580
+msgid "OK"
+msgstr "Aceptar"
+
+#: fileItem.js:490
+msgid "Don’t Allow Launching"
+msgstr "No permitir lanzar"
+
+#: fileItem.js:492
+msgid "Allow Launching"
+msgstr "Permitir lanzar"
+
+#: fileItem.js:574
+msgid "Open"
+msgstr "Abrir"
+
+#: fileItem.js:578
+msgid "Open With Other Application"
+msgstr "Abrir con otra aplicación"
+
+#: fileItem.js:582
+msgid "Cut"
+msgstr "Cortar"
+
+#: fileItem.js:583
+msgid "Copy"
+msgstr "Copiar"
+
+#: fileItem.js:585
+msgid "Rename…"
+msgstr "Renombrar…"
+
+#: fileItem.js:586
+msgid "Move to Trash"
+msgstr "Mover a la papelera"
+
+#: fileItem.js:596
+msgid "Empty Trash"
+msgstr "Vaciar la papelera"
+
+#: fileItem.js:602
+msgid "Properties"
+msgstr "Propiedades"
+
+#: fileItem.js:604
+msgid "Show in Files"
+msgstr "Mostrar en Files"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Tamaño de los iconos"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Establece el tamaño de los iconos del escritorio."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Mostrar la carpeta personal"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Mostrar la carpeta personal en el escritorio."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Mostrar la papelera"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Mostrar la papelera en el escritorio."
+
+#~ msgid "Huge"
+#~ msgstr "Inmenso"
+
+#~ msgid "Ok"
+#~ msgstr "Aceptar"
+
+#~ msgid "huge"
+#~ msgstr "inmenso"
+
+#~ msgid "Maximum width for the icons and filename."
+#~ msgstr "Ancho máximo de los iconos y el nombre de fichero."
+
+#~ msgid "Shows the Documents folder in the desktop."
+#~ msgstr "Muestra la carpeta Documentos en el escritorio."
+
+#~ msgid "Shows the Downloads folder in the desktop."
+#~ msgstr "Muestra la carpeta Descargas en el escritorio."
+
+#~ msgid "Shows the Music folder in the desktop."
+#~ msgstr "Muestra la carpeta Música en el escritorio."
+
+#~ msgid "Shows the Pictures folder in the desktop."
+#~ msgstr "Muestra la carpeta Imágenes en el escritorio."
+
+#~ msgid "Shows the Videos folder in the desktop."
+#~ msgstr "Muestra la carpeta Vídeos en el escritorio."
diff --git a/extensions/desktop-icons/po/fi.po b/extensions/desktop-icons/po/fi.po
new file mode 100644
index 0000000..71ac40d
--- /dev/null
+++ b/extensions/desktop-icons/po/fi.po
@@ -0,0 +1,191 @@
+# Finnish translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Jiri Grönroos <jiri gronroos iki fi>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-03-01 12:11+0000\n"
+"PO-Revision-Date: 2019-03-02 11:29+0200\n"
+"Last-Translator: Jiri Grönroos <jiri gronroos+l10n iki fi>\n"
+"Language-Team: Finnish <lokalisointi-lista googlegroups com>\n"
+"Language: fi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.0.6\n"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Uusi kansion nimi"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Luo"
+
+#: createFolderDialog.js:74 desktopGrid.js:586
+msgid "Cancel"
+msgstr "Peru"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Kansion nimi ei voi sisältää merkkiä “/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Kansion nimi ei voi olla “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Kansion nimi ei voi olla “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Kansiot, joiden nimi alkaa merkillä “.”, ovat piilotettuja."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Nimi on jo toisen tiedoston tai kansion käytössä."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Työpöytäkuvakkeiden koko"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Pieni"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Normaali"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Suuri"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Näytä kotikansio työpöydällä"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Näytä roskakorin kuvake työpöydällä"
+
+#: desktopGrid.js:320
+msgid "New Folder"
+msgstr "Uusi kansio"
+
+#: desktopGrid.js:322
+msgid "Paste"
+msgstr "Liitä"
+
+#: desktopGrid.js:323
+msgid "Undo"
+msgstr "Kumoa"
+
+#: desktopGrid.js:324
+msgid "Redo"
+msgstr "Tee uudeleen"
+
+#: desktopGrid.js:326
+msgid "Show Desktop in Files"
+msgstr "Näytä työpöytä tiedostonhallinnassa"
+
+#: desktopGrid.js:327 fileItem.js:606
+msgid "Open in Terminal"
+msgstr "Avaa päätteessä"
+
+#: desktopGrid.js:329
+msgid "Change Background…"
+msgstr "Vaihda taustakuvaa…"
+
+#: desktopGrid.js:331
+msgid "Display Settings"
+msgstr "Näytön asetukset"
+
+#: desktopGrid.js:332
+msgid "Settings"
+msgstr "Asetukset"
+
+#: desktopGrid.js:576
+msgid "Enter file name…"
+msgstr "Anna tiedostonimi…"
+
+#: desktopGrid.js:580
+msgid "OK"
+msgstr "OK"
+
+#: fileItem.js:490
+msgid "Don’t Allow Launching"
+msgstr "Älä salli käynnistämistä"
+
+#: fileItem.js:492
+msgid "Allow Launching"
+msgstr "Salli käynnistäminen"
+
+#: fileItem.js:574
+msgid "Open"
+msgstr "Avaa"
+
+#: fileItem.js:578
+msgid "Open With Other Application"
+msgstr "Avaa toisella sovelluksella"
+
+#: fileItem.js:582
+msgid "Cut"
+msgstr "Leikkaa"
+
+#: fileItem.js:583
+msgid "Copy"
+msgstr "Kopioi"
+
+#: fileItem.js:585
+msgid "Rename…"
+msgstr "Nimeä uudelleen…"
+
+#: fileItem.js:586
+msgid "Move to Trash"
+msgstr "Siirrä roskakoriin"
+
+#: fileItem.js:596
+msgid "Empty Trash"
+msgstr "Tyhjennä roskakori"
+
+#: fileItem.js:602
+msgid "Properties"
+msgstr "Ominaisuudet"
+
+#: fileItem.js:604
+msgid "Show in Files"
+msgstr "Näytä tiedostonhallinnassa"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Kuvakekoko"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Aseta työpöytäkuvakkeiden koko."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Näytä kotikansio"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Näytä kotikansio työpöydällä."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Näytä roskakorin kuvake"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Näytä roskakorin kuvake työpöydällä."
+
+#~ msgid "Huge"
+#~ msgstr "Valtava"
diff --git a/extensions/desktop-icons/po/fr.po b/extensions/desktop-icons/po/fr.po
new file mode 100644
index 0000000..13e8f3a
--- /dev/null
+++ b/extensions/desktop-icons/po/fr.po
@@ -0,0 +1,164 @@
+# French translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# ghentdebian <ghent debian gmail com>, 2018.
+# Charles Monzat <charles monzat numericable fr>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2018-12-14 09:12+0000\n"
+"PO-Revision-Date: 2018-12-16 17:47+0100\n"
+"Last-Translator: Charles Monzat <charles monzat numericable fr>\n"
+"Language-Team: GNOME French Team <gnomefr traduc org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1)\n"
+"X-Generator: Gtranslator 3.30.0\n"
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Taille des icônes du bureau"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Petite"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Normale"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Grande"
+
+#: prefs.js:102
+msgid "Huge"
+msgstr "Immense"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Montrer le dossier personnel sur le bureau"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Montrer la corbeille sur le bureau"
+
+#: desktopGrid.js:182 desktopGrid.js:301
+msgid "New Folder"
+msgstr "Nouveau dossier"
+
+#: desktopGrid.js:303
+msgid "Paste"
+msgstr "Coller"
+
+#: desktopGrid.js:304
+msgid "Undo"
+msgstr "Annuler"
+
+#: desktopGrid.js:305
+msgid "Redo"
+msgstr "Refaire"
+
+#: desktopGrid.js:307
+msgid "Open Desktop in Files"
+msgstr "Ouvrir le bureau dans Fichiers"
+
+#: desktopGrid.js:308
+msgid "Open Terminal"
+msgstr "Ouvrir un terminal"
+
+#: desktopGrid.js:310
+msgid "Change Background…"
+msgstr "Changer l’arrière-plan…"
+
+#: desktopGrid.js:311
+msgid "Display Settings"
+msgstr "Configuration d’affichage"
+
+#: desktopGrid.js:312
+msgid "Settings"
+msgstr "Paramètres"
+
+#: desktopGrid.js:568
+msgid "Enter file name…"
+msgstr "Saisir un nom de fichier…"
+
+#: desktopGrid.js:572
+msgid "OK"
+msgstr "Valider"
+
+#: desktopGrid.js:578
+msgid "Cancel"
+msgstr "Annuler"
+
+#: fileItem.js:485
+msgid "Don’t Allow Launching"
+msgstr "Ne pas autoriser le lancement"
+
+#: fileItem.js:487
+msgid "Allow Launching"
+msgstr "Autoriser le lancement"
+
+#: fileItem.js:550
+msgid "Open"
+msgstr "Ouvrir"
+
+#: fileItem.js:553
+msgid "Cut"
+msgstr "Couper"
+
+#: fileItem.js:554
+msgid "Copy"
+msgstr "Copier"
+
+#: fileItem.js:556
+msgid "Rename"
+msgstr "Renommer"
+
+#: fileItem.js:557
+msgid "Move to Trash"
+msgstr "Mettre à la corbeille"
+
+#: fileItem.js:567
+msgid "Empty Trash"
+msgstr "Vider la corbeille"
+
+#: fileItem.js:573
+msgid "Properties"
+msgstr "Propriétés"
+
+#: fileItem.js:575
+msgid "Show in Files"
+msgstr "Montrer dans Fichiers"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Icon size"
+msgstr "Taille d’icônes"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:13
+msgid "Set the size for the desktop icons."
+msgstr "Définir la taille des icônes du bureau."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show personal folder"
+msgstr "Montrer le dossier personnel"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:18
+msgid "Show the personal folder in the desktop."
+msgstr "Montrer le dossier personnel sur le bureau."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show trash icon"
+msgstr "Montrer l’icône de la corbeille"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:23
+msgid "Show the trash icon in the desktop."
+msgstr "Montrer la corbeille sur le bureau."
+
+#~ msgid "Ok"
+#~ msgstr "Valider"
diff --git a/extensions/desktop-icons/po/fur.po b/extensions/desktop-icons/po/fur.po
new file mode 100644
index 0000000..3ab6129
--- /dev/null
+++ b/extensions/desktop-icons/po/fur.po
@@ -0,0 +1,187 @@
+# Friulian translation for desktop-icons.
+# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Fabio Tomat <f t public gmail com>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-03-01 12:11+0000\n"
+"PO-Revision-Date: 2019-03-05 22:20+0100\n"
+"Last-Translator: Fabio Tomat <f t public gmail com>\n"
+"Language-Team: Friulian <fur li org>\n"
+"Language: fur\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.2.1\n"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Gnûf non de cartele"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Cree"
+
+#: createFolderDialog.js:74 desktopGrid.js:586
+msgid "Cancel"
+msgstr "Anule"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "I nons des cartelis no puedin contignî il caratar “/”"
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Une cartele no pues jessi clamade “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Une cartele no pues jessi clamade “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Lis cartelis cul “.” al inizi dal lôr non a son platadis."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Un file o une cartele cul stes non e esist za."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Dimension pes iconis dal scritori"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Piçule"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Standard"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Largje"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Mostre la cartele personâl intal scritori"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Mostre la icone de scovacere intal scritori"
+
+#: desktopGrid.js:320
+msgid "New Folder"
+msgstr "Gnove cartele"
+
+#: desktopGrid.js:322
+msgid "Paste"
+msgstr "Tache"
+
+#: desktopGrid.js:323
+msgid "Undo"
+msgstr "Anule"
+
+#: desktopGrid.js:324
+msgid "Redo"
+msgstr "Torne fâ"
+
+#: desktopGrid.js:326
+msgid "Show Desktop in Files"
+msgstr "Mostre Scritori in File"
+
+#: desktopGrid.js:327 fileItem.js:606
+msgid "Open in Terminal"
+msgstr "Vierç in Terminâl"
+
+#: desktopGrid.js:329
+msgid "Change Background…"
+msgstr "Cambie sfont…"
+
+#: desktopGrid.js:331
+msgid "Display Settings"
+msgstr "Impostazions visôr"
+
+#: desktopGrid.js:332
+msgid "Settings"
+msgstr "Impostazions"
+
+#: desktopGrid.js:576
+msgid "Enter file name…"
+msgstr "Inserìs il non dal file…"
+
+#: desktopGrid.js:580
+msgid "OK"
+msgstr "Va ben"
+
+#: fileItem.js:490
+msgid "Don’t Allow Launching"
+msgstr "No sta permeti inviament"
+
+#: fileItem.js:492
+msgid "Allow Launching"
+msgstr "Permet inviament"
+
+#: fileItem.js:574
+msgid "Open"
+msgstr "Vierç"
+
+#: fileItem.js:578
+msgid "Open With Other Application"
+msgstr "Vierç cuntune altre aplicazion"
+
+#: fileItem.js:582
+msgid "Cut"
+msgstr "Taie"
+
+#: fileItem.js:583
+msgid "Copy"
+msgstr "Copie"
+
+#: fileItem.js:585
+msgid "Rename…"
+msgstr "Cambie non..."
+
+#: fileItem.js:586
+msgid "Move to Trash"
+msgstr "Sposte te scovacere"
+
+#: fileItem.js:596
+msgid "Empty Trash"
+msgstr "Disvuede scovacere"
+
+#: fileItem.js:602
+msgid "Properties"
+msgstr "Propietâts"
+
+#: fileItem.js:604
+msgid "Show in Files"
+msgstr "Mostre in File"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Dimension icone"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Stabilìs la dimension pes iconis dal scritori."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Mostre cartele personâl"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Mostre la cartele personâl intal scritori."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Mostre la icone de scovacere"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Mostre la icone de scovacere intal scritori."
diff --git a/extensions/desktop-icons/po/hr.po b/extensions/desktop-icons/po/hr.po
new file mode 100644
index 0000000..0d26696
--- /dev/null
+++ b/extensions/desktop-icons/po/hr.po
@@ -0,0 +1,186 @@
+# Croatian translation for gnome-shell-extension-desktop-icons
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the gnome-shell-extension-desktop-icons package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnome-shell-extension-desktop-icons\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2019-03-05 11:27+0000\n"
+"PO-Revision-Date: 2019-03-23 16:03+0000\n"
+"Last-Translator: gogo <trebelnik2 gmail com>\n"
+"Language-Team: Croatian <hr li org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2019-03-27 09:36+0000\n"
+"X-Generator: Launchpad (build 18910)\n"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Novi naziv mape"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Stvori"
+
+#: createFolderDialog.js:74 desktopGrid.js:586
+msgid "Cancel"
+msgstr "Odustani"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Naziv mape ne može sadržavati “/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Mapa se ne može nazvati “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Mapa se ne može nazvati “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Mape sa “.” na početku njihovih naziva su skrivene."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Već postoji datoteka ili mapa s tim nazivom."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Veličina ikona radne površine"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Male"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Standardne"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Velike"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Prikaži osobnu mapu na radnoj površini"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Prikaži mapu smeća na radnoj površini"
+
+#: desktopGrid.js:320
+msgid "New Folder"
+msgstr "Nova mapa"
+
+#: desktopGrid.js:322
+msgid "Paste"
+msgstr "Zalijepi"
+
+#: desktopGrid.js:323
+msgid "Undo"
+msgstr "Poništi"
+
+#: desktopGrid.js:324
+msgid "Redo"
+msgstr "Ponovi"
+
+#: desktopGrid.js:326
+msgid "Show Desktop in Files"
+msgstr "Prikaži radnu površinu u Datotekama"
+
+#: desktopGrid.js:327 fileItem.js:606
+msgid "Open in Terminal"
+msgstr "Otvori u Terminalu"
+
+#: desktopGrid.js:329
+msgid "Change Background…"
+msgstr "Promijeni pozadinu…"
+
+#: desktopGrid.js:331
+msgid "Display Settings"
+msgstr "Postavke zaslona"
+
+#: desktopGrid.js:332
+msgid "Settings"
+msgstr "Postavke"
+
+#: desktopGrid.js:576
+msgid "Enter file name…"
+msgstr "Upiši naziv datoteke…"
+
+#: desktopGrid.js:580
+msgid "OK"
+msgstr "U redu"
+
+#: fileItem.js:490
+msgid "Don’t Allow Launching"
+msgstr "Ne dopuštaj pokretanje"
+
+#: fileItem.js:492
+msgid "Allow Launching"
+msgstr "Dopusti pokretanje"
+
+#: fileItem.js:574
+msgid "Open"
+msgstr "Otvori"
+
+#: fileItem.js:578
+msgid "Open With Other Application"
+msgstr "Otvori s drugom aplikacijom"
+
+#: fileItem.js:582
+msgid "Cut"
+msgstr "Izreži"
+
+#: fileItem.js:583
+msgid "Copy"
+msgstr "Kopiraj"
+
+#: fileItem.js:585
+msgid "Rename…"
+msgstr "Preimenuj…"
+
+#: fileItem.js:586
+msgid "Move to Trash"
+msgstr "Premjesti u smeće"
+
+#: fileItem.js:596
+msgid "Empty Trash"
+msgstr "Isprazni smeće"
+
+#: fileItem.js:602
+msgid "Properties"
+msgstr "Svojstva"
+
+#: fileItem.js:604
+msgid "Show in Files"
+msgstr "Prikaži u Datotekama"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Veličina ikona"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Postavi veličinu ikona radne površine."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Prikaži osobnu mapu"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Prikaži osobnu mapu na radnoj površini."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Prikaži ikonu smeća"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Prikaži ikonu smeća na radnoj površini."
diff --git a/extensions/desktop-icons/po/hu.po b/extensions/desktop-icons/po/hu.po
new file mode 100644
index 0000000..ec294f2
--- /dev/null
+++ b/extensions/desktop-icons/po/hu.po
@@ -0,0 +1,189 @@
+# Hungarian translation for desktop-icons.
+# Copyright (C) 2019 The Free Software Foundation, inc.
+# This file is distributed under the same license as the desktop-icons package.
+#
+# Balázs Úr <ur.balazs at fsf dot hu>, 2019.
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-i";
+"cons/issues\n"
+"POT-Creation-Date: 2019-03-01 12:11+0000\n"
+"PO-Revision-Date: 2019-03-07 23:45+0100\n"
+"Last-Translator: Balázs Úr <ur.balazs at fsf dot hu>\n"
+"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
+"Language: hu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 2.0\n"
+
+#: createFolderDialog.js:48
+#| msgid "New Folder"
+msgid "New folder name"
+msgstr "Új mappa neve"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Létrehozás"
+
+#: createFolderDialog.js:74 desktopGrid.js:586
+msgid "Cancel"
+msgstr "Mégse"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "A mappanevek nem tartalmazhatnak „/” karaktert."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Egy mappának nem lehet „.” a neve."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Egy mappának nem lehet „..” a neve."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "A „.” karakterrel kezdődő nevű mappák rejtettek."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Már van egy fájl vagy mappa azzal a névvel."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Az asztali ikonok mérete"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Kicsi"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Szabványos"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Nagy"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "A személyes mappa megjelenítése az asztalon"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "A kuka ikon megjelenítése az asztalon"
+
+#: desktopGrid.js:320
+msgid "New Folder"
+msgstr "Új mappa"
+
+#: desktopGrid.js:322
+msgid "Paste"
+msgstr "Beillesztés"
+
+#: desktopGrid.js:323
+msgid "Undo"
+msgstr "Visszavonás"
+
+#: desktopGrid.js:324
+msgid "Redo"
+msgstr "Újra"
+
+#: desktopGrid.js:326
+msgid "Show Desktop in Files"
+msgstr "Asztal megjelenítése a Fájlokban"
+
+#: desktopGrid.js:327 fileItem.js:606
+msgid "Open in Terminal"
+msgstr "Megnyitás terminálban"
+
+#: desktopGrid.js:329
+msgid "Change Background…"
+msgstr "Háttér megváltoztatása…"
+
+#: desktopGrid.js:331
+msgid "Display Settings"
+msgstr "Megjelenítés beállításai"
+
+#: desktopGrid.js:332
+msgid "Settings"
+msgstr "Beállítások"
+
+#: desktopGrid.js:576
+msgid "Enter file name…"
+msgstr "Adjon meg egy fájlnevet…"
+
+#: desktopGrid.js:580
+msgid "OK"
+msgstr "Rendben"
+
+#: fileItem.js:490
+msgid "Don’t Allow Launching"
+msgstr "Ne engedélyezzen indítást"
+
+#: fileItem.js:492
+msgid "Allow Launching"
+msgstr "Indítás engedélyezése"
+
+#: fileItem.js:574
+msgid "Open"
+msgstr "Megnyitás"
+
+#: fileItem.js:578
+msgid "Open With Other Application"
+msgstr "Megnyitás egyéb alkalmazással"
+
+#: fileItem.js:582
+msgid "Cut"
+msgstr "Kivágás"
+
+#: fileItem.js:583
+msgid "Copy"
+msgstr "Másolás"
+
+#: fileItem.js:585
+msgid "Rename…"
+msgstr "Átnevezés…"
+
+#: fileItem.js:586
+msgid "Move to Trash"
+msgstr "Áthelyezés a Kukába"
+
+#: fileItem.js:596
+msgid "Empty Trash"
+msgstr "Kuka ürítése"
+
+#: fileItem.js:602
+msgid "Properties"
+msgstr "Tulajdonságok"
+
+#: fileItem.js:604
+msgid "Show in Files"
+msgstr "Megjelenítés a Fájlokban"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Ikonméret"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Az asztali ikonok méretének beállítása."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Személyes mappa megjelenítése"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "A személyes mappa megjelenítése az asztalon."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Kuka ikon megjelenítése"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "A kuka ikon megjelenítése az asztalon."
diff --git a/extensions/desktop-icons/po/id.po b/extensions/desktop-icons/po/id.po
new file mode 100644
index 0000000..b809c3d
--- /dev/null
+++ b/extensions/desktop-icons/po/id.po
@@ -0,0 +1,190 @@
+# Indonesian translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Kukuh Syafaat <kukuhsyafaat gnome org>, 2018, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-03-01 12:11+0000\n"
+"PO-Revision-Date: 2019-03-02 19:13+0700\n"
+"Last-Translator: Kukuh Syafaat <kukuhsyafaat gnome org>\n"
+"Language-Team: Indonesian <gnome-l10n-id googlegroups com>\n"
+"Language: id\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.2.1\n"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Nama folder baru"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Buat"
+
+#: createFolderDialog.js:74 desktopGrid.js:586
+msgid "Cancel"
+msgstr "Batal"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Nama folder tak boleh memuat \"/\"."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Sebuah folder tak bisa dinamai \".\"."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Sebuah folder tak bisa dinamai \"..\"."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Folder dengan \".\" di awal nama mereka disembunyikan."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Folder dengan nama itu sudah ada."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Ukuran untuk ikon destop"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Kecil"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Standar"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Besar"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Tampilkan folder pribadi di destop"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Tampilkan ikon tong sampah di destop"
+
+#: desktopGrid.js:320
+msgid "New Folder"
+msgstr "Folder Baru"
+
+#: desktopGrid.js:322
+msgid "Paste"
+msgstr "Tempel"
+
+#: desktopGrid.js:323
+msgid "Undo"
+msgstr "Tak Jadi"
+
+#: desktopGrid.js:324
+msgid "Redo"
+msgstr "Jadi Lagi"
+
+#: desktopGrid.js:326
+msgid "Show Desktop in Files"
+msgstr "Tampilkan Destop pada Berkas"
+
+#: desktopGrid.js:327 fileItem.js:606
+msgid "Open in Terminal"
+msgstr "Buka dalam Terminal"
+
+#: desktopGrid.js:329
+msgid "Change Background…"
+msgstr "Ubah Latar Belakang…"
+
+#: desktopGrid.js:331
+msgid "Display Settings"
+msgstr "Pengaturan Tampilan"
+
+#: desktopGrid.js:332
+msgid "Settings"
+msgstr "Pengaturan"
+
+#: desktopGrid.js:576
+msgid "Enter file name…"
+msgstr "Masukkan nama berkas…"
+
+#: desktopGrid.js:580
+msgid "OK"
+msgstr "OK"
+
+#: fileItem.js:490
+msgid "Don’t Allow Launching"
+msgstr "Jangan Izinkan Peluncuran"
+
+#: fileItem.js:492
+msgid "Allow Launching"
+msgstr "Izinkan Peluncuran"
+
+#: fileItem.js:574
+msgid "Open"
+msgstr "Buka"
+
+#: fileItem.js:578
+msgid "Open With Other Application"
+msgstr "Buka Dengan Aplikasi Lain"
+
+#: fileItem.js:582
+msgid "Cut"
+msgstr "Potong"
+
+#: fileItem.js:583
+msgid "Copy"
+msgstr "Salin"
+
+#: fileItem.js:585
+msgid "Rename…"
+msgstr "Ganti Nama…"
+
+#: fileItem.js:586
+msgid "Move to Trash"
+msgstr "Pindahkan ke Tong Sampah"
+
+#: fileItem.js:596
+msgid "Empty Trash"
+msgstr "Kosongkan Tong Sampah"
+
+#: fileItem.js:602
+msgid "Properties"
+msgstr "Properti"
+
+#: fileItem.js:604
+msgid "Show in Files"
+msgstr "Tampilkan pada Berkas"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Ukuran ikon"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Set ukuran untuk ikon destop."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Tampilkan folder pribadi"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Tampilkan folder pribadi di destop."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Tampilkan ikon tong sampah"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Tampilkan ikon tong sampah di destop."
+
+#~ msgid "Huge"
+#~ msgstr "Sangat besar"
diff --git a/extensions/desktop-icons/po/it.po b/extensions/desktop-icons/po/it.po
new file mode 100644
index 0000000..5001da4
--- /dev/null
+++ b/extensions/desktop-icons/po/it.po
@@ -0,0 +1,189 @@
+# Italian translation for desktop-icons.
+# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Massimo Branchini <max bra gtalk gmail com>, 2019.
+# Milo Casagrande <milo milo name>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-03-01 12:11+0000\n"
+"PO-Revision-Date: 2019-03-12 09:51+0100\n"
+"Last-Translator: Milo Casagrande <milo milo name>\n"
+"Language-Team: Italian <tp lists linux it>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.2.1\n"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Nuova cartella"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Crea"
+
+#: createFolderDialog.js:74 desktopGrid.js:586
+msgid "Cancel"
+msgstr "Annulla"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "I nomi di cartelle non possono contenere il carattere «/»"
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Una cartella non può essere chiamata «.»."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Una cartella non può essere chiamata «..»."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Cartelle il cui nome inizia con «.» sono nascoste."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Esiste già un file o una cartella con quel nome."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Dimensione delle icone della scrivania"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Piccola"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Normale"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Grande"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Mostra la cartella personale sulla scrivania"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Mostra il cestino sulla scrivania"
+
+#: desktopGrid.js:320
+msgid "New Folder"
+msgstr "Nuova cartella"
+
+#: desktopGrid.js:322
+msgid "Paste"
+msgstr "Incolla"
+
+#: desktopGrid.js:323
+msgid "Undo"
+msgstr "Annulla"
+
+#: desktopGrid.js:324
+msgid "Redo"
+msgstr "Ripeti"
+
+#: desktopGrid.js:326
+msgid "Show Desktop in Files"
+msgstr "Mostra la scrivania in File"
+
+#: desktopGrid.js:327 fileItem.js:606
+msgid "Open in Terminal"
+msgstr "Apri in Terminale"
+
+#: desktopGrid.js:329
+msgid "Change Background…"
+msgstr "Cambia lo sfondo…"
+
+#: desktopGrid.js:331
+msgid "Display Settings"
+msgstr "Impostazioni dello schermo"
+
+#: desktopGrid.js:332
+msgid "Settings"
+msgstr "Impostazioni"
+
+#: desktopGrid.js:576
+msgid "Enter file name…"
+msgstr "Indicare un nome per il file…"
+
+#: desktopGrid.js:580
+msgid "OK"
+msgstr "Ok"
+
+#: fileItem.js:490
+msgid "Don’t Allow Launching"
+msgstr "Non permettere l'esecuzione"
+
+#: fileItem.js:492
+msgid "Allow Launching"
+msgstr "Permetti l'esecuzione"
+
+#: fileItem.js:574
+msgid "Open"
+msgstr "Apri"
+
+#: fileItem.js:578
+msgid "Open With Other Application"
+msgstr "Apri con altra applicazione"
+
+#: fileItem.js:582
+msgid "Cut"
+msgstr "Taglia"
+
+#: fileItem.js:583
+msgid "Copy"
+msgstr "Copia"
+
+#: fileItem.js:585
+msgid "Rename…"
+msgstr "Rinomina…"
+
+#: fileItem.js:586
+msgid "Move to Trash"
+msgstr "Sposta nel cestino"
+
+#: fileItem.js:596
+msgid "Empty Trash"
+msgstr "Svuota il cestino"
+
+#: fileItem.js:602
+msgid "Properties"
+msgstr "Proprietà"
+
+#: fileItem.js:604
+msgid "Show in Files"
+msgstr "Mostra in File"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Dimensione dell'icona"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Imposta la grandezza delle icone della scrivania."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Mostra la cartella personale"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Mostra la cartella personale sulla scrivania."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Mostra il cestino"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Mostra il cestino sulla scrivania."
diff --git a/extensions/desktop-icons/po/ja.po b/extensions/desktop-icons/po/ja.po
new file mode 100644
index 0000000..3b103e0
--- /dev/null
+++ b/extensions/desktop-icons/po/ja.po
@@ -0,0 +1,187 @@
+# Japanese translation for desktop-icons.
+# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# sicklylife <translation sicklylife jp>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-03-14 12:56+0000\n"
+"PO-Revision-Date: 2019-03-15 06:30+0000\n"
+"Last-Translator: sicklylife <translation sicklylife jp>\n"
+"Language-Team: Japanese <gnome-translation gnome gr jp>\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "新しいフォルダー名"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "作成"
+
+#: createFolderDialog.js:74 desktopGrid.js:586
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "“/”は、フォルダー名に含められません。"
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "“.”という名前をフォルダーに付けられません。"
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "“..”という名前をフォルダーに付けられません。"
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "名前が“.”で始まるフォルダーは、隠しフォルダーになります。"
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "その名前のファイルかフォルダーがすでに存在します。"
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "デスクトップアイコンのサイズ"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "小さい"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "標準"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "大きい"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "デスクトップにホームフォルダーを表示する"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "デスクトップにゴミ箱を表示する"
+
+#: desktopGrid.js:320
+msgid "New Folder"
+msgstr "新しいフォルダー"
+
+#: desktopGrid.js:322
+msgid "Paste"
+msgstr "貼り付け"
+
+#: desktopGrid.js:323
+msgid "Undo"
+msgstr "元に戻す"
+
+#: desktopGrid.js:324
+msgid "Redo"
+msgstr "やり直す"
+
+#: desktopGrid.js:326
+msgid "Show Desktop in Files"
+msgstr "“ファイル”でデスクトップを表示する"
+
+#: desktopGrid.js:327 fileItem.js:606
+msgid "Open in Terminal"
+msgstr "端末を開く"
+
+#: desktopGrid.js:329
+msgid "Change Background…"
+msgstr "背景を変更する…"
+
+#: desktopGrid.js:331
+msgid "Display Settings"
+msgstr "ディスプレイの設定"
+
+#: desktopGrid.js:332
+msgid "Settings"
+msgstr "設定"
+
+#: desktopGrid.js:576
+msgid "Enter file name…"
+msgstr "ファイル名を入力してください…"
+
+#: desktopGrid.js:580
+msgid "OK"
+msgstr "OK"
+
+#: fileItem.js:490
+msgid "Don’t Allow Launching"
+msgstr "起動を許可しない"
+
+#: fileItem.js:492
+msgid "Allow Launching"
+msgstr "起動を許可する"
+
+#: fileItem.js:574
+msgid "Open"
+msgstr "開く"
+
+#: fileItem.js:578
+msgid "Open With Other Application"
+msgstr "別のアプリケーションで開く"
+
+#: fileItem.js:582
+msgid "Cut"
+msgstr "切り取り"
+
+#: fileItem.js:583
+msgid "Copy"
+msgstr "コピー"
+
+#: fileItem.js:585
+msgid "Rename…"
+msgstr "名前の変更…"
+
+#: fileItem.js:586
+msgid "Move to Trash"
+msgstr "ゴミ箱へ移動する"
+
+#: fileItem.js:596
+msgid "Empty Trash"
+msgstr "ゴミ箱を空にする"
+
+#: fileItem.js:602
+msgid "Properties"
+msgstr "プロパティ"
+
+#: fileItem.js:604
+msgid "Show in Files"
+msgstr "“ファイル”で表示する"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "アイコンサイズ"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "デスクトップのアイコンサイズを設定します。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "ホームフォルダーを表示する"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "デスクトップにホームフォルダーを表示します。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "ゴミ箱アイコンを表示する"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "デスクトップにゴミ箱のアイコンを表示します。"
diff --git a/extensions/desktop-icons/po/meson.build b/extensions/desktop-icons/po/meson.build
new file mode 100644
index 0000000..b2e9e42
--- /dev/null
+++ b/extensions/desktop-icons/po/meson.build
@@ -0,0 +1 @@
+i18n.gettext (meson.project_name (), preset: 'glib')
diff --git a/extensions/desktop-icons/po/nl.po b/extensions/desktop-icons/po/nl.po
new file mode 100644
index 0000000..b2f7dab
--- /dev/null
+++ b/extensions/desktop-icons/po/nl.po
@@ -0,0 +1,188 @@
+# Dutch translation for desktop-icons.
+# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Nathan Follens <nthn unseen is>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-03-01 12:11+0000\n"
+"PO-Revision-Date: 2019-03-04 19:46+0100\n"
+"Last-Translator: Nathan Follens <nthn unseen is>\n"
+"Language-Team: Dutch <gnome-nl-list gnome org>\n"
+"Language: nl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.2.1\n"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Nieuwe mapnaam"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Aanmaken"
+
+#: createFolderDialog.js:74 desktopGrid.js:586
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Mapnamen kunnen geen ‘/’ bevatten."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Een map kan niet ‘.’ worden genoemd."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Een map kan niet ‘..’ worden genoemd."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Mappen waarvan de naam begint met ‘.’ zijn verborgen."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Er bestaat al een bestand of map met die naam."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Grootte van bureaubladpictogrammen"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Klein"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Standaard"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Groot"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Toon de persoonlijke map op het bureaublad"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Toon het prullenbakpictogram op het bureaublad"
+
+#: desktopGrid.js:320
+msgid "New Folder"
+msgstr "Nieuwe map"
+
+#: desktopGrid.js:322
+msgid "Paste"
+msgstr "Plakken"
+
+#: desktopGrid.js:323
+msgid "Undo"
+msgstr "Ongedaan maken"
+
+#: desktopGrid.js:324
+msgid "Redo"
+msgstr "Opnieuw"
+
+#: desktopGrid.js:326
+msgid "Show Desktop in Files"
+msgstr "Bureaublad tonen in Bestanden"
+
+#: desktopGrid.js:327 fileItem.js:606
+msgid "Open in Terminal"
+msgstr "Openen in terminalvenster"
+
+#: desktopGrid.js:329
+msgid "Change Background…"
+msgstr "Achtergrond aanpassen…"
+
+#: desktopGrid.js:331
+msgid "Display Settings"
+msgstr "Scherminstellingen"
+
+#: desktopGrid.js:332
+msgid "Settings"
+msgstr "Instellingen"
+
+#: desktopGrid.js:576
+msgid "Enter file name…"
+msgstr "Voer bestandsnaam in…"
+
+#: desktopGrid.js:580
+msgid "OK"
+msgstr "Oké"
+
+#: fileItem.js:490
+msgid "Don’t Allow Launching"
+msgstr "Toepassingen starten niet toestaan"
+
+#: fileItem.js:492
+msgid "Allow Launching"
+msgstr "Toepassingen starten toestaan"
+
+#: fileItem.js:574
+msgid "Open"
+msgstr "Openen"
+
+#: fileItem.js:578
+msgid "Open With Other Application"
+msgstr "Met andere toepassing openen"
+
+#: fileItem.js:582
+msgid "Cut"
+msgstr "Knippen"
+
+#: fileItem.js:583
+msgid "Copy"
+msgstr "Kopiëren"
+
+#: fileItem.js:585
+msgid "Rename…"
+msgstr "Hernoemen…"
+
+#: fileItem.js:586
+msgid "Move to Trash"
+msgstr "Verplaatsen naar prullenbak"
+
+#: fileItem.js:596
+msgid "Empty Trash"
+msgstr "Prullenbak legen"
+
+#: fileItem.js:602
+msgid "Properties"
+msgstr "Eigenschappen"
+
+#: fileItem.js:604
+msgid "Show in Files"
+msgstr "Tonen in Bestanden"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Pictogramgrootte"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Stel de grootte van de bureaubladpictogrammen in."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Persoonlijke map tonen"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Toon de persoonlijke map op het bureaublad."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Prullenbakpictogram tonen"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Toon het prullenbakpictogram op het bureaublad."
diff --git a/extensions/desktop-icons/po/pl.po b/extensions/desktop-icons/po/pl.po
new file mode 100644
index 0000000..f57b3be
--- /dev/null
+++ b/extensions/desktop-icons/po/pl.po
@@ -0,0 +1,193 @@
+# Polish translation for desktop-icons.
+# Copyright © 2018-2019 the desktop-icons authors.
+# This file is distributed under the same license as the desktop-icons package.
+# Piotr Drąg <piotrdrag gmail com>, 2018-2019.
+# Aviary.pl <community-poland mozilla org>, 2018-2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-04-29 14:11+0000\n"
+"PO-Revision-Date: 2019-05-01 13:03+0200\n"
+"Last-Translator: Piotr Drąg <piotrdrag gmail com>\n"
+"Language-Team: Polish <community-poland mozilla org>\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Nazwa nowego katalogu"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Utwórz"
+
+#: createFolderDialog.js:74 desktopGrid.js:592
+msgid "Cancel"
+msgstr "Anuluj"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Nazwy katalogów nie mogą zawierać znaku „/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Katalog nie może mieć nazwy „.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Katalog nie może mieć nazwy „..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Katalogi z „.” na początku nazwy są ukryte."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Plik lub katalog o tej nazwie już istnieje."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Rozmiar ikon na pulpicie"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Mały"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Standardowy"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Duży"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Katalog domowy na pulpicie"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Kosz na pulpicie"
+
+#: desktopGrid.js:323
+msgid "New Folder"
+msgstr "Nowy katalog"
+
+#: desktopGrid.js:325
+msgid "Paste"
+msgstr "Wklej"
+
+#: desktopGrid.js:326
+msgid "Undo"
+msgstr "Cofnij"
+
+#: desktopGrid.js:327
+msgid "Redo"
+msgstr "Ponów"
+
+#: desktopGrid.js:329
+msgid "Show Desktop in Files"
+msgstr "Wyświetl pulpit w menedżerze plików"
+
+#: desktopGrid.js:330 fileItem.js:610
+msgid "Open in Terminal"
+msgstr "Otwórz w terminalu"
+
+#: desktopGrid.js:332
+msgid "Change Background…"
+msgstr "Zmień tło…"
+
+#: desktopGrid.js:334
+msgid "Display Settings"
+msgstr "Ustawienia ekranu"
+
+#: desktopGrid.js:335
+msgid "Settings"
+msgstr "Ustawienia"
+
+#: desktopGrid.js:582
+msgid "Enter file name…"
+msgstr "Nazwa pliku…"
+
+#: desktopGrid.js:586
+msgid "OK"
+msgstr "OK"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "Nie odnaleziono polecenia"
+
+#: fileItem.js:494
+msgid "Don’t Allow Launching"
+msgstr "Nie zezwalaj na uruchamianie"
+
+#: fileItem.js:496
+msgid "Allow Launching"
+msgstr "Zezwól na uruchamianie"
+
+#: fileItem.js:578
+msgid "Open"
+msgstr "Otwórz"
+
+#: fileItem.js:582
+msgid "Open With Other Application"
+msgstr "Otwórz za pomocą innego programu"
+
+#: fileItem.js:586
+msgid "Cut"
+msgstr "Wytnij"
+
+#: fileItem.js:587
+msgid "Copy"
+msgstr "Skopiuj"
+
+#: fileItem.js:589
+msgid "Rename…"
+msgstr "Zmień nazwę…"
+
+#: fileItem.js:590
+msgid "Move to Trash"
+msgstr "Przenieś do kosza"
+
+#: fileItem.js:600
+msgid "Empty Trash"
+msgstr "Opróżnij kosz"
+
+#: fileItem.js:606
+msgid "Properties"
+msgstr "Właściwości"
+
+#: fileItem.js:608
+msgid "Show in Files"
+msgstr "Wyświetl w menedżerze plików"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Rozmiar ikon"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Ustawia rozmiar ikon na pulpicie."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Katalog domowy"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Wyświetla katalog domowy na pulpicie."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Kosz"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Wyświetla kosz na pulpicie."
diff --git a/extensions/desktop-icons/po/pt_BR.po b/extensions/desktop-icons/po/pt_BR.po
new file mode 100644
index 0000000..8d61c72
--- /dev/null
+++ b/extensions/desktop-icons/po/pt_BR.po
@@ -0,0 +1,199 @@
+# Brazilian Portuguese translation for desktop-icons.
+# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Enrico Nicoletto <liverig gmail com>, 2018.
+# Rafael Fontenelle <rafaelff gnome org>, 2018-2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-04-29 14:11+0000\n"
+"PO-Revision-Date: 2019-04-29 17:35-0300\n"
+"Last-Translator: Rafael Fontenelle <rafaelff gnome org>\n"
+"Language-Team: Brazilian Portuguese <gnome-pt_br-list gnome org>\n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1)\n"
+"X-Generator: Gtranslator 3.32.0\n"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Nome da nova pasta"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Criar"
+
+#: createFolderDialog.js:74 desktopGrid.js:592
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Nomes de pastas não podem conter “/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Uma pasta não pode ser chamada “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Uma pasta não pode ser chamada “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Pastas com “.” no começo de seus nomes são ocultas."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Já existe um arquivo ou uma pasta com esse nome."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Tamanho para os ícones da área de trabalho"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Pequeno"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Padrão"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Grande"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Mostrar a pasta pessoal na área de trabalho"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Mostrar o ícone da lixeira na área de trabalho"
+
+#: desktopGrid.js:323
+msgid "New Folder"
+msgstr "Nova pasta"
+
+#: desktopGrid.js:325
+msgid "Paste"
+msgstr "Colar"
+
+#: desktopGrid.js:326
+msgid "Undo"
+msgstr "Desfazer"
+
+#: desktopGrid.js:327
+msgid "Redo"
+msgstr "Refazer"
+
+#: desktopGrid.js:329
+msgid "Show Desktop in Files"
+msgstr "Mostrar a área de trabalho no Arquivos"
+
+#: desktopGrid.js:330 fileItem.js:610
+msgid "Open in Terminal"
+msgstr "Abrir no terminal"
+
+#: desktopGrid.js:332
+msgid "Change Background…"
+msgstr "Alterar plano de fundo…"
+
+#: desktopGrid.js:334
+msgid "Display Settings"
+msgstr "Configurações de exibição"
+
+#: desktopGrid.js:335
+msgid "Settings"
+msgstr "Configurações"
+
+#: desktopGrid.js:582
+msgid "Enter file name…"
+msgstr "Insira um nome de arquivo…"
+
+#: desktopGrid.js:586
+msgid "OK"
+msgstr "OK"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "Comando não encontrado"
+
+#: fileItem.js:494
+msgid "Don’t Allow Launching"
+msgstr "Não permitir iniciar"
+
+#: fileItem.js:496
+msgid "Allow Launching"
+msgstr "Permitir iniciar"
+
+#: fileItem.js:578
+msgid "Open"
+msgstr "Abrir"
+
+#: fileItem.js:582
+msgid "Open With Other Application"
+msgstr "Abrir com outro aplicativo"
+
+#: fileItem.js:586
+msgid "Cut"
+msgstr "Recortar"
+
+#: fileItem.js:587
+msgid "Copy"
+msgstr "Copiar"
+
+#: fileItem.js:589
+msgid "Rename…"
+msgstr "Renomear…"
+
+#: fileItem.js:590
+msgid "Move to Trash"
+msgstr "Mover para a lixeira"
+
+#: fileItem.js:600
+msgid "Empty Trash"
+msgstr "Esvaziar lixeira"
+
+#: fileItem.js:606
+msgid "Properties"
+msgstr "Propriedades"
+
+#: fileItem.js:608
+msgid "Show in Files"
+msgstr "Mostrar no Arquivos"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Tamanho do ícone"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Define o tamanho para os ícones da área de trabalho."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Mostrar pasta pessoal"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Mostra a pasta pessoal na área de trabalho."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Mostrar ícone da lixeira"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Mostra o ícone da lixeira na área de trabalho."
+
+#~ msgid "Huge"
+#~ msgstr "Enorme"
+
+#~ msgid "Ok"
+#~ msgstr "Ok"
diff --git a/extensions/desktop-icons/po/ru.po b/extensions/desktop-icons/po/ru.po
new file mode 100644
index 0000000..4094f16
--- /dev/null
+++ b/extensions/desktop-icons/po/ru.po
@@ -0,0 +1,153 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Eaglers <eaglersdeveloper gmail com>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2018-11-22 08:42+0000\n"
+"PO-Revision-Date: 2018-11-22 22:02+0300\n"
+"Last-Translator: Stas Solovey <whats_up tut by>\n"
+"Language-Team: Russian <gnome-cyr gnome org>\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Poedit 2.2\n"
+
+#: prefs.js:89
+msgid "Size for the desktop icons"
+msgstr "Размер значков"
+
+#: prefs.js:89
+msgid "Small"
+msgstr "Маленький"
+
+#: prefs.js:89
+msgid "Standard"
+msgstr "Стандартный"
+
+#: prefs.js:89
+msgid "Large"
+msgstr "Большой"
+
+#: prefs.js:89
+msgid "Huge"
+msgstr "Огромный"
+
+#: prefs.js:90
+msgid "Show the personal folder in the desktop"
+msgstr "Показывать домашнюю папку на рабочем столе"
+
+#: prefs.js:91
+msgid "Show the trash icon in the desktop"
+msgstr "Показывать «Корзину» на рабочем столе"
+
+#: desktopGrid.js:185 desktopGrid.js:304
+msgid "New Folder"
+msgstr "Создать папку"
+
+#: desktopGrid.js:306
+msgid "Paste"
+msgstr "Вставить"
+
+#: desktopGrid.js:307
+msgid "Undo"
+msgstr "Отменить"
+
+#: desktopGrid.js:308
+msgid "Redo"
+msgstr "Повторить"
+
+#: desktopGrid.js:310
+msgid "Open Desktop in Files"
+msgstr "Открыть «Рабочий стол» в «Файлах»"
+
+#: desktopGrid.js:311
+msgid "Open Terminal"
+msgstr "Открыть терминал"
+
+#: desktopGrid.js:313
+msgid "Change Background…"
+msgstr "Изменить фон…"
+
+#: desktopGrid.js:314
+msgid "Display Settings"
+msgstr "Настройки дисплея"
+
+#: desktopGrid.js:315
+msgid "Settings"
+msgstr "Параметры"
+
+#: desktopGrid.js:569
+msgid "Enter file name…"
+msgstr "Ввести имя файла…"
+
+#: desktopGrid.js:573
+msgid "Ok"
+msgstr "ОК"
+
+#: desktopGrid.js:579
+msgid "Cancel"
+msgstr "Отмена"
+
+#: fileItem.js:390
+msgid "Open"
+msgstr "Открыть"
+
+#: fileItem.js:393
+msgid "Cut"
+msgstr "Вырезать"
+
+#: fileItem.js:394
+msgid "Copy"
+msgstr "Вставить"
+
+#: fileItem.js:395
+msgid "Rename"
+msgstr "Переименовать"
+
+#: fileItem.js:396
+msgid "Move to Trash"
+msgstr "Переместить в корзину"
+
+#: fileItem.js:400
+msgid "Empty trash"
+msgstr "Очистить корзину"
+
+#: fileItem.js:406
+msgid "Properties"
+msgstr "Свойства"
+
+#: fileItem.js:408
+msgid "Show in Files"
+msgstr "Показать в «Файлах»"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Icon size"
+msgstr "Размер значков"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:13
+msgid "Set the size for the desktop icons."
+msgstr "Установить размер значков на рабочем столе."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show personal folder"
+msgstr "Показывать домашнюю папку"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:18
+msgid "Show the personal folder in the desktop."
+msgstr "Показывать значок домашней папки на рабочем столе."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show trash icon"
+msgstr "Показывать значок корзины"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:23
+msgid "Show the trash icon in the desktop."
+msgstr "Показывать значок корзины на рабочем столе."
diff --git a/extensions/desktop-icons/po/sv.po b/extensions/desktop-icons/po/sv.po
new file mode 100644
index 0000000..928cbe9
--- /dev/null
+++ b/extensions/desktop-icons/po/sv.po
@@ -0,0 +1,197 @@
+# Swedish translation for desktop-icons.
+# Copyright © 2018, 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Anders Jonsson <anders jonsson norsjovallen se>, 2018, 2019.
+# Josef Andersson <l10nl18nsweja gmail com>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-03-01 12:11+0000\n"
+"PO-Revision-Date: 2019-03-11 21:50+0100\n"
+"Last-Translator: Anders Jonsson <anders jonsson norsjovallen se>\n"
+"Language-Team: Swedish <tp-sv listor tp-sv se>\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.2.1\n"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Nytt mappnamn"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Skapa"
+
+#: createFolderDialog.js:74 desktopGrid.js:586
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Mappnamn kan inte innehålla ”/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "En mapp kan inte kallas ”.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "En mapp kan inte kallas ”..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Mappar med ”.” i början på sitt namn är dolda."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Det finns redan en fil eller mapp med det namnet"
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Storlek för skrivbordsikonerna"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Liten"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Standard"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Stor"
+
+# TODO: *ON* the desktop?
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Visa den personliga mappen på skrivbordet"
+
+# TODO: *ON* the desktop?
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Visa papperskorgsikonen på skrivbordet"
+
+#: desktopGrid.js:320
+msgid "New Folder"
+msgstr "Ny mapp"
+
+#: desktopGrid.js:322
+msgid "Paste"
+msgstr "Klistra in"
+
+#: desktopGrid.js:323
+msgid "Undo"
+msgstr "Ångra"
+
+#: desktopGrid.js:324
+msgid "Redo"
+msgstr "Gör om"
+
+#: desktopGrid.js:326
+msgid "Show Desktop in Files"
+msgstr "Visa skrivbord i Filer"
+
+#: desktopGrid.js:327 fileItem.js:606
+msgid "Open in Terminal"
+msgstr "Öppna i terminal"
+
+#: desktopGrid.js:329
+msgid "Change Background…"
+msgstr "Ändra bakgrund…"
+
+#: desktopGrid.js:331
+msgid "Display Settings"
+msgstr "Visningsinställningar"
+
+#: desktopGrid.js:332
+msgid "Settings"
+msgstr "Inställningar"
+
+#: desktopGrid.js:576
+msgid "Enter file name…"
+msgstr "Ange filnamn…"
+
+#: desktopGrid.js:580
+msgid "OK"
+msgstr "OK"
+
+#: fileItem.js:490
+msgid "Don’t Allow Launching"
+msgstr "Tillåt ej programstart"
+
+#: fileItem.js:492
+msgid "Allow Launching"
+msgstr "Tillåt programstart"
+
+#: fileItem.js:574
+msgid "Open"
+msgstr "Öppna"
+
+#: fileItem.js:578
+msgid "Open With Other Application"
+msgstr "Öppna med annat program"
+
+#: fileItem.js:582
+msgid "Cut"
+msgstr "Klipp ut"
+
+#: fileItem.js:583
+msgid "Copy"
+msgstr "Kopiera"
+
+#: fileItem.js:585
+msgid "Rename…"
+msgstr "Byt namn…"
+
+#: fileItem.js:586
+msgid "Move to Trash"
+msgstr "Flytta till papperskorgen"
+
+#: fileItem.js:596
+msgid "Empty Trash"
+msgstr "Töm papperskorgen"
+
+#: fileItem.js:602
+msgid "Properties"
+msgstr "Egenskaper"
+
+#: fileItem.js:604
+msgid "Show in Files"
+msgstr "Visa i Filer"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Ikonstorlek"
+
+# TODO: *ON* the desktop?
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Ställ in storleken för skrivbordsikonerna."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Visa personlig mapp"
+
+# TODO: *ON* the desktop?
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Visa den personliga mappen på skrivbordet."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Visa papperskorgsikon"
+
+# TODO: *ON* the desktop?
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Visa papperskorgsikonen på skrivbordet."
+
+#~ msgid "Huge"
+#~ msgstr "Enorm"
diff --git a/extensions/desktop-icons/po/tr.po b/extensions/desktop-icons/po/tr.po
new file mode 100644
index 0000000..2e5f5a7
--- /dev/null
+++ b/extensions/desktop-icons/po/tr.po
@@ -0,0 +1,191 @@
+# Turkish translation for desktop-icons.
+# Copyright (C) 2000-2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+#
+# Sabri Ünal <libreajans gmail com>, 2019.
+# Serdar Sağlam <teknomobil yandex com>, 2019
+# Emin Tufan Çetin <etcetin gmail com>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-03-09 14:47+0000\n"
+"PO-Revision-Date: 2019-03-13 13:43+0300\n"
+"Last-Translator: Emin Tufan Çetin <etcetin gmail com>\n"
+"Language-Team: Türkçe <gnome-turk gnome org>\n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Gtranslator 3.30.1\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Yeni klasör adı"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Oluştur"
+
+#: createFolderDialog.js:74 desktopGrid.js:586
+msgid "Cancel"
+msgstr "İptal"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Klasör adları “/” içeremez."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Bir klasör “.” olarak adlandırılamaz."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Bir klasör “..” olarak adlandırılamaz."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Adlarının başında “.” bulunan klasörler gizlenir."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Zaten bu adda bir dosya veya klasör var."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Masaüstü simgeleri boyutu"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Küçük"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Standart"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Büyük"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Kişisel klasörü masaüstünde göster"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Çöp kutusunu masaüstünde göster"
+
+#: desktopGrid.js:320
+msgid "New Folder"
+msgstr "Yeni Klasör"
+
+#: desktopGrid.js:322
+msgid "Paste"
+msgstr "Yapıştır"
+
+#: desktopGrid.js:323
+msgid "Undo"
+msgstr "Geri Al"
+
+#: desktopGrid.js:324
+msgid "Redo"
+msgstr "Yinele"
+
+#: desktopGrid.js:326
+msgid "Show Desktop in Files"
+msgstr "Masaüstünü Dosyalarʼda Göster"
+
+#: desktopGrid.js:327 fileItem.js:606
+msgid "Open in Terminal"
+msgstr "Uçbirimde Aç"
+
+#: desktopGrid.js:329
+msgid "Change Background…"
+msgstr "Arka Planı Değiştir…"
+
+#: desktopGrid.js:331
+msgid "Display Settings"
+msgstr "Görüntü Ayarları"
+
+#: desktopGrid.js:332
+msgid "Settings"
+msgstr "Ayarlar"
+
+#: desktopGrid.js:576
+msgid "Enter file name…"
+msgstr "Dosya adını gir…"
+
+#: desktopGrid.js:580
+msgid "OK"
+msgstr "Tamam"
+
+#: fileItem.js:490
+msgid "Don’t Allow Launching"
+msgstr "Başlatmaya İzin Verme"
+
+#: fileItem.js:492
+msgid "Allow Launching"
+msgstr "Başlatmaya İzin Ver"
+
+#: fileItem.js:574
+msgid "Open"
+msgstr "Aç"
+
+#: fileItem.js:578
+msgid "Open With Other Application"
+msgstr "Başka Uygulamayla Aç"
+
+#: fileItem.js:582
+msgid "Cut"
+msgstr "Kes"
+
+#: fileItem.js:583
+msgid "Copy"
+msgstr "Kopyala"
+
+#: fileItem.js:585
+msgid "Rename…"
+msgstr "Yeniden Adlandır…"
+
+#: fileItem.js:586
+msgid "Move to Trash"
+msgstr "Çöpe Taşı"
+
+#: fileItem.js:596
+msgid "Empty Trash"
+msgstr "Çöpü Boşalt"
+
+#: fileItem.js:602
+msgid "Properties"
+msgstr "Özellikler"
+
+#: fileItem.js:604
+msgid "Show in Files"
+msgstr "Dosyalarʼda Göster"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Simge boyutu"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Masaüstü simgelerinin boyutunu ayarla."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Kişisel klasörü göster"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Kişisel klasörü masaüstünde göster."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Çöp kutusunu göster"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Çöp kutusu simgesini masaüstünde göster."
diff --git a/extensions/desktop-icons/po/zh_TW.po b/extensions/desktop-icons/po/zh_TW.po
new file mode 100644
index 0000000..8ce4ab9
--- /dev/null
+++ b/extensions/desktop-icons/po/zh_TW.po
@@ -0,0 +1,135 @@
+# Chinese (Taiwan) translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Yi-Jyun Pan <pan93412 gmail com>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2018-10-22 14:12+0000\n"
+"PO-Revision-Date: 2018-10-24 21:31+0800\n"
+"Language-Team: Chinese (Taiwan) <chinese-l10n googlegroups com>\n"
+"Language: zh_TW\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Last-Translator: pan93412 <pan93412 gmail com>\n"
+"X-Generator: Poedit 2.2\n"
+
+#: prefs.js:89
+msgid "Size for the desktop icons"
+msgstr "桌面圖示的大小"
+
+#: prefs.js:89
+msgid "Small"
+msgstr "小圖示"
+
+#: prefs.js:89
+msgid "Standard"
+msgstr "標準大小圖示"
+
+#: prefs.js:89
+msgid "Large"
+msgstr "大圖示"
+
+#: prefs.js:89
+msgid "Huge"
+msgstr "巨大圖示"
+
+#: prefs.js:90
+msgid "Show the personal folder in the desktop"
+msgstr "在桌面顯示個人資料夾"
+
+#: prefs.js:91
+msgid "Show the trash icon in the desktop"
+msgstr "在桌面顯示垃圾桶圖示"
+
+#: desktopGrid.js:178 desktopGrid.js:297
+msgid "New Folder"
+msgstr "新增資料夾"
+
+#: desktopGrid.js:299
+msgid "Paste"
+msgstr "貼上"
+
+#: desktopGrid.js:300
+msgid "Undo"
+msgstr "復原"
+
+#: desktopGrid.js:301
+msgid "Redo"
+msgstr "重做"
+
+#: desktopGrid.js:303
+msgid "Open Desktop in Files"
+msgstr "在《檔案》中開啟桌面"
+
+#: desktopGrid.js:304
+msgid "Open Terminal"
+msgstr "開啟終端器"
+
+#: desktopGrid.js:306
+msgid "Change Background…"
+msgstr "變更背景圖片…"
+
+#: desktopGrid.js:307
+msgid "Display Settings"
+msgstr "顯示設定"
+
+#: desktopGrid.js:308
+msgid "Settings"
+msgstr "設定"
+
+#: fileItem.js:223
+msgid "Open"
+msgstr "開啟"
+
+#: fileItem.js:226
+msgid "Cut"
+msgstr "剪下"
+
+#: fileItem.js:227
+msgid "Copy"
+msgstr "複製"
+
+#: fileItem.js:228
+msgid "Move to Trash"
+msgstr "移動到垃圾桶"
+
+#: fileItem.js:232
+msgid "Empty trash"
+msgstr "清空回收桶"
+
+#: fileItem.js:238
+msgid "Properties"
+msgstr "屬性"
+
+#: fileItem.js:240
+msgid "Show in Files"
+msgstr "在《檔案》中顯示"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Icon size"
+msgstr "圖示大小"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:13
+msgid "Set the size for the desktop icons."
+msgstr "設定桌面圖示的大小。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show personal folder"
+msgstr "顯示個人資料夾"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:18
+msgid "Show the personal folder in the desktop."
+msgstr "在桌面顯示個人資料夾。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show trash icon"
+msgstr "顯示垃圾桶圖示"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:23
+msgid "Show the trash icon in the desktop."
+msgstr "在桌面顯示垃圾桶圖示。"
diff --git a/extensions/desktop-icons/prefs.js b/extensions/desktop-icons/prefs.js
new file mode 100644
index 0000000..4b8d986
--- /dev/null
+++ b/extensions/desktop-icons/prefs.js
@@ -0,0 +1,159 @@
+
+/* Desktop Icons GNOME Shell extension
+ *
+ * Copyright (C) 2017 Carlos Soriano <csoriano redhat com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+const Gtk = imports.gi.Gtk;
+const GObject = imports.gi.GObject;
+const Gio = imports.gi.Gio;
+const GioSSS = Gio.SettingsSchemaSource;
+const ExtensionUtils = imports.misc.extensionUtils;
+const Gettext = imports.gettext;
+
+const Config = imports.misc.config;
+
+var _ = Gettext.domain('desktop-icons').gettext;
+
+const SCHEMA_NAUTILUS = 'org.gnome.nautilus.preferences';
+const SCHEMA_GTK = 'org.gtk.Settings.FileChooser';
+const SCHEMA = 'org.gnome.shell.extensions.desktop-icons';
+
+const ICON_SIZE = { 'small': 48, 'standard': 64, 'large': 96 };
+const ICON_WIDTH = { 'small': 120, 'standard': 128, 'large': 128 };
+const ICON_HEIGHT = { 'small': 98, 'standard': 114, 'large': 146 };
+
+var FileType = {
+    NONE: null,
+    USER_DIRECTORY_HOME: 'show-home',
+    USER_DIRECTORY_TRASH: 'show-trash',
+}
+
+var nautilusSettings;
+var gtkSettings;
+var settings;
+// This is already in Nautilus settings, so it should not be made tweakable here
+var CLICK_POLICY_SINGLE = false;
+
+function initTranslations() {
+    let extension = ExtensionUtils.getCurrentExtension();
+
+    let localedir = extension.dir.get_child('locale');
+    if (localedir.query_exists(null))
+        Gettext.bindtextdomain('desktop-icons', localedir.get_path());
+    else
+        Gettext.bindtextdomain('desktop-icons', Config.LOCALEDIR);
+}
+
+function init() {
+    let schemaSource = GioSSS.get_default();
+    let schemaGtk = schemaSource.lookup(SCHEMA_GTK, true);
+    gtkSettings = new Gio.Settings({ settings_schema: schemaGtk });
+    let schemaObj = schemaSource.lookup(SCHEMA_NAUTILUS, true);
+    if (!schemaObj) {
+        nautilusSettings = null;
+    } else {
+        nautilusSettings = new Gio.Settings({ settings_schema: schemaObj });;
+        nautilusSettings.connect('changed', _onNautilusSettingsChanged);
+        _onNautilusSettingsChanged();
+    }
+    settings = get_schema(SCHEMA);
+}
+
+function get_schema(schema) {
+    let extension = ExtensionUtils.getCurrentExtension();
+
+    // check if this extension was built with "make zip-file", and thus
+    // has the schema files in a subfolder
+    // otherwise assume that extension has been installed in the
+    // same prefix as gnome-shell (and therefore schemas are available
+    // in the standard folders)
+    let schemaDir = extension.dir.get_child('schemas');
+    let schemaSource;
+    if (schemaDir.query_exists(null))
+        schemaSource = GioSSS.new_from_directory(schemaDir.get_path(), GioSSS.get_default(), false);
+    else
+        schemaSource = GioSSS.get_default();
+
+    let schemaObj = schemaSource.lookup(schema, true);
+    if (!schemaObj)
+        throw new Error('Schema ' + schema + ' could not be found for extension ' + extension.metadata.uuid 
+ '. Please check your installation.');
+
+    return new Gio.Settings({ settings_schema: schemaObj });
+}
+
+function buildPrefsWidget() {
+    initTranslations();
+    let frame = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL, border_width: 10, spacing: 10 });
+
+    frame.add(buildSelector('icon-size', _("Size for the desktop icons"), { 'small': _("Small"), 'standard': 
_("Standard"), 'large': _("Large") }));
+    frame.add(buildSwitcher('show-home', _("Show the personal folder in the desktop")));
+    frame.add(buildSwitcher('show-trash', _("Show the trash icon in the desktop")));
+    frame.show_all();
+    return frame;
+}
+
+function buildSwitcher(key, labelText) {
+    let hbox = new Gtk.Box({ orientation: Gtk.Orientation.HORIZONTAL, spacing: 10 });
+    let label = new Gtk.Label({ label: labelText, xalign: 0 });
+    let switcher = new Gtk.Switch({ active: settings.get_boolean(key) });
+    settings.bind(key, switcher, 'active', 3);
+    hbox.pack_start(label, true, true, 0);
+    hbox.add(switcher);
+    return hbox;
+}
+
+function buildSelector(key, labelText, elements) {
+    let listStore = new Gtk.ListStore();
+    listStore.set_column_types ([GObject.TYPE_STRING, GObject.TYPE_STRING]);
+    let schemaKey = settings.settings_schema.get_key(key);
+    let values = schemaKey.get_range().get_child_value(1).get_child_value(0).get_strv();
+    for (let val of values) {
+        let iter = listStore.append();
+        let visibleText = val;
+        if (visibleText in elements)
+            visibleText = elements[visibleText];
+        listStore.set (iter, [0, 1], [visibleText, val]);
+    }
+    let hbox = new Gtk.Box({ orientation: Gtk.Orientation.HORIZONTAL, spacing: 10 });
+    let label = new Gtk.Label({ label: labelText, xalign: 0 });
+    let combo = new Gtk.ComboBox({model: listStore});
+    let rendererText = new Gtk.CellRendererText();
+    combo.pack_start (rendererText, false);
+    combo.add_attribute (rendererText, 'text', 0);
+    combo.set_id_column(1);
+    settings.bind(key, combo, 'active-id', 3);
+    hbox.pack_start(label, true, true, 0);
+    hbox.add(combo);
+    return hbox;
+}
+
+function _onNautilusSettingsChanged() {
+    CLICK_POLICY_SINGLE = nautilusSettings.get_string('click-policy') == 'single';
+}
+
+function get_icon_size() {
+    // this one doesn't need scaling because Gnome Shell automagically scales the icons
+    return ICON_SIZE[settings.get_string('icon-size')];
+}
+
+function get_desired_width(scale_factor) {
+    return ICON_WIDTH[settings.get_string('icon-size')] * scale_factor;
+}
+
+function get_desired_height(scale_factor) {
+    return ICON_HEIGHT[settings.get_string('icon-size')] * scale_factor;
+}
diff --git a/extensions/desktop-icons/schemas/meson.build b/extensions/desktop-icons/schemas/meson.build
new file mode 100644
index 0000000..2b17916
--- /dev/null
+++ b/extensions/desktop-icons/schemas/meson.build
@@ -0,0 +1,6 @@
+gnome.compile_schemas()
+
+install_data(
+  'org.gnome.shell.extensions.desktop-icons.gschema.xml',
+  install_dir : schema_dir
+)
diff --git a/extensions/desktop-icons/schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml 
b/extensions/desktop-icons/schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml
new file mode 100644
index 0000000..bb4e50f
--- /dev/null
+++ b/extensions/desktop-icons/schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schemalist gettext-domain="desktop-icons">
+    <enum id="org.gnome.shell.extension.desktop-icons.ZoomLevel">
+        <value value="0" nick="small"/>
+        <value value="1" nick="standard"/>
+        <value value="2" nick="large"/>
+    </enum>
+    <schema path="/org/gnome/shell/extensions/desktop-icons/" id="org.gnome.shell.extensions.desktop-icons">
+    <key name="icon-size" enum="org.gnome.shell.extension.desktop-icons.ZoomLevel">
+        <default>'standard'</default>
+        <summary>Icon size</summary>
+        <description>Set the size for the desktop icons.</description>
+    </key>
+       <key type="b" name="show-home">
+        <default>true</default>
+        <summary>Show personal folder</summary>
+        <description>Show the personal folder in the desktop.</description>
+    </key>
+       <key type="b" name="show-trash">
+        <default>true</default>
+        <summary>Show trash icon</summary>
+        <description>Show the trash icon in the desktop.</description>
+    </key>
+  </schema>
+</schemalist>
diff --git a/extensions/desktop-icons/stylesheet.css b/extensions/desktop-icons/stylesheet.css
new file mode 100644
index 0000000..17d4b32
--- /dev/null
+++ b/extensions/desktop-icons/stylesheet.css
@@ -0,0 +1,38 @@
+.file-item {
+    padding: 4px;
+    border: 1px;
+    margin: 1px;
+}
+
+.file-item:hover {
+   background-color: rgba(238, 238, 238, 0.2);
+}
+
+.name-label {
+    text-shadow: 1px 1px black;
+    color: white;
+    text-align: center;
+}
+
+.draggable {
+    background-color: red;
+}
+
+.rename-popup {
+    min-width: 300px;
+    margin: 6px;
+}
+
+.create-folder-dialog-entry {
+    width: 20em;
+    margin-bottom: 6px;
+}
+
+.create-folder-dialog-label {
+    padding-bottom: .4em;
+}
+
+.create-folder-dialog-error-box {
+    padding-top: 16px;
+    spacing: 6px;
+}
diff --git a/meson.build b/meson.build
index cf855a0..6e8c41f 100644
--- a/meson.build
+++ b/meson.build
@@ -33,6 +33,7 @@ uuid_suffix = '@gnome-shell-extensions.gcampax.github.com'
 
 classic_extensions = [
   'apps-menu',
+  'desktop-icons',
   'places-menu',
   'launch-new-instance',
   'window-list'
diff --git a/po/ca.po b/po/ca.po
index f3be74c..53a097f 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -1,11 +1,19 @@
+# #-#-#-#-#  ca.po (gnome-shell-extensions)  #-#-#-#-#
 # Catalan translation for gnome-shell-extensions.
 # Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
 # This file is distributed under the same license as the gnome-shell-extensions package.
 # Jordi Mas i Hernandez <jmas softcatala org>, 2011.
 # Gil Forcada <gilforcada guifi net>, 2012, 2013, 2014.
 #
+# #-#-#-#-#  ca.po (1.0)  #-#-#-#-#
+#
+# This file is distributed under the same license as the PACKAGE package.
+# Jordi Mas i Hernandez <jmas softcatala org>, 2019
+#
+#, fuzzy
 msgid ""
 msgstr ""
+"#-#-#-#-#  ca.po (gnome-shell-extensions)  #-#-#-#-#\n"
 "Project-Id-Version: gnome-shell-extensions\n"
 "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-";
 "shell&keywords=I18N+L10N&component=extensions\n"
@@ -18,6 +26,20 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
+"#-#-#-#-#  ca.po (1.0)  #-#-#-#-#\n"
+"Project-Id-Version: 1.0\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-07-22 10:24+0200\n"
+"PO-Revision-Date: 2019-07-22 10:24+0200\n"
+"Language: ca\n"
+"Language-Team: Catalan <info softcatala org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Last-Translator: Jordi Mas <jmas softcatala org>\n"
+"Language: ca\n"
+"X-Generator: Poedit 2.2.1\n"
 
 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
 msgid "GNOME Classic"
@@ -362,6 +384,178 @@ msgstr "Nom"
 msgid "Workspace %d"
 msgstr "Espai de treball %d"
 
+#: ../createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Nom de la carpeta nou"
+
+#: ../createFolderDialog.js:72
+msgid "Create"
+msgstr "Crea"
+
+#: ../createFolderDialog.js:74 ../desktopGrid.js:592
+msgid "Cancel"
+msgstr "Cancel·la"
+
+#: ../createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Els noms de carpetes no poden contenir «/»."
+
+#: ../createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Una carpeta no es pot anomenar «.»."
+
+#: ../createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Una carpeta no es pot anomenar «..»."
+
+#: ../createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Les carpetes amb un «.» a l'inici del seu nom s'amaguen."
+
+#: ../createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Ja existeix un fitxer o carpeta amb aquest nom."
+
+#: ../prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Mida de les icones d'escriptori"
+
+#: ../prefs.js:102
+msgid "Small"
+msgstr "Petita"
+
+#: ../prefs.js:102
+msgid "Standard"
+msgstr "Estàndard"
+
+#: ../prefs.js:102
+msgid "Large"
+msgstr "Gran"
+
+#: ../prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Mostra la carpeta personal a l'escriptori"
+
+#: ../prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Mostra la icona de la paperera a l'escriptori"
+
+#: ../desktopGrid.js:323
+msgid "New Folder"
+msgstr "Carpeta nova"
+
+#: ../desktopGrid.js:325
+msgid "Paste"
+msgstr "Enganxa"
+
+#: ../desktopGrid.js:326
+msgid "Undo"
+msgstr "Desfés"
+
+#: ../desktopGrid.js:327
+msgid "Redo"
+msgstr "Refés"
+
+#: ../desktopGrid.js:329
+msgid "Show Desktop in Files"
+msgstr "Mostra l'escriptori al Fitxers"
+
+#: ../desktopGrid.js:330 ../fileItem.js:612
+msgid "Open in Terminal"
+msgstr "Obre al Terminal"
+
+#: ../desktopGrid.js:332
+msgid "Change Background…"
+msgstr "Canvia el fons de l'escriptori…"
+
+#: ../desktopGrid.js:334
+msgid "Display Settings"
+msgstr "Paràmetres de la pantalla"
+
+#: ../desktopGrid.js:335
+msgid "Settings"
+msgstr "Paràmetres"
+
+#: ../desktopGrid.js:582
+msgid "Enter file name…"
+msgstr "Introduïu un nom de fitxer…"
+
+#: ../desktopGrid.js:586
+msgid "OK"
+msgstr "D'acord"
+
+#: ../desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "\tNo s'ha trobat l'ordre"
+
+#: ../fileItem.js:500
+msgid "Don’t Allow Launching"
+msgstr "No permetis que s'iniciï"
+
+#: ../fileItem.js:502
+msgid "Allow Launching"
+msgstr "Permet que s'iniciï"
+
+#: ../fileItem.js:580
+msgid "Open"
+msgstr "Obre"
+
+#: ../fileItem.js:584
+msgid "Open With Other Application"
+msgstr "Obre amb una altra aplicació..."
+
+#: ../fileItem.js:588
+msgid "Cut"
+msgstr "Retalla"
+
+#: ../fileItem.js:589
+msgid "Copy"
+msgstr "Copia"
+
+#: ../fileItem.js:591
+msgid "Rename…"
+msgstr "Canvia el nom…"
+
+#: ../fileItem.js:592
+msgid "Move to Trash"
+msgstr "Mou a la paperera"
+
+#: ../fileItem.js:602
+msgid "Empty Trash"
+msgstr "Buida la paperera"
+
+#: ../fileItem.js:608
+msgid "Properties"
+msgstr "Propietats"
+
+#: ../fileItem.js:610
+msgid "Show in Files"
+msgstr "Mostra al Fitxers"
+
+#: ../schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml.h:1
+msgid "Icon size"
+msgstr "Mida d'icona"
+
+#: ../schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml.h:2
+msgid "Set the size for the desktop icons."
+msgstr "Estableix la mida per les icones de l'escriptori."
+
+#: ../schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml.h:3
+msgid "Show personal folder"
+msgstr "Mostra la carpeta personal"
+
+#: ../schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml.h:4
+msgid "Show the personal folder in the desktop."
+msgstr "Mostra la carpeta personal a l'escriptori."
+
+#: ../schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml.h:5
+msgid "Show trash icon"
+msgstr "Mostra la icona de la paperera"
+
+#: ../schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml.h:6
+msgid "Show the trash icon in the desktop."
+msgstr "Mostra la icona de la paperera a l'escriptori."
+
 #~ msgid "GNOME Shell Classic"
 #~ msgstr "GNOME Shell clàssic"
 
diff --git a/po/cs.po b/po/cs.po
index 04bb195..7ce51c9 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -1,11 +1,21 @@
+# #-#-#-#-#  cs.po (gnome-shell-extensions)  #-#-#-#-#
 # Czech translation for gnome-shell-extensions.
 # Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
 # This file is distributed under the same license as the gnome-shell-extensions package.
 # Petr Kovar <pknbe volny cz>, 2013.
 # Marek Černocký <marek manet cz>, 2011, 2012, 2013, 2014, 2015, 2017.
 #
+# #-#-#-#-#  cs.po (desktop-icons master)  #-#-#-#-#
+# Czech translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Marek Černocký <marek manet cz>, 2018.
+# Milan Zink <zeten30 gmail com>, 2018.
+#
+#, fuzzy
 msgid ""
 msgstr ""
+"#-#-#-#-#  cs.po (gnome-shell-extensions)  #-#-#-#-#\n"
 "Project-Id-Version: gnome-shell-extensions\n"
 "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-";
 "shell&keywords=I18N+L10N&component=extensions\n"
@@ -19,6 +29,20 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
 "X-Generator: Gtranslator 2.91.6\n"
+"#-#-#-#-#  cs.po (desktop-icons master)  #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-03-01 12:49+0000\n"
+"PO-Revision-Date: 2019-03-02 18:02+0100\n"
+"Last-Translator: Daniel Rusek <mail asciiwolf com>\n"
+"Language-Team: Czech <zeten30 gmail com>\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"X-Generator: Poedit 2.2.1\n"
 
 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
 msgid "GNOME Classic"
@@ -350,3 +374,177 @@ msgstr "Název"
 #, javascript-format
 msgid "Workspace %d"
 msgstr "Pracovní plocha %d"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Název nové složky"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Vytvořit"
+
+#: createFolderDialog.js:74 desktopGrid.js:586
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Názvy složek nesmí obsahovat „/“."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Složka se nemůže jmenovat „.“."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Složka se nemůže jmenovat „..“."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Složky s „.“ na začátku jejich názvu jsou skryty."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Soubor nebo složka s tímto názvem již existuje."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Velikost ikon na pracovní ploše"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "malé"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "standardní"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "velké"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Zobrazovat osobní složku na pracovní ploše"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Zobrazovat ikonu koše na pracovní ploše"
+
+#: desktopGrid.js:320
+msgid "New Folder"
+msgstr "Nová složka"
+
+#: desktopGrid.js:322
+msgid "Paste"
+msgstr "Vložit"
+
+#: desktopGrid.js:323
+msgid "Undo"
+msgstr "Zpět"
+
+#: desktopGrid.js:324
+msgid "Redo"
+msgstr "Znovu"
+
+#: desktopGrid.js:326
+msgid "Show Desktop in Files"
+msgstr "Zobrazit plochu v Souborech"
+
+#: desktopGrid.js:327 fileItem.js:606
+msgid "Open in Terminal"
+msgstr "Otevřít v terminálu"
+
+#: desktopGrid.js:329
+msgid "Change Background…"
+msgstr "Změnit pozadí…"
+
+#: desktopGrid.js:331
+msgid "Display Settings"
+msgstr "Zobrazit nastavení"
+
+#: desktopGrid.js:332
+msgid "Settings"
+msgstr "Nastavení"
+
+#: desktopGrid.js:576
+msgid "Enter file name…"
+msgstr "Zadejte název souboru…"
+
+#: desktopGrid.js:580
+msgid "OK"
+msgstr "Budiž"
+
+#: fileItem.js:490
+msgid "Don’t Allow Launching"
+msgstr "Nepovolit spouštění"
+
+#: fileItem.js:492
+msgid "Allow Launching"
+msgstr "Povolit spouštění"
+
+#: fileItem.js:574
+msgid "Open"
+msgstr "Otevřít"
+
+#: fileItem.js:578
+msgid "Open With Other Application"
+msgstr "Otevřít pomocí jiné aplikace"
+
+#: fileItem.js:582
+msgid "Cut"
+msgstr "Vyjmout"
+
+#: fileItem.js:583
+msgid "Copy"
+msgstr "Kopírovat"
+
+#: fileItem.js:585
+msgid "Rename…"
+msgstr "Přejmenovat…"
+
+#: fileItem.js:586
+msgid "Move to Trash"
+msgstr "Přesunout do koše"
+
+#: fileItem.js:596
+msgid "Empty Trash"
+msgstr "Vyprázdnit koš"
+
+#: fileItem.js:602
+msgid "Properties"
+msgstr "Vlastnosti"
+
+#: fileItem.js:604
+msgid "Show in Files"
+msgstr "Zobrazit v Souborech"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Velikost ikon"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Nastavit velikost pro ikony na pracovní ploše."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Zobrazovat osobní složku"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Zobrazovat osobní složku na pracovní ploše."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Zobrazovat koš"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Zobrazovat ikonu koše na pracovní ploše."
+
+#~ msgid "Huge"
+#~ msgstr "obrovské"
+
+#~ msgid "Ok"
+#~ msgstr "Ok"
diff --git a/po/da.po b/po/da.po
index 5a4c257..4e1f110 100644
--- a/po/da.po
+++ b/po/da.po
@@ -1,3 +1,4 @@
+# #-#-#-#-#  da.po (gnome-shell-extensions master)  #-#-#-#-#
 # Danish translation for gnome-shell-extensions.
 # Copyright (C) 2011-2017 gnome-shell-extensions's COPYRIGHT HOLDER
 # This file is distributed under the same license as the gnome-shell-extensions package.
@@ -6,8 +7,16 @@
 # Ask Hjorth Larsen <asklarsen gmail com>, 2015, 2017.
 # Joe Hansen <joedalton2 yahoo dk>, 2017.
 #
+# #-#-#-#-#  da.po (desktop-icons master)  #-#-#-#-#
+# Danish translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Alan Mortensen <alanmortensen am gmail com>, 2018.
+#
+#, fuzzy
 msgid ""
 msgstr ""
+"#-#-#-#-#  da.po (gnome-shell-extensions master)  #-#-#-#-#\n"
 "Project-Id-Version: gnome-shell-extensions master\n"
 "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-";
 "shell&keywords=I18N+L10N&component=extensions\n"
@@ -20,6 +29,19 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"#-#-#-#-#  da.po (desktop-icons master)  #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-03-01 12:11+0000\n"
+"PO-Revision-Date: 2019-03-04 14:55+0200\n"
+"Last-Translator: scootergrisen\n"
+"Language-Team: Danish <dansk dansk-gruppen dk>\n"
+"Language: da\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
 msgid "GNOME Classic"
@@ -359,3 +381,175 @@ msgstr "Navn"
 #, javascript-format
 msgid "Workspace %d"
 msgstr "Arbejdsområde %d"
+
+#: createFolderDialog.js:48
+#| msgid "New Folder"
+msgid "New folder name"
+msgstr "Nyt mappenavn"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Opret"
+
+#: createFolderDialog.js:74 desktopGrid.js:586
+msgid "Cancel"
+msgstr "Annullér"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Mappenavne må ikke indeholde “/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "En mappe må ikke kaldes “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "En mappe må ikke kaldes “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Mapper med “.” i begyndelsen af deres navn er skjulte."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Der findes allerede en fil eller mappe med det navn."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Størrelsen på skrivebordsikoner"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Små"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Standard"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Store"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Vis den personlige mappe på skrivebordet"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Vis papirkurvsikonet på skrivebordet"
+
+#: desktopGrid.js:320
+msgid "New Folder"
+msgstr "Ny mappe"
+
+#: desktopGrid.js:322
+msgid "Paste"
+msgstr "Indsæt"
+
+#: desktopGrid.js:323
+msgid "Undo"
+msgstr "Fortryd"
+
+#: desktopGrid.js:324
+msgid "Redo"
+msgstr "Omgør"
+
+#: desktopGrid.js:326
+msgid "Show Desktop in Files"
+msgstr "Vis skrivebordet i Filer"
+
+#: desktopGrid.js:327 fileItem.js:606
+msgid "Open in Terminal"
+msgstr "Åbn i terminal"
+
+#: desktopGrid.js:329
+msgid "Change Background…"
+msgstr "Skift baggrund …"
+
+#: desktopGrid.js:331
+msgid "Display Settings"
+msgstr "Skærmindstillinger"
+
+#: desktopGrid.js:332
+msgid "Settings"
+msgstr "Indstillinger"
+
+#: desktopGrid.js:576
+msgid "Enter file name…"
+msgstr "Indtast filnavn …"
+
+#: desktopGrid.js:580
+msgid "OK"
+msgstr "OK"
+
+#: fileItem.js:490
+msgid "Don’t Allow Launching"
+msgstr "Tillad ikke opstart"
+
+#: fileItem.js:492
+msgid "Allow Launching"
+msgstr "Tillad opstart"
+
+#: fileItem.js:574
+msgid "Open"
+msgstr "Åbn"
+
+#: fileItem.js:578
+msgid "Open With Other Application"
+msgstr "Åbn med et andet program"
+
+#: fileItem.js:582
+msgid "Cut"
+msgstr "Klip"
+
+#: fileItem.js:583
+msgid "Copy"
+msgstr "Kopiér"
+
+#: fileItem.js:585
+msgid "Rename…"
+msgstr "Omdøb …"
+
+#: fileItem.js:586
+msgid "Move to Trash"
+msgstr "Flyt til papirkurven"
+
+#: fileItem.js:596
+msgid "Empty Trash"
+msgstr "Tøm papirkurven"
+
+#: fileItem.js:602
+msgid "Properties"
+msgstr "Egenskaber"
+
+#: fileItem.js:604
+msgid "Show in Files"
+msgstr "Vis i Filer"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Ikonstørrelse"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Angiv størrelsen på skrivebordsikoner."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Vis personlig mappe"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Vis den personlige mappe på skrivebordet."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Vis papirkurvsikon"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Vis papirkurvsikonet på skrivebordet."
+
+#~ msgid "Huge"
+#~ msgstr "Enorme"
diff --git a/po/de.po b/po/de.po
index 01924b8..6bd5c83 100644
--- a/po/de.po
+++ b/po/de.po
@@ -1,3 +1,4 @@
+# #-#-#-#-#  de.po (gnome-shell-extensions master)  #-#-#-#-#
 # German translation for gnome-shell-extensions.
 # Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
 # This file is distributed under the same license as the gnome-shell-extensions package.
@@ -7,8 +8,17 @@
 # Wolfgang Stöggl <c72578 yahoo de>, 2014.
 # Paul Seyfert <pseyfert mathphys fsk uni-heidelberg de>, 2017.
 #
+# #-#-#-#-#  de.po (desktop-icons master)  #-#-#-#-#
+# German translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Mario Blättermann <mario blaettermann gmail com>, 2018.
+# rugk <rugk+i18n posteo de>, 2019.
+#
+#, fuzzy
 msgid ""
 msgstr ""
+"#-#-#-#-#  de.po (gnome-shell-extensions master)  #-#-#-#-#\n"
 "Project-Id-Version: gnome-shell-extensions master\n"
 "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-";
 "shell&keywords=I18N+L10N&component=extensions\n"
@@ -22,6 +32,20 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Poedit 2.0.2\n"
+"#-#-#-#-#  de.po (desktop-icons master)  #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-03-07 22:46+0000\n"
+"PO-Revision-Date: 2019-03-09 15:42+0100\n"
+"Last-Translator: Tim Sabsch <tim sabsch com>\n"
+"Language-Team: German <gnome-de gnome org>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.2.1\n"
 
 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
 msgid "GNOME Classic"
@@ -366,3 +390,174 @@ msgstr "Name"
 #, javascript-format
 msgid "Workspace %d"
 msgstr "Arbeitsfläche %d"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Neuer Ordner"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Erstellen"
+
+#: createFolderDialog.js:74 desktopGrid.js:586
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Ordnernamen dürfen kein »/« enthalten."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Ein Ordner darf nicht ».« genannt werden."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Ein Ordner darf nicht »..« genannt werden."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Ordner mit ».« am Anfang sind verborgen."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Es gibt bereits eine Datei oder einen Ordner mit diesem Namen."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Größe der Arbeitsflächensymbole"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Klein"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Standard"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Groß"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Den persönlichen Ordner auf der Arbeitsfläche anzeigen"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Papierkorb-Symbol auf der Arbeitsfläche anzeigen"
+
+#: desktopGrid.js:320
+msgid "New Folder"
+msgstr "Neuer Ordner"
+
+#: desktopGrid.js:322
+msgid "Paste"
+msgstr "Einfügen"
+
+#: desktopGrid.js:323
+msgid "Undo"
+msgstr "Rückgängig"
+
+#: desktopGrid.js:324
+msgid "Redo"
+msgstr "Wiederholen"
+
+#: desktopGrid.js:326
+msgid "Show Desktop in Files"
+msgstr "Schreibtisch in Dateien anzeigen"
+
+#: desktopGrid.js:327 fileItem.js:606
+msgid "Open in Terminal"
+msgstr "Im Terminal öffnen"
+
+#: desktopGrid.js:329
+msgid "Change Background…"
+msgstr "Hintergrund ändern …"
+
+#: desktopGrid.js:331
+msgid "Display Settings"
+msgstr "Anzeigeeinstellungen"
+
+#: desktopGrid.js:332
+msgid "Settings"
+msgstr "Einstellungen"
+
+#: desktopGrid.js:576
+msgid "Enter file name…"
+msgstr "Dateinamen eingeben …"
+
+#: desktopGrid.js:580
+msgid "OK"
+msgstr "OK"
+
+#: fileItem.js:490
+msgid "Don’t Allow Launching"
+msgstr "Start nicht erlauben"
+
+#: fileItem.js:492
+msgid "Allow Launching"
+msgstr "Start erlauben"
+
+#: fileItem.js:574
+msgid "Open"
+msgstr "Öffnen"
+
+#: fileItem.js:578
+msgid "Open With Other Application"
+msgstr "Mit anderer Anwendung öffnen"
+
+#: fileItem.js:582
+msgid "Cut"
+msgstr "Ausschneiden"
+
+#: fileItem.js:583
+msgid "Copy"
+msgstr "Kopieren"
+
+#: fileItem.js:585
+msgid "Rename…"
+msgstr "Umbenennen …"
+
+#: fileItem.js:586
+msgid "Move to Trash"
+msgstr "In den Papierkorb verschieben"
+
+#: fileItem.js:596
+msgid "Empty Trash"
+msgstr "Papierkorb leeren"
+
+#: fileItem.js:602
+msgid "Properties"
+msgstr "Eigenschaften"
+
+#: fileItem.js:604
+msgid "Show in Files"
+msgstr "In Dateiverwaltung anzeigen"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Symbolgröße"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Die Größe der Arbeitsflächensymbole festlegen."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Persönlichen Ordner anzeigen"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Den persönlichen Ordner auf der Arbeitsfläche anzeigen."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Papierkorb-Symbol anzeigen"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Das Papierkorb-Symbol auf der Arbeitsfläche anzeigen."
+
+#~ msgid "Huge"
+#~ msgstr "Riesig"
diff --git a/po/en_GB.po b/po/en_GB.po
index 92ae445..60fc687 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -1,11 +1,20 @@
+# #-#-#-#-#  en_GB.po (gnome-shell-extensions)  #-#-#-#-#
 # British English translation of gnome-shell-extensions.
 # Copyright (C) 2011 gnome-shell-extensions'S COPYRIGHT HOLDER.
 # This file is distributed under the same license as the gnome-shell-extensions package.
 # Bruce Cowan <bruce bcowan eu>, 2011, 2018.
 # Chris Leonard <cjlhomeaddress gmail com>, 2012.
 # Philip Withnall <philip tecnocode co uk>, 2014.
+# #-#-#-#-#  en_GB.po (desktop-icons master)  #-#-#-#-#
+# British English translation for desktop-icons.
+# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Zander Brown <zbrown gnome org>, 2019.
+#
+#, fuzzy
 msgid ""
 msgstr ""
+"#-#-#-#-#  en_GB.po (gnome-shell-extensions)  #-#-#-#-#\n"
 "Project-Id-Version: gnome-shell-extensions\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/";
 "issues\n"
@@ -20,6 +29,20 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Poedit 2.0.6\n"
 "X-Project-Style: gnome\n"
+"#-#-#-#-#  en_GB.po (desktop-icons master)  #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-08-22 15:53+0000\n"
+"PO-Revision-Date: 2019-08-23 21:48+0100\n"
+"Last-Translator: Zander Brown <zbrown gnome org>\n"
+"Language-Team: English - United Kingdom <en_GB li org>\n"
+"Language: en_GB\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Gtranslator 3.32.1\n"
 
 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
 msgid "GNOME Classic"
@@ -367,6 +390,178 @@ msgstr "Name"
 msgid "Workspace %d"
 msgstr "Workspace %d"
 
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Icon size"
+
+#: desktopGrid.js:334
+msgid "Display Settings"
+msgstr "Display Settings"
+
+#: createFolderDialog.js:74 desktopGrid.js:592
+msgid "Cancel"
+msgstr "Cancel"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "New folder name"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Create"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Folder names cannot contain “/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "A folder cannot be called “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "A folder cannot be called “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Folders with “.” at the beginning of their name are hidden."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "There is already a file or folder with that name."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Size for the desktop icons"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Small"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Standard"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Large"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Show the personal folder on the desktop"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Show the wastebasket icon on the desktop"
+
+#: desktopGrid.js:323
+msgid "New Folder"
+msgstr "New Folder"
+
+#: desktopGrid.js:325
+msgid "Paste"
+msgstr "Paste"
+
+#: desktopGrid.js:326
+msgid "Undo"
+msgstr "Undo"
+
+#: desktopGrid.js:327
+msgid "Redo"
+msgstr "Redo"
+
+#: desktopGrid.js:329
+msgid "Show Desktop in Files"
+msgstr "Show Desktop in Files"
+
+#: desktopGrid.js:330 fileItem.js:626
+msgid "Open in Terminal"
+msgstr "Open in Terminal"
+
+#: desktopGrid.js:332
+msgid "Change Background…"
+msgstr "Change Background…"
+
+#: desktopGrid.js:335
+msgid "Settings"
+msgstr "Settings"
+
+#: desktopGrid.js:582
+msgid "Enter file name…"
+msgstr "Enter file name…"
+
+#: desktopGrid.js:586
+msgid "OK"
+msgstr "OK"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "Command not found"
+
+#: fileItem.js:499
+msgid "Don’t Allow Launching"
+msgstr "Don’t Allow Launching"
+
+#: fileItem.js:501
+msgid "Allow Launching"
+msgstr "Allow Launching"
+
+#: fileItem.js:594
+msgid "Open"
+msgstr "Open"
+
+#: fileItem.js:598
+msgid "Open With Other Application"
+msgstr "Open With Other Application"
+
+#: fileItem.js:602
+msgid "Cut"
+msgstr "Cut"
+
+#: fileItem.js:603
+msgid "Copy"
+msgstr "Copy"
+
+#: fileItem.js:605
+msgid "Rename…"
+msgstr "Rename…"
+
+#: fileItem.js:606
+msgid "Move to Trash"
+msgstr "Move to Wastebasket"
+
+#: fileItem.js:616
+msgid "Empty Trash"
+msgstr "Empty Wastebasket"
+
+#: fileItem.js:622
+msgid "Properties"
+msgstr "Properties"
+
+#: fileItem.js:624
+msgid "Show in Files"
+msgstr "Show in Files"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Set the size for the desktop icons."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Show personal folder"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Show the personal folder on the desktop."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Show wastebasket icon"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Show the trash icon on the desktop."
+
 #~ msgid "GNOME Shell Classic"
 #~ msgstr "GNOME Shell Classic"
 
@@ -434,9 +629,6 @@ msgstr "Workspace %d"
 #~ "Sets the position of the dock in the screen. Allowed values are 'right' "
 #~ "or 'left'"
 
-#~ msgid "Icon size"
-#~ msgstr "Icon size"
-
 #~ msgid "Sets icon size of the dock."
 #~ msgstr "Sets icon size of the dock."
 
@@ -508,9 +700,6 @@ msgstr "Workspace %d"
 #~ msgid "Display"
 #~ msgstr "Display"
 
-#~ msgid "Display Settings"
-#~ msgstr "Display Settings"
-
 #~ msgid "Do Not Disturb"
 #~ msgstr "Do Not Disturb"
 
@@ -582,9 +771,6 @@ msgstr "Workspace %d"
 #~ msgid "Native"
 #~ msgstr "Native"
 
-#~ msgid "Cancel"
-#~ msgstr "Cancel"
-
 #~ msgid "Ask the user for a default behaviour if true."
 #~ msgstr "Ask the user for a default behaviour if true."
 
diff --git a/po/es.po b/po/es.po
index a3c0703..ee30c8a 100644
--- a/po/es.po
+++ b/po/es.po
@@ -1,3 +1,4 @@
+# #-#-#-#-#  es.po (gnome-shell-extensions master)  #-#-#-#-#
 # Spanish translation for gnome-shell-extensions.
 # Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
 # This file is distributed under the same license as the gnome-shell-extensions package.
@@ -6,8 +7,18 @@
 # 
 # Daniel Mustieles <daniel mustieles gmail com>, 2011-2015, 2017.
 #
+# #-#-#-#-#  es.po (1.0)  #-#-#-#-#
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Sergio Costas <rastersoft gmail com>, 2018.
+# Daniel Mustieles <daniel mustieles gmail com>, 2018-2019.
+#
+#, fuzzy
 msgid ""
 msgstr ""
+"#-#-#-#-#  es.po (gnome-shell-extensions master)  #-#-#-#-#\n"
 "Project-Id-Version: gnome-shell-extensions master\n"
 "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-";
 "shell&keywords=I18N+L10N&component=extensions\n"
@@ -21,6 +32,20 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Gtranslator 2.91.6\n"
+"#-#-#-#-#  es.po (1.0)  #-#-#-#-#\n"
+"Project-Id-Version: 1.0\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-04-29 14:11+0000\n"
+"PO-Revision-Date: 2019-05-13 15:13+0200\n"
+"Last-Translator: Daniel Mustieles <daniel mustieles gmail com>\n"
+"Language-Team: es <gnome-es-list gnome org>\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Gtranslator 3.32.0\n"
 
 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
 msgid "GNOME Classic"
@@ -361,6 +386,188 @@ msgstr "Nombre"
 msgid "Workspace %d"
 msgstr "Área de trabajo %d"
 
+#: desktopGrid.js:334
+#, fuzzy
+msgid "Display Settings"
+msgstr ""
+"#-#-#-#-#  es.po (gnome-shell-extensions master)  #-#-#-#-#\n"
+"Configuración de pantalla\n"
+"#-#-#-#-#  es.po (1.0)  #-#-#-#-#\n"
+"Configuración de pantalla"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+#, fuzzy
+msgid "Icon size"
+msgstr ""
+"#-#-#-#-#  es.po (gnome-shell-extensions master)  #-#-#-#-#\n"
+"Tamaño del icono\n"
+"#-#-#-#-#  es.po (1.0)  #-#-#-#-#\n"
+"Tamaño de los iconos"
+
+#: createFolderDialog.js:74 desktopGrid.js:592
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Nombre de la nueva carpeta"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Crear"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Los nombres de carpetas no pueden contener «/»."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Una carpeta no se puede llamar «.»."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Una carpeta no se puede llamar «..»."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Las carpetas cuyo nombre empieza por «.» están ocultas."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Ya hay un archivo o carpeta con ese nombre."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Tamaño de los iconos del escritorio"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Pequeño"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Estándar"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Grande"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Mostrar la carpeta personal en el escritorio"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Mostrar la papelera en el escritorio"
+
+#: desktopGrid.js:323
+msgid "New Folder"
+msgstr "Nueva carpeta"
+
+#: desktopGrid.js:325
+msgid "Paste"
+msgstr "Pegar"
+
+#: desktopGrid.js:326
+msgid "Undo"
+msgstr "Deshacer"
+
+#: desktopGrid.js:327
+msgid "Redo"
+msgstr "Rehacer"
+
+#: desktopGrid.js:329
+msgid "Show Desktop in Files"
+msgstr "Mostrar el escritorio en Archivos"
+
+#: desktopGrid.js:330 fileItem.js:610
+msgid "Open in Terminal"
+msgstr "Abrir en una terminal"
+
+#: desktopGrid.js:332
+msgid "Change Background…"
+msgstr "Cambiar el fondo..."
+
+#: desktopGrid.js:335
+msgid "Settings"
+msgstr "Configuración"
+
+#: desktopGrid.js:582
+msgid "Enter file name…"
+msgstr "Introduzca el nombre del archivo…"
+
+#: desktopGrid.js:586
+msgid "OK"
+msgstr "Aceptar"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "Comando no encontrado"
+
+#: fileItem.js:494
+msgid "Don’t Allow Launching"
+msgstr "No permitir lanzar"
+
+#: fileItem.js:496
+msgid "Allow Launching"
+msgstr "Permitir lanzar"
+
+#: fileItem.js:578
+msgid "Open"
+msgstr "Abrir"
+
+#: fileItem.js:582
+msgid "Open With Other Application"
+msgstr "Abrir con otra aplicación"
+
+#: fileItem.js:586
+msgid "Cut"
+msgstr "Cortar"
+
+#: fileItem.js:587
+msgid "Copy"
+msgstr "Copiar"
+
+#: fileItem.js:589
+msgid "Rename…"
+msgstr "Renombrar…"
+
+#: fileItem.js:590
+msgid "Move to Trash"
+msgstr "Mover a la papelera"
+
+#: fileItem.js:600
+msgid "Empty Trash"
+msgstr "Vaciar la papelera"
+
+#: fileItem.js:606
+msgid "Properties"
+msgstr "Propiedades"
+
+#: fileItem.js:608
+msgid "Show in Files"
+msgstr "Mostrar en Files"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Establece el tamaño de los iconos del escritorio."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Mostrar la carpeta personal"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Mostrar la carpeta personal en el escritorio."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Mostrar la papelera"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Mostrar la papelera en el escritorio."
+
 #~ msgid "CPU"
 #~ msgstr "CPU"
 
@@ -409,9 +616,6 @@ msgstr "Área de trabajo %d"
 #~ msgid "Display"
 #~ msgstr "Pantalla"
 
-#~ msgid "Display Settings"
-#~ msgstr "Configuración de pantalla"
-
 #~ msgid "File System"
 #~ msgstr "Sistema de archivos"
 
@@ -459,9 +663,6 @@ msgstr "Área de trabajo %d"
 #~ "Configura la posición del tablero en la pantalla. Los valores permitidos "
 #~ "son «right» (derecha) o «left» (izquierda)"
 
-#~ msgid "Icon size"
-#~ msgstr "Tamaño del icono"
-
 #~ msgid "Sets icon size of the dock."
 #~ msgstr "Configura el tamaño de los íconos del tablero."
 
@@ -632,9 +833,6 @@ msgstr "Área de trabajo %d"
 #~ msgid "Alt Tab Behaviour"
 #~ msgstr "Comportamiento de Alt+Tab"
 
-#~ msgid "Cancel"
-#~ msgstr "Cancelar"
-
 #~ msgid "Notifications"
 #~ msgstr "Notificaciones"
 
@@ -668,3 +866,30 @@ msgstr "Área de trabajo %d"
 
 #~ msgid "Busy"
 #~ msgstr "Ocupado"
+
+#~ msgid "Huge"
+#~ msgstr "Inmenso"
+
+#~ msgid "Ok"
+#~ msgstr "Aceptar"
+
+#~ msgid "huge"
+#~ msgstr "inmenso"
+
+#~ msgid "Maximum width for the icons and filename."
+#~ msgstr "Ancho máximo de los iconos y el nombre de fichero."
+
+#~ msgid "Shows the Documents folder in the desktop."
+#~ msgstr "Muestra la carpeta Documentos en el escritorio."
+
+#~ msgid "Shows the Downloads folder in the desktop."
+#~ msgstr "Muestra la carpeta Descargas en el escritorio."
+
+#~ msgid "Shows the Music folder in the desktop."
+#~ msgstr "Muestra la carpeta Música en el escritorio."
+
+#~ msgid "Shows the Pictures folder in the desktop."
+#~ msgstr "Muestra la carpeta Imágenes en el escritorio."
+
+#~ msgid "Shows the Videos folder in the desktop."
+#~ msgstr "Muestra la carpeta Vídeos en el escritorio."
diff --git a/po/fi.po b/po/fi.po
index e036448..e23c0c8 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -1,3 +1,4 @@
+# #-#-#-#-#  fi.po (gnome-shell-extensions)  #-#-#-#-#
 # Finnish translation of gnome-shell-extensions.
 # Copyright (C) 2011 Ville-Pekka Vainio
 # This file is distributed under the same license as the gnome-shell-extensions package.
@@ -7,8 +8,16 @@
 # Ville-Pekka Vainio <vpvainio iki fi>, 2011.
 # Jiri Grönroos <jiri gronroos+l10n iki fi>, 2012, 2013, 2014, 2015, 2017.
 #
+# #-#-#-#-#  fi.po (desktop-icons master)  #-#-#-#-#
+# Finnish translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Jiri Grönroos <jiri gronroos iki fi>, 2018.
+#
+#, fuzzy
 msgid ""
 msgstr ""
+"#-#-#-#-#  fi.po (gnome-shell-extensions)  #-#-#-#-#\n"
 "Project-Id-Version: gnome-shell-extensions\n"
 "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-";
 "shell&keywords=I18N+L10N&component=extensions\n"
@@ -24,6 +33,20 @@ msgstr ""
 "X-Generator: Gtranslator 2.91.7\n"
 "X-Project-Style: gnome\n"
 "X-POT-Import-Date: 2012-03-05 15:06:12+0000\n"
+"#-#-#-#-#  fi.po (desktop-icons master)  #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-04-29 14:11+0000\n"
+"PO-Revision-Date: 2019-06-02 15:23+0300\n"
+"Last-Translator: Jiri Grönroos <jiri gronroos+l10n iki fi>\n"
+"Language-Team: Finnish <lokalisointi-lista googlegroups com>\n"
+"Language: fi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.0.6\n"
 
 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
 msgid "GNOME Classic"
@@ -352,6 +375,183 @@ msgstr "Nimi"
 msgid "Workspace %d"
 msgstr "Työtila %d"
 
+#: desktopGrid.js:334
+msgid "Display Settings"
+msgstr "Näytön asetukset"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+#, fuzzy
+msgid "Icon size"
+msgstr ""
+"#-#-#-#-#  fi.po (gnome-shell-extensions)  #-#-#-#-#\n"
+"Kuvakkeiden koko\n"
+"#-#-#-#-#  fi.po (desktop-icons master)  #-#-#-#-#\n"
+"Kuvakekoko"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Uusi kansion nimi"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Luo"
+
+#: createFolderDialog.js:74 desktopGrid.js:592
+msgid "Cancel"
+msgstr "Peru"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Kansion nimi ei voi sisältää merkkiä “/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Kansion nimi ei voi olla “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Kansion nimi ei voi olla “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Kansiot, joiden nimi alkaa merkillä “.”, ovat piilotettuja."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Nimi on jo toisen tiedoston tai kansion käytössä."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Työpöytäkuvakkeiden koko"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Pieni"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Normaali"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Suuri"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Näytä kotikansio työpöydällä"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Näytä roskakorin kuvake työpöydällä"
+
+#: desktopGrid.js:323
+msgid "New Folder"
+msgstr "Uusi kansio"
+
+#: desktopGrid.js:325
+msgid "Paste"
+msgstr "Liitä"
+
+#: desktopGrid.js:326
+msgid "Undo"
+msgstr "Kumoa"
+
+#: desktopGrid.js:327
+msgid "Redo"
+msgstr "Tee uudeleen"
+
+#: desktopGrid.js:329
+msgid "Show Desktop in Files"
+msgstr "Näytä työpöytä tiedostonhallinnassa"
+
+#: desktopGrid.js:330 fileItem.js:610
+msgid "Open in Terminal"
+msgstr "Avaa päätteessä"
+
+#: desktopGrid.js:332
+msgid "Change Background…"
+msgstr "Vaihda taustakuvaa…"
+
+#: desktopGrid.js:335
+msgid "Settings"
+msgstr "Asetukset"
+
+#: desktopGrid.js:582
+msgid "Enter file name…"
+msgstr "Anna tiedostonimi…"
+
+#: desktopGrid.js:586
+msgid "OK"
+msgstr "OK"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "Komentoa ei löydy"
+
+#: fileItem.js:494
+msgid "Don’t Allow Launching"
+msgstr "Älä salli käynnistämistä"
+
+#: fileItem.js:496
+msgid "Allow Launching"
+msgstr "Salli käynnistäminen"
+
+#: fileItem.js:578
+msgid "Open"
+msgstr "Avaa"
+
+#: fileItem.js:582
+msgid "Open With Other Application"
+msgstr "Avaa toisella sovelluksella"
+
+#: fileItem.js:586
+msgid "Cut"
+msgstr "Leikkaa"
+
+#: fileItem.js:587
+msgid "Copy"
+msgstr "Kopioi"
+
+#: fileItem.js:589
+msgid "Rename…"
+msgstr "Nimeä uudelleen…"
+
+#: fileItem.js:590
+msgid "Move to Trash"
+msgstr "Siirrä roskakoriin"
+
+#: fileItem.js:600
+msgid "Empty Trash"
+msgstr "Tyhjennä roskakori"
+
+#: fileItem.js:606
+msgid "Properties"
+msgstr "Ominaisuudet"
+
+#: fileItem.js:608
+msgid "Show in Files"
+msgstr "Näytä tiedostonhallinnassa"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Aseta työpöytäkuvakkeiden koko."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Näytä kotikansio"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Näytä kotikansio työpöydällä."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Näytä roskakorin kuvake"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Näytä roskakorin kuvake työpöydällä."
+
 #~ msgid "CPU"
 #~ msgstr "Suoritin"
 
@@ -388,9 +588,6 @@ msgstr "Työtila %d"
 #~ msgid "Display"
 #~ msgstr "Näyttö"
 
-#~ msgid "Display Settings"
-#~ msgstr "Näytön asetukset"
-
 #~ msgid "Drag here to add favorites"
 #~ msgstr "Raahaa tähän lisätäksesi suosikkeihin"
 
@@ -412,9 +609,6 @@ msgstr "Työtila %d"
 #~ msgstr ""
 #~ "Asettaa telakan sijainnin näytöllä. Sallitut arvot ovat 'right' tai 'left'"
 
-#~ msgid "Icon size"
-#~ msgstr "Kuvakkeiden koko"
-
 #~ msgid "Sets icon size of the dock."
 #~ msgstr "Asettaa telakan kuvakkeiden koon."
 
@@ -459,3 +653,6 @@ msgstr "Työtila %d"
 
 #~ msgid "Workspace & Icons"
 #~ msgstr "Työtila ja kuvakkeet"
+
+#~ msgid "Huge"
+#~ msgstr "Valtava"
diff --git a/po/fr.po b/po/fr.po
index 6825d0d..6961fa4 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -1,3 +1,4 @@
+# #-#-#-#-#  fr.po (gnome-shell-extensions master)  #-#-#-#-#
 # French translation for gnome-shell-extensions.
 # Copyright (C) 2011-12 Listed translators
 # This file is distributed under the same license as the gnome-shell-extensions package.
@@ -5,8 +6,17 @@
 # Alain Lojewski <allomervan gmail com>, 2012-2013.
 # Charles Monzat <charles monzat numericable fr>, 2018.
 #
+# #-#-#-#-#  fr.po (desktop-icons master)  #-#-#-#-#
+# French translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# ghentdebian <ghent debian gmail com>, 2018.
+# Charles Monzat <charles monzat numericable fr>, 2018.
+#
+#, fuzzy
 msgid ""
 msgstr ""
+"#-#-#-#-#  fr.po (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/";
 "issues\n"
@@ -20,6 +30,20 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 "X-Generator: Gtranslator 3.30.0\n"
+"#-#-#-#-#  fr.po (desktop-icons master)  #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2018-12-14 09:12+0000\n"
+"PO-Revision-Date: 2018-12-16 17:47+0100\n"
+"Last-Translator: Charles Monzat <charles monzat numericable fr>\n"
+"Language-Team: GNOME French Team <gnomefr traduc org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1)\n"
+"X-Generator: Gtranslator 3.30.0\n"
 
 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
 msgid "GNOME Classic"
@@ -323,6 +347,146 @@ msgstr "Nom"
 msgid "Workspace %d"
 msgstr "Espace de travail %d"
 
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Taille des icônes du bureau"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Petite"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Normale"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Grande"
+
+#: prefs.js:102
+msgid "Huge"
+msgstr "Immense"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Montrer le dossier personnel sur le bureau"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Montrer la corbeille sur le bureau"
+
+#: desktopGrid.js:182 desktopGrid.js:301
+msgid "New Folder"
+msgstr "Nouveau dossier"
+
+#: desktopGrid.js:303
+msgid "Paste"
+msgstr "Coller"
+
+#: desktopGrid.js:304
+msgid "Undo"
+msgstr "Annuler"
+
+#: desktopGrid.js:305
+msgid "Redo"
+msgstr "Refaire"
+
+#: desktopGrid.js:307
+msgid "Open Desktop in Files"
+msgstr "Ouvrir le bureau dans Fichiers"
+
+#: desktopGrid.js:308
+msgid "Open Terminal"
+msgstr "Ouvrir un terminal"
+
+#: desktopGrid.js:310
+msgid "Change Background…"
+msgstr "Changer l’arrière-plan…"
+
+#: desktopGrid.js:311
+msgid "Display Settings"
+msgstr "Configuration d’affichage"
+
+#: desktopGrid.js:312
+msgid "Settings"
+msgstr "Paramètres"
+
+#: desktopGrid.js:568
+msgid "Enter file name…"
+msgstr "Saisir un nom de fichier…"
+
+#: desktopGrid.js:572
+msgid "OK"
+msgstr "Valider"
+
+#: desktopGrid.js:578
+msgid "Cancel"
+msgstr "Annuler"
+
+#: fileItem.js:485
+msgid "Don’t Allow Launching"
+msgstr "Ne pas autoriser le lancement"
+
+#: fileItem.js:487
+msgid "Allow Launching"
+msgstr "Autoriser le lancement"
+
+#: fileItem.js:550
+msgid "Open"
+msgstr "Ouvrir"
+
+#: fileItem.js:553
+msgid "Cut"
+msgstr "Couper"
+
+#: fileItem.js:554
+msgid "Copy"
+msgstr "Copier"
+
+#: fileItem.js:556
+msgid "Rename"
+msgstr "Renommer"
+
+#: fileItem.js:557
+msgid "Move to Trash"
+msgstr "Mettre à la corbeille"
+
+#: fileItem.js:567
+msgid "Empty Trash"
+msgstr "Vider la corbeille"
+
+#: fileItem.js:573
+msgid "Properties"
+msgstr "Propriétés"
+
+#: fileItem.js:575
+msgid "Show in Files"
+msgstr "Montrer dans Fichiers"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Icon size"
+msgstr "Taille d’icônes"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:13
+msgid "Set the size for the desktop icons."
+msgstr "Définir la taille des icônes du bureau."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show personal folder"
+msgstr "Montrer le dossier personnel"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:18
+msgid "Show the personal folder in the desktop."
+msgstr "Montrer le dossier personnel sur le bureau."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show trash icon"
+msgstr "Montrer l’icône de la corbeille"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:23
+msgid "Show the trash icon in the desktop."
+msgstr "Montrer la corbeille sur le bureau."
+
 #~ msgid "Attach modal dialog to the parent window"
 #~ msgstr "Attacher les boîtes de dialogue modales à leur fenêtre parente"
 
@@ -360,3 +524,6 @@ msgstr "Espace de travail %d"
 
 #~ msgid "Memory"
 #~ msgstr "Mémoire"
+
+#~ msgid "Ok"
+#~ msgstr "Valider"
diff --git a/po/fur.po b/po/fur.po
index 0fb3f70..a2793c9 100644
--- a/po/fur.po
+++ b/po/fur.po
@@ -1,10 +1,19 @@
+# #-#-#-#-#  fur.po (gnome-shell-extensions master)  #-#-#-#-#
 # Friulian translation for gnome-shell-extensions.
 # Copyright (C) 2013 gnome-shell-extensions's COPYRIGHT HOLDER
 # This file is distributed under the same license as the gnome-shell-extensions package.
 # Fabio Tomat <f t public gmail com>, 2013.
 #
+# #-#-#-#-#  fur.po (desktop-icons master)  #-#-#-#-#
+# Friulian translation for desktop-icons.
+# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Fabio Tomat <f t public gmail com>, 2019.
+#
+#, fuzzy
 msgid ""
 msgstr ""
+"#-#-#-#-#  fur.po (gnome-shell-extensions master)  #-#-#-#-#\n"
 "Project-Id-Version: gnome-shell-extensions master\n"
 "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-";
 "shell&keywords=I18N+L10N&component=extensions\n"
@@ -17,6 +26,19 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 1.8.12\n"
+"#-#-#-#-#  fur.po (desktop-icons master)  #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-03-01 12:11+0000\n"
+"PO-Revision-Date: 2019-03-05 22:20+0100\n"
+"Last-Translator: Fabio Tomat <f t public gmail com>\n"
+"Language-Team: Friulian <fur li org>\n"
+"Language: fur\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.2.1\n"
 
 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
 msgid "GNOME Classic"
@@ -355,6 +377,179 @@ msgstr "Non"
 msgid "Workspace %d"
 msgstr "Spazi di lavôr %d"
 
+#: desktopGrid.js:331
+#, fuzzy
+msgid "Display Settings"
+msgstr ""
+"#-#-#-#-#  fur.po (gnome-shell-extensions master)  #-#-#-#-#\n"
+"Impostazions Visôr\n"
+"#-#-#-#-#  fur.po (desktop-icons master)  #-#-#-#-#\n"
+"Impostazions visôr"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Gnûf non de cartele"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Cree"
+
+#: createFolderDialog.js:74 desktopGrid.js:586
+msgid "Cancel"
+msgstr "Anule"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "I nons des cartelis no puedin contignî il caratar “/”"
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Une cartele no pues jessi clamade “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Une cartele no pues jessi clamade “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Lis cartelis cul “.” al inizi dal lôr non a son platadis."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Un file o une cartele cul stes non e esist za."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Dimension pes iconis dal scritori"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Piçule"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Standard"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Largje"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Mostre la cartele personâl intal scritori"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Mostre la icone de scovacere intal scritori"
+
+#: desktopGrid.js:320
+msgid "New Folder"
+msgstr "Gnove cartele"
+
+#: desktopGrid.js:322
+msgid "Paste"
+msgstr "Tache"
+
+#: desktopGrid.js:323
+msgid "Undo"
+msgstr "Anule"
+
+#: desktopGrid.js:324
+msgid "Redo"
+msgstr "Torne fâ"
+
+#: desktopGrid.js:326
+msgid "Show Desktop in Files"
+msgstr "Mostre Scritori in File"
+
+#: desktopGrid.js:327 fileItem.js:606
+msgid "Open in Terminal"
+msgstr "Vierç in Terminâl"
+
+#: desktopGrid.js:329
+msgid "Change Background…"
+msgstr "Cambie sfont…"
+
+#: desktopGrid.js:332
+msgid "Settings"
+msgstr "Impostazions"
+
+#: desktopGrid.js:576
+msgid "Enter file name…"
+msgstr "Inserìs il non dal file…"
+
+#: desktopGrid.js:580
+msgid "OK"
+msgstr "Va ben"
+
+#: fileItem.js:490
+msgid "Don’t Allow Launching"
+msgstr "No sta permeti inviament"
+
+#: fileItem.js:492
+msgid "Allow Launching"
+msgstr "Permet inviament"
+
+#: fileItem.js:574
+msgid "Open"
+msgstr "Vierç"
+
+#: fileItem.js:578
+msgid "Open With Other Application"
+msgstr "Vierç cuntune altre aplicazion"
+
+#: fileItem.js:582
+msgid "Cut"
+msgstr "Taie"
+
+#: fileItem.js:583
+msgid "Copy"
+msgstr "Copie"
+
+#: fileItem.js:585
+msgid "Rename…"
+msgstr "Cambie non..."
+
+#: fileItem.js:586
+msgid "Move to Trash"
+msgstr "Sposte te scovacere"
+
+#: fileItem.js:596
+msgid "Empty Trash"
+msgstr "Disvuede scovacere"
+
+#: fileItem.js:602
+msgid "Properties"
+msgstr "Propietâts"
+
+#: fileItem.js:604
+msgid "Show in Files"
+msgstr "Mostre in File"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Dimension icone"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Stabilìs la dimension pes iconis dal scritori."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Mostre cartele personâl"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Mostre la cartele personâl intal scritori."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Mostre la icone de scovacere"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Mostre la icone de scovacere intal scritori."
+
 #~ msgid "CPU"
 #~ msgstr "CPU"
 
@@ -381,6 +576,3 @@ msgstr "Spazi di lavôr %d"
 
 #~ msgid "Display"
 #~ msgstr "Visôr"
-
-#~ msgid "Display Settings"
-#~ msgstr "Impostazions Visôr"
diff --git a/po/hr.po b/po/hr.po
index deee76e..a4d39d1 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -1,10 +1,19 @@
+# #-#-#-#-#  hr.po (gnome-shell-extensions master)  #-#-#-#-#
 # Croatian translation for gnome-shell-extensions.
 # Copyright (C) 2017 gnome-shell-extensions's COPYRIGHT HOLDER
 # This file is distributed under the same license as the gnome-shell-extensions package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
+# #-#-#-#-#  hr.po (gnome-shell-extension-desktop-icons)  #-#-#-#-#
+# Croatian translation for gnome-shell-extension-desktop-icons
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the gnome-shell-extension-desktop-icons package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+#, fuzzy
 msgid ""
 msgstr ""
+"#-#-#-#-#  hr.po (gnome-shell-extensions master)  #-#-#-#-#\n"
 "Project-Id-Version: gnome-shell-extensions master\n"
 "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-";
 "shell&keywords=I18N+L10N&component=extensions\n"
@@ -19,6 +28,20 @@ msgstr ""
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Poedit 2.0.2\n"
+"#-#-#-#-#  hr.po (gnome-shell-extension-desktop-icons)  #-#-#-#-#\n"
+"Project-Id-Version: gnome-shell-extension-desktop-icons\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-04-29 14:11+0000\n"
+"PO-Revision-Date: 2019-06-22 18:52+0200\n"
+"Last-Translator: gogo <trebelnik2 gmail com>\n"
+"Language-Team: Croatian <hr li org>\n"
+"Language: hr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2019-03-27 09:36+0000\n"
+"X-Generator: Poedit 2.2.1\n"
 
 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
 msgid "GNOME Classic"
@@ -353,3 +376,175 @@ msgstr "Naziv"
 #, javascript-format
 msgid "Workspace %d"
 msgstr "Radni prostor %d"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Novi naziv mape"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Stvori"
+
+#: createFolderDialog.js:74 desktopGrid.js:592
+msgid "Cancel"
+msgstr "Odustani"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Naziv mape ne može sadržavati “/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Mapa se ne može nazvati “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Mapa se ne može nazvati “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Mape sa “.” na početku njihovih naziva su skrivene."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Već postoji datoteka ili mapa s tim nazivom."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Veličina ikona radne površine"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Male"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Standardne"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Velike"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Prikaži osobnu mapu na radnoj površini"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Prikaži mapu smeća na radnoj površini"
+
+#: desktopGrid.js:323
+msgid "New Folder"
+msgstr "Nova mapa"
+
+#: desktopGrid.js:325
+msgid "Paste"
+msgstr "Zalijepi"
+
+#: desktopGrid.js:326
+msgid "Undo"
+msgstr "Poništi"
+
+#: desktopGrid.js:327
+msgid "Redo"
+msgstr "Ponovi"
+
+#: desktopGrid.js:329
+msgid "Show Desktop in Files"
+msgstr "Prikaži radnu površinu u Datotekama"
+
+#: desktopGrid.js:330 fileItem.js:610
+msgid "Open in Terminal"
+msgstr "Otvori u Terminalu"
+
+#: desktopGrid.js:332
+msgid "Change Background…"
+msgstr "Promijeni pozadinu…"
+
+#: desktopGrid.js:334
+msgid "Display Settings"
+msgstr "Postavke zaslona"
+
+#: desktopGrid.js:335
+msgid "Settings"
+msgstr "Postavke"
+
+#: desktopGrid.js:582
+msgid "Enter file name…"
+msgstr "Upiši naziv datoteke…"
+
+#: desktopGrid.js:586
+msgid "OK"
+msgstr "U redu"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "Naredba nije pronađena"
+
+#: fileItem.js:494
+msgid "Don’t Allow Launching"
+msgstr "Ne dopuštaj pokretanje"
+
+#: fileItem.js:496
+msgid "Allow Launching"
+msgstr "Dopusti pokretanje"
+
+#: fileItem.js:578
+msgid "Open"
+msgstr "Otvori"
+
+#: fileItem.js:582
+msgid "Open With Other Application"
+msgstr "Otvori s drugom aplikacijom"
+
+#: fileItem.js:586
+msgid "Cut"
+msgstr "Izreži"
+
+#: fileItem.js:587
+msgid "Copy"
+msgstr "Kopiraj"
+
+#: fileItem.js:589
+msgid "Rename…"
+msgstr "Preimenuj…"
+
+#: fileItem.js:590
+msgid "Move to Trash"
+msgstr "Premjesti u smeće"
+
+#: fileItem.js:600
+msgid "Empty Trash"
+msgstr "Isprazni smeće"
+
+#: fileItem.js:606
+msgid "Properties"
+msgstr "Svojstva"
+
+#: fileItem.js:608
+msgid "Show in Files"
+msgstr "Prikaži u Datotekama"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Veličina ikona"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Postavi veličinu ikona radne površine."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Prikaži osobnu mapu"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Prikaži osobnu mapu na radnoj površini."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Prikaži ikonu smeća"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Prikaži ikonu smeća na radnoj površini."
diff --git a/po/hu.po b/po/hu.po
index 7c2c406..0635270 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -1,3 +1,4 @@
+# #-#-#-#-#  hu.po (gnome-shell-extensions master)  #-#-#-#-#
 # Hungarian translation of
 # Copyright (C) 2011, 2012, 2013, 2014, 2017 Free Software Foundation, Inc.
 # This file is distributed under the same license as the gnome-shell-extensions package.
@@ -5,8 +6,16 @@
 # Biró Balázs <arch.scar at gmail dot com>, 2011.
 # Gabor Kelemen <kelemeng at gnome dot hu>, 2011, 2012, 2013.
 # Balázs Úr <urbalazs at gmail dot com>, 2013, 2014, 2017.
+# #-#-#-#-#  hu.po (desktop-icons master)  #-#-#-#-#
+# Hungarian translation for desktop-icons.
+# Copyright (C) 2019 The Free Software Foundation, inc.
+# This file is distributed under the same license as the desktop-icons package.
+#
+# Balázs Úr <ur.balazs at fsf dot hu>, 2019.
+#, fuzzy
 msgid ""
 msgstr ""
+"#-#-#-#-#  hu.po (gnome-shell-extensions master)  #-#-#-#-#\n"
 "Project-Id-Version: gnome-shell-extensions master\n"
 "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-";
 "shell&keywords=I18N+L10N&component=extensions\n"
@@ -20,6 +29,20 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 2.0.2\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"#-#-#-#-#  hu.po (desktop-icons master)  #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-04-29 14:11+0000\n"
+"PO-Revision-Date: 2019-06-01 18:50+0200\n"
+"Last-Translator: Balázs Úr <ur.balazs at fsf dot hu>\n"
+"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
+"Language: hu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 18.12.3\n"
 
 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
 msgid "GNOME Classic"
@@ -356,3 +379,175 @@ msgstr "Név"
 #, javascript-format
 msgid "Workspace %d"
 msgstr "%d. munkaterület"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Új mappa neve"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Létrehozás"
+
+#: createFolderDialog.js:74 desktopGrid.js:592
+msgid "Cancel"
+msgstr "Mégse"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "A mappanevek nem tartalmazhatnak „/” karaktert."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Egy mappának nem lehet „.” a neve."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Egy mappának nem lehet „..” a neve."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "A „.” karakterrel kezdődő nevű mappák rejtettek."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Már van egy fájl vagy mappa azzal a névvel."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Az asztali ikonok mérete"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Kicsi"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Szabványos"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Nagy"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "A személyes mappa megjelenítése az asztalon"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "A kuka ikon megjelenítése az asztalon"
+
+#: desktopGrid.js:323
+msgid "New Folder"
+msgstr "Új mappa"
+
+#: desktopGrid.js:325
+msgid "Paste"
+msgstr "Beillesztés"
+
+#: desktopGrid.js:326
+msgid "Undo"
+msgstr "Visszavonás"
+
+#: desktopGrid.js:327
+msgid "Redo"
+msgstr "Újra"
+
+#: desktopGrid.js:329
+msgid "Show Desktop in Files"
+msgstr "Asztal megjelenítése a Fájlokban"
+
+#: desktopGrid.js:330 fileItem.js:610
+msgid "Open in Terminal"
+msgstr "Megnyitás terminálban"
+
+#: desktopGrid.js:332
+msgid "Change Background…"
+msgstr "Háttér megváltoztatása…"
+
+#: desktopGrid.js:334
+msgid "Display Settings"
+msgstr "Megjelenítés beállításai"
+
+#: desktopGrid.js:335
+msgid "Settings"
+msgstr "Beállítások"
+
+#: desktopGrid.js:582
+msgid "Enter file name…"
+msgstr "Adjon meg egy fájlnevet…"
+
+#: desktopGrid.js:586
+msgid "OK"
+msgstr "Rendben"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "A parancs nem található"
+
+#: fileItem.js:494
+msgid "Don’t Allow Launching"
+msgstr "Ne engedélyezzen indítást"
+
+#: fileItem.js:496
+msgid "Allow Launching"
+msgstr "Indítás engedélyezése"
+
+#: fileItem.js:578
+msgid "Open"
+msgstr "Megnyitás"
+
+#: fileItem.js:582
+msgid "Open With Other Application"
+msgstr "Megnyitás egyéb alkalmazással"
+
+#: fileItem.js:586
+msgid "Cut"
+msgstr "Kivágás"
+
+#: fileItem.js:587
+msgid "Copy"
+msgstr "Másolás"
+
+#: fileItem.js:589
+msgid "Rename…"
+msgstr "Átnevezés…"
+
+#: fileItem.js:590
+msgid "Move to Trash"
+msgstr "Áthelyezés a Kukába"
+
+#: fileItem.js:600
+msgid "Empty Trash"
+msgstr "Kuka ürítése"
+
+#: fileItem.js:606
+msgid "Properties"
+msgstr "Tulajdonságok"
+
+#: fileItem.js:608
+msgid "Show in Files"
+msgstr "Megjelenítés a Fájlokban"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Ikonméret"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Az asztali ikonok méretének beállítása."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Személyes mappa megjelenítése"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "A személyes mappa megjelenítése az asztalon."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Kuka ikon megjelenítése"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "A kuka ikon megjelenítése az asztalon."
diff --git a/po/id.po b/po/id.po
index 8986a5e..29f27b6 100644
--- a/po/id.po
+++ b/po/id.po
@@ -1,11 +1,20 @@
+# #-#-#-#-#  id.po (gnome-shell-extensions master)  #-#-#-#-#
 # Indonesian translation for gnome-shell-extensions.
 # Copyright (C) 2012 gnome-shell-extensions's COPYRIGHT HOLDER
 # This file is distributed under the same license as the gnome-shell-extensions package.
 #
 # Andika Triwidada <andika gmail com>, 2012, 2013.
 # Dirgita <dirgitadevina yahoo co id>, 2012.
+# #-#-#-#-#  id.po (desktop-icons master)  #-#-#-#-#
+# Indonesian translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Kukuh Syafaat <kukuhsyafaat gnome org>, 2018, 2019.
+#
+#, fuzzy
 msgid ""
 msgstr ""
+"#-#-#-#-#  id.po (gnome-shell-extensions master)  #-#-#-#-#\n"
 "Project-Id-Version: gnome-shell-extensions master\n"
 "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-";
 "shell&keywords=I18N+L10N&component=extensions\n"
@@ -20,6 +29,19 @@ msgstr ""
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 "X-Generator: Poedit 2.0.2\n"
+"#-#-#-#-#  id.po (desktop-icons master)  #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-04-29 14:11+0000\n"
+"PO-Revision-Date: 2019-07-11 13:57+0700\n"
+"Last-Translator: Kukuh Syafaat <kukuhsyafaat gnome org>\n"
+"Language-Team: Indonesian <gnome-l10n-id googlegroups com>\n"
+"Language: id\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.2.3\n"
 
 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
 msgid "GNOME Classic"
@@ -358,8 +380,183 @@ msgstr "Nama"
 msgid "Workspace %d"
 msgstr "Ruang Kerja %d"
 
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Nama folder baru"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Buat"
+
+#: createFolderDialog.js:74 desktopGrid.js:592
+msgid "Cancel"
+msgstr "Batal"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Nama folder tak boleh memuat \"/\"."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Sebuah folder tak bisa dinamai \".\"."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Sebuah folder tak bisa dinamai \"..\"."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Folder dengan \".\" di awal nama mereka disembunyikan."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Folder dengan nama itu sudah ada."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Ukuran untuk ikon destop"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Kecil"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Standar"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Besar"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Tampilkan folder pribadi di destop"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Tampilkan ikon tong sampah di destop"
+
+#: desktopGrid.js:323
+msgid "New Folder"
+msgstr "Folder Baru"
+
+#: desktopGrid.js:325
+msgid "Paste"
+msgstr "Tempel"
+
+#: desktopGrid.js:326
+msgid "Undo"
+msgstr "Tak Jadi"
+
+#: desktopGrid.js:327
+msgid "Redo"
+msgstr "Jadi Lagi"
+
+#: desktopGrid.js:329
+msgid "Show Desktop in Files"
+msgstr "Tampilkan Destop pada Berkas"
+
+#: desktopGrid.js:330 fileItem.js:610
+msgid "Open in Terminal"
+msgstr "Buka dalam Terminal"
+
+#: desktopGrid.js:332
+msgid "Change Background…"
+msgstr "Ubah Latar Belakang…"
+
+#: desktopGrid.js:334
+msgid "Display Settings"
+msgstr "Pengaturan Tampilan"
+
+#: desktopGrid.js:335
+msgid "Settings"
+msgstr "Pengaturan"
+
+#: desktopGrid.js:582
+msgid "Enter file name…"
+msgstr "Masukkan nama berkas…"
+
+#: desktopGrid.js:586
+msgid "OK"
+msgstr "OK"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "Perintah tidak ditemukan"
+
+#: fileItem.js:494
+msgid "Don’t Allow Launching"
+msgstr "Jangan Izinkan Peluncuran"
+
+#: fileItem.js:496
+msgid "Allow Launching"
+msgstr "Izinkan Peluncuran"
+
+#: fileItem.js:578
+msgid "Open"
+msgstr "Buka"
+
+#: fileItem.js:582
+msgid "Open With Other Application"
+msgstr "Buka Dengan Aplikasi Lain"
+
+#: fileItem.js:586
+msgid "Cut"
+msgstr "Potong"
+
+#: fileItem.js:587
+msgid "Copy"
+msgstr "Salin"
+
+#: fileItem.js:589
+msgid "Rename…"
+msgstr "Ganti Nama…"
+
+#: fileItem.js:590
+msgid "Move to Trash"
+msgstr "Pindahkan ke Tong Sampah"
+
+#: fileItem.js:600
+msgid "Empty Trash"
+msgstr "Kosongkan Tong Sampah"
+
+#: fileItem.js:606
+msgid "Properties"
+msgstr "Properti"
+
+#: fileItem.js:608
+msgid "Show in Files"
+msgstr "Tampilkan pada Berkas"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Ukuran ikon"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Set ukuran untuk ikon destop."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Tampilkan folder pribadi"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Tampilkan folder pribadi di destop."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Tampilkan ikon tong sampah"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Tampilkan ikon tong sampah di destop."
+
 #~ msgid "CPU"
 #~ msgstr "CPU"
 
 #~ msgid "Memory"
 #~ msgstr "Memori"
+
+#~ msgid "Huge"
+#~ msgstr "Sangat besar"
diff --git a/po/it.po b/po/it.po
index 4e3a59c..2d215b1 100644
--- a/po/it.po
+++ b/po/it.po
@@ -1,3 +1,4 @@
+# #-#-#-#-#  it.po (gnome-shell-extensions)  #-#-#-#-#
 # Italian translations for GNOME Shell extensions
 # Copyright (C) 2011 Giovanni Campagna et al.
 # Copyright (C) 2012, 2013, 2014, 2015, 2017 The Free Software Foundation, Inc.
@@ -6,8 +7,17 @@
 # Milo Casagrande <milo milo name>, 2013, 2014, 2015, 2017.
 # Gianvito Cavasoli <gianvito gmx it>, 2017.
 #
+# #-#-#-#-#  it.po (desktop-icons master)  #-#-#-#-#
+# Italian translation for desktop-icons.
+# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Massimo Branchini <max bra gtalk gmail com>, 2019.
+# Milo Casagrande <milo milo name>, 2019.
+#
+#, fuzzy
 msgid ""
 msgstr ""
+"#-#-#-#-#  it.po (gnome-shell-extensions)  #-#-#-#-#\n"
 "Project-Id-Version: gnome-shell-extensions\n"
 "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-";
 "shell&keywords=I18N+L10N&component=extensions\n"
@@ -21,6 +31,20 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Poedit 1.8.12\n"
+"#-#-#-#-#  it.po (desktop-icons master)  #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-03-01 12:11+0000\n"
+"PO-Revision-Date: 2019-03-12 09:51+0100\n"
+"Last-Translator: Milo Casagrande <milo milo name>\n"
+"Language-Team: Italian <tp lists linux it>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.2.1\n"
 
 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
 msgid "GNOME Classic"
@@ -362,3 +386,171 @@ msgstr "Nome"
 #, javascript-format
 msgid "Workspace %d"
 msgstr "Spazio di lavoro %d"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Nuova cartella"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Crea"
+
+#: createFolderDialog.js:74 desktopGrid.js:586
+msgid "Cancel"
+msgstr "Annulla"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "I nomi di cartelle non possono contenere il carattere «/»"
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Una cartella non può essere chiamata «.»."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Una cartella non può essere chiamata «..»."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Cartelle il cui nome inizia con «.» sono nascoste."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Esiste già un file o una cartella con quel nome."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Dimensione delle icone della scrivania"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Piccola"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Normale"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Grande"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Mostra la cartella personale sulla scrivania"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Mostra il cestino sulla scrivania"
+
+#: desktopGrid.js:320
+msgid "New Folder"
+msgstr "Nuova cartella"
+
+#: desktopGrid.js:322
+msgid "Paste"
+msgstr "Incolla"
+
+#: desktopGrid.js:323
+msgid "Undo"
+msgstr "Annulla"
+
+#: desktopGrid.js:324
+msgid "Redo"
+msgstr "Ripeti"
+
+#: desktopGrid.js:326
+msgid "Show Desktop in Files"
+msgstr "Mostra la scrivania in File"
+
+#: desktopGrid.js:327 fileItem.js:606
+msgid "Open in Terminal"
+msgstr "Apri in Terminale"
+
+#: desktopGrid.js:329
+msgid "Change Background…"
+msgstr "Cambia lo sfondo…"
+
+#: desktopGrid.js:331
+msgid "Display Settings"
+msgstr "Impostazioni dello schermo"
+
+#: desktopGrid.js:332
+msgid "Settings"
+msgstr "Impostazioni"
+
+#: desktopGrid.js:576
+msgid "Enter file name…"
+msgstr "Indicare un nome per il file…"
+
+#: desktopGrid.js:580
+msgid "OK"
+msgstr "Ok"
+
+#: fileItem.js:490
+msgid "Don’t Allow Launching"
+msgstr "Non permettere l'esecuzione"
+
+#: fileItem.js:492
+msgid "Allow Launching"
+msgstr "Permetti l'esecuzione"
+
+#: fileItem.js:574
+msgid "Open"
+msgstr "Apri"
+
+#: fileItem.js:578
+msgid "Open With Other Application"
+msgstr "Apri con altra applicazione"
+
+#: fileItem.js:582
+msgid "Cut"
+msgstr "Taglia"
+
+#: fileItem.js:583
+msgid "Copy"
+msgstr "Copia"
+
+#: fileItem.js:585
+msgid "Rename…"
+msgstr "Rinomina…"
+
+#: fileItem.js:586
+msgid "Move to Trash"
+msgstr "Sposta nel cestino"
+
+#: fileItem.js:596
+msgid "Empty Trash"
+msgstr "Svuota il cestino"
+
+#: fileItem.js:602
+msgid "Properties"
+msgstr "Proprietà"
+
+#: fileItem.js:604
+msgid "Show in Files"
+msgstr "Mostra in File"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Dimensione dell'icona"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Imposta la grandezza delle icone della scrivania."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Mostra la cartella personale"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Mostra la cartella personale sulla scrivania."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Mostra il cestino"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Mostra il cestino sulla scrivania."
diff --git a/po/ja.po b/po/ja.po
index a2201ef..df5646d 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -1,3 +1,4 @@
+# #-#-#-#-#  ja.po (gnome-shell-extensions master)  #-#-#-#-#
 # gnome-shell-extensions ja.po
 # Copyright (C) 2011-2013 gnome-shell-extensions's COPYRIGHT HOLDER
 # This file is distributed under the same license as the gnome-shell-extensions package.
@@ -7,8 +8,16 @@
 # Ikuya Awashiro <ikuya fruitsbasket info>, 2014.
 # Hajime Taira <htaira redhat com>, 2014, 2015.
 #
+# #-#-#-#-#  ja.po (desktop-icons master)  #-#-#-#-#
+# Japanese translation for desktop-icons.
+# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# sicklylife <translation sicklylife jp>, 2019.
+#
+#, fuzzy
 msgid ""
 msgstr ""
+"#-#-#-#-#  ja.po (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/";
 "issues\n"
@@ -21,6 +30,19 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
+"#-#-#-#-#  ja.po (desktop-icons master)  #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-04-29 14:11+0000\n"
+"PO-Revision-Date: 2019-08-29 21:30+0900\n"
+"Last-Translator: sicklylife <translation sicklylife jp>\n"
+"Language-Team: Japanese <gnome-translation gnome gr jp>\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
 
 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
 msgid "GNOME Classic"
@@ -270,6 +292,188 @@ msgstr "名前"
 msgid "Workspace %d"
 msgstr "ワークスペース %d"
 
+#: desktopGrid.js:334
+#, fuzzy
+msgid "Display Settings"
+msgstr ""
+"#-#-#-#-#  ja.po (gnome-shell-extensions master)  #-#-#-#-#\n"
+"ディスプレイ設定\n"
+"#-#-#-#-#  ja.po (desktop-icons master)  #-#-#-#-#\n"
+"ディスプレイの設定"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+#, fuzzy
+msgid "Icon size"
+msgstr ""
+"#-#-#-#-#  ja.po (gnome-shell-extensions master)  #-#-#-#-#\n"
+"アイコンのサイズ\n"
+"#-#-#-#-#  ja.po (desktop-icons master)  #-#-#-#-#\n"
+"アイコンサイズ"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "新しいフォルダー名"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "作成"
+
+#: createFolderDialog.js:74 desktopGrid.js:592
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "“/”は、フォルダー名に含められません。"
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "“.”という名前をフォルダーに付けられません。"
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "“..”という名前をフォルダーに付けられません。"
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "名前が“.”で始まるフォルダーは、隠しフォルダーになります。"
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "その名前のファイルかフォルダーがすでに存在します。"
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "デスクトップアイコンのサイズ"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "小さい"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "標準"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "大きい"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "デスクトップにホームフォルダーを表示する"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "デスクトップにゴミ箱を表示する"
+
+#: desktopGrid.js:323
+msgid "New Folder"
+msgstr "新しいフォルダー"
+
+#: desktopGrid.js:325
+msgid "Paste"
+msgstr "貼り付け"
+
+#: desktopGrid.js:326
+msgid "Undo"
+msgstr "元に戻す"
+
+#: desktopGrid.js:327
+msgid "Redo"
+msgstr "やり直す"
+
+#: desktopGrid.js:329
+msgid "Show Desktop in Files"
+msgstr "“ファイル”でデスクトップを表示"
+
+#: desktopGrid.js:330 fileItem.js:610
+msgid "Open in Terminal"
+msgstr "端末を開く"
+
+#: desktopGrid.js:332
+msgid "Change Background…"
+msgstr "背景の変更…"
+
+#: desktopGrid.js:335
+msgid "Settings"
+msgstr "設定"
+
+#: desktopGrid.js:582
+msgid "Enter file name…"
+msgstr "ファイル名を入力してください…"
+
+#: desktopGrid.js:586
+msgid "OK"
+msgstr "OK"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "コマンドが見つかりません"
+
+#: fileItem.js:494
+msgid "Don’t Allow Launching"
+msgstr "起動を許可しない"
+
+#: fileItem.js:496
+msgid "Allow Launching"
+msgstr "起動を許可する"
+
+#: fileItem.js:578
+msgid "Open"
+msgstr "開く"
+
+#: fileItem.js:582
+msgid "Open With Other Application"
+msgstr "別のアプリケーションで開く"
+
+#: fileItem.js:586
+msgid "Cut"
+msgstr "切り取り"
+
+#: fileItem.js:587
+msgid "Copy"
+msgstr "コピー"
+
+#: fileItem.js:589
+msgid "Rename…"
+msgstr "名前の変更…"
+
+#: fileItem.js:590
+msgid "Move to Trash"
+msgstr "ゴミ箱へ移動する"
+
+#: fileItem.js:600
+msgid "Empty Trash"
+msgstr "ゴミ箱を空にする"
+
+#: fileItem.js:606
+msgid "Properties"
+msgstr "プロパティ"
+
+#: fileItem.js:608
+msgid "Show in Files"
+msgstr "“ファイル”で表示"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "デスクトップのアイコンサイズを設定します。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "ホームフォルダーを表示する"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "デスクトップにホームフォルダーを表示します。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "ゴミ箱アイコンを表示する"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "デスクトップにゴミ箱のアイコンを表示します。"
+
 #~ msgid "Attach modal dialog to the parent window"
 #~ msgstr "モーダルダイアログを親ウィンドウに結び付ける"
 
@@ -365,9 +569,6 @@ msgstr "ワークスペース %d"
 #~ msgid "Display"
 #~ msgstr "ディスプレイ"
 
-#~ msgid "Display Settings"
-#~ msgstr "ディスプレイ設定"
-
 #~ msgid "Suspend"
 #~ msgstr "サスペンド"
 
@@ -413,9 +614,6 @@ msgstr "ワークスペース %d"
 #~ msgid "Remove from Favorites"
 #~ msgstr "お気に入りから削除"
 
-#~ msgid "Icon size"
-#~ msgstr "アイコンのサイズ"
-
 #~ msgid "Position of the dock"
 #~ msgstr "ドックの位置"
 
diff --git a/po/nl.po b/po/nl.po
index a7998d3..bbf7b1f 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -1,11 +1,20 @@
+# #-#-#-#-#  nl.po (gnome-shell-extensions master)  #-#-#-#-#
 # Dutch translation for gnome-shell-extensions.
 # Copyright (C) 2013 gnome-shell-extensions's COPYRIGHT HOLDER
 # This file is distributed under the same license as the gnome-shell-extensions package.
 # Reinout van Schouwen <reinouts gnome org>, 2013, 2014.
 # Nathan Follens <nthn unseen is>, 2015-2017.
 # Hannie Dumoleyn <hannie ubuntu-nl org>, 2015.
+# #-#-#-#-#  nl.po (desktop-icons master)  #-#-#-#-#
+# Dutch translation for desktop-icons.
+# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Nathan Follens <nthn unseen is>, 2019.
+#
+#, fuzzy
 msgid ""
 msgstr ""
+"#-#-#-#-#  nl.po (gnome-shell-extensions master)  #-#-#-#-#\n"
 "Project-Id-Version: gnome-shell-extensions master\n"
 "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-";
 "shell&keywords=I18N+L10N&component=extensions\n"
@@ -20,6 +29,20 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Poedit 2.0.2\n"
 "X-Project-Style: gnome\n"
+"#-#-#-#-#  nl.po (desktop-icons master)  #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-03-01 12:11+0000\n"
+"PO-Revision-Date: 2019-03-04 19:46+0100\n"
+"Last-Translator: Nathan Follens <nthn unseen is>\n"
+"Language-Team: Dutch <gnome-nl-list gnome org>\n"
+"Language: nl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.2.1\n"
 
 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
 msgid "GNOME Classic"
@@ -360,6 +383,174 @@ msgstr "Naam"
 msgid "Workspace %d"
 msgstr "Werkblad %d"
 
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Nieuwe mapnaam"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Aanmaken"
+
+#: createFolderDialog.js:74 desktopGrid.js:586
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Mapnamen kunnen geen ‘/’ bevatten."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Een map kan niet ‘.’ worden genoemd."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Een map kan niet ‘..’ worden genoemd."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Mappen waarvan de naam begint met ‘.’ zijn verborgen."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Er bestaat al een bestand of map met die naam."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Grootte van bureaubladpictogrammen"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Klein"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Standaard"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Groot"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Toon de persoonlijke map op het bureaublad"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Toon het prullenbakpictogram op het bureaublad"
+
+#: desktopGrid.js:320
+msgid "New Folder"
+msgstr "Nieuwe map"
+
+#: desktopGrid.js:322
+msgid "Paste"
+msgstr "Plakken"
+
+#: desktopGrid.js:323
+msgid "Undo"
+msgstr "Ongedaan maken"
+
+#: desktopGrid.js:324
+msgid "Redo"
+msgstr "Opnieuw"
+
+#: desktopGrid.js:326
+msgid "Show Desktop in Files"
+msgstr "Bureaublad tonen in Bestanden"
+
+#: desktopGrid.js:327 fileItem.js:606
+msgid "Open in Terminal"
+msgstr "Openen in terminalvenster"
+
+#: desktopGrid.js:329
+msgid "Change Background…"
+msgstr "Achtergrond aanpassen…"
+
+#: desktopGrid.js:331
+msgid "Display Settings"
+msgstr "Scherminstellingen"
+
+#: desktopGrid.js:332
+msgid "Settings"
+msgstr "Instellingen"
+
+#: desktopGrid.js:576
+msgid "Enter file name…"
+msgstr "Voer bestandsnaam in…"
+
+#: desktopGrid.js:580
+msgid "OK"
+msgstr "Oké"
+
+#: fileItem.js:490
+msgid "Don’t Allow Launching"
+msgstr "Toepassingen starten niet toestaan"
+
+#: fileItem.js:492
+msgid "Allow Launching"
+msgstr "Toepassingen starten toestaan"
+
+#: fileItem.js:574
+msgid "Open"
+msgstr "Openen"
+
+#: fileItem.js:578
+msgid "Open With Other Application"
+msgstr "Met andere toepassing openen"
+
+#: fileItem.js:582
+msgid "Cut"
+msgstr "Knippen"
+
+#: fileItem.js:583
+msgid "Copy"
+msgstr "Kopiëren"
+
+#: fileItem.js:585
+msgid "Rename…"
+msgstr "Hernoemen…"
+
+#: fileItem.js:586
+msgid "Move to Trash"
+msgstr "Verplaatsen naar prullenbak"
+
+#: fileItem.js:596
+msgid "Empty Trash"
+msgstr "Prullenbak legen"
+
+#: fileItem.js:602
+msgid "Properties"
+msgstr "Eigenschappen"
+
+#: fileItem.js:604
+msgid "Show in Files"
+msgstr "Tonen in Bestanden"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Pictogramgrootte"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Stel de grootte van de bureaubladpictogrammen in."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Persoonlijke map tonen"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Toon de persoonlijke map op het bureaublad."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Prullenbakpictogram tonen"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Toon het prullenbakpictogram op het bureaublad."
+
 #~ msgid "GNOME Shell Classic"
 #~ msgstr "Gnome Shell klassiek"
 
diff --git a/po/pl.po b/po/pl.po
index 35799ee..a779932 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,11 +1,21 @@
+# #-#-#-#-#  pl.po (gnome-shell-extensions)  #-#-#-#-#
 # Polish translation for gnome-shell-extensions.
 # Copyright © 2011-2017 the gnome-shell-extensions authors.
 # This file is distributed under the same license as the gnome-shell-extensions package.
 # Piotr Drąg <piotrdrag gmail com>, 2011-2017.
 # Aviary.pl <community-poland mozilla org>, 2011-2017.
 #
+# #-#-#-#-#  pl.po (desktop-icons)  #-#-#-#-#
+# Polish translation for desktop-icons.
+# Copyright © 2018-2019 the desktop-icons authors.
+# This file is distributed under the same license as the desktop-icons package.
+# Piotr Drąg <piotrdrag gmail com>, 2018-2019.
+# Aviary.pl <community-poland mozilla org>, 2018-2019.
+#
+#, fuzzy
 msgid ""
 msgstr ""
+"#-#-#-#-#  pl.po (gnome-shell-extensions)  #-#-#-#-#\n"
 "Project-Id-Version: gnome-shell-extensions\n"
 "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-";
 "shell&keywords=I18N+L10N&component=extensions\n"
@@ -19,6 +29,20 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
 "|| n%100>=20) ? 1 : 2);\n"
+"#-#-#-#-#  pl.po (desktop-icons)  #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-04-29 14:11+0000\n"
+"PO-Revision-Date: 2019-05-01 13:03+0200\n"
+"Last-Translator: Piotr Drąg <piotrdrag gmail com>\n"
+"Language-Team: Polish <community-poland mozilla org>\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
 
 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
 msgid "GNOME Classic"
@@ -358,3 +382,175 @@ msgstr "Nazwa"
 #, javascript-format
 msgid "Workspace %d"
 msgstr "%d. obszar roboczy"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Nazwa nowego katalogu"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Utwórz"
+
+#: createFolderDialog.js:74 desktopGrid.js:592
+msgid "Cancel"
+msgstr "Anuluj"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Nazwy katalogów nie mogą zawierać znaku „/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Katalog nie może mieć nazwy „.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Katalog nie może mieć nazwy „..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Katalogi z „.” na początku nazwy są ukryte."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Plik lub katalog o tej nazwie już istnieje."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Rozmiar ikon na pulpicie"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Mały"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Standardowy"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Duży"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Katalog domowy na pulpicie"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Kosz na pulpicie"
+
+#: desktopGrid.js:323
+msgid "New Folder"
+msgstr "Nowy katalog"
+
+#: desktopGrid.js:325
+msgid "Paste"
+msgstr "Wklej"
+
+#: desktopGrid.js:326
+msgid "Undo"
+msgstr "Cofnij"
+
+#: desktopGrid.js:327
+msgid "Redo"
+msgstr "Ponów"
+
+#: desktopGrid.js:329
+msgid "Show Desktop in Files"
+msgstr "Wyświetl pulpit w menedżerze plików"
+
+#: desktopGrid.js:330 fileItem.js:610
+msgid "Open in Terminal"
+msgstr "Otwórz w terminalu"
+
+#: desktopGrid.js:332
+msgid "Change Background…"
+msgstr "Zmień tło…"
+
+#: desktopGrid.js:334
+msgid "Display Settings"
+msgstr "Ustawienia ekranu"
+
+#: desktopGrid.js:335
+msgid "Settings"
+msgstr "Ustawienia"
+
+#: desktopGrid.js:582
+msgid "Enter file name…"
+msgstr "Nazwa pliku…"
+
+#: desktopGrid.js:586
+msgid "OK"
+msgstr "OK"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "Nie odnaleziono polecenia"
+
+#: fileItem.js:494
+msgid "Don’t Allow Launching"
+msgstr "Nie zezwalaj na uruchamianie"
+
+#: fileItem.js:496
+msgid "Allow Launching"
+msgstr "Zezwól na uruchamianie"
+
+#: fileItem.js:578
+msgid "Open"
+msgstr "Otwórz"
+
+#: fileItem.js:582
+msgid "Open With Other Application"
+msgstr "Otwórz za pomocą innego programu"
+
+#: fileItem.js:586
+msgid "Cut"
+msgstr "Wytnij"
+
+#: fileItem.js:587
+msgid "Copy"
+msgstr "Skopiuj"
+
+#: fileItem.js:589
+msgid "Rename…"
+msgstr "Zmień nazwę…"
+
+#: fileItem.js:590
+msgid "Move to Trash"
+msgstr "Przenieś do kosza"
+
+#: fileItem.js:600
+msgid "Empty Trash"
+msgstr "Opróżnij kosz"
+
+#: fileItem.js:606
+msgid "Properties"
+msgstr "Właściwości"
+
+#: fileItem.js:608
+msgid "Show in Files"
+msgstr "Wyświetl w menedżerze plików"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Rozmiar ikon"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Ustawia rozmiar ikon na pulpicie."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Katalog domowy"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Wyświetla katalog domowy na pulpicie."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Kosz"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Wyświetla kosz na pulpicie."
diff --git a/po/pt_BR.po b/po/pt_BR.po
index d029648..f1e17f7 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -1,3 +1,4 @@
+# #-#-#-#-#  pt_BR.po (gnome-shell-extensions master)  #-#-#-#-#
 # Brazilian Portuguese translation for gnome-shell-extensions.
 # Copyright (C) 2017 gnome-shell-extensions's COPYRIGHT HOLDER
 # This file is distributed under the same license as the gnome-shell-extensions package.
@@ -9,8 +10,17 @@
 # Og Maciel <ogmaciel gnome org>, 2012.
 # Enrico Nicoletto <liverig gmail com>, 2013, 2014.
 # Rafael Fontenelle <rafaelff gnome org>, 2013, 2017.
+# #-#-#-#-#  pt_BR.po (desktop-icons master)  #-#-#-#-#
+# Brazilian Portuguese translation for desktop-icons.
+# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Enrico Nicoletto <liverig gmail com>, 2018.
+# Rafael Fontenelle <rafaelff gnome org>, 2018-2019.
+#
+#, fuzzy
 msgid ""
 msgstr ""
+"#-#-#-#-#  pt_BR.po (gnome-shell-extensions master)  #-#-#-#-#\n"
 "Project-Id-Version: gnome-shell-extensions master\n"
 "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-";
 "shell&keywords=I18N+L10N&component=extensions\n"
@@ -25,6 +35,20 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 "X-Generator: Virtaal 1.0.0-beta1\n"
 "X-Project-Style: gnome\n"
+"#-#-#-#-#  pt_BR.po (desktop-icons master)  #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-04-29 14:11+0000\n"
+"PO-Revision-Date: 2019-04-29 17:35-0300\n"
+"Last-Translator: Rafael Fontenelle <rafaelff gnome org>\n"
+"Language-Team: Brazilian Portuguese <gnome-pt_br-list gnome org>\n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1)\n"
+"X-Generator: Gtranslator 3.32.0\n"
 
 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
 msgid "GNOME Classic"
@@ -366,6 +390,183 @@ msgstr "Nome"
 msgid "Workspace %d"
 msgstr "Espaço de trabalho %d"
 
+#: desktopGrid.js:334
+#, fuzzy
+msgid "Display Settings"
+msgstr ""
+"#-#-#-#-#  pt_BR.po (gnome-shell-extensions master)  #-#-#-#-#\n"
+"Configurações de tela\n"
+"#-#-#-#-#  pt_BR.po (desktop-icons master)  #-#-#-#-#\n"
+"Configurações de exibição"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Tamanho do ícone"
+
+#: createFolderDialog.js:74 desktopGrid.js:592
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Nome da nova pasta"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Criar"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Nomes de pastas não podem conter “/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Uma pasta não pode ser chamada “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Uma pasta não pode ser chamada “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Pastas com “.” no começo de seus nomes são ocultas."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Já existe um arquivo ou uma pasta com esse nome."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Tamanho para os ícones da área de trabalho"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Pequeno"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Padrão"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Grande"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Mostrar a pasta pessoal na área de trabalho"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Mostrar o ícone da lixeira na área de trabalho"
+
+#: desktopGrid.js:323
+msgid "New Folder"
+msgstr "Nova pasta"
+
+#: desktopGrid.js:325
+msgid "Paste"
+msgstr "Colar"
+
+#: desktopGrid.js:326
+msgid "Undo"
+msgstr "Desfazer"
+
+#: desktopGrid.js:327
+msgid "Redo"
+msgstr "Refazer"
+
+#: desktopGrid.js:329
+msgid "Show Desktop in Files"
+msgstr "Mostrar a área de trabalho no Arquivos"
+
+#: desktopGrid.js:330 fileItem.js:610
+msgid "Open in Terminal"
+msgstr "Abrir no terminal"
+
+#: desktopGrid.js:332
+msgid "Change Background…"
+msgstr "Alterar plano de fundo…"
+
+#: desktopGrid.js:335
+msgid "Settings"
+msgstr "Configurações"
+
+#: desktopGrid.js:582
+msgid "Enter file name…"
+msgstr "Insira um nome de arquivo…"
+
+#: desktopGrid.js:586
+msgid "OK"
+msgstr "OK"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "Comando não encontrado"
+
+#: fileItem.js:494
+msgid "Don’t Allow Launching"
+msgstr "Não permitir iniciar"
+
+#: fileItem.js:496
+msgid "Allow Launching"
+msgstr "Permitir iniciar"
+
+#: fileItem.js:578
+msgid "Open"
+msgstr "Abrir"
+
+#: fileItem.js:582
+msgid "Open With Other Application"
+msgstr "Abrir com outro aplicativo"
+
+#: fileItem.js:586
+msgid "Cut"
+msgstr "Recortar"
+
+#: fileItem.js:587
+msgid "Copy"
+msgstr "Copiar"
+
+#: fileItem.js:589
+msgid "Rename…"
+msgstr "Renomear…"
+
+#: fileItem.js:590
+msgid "Move to Trash"
+msgstr "Mover para a lixeira"
+
+#: fileItem.js:600
+msgid "Empty Trash"
+msgstr "Esvaziar lixeira"
+
+#: fileItem.js:606
+msgid "Properties"
+msgstr "Propriedades"
+
+#: fileItem.js:608
+msgid "Show in Files"
+msgstr "Mostrar no Arquivos"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Define o tamanho para os ícones da área de trabalho."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Mostrar pasta pessoal"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Mostra a pasta pessoal na área de trabalho."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Mostrar ícone da lixeira"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Mostra o ícone da lixeira na área de trabalho."
+
 #~ msgid "CPU"
 #~ msgstr "CPU"
 
@@ -414,9 +615,6 @@ msgstr "Espaço de trabalho %d"
 #~ msgid "Display"
 #~ msgstr "Tela"
 
-#~ msgid "Display Settings"
-#~ msgstr "Configurações de tela"
-
 #~ msgid "The application icon mode."
 #~ msgstr "O modo de ícone do aplicativo."
 
@@ -451,9 +649,6 @@ msgstr "Espaço de trabalho %d"
 #~ "Define a posição do dock na tela. Os valores permitidos são \"right\" ou "
 #~ "\"left\""
 
-#~ msgid "Icon size"
-#~ msgstr "Tamanho do ícone"
-
 #~ msgid "Sets icon size of the dock."
 #~ msgstr "Define o tamanho do ícone do dock."
 
@@ -613,9 +808,6 @@ msgstr "Espaço de trabalho %d"
 #~ msgid "Alt Tab Behaviour"
 #~ msgstr "Comportamento do Alt Tab"
 
-#~ msgid "Cancel"
-#~ msgstr "Cancelar"
-
 #~ msgid "Ask the user for a default behaviour if true."
 #~ msgstr "Pergunte ao usuário por um comportamento padrão se marcado."
 
@@ -639,3 +831,9 @@ msgstr "Espaço de trabalho %d"
 
 #~ msgid "Log Out..."
 #~ msgstr "Encerrar sessão..."
+
+#~ msgid "Huge"
+#~ msgstr "Enorme"
+
+#~ msgid "Ok"
+#~ msgstr "Ok"
diff --git a/po/ru.po b/po/ru.po
index c18c0ba..9320c3c 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -1,11 +1,20 @@
+# #-#-#-#-#  ru.po (gnome-shell-extensions gnome-3-0)  #-#-#-#-#
 # Russian translation for gnome-shell-extensions.
 # Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
 # This file is distributed under the same license as the gnome-shell-extensions package.
 # Yuri Myasoedov <omerta13 yandex ru>, 2011, 2012, 2013.
 # Stas Solovey <whats_up tut by>, 2011, 2012, 2013, 2015, 2017.
 #
+# #-#-#-#-#  ru.po  #-#-#-#-#
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Eaglers <eaglersdeveloper gmail com>, 2018.
+#
+#, fuzzy
 msgid ""
 msgstr ""
+"#-#-#-#-#  ru.po (gnome-shell-extensions gnome-3-0)  #-#-#-#-#\n"
 "Project-Id-Version: gnome-shell-extensions gnome-3-0\n"
 "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-";
 "shell&keywords=I18N+L10N&component=extensions\n"
@@ -20,6 +29,21 @@ msgstr ""
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Poedit 2.0.3\n"
+"#-#-#-#-#  ru.po  #-#-#-#-#\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2018-11-22 08:42+0000\n"
+"PO-Revision-Date: 2018-11-22 22:02+0300\n"
+"Last-Translator: Stas Solovey <whats_up tut by>\n"
+"Language-Team: Russian <gnome-cyr gnome org>\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Poedit 2.2\n"
 
 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
 msgid "GNOME Classic"
@@ -360,6 +384,138 @@ msgstr "Название"
 msgid "Workspace %d"
 msgstr "Рабочая область %d"
 
+#: prefs.js:89
+msgid "Size for the desktop icons"
+msgstr "Размер значков"
+
+#: prefs.js:89
+msgid "Small"
+msgstr "Маленький"
+
+#: prefs.js:89
+msgid "Standard"
+msgstr "Стандартный"
+
+#: prefs.js:89
+msgid "Large"
+msgstr "Большой"
+
+#: prefs.js:89
+msgid "Huge"
+msgstr "Огромный"
+
+#: prefs.js:90
+msgid "Show the personal folder in the desktop"
+msgstr "Показывать домашнюю папку на рабочем столе"
+
+#: prefs.js:91
+msgid "Show the trash icon in the desktop"
+msgstr "Показывать «Корзину» на рабочем столе"
+
+#: desktopGrid.js:185 desktopGrid.js:304
+msgid "New Folder"
+msgstr "Создать папку"
+
+#: desktopGrid.js:306
+msgid "Paste"
+msgstr "Вставить"
+
+#: desktopGrid.js:307
+msgid "Undo"
+msgstr "Отменить"
+
+#: desktopGrid.js:308
+msgid "Redo"
+msgstr "Повторить"
+
+#: desktopGrid.js:310
+msgid "Open Desktop in Files"
+msgstr "Открыть «Рабочий стол» в «Файлах»"
+
+#: desktopGrid.js:311
+msgid "Open Terminal"
+msgstr "Открыть терминал"
+
+#: desktopGrid.js:313
+msgid "Change Background…"
+msgstr "Изменить фон…"
+
+#: desktopGrid.js:314
+msgid "Display Settings"
+msgstr "Настройки дисплея"
+
+#: desktopGrid.js:315
+msgid "Settings"
+msgstr "Параметры"
+
+#: desktopGrid.js:569
+msgid "Enter file name…"
+msgstr "Ввести имя файла…"
+
+#: desktopGrid.js:573
+msgid "Ok"
+msgstr "ОК"
+
+#: desktopGrid.js:579
+msgid "Cancel"
+msgstr "Отмена"
+
+#: fileItem.js:390
+msgid "Open"
+msgstr "Открыть"
+
+#: fileItem.js:393
+msgid "Cut"
+msgstr "Вырезать"
+
+#: fileItem.js:394
+msgid "Copy"
+msgstr "Вставить"
+
+#: fileItem.js:395
+msgid "Rename"
+msgstr "Переименовать"
+
+#: fileItem.js:396
+msgid "Move to Trash"
+msgstr "Переместить в корзину"
+
+#: fileItem.js:400
+msgid "Empty trash"
+msgstr "Очистить корзину"
+
+#: fileItem.js:406
+msgid "Properties"
+msgstr "Свойства"
+
+#: fileItem.js:408
+msgid "Show in Files"
+msgstr "Показать в «Файлах»"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Icon size"
+msgstr "Размер значков"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:13
+msgid "Set the size for the desktop icons."
+msgstr "Установить размер значков на рабочем столе."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show personal folder"
+msgstr "Показывать домашнюю папку"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:18
+msgid "Show the personal folder in the desktop."
+msgstr "Показывать значок домашней папки на рабочем столе."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show trash icon"
+msgstr "Показывать значок корзины"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:23
+msgid "Show the trash icon in the desktop."
+msgstr "Показывать значок корзины на рабочем столе."
+
 #~ msgid "CPU"
 #~ msgstr "ЦП"
 
diff --git a/po/sv.po b/po/sv.po
index 3aeafac..33eba9f 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,3 +1,4 @@
+# #-#-#-#-#  sv.po (gnome-shell-extensions)  #-#-#-#-#
 # Swedish translation for gnome-shell-extensions.
 # Copyright © 2011, 2012, 2014, 2015, 2017 Free Software Foundation, Inc.
 # This file is distributed under the same license as the gnome-shell-extensions package.
@@ -5,8 +6,17 @@
 # Mattias Eriksson <snaggen gmail com>, 2014.
 # Anders Jonsson <anders jonsson norsjovallen se>, 2015, 2017.
 #
+# #-#-#-#-#  sv.po (desktop-icons master)  #-#-#-#-#
+# Swedish translation for desktop-icons.
+# Copyright © 2018, 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Anders Jonsson <anders jonsson norsjovallen se>, 2018, 2019.
+# Josef Andersson <l10nl18nsweja gmail com>, 2019.
+#
+#, fuzzy
 msgid ""
 msgstr ""
+"#-#-#-#-#  sv.po (gnome-shell-extensions)  #-#-#-#-#\n"
 "Project-Id-Version: gnome-shell-extensions\n"
 "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-";
 "shell&keywords=I18N+L10N&component=extensions\n"
@@ -19,6 +29,20 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 2.0.4\n"
+"#-#-#-#-#  sv.po (desktop-icons master)  #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-04-29 14:11+0000\n"
+"PO-Revision-Date: 2019-08-22 17:52+0200\n"
+"Last-Translator: Anders Jonsson <anders jonsson norsjovallen se>\n"
+"Language-Team: Swedish <tp-sv listor tp-sv se>\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.2.3\n"
 
 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
 msgid "GNOME Classic"
@@ -355,8 +379,188 @@ msgstr "Namn"
 msgid "Workspace %d"
 msgstr "Arbetsyta %d"
 
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Nytt mappnamn"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Skapa"
+
+#: createFolderDialog.js:74 desktopGrid.js:592
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Mappnamn kan inte innehålla ”/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "En mapp kan inte kallas ”.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "En mapp kan inte kallas ”..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Mappar med ”.” i början på sitt namn är dolda."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Det finns redan en fil eller mapp med det namnet"
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Storlek för skrivbordsikonerna"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Liten"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Standard"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Stor"
+
+# TODO: *ON* the desktop?
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Visa den personliga mappen på skrivbordet"
+
+# TODO: *ON* the desktop?
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Visa papperskorgsikonen på skrivbordet"
+
+#: desktopGrid.js:323
+msgid "New Folder"
+msgstr "Ny mapp"
+
+#: desktopGrid.js:325
+msgid "Paste"
+msgstr "Klistra in"
+
+#: desktopGrid.js:326
+msgid "Undo"
+msgstr "Ångra"
+
+#: desktopGrid.js:327
+msgid "Redo"
+msgstr "Gör om"
+
+#: desktopGrid.js:329
+msgid "Show Desktop in Files"
+msgstr "Visa skrivbord i Filer"
+
+#: desktopGrid.js:330 fileItem.js:610
+msgid "Open in Terminal"
+msgstr "Öppna i terminal"
+
+#: desktopGrid.js:332
+msgid "Change Background…"
+msgstr "Ändra bakgrund…"
+
+#: desktopGrid.js:334
+msgid "Display Settings"
+msgstr "Visningsinställningar"
+
+#: desktopGrid.js:335
+msgid "Settings"
+msgstr "Inställningar"
+
+#: desktopGrid.js:582
+msgid "Enter file name…"
+msgstr "Ange filnamn…"
+
+#: desktopGrid.js:586
+msgid "OK"
+msgstr "OK"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "Kommandot hittades inte"
+
+#: fileItem.js:494
+msgid "Don’t Allow Launching"
+msgstr "Tillåt ej programstart"
+
+#: fileItem.js:496
+msgid "Allow Launching"
+msgstr "Tillåt programstart"
+
+#: fileItem.js:578
+msgid "Open"
+msgstr "Öppna"
+
+#: fileItem.js:582
+msgid "Open With Other Application"
+msgstr "Öppna med annat program"
+
+#: fileItem.js:586
+msgid "Cut"
+msgstr "Klipp ut"
+
+#: fileItem.js:587
+msgid "Copy"
+msgstr "Kopiera"
+
+#: fileItem.js:589
+msgid "Rename…"
+msgstr "Byt namn…"
+
+#: fileItem.js:590
+msgid "Move to Trash"
+msgstr "Flytta till papperskorgen"
+
+#: fileItem.js:600
+msgid "Empty Trash"
+msgstr "Töm papperskorgen"
+
+#: fileItem.js:606
+msgid "Properties"
+msgstr "Egenskaper"
+
+#: fileItem.js:608
+msgid "Show in Files"
+msgstr "Visa i Filer"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Ikonstorlek"
+
+# TODO: *ON* the desktop?
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Ställ in storleken för skrivbordsikonerna."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Visa personlig mapp"
+
+# TODO: *ON* the desktop?
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Visa den personliga mappen på skrivbordet."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Visa papperskorgsikon"
+
+# TODO: *ON* the desktop?
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Visa papperskorgsikonen på skrivbordet."
+
 #~ msgid "CPU"
 #~ msgstr "CPU"
 
 #~ msgid "Memory"
 #~ msgstr "Minne"
+
+#~ msgid "Huge"
+#~ msgstr "Enorm"
diff --git a/po/tr.po b/po/tr.po
index 6243374..30ceafa 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -1,3 +1,4 @@
+# #-#-#-#-#  tr.po (gnome-shell-extensions master)  #-#-#-#-#
 # Turkish translation for gnome-shell-extensions.
 # Copyright (C) 2012 gnome-shell-extensions's COPYRIGHT HOLDER
 # This file is distributed under the same license as the gnome-shell-extensions package.
@@ -7,8 +8,19 @@
 # Muhammet Kara <muhammetk gmail com>, 2013, 2014, 2015.
 # Furkan Tokaç <developmentft gmail com>, 2017.
 #
+# #-#-#-#-#  tr.po  #-#-#-#-#
+# Turkish translation for desktop-icons.
+# Copyright (C) 2000-2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+#
+# Sabri Ünal <libreajans gmail com>, 2019.
+# Serdar Sağlam <teknomobil yandex com>, 2019
+# Emin Tufan Çetin <etcetin gmail com>, 2019.
+#
+#, fuzzy
 msgid ""
 msgstr ""
+"#-#-#-#-#  tr.po (gnome-shell-extensions master)  #-#-#-#-#\n"
 "Project-Id-Version: gnome-shell-extensions master\n"
 "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-";
 "shell&keywords=I18N+L10N&component=extensions\n"
@@ -22,6 +34,20 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Generator: Gtranslator 2.91.7\n"
+"#-#-#-#-#  tr.po  #-#-#-#-#\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2019-03-09 14:47+0000\n"
+"PO-Revision-Date: 2019-03-13 13:43+0300\n"
+"Last-Translator: Emin Tufan Çetin <etcetin gmail com>\n"
+"Language-Team: Türkçe <gnome-turk gnome org>\n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Gtranslator 3.30.1\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
 
 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
 msgid "GNOME Classic"
@@ -362,6 +388,174 @@ msgstr "İsim"
 msgid "Workspace %d"
 msgstr "Çalışma Alanı %d"
 
+#: createFolderDialog.js:48
+msgid "New folder name"
+msgstr "Yeni klasör adı"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Oluştur"
+
+#: createFolderDialog.js:74 desktopGrid.js:586
+msgid "Cancel"
+msgstr "İptal"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Klasör adları “/” içeremez."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Bir klasör “.” olarak adlandırılamaz."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Bir klasör “..” olarak adlandırılamaz."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Adlarının başında “.” bulunan klasörler gizlenir."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Zaten bu adda bir dosya veya klasör var."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Masaüstü simgeleri boyutu"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Küçük"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Standart"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Büyük"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Kişisel klasörü masaüstünde göster"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Çöp kutusunu masaüstünde göster"
+
+#: desktopGrid.js:320
+msgid "New Folder"
+msgstr "Yeni Klasör"
+
+#: desktopGrid.js:322
+msgid "Paste"
+msgstr "Yapıştır"
+
+#: desktopGrid.js:323
+msgid "Undo"
+msgstr "Geri Al"
+
+#: desktopGrid.js:324
+msgid "Redo"
+msgstr "Yinele"
+
+#: desktopGrid.js:326
+msgid "Show Desktop in Files"
+msgstr "Masaüstünü Dosyalarʼda Göster"
+
+#: desktopGrid.js:327 fileItem.js:606
+msgid "Open in Terminal"
+msgstr "Uçbirimde Aç"
+
+#: desktopGrid.js:329
+msgid "Change Background…"
+msgstr "Arka Planı Değiştir…"
+
+#: desktopGrid.js:331
+msgid "Display Settings"
+msgstr "Görüntü Ayarları"
+
+#: desktopGrid.js:332
+msgid "Settings"
+msgstr "Ayarlar"
+
+#: desktopGrid.js:576
+msgid "Enter file name…"
+msgstr "Dosya adını gir…"
+
+#: desktopGrid.js:580
+msgid "OK"
+msgstr "Tamam"
+
+#: fileItem.js:490
+msgid "Don’t Allow Launching"
+msgstr "Başlatmaya İzin Verme"
+
+#: fileItem.js:492
+msgid "Allow Launching"
+msgstr "Başlatmaya İzin Ver"
+
+#: fileItem.js:574
+msgid "Open"
+msgstr "Aç"
+
+#: fileItem.js:578
+msgid "Open With Other Application"
+msgstr "Başka Uygulamayla Aç"
+
+#: fileItem.js:582
+msgid "Cut"
+msgstr "Kes"
+
+#: fileItem.js:583
+msgid "Copy"
+msgstr "Kopyala"
+
+#: fileItem.js:585
+msgid "Rename…"
+msgstr "Yeniden Adlandır…"
+
+#: fileItem.js:586
+msgid "Move to Trash"
+msgstr "Çöpe Taşı"
+
+#: fileItem.js:596
+msgid "Empty Trash"
+msgstr "Çöpü Boşalt"
+
+#: fileItem.js:602
+msgid "Properties"
+msgstr "Özellikler"
+
+#: fileItem.js:604
+msgid "Show in Files"
+msgstr "Dosyalarʼda Göster"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Simge boyutu"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Masaüstü simgelerinin boyutunu ayarla."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Kişisel klasörü göster"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Kişisel klasörü masaüstünde göster."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Çöp kutusunu göster"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Çöp kutusu simgesini masaüstünde göster."
+
 #~ msgid "CPU"
 #~ msgstr "İşlemci"
 
diff --git a/po/zh_TW.po b/po/zh_TW.po
index 74a95f8..fa5ba9b 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -1,10 +1,19 @@
+# #-#-#-#-#  zh_TW.po (gnome-shell-extensions gnome-3-0)  #-#-#-#-#
 # Chinese (Taiwan) translation for gnome-shell-extensions.
 # Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
 # This file is distributed under the same license as the gnome-shell-extensions package.
 # Cheng-Chia Tseng <pswo10680 gmail com>, 2011.
 #
+# #-#-#-#-#  zh_TW.po (desktop-icons master)  #-#-#-#-#
+# Chinese (Taiwan) translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Yi-Jyun Pan <pan93412 gmail com>, 2018.
+#
+#, fuzzy
 msgid ""
 msgstr ""
+"#-#-#-#-#  zh_TW.po (gnome-shell-extensions gnome-3-0)  #-#-#-#-#\n"
 "Project-Id-Version: gnome-shell-extensions gnome-3-0\n"
 "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-";
 "shell&keywords=I18N+L10N&component=extensions\n"
@@ -17,6 +26,19 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 2.0.3\n"
+"#-#-#-#-#  zh_TW.po (desktop-icons master)  #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-";
+"icons/issues\n"
+"POT-Creation-Date: 2018-10-22 14:12+0000\n"
+"PO-Revision-Date: 2018-10-24 21:31+0800\n"
+"Language-Team: Chinese (Taiwan) <chinese-l10n googlegroups com>\n"
+"Language: zh_TW\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Last-Translator: pan93412 <pan93412 gmail com>\n"
+"X-Generator: Poedit 2.2\n"
 
 #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
 msgid "GNOME Classic"
@@ -344,6 +366,127 @@ msgstr "名稱"
 msgid "Workspace %d"
 msgstr "工作區 %d"
 
+#: desktopGrid.js:307
+#, fuzzy
+msgid "Display Settings"
+msgstr ""
+"#-#-#-#-#  zh_TW.po (gnome-shell-extensions gnome-3-0)  #-#-#-#-#\n"
+"顯示設定值\n"
+"#-#-#-#-#  zh_TW.po (desktop-icons master)  #-#-#-#-#\n"
+"顯示設定"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Icon size"
+msgstr "圖示大小"
+
+#: prefs.js:89
+msgid "Size for the desktop icons"
+msgstr "桌面圖示的大小"
+
+#: prefs.js:89
+msgid "Small"
+msgstr "小圖示"
+
+#: prefs.js:89
+msgid "Standard"
+msgstr "標準大小圖示"
+
+#: prefs.js:89
+msgid "Large"
+msgstr "大圖示"
+
+#: prefs.js:89
+msgid "Huge"
+msgstr "巨大圖示"
+
+#: prefs.js:90
+msgid "Show the personal folder in the desktop"
+msgstr "在桌面顯示個人資料夾"
+
+#: prefs.js:91
+msgid "Show the trash icon in the desktop"
+msgstr "在桌面顯示垃圾桶圖示"
+
+#: desktopGrid.js:178 desktopGrid.js:297
+msgid "New Folder"
+msgstr "新增資料夾"
+
+#: desktopGrid.js:299
+msgid "Paste"
+msgstr "貼上"
+
+#: desktopGrid.js:300
+msgid "Undo"
+msgstr "復原"
+
+#: desktopGrid.js:301
+msgid "Redo"
+msgstr "重做"
+
+#: desktopGrid.js:303
+msgid "Open Desktop in Files"
+msgstr "在《檔案》中開啟桌面"
+
+#: desktopGrid.js:304
+msgid "Open Terminal"
+msgstr "開啟終端器"
+
+#: desktopGrid.js:306
+msgid "Change Background…"
+msgstr "變更背景圖片…"
+
+#: desktopGrid.js:308
+msgid "Settings"
+msgstr "設定"
+
+#: fileItem.js:223
+msgid "Open"
+msgstr "開啟"
+
+#: fileItem.js:226
+msgid "Cut"
+msgstr "剪下"
+
+#: fileItem.js:227
+msgid "Copy"
+msgstr "複製"
+
+#: fileItem.js:228
+msgid "Move to Trash"
+msgstr "移動到垃圾桶"
+
+#: fileItem.js:232
+msgid "Empty trash"
+msgstr "清空回收桶"
+
+#: fileItem.js:238
+msgid "Properties"
+msgstr "屬性"
+
+#: fileItem.js:240
+msgid "Show in Files"
+msgstr "在《檔案》中顯示"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:13
+msgid "Set the size for the desktop icons."
+msgstr "設定桌面圖示的大小。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show personal folder"
+msgstr "顯示個人資料夾"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:18
+msgid "Show the personal folder in the desktop."
+msgstr "在桌面顯示個人資料夾。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show trash icon"
+msgstr "顯示垃圾桶圖示"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:23
+msgid "Show the trash icon in the desktop."
+msgstr "在桌面顯示垃圾桶圖示。"
+
 #~ msgid "CPU"
 #~ msgstr "CPU"
 
@@ -371,9 +514,6 @@ msgstr "工作區 %d"
 #~ msgid "Display"
 #~ msgstr "顯示"
 
-#~ msgid "Display Settings"
-#~ msgstr "顯示設定值"
-
 #~ msgid "Suspend"
 #~ msgstr "暫停"
 
@@ -481,9 +621,6 @@ msgstr "工作區 %d"
 #~ msgid "Enable/disable autohide"
 #~ msgstr "啟用/停用自動隱藏"
 
-#~ msgid "Icon size"
-#~ msgstr "圖示大小"
-
 #~ msgid "Position of the dock"
 #~ msgstr "Dock 的位置"
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]