diff --git a/.deploy.sh b/.deploy.sh
new file mode 100755
index 0000000000000000000000000000000000000000..7088e4ff69caf3ea6afb757fc75d609785837932
--- /dev/null
+++ b/.deploy.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+# This script uploads an includes a .deb package in our debian repository.
+# The distribution is chosen based on the gitlab-ci stage we are on.
+
+apt-get update && apt-get install -y dput ssh
+
+eval $(ssh-agent -s)
+ssh-add <(echo "$PRIV_KEY")
+
+echo "Deploy job name: $CI_JOB_NAME"
+
+if [ "$CI_JOB_NAME" = "deploy_for_testing" ]; then
+    dput -u -f --config=dput.cf repo build/*.changes
+elif [ "$CI_JOB_NAME" = "deploy_for_stable" ]; then
+    CHANGELOG="package/debian/changelog"
+    LINE=$(head -n 1 $CHANGELOG)
+    PACKAGE=$(echo $LINE | cut -d' ' -f1)
+    VERSION=$(echo $LINE | cut -d' ' -f2 | grep -o -E '[0-9]*-[0-9]*')
+
+    REPREPRO_CMD="reprepro -Vb /home/repository/www/lc2 copysrc stable testing $PACKAGE $VERSION"
+    ssh -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa repository@repo.c3sl.ufpr.br "$REPREPRO_CMD"
+fi
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..eb8bc7394b23e60bdf3f5e91cddc3e8134bc89e7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,14 @@
+*.compiled
+package/debian/gnome-shell-extension-dashtodock
+package/debian/gnome-shell-extension-dashtodock.debhelper.log
+package/debian/gnome-shell-extension-dashtodock.substvars
+package/debian/gnome-shell-extension-dashtodock.*.debhelper
+package/debian/files
+package/debian/debhelper-build-stamp
+gnome-shell-extension-dashtodock_*.tar.xz
+gnome-shell-extension-dashtodock_*.tar.gz
+gnome-shell-extension-dashtodock_*.build
+gnome-shell-extension-dashtodock_*.dsc
+gnome-shell-extension-dashtodock_*.changes
+gnome-shell-extension-dashtodock_*.deb
+*.mo
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ded4f5896ab61e08ace73ffdb251db74a2cacac9
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,63 @@
+## Template para empacotamento utilizando o Gitlab-ci.
+
+stages:
+    - build
+    - test
+    - deploy
+
+build:
+  stage: build
+  artifacts:
+    paths:
+      - build/
+  tags:
+    - debian-packaging
+  script:
+    - if [ ! -d "package/debian/" ] ; then exit 1; fi
+    - apt-get update && apt-get install -y  debhelper libglib2.0-bin
+    - LINE=$(head -n 1 package/debian/changelog)
+    - PACKAGE=$(echo $LINE | cut -d' ' -f1)
+    - VERSION=$(echo $LINE | cut -d' ' -f2 | grep -o -E '[0-9]*-[0-9]*')
+    - VERSION=$(echo $VERSION | cut -d'-' -f1)
+    - tar --exclude=debian -czf ${PACKAGE}_${VERSION}.orig.tar.gz package/*
+    - cd package ; debuild -us -uc -sa
+    - cd ../
+    - mkdir build/
+    - mv ${PACKAGE}* build/
+
+test:
+  stage: test
+  tags:
+    - ubuntu
+    - regular
+  script:
+    # TODO: find a way to get the dependencies automatically
+    - apt-get update
+    - DEBIAN_FRONTEND=noninteractive apt-get install -y gnome-shell gir1.2-clutter-1.0
+    - dpkg -i build/*.deb
+    - echo "Estágio de Teste finalizado"
+  dependencies:
+    - build
+
+deploy_for_testing:
+  stage: deploy
+  only:
+      - master
+  tags:
+    - debian-packaging
+  script:
+    - ./.deploy.sh
+  dependencies:
+    - build
+
+deploy_for_stable:
+  stage: deploy
+  when: manual
+  only:
+      - master
+  tags:
+    - debian-packaging
+  script:
+    - ./.deploy.sh
+  dependencies:
+    - build
diff --git a/dput.cf b/dput.cf
new file mode 100644
index 0000000000000000000000000000000000000000..1a3ee4c2080ccbb9e60c8ff7fdacf5dc803f50f9
--- /dev/null
+++ b/dput.cf
@@ -0,0 +1,9 @@
+[repo]
+fqdn = repo.c3sl.ufpr.br
+method = scp
+login = repository
+incoming = /home/repository/www/lc2/incoming
+allow_unsigned_uploads = 1
+ssh_config_options = User=repository
+                     StrictHostKeyChecking=no
+post_upload_command = ssh -l repository -i ~/.ssh/id_rsa repo.c3sl.ufpr.br "reprepro -Vb /home/repository/www/lc2 processincoming default"
diff --git a/package/COPYING b/package/COPYING
new file mode 100644
index 0000000000000000000000000000000000000000..8d61b15e7e5271e176d149775f7e1b1474feb5bb
--- /dev/null
+++ b/package/COPYING
@@ -0,0 +1,341 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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 2 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, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+
diff --git a/package/Makefile b/package/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..40a2bc02d2bed7f91c04d17df7c0c5e447e38ffd
--- /dev/null
+++ b/package/Makefile
@@ -0,0 +1,84 @@
+# Basic Makefile
+
+UUID = dash-to-dock@micxgx.gmail.com
+BASE_MODULES = extension.js stylesheet.css metadata.json COPYING README.md
+EXTRA_MODULES = convenience.js dash.js docking.js appIcons.js windowPreview.js intellihide.js prefs.js theming.js utils.js Settings.ui
+EXTRA_MEDIA = logo.svg
+TOLOCALIZE =  prefs.js appIcons.js
+MSGSRC = $(wildcard po/*.po)
+ifeq ($(strip $(DESTDIR)),)
+	INSTALLBASE = $(HOME)/.local/share/gnome-shell/extensions
+else
+	INSTALLBASE = $(DESTDIR)/usr/share/gnome-shell/extensions
+endif
+INSTALLNAME = dash-to-dock@micxgx.gmail.com
+
+# The command line passed variable VERSION is used to set the version string
+# in the metadata and in the generated zip-file. If no VERSION is passed, the
+# current commit SHA1 is used as version number in the metadata while the
+# generated zip file has no string attached.
+ifdef VERSION
+	VSTRING = _v$(VERSION)
+else
+	VERSION = $(shell git rev-parse HEAD)
+	VSTRING =
+endif
+
+all: extension
+
+clean:
+	rm -f ./schemas/gschemas.compiled
+
+extension: ./schemas/gschemas.compiled $(MSGSRC:.po=.mo)
+
+./schemas/gschemas.compiled: ./schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml
+	glib-compile-schemas ./schemas/
+
+potfile: ./po/dashtodock.pot
+
+mergepo: potfile
+	for l in $(MSGSRC); do \
+		msgmerge -U $$l ./po/dashtodock.pot; \
+	done;
+
+./po/dashtodock.pot: $(TOLOCALIZE) Settings.ui
+	mkdir -p po
+	xgettext -k --keyword=__ --keyword=N__ --add-comments='Translators:' -o po/dashtodock.pot --package-name "Dash to Dock" $(TOLOCALIZE)
+	intltool-extract --type=gettext/glade Settings.ui
+	xgettext -k --keyword=_ --keyword=N_ --join-existing -o po/dashtodock.pot Settings.ui.h
+
+./po/%.mo: ./po/%.po
+	msgfmt -c $< -o $@
+
+install: install-local
+
+install-local: _build
+	rm -rf $(INSTALLBASE)/$(INSTALLNAME)
+	mkdir -p $(INSTALLBASE)/$(INSTALLNAME)
+	cp -r ./_build/* $(INSTALLBASE)/$(INSTALLNAME)/
+	-rm -fR _build
+	echo done
+
+zip-file: _build
+	cd _build ; \
+	zip -qr "$(UUID)$(VSTRING).zip" .
+	mv _build/$(UUID)$(VSTRING).zip ./
+	-rm -fR _build
+
+_build: all
+	-rm -fR ./_build
+	mkdir -p _build
+	cp $(BASE_MODULES) $(EXTRA_MODULES) _build
+	mkdir -p _build/media
+	cd media ; cp $(EXTRA_MEDIA) ../_build/media/
+	mkdir -p _build/schemas
+	cp schemas/*.xml _build/schemas/
+	cp schemas/gschemas.compiled _build/schemas/
+	mkdir -p _build/locale
+	for l in $(MSGSRC:.po=.mo) ; do \
+		lf=_build/locale/`basename $$l .mo`; \
+		mkdir -p $$lf; \
+		mkdir -p $$lf/LC_MESSAGES; \
+		cp $$l $$lf/LC_MESSAGES/dashtodock.mo; \
+	done;
+	sed -i 's/"version": -1/"version": "$(VERSION)"/'  _build/metadata.json;
diff --git a/package/README.md b/package/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..8827a6c43ab29cfeb83c9dae4663236dbf5bddea
--- /dev/null
+++ b/package/README.md
@@ -0,0 +1,38 @@
+# Dash to Dock
+![screenshot](https://github.com/micheleg/dash-to-dock/raw/master/media/screenshot.jpg)
+
+## A dock for the GNOME Shell
+This extension enhances the dash moving it out of the overview and transforming it in a dock for an easier launching of applications and a faster switching between windows and desktops without having to leave the desktop view.
+
+For installation instructions and more information visit [https://micheleg.github.io/dash-to-dock/](https://micheleg.github.io/dash-to-dock/).
+
+## Installation from source
+
+The extension can be installed directly from source, either for the convenience of using git or to test the latest development version. Clone the desired branch with git
+
+<pre>git clone https://github.com/micheleg/dash-to-dock.git</pre>
+or download the branch from github. A simple Makefile is included. Then run
+<pre>make
+make install
+</pre>
+to install the extension in your home directory. A Shell reload is required <code>Alt+F2 r Enter</code> and the extension has to be enabled  with *gnome-tweak-tool* or with *dconf*.
+
+## Bug Reporting
+
+Bugs should be reported to the Github bug tracker [https://github.com/micheleg/dash-to-dock/issues](https://github.com/micheleg/dash-to-dock/issues).
+
+## License
+Dash to Dock Gnome Shell extension is distributed under the terms of the GNU General Public License,
+version 2 or later. See the COPYING file for details.
+
+## Donations
+
+You can
+
+<a href="http://flattr.com/thing/1047592/" target="_blank">
+<img src="http://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" border="0" /></a>
+
+or
+
+<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3S5HFFG2BWGPL" target="_blank">
+<img src="https://www.paypalobjects.com/en_US/GB/i/btn/btn_donateCC_LG.gif" alt="PayPal — The safer, easier way to pay online."/></a>
diff --git a/package/Settings.ui b/package/Settings.ui
new file mode 100644
index 0000000000000000000000000000000000000000..d8d498fb19f7d340c1f3a1cd4959e7946e0361eb
--- /dev/null
+++ b/package/Settings.ui
@@ -0,0 +1,2998 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.18.3 -->
+<interface>
+  <requires lib="gtk+" version="3.12"/>
+  <object class="GtkAdjustment" id="animation_time_adjustment">
+    <property name="upper">1</property>
+    <property name="step_increment">0.050000000000000003</property>
+    <property name="page_increment">0.25</property>
+  </object>
+  <object class="GtkAdjustment" id="shortcut_time_adjustment">
+    <property name="upper">10</property>
+    <property name="step_increment">0.250000000000000003</property>
+    <property name="page_increment">1</property>
+  </object>
+  <object class="GtkAdjustment" id="custom_opacity_adjustement">
+    <property name="upper">1</property>
+    <property name="step_increment">0.01</property>
+    <property name="page_increment">0.10000000000000001</property>
+  </object>
+  <object class="GtkAdjustment" id="dock_size_adjustment">
+    <property name="lower">0.33000000000000002</property>
+    <property name="upper">1</property>
+    <property name="step_increment">0.01</property>
+    <property name="page_increment">0.10000000000000001</property>
+  </object>
+  <object class="GtkAdjustment" id="dot_border_width_adjustment">
+    <property name="upper">10</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">5</property>
+  </object>
+  <object class="GtkBox" id="running_dots_advance_settings_box">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="margin_left">12</property>
+    <property name="margin_right">12</property>
+    <property name="margin_top">12</property>
+    <property name="margin_bottom">12</property>
+    <property name="orientation">vertical</property>
+    <child>
+      <object class="GtkFrame" id="frame1">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label_xalign">0</property>
+        <property name="shadow_type">in</property>
+        <child>
+          <object class="GtkListBox" id="listbox7">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="selection_mode">none</property>
+            <child>
+              <object class="GtkListBoxRow" id="listboxrow10">
+                <property name="width_request">100</property>
+                <property name="height_request">80</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <child>
+                  <object class="GtkBox" id="dot_style_box">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="margin_left">12</property>
+                    <property name="margin_right">12</property>
+                    <property name="margin_top">12</property>
+                    <property name="margin_bottom">12</property>
+                    <property name="orientation">vertical</property>
+                    <property name="spacing">12</property>
+                    <child>
+                      <object class="GtkGrid" id="grid1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="column_spacing">32</property>
+                        <child>
+                          <object class="GtkSwitch" id="dot_style_switch">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="top_attach">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label4">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="label" translatable="yes">Customize indicator style</property>
+                            <property name="justify">fill</property>
+                            <property name="xalign">0</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">0</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkBox" id="dot_style_settings_box">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="margin_bottom">1</property>
+                        <property name="orientation">vertical</property>
+                        <property name="spacing">12</property>
+                        <child>
+                          <object class="GtkBox" id="dot_color_box">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="spacing">32</property>
+                            <child>
+                              <object class="GtkLabel" id="dot_color_label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Color</property>
+                                <property name="xalign">0</property>
+                              </object>
+                              <packing>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkColorButton" id="dot_color_colorbutton">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkBox" id="border_color_box">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="spacing">32</property>
+                            <child>
+                              <object class="GtkLabel" id="dot_border_color_label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Border color</property>
+                                <property name="xalign">0</property>
+                              </object>
+                              <packing>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkColorButton" id="dot_border_color_colorbutton">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkBox" id="box_boder_width_box">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="spacing">32</property>
+                            <child>
+                              <object class="GtkLabel" id="dot_border_width_label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Border width</property>
+                                <property name="xalign">0</property>
+                              </object>
+                              <packing>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkSpinButton" id="dot_border_width_spin_button">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="adjustment">dot_border_width_adjustment</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+        </child>
+        <child type="label_item">
+          <placeholder/>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+  </object>
+  <object class="GtkBox" id="box_overlay_shortcut">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="margin_left">12</property>
+    <property name="margin_right">12</property>
+    <property name="margin_top">12</property>
+    <property name="margin_bottom">12</property>
+    <property name="orientation">vertical</property>
+    <child>
+      <object class="GtkFrame" id="frame_overlay_show_dock">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label_xalign">0</property>
+        <property name="shadow_type">in</property>
+        <child>
+          <object class="GtkListBox" id="listbox_overlay_shortcut">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="selection_mode">none</property>
+            <child>
+              <object class="GtkListBoxRow" id="listboxrow_overlay_shortcut">
+                <property name="width_request">100</property>
+                <property name="height_request">80</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <child>
+                  <object class="GtkGrid" id="grid_overlay">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="margin_left">12</property>
+                    <property name="margin_right">12</property>
+                    <property name="margin_top">12</property>
+                    <property name="margin_bottom">12</property>
+                    <property name="column_spacing">32</property>
+                    <child>
+                      <object class="GtkSwitch" id="overlay_switch">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="halign">end</property>
+                        <property name="valign">center</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                        <property name="height">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="overlay_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="hexpand">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Number overlay</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="overlay_description">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Temporarily show the application numbers over the icons, corresponding to the shortcut.</property>
+                        <property name="wrap">True</property>
+                        <property name="max-width-chars">40</property>
+                        <style>
+                          <class name="dim-label"/>
+                        </style>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkListBoxRow" id="listboxrow_show_dock">
+                <property name="width_request">100</property>
+                <property name="height_request">80</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <child>
+                  <object class="GtkGrid" id="grid_show_dock">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="margin_left">12</property>
+                    <property name="margin_right">12</property>
+                    <property name="margin_top">12</property>
+                    <property name="margin_bottom">12</property>
+                    <property name="column_spacing">32</property>
+                    <child>
+                      <object class="GtkSwitch" id="show_dock_switch">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="halign">end</property>
+                        <property name="valign">center</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                        <property name="height">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="show_dock_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="hexpand">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Show the dock if it is hidden</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="show_dock_description">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">If using autohide, the dock will appear for a short time when triggering the shortcut.</property>
+                        <property name="wrap">True</property>
+                        <property name="max-width-chars">40</property>
+                        <style>
+                          <class name="dim-label"/>
+                        </style>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkListBoxRow" id="listboxrow_extra_shortcut">
+                <property name="width_request">100</property>
+                <property name="height_request">80</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <child>
+                  <object class="GtkGrid" id="grid_shortcut">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="margin_left">12</property>
+                    <property name="margin_right">12</property>
+                    <property name="margin_top">12</property>
+                    <property name="margin_bottom">12</property>
+                    <property name="column_spacing">32</property>
+                    <child>
+                      <object class="GtkEntry" id="shortcut_entry">
+                        <property name="width-chars">12</property>
+                        <property name="valign">center</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="shortcut_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="hexpand">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Shortcut for the options above</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="shortcut_description">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="xalign">0</property>
+                        <property name="max-width-chars">40</property>
+                        <property name="label" translatable="yes">Syntax: &lt;Shift&gt;, &lt;Ctrl&gt;, &lt;Alt&gt;, &lt;Super&gt;</property>
+                        <property name="wrap">True</property>
+                        <style>
+                          <class name="dim-label"/>
+                        </style>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkListBoxRow" id="listboxrow_timeout">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <child>
+                  <object class="GtkGrid" id="grid_timeout">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="margin_left">12</property>
+                    <property name="margin_right">12</property>
+                    <property name="margin_top">12</property>
+                    <property name="margin_bottom">12</property>
+                    <property name="hexpand">True</property>
+                    <property name="row_spacing">6</property>
+                    <property name="column_spacing">32</property>
+                    <child>
+                      <object class="GtkSpinButton" id="timeout_spinbutton">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="halign">end</property>
+                        <property name="adjustment">shortcut_time_adjustment</property>
+                        <property name="digits">3</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="shortcut_timeout_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="hexpand">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Hide timeout (s)</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+        </child>
+        <child type="label_item">
+          <placeholder/>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+  </object>
+  <object class="GtkBox" id="box_middle_click_options">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="margin_left">12</property>
+    <property name="margin_right">12</property>
+    <property name="margin_top">12</property>
+    <property name="margin_bottom">12</property>
+    <property name="orientation">vertical</property>
+    <child>
+      <object class="GtkFrame" id="frame_middle_click_options">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label_xalign">0</property>
+        <property name="shadow_type">in</property>
+        <child>
+          <object class="GtkListBox" id="listbox_middle_click_options">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="selection_mode">none</property>
+            <child>
+              <object class="GtkListBoxRow" id="listboxrow11">
+                <property name="width_request">100</property>
+                <property name="height_request">80</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <child>
+                  <object class="GtkGrid" id="buitin_theme7">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="margin_left">12</property>
+                    <property name="margin_right">12</property>
+                    <property name="margin_top">12</property>
+                    <property name="margin_bottom">12</property>
+                    <property name="column_spacing">32</property>
+                    <child>
+                      <object class="GtkLabel" id="builtin_theme_description4">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="hexpand">True</property>
+                        <property name="xalign">0</property>
+                        <property name="max-width-chars">40</property>
+                        <property name="label" translatable="yes">When set to minimize, double clicking minimizes all the windows of the application.</property>
+                        <property name="wrap">True</property>
+                        <style>
+                          <class name="dim-label"/>
+                        </style>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="builtin_theme_label4">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="hexpand">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Shift+Click action</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBoxText" id="shift_click_action_combo">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="valign">center</property>
+                        <items>
+                          <item translatable="yes">Raise window</item>
+                          <item translatable="yes">Minimize window</item>
+                          <item translatable="yes">Launch new instance</item>
+                          <item translatable="yes">Cycle through windows</item>
+                          <item translatable="yes">Minimize or overview</item>
+                          <item translatable="yes">Show window previews</item>
+                          <item translatable="yes">Quit</item>
+                        </items>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                        <property name="height">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkListBoxRow" id="listboxrow_middle_click">
+                <property name="width_request">100</property>
+                <property name="height_request">80</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <child>
+                  <object class="GtkGrid" id="grid_middle_click">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="margin_left">12</property>
+                    <property name="margin_right">12</property>
+                    <property name="margin_top">12</property>
+                    <property name="margin_bottom">12</property>
+                    <property name="column_spacing">32</property>
+                    <child>
+                      <object class="GtkLabel" id="description_middle_click">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="hexpand">True</property>
+                        <property name="xalign">0</property>
+                        <property name="max-width-chars">40</property>
+                        <property name="label" translatable="yes">Behavior for Middle-Click.</property>
+                        <property name="wrap">True</property>
+                        <style>
+                          <class name="dim-label"/>
+                        </style>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label_middle_click">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="hexpand">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Middle-Click action</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBoxText" id="middle_click_action_combo">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="valign">center</property>
+                        <items>
+                          <item translatable="yes">Raise window</item>
+                          <item translatable="yes">Minimize window</item>
+                          <item translatable="yes">Launch new instance</item>
+                          <item translatable="yes">Cycle through windows</item>
+                          <item translatable="yes">Minimize or overview</item>
+                          <item translatable="yes">Show window previews</item>
+                          <item translatable="yes">Quit</item>
+                        </items>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                        <property name="height">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkListBoxRow" id="listboxrow_shift_middle_click">
+                <property name="width_request">100</property>
+                <property name="height_request">80</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <child>
+                  <object class="GtkGrid" id="grid_shift_middle_click">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="margin_left">12</property>
+                    <property name="margin_right">12</property>
+                    <property name="margin_top">12</property>
+                    <property name="margin_bottom">12</property>
+                    <property name="column_spacing">32</property>
+                    <child>
+                      <object class="GtkLabel" id="description_shift_middle_click">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="hexpand">True</property>
+                        <property name="xalign">0</property>
+                        <property name="max-width-chars">40</property>
+                        <property name="label" translatable="yes">Behavior for Shift+Middle-Click.</property>
+                        <property name="wrap">True</property>
+                        <style>
+                          <class name="dim-label"/>
+                        </style>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label_shift_middle_click">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="hexpand">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Shift+Middle-Click action</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBoxText" id="shift_middle_click_action_combo">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="valign">center</property>
+                        <items>
+                          <item translatable="yes">Raise window</item>
+                          <item translatable="yes">Minimize window</item>
+                          <item translatable="yes">Launch new instance</item>
+                          <item translatable="yes">Cycle through windows</item>
+                          <item translatable="yes">Minimize or overview</item>
+                          <item translatable="yes">Show window previews</item>
+                          <item translatable="yes">Quit</item>
+                        </items>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                        <property name="height">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+        </child>
+        <child type="label_item">
+          <placeholder/>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+  </object>
+  <object class="GtkAdjustment" id="hide_timeout_adjustment">
+    <property name="upper">1</property>
+    <property name="step_increment">0.050000000000000003</property>
+    <property name="page_increment">0.25</property>
+  </object>
+  <object class="GtkAdjustment" id="icon_size_adjustment">
+    <property name="lower">16</property>
+    <property name="upper">128</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkNotebook" id="settings_notebook">
+    <property name="visible">True</property>
+    <property name="can_focus">True</property>
+    <property name="margin_left">6</property>
+    <property name="margin_right">6</property>
+    <property name="margin_top">6</property>
+    <property name="margin_bottom">6</property>
+    <child>
+      <object class="GtkBox" id="position_and_size">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_left">24</property>
+        <property name="margin_right">24</property>
+        <property name="margin_top">24</property>
+        <property name="margin_bottom">24</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">24</property>
+        <child>
+          <object class="GtkFrame" id="dock_display">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">in</property>
+            <child>
+              <object class="GtkListBox" id="dock_display_listbox">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="selection_mode">none</property>
+                <child>
+                  <object class="GtkListBoxRow" id="dock_monitor_listboxrow">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <child>
+                      <object class="GtkGrid" id="dock_monitor_grid">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="margin_left">12</property>
+                        <property name="margin_right">12</property>
+                        <property name="margin_top">12</property>
+                        <property name="margin_bottom">12</property>
+                        <property name="column_spacing">32</property>
+                        <child>
+                          <object class="GtkLabel" id="dock_monitor_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Show the dock on</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkComboBoxText" id="dock_monitor_combo">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="valign">center</property>
+                            <signal name="changed" handler="dock_display_combo_changed_cb" swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="top_attach">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="multi_monitor_button">
+                            <property name="label" translatable="yes">Show on all monitors.</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="margin_top">12</property>
+                            <property name="xalign">0</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">2</property>
+                            <property name="width">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkListBoxRow" id="dock_position_listboxrow">
+                    <property name="width_request">100</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <child>
+                      <object class="GtkBox" id="dock_position_box">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="margin_left">12</property>
+                        <property name="margin_right">12</property>
+                        <property name="margin_top">12</property>
+                        <property name="margin_bottom">12</property>
+                        <property name="spacing">32</property>
+                        <child>
+                          <object class="GtkLabel" id="dock_position_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Position on screen</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkBox" id="dock_position_butttons_box">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="spacing">32</property>
+                            <child>
+                              <object class="GtkRadioButton" id="position_left_button">
+                                <property name="label" translatable="yes">Left</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="halign">end</property>
+                                <property name="valign">center</property>
+                                <property name="xalign">0</property>
+                                <property name="draw_indicator">True</property>
+                                <signal name="toggled" handler="position_left_button_toggled_cb" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkRadioButton" id="position_bottom_button">
+                                <property name="label" translatable="yes">Bottom</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="halign">center</property>
+                                <property name="xalign">0</property>
+                                <property name="draw_indicator">True</property>
+                                <property name="group">position_left_button</property>
+                                <signal name="toggled" handler="position_bottom_button_toggled_cb" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkRadioButton" id="position_top_button">
+                                <property name="label" translatable="yes">Top</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="halign">center</property>
+                                <property name="xalign">0</property>
+                                <property name="image_position">bottom</property>
+                                <property name="draw_indicator">True</property>
+                                <property name="group">position_left_button</property>
+                                <signal name="toggled" handler="position_top_button_toggled_cb" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkRadioButton" id="position_right_button">
+                                <property name="label" translatable="yes">Right</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="valign">center</property>
+                                <property name="xalign">0</property>
+                                <property name="draw_indicator">True</property>
+                                <property name="group">position_left_button</property>
+                                <signal name="toggled" handler="position_right_button_toggled_cb" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">3</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label_item">
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="intelligent_autohide_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">in</property>
+            <child>
+              <object class="GtkListBox" id="listbox3">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="selection_mode">none</property>
+                <child>
+                  <object class="GtkListBoxRow" id="listboxrow14">
+                    <property name="width_request">100</property>
+                    <property name="height_request">80</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <child>
+                      <object class="GtkGrid" id="intelligent_autohide_grid">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="margin_left">12</property>
+                        <property name="margin_right">12</property>
+                        <property name="margin_top">12</property>
+                        <property name="margin_bottom">12</property>
+                        <property name="column_spacing">32</property>
+                        <child>
+                          <object class="GtkLabel" id="builtin_theme_description7">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Hide the dock when it obstructs a window of the the current application. More refined settings are available.</property>
+                            <property name="wrap">True</property>
+                            <style>
+                              <class name="dim-label"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="builtin_theme_label8">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Intelligent autohide</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkBox" id="box3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <object class="GtkButton" id="intelligent_autohide_button">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">True</property>
+                                <property name="halign">center</property>
+                                <property name="valign">center</property>
+                                <property name="xalign">0.46000000834465027</property>
+                                <child>
+                                  <object class="GtkImage" id="image">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="icon_name">emblem-system-symbolic</property>
+                                  </object>
+                                </child>
+                                <style>
+                                  <class name="circular"/>
+                                </style>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkSwitch" id="intelligent_autohide_switch">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="halign">end</property>
+                                <property name="valign">center</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="top_attach">0</property>
+                            <property name="height">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label_item">
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="size_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">in</property>
+            <child>
+              <object class="GtkListBox" id="size_listbox">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="selection_mode">none</property>
+                <child>
+                  <object class="GtkListBoxRow" id="dock_size_listboxrow">
+                    <property name="width_request">100</property>
+                    <property name="height_request">80</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <child>
+                      <object class="GtkGrid" id="dock_size_grid">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="margin_left">12</property>
+                        <property name="margin_right">12</property>
+                        <property name="margin_top">12</property>
+                        <property name="margin_bottom">12</property>
+                        <property name="column_spacing">32</property>
+                        <child>
+                          <object class="GtkLabel" id="dock_size_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Dock size limit</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkScale" id="dock_size_scale">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="valign">baseline</property>
+                            <property name="hexpand">True</property>
+                            <property name="adjustment">dock_size_adjustment</property>
+                            <property name="round_digits">0</property>
+                            <property name="digits">2</property>
+                            <property name="value_pos">right</property>
+                            <signal name="format-value" handler="dock_size_scale_format_value_cb" swapped="no"/>
+                            <signal name="value-changed" handler="dock_size_scale_value_changed_cb" swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="top_attach">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="dock_size_extend_checkbutton">
+                            <property name="label" translatable="yes">Panel mode: extend to the screen edge</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="margin_top">12</property>
+                            <property name="xalign">0</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">1</property>
+                            <property name="width">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkListBoxRow" id="icon_size_listboxrow">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <child>
+                      <object class="GtkGrid" id="icon_size_grid">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="margin_left">12</property>
+                        <property name="margin_right">12</property>
+                        <property name="margin_top">12</property>
+                        <property name="margin_bottom">12</property>
+                        <property name="column_spacing">32</property>
+                        <child>
+                          <object class="GtkLabel" id="builtin_theme_label6">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Icon size limit</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkScale" id="icon_size_scale">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="valign">baseline</property>
+                            <property name="hexpand">True</property>
+                            <property name="adjustment">icon_size_adjustment</property>
+                            <property name="round_digits">1</property>
+                            <property name="digits">0</property>
+                            <property name="value_pos">right</property>
+                            <signal name="format-value" handler="icon_size_scale_format_value_cb" swapped="no"/>
+                            <signal name="value-changed" handler="icon_size_scale_value_changed_cb" swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="top_attach">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="icon_size_fixed_checkbutton">
+                            <property name="label" translatable="yes">Fixed icon size: scroll to reveal other icons</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="margin_top">12</property>
+                            <property name="xalign">0</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">1</property>
+                            <property name="width">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label_item">
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <child type="tab">
+      <object class="GtkLabel" id="general_label">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label" translatable="yes">Position and size</property>
+      </object>
+      <packing>
+        <property name="tab_fill">False</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkBox" id="apps">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_left">24</property>
+        <property name="margin_right">24</property>
+        <property name="margin_top">24</property>
+        <property name="margin_bottom">24</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">24</property>
+        <child>
+          <object class="GtkFrame" id="customize_theme1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">in</property>
+            <child>
+              <object class="GtkListBox" id="listbox9">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="selection_mode">none</property>
+                <child>
+                  <object class="GtkListBoxRow" id="listboxrow6">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <child>
+                      <object class="GtkGrid" id="shrink_dash1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="margin_left">12</property>
+                        <property name="margin_right">12</property>
+                        <property name="margin_top">12</property>
+                        <property name="margin_bottom">12</property>
+                        <property name="column_spacing">32</property>
+                        <child>
+                          <object class="GtkSwitch" id="show_favorite_switch">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="halign">end</property>
+                            <property name="valign">center</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="top_attach">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="shrink_dash_label1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Show favorite applications</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">0</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkListBoxRow" id="listboxrow16">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <child>
+                      <object class="GtkGrid" id="shrink_dash2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="margin_left">12</property>
+                        <property name="margin_right">12</property>
+                        <property name="margin_top">12</property>
+                        <property name="margin_bottom">12</property>
+                        <property name="column_spacing">32</property>
+                        <child>
+                          <object class="GtkSwitch" id="show_running_switch">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="halign">end</property>
+                            <property name="valign">center</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="top_attach">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="shrink_dash_label2">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Show running applications</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="application_button_isolation_button">
+                            <property name="label" translatable="yes">Isolate workspaces.</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="margin_top">12</property>
+                            <property name="xalign">0</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">2</property>
+                            <property name="width">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="application_button_monitor_isolation_button">
+                            <property name="label" translatable="yes">Isolate monitors.</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="margin_top">12</property>
+                            <property name="xalign">0</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">3</property>
+                            <property name="width">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="windows_preview_button">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="margin_top">3</property>
+                            <property name="xalign">0</property>
+                            <property name="draw_indicator">True</property>
+                            <child>
+                              <object class="GtkLabel" id="windows_previews_label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Show open windows previews.</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">1</property>
+                            <property name="width">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkListBoxRow" id="listboxrow17">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <child>
+                      <object class="GtkGrid" id="shrink_dash3">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="margin_left">12</property>
+                        <property name="margin_right">12</property>
+                        <property name="margin_top">12</property>
+                        <property name="margin_bottom">12</property>
+                        <property name="column_spacing">32</property>
+                        <child>
+                          <object class="GtkSwitch" id="show_applications_button_switch">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="halign">end</property>
+                            <property name="valign">center</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="top_attach">0</property>
+                            <property name="height">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="shrink_dash_description1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">If disabled, these settings are accessible from gnome-tweak-tool or the extension website.</property>
+                            <property name="wrap">True</property>
+                            <style>
+                              <class name="dim-label"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="shrink_dash_label3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Show &lt;i&gt;Applications&lt;/i&gt; icon</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="application_button_first_button">
+                            <property name="label" translatable="yes">Move the applications button at the beginning of the dock.</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="margin_top">12</property>
+                            <property name="xalign">0</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">2</property>
+                            <property name="width">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="application_button_animation_button">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="margin_top">3</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">0.43000000715255737</property>
+                            <property name="draw_indicator">True</property>
+                            <child>
+                              <object class="GtkLabel" id="label3">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Animate &lt;i&gt;Show Applications&lt;/i&gt;.</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">3</property>
+                            <property name="width">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label_item">
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="position">1</property>
+      </packing>
+    </child>
+    <child type="tab">
+      <object class="GtkLabel" id="launchers_label">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label" translatable="yes">Launchers</property>
+      </object>
+      <packing>
+        <property name="position">1</property>
+        <property name="tab_fill">False</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkBox" id="behaviour">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_left">24</property>
+        <property name="margin_right">24</property>
+        <property name="margin_top">24</property>
+        <property name="margin_bottom">24</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">24</property>
+        <child>
+          <object class="GtkFrame" id="hot_keys_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">in</property>
+            <child>
+              <object class="GtkListBox" id="hot_keys_listbox">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="selection_mode">none</property>
+                <child>
+                  <object class="GtkListBoxRow" id="hot_keys_listboxrow">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <child>
+                      <object class="GtkGrid" id="hot_keys_grid">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="margin_left">12</property>
+                        <property name="margin_right">12</property>
+                        <property name="margin_top">12</property>
+                        <property name="margin_bottom">12</property>
+                        <property name="column_spacing">32</property>
+                        <child>
+                          <object class="GtkLabel" id="hot_keys_description">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Enable Super+(0-9) as shortcuts to activate apps. It can also be used together with Shift and Ctrl.</property>
+                            <property name="use_markup">True</property>
+                            <property name="wrap">True</property>
+                            <style>
+                              <class name="dim-label"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="hot_keys_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Use keyboard shortcuts to activate apps</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkBox" id="overlay_box">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <object class="GtkButton" id="overlay_button">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">True</property>
+                                <property name="halign">center</property>
+                                <property name="valign">center</property>
+                                <property name="xalign">0.46000000834465027</property>
+                                <child>
+                                  <object class="GtkImage" id="image_overlay">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="icon_name">emblem-system-symbolic</property>
+                                  </object>
+                                </child>
+                                <style>
+                                  <class name="circular"/>
+                                </style>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkSwitch" id="hot_keys_switch">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="halign">end</property>
+                                <property name="valign">center</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="top_attach">0</property>
+                            <property name="height">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label_item">
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="built_in_theme_frame3">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">in</property>
+            <child>
+              <object class="GtkListBox" id="listbox6">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="selection_mode">none</property>
+                <child>
+                  <object class="GtkListBoxRow" id="listboxrow9">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <child>
+                      <object class="GtkGrid" id="buitin_theme5">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="margin_left">12</property>
+                        <property name="margin_right">12</property>
+                        <property name="margin_top">12</property>
+                        <property name="margin_bottom">12</property>
+                        <property name="column_spacing">32</property>
+                        <child>
+                          <object class="GtkLabel" id="builtin_theme_description5">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Behaviour when clicking on the icon of a running application.</property>
+                            <property name="wrap">True</property>
+                            <style>
+                              <class name="dim-label"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="builtin_theme_label5">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Click action</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkBox" id="click_box">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <object class="GtkButton" id="middle_click_options_button">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">True</property>
+                                <property name="valign">center</property>
+                                <child>
+                                  <object class="GtkImage" id="middle_click_image">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="icon_name">emblem-system-symbolic</property>
+                                  </object>
+                                </child>
+                                <style>
+                                  <class name="circular"/>
+                                </style>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="GtkComboBoxText" id="click_action_combo">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="valign">center</property>
+                                <items>
+                                  <item translatable="yes">Raise window</item>
+                                  <item translatable="yes">Minimize</item>
+                                  <item translatable="yes">Launch new instance</item>
+                                  <item translatable="yes">Cycle through windows</item>
+                                  <item translatable="yes">Minimize or overview</item>
+                                  <item translatable="yes">Show window previews</item>
+                                </items>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="height">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label_item">
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="built_in_theme_frame_scroll">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">in</property>
+            <child>
+              <object class="GtkListBox" id="listbox5">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="selection_mode">none</property>
+                <child>
+                  <object class="GtkListBoxRow" id="listboxrow_scroll">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <child>
+                      <object class="GtkGrid" id="buitin_theme_scroll">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="margin_left">12</property>
+                        <property name="margin_right">12</property>
+                        <property name="margin_top">12</property>
+                        <property name="margin_bottom">12</property>
+                        <property name="column_spacing">32</property>
+                        <child>
+                          <object class="GtkLabel" id="builtin_theme_description_scroll">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="label" translatable="yes">Behaviour when scrolling on the icon of an application.</property>
+                            <property name="wrap">True</property>
+                            <property name="xalign">0</property>
+                            <style>
+                              <class name="dim-label"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="builtin_theme_label_scroll">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="label" translatable="yes">Scroll action</property>
+                            <property name="xalign">0</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkBox" id="click_box_scroll">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <object class="GtkComboBoxText" id="scroll_action_combo">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="valign">center</property>
+                                <items>
+                                  <item translatable="yes">Do nothing</item>
+                                  <item translatable="yes">Cycle through windows</item>
+                                  <item translatable="yes">Switch workspace</item>
+                                </items>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="top_attach">0</property>
+                            <property name="height">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label_item">
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="position">2</property>
+      </packing>
+    </child>
+    <child type="tab">
+      <object class="GtkLabel" id="behaviour_label">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label" translatable="yes">Behavior</property>
+      </object>
+      <packing>
+        <property name="position">2</property>
+        <property name="tab_fill">False</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkBox" id="appearance">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_left">24</property>
+        <property name="margin_right">24</property>
+        <property name="margin_top">24</property>
+        <property name="margin_bottom">24</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">24</property>
+        <child>
+          <object class="GtkFrame" id="built_in_theme_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">in</property>
+            <child>
+              <object class="GtkListBox" id="listbox1">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="selection_mode">none</property>
+                <child>
+                  <object class="GtkListBoxRow" id="listboxrow1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <child>
+                      <object class="GtkGrid" id="buitin_theme">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="margin_left">12</property>
+                        <property name="margin_right">12</property>
+                        <property name="margin_top">12</property>
+                        <property name="margin_bottom">12</property>
+                        <property name="column_spacing">32</property>
+                        <child>
+                          <object class="GtkLabel" id="builtin_theme_description">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Few customizations meant to integrate the dock with the default GNOME theme. Alternatively, specific options can be enabled below.</property>
+                            <property name="wrap">True</property>
+                            <style>
+                              <class name="dim-label"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="builtin_theme_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Use built-in theme</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSwitch" id="builtin_theme_switch">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="halign">end</property>
+                            <property name="valign">center</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="top_attach">0</property>
+                            <property name="height">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label_item">
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="customize_theme">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">in</property>
+            <child>
+              <object class="GtkListBox" id="listbox2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="selection_mode">none</property>
+                <child>
+                  <object class="GtkListBoxRow" id="listboxrow2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <child>
+                      <object class="GtkGrid" id="shrink_dash">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="margin_left">12</property>
+                        <property name="margin_right">12</property>
+                        <property name="margin_top">12</property>
+                        <property name="margin_bottom">12</property>
+                        <property name="column_spacing">32</property>
+                        <child>
+                          <object class="GtkSwitch" id="shrink_dash_switch">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="halign">end</property>
+                            <property name="valign">center</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="top_attach">0</property>
+                            <property name="height">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="shrink_dash_description">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Save space reducing padding and border radius.</property>
+                            <style>
+                              <class name="dim-label"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="shrink_dash_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Shrink the dash</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">0</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkListBoxRow" id="listboxrow3">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <child>
+                      <object class="GtkGrid" id="running_dots">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="margin_left">12</property>
+                        <property name="margin_right">12</property>
+                        <property name="margin_top">12</property>
+                        <property name="margin_bottom">12</property>
+                        <property name="column_spacing">32</property>
+                        <child>
+                          <object class="GtkLabel" id="running_dots_description">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Show a dot for each windows of the application.</property>
+                            <style>
+                              <class name="dim-label"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="running_dots_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Show windows counter indicators</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkBox" id="box4">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <object class="GtkButton" id="running_dots_advance_settings_button">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">True</property>
+                                <property name="halign">center</property>
+                                <property name="valign">center</property>
+                                <property name="xalign">0.46000000834465027</property>
+                                <child>
+                                  <object class="GtkImage" id="image1">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="icon_name">emblem-system-symbolic</property>
+                                  </object>
+                                </child>
+                                <style>
+                                  <class name="circular"/>
+                                </style>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkSwitch" id="running_dots_switch">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="halign">end</property>
+                                <property name="valign">center</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="top_attach">0</property>
+                            <property name="height">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkListBoxRow" id="custom_background_color_listboxrow">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <child>
+                      <object class="GtkGrid" id="custom_background_color_grid">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="margin_left">12</property>
+                        <property name="margin_right">12</property>
+                        <property name="margin_top">12</property>
+                        <property name="margin_bottom">12</property>
+                        <property name="column_spacing">32</property>
+                        <child>
+                          <object class="GtkLabel" id="custom_background_color_description">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Set the background color for the dash.</property>
+                            <property name="wrap">True</property>
+                            <style>
+                              <class name="dim-label"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="custom_background_color_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Customize the dash color</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkBox" id="custom_background_color_box">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <object class="GtkColorButton" id="custom_background_color">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">True</property>
+                                <property name="halign">center</property>
+                                <property name="valign">center</property>
+                                <property name="xalign">0.46000000834465027</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkSwitch" id="custom_background_color_switch">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="halign">end</property>
+                                <property name="valign">center</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="top_attach">0</property>
+                            <property name="height">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkListBoxRow" id="listboxrow4">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <child>
+                      <object class="GtkBox" id="box2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="orientation">vertical</property>
+                        <child>
+                          <object class="GtkGrid" id="customize_opacity">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="margin_left">12</property>
+                            <property name="margin_right">12</property>
+                            <property name="margin_top">12</property>
+                            <property name="margin_bottom">12</property>
+                            <property name="column_spacing">32</property>
+                            <child>
+                              <object class="GtkSwitch" id="customize_opacity_switch">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="halign">end</property>
+                                <property name="valign">center</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="top_attach">0</property>
+                                <property name="height">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="customize_opacity_description">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="hexpand">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">Tune the dash background opacity.</property>
+                                <style>
+                                  <class name="dim-label"/>
+                                </style>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="customize_opacity_label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="hexpand">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">Customize opacity</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">0</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkBox" id="custom_opacity">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="margin_left">12</property>
+                            <property name="margin_right">12</property>
+                            <property name="margin_top">12</property>
+                            <property name="margin_bottom">12</property>
+                            <property name="spacing">32</property>
+                            <child>
+                              <object class="GtkLabel" id="custom_opacity_label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Opacity</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkScale" id="custom_opacity_scale">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="adjustment">custom_opacity_adjustement</property>
+                                <property name="lower_stepper_sensitivity">on</property>
+                                <property name="restrict_to_fill_level">False</property>
+                                <property name="fill_level">0</property>
+                                <property name="round_digits">0</property>
+                                <property name="digits">2</property>
+                                <property name="value_pos">right</property>
+                                <signal name="format-value" handler="custom_opacity_scale_format_value_cb" swapped="no"/>
+                                <signal name="value-changed" handler="custom_opacity_scale_value_changed_cb" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkListBoxRow" id="listboxrow_rnd_border">
+                    <property name="width_request">100</property>
+                    <property name="height_request">80</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <child>
+                      <object class="GtkBox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="spacing">32</property>
+                        <child>
+                          <object class="GtkLabel" id="force_straight_corner_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="valign">center</property>
+                            <property name="xpad">12</property>
+                            <property name="label" translatable="yes">Force straight corner
+</property>
+                            <property name="xalign">0</property>
+                          </object>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSwitch" id="force_straight_corner_switch">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="valign">center</property>
+                            <property name="margin_left">3</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="padding">12</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label_item">
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="position">3</property>
+      </packing>
+    </child>
+    <child type="tab">
+      <object class="GtkLabel" id="appearance_label">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label" translatable="yes">Appearance</property>
+      </object>
+      <packing>
+        <property name="position">3</property>
+        <property name="tab_fill">False</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkBox" id="about">
+        <property name="can_focus">False</property>
+        <property name="margin_top">24</property>
+        <property name="margin_bottom">24</property>
+        <property name="hexpand">True</property>
+        <property name="vexpand">True</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">5</property>
+        <child>
+          <object class="GtkImage" id="logo">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="pixbuf">./media/logo.svg</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="padding">10</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="extension_name">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label">&lt;b&gt;Dash to Dock&lt;/b&gt;</property>
+            <property name="use_markup">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkBox" id="box1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="halign">center</property>
+            <child>
+              <object class="GtkLabel" id="extension_version_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="halign">end</property>
+                <property name="label" translatable="yes">version: </property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="extension_version">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="halign">start</property>
+                <property name="label">...</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="extension_description">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">Moves the dash out of the overview transforming it in a dock</property>
+            <property name="justify">center</property>
+            <property name="wrap">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkBox" id="box10">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="halign">center</property>
+            <property name="spacing">5</property>
+            <child>
+              <object class="GtkLabel" id="label15">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Created by</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label16">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="label">Michele (&lt;a href="mailto:micxgx@gmail.com"&gt;micxgx@gmail.com&lt;/a&gt;)</property>
+                <property name="use_markup">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLinkButton" id="homepage_link">
+            <property name="label" translatable="yes">Webpage</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <property name="events"/>
+            <property name="halign">center</property>
+            <property name="relief">none</property>
+            <property name="uri">https://micheleg.github.io/dash-to-dock/</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">5</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="label1">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="valign">end</property>
+            <property name="label" translatable="yes">&lt;span size="small"&gt;This program comes with ABSOLUTELY NO WARRANTY.
+See the &lt;a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"&gt;GNU General Public License, version 2 or later&lt;/a&gt; for details.&lt;/span&gt;</property>
+            <property name="use_markup">True</property>
+            <property name="justify">center</property>
+            <property name="wrap">True</property>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">6</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="position">4</property>
+      </packing>
+    </child>
+    <child type="tab">
+      <object class="GtkLabel" id="about_label">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label" translatable="yes">About</property>
+      </object>
+      <packing>
+        <property name="position">4</property>
+        <property name="tab_fill">False</property>
+      </packing>
+    </child>
+  </object>
+  <object class="GtkAdjustment" id="pressure_threshold_adjustment">
+    <property name="upper">1000</property>
+    <property name="step_increment">50</property>
+    <property name="page_increment">250</property>
+  </object>
+  <object class="GtkAdjustment" id="show_timeout_adjustment">
+    <property name="upper">1</property>
+    <property name="step_increment">0.050000000000000003</property>
+    <property name="page_increment">0.25</property>
+  </object>
+  <object class="GtkBox" id="intelligent_autohide_advanced_settings_box">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="margin_left">12</property>
+    <property name="margin_right">12</property>
+    <property name="margin_top">12</property>
+    <property name="margin_bottom">12</property>
+    <property name="orientation">vertical</property>
+    <child>
+      <object class="GtkFrame" id="intelligent_autohide_advanced_settings_frame">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label_xalign">0</property>
+        <property name="shadow_type">in</property>
+        <child>
+          <object class="GtkListBox" id="listbox4">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="selection_mode">none</property>
+            <child>
+              <object class="GtkListBoxRow" id="listboxrow8">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <child>
+                  <object class="GtkGrid" id="buitin_theme2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="margin_left">12</property>
+                    <property name="margin_right">12</property>
+                    <property name="margin_top">12</property>
+                    <property name="margin_bottom">12</property>
+                    <property name="column_spacing">32</property>
+                    <child>
+                      <object class="GtkLabel" id="builtin_theme_description2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="hexpand">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Show the dock by mouse hover on the screen edge.</property>
+                        <property name="wrap">True</property>
+                        <style>
+                          <class name="dim-label"/>
+                        </style>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="builtin_theme_label2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="hexpand">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Autohide</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSwitch" id="autohide_switch">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="halign">end</property>
+                        <property name="valign">center</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                        <property name="height">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" id="require_pressure_checkbutton">
+                        <property name="label" translatable="yes">Push to show: require pressure to show the dock</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="xalign">0</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">3</property>
+                        <property name="width">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" id="autohide_enable_in_fullscreen_checkbutton">
+                        <property name="label" translatable="yes">Enable in fullscreen mode</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="margin_top">12</property>
+                        <property name="xalign">0</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">2</property>
+                        <property name="width">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkListBoxRow" id="listboxrow15">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <child>
+                  <object class="GtkGrid" id="intellihide_grid">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="margin_left">12</property>
+                    <property name="margin_right">12</property>
+                    <property name="margin_top">12</property>
+                    <property name="margin_bottom">12</property>
+                    <property name="column_spacing">32</property>
+                    <child>
+                      <object class="GtkLabel" id="builtin_theme_description3">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="hexpand">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Show the dock when it doesn't obstruct application windows.</property>
+                        <property name="wrap">True</property>
+                        <style>
+                          <class name="dim-label"/>
+                        </style>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="builtin_theme_label3">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="hexpand">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Dodge windows</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSwitch" id="intellihide_switch">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="halign">end</property>
+                        <property name="valign">center</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                        <property name="height">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkBox" id="intellihide_mode_box">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="orientation">vertical</property>
+                        <child>
+                          <object class="GtkRadioButton" id="all_windows_radio_button">
+                            <property name="label" translatable="yes">All windows</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="margin_top">12</property>
+                            <property name="xalign">0</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <signal name="toggled" handler="all_windows_radio_button_toggled_cb" swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="focus_application_windows_radio_button">
+                            <property name="label" translatable="yes">Only focused application's windows</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="xalign">0</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">all_windows_radio_button</property>
+                            <signal name="toggled" handler="focus_application_windows_radio_button_toggled_cb" swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="maximized_windows_radio_button">
+                            <property name="label" translatable="yes">Only maximized windows</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="xalign">0</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">all_windows_radio_button</property>
+                            <signal name="toggled" handler="maximized_windows_radio_button_toggled_cb" swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">2</property>
+                        <property name="width">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkListBoxRow" id="listboxrow5">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <child>
+                  <object class="GtkGrid" id="grid2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="margin_left">12</property>
+                    <property name="margin_right">12</property>
+                    <property name="margin_top">12</property>
+                    <property name="margin_bottom">12</property>
+                    <property name="hexpand">True</property>
+                    <property name="row_spacing">6</property>
+                    <property name="column_spacing">32</property>
+                    <child>
+                      <object class="GtkSpinButton" id="animation_duration_spinbutton">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="halign">end</property>
+                        <property name="adjustment">animation_time_adjustment</property>
+                        <property name="digits">3</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="hexpand">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Animation duration (s)</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSpinButton" id="hide_timeout_spinbutton">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="halign">end</property>
+                        <property name="adjustment">hide_timeout_adjustment</property>
+                        <property name="digits">3</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSpinButton" id="show_timeout_spinbutton">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="halign">end</property>
+                        <property name="adjustment">show_timeout_adjustment</property>
+                        <property name="digits">3</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSpinButton" id="pressure_threshold_spinbutton">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="text">0.000</property>
+                        <property name="adjustment">pressure_threshold_adjustment</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">3</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label9">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="hexpand">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Hide timeout (s)</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="show_timeout_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="hexpand">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Show timeout (s)</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="pressure_threshold_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="hexpand">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Pressure threshold</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">3</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+        </child>
+        <child type="label_item">
+          <placeholder/>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+  </object>
+</interface>
diff --git a/package/appIcons.js b/package/appIcons.js
new file mode 100644
index 0000000000000000000000000000000000000000..ac9058523091bd7066283ecccaa323365492270a
--- /dev/null
+++ b/package/appIcons.js
@@ -0,0 +1,1256 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
+const Clutter = imports.gi.Clutter;
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+const Gtk = imports.gi.Gtk;
+const Signals = imports.signals;
+const Lang = imports.lang;
+const Meta = imports.gi.Meta;
+const Shell = imports.gi.Shell;
+const St = imports.gi.St;
+const Mainloop = imports.mainloop;
+
+// Use __ () and N__() for the extension gettext domain, and reuse
+// the shell domain with the default _() and N_()
+const Gettext = imports.gettext.domain('dashtodock');
+const __ = Gettext.gettext;
+const N__ = function(e) { return e };
+
+const AppDisplay = imports.ui.appDisplay;
+const AppFavorites = imports.ui.appFavorites;
+const Dash = imports.ui.dash;
+const DND = imports.ui.dnd;
+const IconGrid = imports.ui.iconGrid;
+const Main = imports.ui.main;
+const PopupMenu = imports.ui.popupMenu;
+const Tweener = imports.ui.tweener;
+const Util = imports.misc.util;
+const Workspace = imports.ui.workspace;
+
+const Me = imports.misc.extensionUtils.getCurrentExtension();
+const Utils = Me.imports.utils;
+const WindowPreview = Me.imports.windowPreview;
+
+let tracker = Shell.WindowTracker.get_default();
+
+let DASH_ITEM_LABEL_SHOW_TIME = Dash.DASH_ITEM_LABEL_SHOW_TIME;
+
+const clickAction = {
+    SKIP: 0,
+    MINIMIZE: 1,
+    LAUNCH: 2,
+    CYCLE_WINDOWS: 3,
+    MINIMIZE_OR_OVERVIEW: 4,
+    PREVIEWS: 5,
+    QUIT: 6
+};
+
+const scrollAction = {
+    DO_NOTHING: 0,
+    CYCLE_WINDOWS: 1,
+    SWITCH_WORKSPACE: 2
+};
+
+let recentlyClickedAppLoopId = 0;
+let recentlyClickedApp = null;
+let recentlyClickedAppWindows = null;
+let recentlyClickedAppIndex = 0;
+let recentlyClickedAppMonitor = -1;
+
+/**
+ * Extend AppIcon
+ *
+ * - Pass settings to the constructor and bind settings changes
+ * - Apply a css class based on the number of windows of each application (#N);
+ * - Draw a dot for each window of the application based on the default "dot" style which is hidden (#N);
+ *   a class of the form "running#N" is applied to the AppWellIcon actor.
+ *   like the original .running one.
+ * - Add a .focused style to the focused app
+ * - Customize click actions.
+ * - Update minimization animation target
+ * - Update menu if open on windows change
+ */
+const MyAppIcon = new Lang.Class({
+    Name: 'DashToDock.AppIcon',
+    Extends: AppDisplay.AppIcon,
+
+    // settings are required inside.
+    _init: function(settings, app, monitorIndex, iconParams) {
+        // a prefix is required to avoid conflicting with the parent class variable
+        this._dtdSettings = settings;
+        this.monitorIndex = monitorIndex;
+        this._signalsHandler = new Utils.GlobalSignalsHandler();
+        this._nWindows = 0;
+
+        this.parent(app, iconParams);
+
+        // Monitor windows-changes instead of app state.
+        // Keep using the same Id and function callback (that is extended)
+        if (this._stateChangedId > 0) {
+            this.app.disconnect(this._stateChangedId);
+            this._stateChangedId = 0;
+        }
+
+        this._stateChangedId = this.app.connect('windows-changed',
+                                                Lang.bind(this,
+                                                          this.onWindowsChanged));
+        this._focusAppChangeId = tracker.connect('notify::focus-app',
+                                                 Lang.bind(this,
+                                                           this._onFocusAppChanged));
+        this._enteredMonitorId = global.screen.connect('window-entered-monitor',
+                                                       Lang.bind(this,
+                                                                 this.onWindowsChanged));
+
+        this._dots = null;
+
+        let keys = ['apply-custom-theme',
+                   'custom-theme-running-dots',
+                   'custom-theme-customize-running-dots',
+                   'custom-theme-running-dots-color',
+                   'custom-theme-running-dots-border-color',
+                   'custom-theme-running-dots-border-width'];
+
+        keys.forEach(function(key) {
+            this._signalsHandler.add([
+                this._dtdSettings,
+                'changed::' + key,
+                Lang.bind(this, this._toggleDots)
+            ]);
+        }, this);
+
+        this._toggleDots();
+
+        this._dtdSettings.connect('changed::scroll-action', Lang.bind(this, function() {
+            this._optionalScrollCycleWindows();
+        }));
+        this._optionalScrollCycleWindows();
+
+        this._numberOverlay();
+
+        this._previewMenuManager = null;
+        this._previewMenu = null;
+    },
+
+    _onDestroy: function() {
+        this.parent();
+
+        // This is necessary due to an upstream bug
+        // https://bugzilla.gnome.org/show_bug.cgi?id=757556
+        // It can be safely removed once it get solved upstrea.
+        if (this._menu)
+            this._menu.close(false);
+
+        // Disconect global signals
+        // stateChangedId is already handled by parent)
+        if (this._focusAppChangeId > 0) {
+            tracker.disconnect(this._focusAppChangeId);
+            this._focusAppChangeId = 0;
+        }
+
+        if (this._enteredMonitorId > 0) {
+            global.screen.disconnect(this._enteredMonitorId);
+            this._enteredMonitorId = 0;
+        }
+
+        this._signalsHandler.destroy();
+
+        if (this._scrollEventHandler)
+            this.actor.disconnect(this._scrollEventHandler);
+    },
+
+    _optionalScrollCycleWindows: function() {
+        if (this._scrollEventHandler) {
+            this.actor.disconnect(this._scrollEventHandler);
+            this._scrollEventHandler = 0;
+        }
+
+        let isEnabled = this._dtdSettings.get_enum('scroll-action') === scrollAction.CYCLE_WINDOWS;
+        if (!isEnabled) return;
+
+        this._scrollEventHandler = this.actor.connect('scroll-event', Lang.bind(this,
+                                                          this.onScrollEvent));
+    },
+
+    onScrollEvent: function(actor, event) {
+
+        // We only activate windows of running applications, i.e. we never open new windows
+        // We check if the app is running, and that the # of windows is > 0 in
+        // case we use workspace isolation,
+        let appIsRunning = this.app.state == Shell.AppState.RUNNING
+            && this.getInterestingWindows().length > 0;
+
+        if (!appIsRunning)
+            return false
+
+        if (this._optionalScrollCycleWindowsDeadTimeId > 0)
+            return false;
+        else
+            this._optionalScrollCycleWindowsDeadTimeId = Mainloop.timeout_add(250, Lang.bind(this, function() {
+                this._optionalScrollCycleWindowsDeadTimeId = 0;
+            }));
+
+        let direction = null;
+
+        switch (event.get_scroll_direction()) {
+        case Clutter.ScrollDirection.UP:
+            direction = Meta.MotionDirection.UP;
+            break;
+        case Clutter.ScrollDirection.DOWN:
+            direction = Meta.MotionDirection.DOWN;
+            break;
+        case Clutter.ScrollDirection.SMOOTH:
+            let [dx, dy] = event.get_scroll_delta();
+            if (dy < 0)
+                direction = Meta.MotionDirection.UP;
+            else if (dy > 0)
+                direction = Meta.MotionDirection.DOWN;
+            break;
+        }
+
+        let focusedApp = tracker.focus_app;
+        if (!Main.overview._shown) {
+            let reversed = direction === Meta.MotionDirection.UP;
+            if (this.app == focusedApp)
+                this._cycleThroughWindows(reversed);
+            else {
+                // Activate the first window
+                let windows = this.getInterestingWindows();
+                if (windows.length > 0) {
+                    let w = windows[0];
+                    Main.activateWindow(w);
+                }
+            }
+        }
+        else
+            this.app.activate();
+        return true;
+    },
+
+    onWindowsChanged: function() {
+
+        if (this._menu && this._menu.isOpen)
+            this._menu.update();
+
+        this._updateRunningStyle();
+        this.updateIconGeometry();
+    },
+
+    /**
+     * Update taraget for minimization animation
+     */
+    updateIconGeometry: function() {
+        // If (for unknown reason) the actor is not on the stage the reported size
+        // and position are random values, which might exceeds the integer range
+        // resulting in an error when assigned to the a rect. This is a more like
+        // a workaround to prevent flooding the system with errors.
+        if (this.actor.get_stage() == null)
+            return;
+
+        let rect = new Meta.Rectangle();
+
+        [rect.x, rect.y] = this.actor.get_transformed_position();
+        [rect.width, rect.height] = this.actor.get_transformed_size();
+
+        let windows = this.app.get_windows();
+        if (this._dtdSettings.get_boolean('multi-monitor')){
+            let monitorIndex = this.monitorIndex;
+            windows = windows.filter(function(w) {
+                return w.get_monitor() == monitorIndex;
+            });
+        }
+        windows.forEach(function(w) {
+            w.set_icon_geometry(rect);
+        });
+    },
+
+    _toggleDots: function() {
+        if (this._dtdSettings.get_boolean('custom-theme-running-dots') || this._dtdSettings.get_boolean('apply-custom-theme'))
+            this._showDots();
+        else
+            this._hideDots();
+    },
+
+    _showDots: function() {
+        // I use opacity to hide the default dot because the show/hide function
+        // are used by the parent class.
+        this._dot.opacity = 0;
+
+        // Just update style if dots already exist
+        if (this._dots) {
+            this._updateCounterClass();
+            return;
+        }
+
+        this._dots = new St.DrawingArea({x_expand: true, y_expand: true});
+        this._dots.connect('repaint', Lang.bind(this, function() {
+            this._drawCircles(this._dots, Utils.getPosition(this._dtdSettings));
+        }));
+        this._iconContainer.add_child(this._dots);
+        this._updateCounterClass();
+    },
+
+    _hideDots: function() {
+        this._dot.opacity = 255;
+        if (this._dots)
+            this._dots.destroy()
+        this._dots = null;
+    },
+
+    _updateRunningStyle: function() {
+        // When using workspace isolation, we need to hide the dots of apps with
+        // no windows in the current workspace
+        if (this._dtdSettings.get_boolean('isolate-workspaces') ||
+            this._dtdSettings.get_boolean('isolate-monitors')) {
+            if (this.app.state != Shell.AppState.STOPPED
+                && this.getInterestingWindows().length != 0)
+                this._dot.show();
+            else
+                this._dot.hide();
+        }
+        else
+            this.parent();
+        this._onFocusAppChanged();
+        this._updateCounterClass();
+    },
+
+    popupMenu: function() {
+        this._removeMenuTimeout();
+        this.actor.fake_release();
+        this._draggable.fakeRelease();
+
+        if (!this._menu) {
+            this._menu = new MyAppIconMenu(this, this._dtdSettings);
+            this._menu.connect('activate-window', Lang.bind(this, function(menu, window) {
+                this.activateWindow(window);
+            }));
+            this._menu.connect('open-state-changed', Lang.bind(this, function(menu, isPoppedUp) {
+                if (!isPoppedUp)
+                    this._onMenuPoppedDown();
+                else {
+                    // Setting the max-height is s useful if part of the menu is
+                    // scrollable so the minimum height is smaller than the natural height.
+                    let monitor_index = Main.layoutManager.findIndexForActor(this.actor);
+                    let workArea = Main.layoutManager.getWorkAreaForMonitor(monitor_index);
+                    let position = Utils.getPosition(this._dtdSettings);
+                    this._isHorizontal = ( position == St.Side.TOP ||
+                                           position == St.Side.BOTTOM);
+                    // If horizontal also remove the height of the dash
+                    let additional_margin = this._isHorizontal && !this._dtdSettings.get_boolean('dock-fixed') ? Main.overview._dash.actor.height : 0;
+                    let verticalMargins = this._menu.actor.margin_top + this._menu.actor.margin_bottom;
+                    // Also set a max width to the menu, so long labels (long windows title) get truncated
+                    this._menu.actor.style = ('max-height: ' + Math.round(workArea.height - additional_margin - verticalMargins) + 'px;' +
+                                              'max-width: 400px');
+                }
+            }));
+            let id = Main.overview.connect('hiding', Lang.bind(this, function() {
+                this._menu.close();
+            }));
+            this._menu.actor.connect('destroy', function() {
+                Main.overview.disconnect(id);
+            });
+
+            this._menuManager.addMenu(this._menu);
+        }
+
+        this.emit('menu-state-changed', true);
+
+        this.actor.set_hover(true);
+        this._menu.popup();
+        this._menuManager.ignoreRelease();
+        this.emit('sync-tooltip');
+
+        return false;
+    },
+
+    _onFocusAppChanged: function() {
+        // We need to check the number of windows, as the focus might be
+        // happening on another monitor if using isolation
+        if (tracker.focus_app == this.app && this.getInterestingWindows().length != 0)
+            this.actor.add_style_class_name('focused');
+        else
+            this.actor.remove_style_class_name('focused');
+    },
+
+    activate: function(button) {
+
+        if (!this._dtdSettings.get_boolean('customize-click')) {
+            this.parent(button);
+            return;
+        }
+
+        let event = Clutter.get_current_event();
+        let modifiers = event ? event.get_state() : 0;
+        let focusedApp = tracker.focus_app;
+
+        // Only consider SHIFT and CONTROL as modifiers (exclude SUPER, CAPS-LOCK, etc.)
+        modifiers = modifiers & (Clutter.ModifierType.SHIFT_MASK | Clutter.ModifierType.CONTROL_MASK);
+
+        // We don't change the CTRL-click behaviour: in such case we just chain
+        // up the parent method and return.
+        if (modifiers & Clutter.ModifierType.CONTROL_MASK) {
+                // Keep default behaviour: launch new window
+                // By calling the parent method I make it compatible
+                // with other extensions tweaking ctrl + click
+                this.parent(button);
+                return;
+        }
+
+        // We check what type of click we have and if the modifier SHIFT is
+        // being used. We then define what buttonAction should be for this
+        // event.
+        let buttonAction = 0;
+        if (button && button == 2 ) {
+            if (modifiers & Clutter.ModifierType.SHIFT_MASK)
+                buttonAction = this._dtdSettings.get_enum('shift-middle-click-action');
+            else
+                buttonAction = this._dtdSettings.get_enum('middle-click-action');
+        }
+        else if (button && button == 1) {
+            if (modifiers & Clutter.ModifierType.SHIFT_MASK)
+                buttonAction = this._dtdSettings.get_enum('shift-click-action');
+            else
+                buttonAction = this._dtdSettings.get_enum('click-action');
+        }
+
+        // We check if the app is running, and that the # of windows is > 0 in
+        // case we use workspace isolation.
+        let windows = this.getInterestingWindows();
+        let appIsRunning = this.app.state == Shell.AppState.RUNNING
+            && windows.length > 0;
+
+        // Some action modes (e.g. MINIMIZE_OR_OVERVIEW) require overview to remain open
+        // This variable keeps track of this
+        let shouldHideOverview = true;
+
+        // We customize the action only when the application is already running
+        if (appIsRunning) {
+            switch (buttonAction) {
+            case clickAction.MINIMIZE:
+                // In overview just activate the app, unless the acion is explicitely
+                // requested with a keyboard modifier
+                if (!Main.overview._shown || modifiers){
+                    // If we have button=2 or a modifier, allow minimization even if
+                    // the app is not focused
+                    if (this.app == focusedApp || button == 2 || modifiers & Clutter.ModifierType.SHIFT_MASK) {
+                        // minimize all windows on double click and always in the case of primary click without
+                        // additional modifiers
+                        let click_count = 0;
+                        if (Clutter.EventType.CLUTTER_BUTTON_PRESS)
+                            click_count = event.get_click_count();
+                        let all_windows = (button == 1 && ! modifiers) || click_count > 1;
+                        this._minimizeWindow(all_windows);
+                    }
+                    else
+                        this._activateAllWindows();
+                }
+                else {
+                    let w = windows[0];
+                    Main.activateWindow(w);
+                }
+                break;
+
+            case clickAction.MINIMIZE_OR_OVERVIEW:
+                // When a single window is present, toggle minimization
+                // If only one windows is present toggle minimization, but only when trigggered with the
+                // simple click action (no modifiers, no middle click).
+                if (windows.length == 1 && !modifiers && button == 1) {
+                    let w = windows[0];
+                    if (this.app == focusedApp) {
+                        // Window is raised, minimize it
+                        this._minimizeWindow(w);
+                    } else {
+                        // Window is minimized, raise it
+                        Main.activateWindow(w);
+                    }
+                    // Launch overview when multiple windows are present
+                    // TODO: only show current app windows when gnome shell API will allow it
+                } else {
+                    shouldHideOverview = false;
+                    Main.overview.toggle();
+                }
+                break;
+
+            case clickAction.CYCLE_WINDOWS:
+                if (!Main.overview._shown){
+                    if (this.app == focusedApp)
+                        this._cycleThroughWindows();
+                    else {
+                        // Activate the first window
+                        let w = windows[0];
+                        Main.activateWindow(w);
+                    }
+                }
+                else
+                    this.app.activate();
+                break;
+
+            case clickAction.LAUNCH:
+                this.launchNewWindow();
+                break;
+
+            case clickAction.PREVIEWS:
+                if (!Main.overview._shown) {
+                    // If only one windows is present just switch to it, but only when trigggered with the
+                    // simple click action (no modifiers, no middle click).
+                    if (windows.length == 1 && !modifiers && button == 1) {
+                        let w = windows[0];
+                        Main.activateWindow(w);
+                    } else
+                        this._windowPreviews();
+                }
+                else {
+                    this.app.activate();
+                }
+                break;
+
+            case clickAction.QUIT:
+                this.closeAllWindows();
+                break;
+
+            case clickAction.SKIP:
+                let w = windows[0];
+                Main.activateWindow(w);
+                break;
+            }
+        }
+        else {
+            this.launchNewWindow();
+        }
+
+        // Hide overview except when action mode requires it
+        if(shouldHideOverview) {
+            Main.overview.hide();
+        }
+    },
+
+    shouldShowTooltip: function() {
+        return this.actor.hover && (!this._menu || !this._menu.isOpen) &&
+                            (!this._previewMenu || !this._previewMenu.isOpen);
+    },
+
+    _windowPreviews: function() {
+        if (!this._previewMenu) {
+            this._previewMenuManager = new PopupMenu.PopupMenuManager(this);
+
+            this._previewMenu = new WindowPreview.WindowPreviewMenu(this, this._dtdSettings);
+
+            this._previewMenuManager.addMenu(this._previewMenu);
+
+            this._previewMenu.connect('open-state-changed', Lang.bind(this, function(menu, isPoppedUp) {
+                if (!isPoppedUp)
+                    this._onMenuPoppedDown();
+            }));
+            let id = Main.overview.connect('hiding', Lang.bind(this, function() {
+                this._previewMenu.close();
+            }));
+            this._previewMenu.actor.connect('destroy', function() {
+                Main.overview.disconnect(id);
+            });
+
+        }
+
+        if (this._previewMenu.isOpen)
+            this._previewMenu.close();
+        else
+            this._previewMenu.popup();
+
+        return false;
+    },
+
+    // Try to do the right thing when attempting to launch a new window of an app. In
+    // particular, if the application doens't allow to launch a new window, activate
+    // the existing window instead.
+    launchNewWindow: function(p) {
+        let appInfo = this.app.get_app_info();
+        let actions = appInfo.list_actions();
+        if (this.app.can_open_new_window()) {
+            this.animateLaunch();
+            // This is used as a workaround for a bug resulting in no new windows being opened
+            // for certain running applications when calling open_new_window().
+            //
+            // https://bugzilla.gnome.org/show_bug.cgi?id=756844
+            //
+            // Similar to what done when generating the popupMenu entries, if the application provides
+            // a "New Window" action, use it instead of directly requesting a new window with
+            // open_new_window(), which fails for certain application, notably Nautilus.
+            if (actions.indexOf('new-window') == -1) {
+                this.app.open_new_window(-1);
+            }
+            else {
+                let i = actions.indexOf('new-window');
+                if (i !== -1)
+                    this.app.launch_action(actions[i], global.get_current_time(), -1);
+            }
+        }
+        else {
+            // Try to manually activate the first window. Otherwise, when the app is activated by
+            // switching to a different workspace, a launch spinning icon is shown and disappers only
+            // after a timeout.
+            let windows = this.app.get_windows();
+            if (windows.length > 0)
+                Main.activateWindow(windows[0])
+            else
+                this.app.activate();
+        }
+    },
+
+    _updateCounterClass: function() {
+        let maxN = 4;
+        this._nWindows = Math.min(this.getInterestingWindows().length, maxN);
+
+        for (let i = 1; i <= maxN; i++) {
+            let className = 'running' + i;
+            if (i != this._nWindows)
+                this.actor.remove_style_class_name(className);
+            else
+                this.actor.add_style_class_name(className);
+        }
+
+        if (this._dots)
+            this._dots.queue_repaint();
+    },
+
+    _drawCircles: function(area, side) {
+        let borderColor, borderWidth, bodyColor;
+
+        if (!this._dtdSettings.get_boolean('apply-custom-theme')
+            && this._dtdSettings.get_boolean('custom-theme-running-dots')
+            && this._dtdSettings.get_boolean('custom-theme-customize-running-dots')) {
+            borderColor = Clutter.color_from_string(this._dtdSettings.get_string('custom-theme-running-dots-border-color'))[1];
+            borderWidth = this._dtdSettings.get_int('custom-theme-running-dots-border-width');
+            bodyColor =  Clutter.color_from_string(this._dtdSettings.get_string('custom-theme-running-dots-color'))[1];
+        }
+        else {
+            // Re-use the style - background color, and border width and color -
+            // of the default dot
+            let themeNode = this._dot.get_theme_node();
+            borderColor = themeNode.get_border_color(side);
+            borderWidth = themeNode.get_border_width(side);
+            bodyColor = themeNode.get_background_color();
+        }
+
+        let [width, height] = area.get_surface_size();
+        let cr = area.get_context();
+
+        // Draw the required numbers of dots
+        // Define the radius as an arbitrary size, but keep large enough to account
+        // for the drawing of the border.
+        let radius = Math.max(width/22, borderWidth/2);
+        let padding = 0; // distance from the margin
+        let spacing = radius + borderWidth; // separation between the dots
+        let n = this._nWindows;
+
+        cr.setLineWidth(borderWidth);
+        Clutter.cairo_set_source_color(cr, borderColor);
+
+        switch (side) {
+        case St.Side.TOP:
+            cr.translate((width - (2*n)*radius - (n-1)*spacing)/2, padding);
+            for (let i = 0; i < n; i++) {
+                cr.newSubPath();
+                cr.arc((2*i+1)*radius + i*spacing, radius + borderWidth/2, radius, 0, 2*Math.PI);
+            }
+            break;
+
+        case St.Side.BOTTOM:
+            cr.translate((width - (2*n)*radius - (n-1)*spacing)/2, height - padding);
+            for (let i = 0; i < n; i++) {
+                cr.newSubPath();
+                cr.arc((2*i+1)*radius + i*spacing, -radius - borderWidth/2, radius, 0, 2*Math.PI);
+            }
+            break;
+
+        case St.Side.LEFT:
+            cr.translate(padding, (height - (2*n)*radius - (n-1)*spacing)/2);
+            for (let i = 0; i < n; i++) {
+                cr.newSubPath();
+                cr.arc(radius + borderWidth/2, (2*i+1)*radius + i*spacing, radius, 0, 2*Math.PI);
+            }
+            break;
+
+        case St.Side.RIGHT:
+            cr.translate(width - padding , (height - (2*n)*radius - (n-1)*spacing)/2);
+            for (let i = 0; i < n; i++) {
+                cr.newSubPath();
+                cr.arc(-radius - borderWidth/2, (2*i+1)*radius + i*spacing, radius, 0, 2*Math.PI);
+            }
+            break;
+        }
+
+        cr.strokePreserve();
+
+        Clutter.cairo_set_source_color(cr, bodyColor);
+        cr.fill();
+        cr.$dispose();
+    },
+
+    _numberOverlay: function() {
+        // Add label for a Hot-Key visual aid
+        this._numberOverlayLabel = new St.Label();
+        this._numberOverlayBin = new St.Bin({
+            child: this._numberOverlayLabel,
+            x_align: St.Align.START, y_align: St.Align.START,
+            x_expand: true, y_expand: true
+        });
+        this._numberOverlayLabel.add_style_class_name('number-overlay');
+        this._numberOverlayOrder = -1;
+        this._numberOverlayBin.hide();
+
+        this._iconContainer.add_child(this._numberOverlayBin);
+
+    },
+
+    updateNumberOverlay: function() {
+        // We apply an overall scale factor that might come from a HiDPI monitor.
+        // Clutter dimensions are in physical pixels, but CSS measures are in logical
+        // pixels, so make sure to consider the scale.
+        let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
+        // Set the font size to something smaller than the whole icon so it is
+        // still visible. The border radius is large to make the shape circular
+        let [minWidth, natWidth] = this._iconContainer.get_preferred_width(-1);
+        let font_size = Math.round(Math.max(12, 0.3*natWidth) / scaleFactor);
+        let size = Math.round(font_size*1.2);
+        this._numberOverlayLabel.set_style(
+           'font-size: ' + font_size + 'px;' +
+           'border-radius: ' + this.icon.iconSize + 'px;' +
+           'width: ' + size + 'px; height: ' + size +'px;'
+        );
+    },
+
+    setNumberOverlay: function(number) {
+        this._numberOverlayOrder = number;
+        this._numberOverlayLabel.set_text(number.toString());
+    },
+
+    toggleNumberOverlay: function(activate) {
+        if (activate && this._numberOverlayOrder > -1) {
+            this.updateNumberOverlay();
+            this._numberOverlayBin.show();
+        }
+        else
+            this._numberOverlayBin.hide();
+    },
+
+    _minimizeWindow: function(param) {
+        // Param true make all app windows minimize
+        let windows = this.getInterestingWindows();
+        let current_workspace = global.screen.get_active_workspace();
+        for (let i = 0; i < windows.length; i++) {
+            let w = windows[i];
+            if (w.get_workspace() == current_workspace && w.showing_on_its_workspace()) {
+                w.minimize();
+                // Just minimize one window. By specification it should be the
+                // focused window on the current workspace.
+                if(!param)
+                    break;
+            }
+        }
+    },
+
+    // By default only non minimized windows are activated.
+    // This activates all windows in the current workspace.
+    _activateAllWindows: function() {
+        // First activate first window so workspace is switched if needed.
+        // We don't do this if isolation is on!
+        if (!this._dtdSettings.get_boolean('isolate-workspaces') &&
+            !this._dtdSettings.get_boolean('isolate-monitors'))
+            this.app.activate();
+
+        // then activate all other app windows in the current workspace
+        let windows = this.getInterestingWindows();
+        let activeWorkspace = global.screen.get_active_workspace_index();
+
+        if (windows.length <= 0)
+            return;
+
+        let activatedWindows = 0;
+
+        for (let i = windows.length - 1; i >= 0; i--) {
+            if (windows[i].get_workspace().index() == activeWorkspace) {
+                Main.activateWindow(windows[i]);
+                activatedWindows++;
+            }
+        }
+    },
+
+    //This closes all windows of the app.
+    closeAllWindows: function() {
+        let windows = this.getInterestingWindows();
+        for (let i = 0; i < windows.length; i++)
+            windows[i].delete(global.get_current_time());
+    },
+
+    _cycleThroughWindows: function(reversed) {
+        // Store for a little amount of time last clicked app and its windows
+        // since the order changes upon window interaction
+        let MEMORY_TIME=3000;
+
+        let app_windows = this.getInterestingWindows();
+
+        if (app_windows.length <1)
+            return
+
+        if (recentlyClickedAppLoopId > 0)
+            Mainloop.source_remove(recentlyClickedAppLoopId);
+        recentlyClickedAppLoopId = Mainloop.timeout_add(MEMORY_TIME, this._resetRecentlyClickedApp);
+
+        // If there isn't already a list of windows for the current app,
+        // or the stored list is outdated, use the current windows list.
+        let monitorIsolation = this._dtdSettings.get_boolean('isolate-monitors');
+        if (!recentlyClickedApp ||
+            recentlyClickedApp.get_id() != this.app.get_id() ||
+            recentlyClickedAppWindows.length != app_windows.length ||
+            (recentlyClickedAppMonitor != this.monitorIndex && monitorIsolation)) {
+            recentlyClickedApp = this.app;
+            recentlyClickedAppWindows = app_windows;
+            recentlyClickedAppMonitor = this.monitorIndex;
+            recentlyClickedAppIndex = 0;
+        }
+
+        if (reversed) {
+            recentlyClickedAppIndex--;
+            if (recentlyClickedAppIndex < 0) recentlyClickedAppIndex = recentlyClickedAppWindows.length - 1;
+        } else {
+            recentlyClickedAppIndex++;
+        }
+        let index = recentlyClickedAppIndex % recentlyClickedAppWindows.length;
+        let window = recentlyClickedAppWindows[index];
+
+        Main.activateWindow(window);
+    },
+
+    _resetRecentlyClickedApp: function() {
+        if (recentlyClickedAppLoopId > 0)
+            Mainloop.source_remove(recentlyClickedAppLoopId);
+        recentlyClickedAppLoopId=0;
+        recentlyClickedApp =null;
+        recentlyClickedAppWindows = null;
+        recentlyClickedAppIndex = 0;
+        recentlyClickedAppMonitor = -1;
+
+        return false;
+    },
+
+    // Filter out unnecessary windows, for instance
+    // nautilus desktop window.
+    getInterestingWindows: function() {
+        return getInterestingWindows(this.app, this._dtdSettings, this.monitorIndex);
+    }
+});
+/**
+ * Extend AppIconMenu
+ *
+ * - Pass settings to the constructor
+ * - set popup arrow side based on dash orientation
+ * - Add close windows option based on quitfromdash extension
+ *   (https://github.com/deuill/shell-extension-quitfromdash)
+ * - Add open windows thumbnails instead of list
+ * - update menu when application windows change
+ */
+const MyAppIconMenu = new Lang.Class({
+    Name: 'DashToDock.MyAppIconMenu',
+    Extends: AppDisplay.AppIconMenu,
+
+    _init: function(source, settings) {
+        let side = Utils.getPosition(settings);
+
+        // Damm it, there has to be a proper way of doing this...
+        // As I can't call the parent parent constructor (?) passing the side
+        // parameter, I overwite what I need later
+        this.parent(source);
+
+        // Change the initialized side where required.
+        this._arrowSide = side;
+        this._boxPointer._arrowSide = side;
+        this._boxPointer._userArrowSide = side;
+
+        this._dtdSettings = settings;
+    },
+
+    _redisplay: function() {
+        this.removeAll();
+
+        if (this._dtdSettings.get_boolean('show-windows-preview')) {
+            // Display the app windows menu items and the separator between windows
+            // of the current desktop and other windows.
+
+            this._allWindowsMenuItem = new PopupMenu.PopupSubMenuMenuItem(__('All Windows'), false);
+            this._allWindowsMenuItem.actor.hide();
+            this.addMenuItem(this._allWindowsMenuItem);
+
+            if (!this._source.app.is_window_backed()) {
+                this._appendSeparator();
+
+                let appInfo = this._source.app.get_app_info();
+                let actions = appInfo.list_actions();
+                if (this._source.app.can_open_new_window() &&
+                    actions.indexOf('new-window') == -1) {
+                    this._newWindowMenuItem = this._appendMenuItem(_("New Window"));
+                    this._newWindowMenuItem.connect('activate', Lang.bind(this, function() {
+                        if (this._source.app.state == Shell.AppState.STOPPED)
+                            this._source.animateLaunch();
+
+                        this._source.app.open_new_window(-1);
+                        this.emit('activate-window', null);
+                    }));
+                    this._appendSeparator();
+                }
+
+
+                if (AppDisplay.discreteGpuAvailable &&
+                    this._source.app.state == Shell.AppState.STOPPED &&
+                    actions.indexOf('activate-discrete-gpu') == -1) {
+                    this._onDiscreteGpuMenuItem = this._appendMenuItem(_("Launch using Dedicated Graphics Card"));
+                    this._onDiscreteGpuMenuItem.connect('activate', Lang.bind(this, function() {
+                        if (this._source.app.state == Shell.AppState.STOPPED)
+                            this._source.animateLaunch();
+
+                        this._source.app.launch(0, -1, true);
+                        this.emit('activate-window', null);
+                    }));
+                }
+
+                for (let i = 0; i < actions.length; i++) {
+                    let action = actions[i];
+                    let item = this._appendMenuItem(appInfo.get_action_name(action));
+                    item.connect('activate', Lang.bind(this, function(emitter, event) {
+                        this._source.app.launch_action(action, event.get_time(), -1);
+                        this.emit('activate-window', null);
+                    }));
+                }
+
+                let canFavorite = global.settings.is_writable('favorite-apps');
+
+                if (canFavorite) {
+                    this._appendSeparator();
+
+                    let isFavorite = AppFavorites.getAppFavorites().isFavorite(this._source.app.get_id());
+
+                    if (isFavorite) {
+                        let item = this._appendMenuItem(_("Remove from Favorites"));
+                        item.connect('activate', Lang.bind(this, function() {
+                            let favs = AppFavorites.getAppFavorites();
+                            favs.removeFavorite(this._source.app.get_id());
+                        }));
+                    } else {
+                        let item = this._appendMenuItem(_("Add to Favorites"));
+                        item.connect('activate', Lang.bind(this, function() {
+                            let favs = AppFavorites.getAppFavorites();
+                            favs.addFavorite(this._source.app.get_id());
+                        }));
+                    }
+                }
+
+                if (Shell.AppSystem.get_default().lookup_app('org.gnome.Software.desktop')) {
+                    this._appendSeparator();
+                    let item = this._appendMenuItem(_("Show Details"));
+                    item.connect('activate', Lang.bind(this, function() {
+                        let id = this._source.app.get_id();
+                        let args = GLib.Variant.new('(ss)', [id, '']);
+                        Gio.DBus.get(Gio.BusType.SESSION, null,
+                            function(o, res) {
+                                let bus = Gio.DBus.get_finish(res);
+                                bus.call('org.gnome.Software',
+                                         '/org/gnome/Software',
+                                         'org.gtk.Actions', 'Activate',
+                                         GLib.Variant.new('(sava{sv})',
+                                                          ['details', [args], null]),
+                                         null, 0, -1, null, null);
+                                Main.overview.hide();
+                            });
+                    }));
+                }
+            }
+
+        } else {
+            this.parent();
+        }
+
+        // quit menu
+        this._appendSeparator();
+        this._quitfromDashMenuItem = this._appendMenuItem(_("Quit"));
+        this._quitfromDashMenuItem.connect('activate', Lang.bind(this, function() {
+            this._source.closeAllWindows();
+        }));
+
+        this.update();
+    },
+
+    // update menu content when application windows change. This is desirable as actions
+    // acting on windows (closing) are performed while the menu is shown.
+    update: function() {
+
+      if(this._dtdSettings.get_boolean('show-windows-preview')){
+
+          let windows = this._source.getInterestingWindows();
+
+          // update, show or hide the quit menu
+          if ( windows.length > 0) {
+              let quitFromDashMenuText = "";
+              if (windows.length == 1)
+                  this._quitfromDashMenuItem.label.set_text(_("Quit"));
+              else
+                  this._quitfromDashMenuItem.label.set_text(_("Quit") + ' ' + windows.length + ' ' + _("Windows"));
+
+              this._quitfromDashMenuItem.actor.show();
+
+          } else {
+              this._quitfromDashMenuItem.actor.hide();
+          }
+
+          // update, show, or hide the allWindows menu
+          // Check if there are new windows not already displayed. In such case, repopulate the allWindows
+          // menu. Windows removal is already handled by each preview being connected to the destroy signal
+          let old_windows = this._allWindowsMenuItem.menu._getMenuItems().map(function(item){
+              return item._window;
+          });
+
+          let new_windows = windows.filter(function(w) {return old_windows.indexOf(w) < 0;});
+          if (new_windows.length > 0) {
+              this._populateAllWindowMenu(windows);
+
+              // Try to set the width to that of the submenu.
+              // TODO: can't get the actual size, getting a bit less.
+              // Temporary workaround: add 15px to compensate
+              this._allWindowsMenuItem.actor.width =  this._allWindowsMenuItem.menu.actor.width + 15;
+
+          }
+
+          // The menu is created hidden and never hidded after being shown. Instead, a singlal
+          // connected to its items destroy will set is insensitive if no more windows preview are shown.
+          if (windows.length > 0){
+              this._allWindowsMenuItem.actor.show();
+              this._allWindowsMenuItem.setSensitive(true);
+          }
+
+          // Update separators
+          this._getMenuItems().forEach(Lang.bind(this, this._updateSeparatorVisibility));
+      }
+
+
+    },
+
+    _populateAllWindowMenu: function(windows) {
+
+        this._allWindowsMenuItem.menu.removeAll();
+
+            if (windows.length > 0) {
+
+                let activeWorkspace = global.screen.get_active_workspace();
+                let separatorShown =  windows[0].get_workspace() != activeWorkspace;
+
+                for (let i = 0; i < windows.length; i++) {
+                    let window = windows[i];
+                    if (!separatorShown && window.get_workspace() != activeWorkspace) {
+                        this._allWindowsMenuItem.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+                        separatorShown = true;
+                    }
+
+                    let item = new WindowPreview.WindowPreviewMenuItem(window);
+                    this._allWindowsMenuItem.menu.addMenuItem(item);
+                    item.connect('activate', Lang.bind(this, function() {
+                        this.emit('activate-window', window);
+                    }));
+
+                    // This is to achieve a more gracefull transition when the last windows is closed.
+                    item.connect('destroy', Lang.bind(this, function() {
+                        if(this._allWindowsMenuItem.menu._getMenuItems().length == 1) // It's still counting the item just going to be destroyed
+                            this._allWindowsMenuItem.setSensitive(false);
+                    }));
+                }
+            }
+    },
+});
+Signals.addSignalMethods(MyAppIconMenu.prototype);
+
+// Filter out unnecessary windows, for instance
+// nautilus desktop window.
+function getInterestingWindows(app, settings, monitorIndex) {
+    let windows = app.get_windows().filter(function(w) {
+        return !w.skip_taskbar;
+    });
+
+    // When using workspace isolation, we filter out windows
+    // that are not in the current workspace
+    if (settings.get_boolean('isolate-workspaces'))
+        windows = windows.filter(function(w) {
+            return w.get_workspace().index() == global.screen.get_active_workspace_index();
+        });
+
+    if (settings.get_boolean('isolate-monitors'))
+        windows = windows.filter(function(w) {
+            return w.get_monitor() == monitorIndex;
+        });
+
+    return windows;
+}
+
+/**
+ * Extend ShowAppsIcon
+ *
+ * - Pass settings to the constructor
+ * - set label position based on dash orientation
+ * - implement a popupMenu based on the AppIcon code
+ *
+ *  I can't subclass the original object because of this: https://bugzilla.gnome.org/show_bug.cgi?id=688973.
+ *  thus use this ugly pattern.
+ */
+function extendShowAppsIcon(showAppsIcon, settings) {
+    showAppsIcon._dtdSettings = settings;
+    /* the variable equivalent to toggleButton has a different name in the appIcon class
+     (actor): duplicate reference to easily reuse appIcon methods */
+    showAppsIcon.actor =  showAppsIcon.toggleButton;
+
+    // Re-use appIcon methods
+    showAppsIcon._removeMenuTimeout = AppDisplay.AppIcon.prototype._removeMenuTimeout;
+    showAppsIcon._setPopupTimeout = AppDisplay.AppIcon.prototype._setPopupTimeout;
+    showAppsIcon._onButtonPress = AppDisplay.AppIcon.prototype._onButtonPress;
+    showAppsIcon._onKeyboardPopupMenu = AppDisplay.AppIcon.prototype._onKeyboardPopupMenu;
+    showAppsIcon._onLeaveEvent = AppDisplay.AppIcon.prototype._onLeaveEvent;
+    showAppsIcon._onTouchEvent = AppDisplay.AppIcon.prototype._onTouchEvent;
+    showAppsIcon._onMenuPoppedDown = AppDisplay.AppIcon.prototype._onMenuPoppedDown;
+
+
+    // No action on clicked (showing of the appsview is controlled elsewhere)
+    showAppsIcon._onClicked = function(actor, button) {
+        showAppsIcon._removeMenuTimeout();
+    };
+
+    showAppsIcon.actor.connect('leave-event', Lang.bind(showAppsIcon, showAppsIcon._onLeaveEvent));
+    showAppsIcon.actor.connect('button-press-event', Lang.bind(showAppsIcon, showAppsIcon._onButtonPress));
+    showAppsIcon.actor.connect('touch-event', Lang.bind(showAppsIcon, showAppsIcon._onTouchEvent));
+    showAppsIcon.actor.connect('clicked', Lang.bind(showAppsIcon, showAppsIcon._onClicked));
+    showAppsIcon.actor.connect('popup-menu', Lang.bind(showAppsIcon, showAppsIcon._onKeyboardPopupMenu));
+
+    showAppsIcon._menu = null;
+    showAppsIcon._menuManager = new PopupMenu.PopupMenuManager(showAppsIcon);
+    showAppsIcon._menuTimeoutId = 0;
+
+    showAppsIcon.showLabel = itemShowLabel;
+
+    showAppsIcon.popupMenu = function() {
+        showAppsIcon._removeMenuTimeout();
+        showAppsIcon.actor.fake_release();
+
+        if (!showAppsIcon._menu) {
+            showAppsIcon._menu = new MyShowAppsIconMenu(showAppsIcon, showAppsIcon._dtdSettings);
+            showAppsIcon._menu.connect('open-state-changed', Lang.bind(showAppsIcon, function(menu, isPoppedUp) {
+                if (!isPoppedUp)
+                    showAppsIcon._onMenuPoppedDown();
+            }));
+            let id = Main.overview.connect('hiding', Lang.bind(showAppsIcon, function() {
+                showAppsIcon._menu.close();
+            }));
+            showAppsIcon._menu.actor.connect('destroy', function() {
+                Main.overview.disconnect(id);
+            });
+            showAppsIcon._menuManager.addMenu(showAppsIcon._menu);
+        }
+
+        showAppsIcon.emit('menu-state-changed', true);
+
+        showAppsIcon.actor.set_hover(true);
+        showAppsIcon._menu.popup();
+        showAppsIcon._menuManager.ignoreRelease();
+        showAppsIcon.emit('sync-tooltip');
+
+        return false;
+    };
+
+    Signals.addSignalMethods(showAppsIcon);
+}
+
+/**
+ * A menu for the showAppsIcon
+ */
+const MyShowAppsIconMenu = new Lang.Class({
+    Name: 'DashToDock.ShowAppsIconMenu',
+    Extends: MyAppIconMenu,
+
+    _redisplay: function() {
+        this.removeAll();
+
+        /* Translators: %s is "Settings", which is automatically translated. You
+           can also translate the full message if this fits better your language. */
+        let name = __('Dash to Dock %s').format(_('Settings'))
+        let item = this._appendMenuItem(name);
+
+        item.connect('activate', function () {
+            Util.spawn(["gnome-shell-extension-prefs", Me.metadata.uuid]);
+        });
+    }
+});
+
+/**
+ * This function is used for both extendShowAppsIcon and extendDashItemContainer
+ */
+function itemShowLabel()  {
+    // Check if the label is still present at all. When switching workpaces, the
+    // item might have been destroyed in between.
+    if (!this._labelText || this.label.get_stage() == null)
+      return;
+
+    this.label.set_text(this._labelText);
+    this.label.opacity = 0;
+    this.label.show();
+
+    let [stageX, stageY] = this.get_transformed_position();
+    let node = this.label.get_theme_node();
+
+    let itemWidth  = this.allocation.x2 - this.allocation.x1;
+    let itemHeight = this.allocation.y2 - this.allocation.y1;
+
+    let labelWidth = this.label.get_width();
+    let labelHeight = this.label.get_height();
+
+    let x, y, xOffset, yOffset;
+
+    let position = Utils.getPosition(this._dtdSettings);
+    this._isHorizontal = ((position == St.Side.TOP) || (position == St.Side.BOTTOM));
+    let labelOffset = node.get_length('-x-offset');
+
+    switch (position) {
+    case St.Side.LEFT:
+        yOffset = Math.floor((itemHeight - labelHeight) / 2);
+        y = stageY + yOffset;
+        xOffset = labelOffset;
+        x = stageX + this.get_width() + xOffset;
+        break;
+    case St.Side.RIGHT:
+        yOffset = Math.floor((itemHeight - labelHeight) / 2);
+        y = stageY + yOffset;
+        xOffset = labelOffset;
+        x = Math.round(stageX) - labelWidth - xOffset;
+        break;
+    case St.Side.TOP:
+        y = stageY + labelOffset + itemHeight;
+        xOffset = Math.floor((itemWidth - labelWidth) / 2);
+        x = stageX + xOffset;
+        break;
+    case St.Side.BOTTOM:
+        yOffset = labelOffset;
+        y = stageY - labelHeight - yOffset;
+        xOffset = Math.floor((itemWidth - labelWidth) / 2);
+        x = stageX + xOffset;
+        break;
+    }
+
+    // keep the label inside the screen border
+    // Only needed fot the x coordinate.
+
+    // Leave a few pixel gap
+    let gap = 5;
+    let monitor = Main.layoutManager.findMonitorForActor(this);
+    if (x - monitor.x < gap)
+        x += monitor.x - x + labelOffset;
+    else if (x + labelWidth > monitor.x + monitor.width - gap)
+        x -= x + labelWidth - (monitor.x + monitor.width) + gap;
+
+    this.label.set_position(x, y);
+    Tweener.addTween(this.label, {
+        opacity: 255,
+        time: DASH_ITEM_LABEL_SHOW_TIME,
+        transition: 'easeOutQuad',
+    });
+}
diff --git a/package/convenience.js b/package/convenience.js
new file mode 100644
index 0000000000000000000000000000000000000000..9c912bf23ab497dfda3a5ec4f48ee2bab947c075
--- /dev/null
+++ b/package/convenience.js
@@ -0,0 +1,74 @@
+/* -*- mode: js; js-basic-offset: 4; indent-tabs-mode: nil -*- */
+
+/*
+ * Part of this file comes from gnome-shell-extensions:
+ * http://git.gnome.org/browse/gnome-shell-extensions/
+ */
+
+const Gettext = imports.gettext;
+const Gio = imports.gi.Gio;
+
+const Config = imports.misc.config;
+const ExtensionUtils = imports.misc.extensionUtils;
+
+/**
+ * initTranslations:
+ * @domain: (optional): the gettext domain to use
+ *
+ * Initialize Gettext to load translations from extensionsdir/locale.
+ * If @domain is not provided, it will be taken from metadata['gettext-domain']
+ */
+function initTranslations(domain) {
+    let extension = ExtensionUtils.getCurrentExtension();
+
+    domain = domain || extension.metadata['gettext-domain'];
+
+    // Check if this extension was built with "make zip-file", and thus
+    // has the locale files in a subfolder
+    // otherwise assume that extension has been installed in the
+    // same prefix as gnome-shell
+    let localeDir = extension.dir.get_child('locale');
+    if (localeDir.query_exists(null))
+        Gettext.bindtextdomain(domain, localeDir.get_path());
+    else
+        Gettext.bindtextdomain(domain, Config.LOCALEDIR);
+}
+
+/**
+ * getSettings:
+ * @schema: (optional): the GSettings schema id
+ *
+ * Builds and return a GSettings schema for @schema, using schema files
+ * in extensionsdir/schemas. If @schema is not provided, it is taken from
+ * metadata['settings-schema'].
+ */
+function getSettings(schema) {
+    let extension = ExtensionUtils.getCurrentExtension();
+
+    schema = schema || extension.metadata['settings-schema'];
+
+    const GioSSS = Gio.SettingsSchemaSource;
+
+    // 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
+    });
+}
diff --git a/package/dash.js b/package/dash.js
new file mode 100644
index 0000000000000000000000000000000000000000..593185a9441bfb5431866aadd83650b84e600104
--- /dev/null
+++ b/package/dash.js
@@ -0,0 +1,1180 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
+const Clutter = imports.gi.Clutter;
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+const Gtk = imports.gi.Gtk;
+const Signals = imports.signals;
+const Lang = imports.lang;
+const Meta = imports.gi.Meta;
+const Shell = imports.gi.Shell;
+const St = imports.gi.St;
+const Mainloop = imports.mainloop;
+
+const AppDisplay = imports.ui.appDisplay;
+const AppFavorites = imports.ui.appFavorites;
+const Dash = imports.ui.dash;
+const DND = imports.ui.dnd;
+const IconGrid = imports.ui.iconGrid;
+const Main = imports.ui.main;
+const PopupMenu = imports.ui.popupMenu;
+const Tweener = imports.ui.tweener;
+const Util = imports.misc.util;
+const Workspace = imports.ui.workspace;
+
+const Me = imports.misc.extensionUtils.getCurrentExtension();
+const Utils = Me.imports.utils;
+const AppIcons = Me.imports.appIcons;
+
+let DASH_ANIMATION_TIME = Dash.DASH_ANIMATION_TIME;
+let DASH_ITEM_LABEL_HIDE_TIME = Dash.DASH_ITEM_LABEL_HIDE_TIME;
+let DASH_ITEM_HOVER_TIMEOUT = Dash.DASH_ITEM_HOVER_TIMEOUT;
+
+/**
+ * Extend DashItemContainer
+ *
+ * - Pass settings to the constructor
+ * - set label position based on dash orientation
+ *
+ *  I can't subclass the original object because of this: https://bugzilla.gnome.org/show_bug.cgi?id=688973.
+ *  thus use this ugly pattern.
+ */
+function extendDashItemContainer(dashItemContainer, settings) {
+    dashItemContainer._dtdSettings = settings;
+    dashItemContainer.showLabel = AppIcons.itemShowLabel;
+}
+
+/**
+ * This class is a fork of the upstream DashActor class (ui.dash.js)
+ *
+ * Summary of changes:
+ * - passed settings to class as parameter
+ * - modified chldBox calculations for when 'show-apps-at-top' option is checked
+ * - handle horizontal dash
+ */
+const MyDashActor = new Lang.Class({
+    Name: 'DashToDock.MyDashActor',
+
+    _init: function(settings) {
+        // a prefix is required to avoid conflicting with the parent class variable
+        this._dtdSettings = settings;
+        this._rtl = (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL);
+
+        this._position = Utils.getPosition(settings);
+        this._isHorizontal = ((this._position == St.Side.TOP) ||
+                               (this._position == St.Side.BOTTOM));
+
+        let layout = new Clutter.BoxLayout({
+            orientation: this._isHorizontal ? Clutter.Orientation.HORIZONTAL : Clutter.Orientation.VERTICAL
+        });
+
+        this.actor = new Shell.GenericContainer({
+            name: 'dash',
+            layout_manager: layout,
+            clip_to_allocation: true
+        });
+        this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
+        this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
+        this.actor.connect('allocate', Lang.bind(this, this._allocate));
+
+        this.actor._delegate = this;
+    },
+
+    _allocate: function(actor, box, flags) {
+        let contentBox = box;
+        let availWidth = contentBox.x2 - contentBox.x1;
+        let availHeight = contentBox.y2 - contentBox.y1;
+
+        let [appIcons, showAppsButton] = actor.get_children();
+        let [showAppsMinHeight, showAppsNatHeight] = showAppsButton.get_preferred_height(availWidth);
+        let [showAppsMinWidth, showAppsNatWidth] = showAppsButton.get_preferred_width(availHeight);
+
+        let offset_x = this._isHorizontal?showAppsNatWidth:0;
+        let offset_y = this._isHorizontal?0:showAppsNatHeight;
+
+        let childBox = new Clutter.ActorBox();
+        if ((this._dtdSettings.get_boolean('show-apps-at-top') && !this._isHorizontal)
+            || (this._dtdSettings.get_boolean('show-apps-at-top') && !this._rtl)
+            || (!this._dtdSettings.get_boolean('show-apps-at-top') && this._isHorizontal && this._rtl)) {
+            childBox.x1 = contentBox.x1 + offset_x;
+            childBox.y1 = contentBox.y1 + offset_y;
+            childBox.x2 = contentBox.x2;
+            childBox.y2 = contentBox.y2;
+            appIcons.allocate(childBox, flags);
+
+            childBox.y1 = contentBox.y1;
+            childBox.x1 = contentBox.x1;
+            childBox.x2 = contentBox.x1 + showAppsNatWidth;
+            childBox.y2 = contentBox.y1 + showAppsNatHeight;
+            showAppsButton.allocate(childBox, flags);
+        }
+        else {
+            childBox.x1 = contentBox.x1;
+            childBox.y1 = contentBox.y1;
+            childBox.x2 = contentBox.x2 - offset_x;
+            childBox.y2 = contentBox.y2 - offset_y;
+            appIcons.allocate(childBox, flags);
+
+            childBox.x2 = contentBox.x2;
+            childBox.y2 = contentBox.y2;
+            childBox.x1 = contentBox.x2 - showAppsNatWidth;
+            childBox.y1 = contentBox.y2 - showAppsNatHeight;
+            showAppsButton.allocate(childBox, flags);
+        }
+    },
+
+    _getPreferredWidth: function(actor, forHeight, alloc) {
+        // We want to request the natural height of all our children
+        // as our natural height, so we chain up to StWidget (which
+        // then calls BoxLayout), but we only request the showApps
+        // button as the minimum size
+
+        let [, natWidth] = this.actor.layout_manager.get_preferred_width(this.actor, forHeight);
+
+        let themeNode = this.actor.get_theme_node();
+        let [, showAppsButton] = this.actor.get_children();
+        let [minWidth, ] = showAppsButton.get_preferred_height(forHeight);
+
+        alloc.min_size = minWidth;
+        alloc.natural_size = natWidth;
+
+    },
+
+    _getPreferredHeight: function(actor, forWidth, alloc) {
+        // We want to request the natural height of all our children
+        // as our natural height, so we chain up to StWidget (which
+        // then calls BoxLayout), but we only request the showApps
+        // button as the minimum size
+
+        let [, natHeight] = this.actor.layout_manager.get_preferred_height(this.actor, forWidth);
+
+        let themeNode = this.actor.get_theme_node();
+        let [, showAppsButton] = this.actor.get_children();
+        let [minHeight, ] = showAppsButton.get_preferred_height(forWidth);
+
+        alloc.min_size = minHeight;
+        alloc.natural_size = natHeight;
+    }
+});
+
+const baseIconSizes = [16, 22, 24, 32, 48, 64, 96, 128];
+
+/**
+ * This class is a fork of the upstream dash class (ui.dash.js)
+ *
+ * Summary of changes:
+ * - disconnect global signals adding a destroy method;
+ * - play animations even when not in overview mode
+ * - set a maximum icon size
+ * - show running and/or favorite applications
+ * - emit a custom signal when an app icon is added
+ * - hide showApps label when the custom menu is shown.
+ * - add scrollview
+ *   ensure actor is visible on keyfocus inseid the scrollview
+ * - add 128px icon size, might be usefull for hidpi display
+ * - sync minimization application target position.
+ * - keep running apps ordered.
+ */
+const MyDash = new Lang.Class({
+    Name: 'DashToDock.MyDash',
+
+    _init: function(settings, monitorIndex) {
+        this._maxHeight = -1;
+        this.iconSize = 64;
+        this._availableIconSizes = baseIconSizes;
+        this._shownInitially = false;
+
+        this._dtdSettings = settings;
+        this._monitorIndex = monitorIndex;
+        this._position = Utils.getPosition(settings);
+        this._isHorizontal = ((this._position == St.Side.TOP) ||
+                               (this._position == St.Side.BOTTOM));
+        this._signalsHandler = new Utils.GlobalSignalsHandler();
+
+        this._dragPlaceholder = null;
+        this._dragPlaceholderPos = -1;
+        this._animatingPlaceholdersCount = 0;
+        this._showLabelTimeoutId = 0;
+        this._resetHoverTimeoutId = 0;
+        this._ensureAppIconVisibilityTimeoutId = 0;
+        this._labelShowing = false;
+
+        this._containerObject = new MyDashActor(settings);
+        this._container = this._containerObject.actor;
+        this._scrollView = new St.ScrollView({
+            name: 'dashtodockDashScrollview',
+            hscrollbar_policy: Gtk.PolicyType.NEVER,
+            vscrollbar_policy: Gtk.PolicyType.NEVER,
+            enable_mouse_scrolling: false
+        });
+
+        this._scrollView.connect('scroll-event', Lang.bind(this, this._onScrollEvent));
+
+        this._box = new St.BoxLayout({
+            vertical: !this._isHorizontal,
+            clip_to_allocation: false,
+            x_align: Clutter.ActorAlign.START,
+            y_align: Clutter.ActorAlign.START
+        });
+        this._box._delegate = this;
+        this._container.add_actor(this._scrollView);
+        this._scrollView.add_actor(this._box);
+
+        this._showAppsIcon = new Dash.ShowAppsIcon();
+        AppIcons.extendShowAppsIcon(this._showAppsIcon, this._dtdSettings);
+        this._showAppsIcon.childScale = 1;
+        this._showAppsIcon.childOpacity = 255;
+        this._showAppsIcon.icon.setIconSize(this.iconSize);
+        this._hookUpLabel(this._showAppsIcon);
+
+        let appsIcon = this._showAppsIcon;
+        appsIcon.connect('menu-state-changed', Lang.bind(this, function(appsIcon, opened) {
+            this._itemMenuStateChanged(appsIcon, opened);
+        }));
+
+        this.showAppsButton = this._showAppsIcon.toggleButton;
+
+        this._container.add_actor(this._showAppsIcon);
+
+        let rtl = Clutter.get_default_text_direction() == Clutter.TextDirection.RTL;
+        this.actor = new St.Bin({
+            child: this._container,
+            y_align: St.Align.START,
+            x_align: rtl ? St.Align.END : St.Align.START
+        });
+
+        if (this._isHorizontal) {
+            this.actor.connect('notify::width', Lang.bind(this, function() {
+                if (this._maxHeight != this.actor.width)
+                    this._queueRedisplay();
+                this._maxHeight = this.actor.width;
+            }));
+        }
+        else {
+            this.actor.connect('notify::height', Lang.bind(this, function() {
+                if (this._maxHeight != this.actor.height)
+                    this._queueRedisplay();
+                this._maxHeight = this.actor.height;
+            }));
+        }
+
+        // Update minimization animation target position on allocation of the
+        // container and on scrollview change.
+        this._box.connect('notify::allocation', Lang.bind(this, this._updateAppsIconGeometry));
+        let scrollViewAdjustment = this._isHorizontal ? this._scrollView.hscroll.adjustment : this._scrollView.vscroll.adjustment;
+        scrollViewAdjustment.connect('notify::value', Lang.bind(this, this._updateAppsIconGeometry));
+
+        this._workId = Main.initializeDeferredWork(this._box, Lang.bind(this, this._redisplay));
+
+        this._settings = new Gio.Settings({
+            schema_id: 'org.gnome.shell'
+        });
+
+        this._appSystem = Shell.AppSystem.get_default();
+
+        this._signalsHandler.add([
+            this._appSystem,
+            'installed-changed',
+            Lang.bind(this, function() {
+                AppFavorites.getAppFavorites().reload();
+                this._queueRedisplay();
+            })
+        ], [
+            AppFavorites.getAppFavorites(),
+            'changed',
+            Lang.bind(this, this._queueRedisplay)
+        ], [
+            this._appSystem,
+            'app-state-changed',
+            Lang.bind(this, this._queueRedisplay)
+        ], [
+            Main.overview,
+            'item-drag-begin',
+            Lang.bind(this, this._onDragBegin)
+        ], [
+            Main.overview,
+            'item-drag-end',
+            Lang.bind(this, this._onDragEnd)
+        ], [
+            Main.overview,
+            'item-drag-cancelled',
+            Lang.bind(this, this._onDragCancelled)
+        ]);
+    },
+
+    destroy: function() {
+        this._signalsHandler.destroy();
+    },
+
+    _onScrollEvent: function(actor, event) {
+        // If scroll is not used because the icon is resized, let the scroll event propagate.
+        if (!this._dtdSettings.get_boolean('icon-size-fixed'))
+            return Clutter.EVENT_PROPAGATE;
+
+        // Event coordinates are relative to the stage but can be transformed
+        // as the actor will only receive events within his bounds.
+        let stage_x, stage_y, ok, event_x, event_y, actor_w, actor_h;
+        [stage_x, stage_y] = event.get_coords();
+        [ok, event_x, event_y] = actor.transform_stage_point(stage_x, stage_y);
+        [actor_w, actor_h] = actor.get_size();
+
+        // If the scroll event is within a 1px margin from
+        // the relevant edge of the actor, let the event propagate.
+        if ((this._position == St.Side.LEFT && event_x <= 1)
+            || (this._position == St.Side.RIGHT && event_x >= actor_w - 2)
+            || (this._position == St.Side.TOP && event_y <= 1)
+            || (this._position == St.Side.BOTTOM && event_y >= actor_h - 2))
+            return Clutter.EVENT_PROPAGATE;
+
+        // reset timeout to avid conflicts with the mousehover event
+        if (this._ensureAppIconVisibilityTimeoutId > 0) {
+            Mainloop.source_remove(this._ensureAppIconVisibilityTimeoutId);
+            this._ensureAppIconVisibilityTimeoutId = 0;
+        }
+
+        // Skip to avoid double events mouse
+        if (event.is_pointer_emulated())
+            return Clutter.EVENT_STOP;
+
+        let adjustment, delta;
+
+        if (this._isHorizontal)
+            adjustment = this._scrollView.get_hscroll_bar().get_adjustment();
+        else
+            adjustment = this._scrollView.get_vscroll_bar().get_adjustment();
+
+        let increment = adjustment.step_increment;
+
+        switch (event.get_scroll_direction()) {
+        case Clutter.ScrollDirection.UP:
+            delta = -increment;
+            break;
+        case Clutter.ScrollDirection.DOWN:
+            delta = +increment;
+            break;
+        case Clutter.ScrollDirection.SMOOTH:
+            let [dx, dy] = event.get_scroll_delta();
+            delta = dy * increment;
+            // Also consider horizontal component, for instance touchpad
+            if (this._isHorizontal)
+                delta += dx * increment;
+            break;
+        }
+
+        adjustment.set_value(adjustment.get_value() + delta);
+
+        return Clutter.EVENT_STOP;
+    },
+
+    _onDragBegin: function() {
+        this._dragCancelled = false;
+        this._dragMonitor = {
+            dragMotion: Lang.bind(this, this._onDragMotion)
+        };
+        DND.addDragMonitor(this._dragMonitor);
+
+        if (this._box.get_n_children() == 0) {
+            this._emptyDropTarget = new Dash.EmptyDropTargetItem();
+            this._box.insert_child_at_index(this._emptyDropTarget, 0);
+            this._emptyDropTarget.show(true);
+        }
+    },
+
+    _onDragCancelled: function() {
+        this._dragCancelled = true;
+        this._endDrag();
+    },
+
+    _onDragEnd: function() {
+        if (this._dragCancelled)
+            return;
+
+        this._endDrag();
+    },
+
+    _endDrag: function() {
+        this._clearDragPlaceholder();
+        this._clearEmptyDropTarget();
+        this._showAppsIcon.setDragApp(null);
+        DND.removeDragMonitor(this._dragMonitor);
+    },
+
+    _onDragMotion: function(dragEvent) {
+        let app = Dash.getAppFromSource(dragEvent.source);
+        if (app == null)
+            return DND.DragMotionResult.CONTINUE;
+
+        let showAppsHovered = this._showAppsIcon.contains(dragEvent.targetActor);
+
+        if (!this._box.contains(dragEvent.targetActor) || showAppsHovered)
+            this._clearDragPlaceholder();
+
+        if (showAppsHovered)
+            this._showAppsIcon.setDragApp(app);
+        else
+            this._showAppsIcon.setDragApp(null);
+
+        return DND.DragMotionResult.CONTINUE;
+    },
+
+    _appIdListToHash: function(apps) {
+        let ids = {};
+        for (let i = 0; i < apps.length; i++)
+            ids[apps[i].get_id()] = apps[i];
+        return ids;
+    },
+
+    _queueRedisplay: function() {
+        Main.queueDeferredWork(this._workId);
+    },
+
+    _hookUpLabel: function(item, appIcon) {
+        item.child.connect('notify::hover', Lang.bind(this, function() {
+            this._syncLabel(item, appIcon);
+        }));
+
+        let id = Main.overview.connect('hiding', Lang.bind(this, function() {
+            this._labelShowing = false;
+            item.hideLabel();
+        }));
+        item.child.connect('destroy', function() {
+            Main.overview.disconnect(id);
+        });
+
+        if (appIcon) {
+            appIcon.connect('sync-tooltip', Lang.bind(this, function() {
+                this._syncLabel(item, appIcon);
+            }));
+        }
+    },
+
+    _createAppItem: function(app) {
+        let appIcon = new AppIcons.MyAppIcon(this._dtdSettings, app, this._monitorIndex,
+                                             { setSizeManually: true,
+                                               showLabel: false });
+        if (appIcon._draggable) {
+            appIcon._draggable.connect('drag-begin', Lang.bind(this, function() {
+                appIcon.actor.opacity = 50;
+            }));
+            appIcon._draggable.connect('drag-end', Lang.bind(this, function() {
+                appIcon.actor.opacity = 255;
+            }));
+        }
+
+        appIcon.connect('menu-state-changed', Lang.bind(this, function(appIcon, opened) {
+            this._itemMenuStateChanged(item, opened);
+        }));
+
+        let item = new Dash.DashItemContainer();
+
+        extendDashItemContainer(item, this._dtdSettings);
+        item.setChild(appIcon.actor);
+
+        appIcon.actor.connect('notify::hover', Lang.bind(this, function() {
+            if (appIcon.actor.hover) {
+                this._ensureAppIconVisibilityTimeoutId = Mainloop.timeout_add(100, Lang.bind(this, function() {
+                    ensureActorVisibleInScrollView(this._scrollView, appIcon.actor);
+                    this._ensureAppIconVisibilityTimeoutId = 0;
+                    return GLib.SOURCE_REMOVE;
+                }));
+            }
+            else {
+                if (this._ensureAppIconVisibilityTimeoutId > 0) {
+                    Mainloop.source_remove(this._ensureAppIconVisibilityTimeoutId);
+                    this._ensureAppIconVisibilityTimeoutId = 0;
+                }
+            }
+        }));
+
+        appIcon.actor.connect('clicked', Lang.bind(this, function(actor) {
+            ensureActorVisibleInScrollView(this._scrollView, actor);
+        }));
+
+        appIcon.actor.connect('key-focus-in', Lang.bind(this, function(actor) {
+            let [x_shift, y_shift] = ensureActorVisibleInScrollView(this._scrollView, actor);
+
+            // This signal is triggered also by mouse click. The popup menu is opened at the original
+            // coordinates. Thus correct for the shift which is going to be applied to the scrollview.
+            if (appIcon._menu) {
+                appIcon._menu._boxPointer.xOffset = -x_shift;
+                appIcon._menu._boxPointer.yOffset = -y_shift;
+            }
+        }));
+
+        // Override default AppIcon label_actor, now the
+        // accessible_name is set at DashItemContainer.setLabelText
+        appIcon.actor.label_actor = null;
+        item.setLabelText(app.get_name());
+
+        appIcon.icon.setIconSize(this.iconSize);
+        this._hookUpLabel(item, appIcon);
+
+        return item;
+    },
+
+    /**
+     * Return an array with the "proper" appIcons currently in the dash
+     */
+    _getAppIcons: function() {
+        // Only consider children which are "proper"
+        // icons (i.e. ignoring drag placeholders) and which are not
+        // animating out (which means they will be destroyed at the end of
+        // the animation)
+        let iconChildren = this._box.get_children().filter(function(actor) {
+            return actor.child &&
+                   actor.child._delegate &&
+                   actor.child._delegate.icon &&
+                   !actor.animatingOut;
+        });
+
+        let appIcons = iconChildren.map(function(actor) {
+            return actor.child._delegate;
+        });
+
+      return appIcons;
+    },
+
+    _updateAppsIconGeometry: function() {
+        let appIcons = this._getAppIcons();
+        appIcons.forEach(function(icon) {
+            icon.updateIconGeometry();
+        });
+    },
+
+    _itemMenuStateChanged: function(item, opened) {
+        // When the menu closes, it calls sync_hover, which means
+        // that the notify::hover handler does everything we need to.
+        if (opened) {
+            if (this._showLabelTimeoutId > 0) {
+                Mainloop.source_remove(this._showLabelTimeoutId);
+                this._showLabelTimeoutId = 0;
+            }
+
+            item.hideLabel();
+        }
+        else {
+            // I want to listen from outside when a menu is closed. I used to
+            // add a custom signal to the appIcon, since gnome 3.8 the signal
+            // calling this callback was added upstream.
+            this.emit('menu-closed');
+        }
+    },
+
+    _syncLabel: function(item, appIcon) {
+        let shouldShow = appIcon ? appIcon.shouldShowTooltip() : item.child.get_hover();
+
+        if (shouldShow) {
+            if (this._showLabelTimeoutId == 0) {
+                let timeout = this._labelShowing ? 0 : DASH_ITEM_HOVER_TIMEOUT;
+                this._showLabelTimeoutId = Mainloop.timeout_add(timeout, Lang.bind(this, function() {
+                    this._labelShowing = true;
+                    item.showLabel();
+                    this._showLabelTimeoutId = 0;
+                    return GLib.SOURCE_REMOVE;
+                }));
+                GLib.Source.set_name_by_id(this._showLabelTimeoutId, '[gnome-shell] item.showLabel');
+                if (this._resetHoverTimeoutId > 0) {
+                    Mainloop.source_remove(this._resetHoverTimeoutId);
+                    this._resetHoverTimeoutId = 0;
+                }
+            }
+        }
+        else {
+            if (this._showLabelTimeoutId > 0)
+                Mainloop.source_remove(this._showLabelTimeoutId);
+            this._showLabelTimeoutId = 0;
+            item.hideLabel();
+            if (this._labelShowing) {
+                this._resetHoverTimeoutId = Mainloop.timeout_add(DASH_ITEM_HOVER_TIMEOUT, Lang.bind(this, function() {
+                    this._labelShowing = false;
+                    this._resetHoverTimeoutId = 0;
+                    return GLib.SOURCE_REMOVE;
+                }));
+                GLib.Source.set_name_by_id(this._resetHoverTimeoutId, '[gnome-shell] this._labelShowing');
+            }
+        }
+    },
+
+    _adjustIconSize: function() {
+        // For the icon size, we only consider children which are "proper"
+        // icons (i.e. ignoring drag placeholders) and which are not
+        // animating out (which means they will be destroyed at the end of
+        // the animation)
+        let iconChildren = this._box.get_children().filter(function(actor) {
+            return actor.child &&
+                   actor.child._delegate &&
+                   actor.child._delegate.icon &&
+                   !actor.animatingOut;
+        });
+
+        iconChildren.push(this._showAppsIcon);
+
+        if (this._maxHeight == -1)
+            return;
+
+        // Check if the container is present in the stage. This avoids critical
+        // errors when unlocking the screen
+        if (!this._container.get_stage())
+            return;
+
+        let themeNode = this._container.get_theme_node();
+        let maxAllocation = new Clutter.ActorBox({
+            x1: 0,
+            y1: 0,
+            x2: this._isHorizontal ? this._maxHeight : 42 /* whatever */,
+            y2: this._isHorizontal ? 42 : this._maxHeight
+        });
+        let maxContent = themeNode.get_content_box(maxAllocation);
+        let availHeight;
+        if (this._isHorizontal)
+            availHeight = maxContent.x2 - maxContent.x1;
+        else
+            availHeight = maxContent.y2 - maxContent.y1;
+        let spacing = themeNode.get_length('spacing');
+
+        let firstButton = iconChildren[0].child;
+        let firstIcon = firstButton._delegate.icon;
+
+        let minHeight, natHeight, minWidth, natWidth;
+
+        // Enforce the current icon size during the size request
+        firstIcon.setIconSize(this.iconSize);
+        [minHeight, natHeight] = firstButton.get_preferred_height(-1);
+        [minWidth, natWidth] = firstButton.get_preferred_width(-1);
+
+        let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
+        let iconSizes = this._availableIconSizes.map(function(s) {
+            return s * scaleFactor;
+        });
+
+        // Subtract icon padding and box spacing from the available height
+        if (this._isHorizontal)
+            availHeight -= iconChildren.length * (natWidth - this.iconSize * scaleFactor) +
+                           (iconChildren.length - 1) * spacing;
+        else
+            availHeight -= iconChildren.length * (natHeight - this.iconSize * scaleFactor) +
+                           (iconChildren.length - 1) * spacing;
+
+        let availSize = availHeight / iconChildren.length;
+
+
+        let newIconSize = this._availableIconSizes[0];
+        for (let i = 0; i < iconSizes.length; i++) {
+            if (iconSizes[i] < availSize)
+                newIconSize = this._availableIconSizes[i];
+        }
+
+        if (newIconSize == this.iconSize)
+            return;
+
+        let oldIconSize = this.iconSize;
+        this.iconSize = newIconSize;
+        this.emit('icon-size-changed');
+
+        let scale = oldIconSize / newIconSize;
+        for (let i = 0; i < iconChildren.length; i++) {
+            let icon = iconChildren[i].child._delegate.icon;
+
+            // Set the new size immediately, to keep the icons' sizes
+            // in sync with this.iconSize
+            icon.setIconSize(this.iconSize);
+
+            // Don't animate the icon size change when the overview
+            // is transitioning, or when initially filling
+            // the dash
+            if (Main.overview.animationInProgress ||
+                !this._shownInitially)
+                continue;
+
+            let [targetWidth, targetHeight] = icon.icon.get_size();
+
+            // Scale the icon's texture to the previous size and
+            // tween to the new size
+            icon.icon.set_size(icon.icon.width * scale,
+                               icon.icon.height * scale);
+
+            Tweener.addTween(icon.icon,
+                             { width: targetWidth,
+                               height: targetHeight,
+                               time: DASH_ANIMATION_TIME,
+                               transition: 'easeOutQuad',
+                             });
+        }
+    },
+
+    _redisplay: function() {
+        let favorites = AppFavorites.getAppFavorites().getFavoriteMap();
+
+        let running = this._appSystem.get_running();
+        if (this._dtdSettings.get_boolean('isolate-workspaces') ||
+            this._dtdSettings.get_boolean('isolate-monitors')) {
+            // When using isolation, we filter out apps that have no windows in
+            // the current workspace
+            let settings = this._dtdSettings;
+            let monitorIndex = this._monitorIndex;
+            running = running.filter(function(_app) {
+                return AppIcons.getInterestingWindows(_app, settings, monitorIndex).length != 0;
+            });
+        }
+
+        let children = this._box.get_children().filter(function(actor) {
+            return actor.child &&
+                   actor.child._delegate &&
+                   actor.child._delegate.app;
+        });
+        // Apps currently in the dash
+        let oldApps = children.map(function(actor) {
+            return actor.child._delegate.app;
+        });
+        // Apps supposed to be in the dash
+        let newApps = [];
+
+        if (this._dtdSettings.get_boolean('show-favorites')) {
+            for (let id in favorites)
+                newApps.push(favorites[id]);
+        }
+
+        // We reorder the running apps so that they don't change position on the
+        // dash with every redisplay() call
+        if (this._dtdSettings.get_boolean('show-running')) {
+            // First: add the apps from the oldApps list that are still running
+            for (let i = 0; i < oldApps.length; i++) {
+                let index = running.indexOf(oldApps[i]);
+                if (index > -1) {
+                    let app = running.splice(index, 1)[0];
+                    if (this._dtdSettings.get_boolean('show-favorites') && (app.get_id() in favorites))
+                        continue;
+                    newApps.push(app);
+                }
+            }
+            // Second: add the new apps
+            for (let i = 0; i < running.length; i++) {
+                let app = running[i];
+                if (this._dtdSettings.get_boolean('show-favorites') && (app.get_id() in favorites))
+                    continue;
+                newApps.push(app);
+            }
+        }
+
+        // Figure out the actual changes to the list of items; we iterate
+        // over both the list of items currently in the dash and the list
+        // of items expected there, and collect additions and removals.
+        // Moves are both an addition and a removal, where the order of
+        // the operations depends on whether we encounter the position
+        // where the item has been added first or the one from where it
+        // was removed.
+        // There is an assumption that only one item is moved at a given
+        // time; when moving several items at once, everything will still
+        // end up at the right position, but there might be additional
+        // additions/removals (e.g. it might remove all the launchers
+        // and add them back in the new order even if a smaller set of
+        // additions and removals is possible).
+        // If above assumptions turns out to be a problem, we might need
+        // to use a more sophisticated algorithm, e.g. Longest Common
+        // Subsequence as used by diff.
+
+        let addedItems = [];
+        let removedActors = [];
+
+        let newIndex = 0;
+        let oldIndex = 0;
+        while ((newIndex < newApps.length) || (oldIndex < oldApps.length)) {
+            // No change at oldIndex/newIndex
+            if (oldApps[oldIndex] && oldApps[oldIndex] == newApps[newIndex]) {
+                oldIndex++;
+                newIndex++;
+                continue;
+            }
+
+            // App removed at oldIndex
+            if (oldApps[oldIndex] && (newApps.indexOf(oldApps[oldIndex]) == -1)) {
+                removedActors.push(children[oldIndex]);
+                oldIndex++;
+                continue;
+            }
+
+            // App added at newIndex
+            if (newApps[newIndex] && (oldApps.indexOf(newApps[newIndex]) == -1)) {
+                let newItem = this._createAppItem(newApps[newIndex]);
+                addedItems.push({ app: newApps[newIndex],
+                                  item: newItem,
+                                  pos: newIndex });
+                newIndex++;
+                continue;
+            }
+
+            // App moved
+            let insertHere = newApps[newIndex + 1] && (newApps[newIndex + 1] == oldApps[oldIndex]);
+            let alreadyRemoved = removedActors.reduce(function(result, actor) {
+                let removedApp = actor.child._delegate.app;
+                return result || removedApp == newApps[newIndex];
+            }, false);
+
+            if (insertHere || alreadyRemoved) {
+                let newItem = this._createAppItem(newApps[newIndex]);
+                addedItems.push({
+                    app: newApps[newIndex],
+                    item: newItem,
+                    pos: newIndex + removedActors.length
+                });
+                newIndex++;
+            }
+            else {
+                removedActors.push(children[oldIndex]);
+                oldIndex++;
+            }
+        }
+
+        for (let i = 0; i < addedItems.length; i++)
+            this._box.insert_child_at_index(addedItems[i].item,
+                                            addedItems[i].pos);
+
+        for (let i = 0; i < removedActors.length; i++) {
+            let item = removedActors[i];
+
+            // Don't animate item removal when the overview is transitioning
+            if (!Main.overview.animationInProgress)
+                item.animateOutAndDestroy();
+            else
+                item.destroy();
+        }
+
+        this._adjustIconSize();
+
+        for (let i = 0; i < addedItems.length; i++)
+            // Emit a custom signal notifying that a new item has been added
+            this.emit('item-added', addedItems[i]);
+
+        // Skip animations on first run when adding the initial set
+        // of items, to avoid all items zooming in at once
+
+        let animate = this._shownInitially &&
+            !Main.overview.animationInProgress;
+
+        if (!this._shownInitially)
+            this._shownInitially = true;
+
+        for (let i = 0; i < addedItems.length; i++)
+            addedItems[i].item.show(animate);
+
+        // Workaround for https://bugzilla.gnome.org/show_bug.cgi?id=692744
+        // Without it, StBoxLayout may use a stale size cache
+        this._box.queue_relayout();
+
+        // This is required for icon reordering when the scrollview is used.
+        this._updateAppsIconGeometry();
+
+        // This will update the size, and the corresponding number for each icon
+        this._updateNumberOverlay();
+    },
+
+    _updateNumberOverlay: function() {
+        let appIcons = this._getAppIcons();
+        let counter = 1;
+        appIcons.forEach(function(icon) {
+            if (counter < 10){
+                icon.setNumberOverlay(counter);
+                counter++;
+            }
+            else if (counter == 10) {
+                icon.setNumberOverlay(0);
+                counter++;
+            }
+            else {
+                // No overlay after 10
+                icon.setNumberOverlay(-1);
+            }
+            icon.updateNumberOverlay();
+        });
+
+    },
+
+    toggleNumberOverlay: function(activate) {
+        let appIcons = this._getAppIcons();
+        appIcons.forEach(function(icon) {
+            icon.toggleNumberOverlay(activate);
+        });
+    },
+
+    setIconSize: function(max_size, doNotAnimate) {
+        let max_allowed = baseIconSizes[baseIconSizes.length-1];
+        max_size = Math.min(max_size, max_allowed);
+
+        if (this._dtdSettings.get_boolean('icon-size-fixed'))
+            this._availableIconSizes = [max_size];
+        else {
+            this._availableIconSizes = baseIconSizes.filter(function(val) {
+                return (val<max_size);
+            });
+            this._availableIconSizes.push(max_size);
+        }
+
+        if (doNotAnimate)
+            this._shownInitially = false;
+
+        this._queueRedisplay();
+    },
+
+    /**
+     * Reset the displayed apps icon to mantain the correct order when changing
+     * show favorites/show running settings
+     */
+    resetAppIcons: function() {
+        let children = this._box.get_children().filter(function(actor) {
+            return actor.child &&
+                actor.child._delegate &&
+                actor.child._delegate.icon;
+        });
+        for (let i = 0; i < children.length; i++) {
+            let item = children[i];
+            item.destroy();
+        }
+
+        // to avoid ugly animations, just suppress them like when dash is first loaded.
+        this._shownInitially = false;
+        this._redisplay();
+
+    },
+
+    _clearDragPlaceholder: function() {
+        if (this._dragPlaceholder) {
+            this._animatingPlaceholdersCount++;
+            this._dragPlaceholder.animateOutAndDestroy();
+            this._dragPlaceholder.connect('destroy', Lang.bind(this, function() {
+                this._animatingPlaceholdersCount--;
+            }));
+            this._dragPlaceholder = null;
+        }
+        this._dragPlaceholderPos = -1;
+    },
+
+    _clearEmptyDropTarget: function() {
+        if (this._emptyDropTarget) {
+            this._emptyDropTarget.animateOutAndDestroy();
+            this._emptyDropTarget = null;
+        }
+    },
+
+    handleDragOver: function(source, actor, x, y, time) {
+        let app = Dash.getAppFromSource(source);
+
+        // Don't allow favoriting of transient apps
+        if (app == null || app.is_window_backed())
+            return DND.DragMotionResult.NO_DROP;
+
+        if (!this._settings.is_writable('favorite-apps') || !this._dtdSettings.get_boolean('show-favorites'))
+            return DND.DragMotionResult.NO_DROP;
+
+        let favorites = AppFavorites.getAppFavorites().getFavorites();
+        let numFavorites = favorites.length;
+
+        let favPos = favorites.indexOf(app);
+
+        let children = this._box.get_children();
+        let numChildren = children.length;
+        let boxHeight = 0;
+        for (let i = 0; i < numChildren; i++)
+            boxHeight += this._isHorizontal?children[i].width:children[i].height;
+
+        // Keep the placeholder out of the index calculation; assuming that
+        // the remove target has the same size as "normal" items, we don't
+        // need to do the same adjustment there.
+        if (this._dragPlaceholder) {
+            boxHeight -= this._isHorizontal?this._dragPlaceholder.width:this._dragPlaceholder.height;
+            numChildren--;
+        }
+
+        let pos;
+        if (!this._emptyDropTarget) {
+            pos = Math.floor((this._isHorizontal?x:y) * numChildren / boxHeight);
+            if (pos >  numChildren)
+                pos = numChildren;
+        }
+        else
+            pos = 0; // always insert at the top when dash is empty
+
+        // Take into account childredn position in rtl
+        if (this._isHorizontal && (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL))
+            pos = numChildren - pos;
+
+        if ((pos != this._dragPlaceholderPos) && (pos <= numFavorites) && (this._animatingPlaceholdersCount == 0)) {
+            this._dragPlaceholderPos = pos;
+
+            // Don't allow positioning before or after self
+            if ((favPos != -1) && (pos == favPos || pos == favPos + 1)) {
+                this._clearDragPlaceholder();
+                return DND.DragMotionResult.CONTINUE;
+            }
+
+            // If the placeholder already exists, we just move
+            // it, but if we are adding it, expand its size in
+            // an animation
+            let fadeIn;
+            if (this._dragPlaceholder) {
+                this._dragPlaceholder.destroy();
+                fadeIn = false;
+            }
+            else
+                fadeIn = true;
+
+            this._dragPlaceholder = new Dash.DragPlaceholderItem();
+            this._dragPlaceholder.child.set_width (this.iconSize);
+            this._dragPlaceholder.child.set_height (this.iconSize / 2);
+            this._box.insert_child_at_index(this._dragPlaceholder,
+                                            this._dragPlaceholderPos);
+            this._dragPlaceholder.show(fadeIn);
+            // Ensure the next and previous icon are visible when moving the placeholder
+            // (I assume there's room for both of them)
+            if (this._dragPlaceholderPos > 1)
+                ensureActorVisibleInScrollView(this._scrollView, this._box.get_children()[this._dragPlaceholderPos-1]);
+            if (this._dragPlaceholderPos < this._box.get_children().length-1)
+                ensureActorVisibleInScrollView(this._scrollView, this._box.get_children()[this._dragPlaceholderPos+1]);
+        }
+
+        // Remove the drag placeholder if we are not in the
+        // "favorites zone"
+        if (pos > numFavorites)
+            this._clearDragPlaceholder();
+
+        if (!this._dragPlaceholder)
+            return DND.DragMotionResult.NO_DROP;
+
+        let srcIsFavorite = (favPos != -1);
+
+        if (srcIsFavorite)
+            return DND.DragMotionResult.MOVE_DROP;
+
+        return DND.DragMotionResult.COPY_DROP;
+    },
+
+    /**
+     * Draggable target interface
+     */
+    acceptDrop: function(source, actor, x, y, time) {
+        let app = Dash.getAppFromSource(source);
+
+        // Don't allow favoriting of transient apps
+        if (app == null || app.is_window_backed())
+            return false;
+
+        if (!this._settings.is_writable('favorite-apps') || !this._dtdSettings.get_boolean('show-favorites'))
+            return false;
+
+        let id = app.get_id();
+
+        let favorites = AppFavorites.getAppFavorites().getFavoriteMap();
+
+        let srcIsFavorite = (id in favorites);
+
+        let favPos = 0;
+        let children = this._box.get_children();
+        for (let i = 0; i < this._dragPlaceholderPos; i++) {
+            if (this._dragPlaceholder && (children[i] == this._dragPlaceholder))
+                continue;
+
+            let childId = children[i].child._delegate.app.get_id();
+            if (childId == id)
+                continue;
+            if (childId in favorites)
+                favPos++;
+        }
+
+        // No drag placeholder means we don't wan't to favorite the app
+        // and we are dragging it to its original position
+        if (!this._dragPlaceholder)
+            return true;
+
+        Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, function() {
+            let appFavorites = AppFavorites.getAppFavorites();
+            if (srcIsFavorite)
+                appFavorites.moveFavoriteToPos(id, favPos);
+            else
+                appFavorites.addFavoriteAtPos(id, favPos);
+            return false;
+        }));
+
+        return true;
+    },
+
+    showShowAppsButton: function() {
+        this.showAppsButton.visible = true
+        this.showAppsButton.set_width(-1)
+        this.showAppsButton.set_height(-1)
+    },
+
+    hideShowAppsButton: function() {
+        this.showAppsButton.hide()
+        this.showAppsButton.set_width(0)
+        this.showAppsButton.set_height(0)
+    }
+});
+
+Signals.addSignalMethods(MyDash.prototype);
+
+/**
+ * This is a copy of the same function in utils.js, but also adjust horizontal scrolling
+ * and perform few further cheks on the current value to avoid changing the values when
+ * it would be clamp to the current one in any case.
+ * Return the amount of shift applied
+ */
+function ensureActorVisibleInScrollView(scrollView, actor) {
+    let adjust_v = true;
+    let adjust_h = true;
+
+    let vadjustment = scrollView.vscroll.adjustment;
+    let hadjustment = scrollView.hscroll.adjustment;
+    let [vvalue, vlower, vupper, vstepIncrement, vpageIncrement, vpageSize] = vadjustment.get_values();
+    let [hvalue, hlower, hupper, hstepIncrement, hpageIncrement, hpageSize] = hadjustment.get_values();
+
+    let [hvalue0, vvalue0] = [hvalue, vvalue];
+
+    let voffset = 0;
+    let hoffset = 0;
+    let fade = scrollView.get_effect('fade');
+    if (fade) {
+        voffset = fade.vfade_offset;
+        hoffset = fade.hfade_offset;
+    }
+
+    let box = actor.get_allocation_box();
+    let y1 = box.y1, y2 = box.y2, x1 = box.x1, x2 = box.x2;
+
+    let parent = actor.get_parent();
+    while (parent != scrollView) {
+        if (!parent)
+            throw new Error('Actor not in scroll view');
+
+        let box = parent.get_allocation_box();
+        y1 += box.y1;
+        y2 += box.y1;
+        x1 += box.x1;
+        x2 += box.x1;
+        parent = parent.get_parent();
+    }
+
+    if (y1 < vvalue + voffset)
+        vvalue = Math.max(0, y1 - voffset);
+    else if (vvalue < vupper - vpageSize && y2 > vvalue + vpageSize - voffset)
+        vvalue = Math.min(vupper -vpageSize, y2 + voffset - vpageSize);
+
+    if (x1 < hvalue + hoffset)
+        hvalue = Math.max(0, x1 - hoffset);
+    else if (hvalue < hupper - hpageSize && x2 > hvalue + hpageSize - hoffset)
+        hvalue = Math.min(hupper - hpageSize, x2 + hoffset - hpageSize);
+
+    if (vvalue !== vvalue0) {
+        Tweener.addTween(vadjustment, { value: vvalue,
+            time: Util.SCROLL_TIME,
+            transition: 'easeOutQuad'
+        });
+    }
+
+    if (hvalue !== hvalue0) {
+        Tweener.addTween(hadjustment,
+                         { value: hvalue,
+                           time: Util.SCROLL_TIME,
+                           transition: 'easeOutQuad' });
+    }
+
+    return [hvalue- hvalue0, vvalue - vvalue0];
+}
diff --git a/package/debian/changelog b/package/debian/changelog
new file mode 100644
index 0000000000000000000000000000000000000000..8ebc09f7a88fb66f64cdbc8fc7854ed9af17875a
--- /dev/null
+++ b/package/debian/changelog
@@ -0,0 +1,72 @@
+gnome-shell-extension-dashtodock (60-2) testing; urgency=medium
+
+  * Changed distribution
+
+ -- Davisson Paulino <dhpaulino@gmail.com>  Mon, 25 Sep 2017 10:33:48 -0300
+
+gnome-shell-extension-dashtodock (60-1) unstable; urgency=medium
+
+  * New upstream release
+
+ -- Jonathan Carter <jcarter@linux.com>  Mon, 10 Jul 2017 10:22:45 +0200
+
+gnome-shell-extension-dashtodock (59-3) unstable; urgency=medium
+
+  * Don't attempt to build gschemas in rules (Closes: #867448)
+  * Add Testsuite field to debian/control
+
+ -- Jonathan Carter <jcarter@linux.com>  Thu, 06 Jul 2017 19:46:40 +0200
+
+gnome-shell-extension-dashtodock (59-2) unstable; urgency=medium
+
+  * Upload to unstable (no changes)
+
+ -- Jonathan Carter <jcarter@linux.com>  Wed, 05 Jul 2017 15:41:30 +0200
+
+gnome-shell-extension-dashtodock (59-1) experimental; urgency=medium
+
+  * New upstream release
+  * Improvements to install paths (thanks Fran Glais and Jeremy Bicha)
+  * Update standards version to 4.0.0
+
+ -- Jonathan Carter <jcarter@linux.com>  Thu, 08 Jun 2017 19:38:10 +0200
+
+gnome-shell-extension-dashtodock (57-1) unstable; urgency=medium
+
+  * New upstream release
+
+ -- Jonathan Carter <jcarter@linux.com>  Mon, 27 Mar 2017 12:42:33 +0200
+
+gnome-shell-extension-dashtodock (56-1) unstable; urgency=medium
+
+  * New upstream release
+  * Remove unneeded dependency on ${shlibs:Depends}
+  * Remove fix-install-path patch (accepted upstream)
+
+ -- Jonathan Carter <jcarter@linux.com>  Tue, 07 Feb 2017 13:50:55 +0200
+
+gnome-shell-extension-dashtodock (55-4) unstable; urgency=medium
+
+  * Depend on gir1.2-clutter-1.0 (Closes: #848662)
+
+ -- Jonathan Carter <jcarter@linux.com>  Mon, 23 Jan 2017 14:31:20 +0200
+
+gnome-shell-extension-dashtodock (55-3) unstable; urgency=medium
+
+  * Re-apply path fix patch (Closes: #844963)
+  * Upgrade debian/watch to version 4
+
+ -- Jonathan Carter <jcarter@linux.com>  Wed, 16 Nov 2016 09:07:36 +0200
+
+gnome-shell-extension-dashtodock (55-2) unstable; urgency=medium
+
+  * Fix install file to install compiled schema properly
+  * Bump compat level to 10 (no changes)
+
+ -- Jonathan Carter <jcarter@linux.com>  Mon, 14 Nov 2016 13:00:41 +0200
+
+gnome-shell-extension-dashtodock (55-1) unstable; urgency=medium
+
+  * Initial release (Closes: 829185)
+
+ -- Jonathan Carter <jcarter@linux.com>  Mon, 03 Oct 2016 09:22:40 +0200
diff --git a/package/debian/compat b/package/debian/compat
new file mode 100644
index 0000000000000000000000000000000000000000..ec635144f60048986bc560c5576355344005e6e7
--- /dev/null
+++ b/package/debian/compat
@@ -0,0 +1 @@
+9
diff --git a/package/debian/control b/package/debian/control
new file mode 100644
index 0000000000000000000000000000000000000000..1a3351eb5c4244bae061bbc5f61f9d26363f7a05
--- /dev/null
+++ b/package/debian/control
@@ -0,0 +1,25 @@
+Source: gnome-shell-extension-dashtodock
+Section: gnome
+Priority: optional
+Maintainer: Jonathan Carter <jcarter@linux.com>
+Build-Depends: debhelper (>=9), libglib2.0-bin (>=2.48)
+Standards-Version: 3.9.8
+Homepage: https://micheleg.github.io/dash-to-dock/
+Vcs-Git: https://gitlab.com/highvoltage/gnome-shell-extension-dashtodock-packaging.git
+Vcs-Browser: https://gitlab.com/highvoltage/gnome-shell-extension-dashtodock-packaging/tree/master
+Testsuite: autopkgtest
+
+Package: gnome-shell-extension-dashtodock
+Architecture: all
+Depends: ${misc:Depends}, gnome-shell (>= 3.16), gir1.2-clutter-1.0
+Description: dash-to-dock extension for GNOME shell
+ Dash to dock extension is an enhanced dash for GNOME Shell. It moves the
+ default dash out of the overview and transforms it in a dock for an easier
+ launching of applications and a faster switching between windows and
+ workspaces without leaving the desktop view improving the workflow in your
+ system.
+ .
+ It supports autohide and intellihide modes as well as a fixed mode.
+ Optional features are available in the extension settings. The extension
+ is themes friendly.
+
diff --git a/package/debian/copyright b/package/debian/copyright
new file mode 100644
index 0000000000000000000000000000000000000000..42395c1e304382ae5612f5e62cbcc3039abb6227
--- /dev/null
+++ b/package/debian/copyright
@@ -0,0 +1,91 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: dash-to-dock
+Source: https://github.com/micheleg/dash-to-dock
+
+Files: *
+Copyright: 2016-2017 Michele <micxgx@gmail.com>
+License: GPL-2+
+
+Files: po/zh_CN.po
+Copyright: 2013 tuhaihe <1132321739qq@gmail.com>
+           2015-2016 绿色圣光 <lishaohui.qd@163.com>
+License: GPL-2+
+
+Files: po/tr.po
+Copyright: 2015 Mustafa Akgün <mustafa.akgun@gmail.com>
+           2016 Çağatay Yiğit Şahin <cyigitsahin@outlook.com>
+License: GPL-2+
+
+Files: po/sv.po
+Copyright: 2016 Anders Jonsson <anders.jonsson@norsjovallen.se>
+License: GPL-2+
+
+Files: po/sk.po
+Copyright: 2016 Dušan Kazik <prescott66@gmail.com>
+License: GPL-2+
+
+Files: po/ru.po
+Copyright: 2015-2016 Ivan Komaritsyn <vantu5z@mail.ru>
+License: GPL-2+
+
+Files: po/pt_BR.po
+Copyright: 2012 Carlos Alberto Junior Spohr Poletto <carlos.spohr@gmail.com>
+           2016 Fábio Nogueira <fnogueira@gnome.org>
+License: GPL-2+
+
+Files: po/pt.po
+Copyright: 2012 Carlos Alberto Junior Spohr Poletto <carlos.spohr@gmail.com>
+License: GPL-2+
+
+Files: po/pl.po
+Copyright: 2012-2016 Piotr Sokół <psokol.l10n@gmail.com>
+License: GPL-2+
+
+Files: po/nl.po
+Copyright: 2014 Michele <micxgx@gmail.com>
+           2014 Morris Jobke <hey@morrisjobke.de>
+           2012 Jonatan Zeidler <jonatan_zeidler@hotmail.de>
+           2012 jonius <jonatan_zeidler@gmx.de>
+           2015 Heimen Stoffels <vistausss@outlook.com>
+License: GPL-2+
+
+Files: po/ja.po
+Copyright: 2013 Jiro Matsuzawa <jmatsuzawa@gnome.org>
+           2014-2016 Debonne Hooties <debonne.hooties@gmail.com>
+License: GPL-2+
+
+Files: po/es.po
+Copyright: 2015 Hugo Olabera <hugolabe@gmail.com>
+License: GPL-2+
+
+Files: po/de.po
+Copyright: 2014 Michele <micxgx@gmail.com>
+           2014 Morris Jobke <hey@morrisjobke.de>
+           2012 Jonatan Zeidler <jonatan_zeidler@hotmail.de>
+           2012 jonius <jonatan_zeidler@gmx.de>
+License: GPL-2+
+
+Files: po/cs.po
+Copyright: 2015 Jiří Doubravský <jiri.doubravsky@gmail.com>
+License: GPL-2+
+
+Files: debian/*
+Copyright: 2016-2017 Jonathan Carter <jcater@linux.com>
+License: GPL-2+
+
+License: GPL-2+
+ This package 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 2 of the License, or
+ (at your option) any later version.
+ .
+ This package 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 <https://www.gnu.org/licenses/>
+ .
+ On Debian systems, the complete text of the GNU General
+ Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
diff --git a/package/debian/docs b/package/debian/docs
new file mode 100644
index 0000000000000000000000000000000000000000..b43bf86b50fd8d3529a0dc062c30006ed38f309e
--- /dev/null
+++ b/package/debian/docs
@@ -0,0 +1 @@
+README.md
diff --git a/package/debian/install b/package/debian/install
new file mode 100644
index 0000000000000000000000000000000000000000..e1ef0248f8503934d9d8365325944dc28bdf6869
--- /dev/null
+++ b/package/debian/install
@@ -0,0 +1 @@
+schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml usr/share/glib-2.0/schemas
diff --git a/package/debian/patches/makefile-clean-translations b/package/debian/patches/makefile-clean-translations
new file mode 100644
index 0000000000000000000000000000000000000000..9515ed1bd6147d39729706bf0509ce32bc1db9b8
--- /dev/null
+++ b/package/debian/patches/makefile-clean-translations
@@ -0,0 +1,20 @@
+Description: Add translations to cleanup in makefile
+ Upstream makefile doesn not clean up translations.
+ Modified to fix this.
+ .
+ gnome-shell-extension-dashtodock (53-1) unstable; urgency=medium
+ .
+   * Initial release (Closes: 829185)
+Author: Jonathan Carter <jcarter@linux.com>
+Bug-Debian: https://bugs.debian.org/829185
+
+--- gnome-shell-extension-dashtodock-53.orig/Makefile
++++ gnome-shell-extension-dashtodock-53/Makefile
+@@ -24,6 +24,7 @@ all: extension
+ 
+ clean:
+ 	rm -f ./schemas/gschemas.compiled
++	rm -f ./po/*.mo
+ 
+ extension: ./schemas/gschemas.compiled $(MSGSRC:.po=.mo)
+ 
diff --git a/package/debian/patches/series b/package/debian/patches/series
new file mode 100644
index 0000000000000000000000000000000000000000..6b7b386b85b7779f9d0bf528d9e2d520aeb272e0
--- /dev/null
+++ b/package/debian/patches/series
@@ -0,0 +1 @@
+makefile-clean-translations
diff --git a/package/debian/rules b/package/debian/rules
new file mode 100755
index 0000000000000000000000000000000000000000..0bda0b76fb21868c39d733f0d2ba126b37763df6
--- /dev/null
+++ b/package/debian/rules
@@ -0,0 +1,13 @@
+#!/usr/bin/make -f
+
+include /usr/share/dpkg/pkg-info.mk
+BASEDIR=debian/gnome-shell-extension-dashtodock/usr/share/gnome-shell/extensions/dash-to-dock@micxgx.gmail.com
+
+%:
+	dh $@
+
+override_dh_install:
+	dh_install
+	sed -i 's/"version": ""/"version": $(DEB_VERSION_UPSTREAM)/' $(BASEDIR)/metadata.json;
+	rm -f $(BASEDIR)/COPYING
+	rm -rf $(BASEDIR)/schemas
diff --git a/package/debian/source/format b/package/debian/source/format
new file mode 100644
index 0000000000000000000000000000000000000000..163aaf8d82b6c54f23c45f32895dbdfdcc27b047
--- /dev/null
+++ b/package/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/package/debian/watch b/package/debian/watch
new file mode 100644
index 0000000000000000000000000000000000000000..58b82bec7c45b9c4d380e3f02b7a7cebf081b702
--- /dev/null
+++ b/package/debian/watch
@@ -0,0 +1,3 @@
+version=4
+https://github.com/micheleg/dash-to-dock/tags .*/extensions.gnome.org-v?(\d\S*)\.tar\.gz
+
diff --git a/package/docking.js b/package/docking.js
new file mode 100644
index 0000000000000000000000000000000000000000..08707b402520a3fd47c343b6eeb6d3ecc725aa84
--- /dev/null
+++ b/package/docking.js
@@ -0,0 +1,1909 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
+const Clutter = imports.gi.Clutter;
+const GLib = imports.gi.GLib;
+const Gtk = imports.gi.Gtk;
+const Lang = imports.lang;
+const Meta = imports.gi.Meta;
+const Shell = imports.gi.Shell;
+const St = imports.gi.St;
+const Mainloop = imports.mainloop;
+const Params = imports.misc.params;
+
+const Main = imports.ui.main;
+const Dash = imports.ui.dash;
+const IconGrid = imports.ui.iconGrid;
+const Overview = imports.ui.overview;
+const OverviewControls = imports.ui.overviewControls;
+const PointerWatcher = imports.ui.pointerWatcher;
+const Tweener = imports.ui.tweener;
+const Signals = imports.signals;
+const ViewSelector = imports.ui.viewSelector;
+const WorkspaceSwitcherPopup= imports.ui.workspaceSwitcherPopup;
+const Layout = imports.ui.layout;
+const LayoutManager = imports.ui.main.layoutManager;
+
+const Me = imports.misc.extensionUtils.getCurrentExtension();
+const Convenience = Me.imports.convenience;
+const Utils = Me.imports.utils;
+const Intellihide = Me.imports.intellihide;
+const Theming = Me.imports.theming;
+const MyDash = Me.imports.dash;
+
+const DOCK_DWELL_CHECK_INTERVAL = 100;
+
+const State = {
+    HIDDEN:  0,
+    SHOWING: 1,
+    SHOWN:   2,
+    HIDING:  3
+};
+
+const scrollAction = {
+    DO_NOTHING: 0,
+    CYCLE_WINDOWS: 1,
+    SWITCH_WORKSPACE: 2
+};
+
+/**
+ * A simple St.Widget with one child whose allocation takes into account the
+ * slide out of its child via the _slidex parameter ([0:1]).
+ *
+ * Required since I want to track the input region of this container which is
+ * based on its allocation even if the child overlows the parent actor. By doing
+ * this the region of the dash that is slideout is not steling anymore the input
+ * regions making the extesion usable when the primary monitor is the right one.
+ *
+ * The slidex parameter can be used to directly animate the sliding. The parent
+ * must have a WEST (SOUTH) anchor_point to achieve the sliding to the RIGHT (BOTTOM)
+ * side.
+ *
+ * It can't be an extended object because of this: https://bugzilla.gnome.org/show_bug.cgi?id=688973.
+ * thus use the Shell.GenericContainer pattern.
+*/
+const DashSlideContainer = new Lang.Class({
+    Name: 'DashToDock.DashSlideContainer',
+
+    _init: function(params) {
+        // Default local params
+        let localDefaults = {
+            side: St.Side.LEFT,
+            initialSlideValue: 1
+        }
+
+        let localParams = Params.parse(params, localDefaults, true);
+
+        if (params) {
+            // Remove local params before passing the params to the parent
+            // constructor to avoid errors.
+            let prop;
+            for (prop in localDefaults) {
+                if ((prop in params))
+                    delete params[prop];
+            }
+        }
+
+        this.actor = new Shell.GenericContainer(params);
+        this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
+        this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
+        this.actor.connect('allocate', Lang.bind(this, this._allocate));
+
+        this.actor._delegate = this;
+
+        this._child = null;
+
+        // slide parameter: 1 = visible, 0 = hidden.
+        this._slidex = localParams.initialSlideValue;
+        this._side = localParams.side;
+        this._slideoutSize = 0; // minimum size when slided out
+    },
+
+    _allocate: function(actor, box, flags) {
+        if (this._child == null)
+            return;
+
+        let availWidth = box.x2 - box.x1;
+        let availHeight = box.y2 - box.y1;
+        let [minChildWidth, minChildHeight, natChildWidth, natChildHeight] =
+            this._child.get_preferred_size();
+
+        let childWidth = natChildWidth;
+        let childHeight = natChildHeight;
+
+        let childBox = new Clutter.ActorBox();
+
+        let slideoutSize = this._slideoutSize;
+
+        if (this._side == St.Side.LEFT) {
+            childBox.x1 = (this._slidex -1) * (childWidth - slideoutSize);
+            childBox.x2 = slideoutSize + this._slidex*(childWidth - slideoutSize);
+            childBox.y1 = 0;
+            childBox.y2 = childBox.y1 + childHeight;
+        }
+        else if ((this._side == St.Side.RIGHT) || (this._side == St.Side.BOTTOM)) {
+            childBox.x1 = 0;
+            childBox.x2 = childWidth;
+            childBox.y1 = 0;
+            childBox.y2 = childBox.y1 + childHeight;
+        }
+        else if (this._side == St.Side.TOP) {
+            childBox.x1 = 0;
+            childBox.x2 = childWidth;
+            childBox.y1 = (this._slidex -1) * (childHeight - slideoutSize);
+            childBox.y2 = slideoutSize + this._slidex * (childHeight - slideoutSize);
+        }
+
+        this._child.allocate(childBox, flags);
+        this._child.set_clip(-childBox.x1, -childBox.y1,
+                             -childBox.x1+availWidth, -childBox.y1 + availHeight);
+    },
+
+    /**
+     * Just the child width but taking into account the slided out part
+     */
+    _getPreferredWidth: function(actor, forHeight, alloc) {
+        let [minWidth, natWidth] = this._child.get_preferred_width(forHeight);
+        if ((this._side ==  St.Side.LEFT) || (this._side == St.Side.RIGHT)) {
+            minWidth = (minWidth - this._slideoutSize) * this._slidex + this._slideoutSize;
+            natWidth = (natWidth - this._slideoutSize) * this._slidex + this._slideoutSize;
+        }
+
+        alloc.min_size = minWidth;
+        alloc.natural_size = natWidth;
+    },
+
+    /**
+     * Just the child height but taking into account the slided out part
+     */
+    _getPreferredHeight: function(actor, forWidth,  alloc) {
+        let [minHeight, natHeight] = this._child.get_preferred_height(forWidth);
+        if ((this._side ==  St.Side.TOP) || (this._side ==  St.Side.BOTTOM)) {
+            minHeight = (minHeight - this._slideoutSize) * this._slidex + this._slideoutSize;
+            natHeight = (natHeight - this._slideoutSize) * this._slidex + this._slideoutSize;
+        }
+        alloc.min_size = minHeight;
+        alloc.natural_size = natHeight;
+    },
+
+    /**
+     * I was expecting it to be a virtual function... stil I don't understand
+     * how things work.
+     */
+    add_child: function(actor) {
+        // I'm supposed to have only on child
+        if (this._child !== null)
+            this.actor.remove_child(actor);
+
+        this._child = actor;
+        this.actor.add_child(actor);
+    },
+
+    set slidex(value) {
+        this._slidex = value;
+        this._child.queue_relayout();
+    },
+
+    get slidex() {
+        return this._slidex;
+    }
+});
+
+const DockedDash = new Lang.Class({
+    Name: 'DashToDock.DockedDash',
+
+    _init: function(settings, monitorIndex) {
+        this._rtl = (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL);
+
+        // Load settings
+        this._settings = settings;
+        this._monitorIndex = monitorIndex;
+        // Connect global signals
+        this._signalsHandler = new Utils.GlobalSignalsHandler();
+
+        this._bindSettingsChanges();
+
+        this._position = Utils.getPosition(settings);
+        this._isHorizontal = ((this._position == St.Side.TOP) || (this._position == St.Side.BOTTOM));
+
+        // Temporary ignore hover events linked to autohide for whatever reason
+        this._ignoreHover = false;
+        this._oldignoreHover = null;
+        // This variables are linked to the settings regardles of autohide or intellihide
+        // being temporary disable. Get set by _updateVisibilityMode;
+        this._autohideIsEnabled = null;
+        this._intellihideIsEnabled = null;
+        this._fixedIsEnabled = null;
+
+        // Create intellihide object to monitor windows overlapping
+        this._intellihide = new Intellihide.Intellihide(this._settings, this._monitorIndex);
+
+        // initialize dock state
+        this._dockState = State.HIDDEN;
+
+        // Put dock on the required monitor
+        this._monitor = Main.layoutManager.monitors[this._monitorIndex];
+
+        // this store size and the position where the dash is shown;
+        // used by intellihide module to check window overlap.
+        this.staticBox = new Clutter.ActorBox();
+
+        // Initialize pressure barrier variables
+        this._canUsePressure = false;
+        this._pressureBarrier = null;
+        this._barrier = null;
+        this._removeBarrierTimeoutId = 0;
+
+        // Initialize dwelling system variables
+        this._dockDwelling = false;
+        this._dockWatch = null;
+        this._dockDwellUserTime = 0;
+        this._dockDwellTimeoutId = 0
+
+        // Create a new dash object
+        this.dash = new MyDash.MyDash(this._settings, this._monitorIndex);
+
+        if (!this._settings.get_boolean('show-show-apps-button'))
+            this.dash.hideShowAppsButton();
+
+        // Create the main actor and the containers for sliding in and out and
+        // centering, turn on track hover
+
+        let positionStyleClass = ['top', 'right', 'bottom', 'left'];
+        // This is the centering actor
+        this.actor = new St.Bin({
+            name: 'dashtodockContainer',
+            reactive: false,
+            style_class: positionStyleClass[this._position],
+            x_align: this._isHorizontal?St.Align.MIDDLE:St.Align.START,
+            y_align: this._isHorizontal?St.Align.START:St.Align.MIDDLE
+        });
+        this.actor._delegate = this;
+
+        // This is the sliding actor whose allocation is to be tracked for input regions
+        this._slider = new DashSlideContainer({
+            side: this._position,
+            initialSlideValue: 0
+        });
+
+        // This is the actor whose hover status us tracked for autohide
+        this._box = new St.BoxLayout({
+            name: 'dashtodockBox',
+            reactive: true,
+            track_hover: true
+        });
+        this._box.connect('notify::hover', Lang.bind(this, this._hoverChanged));
+
+        // Create and apply height constraint to the dash. It's controlled by this.actor height
+        this.constrainSize = new Clutter.BindConstraint({
+            source: this.actor,
+            coordinate: this._isHorizontal?Clutter.BindCoordinate.WIDTH:Clutter.BindCoordinate.HEIGHT
+        });
+        this.dash.actor.add_constraint(this.constrainSize);
+
+        this._signalsHandler.add([
+            Main.overview,
+            'item-drag-begin',
+            Lang.bind(this, this._onDragStart)
+        ], [
+            Main.overview,
+            'item-drag-end',
+            Lang.bind(this, this._onDragEnd)
+        ], [
+            Main.overview,
+            'item-drag-cancelled',
+            Lang.bind(this, this._onDragEnd)
+        ], [
+            // update when workarea changes, for instance if  other extensions modify the struts
+            //(like moving th panel at the bottom)
+            global.screen,
+            'workareas-changed',
+            Lang.bind(this, this._resetPosition)
+        ], [
+            Main.overview,
+            'showing',
+            Lang.bind(this, this._onOverviewShowing)
+        ], [
+            Main.overview,
+            'hiding',
+            Lang.bind(this, this._onOverviewHiding)
+        ], [
+            // Hide on appview
+            Main.overview.viewSelector,
+            'page-changed',
+            Lang.bind(this, this._pageChanged)
+        ], [
+            Main.overview.viewSelector,
+            'page-empty',
+            Lang.bind(this, this._onPageEmpty)
+        ], [
+            // Ensure the ShowAppsButton status is kept in sync
+            Main.overview.viewSelector._showAppsButton,
+            'notify::checked',
+            Lang.bind(this, this._syncShowAppsButtonToggled)
+        ], [
+            global.screen,
+            'in-fullscreen-changed',
+            Lang.bind(this, this._updateBarrier)
+        ], [
+            // Monitor windows overlapping
+            this._intellihide,
+            'status-changed',
+            Lang.bind(this, this._updateDashVisibility)
+        ], [
+            // Keep dragged icon consistent in size with this dash
+            this.dash,
+            'icon-size-changed',
+            Lang.bind(this, function() {
+                Main.overview.dashIconSize = this.dash.iconSize;
+            })
+        ], [
+            // This duplicate the similar signal which is in owerview.js.
+            // Being connected and thus executed later this effectively
+            // overwrite any attempt to use the size of the default dash
+            //which given the customization is usually much smaller.
+            // I can't easily disconnect the original signal
+            Main.overview._controls.dash,
+            'icon-size-changed',
+            Lang.bind(this, function() {
+                Main.overview.dashIconSize = this.dash.iconSize;
+            })
+        ]);
+
+        this._injectionsHandler = new Utils.InjectionsHandler();
+        this._themeManager = new Theming.ThemeManager(this._settings, this.actor, this.dash);
+
+        // Since the actor is not a topLevel child and its parent is now not added to the Chrome,
+        // the allocation change of the parent container (slide in and slideout) doesn't trigger
+        // anymore an update of the input regions. Force the update manually.
+        this.actor.connect('notify::allocation',
+                                              Lang.bind(Main.layoutManager, Main.layoutManager._queueUpdateRegions));
+
+        this.dash._container.connect('allocation-changed', Lang.bind(this, this._updateStaticBox));
+        this._slider.actor.connect(this._isHorizontal ? 'notify::x' : 'notify::y', Lang.bind(this, this._updateStaticBox));
+
+        // sync hover after a popupmenu is closed
+        this.dash.connect('menu-closed', Lang.bind(this, function() {
+            this._box.sync_hover();
+        }));
+
+        // Load optional features that need to be activated for one dock only
+        if (this._monitorIndex == this._settings.get_int('preferred-monitor'))
+            this._enableExtraFeatures();
+        // Load optional features that need to be activated once per dock
+        this._optionalScrollWorkspaceSwitch();
+
+         // Delay operations that require the shell to be fully loaded and with
+         // user theme applied.
+
+        this._paintId = this.actor.connect('paint', Lang.bind(this, this._initialize));
+
+        // Manage the  which is used to reserve space in the overview for the dock
+        // Add and additional dashSpacer positioned according to the dash positioning.
+        // It gets restored on extension unload.
+        this._dashSpacer = new OverviewControls.DashSpacer();
+        this._dashSpacer.setDashActor(this._box);
+
+        if (this._position == St.Side.LEFT)
+            Main.overview._controls._group.insert_child_at_index(this._dashSpacer, this._rtl ? -1 : 0); // insert on first
+        else if (this._position ==  St.Side.RIGHT)
+            Main.overview._controls._group.insert_child_at_index(this._dashSpacer, this._rtl ? 0 : -1); // insert on last
+        else if (this._position == St.Side.TOP)
+            Main.overview._overview.insert_child_at_index(this._dashSpacer, 0);
+        else if (this._position == St.Side.BOTTOM)
+            Main.overview._overview.insert_child_at_index(this._dashSpacer, -1);
+
+        // Add dash container actor and the container to the Chrome.
+        this.actor.set_child(this._slider.actor);
+        this._slider.add_child(this._box);
+        this._box.add_actor(this.dash.actor);
+
+        // Add aligning container without tracking it for input region
+        Main.uiGroup.add_child(this.actor);
+
+        if (this._settings.get_boolean('dock-fixed')) {
+            // Note: tracking the fullscreen directly on the slider actor causes some hiccups when fullscreening
+            // windows of certain applications
+            Main.layoutManager._trackActor(this.actor, {affectsInputRegion: false, trackFullscreen: true});
+            Main.layoutManager._trackActor(this._slider.actor, {affectsStruts: true});
+        }
+        else
+            Main.layoutManager._trackActor(this._slider.actor);
+
+        // Set initial position
+        this._resetDepth();
+        this._resetPosition();
+    },
+
+    _initialize: function() {
+        if (this._paintId > 0) {
+            this.actor.disconnect(this._paintId);
+            this._paintId=0;
+        }
+
+        this.dash.setIconSize(this._settings.get_int('dash-max-icon-size'), true);
+
+        // Apply custome css class according to the settings
+        this._themeManager.updateCustomTheme();
+
+        // Since Gnome 3.8 dragging an app without having opened the overview before cause the attemp to
+        //animate a null target since some variables are not initialized when the viewSelector is created
+        if (Main.overview.viewSelector._activePage == null)
+            Main.overview.viewSelector._activePage = Main.overview.viewSelector._workspacesPage;
+
+        this._updateVisibilityMode();
+
+        // In case we are already inside the overview when the extension is loaded,
+        // for instance on unlocking the screen if it was locked with the overview open.
+        if (Main.overview.visibleTarget) {
+            this._onOverviewShowing();
+            this._pageChanged();
+        }
+
+        // Setup pressure barrier (GS38+ only)
+        this._updatePressureBarrier();
+        this._updateBarrier();
+
+        // setup dwelling system if pressure barriers are not available
+        this._setupDockDwellIfNeeded();
+    },
+
+    destroy: function() {
+        // Disconnect global signals
+        this._signalsHandler.destroy();
+        // The dash, intellihide and themeManager have global signals as well internally
+        this.dash.destroy();
+        this._intellihide.destroy();
+        this._themeManager.destroy();
+
+        this._injectionsHandler.destroy();
+
+        // Destroy main clutter actor: this should be sufficient removing it and
+        // destroying  all its children
+        this.actor.destroy();
+
+        // Remove barrier timeout
+        if (this._removeBarrierTimeoutId > 0)
+            Mainloop.source_remove(this._removeBarrierTimeoutId);
+
+        // Remove existing barrier
+        this._removeBarrier();
+
+        // Remove pointer watcher
+        if (this._dockWatch) {
+            PointerWatcher.getPointerWatcher()._removeWatch(this._dockWatch);
+            this._dockWatch = null;
+        }
+
+        // Remove the dashSpacer
+        this._dashSpacer.destroy();
+
+        // Restore legacyTray position
+        this._resetLegacyTray();
+
+    },
+
+    _bindSettingsChanges: function() {
+        this._signalsHandler.add([
+            this._settings,
+            'changed::scroll-action',
+            Lang.bind(this, function() {
+                    this._optionalScrollWorkspaceSwitch();
+            })
+        ], [
+            this._settings,
+            'changed::dash-max-icon-size',
+            Lang.bind(this, function() {
+                    this.dash.setIconSize(this._settings.get_int('dash-max-icon-size'));
+            })
+        ], [
+            this._settings,
+            'changed::icon-size-fixed',
+            Lang.bind(this, function() {
+                    this.dash.setIconSize(this._settings.get_int('dash-max-icon-size'));
+            })
+        ], [
+            this._settings,
+            'changed::show-favorites',
+            Lang.bind(this, function() {
+                    this.dash.resetAppIcons();
+            })
+        ], [
+            this._settings,
+            'changed::show-running',
+            Lang.bind(this, function() {
+                    this.dash.resetAppIcons();
+            })
+        ], [
+            this._settings,
+            'changed::show-apps-at-top',
+            Lang.bind(this, function() {
+                    this.dash.resetAppIcons();
+            })
+        ], [
+            this._settings,
+            'changed::show-show-apps-button',
+            Lang.bind(this, function() {
+                    if (this._settings.get_boolean('show-show-apps-button'))
+                        this.dash.showShowAppsButton();
+                    else
+                        this.dash.hideShowAppsButton();
+            })
+        ], [
+            this._settings,
+            'changed::dock-fixed',
+            Lang.bind(this, function() {
+                    if (this._settings.get_boolean('dock-fixed')) {
+                        Main.layoutManager._untrackActor(this.actor);
+                        Main.layoutManager._trackActor(this.actor, {affectsInputRegion: false, trackFullscreen: true});
+                        Main.layoutManager._untrackActor(this._slider.actor);
+                        Main.layoutManager._trackActor(this._slider.actor, {affectsStruts: true});
+                    } else {
+                        Main.layoutManager._untrackActor(this.actor);
+                        Main.layoutManager._untrackActor(this._slider.actor);
+                        Main.layoutManager._trackActor(this._slider.actor);
+                    }
+
+                    this._resetPosition();
+
+                    // Add or remove barrier depending on if dock-fixed
+                    this._updateBarrier();
+
+                    this._updateVisibilityMode();
+            })
+        ], [
+            this._settings,
+            'changed::intellihide',
+            Lang.bind(this, this._updateVisibilityMode)
+        ], [
+            this._settings,
+            'changed::intellihide-mode',
+            Lang.bind(this, function() {
+                    this._intellihide.forceUpdate();
+            })
+        ], [
+            this._settings,
+            'changed::autohide',
+            Lang.bind(this, function() {
+                    this._updateVisibilityMode();
+                    this._updateBarrier();
+            })
+        ], [
+            this._settings,
+            'changed::autohide-in-fullscreen',
+            Lang.bind(this, this._updateBarrier)
+        ],
+        [
+            this._settings,
+            'changed::extend-height',
+            Lang.bind(this, this._resetPosition)
+        ], [
+            this._settings,
+            'changed::height-fraction',
+            Lang.bind(this, this._resetPosition)
+        ], [
+            this._settings,
+            'changed::require-pressure-to-show',
+            Lang.bind(this, function() {
+                    // Remove pointer watcher
+                    if (this._dockWatch) {
+                        PointerWatcher.getPointerWatcher()._removeWatch(this._dockWatch);
+                        this._dockWatch = null;
+                    }
+                    this._setupDockDwellIfNeeded();
+                    this._updateBarrier();
+            })
+        ], [
+            this._settings,
+            'changed::pressure-threshold',
+            Lang.bind(this, function() {
+                    this._updatePressureBarrier();
+                    this._updateBarrier();
+            })
+        ]);
+
+    },
+
+    /**
+     * This is call when visibility settings change
+     */
+    _updateVisibilityMode: function() {
+        if (this._settings.get_boolean('dock-fixed')) {
+            this._fixedIsEnabled = true;
+            this._autohideIsEnabled = false;
+            this._intellihideIsEnabled = false;
+        }
+        else {
+            this._fixedIsEnabled = false;
+            this._autohideIsEnabled = this._settings.get_boolean('autohide')
+            this._intellihideIsEnabled = this._settings.get_boolean('intellihide')
+        }
+
+        if (this._intellihideIsEnabled)
+            this._intellihide.enable();
+        else
+            this._intellihide.disable();
+
+        this._updateDashVisibility();
+    },
+
+    /**
+     * Show/hide dash based on, in order of priority:
+     * overview visibility
+     * fixed mode
+     * intellihide
+     * autohide
+     * overview visibility
+     */
+    _updateDashVisibility: function() {
+        if (Main.overview.visibleTarget)
+            return;
+
+        if (this._fixedIsEnabled) {
+            this._removeAnimations();
+            this._animateIn(this._settings.get_double('animation-time'), 0);
+        }
+        else if (this._intellihideIsEnabled) {
+            if (this._intellihide.getOverlapStatus()) {
+                this._ignoreHover = false;
+                // Do not hide if autohide is enabled and mouse is hover
+                if (!this._box.hover || !this._autohideIsEnabled)
+                    this._animateOut(this._settings.get_double('animation-time'), 0);
+            }
+            else {
+                this._ignoreHover = true;
+                this._removeAnimations();
+                this._animateIn(this._settings.get_double('animation-time'), 0);
+            }
+        }
+        else {
+            if (this._autohideIsEnabled) {
+                this._ignoreHover = false;
+                global.sync_pointer();
+
+                if (this._box.hover)
+                    this._animateIn(this._settings.get_double('animation-time'), 0);
+                else
+                    this._animateOut(this._settings.get_double('animation-time'), 0);
+            }
+            else
+                this._animateOut(this._settings.get_double('animation-time'), 0);
+        }
+    },
+
+    _onOverviewShowing: function() {
+        this._ignoreHover = true;
+        this._intellihide.disable();
+        this._removeAnimations();
+        this._animateIn(this._settings.get_double('animation-time'), 0);
+    },
+
+    _onOverviewHiding: function() {
+        this._ignoreHover = false;
+        this._intellihide.enable();
+        this._updateDashVisibility();
+    },
+
+    _hoverChanged: function() {
+        if (!this._ignoreHover) {
+            // Skip if dock is not in autohide mode for instance because it is shown
+            // by intellihide.
+            if (this._autohideIsEnabled) {
+                if (this._box.hover)
+                    this._show();
+                else
+                    this._hide();
+            }
+        }
+    },
+
+    _show: function() {
+        if ((this._dockState == State.HIDDEN) || (this._dockState == State.HIDING)) {
+            if (this._dockState == State.HIDING)
+                // suppress all potential queued hiding animations - i.e. added to Tweener but not started,
+                // always give priority to show
+                this._removeAnimations();
+
+            this.emit('showing');
+            this._animateIn(this._settings.get_double('animation-time'), 0);
+        }
+    },
+
+    _hide: function() {
+        // If no hiding animation is running or queued
+        if ((this._dockState == State.SHOWN) || (this._dockState == State.SHOWING)) {
+            let delay;
+
+            if (this._dockState == State.SHOWING)
+                //if a show already started, let it finish; queue hide without removing the show.
+                // to obtain this I increase the delay to avoid the overlap and interference
+                // between the animations
+                delay = this._settings.get_double('hide-delay') + this._settings.get_double('animation-time');
+            else
+                delay = this._settings.get_double('hide-delay');
+
+            this.emit('hiding');
+            this._animateOut(this._settings.get_double('animation-time'), delay);
+        }
+    },
+
+    _animateIn: function(time, delay) {
+        this._dockState = State.SHOWING;
+
+        Tweener.addTween(this._slider, {
+            slidex: 1,
+            time: time,
+            delay: delay,
+            transition: 'easeOutQuad',
+            onComplete: Lang.bind(this, function() {
+                this._dockState = State.SHOWN;
+                // Remove barrier so that mouse pointer is released and can access monitors on other side of dock
+                // NOTE: Delay needed to keep mouse from moving past dock and re-hiding dock immediately. This
+                // gives users an opportunity to hover over the dock
+                if (this._removeBarrierTimeoutId > 0)
+                    Mainloop.source_remove(this._removeBarrierTimeoutId);
+                this._removeBarrierTimeoutId = Mainloop.timeout_add(100, Lang.bind(this, this._removeBarrier));
+            })
+        });
+    },
+
+    _animateOut: function(time, delay) {
+        this._dockState = State.HIDING;
+        Tweener.addTween(this._slider, {
+            slidex: 0,
+            time: time,
+            delay: delay ,
+            transition: 'easeOutQuad',
+            onComplete: Lang.bind(this, function() {
+                this._dockState = State.HIDDEN;
+                this._updateBarrier();
+            })
+        });
+    },
+
+    /**
+     * Dwelling system based on the GNOME Shell 3.14 messageTray code.
+     */
+    _setupDockDwellIfNeeded: function() {
+        // If we don't have extended barrier features, then we need
+        // to support the old tray dwelling mechanism.
+        if (!global.display.supports_extended_barriers() || !this._settings.get_boolean('require-pressure-to-show')) {
+            let pointerWatcher = PointerWatcher.getPointerWatcher();
+            this._dockWatch = pointerWatcher.addWatch(DOCK_DWELL_CHECK_INTERVAL, Lang.bind(this, this._checkDockDwell));
+            this._dockDwelling = false;
+            this._dockDwellUserTime = 0;
+        }
+    },
+
+    _checkDockDwell: function(x, y) {
+
+        let workArea = Main.layoutManager.getWorkAreaForMonitor(this._monitor.index)
+        let shouldDwell;
+        // Check for the correct screen edge, extending the sensitive area to the whole workarea,
+        // minus 1 px to avoid conflicting with other active corners.
+        if (this._position == St.Side.LEFT)
+            shouldDwell = (x == this._monitor.x) && (y > workArea.y) && (y < workArea.y + workArea.height);
+        else if (this._position == St.Side.RIGHT)
+            shouldDwell = (x == this._monitor.x + this._monitor.width - 1) && (y > workArea.y) && (y < workArea.y + workArea.height);
+        else if (this._position == St.Side.TOP)
+            shouldDwell = (y == this._monitor.y) && (x > workArea.x) && (x < workArea.x + workArea.width);
+        else if (this._position == St.Side.BOTTOM)
+            shouldDwell = (y == this._monitor.y + this._monitor.height - 1) && (x > workArea.x) && (x < workArea.x + workArea.width);
+
+        if (shouldDwell) {
+            // We only set up dwell timeout when the user is not hovering over the dock
+            // already (!this._box.hover).
+            // The _dockDwelling variable is used so that we only try to
+            // fire off one dock dwell - if it fails (because, say, the user has the mouse down),
+            // we don't try again until the user moves the mouse up and down again.
+            if (!this._dockDwelling && !this._box.hover && (this._dockDwellTimeoutId == 0)) {
+                // Save the interaction timestamp so we can detect user input
+                let focusWindow = global.display.focus_window;
+                this._dockDwellUserTime = focusWindow ? focusWindow.user_time : 0;
+
+                this._dockDwellTimeoutId = Mainloop.timeout_add(this._settings.get_double('show-delay') * 1000,
+                                                                Lang.bind(this, this._dockDwellTimeout));
+                GLib.Source.set_name_by_id(this._dockDwellTimeoutId, '[dash-to-dock] this._dockDwellTimeout');
+            }
+            this._dockDwelling = true;
+        }
+        else {
+            this._cancelDockDwell();
+            this._dockDwelling = false;
+        }
+    },
+
+    _cancelDockDwell: function() {
+        if (this._dockDwellTimeoutId != 0) {
+            Mainloop.source_remove(this._dockDwellTimeoutId);
+            this._dockDwellTimeoutId = 0;
+        }
+    },
+
+    _dockDwellTimeout: function() {
+        this._dockDwellTimeoutId = 0;
+
+        if (!this._settings.get_boolean('autohide-in-fullscreen') && this._monitor.inFullscreen)
+            return GLib.SOURCE_REMOVE;
+
+        // We don't want to open the tray when a modal dialog
+        // is up, so we check the modal count for that. When we are in the
+        // overview we have to take the overview's modal push into account
+        if (Main.modalCount > (Main.overview.visible ? 1 : 0))
+            return GLib.SOURCE_REMOVE;
+
+        // If the user interacted with the focus window since we started the tray
+        // dwell (by clicking or typing), don't activate the message tray
+        let focusWindow = global.display.focus_window;
+        let currentUserTime = focusWindow ? focusWindow.user_time : 0;
+        if (currentUserTime != this._dockDwellUserTime)
+            return GLib.SOURCE_REMOVE;
+
+        // Reuse the pressure version function, the logic is the same
+        this._onPressureSensed();
+        return GLib.SOURCE_REMOVE;
+    },
+
+    _updatePressureBarrier: function() {
+        this._canUsePressure = global.display.supports_extended_barriers();
+        let pressureThreshold = this._settings.get_double('pressure-threshold');
+
+        // Remove existing pressure barrier
+        if (this._pressureBarrier) {
+            this._pressureBarrier.destroy();
+            this._pressureBarrier = null;
+        }
+
+        if (this._barrier) {
+            this._barrier.destroy();
+            this._barrier = null;
+        }
+
+        // Create new pressure barrier based on pressure threshold setting
+        if (this._canUsePressure) {
+            this._pressureBarrier = new Layout.PressureBarrier(pressureThreshold, this._settings.get_double('show-delay')*1000,
+                                Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW);
+            this._pressureBarrier.connect('trigger', Lang.bind(this, function(barrier) {
+                if (!this._settings.get_boolean('autohide-in-fullscreen') && this._monitor.inFullscreen)
+                    return;
+                this._onPressureSensed();
+            }));
+        }
+    },
+
+    /**
+     * handler for mouse pressure sensed
+     */
+    _onPressureSensed: function() {
+        if (Main.overview.visibleTarget)
+            return;
+
+        // In case the mouse move away from the dock area before hovering it, in such case the leave event
+        // would never be triggered and the dock would stay visible forever.
+        let triggerTimeoutId =  Mainloop.timeout_add(250, Lang.bind(this, function() {
+            triggerTimeoutId = 0;
+
+            let [x, y, mods] = global.get_pointer();
+            let shouldHide = true;
+            switch (this._position) {
+            case St.Side.LEFT:
+                if (x <= this.staticBox.x2 &&
+                    x >= this._monitor.x &&
+                    y >= this._monitor.y &&
+                    y <= this._monitor.y + this._monitor.height) {
+                    shouldHide = false;
+                }
+                break;
+            case St.Side.RIGHT:
+                if (x >= this.staticBox.x1 &&
+                    x <= this._monitor.x + this._monitor.width &&
+                    y >= this._monitor.y &&
+                    y <= this._monitor.y + this._monitor.height) {
+                    shouldHide = false;
+                }
+                break;
+            case St.Side.TOP:
+                if (x >= this._monitor.x &&
+                    x <= this._monitor.x + this._monitor.width &&
+                    y <= this.staticBox.y2 &&
+                    y >= this._monitor.y) {
+                    shouldHide = false;
+                }
+                break;
+            case St.Side.BOTTOM:
+                if (x >= this._monitor.x &&
+                    x <= this._monitor.x + this._monitor.width &&
+                    y >= this.staticBox.y1 &&
+                    y <= this._monitor.y + this._monitor.height) {
+                    shouldHide = false;
+                }
+            }
+            if (shouldHide) {
+                this._hoverChanged();
+                return GLib.SOURCE_REMOVE;
+            }
+            else {
+                return GLib.SOURCE_CONTINUE;
+            }
+
+        }));
+
+        this._show();
+    },
+
+    /**
+     * Remove pressure barrier
+     */
+    _removeBarrier: function() {
+        if (this._barrier) {
+            if (this._pressureBarrier)
+                this._pressureBarrier.removeBarrier(this._barrier);
+            this._barrier.destroy();
+            this._barrier = null;
+        }
+        this._removeBarrierTimeoutId = 0;
+        return false;
+    },
+
+    /**
+     * Update pressure barrier size
+     */
+    _updateBarrier: function() {
+        // Remove existing barrier
+        this._removeBarrier();
+
+        // The barrier needs to be removed in fullscreen with autohide disabled, otherwise the mouse can
+        // get trapped on monitor.
+        if (this._monitor.inFullscreen && !this._settings.get_boolean('autohide-in-fullscreen'))
+            return
+
+        // Manually reset pressure barrier
+        // This is necessary because we remove the pressure barrier when it is triggered to show the dock
+        if (this._pressureBarrier) {
+            this._pressureBarrier._reset();
+            this._pressureBarrier._isTriggered = false;
+        }
+
+        // Create new barrier
+        // The barrier extends to the whole workarea, minus 1 px to avoid conflicting with other active corners
+        // Note: dash in fixed position doesn't use pressure barrier.
+        if (this._canUsePressure && this._autohideIsEnabled && this._settings.get_boolean('require-pressure-to-show')) {
+            let x1, x2, y1, y2, direction;
+            let workArea = Main.layoutManager.getWorkAreaForMonitor(this._monitor.index)
+
+            if (this._position == St.Side.LEFT) {
+                x1 = this._monitor.x + 1;
+                x2 = x1;
+                y1 = workArea.y + 1;
+                y2 = workArea.y + workArea.height - 1;
+                direction = Meta.BarrierDirection.POSITIVE_X;
+            }
+            else if (this._position == St.Side.RIGHT) {
+                x1 = this._monitor.x + this._monitor.width - 1;
+                x2 = x1;
+                y1 = workArea.y + 1;
+                y2 = workArea.y + workArea.height - 1;
+                direction = Meta.BarrierDirection.NEGATIVE_X;
+            }
+            else if (this._position == St.Side.TOP) {
+                x1 = workArea.x + 1;
+                x2 = workArea.x + workArea.width - 1;
+                y1 = this._monitor.y;
+                y2 = y1;
+                direction = Meta.BarrierDirection.POSITIVE_Y;
+            }
+            else if (this._position == St.Side.BOTTOM) {
+                x1 = workArea.x + 1;
+                x2 = workArea.x + workArea.width - 1;
+                y1 = this._monitor.y + this._monitor.height;
+                y2 = y1;
+                direction = Meta.BarrierDirection.NEGATIVE_Y;
+            }
+
+            this._barrier = new Meta.Barrier({
+                display: global.display,
+                x1: x1,
+                x2: x2,
+                y1: y1,
+                y2: y2,
+                directions: direction
+            });
+            if (this._pressureBarrier)
+                this._pressureBarrier.addBarrier(this._barrier);
+        }
+    },
+
+    _isPrimaryMonitor: function() {
+        return (this._monitorIndex == Main.layoutManager.primaryIndex);
+    },
+
+    _resetPosition: function() {
+        // Ensure variables linked to settings are updated.
+        this._updateVisibilityMode();
+
+        let extendHeight = this._settings.get_boolean('extend-height');
+
+        // Note: do not use the workarea coordinates in the direction on which the dock is placed,
+        // to avoid a loop [position change -> workArea change -> position change] with
+        // fixed dock.
+        let workArea = Main.layoutManager.getWorkAreaForMonitor(this._monitorIndex);
+
+        // Reserve space for the dash on the overview
+        // if the dock is on the primary monitor
+        if (this._isPrimaryMonitor())
+            this._dashSpacer.show();
+        else
+            // No space is required in the overview of the dash
+            this._dashSpacer.hide();
+
+        let fraction = this._settings.get_double('height-fraction');
+
+        if (extendHeight)
+            fraction = 1;
+        else if ((fraction < 0) || (fraction > 1))
+            fraction = 0.95;
+
+        let anchor_point;
+
+        if (this._isHorizontal) {
+            this.actor.width = Math.round( fraction * workArea.width);
+
+            let pos_y;
+            if (this._position == St.Side.BOTTOM) {
+                pos_y =  this._monitor.y + this._monitor.height;
+                anchor_point = Clutter.Gravity.SOUTH_WEST;
+            }
+            else {
+                pos_y = this._monitor.y;
+                anchor_point = Clutter.Gravity.NORTH_WEST;
+            }
+
+            this.actor.move_anchor_point_from_gravity(anchor_point);
+            this.actor.x = workArea.x + Math.round((1 - fraction) / 2 * workArea.width);
+            this.actor.y = pos_y;
+
+            if (extendHeight) {
+                this.dash._container.set_width(this.actor.width);
+                this.actor.add_style_class_name('extended');
+            }
+            else {
+                this.dash._container.set_width(-1);
+                this.actor.remove_style_class_name('extended');
+            }
+        }
+        else {
+            this.actor.height = Math.round(fraction * workArea.height);
+
+            let pos_x;
+            if (this._position == St.Side.RIGHT) {
+                pos_x =  this._monitor.x + this._monitor.width;
+                anchor_point = Clutter.Gravity.NORTH_EAST;
+            }
+            else {
+                pos_x =  this._monitor.x;
+                anchor_point = Clutter.Gravity.NORTH_WEST;
+            }
+
+            this.actor.move_anchor_point_from_gravity(anchor_point);
+            this.actor.x = pos_x;
+            this.actor.y = workArea.y + Math.round((1 - fraction) / 2 * workArea.height);
+
+            if (extendHeight) {
+                this.dash._container.set_height(this.actor.height);
+                this.actor.add_style_class_name('extended');
+            }
+            else {
+                this.dash._container.set_height(-1);
+                this.actor.remove_style_class_name('extended');
+            }
+        }
+
+        this._y0 = this.actor.y;
+
+        this._adjustLegacyTray();
+    },
+
+    // Set the dash at the correct depth in z
+    _resetDepth: function() {
+        // Keep the dash below the modalDialogGroup and the legacyTray
+        if (Main.legacyTray && Main.legacyTray.actor)
+            Main.layoutManager.uiGroup.set_child_below_sibling(this.actor, Main.legacyTray.actor);
+        else
+            Main.layoutManager.uiGroup.set_child_below_sibling(this.actor, Main.layoutManager.modalDialogGroup);
+    },
+
+    _adjustLegacyTray: function() {
+        let use_work_area = true;
+
+        if (this._fixedIsEnabled && !this._settings.get_boolean('extend-height')
+            && this._isPrimaryMonitor()
+            && ((this._position == St.Side.BOTTOM) || (this._position == St.Side.LEFT)))
+            use_work_area = false;
+
+        Main.legacyTray.actor.clear_constraints();
+        let constraint = new Layout.MonitorConstraint({
+            primary: true,
+            work_area: use_work_area
+        });
+        Main.legacyTray.actor.add_constraint(constraint);
+    },
+
+    _resetLegacyTray: function() {
+        Main.legacyTray.actor.clear_constraints();
+        let constraint = new Layout.MonitorConstraint({
+            primary: true,
+            work_area: true
+        });
+        Main.legacyTray.actor.add_constraint(constraint);
+    },
+
+    _updateStaticBox: function() {
+        this.staticBox.init_rect(
+            this.actor.x + this._slider.actor.x - (this._position == St.Side.RIGHT ? this._box.width : 0),
+            this.actor.y + this._slider.actor.y - (this._position == St.Side.BOTTOM ? this._box.height : 0),
+            this._box.width,
+            this._box.height
+        );
+
+        this._intellihide.updateTargetBox(this.staticBox);
+    },
+
+    _removeAnimations: function() {
+        Tweener.removeTweens(this._slider);
+    },
+
+    _onDragStart: function() {
+        // The dash need to be above the top_window_group, otherwise it doesn't
+        // accept dnd of app icons when not in overiew mode.
+        Main.layoutManager.uiGroup.set_child_above_sibling(this.actor, global.top_window_group);
+        this._oldignoreHover = this._ignoreHover;
+        this._ignoreHover = true;
+        this._animateIn(this._settings.get_double('animation-time'), 0);
+    },
+
+    _onDragEnd: function() {
+        // Restore drag default dash stack order
+        this._resetDepth();
+        if (this._oldignoreHover !== null)
+            this._ignoreHover  = this._oldignoreHover;
+        this._oldignoreHover = null;
+        this._box.sync_hover();
+        if (Main.overview._shown)
+            this._pageChanged();
+    },
+
+    _pageChanged: function() {
+        let activePage = Main.overview.viewSelector.getActivePage();
+        let dashVisible = (activePage == ViewSelector.ViewPage.WINDOWS ||
+                           activePage == ViewSelector.ViewPage.APPS);
+
+        if (dashVisible)
+            this._animateIn(this._settings.get_double('animation-time'), 0);
+        else
+            this._animateOut(this._settings.get_double('animation-time'), 0);
+    },
+
+    _onPageEmpty: function() {
+        /* The dash spacer is required only in the WINDOWS view if in the default position.
+         * The 'page-empty' signal is emitted in between a change of view,
+         * signalling the spacer can be added and removed without visible effect,
+         * as it's done for the upstream dashSpacer.
+         *
+         * Moreover, hiding the spacer ensure the appGrid allocaton is triggered.
+         * This matter as the appview spring animation is triggered by to first reallocaton of the appGrid,
+         * (See appDisplay.js, line 202 on GNOME Shell 3.14:
+         *                             this._grid.actor.connect('notify::allocation', ...)
+         * which in turn seems to be triggered by changes in the other actors in the overview.
+         * Normally, as far as I could understand, either the dashSpacer being hidden or the workspacesThumbnails
+         * sliding out would trigger the allocation. However, with no stock dash
+         * and no thumbnails, which happen if the user configured only 1 and static workspace,
+         * the animation out of icons is not played.
+         */
+
+        let activePage = Main.overview.viewSelector.getActivePage();
+        this._dashSpacer.visible = (this._isHorizontal || activePage == ViewSelector.ViewPage.WINDOWS);
+    },
+
+    /**
+     * Show dock and give key focus to it
+     */
+    _onAccessibilityFocus: function() {
+        this._box.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
+        this._animateIn(this._settings.get_double('animation-time'), 0);
+    },
+
+    /**
+     * Keep ShowAppsButton status in sync with the overview status
+     */
+    _syncShowAppsButtonToggled: function() {
+        let status = Main.overview.viewSelector._showAppsButton.checked;
+        if (this.dash.showAppsButton.checked !== status)
+            this.dash.showAppsButton.checked = status;
+    },
+
+    // Optional features to be enabled only for the main Dock
+    _enableExtraFeatures: function() {
+        // Restore dash accessibility
+        Main.ctrlAltTabManager.addGroup(
+            this.dash.actor, _('Dash'), 'user-bookmarks-symbolic',
+                {focusCallback: Lang.bind(this, this._onAccessibilityFocus)});
+    },
+
+    /**
+     * Switch workspace by scrolling over the dock
+     */
+    _optionalScrollWorkspaceSwitch: function() {
+        let label = 'optionalScrollWorkspaceSwitch';
+
+        function isEnabled() {
+            return this._settings.get_enum('scroll-action') === scrollAction.SWITCH_WORKSPACE;
+        }
+
+        this._settings.connect('changed::scroll-action', Lang.bind(this, function() {
+            if (Lang.bind(this, isEnabled)())
+                Lang.bind(this, enable)();
+            else
+                Lang.bind(this, disable)();
+        }));
+
+        if (Lang.bind(this, isEnabled)())
+            Lang.bind(this, enable)();
+
+        function enable() {
+            this._signalsHandler.removeWithLabel(label);
+
+            this._signalsHandler.addWithLabel(label, [
+                this._box,
+                'scroll-event',
+                Lang.bind(this, onScrollEvent)
+            ]);
+
+            this._optionalScrollWorkspaceSwitchDeadTimeId = 0;
+        }
+
+        function disable() {
+            this._signalsHandler.removeWithLabel(label);
+
+            if (this._optionalScrollWorkspaceSwitchDeadTimeId > 0) {
+                Mainloop.source_remove(this._optionalScrollWorkspaceSwitchDeadTimeId);
+                this._optionalScrollWorkspaceSwitchDeadTimeId = 0;
+            }
+        }
+
+        // This was inspired to desktop-scroller@obsidien.github.com
+        function onScrollEvent(actor, event) {
+            // When in overview change workscape only in windows view
+            if (Main.overview.visible && Main.overview.viewSelector.getActivePage() !== ViewSelector.ViewPage.WINDOWS)
+                return false;
+
+            let activeWs = global.screen.get_active_workspace();
+            let direction = null;
+
+            switch (event.get_scroll_direction()) {
+            case Clutter.ScrollDirection.UP:
+                direction = Meta.MotionDirection.UP;
+                break;
+            case Clutter.ScrollDirection.DOWN:
+                direction = Meta.MotionDirection.DOWN;
+                break;
+            case Clutter.ScrollDirection.SMOOTH:
+                let [dx, dy] = event.get_scroll_delta();
+                if (dy < 0)
+                    direction = Meta.MotionDirection.UP;
+                else if (dy > 0)
+                    direction = Meta.MotionDirection.DOWN;
+                break;
+            }
+
+            if (direction !== null) {
+                // Prevent scroll events from triggering too many workspace switches
+                // by adding a 250ms deadtime between each scroll event.
+                // Usefull on laptops when using a touchpad.
+
+                // During the deadtime do nothing
+                if (this._optionalScrollWorkspaceSwitchDeadTimeId > 0)
+                    return false;
+                else
+                    this._optionalScrollWorkspaceSwitchDeadTimeId = Mainloop.timeout_add(250, Lang.bind(this, function() {
+                        this._optionalScrollWorkspaceSwitchDeadTimeId = 0;
+                    }));
+
+                let ws;
+
+                ws = activeWs.get_neighbor(direction)
+
+                if (Main.wm._workspaceSwitcherPopup == null)
+                    Main.wm._workspaceSwitcherPopup = new WorkspaceSwitcherPopup.WorkspaceSwitcherPopup();
+                    // Set the actor non reactive, so that it doesn't prevent the
+                    // clicks events from reaching the dash actor. I can't see a reason
+                    // why it should be reactive.
+                    Main.wm._workspaceSwitcherPopup.actor.reactive = false;
+                    Main.wm._workspaceSwitcherPopup.connect('destroy', function() {
+                        Main.wm._workspaceSwitcherPopup = null;
+                    });
+
+                // Do not show wokspaceSwithcer in overview
+                if (!Main.overview.visible)
+                    Main.wm._workspaceSwitcherPopup.display(direction, ws.index());
+                Main.wm.actionMoveWorkspace(ws);
+
+                return true;
+            }
+            else
+                return false;
+        }
+    },
+
+    _activateApp: function(appIndex) {
+        let children = this.dash._box.get_children().filter(function(actor) {
+                return actor.child &&
+                       actor.child._delegate &&
+                       actor.child._delegate.app;
+        });
+
+        // Apps currently in the dash
+        let apps = children.map(function(actor) {
+                return actor.child._delegate;
+            });
+
+        // Activate with button = 1, i.e. same as left click
+        let button = 1;
+        if (appIndex < apps.length)
+            apps[appIndex].activate(button);
+    }
+
+});
+
+Signals.addSignalMethods(DockedDash.prototype);
+
+/*
+ * Handle keybaord shortcuts
+ */
+const KeyboardShortcuts = new Lang.Class({
+
+    Name: 'DashToDock.KeyboardShortcuts',
+
+    _numHotkeys: 10,
+
+    _init: function(settings, allDocks){
+
+        this._settings = settings;
+        this._allDocks = allDocks;
+        this._signalsHandler = new Utils.GlobalSignalsHandler();
+
+        this._hotKeysEnabled = false;
+        if (this._settings.get_boolean('hot-keys'))
+            this._enableHotKeys();
+
+        this._signalsHandler.add([
+            this._settings,
+            'changed::hot-keys',
+            Lang.bind(this, function() {
+                    if (this._settings.get_boolean('hot-keys'))
+                        Lang.bind(this, this._enableHotKeys)();
+                    else
+                        Lang.bind(this, this._disableHotKeys)();
+            })
+        ]);
+
+        this._optionalNumberOverlay();
+    },
+
+    destroy: function (){
+        // Remove keybindings
+        this._disableHotKeys();
+        this._disableExtraShortcut();
+        this._signalsHandler.destroy();
+    },
+
+    _enableHotKeys: function() {
+        if (this._hotKeysEnabled)
+            return;
+
+        // Setup keyboard bindings for dash elements
+        let keys = ['app-hotkey-', 'app-shift-hotkey-', 'app-ctrl-hotkey-',  // Regular numbers
+                    'app-hotkey-kp-', 'app-shift-hotkey-kp-', 'app-ctrl-hotkey-kp-']; // Key-pad numbers
+        keys.forEach( function(key) {
+            for (let i = 0; i < this._numHotkeys; i++) {
+                let appNum = i;
+                Main.wm.addKeybinding(key + (i + 1), this._settings,
+                                      Meta.KeyBindingFlags.NONE,
+                                      Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW,
+                                      Lang.bind(this, function() {
+                                          this._allDocks[0]._activateApp(appNum);
+                                          this._showOverlay();
+                                      }));
+            }
+        }, this);
+
+        this._hotKeysEnabled = true;
+    },
+
+    _disableHotKeys: function() {
+        if (!this._hotKeysEnabled)
+            return;
+
+        let keys = ['app-hotkey-', 'app-shift-hotkey-', 'app-ctrl-hotkey-',  // Regular numbers
+                    'app-hotkey-kp-', 'app-shift-hotkey-kp-', 'app-ctrl-hotkey-kp-']; // Key-pad numbers
+        keys.forEach( function(key) {
+            for (let i = 0; i < this._numHotkeys; i++)
+                Main.wm.removeKeybinding(key + (i + 1));
+        }, this);
+
+        this._hotKeysEnabled = false;
+    },
+
+    _optionalNumberOverlay: function() {
+        this._shortcutIsSet = false;
+        // Enable extra shortcut if either 'overlay' or 'show-dock' are true
+        if (this._settings.get_boolean('hot-keys') &&
+           (this._settings.get_boolean('hotkeys-overlay') || this._settings.get_boolean('hotkeys-show-dock')))
+            this._enableExtraShortcut();
+
+        this._signalsHandler.add([
+            this._settings,
+            'changed::hot-keys',
+            Lang.bind(this, this._checkHotkeysOptions)
+        ], [
+            this._settings,
+            'changed::hotkeys-overlay',
+            Lang.bind(this, this._checkHotkeysOptions)
+        ], [
+            this._settings,
+            'changed::hotkeys-show-dock',
+            Lang.bind(this, this._checkHotkeysOptions)
+        ]);
+    },
+
+    _checkHotkeysOptions: function() {
+        if (this._settings.get_boolean('hot-keys') &&
+           (this._settings.get_boolean('hotkeys-overlay') || this._settings.get_boolean('hotkeys-show-dock')))
+            this._enableExtraShortcut();
+        else
+            this._disableExtraShortcut();
+    },
+
+    _enableExtraShortcut: function() {
+        if (!this._shortcutIsSet) {
+            Main.wm.addKeybinding('shortcut', this._settings,
+                                  Meta.KeyBindingFlags.NONE,
+                                  Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW,
+                                  Lang.bind(this, this._showOverlay));
+            this._shortcutIsSet = true;
+        }
+    },
+
+    _disableExtraShortcut: function() {
+        if (this._shortcutIsSet) {
+            Main.wm.removeKeybinding('shortcut');
+            this._shortcutIsSet = false;
+        }
+    },
+
+    _showOverlay: function() {
+        for (let i = 0; i < this._allDocks.length; i++) {
+            let dock = this._allDocks[i];
+            if (dock._settings.get_boolean('hotkeys-overlay'))
+                dock.dash.toggleNumberOverlay(true);
+
+            // Restart the counting if the shortcut is pressed again
+            if (dock._numberOverlayTimeoutId) {
+                Mainloop.source_remove(dock._numberOverlayTimeoutId);
+                dock._numberOverlayTimeoutId = 0;
+            }
+
+            // Hide the overlay/dock after the timeout
+            let timeout = dock._settings.get_double('shortcut-timeout') * 1000;
+            dock._numberOverlayTimeoutId = Mainloop.timeout_add(timeout, Lang.bind(dock, function() {
+                    dock._numberOverlayTimeoutId = 0;
+                    dock.dash.toggleNumberOverlay(false);
+                    // Hide the dock again if necessary
+                    dock._updateDashVisibility();
+            }));
+
+            // Show the dock if it is hidden
+            if (dock._settings.get_boolean('hotkeys-show-dock')) {
+                let showDock = (dock._intellihideIsEnabled || dock._autohideIsEnabled);
+                if (showDock)
+                    dock._show();
+            }
+        }
+    }
+
+});
+
+/**
+ * Isolate overview to open new windows for inactive apps
+ * Note: the future implementaion is not fully contained here. Some bits are around in other methods of other classes.
+ * This class just take care of enabling/disabling the option.
+ */
+const WorkspaceIsolation = new Lang.Class({
+
+    Name: 'DashToDock.WorkspaceIsolation',
+
+    _init: function(settings, allDocks) {
+
+        this._settings = settings;
+        this._allDocks = allDocks;
+
+        this._signalsHandler = new Utils.GlobalSignalsHandler();
+        this._injectionsHandler = new Utils.InjectionsHandler();
+
+        this._signalsHandler.add([
+            this._settings,
+            'changed::isolate-workspaces',
+            Lang.bind(this, function() {
+                    this._allDocks.forEach(function(dock) {
+                        dock.dash.resetAppIcons();
+                    });
+                    if (this._settings.get_boolean('isolate-workspaces') ||
+                        this._settings.get_boolean('isolate-monitors'))
+                        Lang.bind(this, this._enable)();
+                    else
+                        Lang.bind(this, this._disable)();
+            })
+        ],[
+            this._settings,
+            'changed::isolate-monitors',
+            Lang.bind(this, function() {
+                    this._allDocks.forEach(function(dock) {
+                        dock.dash.resetAppIcons();
+                    });
+                    if (this._settings.get_boolean('isolate-workspaces') ||
+                        this._settings.get_boolean('isolate-monitors'))
+                        Lang.bind(this, this._enable)();
+                    else
+                        Lang.bind(this, this._disable)();
+            })
+        ]);
+
+        if (this._settings.get_boolean('isolate-workspaces') ||
+            this._settings.get_boolean('isolate-monitors'))
+            this._enable();
+
+    },
+
+    _enable: function() {
+
+        // ensure I never double-register/inject
+        // although it should never happen
+        this._disable();
+
+        this._allDocks.forEach(function(dock) {
+            this._signalsHandler.addWithLabel('isolation', [
+                global.screen,
+                'restacked',
+                Lang.bind(dock.dash, dock.dash._queueRedisplay)
+            ], [
+                global.window_manager,
+                'switch-workspace',
+                Lang.bind(dock.dash, dock.dash._queueRedisplay)
+            ]);
+
+            // This last signal is only needed for monitor isolation, as windows
+            // might migrate from one monitor to another without triggering 'restacked'
+            if (this._settings.get_boolean('isolate-monitors'))
+                this._signalsHandler.addWithLabel('isolation', [
+                    global.screen,
+                    'window-entered-monitor',
+                    Lang.bind(dock.dash, dock.dash._queueRedisplay)
+                ]);
+
+        }, this);
+
+        // here this is the Shell.App
+        function IsolatedOverview() {
+            // These lines take care of Nautilus for icons on Desktop
+            let windows = this.get_windows().filter(function(w) {
+                return w.get_workspace().index() == global.screen.get_active_workspace_index();
+            });
+            if (windows.length == 1)
+                if (windows[0].skip_taskbar)
+                    return this.open_new_window(-1);
+
+            if (this.is_on_workspace(global.screen.get_active_workspace()))
+                return Main.activateWindow(windows[0]);
+            return this.open_new_window(-1);
+        }
+
+        this._injectionsHandler.addWithLabel('isolation', [
+            Shell.App.prototype,
+            'activate',
+            IsolatedOverview
+        ]);
+    },
+
+    _disable: function () {
+        this._signalsHandler.removeWithLabel('isolation');
+        this._injectionsHandler.removeWithLabel('isolation');
+    },
+
+    destroy: function() {
+        this._signalsHandler.destroy();
+        this._injectionsHandler.destroy();
+    }
+
+});
+
+
+const DockManager = new Lang.Class({
+    Name: 'DashToDock.DockManager',
+
+    _init: function() {
+        this._settings = Convenience.getSettings('org.gnome.shell.extensions.dash-to-dock');
+        this._oldDash = Main.overview._dash;
+        /* Array of all the docks created */
+        this._allDocks = [];
+        this._createDocks();
+
+        // status variable: true when the overview is shown through the dash
+        // applications button.
+        this._forcedOverview = false;
+
+        // Connect relevant signals to the toggling function
+        this._bindSettingsChanges();
+    },
+
+    _toggle: function() {
+        this._deleteDocks();
+        this._createDocks();
+        this.emit('toggled');
+    },
+
+    _bindSettingsChanges: function() {
+        // Connect relevant signals to the toggling function
+        this._signalsHandler = new Utils.GlobalSignalsHandler();
+        this._signalsHandler.add([
+            global.screen,
+            'monitors-changed',
+            Lang.bind(this, this._toggle)
+        ], [
+            this._settings,
+            'changed::multi-monitor',
+            Lang.bind(this, this._toggle)
+        ], [
+            this._settings,
+            'changed::preferred-monitor',
+            Lang.bind(this, this._toggle)
+        ], [
+            this._settings,
+            'changed::dock-position',
+            Lang.bind(this, this._toggle)
+        ], [
+            this._settings,
+            'changed::extend-height',
+            Lang.bind(this, this._adjustPanelCorners)
+        ], [
+            this._settings,
+            'changed::dock-fixed',
+            Lang.bind(this, this._adjustPanelCorners)
+        ]);
+    },
+
+    _createDocks: function() {
+
+        this._preferredMonitorIndex = this._settings.get_int('preferred-monitor');
+        // In case of multi-monitor, we consider the dock on the primary monitor to be the preferred (main) one
+        // regardless of the settings
+        // The dock goes on the primary monitor also if the settings are incosistent (e.g. desired monitor not connected).
+        if (this._settings.get_boolean('multi-monitor') ||
+            this._preferredMonitorIndex < 0 || this._preferredMonitorIndex > Main.layoutManager.monitors.length - 1
+            ) {
+            this._preferredMonitorIndex = Main.layoutManager.primaryIndex;
+        } else {
+            // Gdk and shell monitors numbering differ at least under wayland:
+            // While the primary monitor appears to be always index 0 in Gdk,
+            // the shell can assign a different number (Main.layoutManager.primaryMonitor)
+            // This ensure the indexing in the settings (Gdk) and in the shell are matched,
+            // i.e. that we start counting from the primaryMonitorIndex
+            this._preferredMonitorIndex = (Main.layoutManager.primaryIndex + this._preferredMonitorIndex) % Main.layoutManager.monitors.length ;
+        }
+
+        // First we create the main Dock, to get the extra features to bind to this one
+        let dock = new DockedDash(this._settings, this._preferredMonitorIndex);
+        this._mainShowAppsButton = dock.dash.showAppsButton;
+        this._allDocks.push(dock);
+
+        // connect app icon into the view selector
+        dock.dash.showAppsButton.connect('notify::checked', Lang.bind(this, this._onShowAppsButtonToggled));
+
+        // Make the necessary changes to Main.overview._dash
+        this._prepareMainDash();
+
+        // Adjust corners if necessary
+        this._adjustPanelCorners();
+
+        if (this._settings.get_boolean('multi-monitor')) {
+            let nMon = Main.layoutManager.monitors.length;
+            for (let iMon = 0; iMon < nMon; iMon++) {
+                if (iMon == this._preferredMonitorIndex)
+                    continue;
+                let dock = new DockedDash(this._settings, iMon);
+                this._allDocks.push(dock);
+                // connect app icon into the view selector
+                dock.dash.showAppsButton.connect('notify::checked', Lang.bind(this, this._onShowAppsButtonToggled));
+            }
+        }
+
+        // Load optional features. We load *after* the docks are created, since
+        // we need to connect the signals to all dock instances.
+        this._workspaceIsolation = new WorkspaceIsolation(this._settings, this._allDocks);
+        this._keyboardShortcuts = new KeyboardShortcuts(this._settings, this._allDocks);
+    },
+
+    _prepareMainDash: function() {
+        // Pretend I'm the dash: meant to make appgrd swarm animation come from the
+        // right position of the appShowButton.
+        Main.overview._dash = this._allDocks[0].dash;
+
+        // set stored icon size  to the new dash
+        Main.overview.dashIconSize = this._allDocks[0].dash.iconSize;
+
+        // Hide usual Dash
+        Main.overview._controls.dash.actor.hide();
+
+        // Also set dash width to 1, so it's almost not taken into account by code
+        // calculaing the reserved space in the overview. The reason to keep it at 1 is
+        // to allow its visibility change to trigger an allocaion of the appGrid which
+        // in turn is triggergin the appsIcon spring animation, required when no other
+        // actors has this effect, i.e in horizontal mode and without the workspaceThumnails
+        // 1 static workspace only)
+        Main.overview._controls.dash.actor.set_width(1);
+    },
+
+    _deleteDocks: function() {
+        // Remove extra features
+        this._workspaceIsolation.destroy();
+        this._keyboardShortcuts.destroy();
+
+        // Delete all docks
+        let nDocks = this._allDocks.length;
+        for (let i = nDocks-1; i >= 0; i--) {
+            this._allDocks[i].destroy();
+            this._allDocks.pop();
+        }
+    },
+
+    _restoreDash: function() {
+        Main.overview._controls.dash.actor.show();
+        Main.overview._controls.dash.actor.set_width(-1); //reset default dash size
+        // This force the recalculation of the icon size
+        Main.overview._controls.dash._maxHeight = -1;
+
+        // reset stored icon size  to the default dash
+        Main.overview.dashIconSize = Main.overview._controls.dash.iconSize;
+
+        Main.overview._dash = this._oldDash;
+    },
+
+    _onShowAppsButtonToggled: function(button) {
+        // Sync the status of the default appButtons. Only if the two statuses are
+        // different, that means the user interacted with the extension provided
+        // application button, cutomize the behaviour. Otherwise the shell has changed the
+        // status (due to the _syncShowAppsButtonToggled function below) and it
+        // has already performed the desired action.
+
+        let animate = this._settings.get_boolean('animate-show-apps');
+        let selector = Main.overview.viewSelector;
+
+        if (selector._showAppsButton.checked !== button.checked) {
+            // find visible view
+            let visibleView;
+            Main.overview.viewSelector.appDisplay._views.every(function(v, index) {
+                if (v.view.actor.visible) {
+                    visibleView = index;
+                    return false;
+                }
+                else
+                    return true;
+            });
+
+            if (button.checked) {
+                // force spring animation triggering.By default the animation only
+                // runs if we are already inside the overview.
+                if (!Main.overview._shown) {
+                    this._forcedOverview = true;
+                    let view = Main.overview.viewSelector.appDisplay._views[visibleView].view;
+                    let grid = view._grid;
+                    if (animate) {
+                        // Animate in the the appview, hide the appGrid to avoiud flashing
+                        // Go to the appView before entering the overview, skipping the workspaces.
+                        // Do this manually avoiding opacity in transitions so that the setting of the opacity
+                        // to 0 doesn't get overwritten.
+                        Main.overview.viewSelector._activePage.opacity = 0;
+                        Main.overview.viewSelector._activePage.hide();
+                        Main.overview.viewSelector._activePage = Main.overview.viewSelector._appsPage;
+                        Main.overview.viewSelector._activePage.show();
+                        grid.actor.opacity = 0;
+
+                        // The animation has to be trigered manually because the AppDisplay.animate
+                        // method is waiting for an allocation not happening, as we skip the workspace view
+                        // and the appgrid could already be allocated from previous shown.
+                        // It has to be triggered after the overview is shown as wrong coordinates are obtained
+                        // otherwise.
+                        let overviewShownId = Main.overview.connect('shown', Lang.bind(this, function() {
+                            Main.overview.disconnect(overviewShownId);
+                            Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, function() {
+                                grid.actor.opacity = 255;
+                                grid.animateSpring(IconGrid.AnimationDirection.IN, this._allDocks[0].dash.showAppsButton);
+                            }));
+                        }));
+                    }
+                    else {
+                        Main.overview.viewSelector._activePage = Main.overview.viewSelector._appsPage;
+                        Main.overview.viewSelector._activePage.show();
+                        grid.actor.opacity = 255;
+                    }
+
+                }
+
+                // Finally show the overview
+                selector._showAppsButton.checked = true;
+                Main.overview.show();
+            }
+            else {
+                if (this._forcedOverview) {
+                    // force exiting overview if needed
+
+                    if (animate) {
+                        // Manually trigger springout animation without activating the
+                        // workspaceView to avoid the zoomout animation. Hide the appPage
+                        // onComplete to avoid ugly flashing of original icons.
+                        let view = Main.overview.viewSelector.appDisplay._views[visibleView].view;
+                        let grid = view._grid;
+                        view.animate(IconGrid.AnimationDirection.OUT, Lang.bind(this, function() {
+                            Main.overview.viewSelector._appsPage.hide();
+                            Main.overview.hide();
+                            selector._showAppsButton.checked = false;
+                            this._forcedOverview = false;
+                        }));
+                    }
+                    else {
+                        Main.overview.hide();
+                        this._forcedOverview = false;
+                    }
+                }
+                else {
+                    selector._showAppsButton.checked = false;
+                    this._forcedOverview = false;
+                }
+            }
+        }
+
+        // whenever the button is unactivated even if not by the user still reset the
+        // forcedOverview flag
+        if (button.checked == false)
+            this._forcedOverview = false;
+    },
+
+    destroy: function() {
+        this._signalsHandler.destroy();
+        this._deleteDocks();
+        this._revertPanelCorners();
+        this._restoreDash();
+    },
+
+    /**
+     * Adjust Panel corners
+     */
+    _adjustPanelCorners: function() {
+        let position = Utils.getPosition(this._settings);
+        let isHorizontal = ((position == St.Side.TOP) || (position == St.Side.BOTTOM));
+        let extendHeight   = this._settings.get_boolean('extend-height');
+        let fixedIsEnabled = this._settings.get_boolean('dock-fixed');
+        let dockOnPrimary  = this._settings.get_boolean('multi-monitor') ||
+                             this._preferredMonitorIndex == Main.layoutManager.primaryIndex;
+
+        if (!isHorizontal && dockOnPrimary && extendHeight && fixedIsEnabled) {
+            Main.panel._rightCorner.actor.hide();
+            Main.panel._leftCorner.actor.hide();
+        }
+        else
+            this._revertPanelCorners();
+    },
+
+    _revertPanelCorners: function() {
+        Main.panel._leftCorner.actor.show();
+        Main.panel._rightCorner.actor.show();
+    }
+});
+Signals.addSignalMethods(DockManager.prototype);
diff --git a/package/extension.js b/package/extension.js
new file mode 100644
index 0000000000000000000000000000000000000000..86ef7006578b0ee170990b6b5748a99f914fc934
--- /dev/null
+++ b/package/extension.js
@@ -0,0 +1,21 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
+const Me = imports.misc.extensionUtils.getCurrentExtension();
+const Docking = Me.imports.docking;
+const Convenience = Me.imports.convenience;
+
+let dockManager;
+
+function init() {
+    Convenience.initTranslations('dashtodock');
+}
+
+function enable() {
+    dockManager = new Docking.DockManager();
+}
+
+function disable() {
+    dockManager.destroy();
+
+    dockManager=null;
+}
diff --git a/package/intellihide.js b/package/intellihide.js
new file mode 100644
index 0000000000000000000000000000000000000000..0d9fabd57fc363e32def2e421959bf2538937cbd
--- /dev/null
+++ b/package/intellihide.js
@@ -0,0 +1,323 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
+const GLib = imports.gi.GLib;
+const Lang = imports.lang;
+const Mainloop = imports.mainloop;
+const Meta = imports.gi.Meta;
+const Shell = imports.gi.Shell;
+
+const Main = imports.ui.main;
+const Signals = imports.signals;
+
+const Me = imports.misc.extensionUtils.getCurrentExtension();
+const Utils = Me.imports.utils;
+
+// A good compromise between reactivity and efficiency; to be tuned.
+const INTELLIHIDE_CHECK_INTERVAL = 100;
+
+const OverlapStatus = {
+    UNDEFINED: -1,
+    FALSE: 0,
+    TRUE: 1
+};
+
+const IntellihideMode = {
+    ALL_WINDOWS: 0,
+    FOCUS_APPLICATION_WINDOWS: 1,
+    MAXIMIZED_WINDOWS : 2
+};
+
+// List of windows type taken into account. Order is important (keep the original
+// enum order).
+const handledWindowTypes = [
+    Meta.WindowType.NORMAL,
+    Meta.WindowType.DOCK,
+    Meta.WindowType.DIALOG,
+    Meta.WindowType.MODAL_DIALOG,
+    Meta.WindowType.TOOLBAR,
+    Meta.WindowType.MENU,
+    Meta.WindowType.UTILITY,
+    Meta.WindowType.SPLASHSCREEN
+];
+
+/**
+ * A rough and ugly implementation of the intellihide behaviour.
+ * Intallihide object: emit 'status-changed' signal when the overlap of windows
+ * with the provided targetBoxClutter.ActorBox changes;
+ */
+const Intellihide = new Lang.Class({
+    Name: 'DashToDock.Intellihide',
+
+    _init: function(settings, monitorIndex) {
+        // Load settings
+        this._settings = settings;
+        this._monitorIndex = monitorIndex;
+
+        this._signalsHandler = new Utils.GlobalSignalsHandler();
+        this._tracker = Shell.WindowTracker.get_default();
+        this._focusApp = null; // The application whose window is focused.
+        this._topApp = null; // The application whose window is on top on the monitor with the dock.
+
+        this._isEnabled = false;
+        this.status = OverlapStatus.UNDEFINED;
+        this._targetBox = null;
+
+        this._checkOverlapTimeoutContinue = false;
+        this._checkOverlapTimeoutId = 0;
+
+        this._trackedWindows = new Map();
+
+        // Connect global signals
+        this._signalsHandler.add([
+            // Add signals on windows created from now on
+            global.display,
+            'window-created',
+            Lang.bind(this, this._windowCreated)
+        ], [
+            // triggered for instance when the window list order changes,
+            // included when the workspace is switched
+            global.screen,
+            'restacked',
+            Lang.bind(this, this._checkOverlap)
+        ], [
+            // when windows are alwasy on top, the focus window can change
+            // without the windows being restacked. Thus monitor window focus change.
+            this._tracker,
+            'notify::focus-app',
+            Lang.bind(this, this._checkOverlap)
+        ], [
+            // update wne monitor changes, for instance in multimonitor when monitor are attached
+            global.screen,
+            'monitors-changed',
+            Lang.bind(this, this._checkOverlap )
+        ]);
+    },
+
+    destroy: function() {
+        // Disconnect global signals
+        this._signalsHandler.destroy();
+
+        // Remove  residual windows signals
+        this.disable();
+    },
+
+    enable: function() {
+        this._isEnabled = true;
+        this._status = OverlapStatus.UNDEFINED;
+        global.get_window_actors().forEach(function(wa) {
+            this._addWindowSignals(wa);
+        }, this);
+        this._doCheckOverlap();
+    },
+
+    disable: function() {
+        this._isEnabled = false;
+
+        for (let wa of this._trackedWindows.keys()) {
+            this._removeWindowSignals(wa);
+        }
+        this._trackedWindows.clear();
+
+        if (this._checkOverlapTimeoutId > 0) {
+            Mainloop.source_remove(this._checkOverlapTimeoutId);
+            this._checkOverlapTimeoutId = 0;
+        }
+    },
+
+    _windowCreated: function(display, metaWindow) {
+        this._addWindowSignals(metaWindow.get_compositor_private());
+    },
+
+    _addWindowSignals: function(wa) {
+        if (!this._handledWindow(wa))
+            return;
+        let signalId = wa.connect('allocation-changed', Lang.bind(this, this._checkOverlap, wa.get_meta_window()));
+        this._trackedWindows.set(wa, signalId);
+        wa.connect('destroy', Lang.bind(this, this._removeWindowSignals));
+    },
+
+    _removeWindowSignals: function(wa) {
+        if (this._trackedWindows.get(wa)) {
+           wa.disconnect(this._trackedWindows.get(wa));
+           this._trackedWindows.delete(wa);
+        }
+
+    },
+
+    updateTargetBox: function(box) {
+        this._targetBox = box;
+        this._checkOverlap();
+    },
+
+    forceUpdate: function() {
+        this._status = OverlapStatus.UNDEFINED;
+        this._doCheckOverlap();
+    },
+
+    getOverlapStatus: function() {
+        return (this._status == OverlapStatus.TRUE);
+    },
+
+    _checkOverlap: function() {
+        if (!this._isEnabled || (this._targetBox == null))
+            return;
+
+        /* Limit the number of calls to the doCheckOverlap function */
+        if (this._checkOverlapTimeoutId) {
+            this._checkOverlapTimeoutContinue = true;
+            return
+        }
+
+        this._doCheckOverlap();
+
+        this._checkOverlapTimeoutId = Mainloop.timeout_add(INTELLIHIDE_CHECK_INTERVAL, Lang.bind(this, function() {
+            this._doCheckOverlap();
+            if (this._checkOverlapTimeoutContinue) {
+                this._checkOverlapTimeoutContinue = false;
+                return GLib.SOURCE_CONTINUE;
+            } else {
+                this._checkOverlapTimeoutId = 0;
+                return GLib.SOURCE_REMOVE;
+            }
+        }));
+    },
+
+    _doCheckOverlap: function() {
+
+        if (!this._isEnabled || (this._targetBox == null))
+            return;
+
+        let overlaps = OverlapStatus.FALSE;
+        let windows = global.get_window_actors();
+
+        if (windows.length > 0) {
+            /*
+             * Get the top window on the monitor where the dock is placed.
+             * The idea is that we dont want to overlap with the windows of the topmost application,
+             * event is it's not the focused app -- for instance because in multimonitor the user
+             * select a window in the secondary monitor.
+             */
+
+            let topWindow = null;
+            for (let i = windows.length - 1; i >= 0; i--) {
+                let meta_win = windows[i].get_meta_window();
+                if (this._handledWindow(windows[i]) && (meta_win.get_monitor() == this._monitorIndex)) {
+                    topWindow = meta_win;
+                    break;
+                }
+            }
+
+            if (topWindow !== null) {
+                this._topApp = this._tracker.get_window_app(topWindow);
+                // If there isn't a focused app, use that of the window on top
+                this._focusApp = this._tracker.focus_app || this._topApp
+
+                windows = windows.filter(this._intellihideFilterInteresting, this);
+
+                for (let i = 0;  i < windows.length; i++) {
+                    let win = windows[i].get_meta_window();
+
+                    if (win) {
+                        let rect = win.get_frame_rect();
+
+                        let test = (rect.x < this._targetBox.x2) &&
+                                   (rect.x + rect.width > this._targetBox.x1) &&
+                                   (rect.y < this._targetBox.y2) &&
+                                   (rect.y + rect.height > this._targetBox.y1);
+
+                        if (test) {
+                            overlaps = OverlapStatus.TRUE;
+                            break;
+                        }
+                    }
+                }
+            }
+        }
+
+        if (this._status !== overlaps) {
+            this._status = overlaps;
+            this.emit('status-changed', this._status);
+        }
+
+    },
+
+    // Filter interesting windows to be considered for intellihide.
+    // Consider all windows visible on the current workspace.
+    // Optionally skip windows of other applications
+    _intellihideFilterInteresting: function(wa) {
+        let meta_win = wa.get_meta_window();
+        if (!this._handledWindow(wa))
+            return false;
+
+        let currentWorkspace = global.screen.get_active_workspace_index();
+        let wksp = meta_win.get_workspace();
+        let wksp_index = wksp.index();
+
+        // Depending on the intellihide mode, exclude non-relevent windows
+        switch (this._settings.get_enum('intellihide-mode')) {
+            case IntellihideMode.ALL_WINDOWS:
+                // Do nothing
+                break;
+
+            case IntellihideMode.FOCUS_APPLICATION_WINDOWS:
+                // Skip windows of other apps
+                if (this._focusApp) {
+                    // The DropDownTerminal extension is not an application per se
+                    // so we match its window by wm class instead
+                    if (meta_win.get_wm_class() == 'DropDownTerminalWindow')
+                        return true;
+
+                    let currentApp = this._tracker.get_window_app(meta_win);
+                    let focusWindow = global.display.get_focus_window()
+
+                    // Consider half maximized windows side by side
+                    // and windows which are alwayson top
+                    if((currentApp != this._focusApp) && (currentApp != this._topApp)
+                        && !((focusWindow && focusWindow.maximized_vertically && !focusWindow.maximized_horizontally)
+                              && (meta_win.maximized_vertically && !meta_win.maximized_horizontally)
+                              && meta_win.get_monitor() == focusWindow.get_monitor())
+                        && !meta_win.is_above())
+                        return false;
+                }
+                break;
+
+            case IntellihideMode.MAXIMIZED_WINDOWS:
+                // Skip unmaximized windows
+                if (!meta_win.maximized_vertically && !meta_win.maximized_horizontally)
+                    return false;
+                break;
+        }
+
+        if ( wksp_index == currentWorkspace && meta_win.showing_on_its_workspace() )
+            return true;
+        else
+            return false;
+
+    },
+
+    // Filter windows by type
+    // inspired by Opacify@gnome-shell.localdomain.pl
+    _handledWindow: function(wa) {
+        let metaWindow = wa.get_meta_window();
+
+        if (!metaWindow)
+            return false;
+
+        // The DropDownTerminal extension uses the POPUP_MENU window type hint
+        // so we match its window by wm class instead
+        if (metaWindow.get_wm_class() == 'DropDownTerminalWindow')
+            return true;
+
+        let wtype = metaWindow.get_window_type();
+        for (let i = 0; i < handledWindowTypes.length; i++) {
+            var hwtype = handledWindowTypes[i];
+            if (hwtype == wtype)
+                return true;
+            else if (hwtype > wtype)
+                return false;
+        }
+        return false;
+    }
+});
+
+Signals.addSignalMethods(Intellihide.prototype);
diff --git a/package/media/logo.svg b/package/media/logo.svg
new file mode 100644
index 0000000000000000000000000000000000000000..eebd0b1d50b439863889911d35a792b4a5979101
--- /dev/null
+++ b/package/media/logo.svg
@@ -0,0 +1,528 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="33.866665mm"
+   height="33.866684mm"
+   viewBox="0 0 33.866665 33.866683"
+   id="svg5179"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="logo.svg">
+  <defs
+     id="defs5181">
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath4379-92-4-9-6-8-0">
+      <rect
+         style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.83189655;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;enable-background:accumulate"
+         id="rect4381-17-7-5-2-0-6"
+         width="19.934219"
+         height="33.52573"
+         x="356.02826"
+         y="457.71631" />
+    </clipPath>
+    <filter
+       style="color-interpolation-filters:sRGB"
+       inkscape:collect="always"
+       id="filter4435-8-5-3-2-13-8"
+       x="-0.22881356"
+       width="1.4576271"
+       y="-0.22881356"
+       height="1.4576271">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="1.0352993"
+         id="feGaussianBlur4437-6-7-9-8-8-1" />
+    </filter>
+    <filter
+       style="color-interpolation-filters:sRGB"
+       inkscape:collect="always"
+       id="filter4365-71-5-7-0-6-2"
+       x="-0.21864407"
+       width="1.437288"
+       y="-0.21864407"
+       height="1.437288">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.98928601"
+         id="feGaussianBlur4367-74-5-92-0-6-5" />
+    </filter>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath4379-6-7-5-8-6-01-2">
+      <rect
+         style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.83189655;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;enable-background:accumulate"
+         id="rect4381-1-8-5-2-0-2-7"
+         width="19.934219"
+         height="33.52573"
+         x="356.02826"
+         y="457.71631" />
+    </clipPath>
+    <filter
+       style="color-interpolation-filters:sRGB"
+       inkscape:collect="always"
+       id="filter4435-6-1-2-8-2-2-7"
+       x="-0.22881356"
+       width="1.4576271"
+       y="-0.22881356"
+       height="1.4576271">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="1.0352993"
+         id="feGaussianBlur4437-1-1-3-60-1-4-4" />
+    </filter>
+    <filter
+       style="color-interpolation-filters:sRGB"
+       inkscape:collect="always"
+       id="filter4365-4-5-2-24-7-3-3"
+       x="-0.21864407"
+       width="1.437288"
+       y="-0.21864407"
+       height="1.437288">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.98928601"
+         id="feGaussianBlur4367-7-0-7-7-9-0-3" />
+    </filter>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath4379-5-6-0-9-8-7-9">
+      <rect
+         style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.83189655;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;enable-background:accumulate"
+         id="rect4381-6-8-5-9-9-2-4"
+         width="19.934219"
+         height="33.52573"
+         x="356.02826"
+         y="457.71631" />
+    </clipPath>
+    <filter
+       style="color-interpolation-filters:sRGB"
+       inkscape:collect="always"
+       id="filter4435-63-9-2-4-1-2-6"
+       x="-0.22881356"
+       width="1.4576271"
+       y="-0.22881356"
+       height="1.4576271">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="1.0352993"
+         id="feGaussianBlur4437-0-5-6-8-8-9-9" />
+    </filter>
+    <filter
+       style="color-interpolation-filters:sRGB"
+       inkscape:collect="always"
+       id="filter4365-2-4-3-6-3-1-7"
+       x="-0.21864407"
+       width="1.437288"
+       y="-0.21864407"
+       height="1.437288">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.98928601"
+         id="feGaussianBlur4367-1-2-5-3-5-8-3" />
+    </filter>
+    <filter
+       inkscape:collect="always"
+       style="color-interpolation-filters:sRGB"
+       id="filter4255"
+       x="-0.20374454"
+       width="1.4074891"
+       y="-0.13779147"
+       height="1.2755829">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.25863247"
+         id="feGaussianBlur4257" />
+    </filter>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="8"
+     inkscape:cx="60.090739"
+     inkscape:cy="60.108985"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1861"
+     inkscape:window-height="1023"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata5184">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(136.97858,-11.552354)">
+    <rect
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#0055d4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;enable-background:accumulate"
+       id="rect4006-4-6-9-2-0-6"
+       width="33.83363"
+       height="33.859909"
+       x="-136.9473"
+       y="11.552354"
+       inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+       inkscape:export-xdpi="44.99099"
+       inkscape:export-ydpi="44.99099" />
+    <path
+       inkscape:connector-curvature="0"
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.15440008;marker:none;filter:url(#filter4365-3);enable-background:accumulate"
+       d="m -130.12265,11.559157 c -4.30029,5.691881 -6.67207,12.608761 -6.82289,19.674442 -0.0115,0.54232 -0.0147,1.0766 0,1.62024 0.11433,4.23572 1.04846,8.50668 2.82497,12.565201 l 31.00865,0 0,-33.859883 -27.01073,0 z"
+       id="path6097-2-6-0-89-4"
+       inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+       inkscape:export-xdpi="44.99099"
+       inkscape:export-ydpi="44.99099" />
+    <path
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;enable-background:accumulate"
+       d="m -136.9473,18.430158 0,0.7896 0,20.641361 0,0.7896 1.23782,0 2.26288,0 1.60528,0 c 0.68577,0 1.23783,-0.3548 1.23783,-0.7896 l 0,-20.641361 c 0,-0.4398 -0.55206,-0.7896 -1.23783,-0.7896 l -1.60528,0 -2.26288,0 z"
+       id="rect4008-7-9-2-0-3-4"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccssssccc"
+       inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+       inkscape:export-xdpi="44.99099"
+       inkscape:export-ydpi="44.99099" />
+    <path
+       inkscape:connector-curvature="0"
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.15;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.15440008;marker:none;filter:url(#filter4365-3);enable-background:accumulate"
+       d="m -119.36792,11.559157 c -10.47023,5.721881 -17.57762,16.847401 -17.57762,29.627402 0,1.43804 0.0897,2.841801 0.26432,4.232481 l 33.5693,0 0,-33.859883 -16.256,0 z"
+       id="path6097-4-5-23-9"
+       inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+       inkscape:export-xdpi="44.99099"
+       inkscape:export-ydpi="44.99099" />
+    <rect
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;enable-background:accumulate"
+       id="rect4247-4-4-5-3-8-1"
+       width="33.83363"
+       height="2.1162443"
+       x="-136.9473"
+       y="11.552354"
+       inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+       inkscape:export-xdpi="44.99099"
+       inkscape:export-ydpi="44.99099" />
+    <path
+       inkscape:connector-curvature="0"
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;enable-background:accumulate"
+       d="m -103.11365,13.668597 0,1.05812 c 0,-0.58196 -0.47338,-1.05812 -1.05731,-1.05812 l 1.05731,0 z"
+       id="rect4272-0-7-8-1-1-3-3-1"
+       inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+       inkscape:export-xdpi="44.99099"
+       inkscape:export-ydpi="44.99099" />
+    <rect
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;enable-background:accumulate"
+       id="rect4031-9-9-2-4-2-5"
+       width="4.2292037"
+       height="4.2324886"
+       x="-135.89"
+       y="19.488146"
+       rx="1.0583334"
+       ry="1.0583334"
+       inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+       inkscape:export-xdpi="44.99099"
+       inkscape:export-ydpi="44.99099" />
+    <path
+       inkscape:connector-curvature="0"
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;enable-background:accumulate"
+       d="m -136.94728,13.668597 0,1.05812 c 0,-0.58196 0.47337,-1.05812 1.0573,-1.05812 l -1.0573,0 z"
+       id="rect4272-0-2-1-74-41-1-6"
+       inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+       inkscape:export-xdpi="44.99099"
+       inkscape:export-ydpi="44.99099" />
+    <g
+       id="g4353-9-2-1-5-5-4"
+       transform="matrix(0.10331261,0,0,0.10339285,-173.76079,-27.453246)"
+       clip-path="url(#clipPath4379-92-4-9-6-8-0)"
+       inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+       inkscape:export-xdpi="44.99099"
+       inkscape:export-ydpi="44.99099">
+      <circle
+         r="5.4295697"
+         cy="477.71164"
+         cx="274.13016"
+         transform="matrix(0.94749688,0,0,0.94749688,96.290796,21.848877)"
+         id="path3153-1-7-3-5-60-3-6"
+         style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.42241378;fill:#d7eef4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;filter:url(#filter4435-8-5-3-2-13-8);enable-background:accumulate" />
+      <circle
+         r="5.4295697"
+         cy="477.71164"
+         cx="274.13016"
+         transform="matrix(0.24231546,0,0,0.24231546,289.60229,358.72226)"
+         id="path3153-2-4-1-6-6-9-4-1"
+         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#d7eef4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;filter:url(#filter4365-71-5-7-0-6-2);enable-background:accumulate" />
+    </g>
+    <g
+       id="g4589-4-1-1-3-6-2"
+       transform="matrix(0.49926208,0,0,0.49964988,-318.21072,-206.05794)"
+       inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+       inkscape:export-xdpi="44.99099"
+       inkscape:export-ydpi="44.99099">
+      <g
+         clip-path="url(#clipPath4379-6-7-5-8-6-01-2)"
+         transform="matrix(0.20693061,0,0,0.20693061,289.32686,368.5622)"
+         id="g4353-66-1-4-2-6-94-5">
+        <circle
+           r="5.4295697"
+           cy="477.71164"
+           cx="274.13016"
+           style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.42241378;fill:#d7eef4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;filter:url(#filter4435-6-1-2-8-2-2-7);enable-background:accumulate"
+           id="path3153-1-6-4-5-63-7-1-0"
+           transform="matrix(0.94749688,0,0,0.94749688,96.290796,21.848877)" />
+        <circle
+           r="5.4295697"
+           cy="477.71164"
+           cx="274.13016"
+           style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#d7eef4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;filter:url(#filter4365-4-5-2-24-7-3-3);enable-background:accumulate"
+           id="path3153-2-4-7-6-5-8-5-9-5"
+           transform="matrix(0.24231546,0,0,0.24231546,289.60229,358.72226)" />
+      </g>
+      <g
+         clip-path="url(#clipPath4379-5-6-0-9-8-7-9)"
+         transform="matrix(0.20693061,0,0,0.20693061,289.32686,367.53449)"
+         id="g4353-7-2-2-6-4-5-1">
+        <circle
+           r="5.4295697"
+           cy="477.71164"
+           cx="274.13016"
+           style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.42241378;fill:#d7eef4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;filter:url(#filter4435-63-9-2-4-1-2-6);enable-background:accumulate"
+           id="path3153-1-19-3-1-5-5-7-8"
+           transform="matrix(0.94749688,0,0,0.94749688,96.290796,21.848877)" />
+        <circle
+           r="5.4295697"
+           cy="477.71164"
+           cx="274.13016"
+           style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#d7eef4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;filter:url(#filter4365-2-4-3-6-3-1-7);enable-background:accumulate"
+           id="path3153-2-4-5-7-9-9-9-7-6"
+           transform="matrix(0.24231546,0,0,0.24231546,289.60229,358.72226)" />
+      </g>
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:1.28805089px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
+       x="-124.44726"
+       y="13.10139"
+       id="text4824-5-2-0-4-8"
+       sodipodi:linespacing="125%"
+       inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+       inkscape:export-xdpi="44.99099"
+       inkscape:export-ydpi="44.99099"
+       transform="scale(0.99961185,1.0003883)"><tspan
+         sodipodi:role="line"
+         id="tspan4826-16-3-8-8-1"
+         x="-124.44726"
+         y="13.10139">Dash to Dock</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:1.28805089px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
+       x="-136.50272"
+       y="13.10139"
+       id="text4824-8-8-6-8-7-4"
+       sodipodi:linespacing="125%"
+       inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+       inkscape:export-xdpi="44.99099"
+       inkscape:export-ydpi="44.99099"
+       transform="scale(0.99961185,1.0003883)"><tspan
+         sodipodi:role="line"
+         id="tspan4826-1-7-7-5-07-5"
+         x="-136.50272"
+         y="13.10139">Michele</tspan></text>
+    <rect
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;enable-background:accumulate"
+       id="rect4031-9-0-8-5-4-0-7-6"
+       width="4.2292037"
+       height="4.2324886"
+       x="-135.89"
+       y="24.778917"
+       rx="1.0583334"
+       ry="1.0583334"
+       inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+       inkscape:export-xdpi="44.99099"
+       inkscape:export-ydpi="44.99099" />
+    <rect
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;enable-background:accumulate"
+       id="rect4031-9-0-7-3-3-6-0-1"
+       width="4.2292037"
+       height="4.2324886"
+       x="-135.89"
+       y="30.069445"
+       rx="1.0583334"
+       ry="1.0583334"
+       inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+       inkscape:export-xdpi="44.99099"
+       inkscape:export-ydpi="44.99099" />
+    <rect
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;enable-background:accumulate"
+       id="rect4031-9-0-6-5-1-3-9-0"
+       width="4.2292037"
+       height="4.2324886"
+       x="-135.89"
+       y="35.359974"
+       rx="1.0583334"
+       ry="1.0583334"
+       inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+       inkscape:export-xdpi="44.99099"
+       inkscape:export-ydpi="44.99099" />
+    <path
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.5;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;enable-background:accumulate"
+       d="m -136.9473,17.901078 0,0.52908 2.42849,0 2.21372,0 c 0.94338,0 1.7016,0.3372 1.7016,0.77704 l 0,20.649921 c 0,0.43476 -0.75822,0.7936 -1.7016,0.7936 l -2.21372,0 -2.42849,0 0,0.52904 0.90862,0 2.64325,0 1.88332,0 c 0.80005,0 1.43727,-0.3712 1.43727,-0.82664 l 0,-21.625361 c 0,-0.46072 -0.63722,-0.82668 -1.43727,-0.82668 l -1.88332,0 -2.64325,0 z"
+       id="rect4008-7-0-0-3-3-3-7-9"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccsssscccccssssccc"
+       inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+       inkscape:export-xdpi="44.99099"
+       inkscape:export-ydpi="44.99099" />
+    <path
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;enable-background:accumulate"
+       d="m -136.9473,17.901078 0,0.52908 2.42849,0 2.21372,0 c 0.94338,0 1.7016,0.3372 1.7016,0.77704 l 0,20.649921 c 0,0.43476 -0.75822,0.7936 -1.7016,0.7936 l -2.21372,0 -2.42849,0 0,0.52904 0.90862,0 2.64325,0 1.88332,0 c 0.80005,0 1.43727,-0.3712 1.43727,-0.82664 l 0,-21.625361 c 0,-0.46072 -0.63722,-0.82668 -1.43727,-0.82668 l -1.88332,0 -2.64325,0 z"
+       id="rect4008-7-0-0-3-1-5-0-5-5"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccsssscccccssssccc"
+       inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+       inkscape:export-xdpi="44.99099"
+       inkscape:export-ydpi="44.99099" />
+    <rect
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;filter:url(#filter4365-3);enable-background:accumulate"
+       id="rect6777-7-9-6-9-8"
+       width="20.108335"
+       height="18.256252"
+       x="-125.24149"
+       y="19.139757"
+       inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+       inkscape:export-xdpi="45"
+       inkscape:export-ydpi="45" />
+    <rect
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+       id="rect4923-8-7-8-2"
+       width="3.7041669"
+       height="3.7041669"
+       x="-116.71888"
+       y="30.163927"
+       rx="1.0583334"
+       ry="1.0583334" />
+    <path
+       inkscape:connector-curvature="0"
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.15;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;filter:url(#filter4365-3);enable-background:accumulate"
+       d="m -111.94623,19.146638 c -5.49508,1.3884 -10.21465,5.00036 -13.29531,9.92188 l 0,8.334361 20.10833,0 0,-18.256241 -6.81302,0 z"
+       id="path6862-84-2-2-6-7"
+       inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+       inkscape:export-xdpi="45"
+       inkscape:export-ydpi="45" />
+    <path
+       inkscape:connector-curvature="0"
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;filter:url(#filter4365-3);enable-background:accumulate"
+       d="m -125.02657,18.882038 c -0.11728,0 -0.21496,0.0812 -0.21496,0.1984 l 0,0.44648 0,1.2568 0,0.2148 0.21496,0 19.67838,0 0.215,0 0,-0.2148 0,-1.2568 0,-0.44648 c 0,-0.1172 -0.0977,-0.1984 -0.215,-0.1984 l -19.67838,0 z"
+       id="rect6779-5-8-6-4-6"
+       inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+       inkscape:export-xdpi="45"
+       inkscape:export-ydpi="45" />
+    <rect
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;filter:url(#filter4365-3);enable-background:accumulate"
+       id="rect6779-2-3-9-9-0-8"
+       width="20.108335"
+       height="0.5291667"
+       x="-125.24149"
+       y="20.991808"
+       inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+       inkscape:export-xdpi="45"
+       inkscape:export-ydpi="45" />
+    <rect
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;filter:url(#filter4365-3);enable-background:accumulate"
+       id="rect6779-2-4-8-0-7-1-1"
+       width="15.875001"
+       height="0.5291667"
+       x="21.521105"
+       y="105.13315"
+       transform="rotate(90)"
+       inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+       inkscape:export-xdpi="45"
+       inkscape:export-ydpi="45" />
+    <g
+       id="g6839-1-5-1-33-0"
+       transform="matrix(0.02002288,0.02002284,-0.02002288,0.02002284,-106.62848,-6.0229242)"
+       style="fill:#1a1a1a"
+       inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+       inkscape:export-xdpi="45"
+       inkscape:export-ydpi="45">
+      <rect
+         y="616.07727"
+         x="653.01312"
+         height="41.542522"
+         width="11.313708"
+         id="rect6819-8-9-2-56-9"
+         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;filter:url(#filter4365-3);enable-background:accumulate" />
+      <rect
+         transform="rotate(90)"
+         y="-679.44122"
+         x="631.19165"
+         height="41.542522"
+         width="11.313708"
+         id="rect6819-3-9-4-3-1-5"
+         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;filter:url(#filter4365-3);enable-background:accumulate" />
+    </g>
+    <rect
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+       id="rect4923-6-8-9-1"
+       width="3.7041669"
+       height="3.7041669"
+       x="-123.59805"
+       y="30.163927"
+       rx="1.0583334"
+       ry="1.0583334" />
+    <path
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.26458335;stroke-miterlimit:4;stroke-dasharray:none;marker:none;enable-background:accumulate;opacity:0.866;filter:url(#filter4255)"
+       d="m -121.46776,32.043964 -5e-4,1.742839 -4.9e-4,1.742839 0.71518,-0.708051 0.99716,1.727136 1.33421,-0.770304 -0.99542,-1.724104 0.96903,-0.268366 -1.50959,-0.870995 z"
+       id="path6155-6-0-01-4-5-6-0-0"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccc" />
+    <path
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.13229167;stroke-miterlimit:4;stroke-dasharray:none;marker:none;filter:url(#filter4365-3);enable-background:accumulate"
+       d="m -121.86464,32.043964 -5e-4,1.742839 -4.9e-4,1.742839 0.71518,-0.708051 1.05563,1.8284 1.3342,-0.770304 -1.05388,-1.825368 0.96903,-0.268366 -1.50959,-0.870995 z"
+       id="path6155-6-0-8-0-7-97-5"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccc" />
+    <rect
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+       id="rect4923-4-8-4"
+       width="3.7041669"
+       height="3.7041669"
+       x="-123.59805"
+       y="23.020128"
+       rx="1.0583334"
+       ry="1.0583334" />
+    <rect
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+       id="rect4923-2-6-7-8"
+       width="3.7041669"
+       height="3.7041669"
+       x="-116.71888"
+       y="23.020128"
+       rx="1.0583334"
+       ry="1.0583334" />
+  </g>
+</svg>
diff --git a/package/media/screenshot.jpg b/package/media/screenshot.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..1707cce7f457bab069efbadcb32a2e5b51c7d17e
Binary files /dev/null and b/package/media/screenshot.jpg differ
diff --git a/package/metadata.json b/package/metadata.json
new file mode 100644
index 0000000000000000000000000000000000000000..0ab15c68e463a425f737455741bb50bff6dba062
--- /dev/null
+++ b/package/metadata.json
@@ -0,0 +1,10 @@
+{
+"shell-version": ["3.18", "3.20", "3.22", "3.24"],
+"uuid": "dash-to-dock@micxgx.gmail.com",
+"name": "Dash to Dock",
+"description": "A dock for the Gnome Shell. This extension moves the dash out of the overview transforming it in a dock for an easier launching of applications and a faster switching between windows and desktops. Side and bottom placement options are available.",
+"original-author": "micxgx@gmail.com",
+"url": "https://micheleg.github.io/dash-to-dock/",
+"gettext-domain": "dashtodock",
+"version": -1
+}
diff --git a/package/po/ar.po b/package/po/ar.po
new file mode 100644
index 0000000000000000000000000000000000000000..1ef4b364ee65f9a05554bf7d87883ee09c145a00
--- /dev/null
+++ b/package/po/ar.po
@@ -0,0 +1,554 @@
+# 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.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2015-04-18 18:01+0100\n"
+"Last-Translator: Jean-Baptiste Le Cz <jb.lecoz@gmail.com>\n"
+"Language-Team: Faissal Chamekh <chamfay@gmail.com>\n"
+"Language: ar_DZ\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
+"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n"
+"X-Generator: Poedit 1.7.5\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "الشاشة الرئيسية"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "الشاشة الثانوية"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "يمين"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "يسار"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "تخصيص الإخفاء التلقائي"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "العودة للافتراضي"
+
+#: prefs.js:386
+#, fuzzy
+msgid "Show dock and application numbers"
+msgstr "أظهر التطبيقات قيد التشغيل"
+
+#: prefs.js:443
+#, fuzzy
+msgid "Customize middle-click behavior"
+msgstr "خصّص الإعتام"
+
+#: prefs.js:514
+#, fuzzy
+msgid "Customize running indicators"
+msgstr "أظهر التطبيقات قيد التشغيل"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr ""
+
+#: Settings.ui.h:1
+#, fuzzy
+msgid "Customize indicator style"
+msgstr "خصّص الإعتام"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr ""
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr ""
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr ""
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr ""
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+
+#: Settings.ui.h:7
+#, fuzzy
+msgid "Show the dock if it is hidden"
+msgstr "أظهر المرساة فوق"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr ""
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr ""
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "زمن الاختفاء (ثا)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "حدث Shift+Click"
+
+#: Settings.ui.h:14
+#, fuzzy
+msgid "Raise window"
+msgstr "صغّر النافذة"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "صغّر النافذة"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "شغّل نسخة جديدة"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "التبديل بين النوافذ"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr ""
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:20
+#, fuzzy
+msgid "Middle-Click action"
+msgstr "حدث النقر"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:22
+#, fuzzy
+msgid "Shift+Middle-Click action"
+msgstr "حدث Shift+Click"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "أظهر المرساة فوق"
+
+#: Settings.ui.h:24
+#, fuzzy
+msgid "Show on all monitors."
+msgstr "الشاشة الثانوية"
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "الموضع على الشاشة"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "أسفل"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "أعلى"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the the current application. "
+"More refined settings are available."
+msgstr "إخفاء المرساة عندما تحجب نافذة التطبيق الحالي. تخصيصات أكثر متوفرة."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "إخفاء تلقائي ذكي"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "حدّ حجم المرساة"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "نمط الشريط: تمديد إلى حواف الشاشة"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "حدّ حجم الأيقونة"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "حجم أيقونات ثابت: استعمل التمرير لكشف أيقونات أخرى"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "الموضع والحجم"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "أظهر التطبيقات المفضّلة"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "أظهر التطبيقات قيد التشغيل"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr ""
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr ""
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+
+#: Settings.ui.h:42
+#, fuzzy
+msgid "Show <i>Applications</i> icon"
+msgstr "أظهر أيقونة التطبيقات أولا"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr ""
+
+#: Settings.ui.h:44
+#, fuzzy
+msgid "Animate <i>Show Applications</i>."
+msgstr "أظهر أيقونة التطبيقات أولا"
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr ""
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr ""
+
+#: Settings.ui.h:48
+#, fuzzy
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "التصرّف عن النقر على أيقونة التطبيق قيد التشغيل."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "حدث النقر"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "صغّر"
+
+#: Settings.ui.h:51
+#, fuzzy
+msgid "Minimize or overview"
+msgstr "صغّر النافذة"
+
+#: Settings.ui.h:52
+#, fuzzy
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "التصرّف عن النقر على أيقونة التطبيق قيد التشغيل."
+
+#: Settings.ui.h:53
+#, fuzzy
+msgid "Scroll action"
+msgstr "حدث النقر"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "لا تفعل شيئا"
+
+#: Settings.ui.h:55
+#, fuzzy
+msgid "Switch workspace"
+msgstr "تبديل مساحة عمل واحدة في نفس الوقت"
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "السلوك"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "استعمل السمة المضمّنة"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr ""
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "تقليص المرساة"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "أظهر نقطة لكل نوافذة من التطبيق."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "أظهر مؤشرات عدد النوافذ"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr ""
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr ""
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "ضبط إعتام خلفية المرساة."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "خصّص الإعتام"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "العتمة"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr ""
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "المظهر"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "الإصدار:"
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr ""
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "أنشئ من طرف"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr ""
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"See the <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, version 2 or later</a> for details.</span>"
+msgstr ""
+"<span size=\"small\">هذا البرنامج يأتي بدون أي ضمانات.\n"
+"لمزيد من المعلومات أنظر <a href=\"https://www.gnu.org/licenses/old-licenses/"
+"gpl-2.0.html\">رخصة غنو العمومية، الإصدارة 2 فما فوق.</span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "حول"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "أظهر المرساة بتمرير الفأرة على حافة النافذة"
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "إخفاء تلقائي"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "اضغط للإظهار: يتطلب ضغطا لإظهار المرساة"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr ""
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "إظهار المرساة عندما لا تحجب نوافذ التطبيق."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr ""
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr ""
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr ""
+
+#: Settings.ui.h:86
+#, fuzzy
+msgid "Only maximized windows"
+msgstr "صغّر النافذة"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "مدة التحريك (ثا)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "زمن الظهور (ثا)"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "عتبة الضغط"
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "بدّل مساحة العمل عند التمرير فوق المرساة"
+
+#~ msgid "Main Settings"
+#~ msgstr "الخصائص الأساسية"
+
+#~ msgid "Dock Position"
+#~ msgstr "موضع المرساة"
+
+#~ msgid "Dock is fixed and always visible"
+#~ msgstr "المرساة ثابتة وظاهرة دائما"
+
+#~ msgid "Show delay [ms]"
+#~ msgstr "تأخير الظهور (ميلي ثانية)"
+
+#~ msgid "Hide delay [ms]"
+#~ msgstr "تأخير الإخفاء (ميلي ثانية)"
+
+#~ msgid "Application based intellihide"
+#~ msgstr "إخفاء تلقائي على حسب التطبيق"
+
+#~ msgid "Show the dock on following monitor (if attached)"
+#~ msgstr "أظهر المرساة في الشاشة الحالية (إن وُصلت)"
+
+#~ msgid "Primary (default)"
+#~ msgstr "الأساسية (الافتراضي)"
+
+#~ msgid "1"
+#~ msgstr "1"
+
+#~ msgid "2"
+#~ msgstr "2"
+
+#~ msgid "3"
+#~ msgstr "3"
+
+#~ msgid "4"
+#~ msgstr "4"
+
+#~ msgid "Max height"
+#~ msgstr "الارتفاع الأقصى"
+
+#~ msgid "Expand (experimental and buggy)"
+#~ msgstr "تمديد (تجريبي)"
+
+#~ msgid "Maximum icon size"
+#~ msgstr "الحجم الأقصى للأيقونة"
+
+#~ msgid "16"
+#~ msgstr "16"
+
+#~ msgid "24"
+#~ msgstr "24"
+
+#~ msgid "32"
+#~ msgstr "32"
+
+#~ msgid "48"
+#~ msgstr "48"
+
+#~ msgid "64"
+#~ msgstr "64"
+
+#~ msgid "Optional features"
+#~ msgstr "ميزات إضافية"
+
+#~ msgid "Deadtime between each workspace switching [ms]"
+#~ msgstr "الوقت بين تبديل كل مساحة عمل"
+
+#~ msgid "Only a 1px wide area close to the screen edge is active"
+#~ msgstr "مساحة بعرض 1 بكسل فقط قريبة من حافة الشاشة هي النشطة"
+
+#~ msgid "All the area of the dock is active"
+#~ msgstr "جميع مناطق المرساة نشطة"
+
+#~ msgid "Customize actions on mouse click"
+#~ msgstr "خصّص حدث النقر على الفأرة"
+
+#~ msgid "Action on clicking on running app"
+#~ msgstr "الحدث عن النقر على تطبيق قيد التشغيل"
+
+#~ msgid "Minimize window on shift+click (double click for all app windows)"
+#~ msgstr ""
+#~ "تصغير النافذة عند النقر مع shift (الضغط المزدوج بالنسبة لكل نوافذ التطبيق)"
+
+#~ msgid "Make message tray insensitive to mouse events"
+#~ msgstr "اجعل رسالة التنبيه غير حساسة لأحداث الفأرة"
+
+#~ msgid "Appearence and Themes"
+#~ msgstr "المظهر والسمة"
+
+#~ msgid ""
+#~ "A customized theme is built in the extension. This is meant to work with "
+#~ "the default Adwaita theme: the dash is shrunk to save space, its "
+#~ "background transparency reduced, and custom indicators for the number of "
+#~ "windows of each application are added."
+#~ msgstr ""
+#~ "تم تضمين سمة مخصّصة للإضافة، هذا يعني أنها تعمل مع السمة الافتراضية "
+#~ "Adwaita: تقليص المرساة لكسب مساحة، إنقاص شفافيتها، كذلك تم إضافة مؤشرات "
+#~ "لعدد نوافذ التطبيق."
+
+#~ msgid ""
+#~ "Alternatively, for a better integration with custom themes, each "
+#~ "customization can be applied indipendently"
+#~ msgstr "بدلا من هذا، لتكاملية أفضل مع سمات مخصّصة، كل تخصيص يطبّق على حدة"
+
+#~ msgid "Shrink the dash size by reducing padding"
+#~ msgstr "مساحة المرساة بإنقاص الحشو"
+
+#~ msgid "Only when in autohide"
+#~ msgstr "Seulement en mode masquage intelligent"
diff --git a/package/po/cs.po b/package/po/cs.po
new file mode 100644
index 0000000000000000000000000000000000000000..2132485942bfc23f2dd2451aa7a716ec09b388f9
--- /dev/null
+++ b/package/po/cs.po
@@ -0,0 +1,460 @@
+# Translation for cs
+# Copyright (C) 2014 Michele
+# This file is distributed under the same license as the dash-to-dock package.
+# Jiří Doubravský <jiri.doubravsky@gmail.com>, 2015.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2015-05-21 21:17+0100\n"
+"Last-Translator: Jiří Doubravský <jiri.doubravsky@gmail.com>\n"
+"Language-Team: CZECH <jiri.doubravsky@gmail.com>\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.7.5\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Primární obrazovka"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Sekundární obrazovka"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Vpravo"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Vlevo"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Přizpůsobení chytrého skrývání"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Vrátit výchozí nastavení"
+
+#: prefs.js:386
+#, fuzzy
+msgid "Show dock and application numbers"
+msgstr "Zobrazit spuštěné aplikace"
+
+#: prefs.js:443
+#, fuzzy
+msgid "Customize middle-click behavior"
+msgstr "Volitelná průhlednost"
+
+#: prefs.js:514
+#, fuzzy
+msgid "Customize running indicators"
+msgstr "Zobrazit spuštěné aplikace"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Uhýbat oknům"
+
+#: Settings.ui.h:1
+#, fuzzy
+msgid "Customize indicator style"
+msgstr "Volitelná průhlednost"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr ""
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr ""
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr ""
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr ""
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+
+#: Settings.ui.h:7
+#, fuzzy
+msgid "Show the dock if it is hidden"
+msgstr "Kde zobrazit dok"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr ""
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr ""
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Odklad skrývání (s)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Pokud zvolíte minimalizaci, dvojté poklepání minimalizuje všechna okna "
+"aplikace."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Shift+Klik akce"
+
+#: Settings.ui.h:14
+#, fuzzy
+msgid "Raise window"
+msgstr "Minimalizovat okno"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Minimalizovat okno"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Otevřít nové okno"
+
+#: Settings.ui.h:17
+#, fuzzy
+msgid "Cycle through windows"
+msgstr "Přepínat mezi existujícími okny"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr ""
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:20
+#, fuzzy
+msgid "Middle-Click action"
+msgstr "Akce klepnutím"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:22
+#, fuzzy
+msgid "Shift+Middle-Click action"
+msgstr "Shift+Klik akce"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Kde zobrazit dok"
+
+#: Settings.ui.h:24
+#, fuzzy
+msgid "Show on all monitors."
+msgstr "Sekundární obrazovka"
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Umístění na obrazovce"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Dole"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Nahoře"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the the current application. "
+"More refined settings are available."
+msgstr ""
+"Skývat dok automaticky kdykoliv by překážel otevřenému oknu aktivní "
+"aplikace. Více možností k dispozici."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Chytré skrývání"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Maximální velikost doku"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Režim zobrazení: roztáhnout od kraje ke kraji"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Maximální velikost ikon"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Neměnná velikost ikon: rolováním je možné zobrazit další"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Umístění a velikost"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Zobrazit oblíbené aplikace"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Zobrazit spuštěné aplikace"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr ""
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr ""
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+
+#: Settings.ui.h:42
+#, fuzzy
+msgid "Show <i>Applications</i> icon"
+msgstr "<i>Zobrazit tlačítko všech aplikací</i> jako první"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Přesunout tlačítko přístupu ke všem aplikacím na začátek"
+
+#: Settings.ui.h:44
+#, fuzzy
+msgid "Animate <i>Show Applications</i>."
+msgstr "<i>Zobrazit tlačítko všech aplikací</i> jako první"
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr ""
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr ""
+
+#: Settings.ui.h:48
+#, fuzzy
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Akce klepnutím na ikonu běžící aplikace"
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Akce klepnutím"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Minimalizovat"
+
+#: Settings.ui.h:51
+#, fuzzy
+msgid "Minimize or overview"
+msgstr "Minimalizovat okno"
+
+#: Settings.ui.h:52
+#, fuzzy
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Akce klepnutím na ikonu běžící aplikace"
+
+#: Settings.ui.h:53
+#, fuzzy
+msgid "Scroll action"
+msgstr "Akce klepnutím"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Nedělat nic"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr ""
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Chování"
+
+#: Settings.ui.h:57
+#, fuzzy
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr "Výchozí motiv doku nebo alternativní přizpůsobitelný motiv."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Použít výchozí motiv doku"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Prostorově méně náročné zobrazení, zmenšením volného místa kolem ikon"
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Zmenšit panel"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Zobrazit pod ikonou tečku indikující každé otevřené okno aplikace."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Zobrazit indikátory počtu oken"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr ""
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr ""
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Nastavit průhlednost panelu."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Volitelná průhlednost"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Průhlednost"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr ""
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Vzhled"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "verze:"
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr ""
+"Verplaatst de dash naar buiten het activiteitenoverzicht zodat het een dock "
+"wordt"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Autor "
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr ""
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"See the <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, version 2 or later</a> for details.</span>"
+msgstr ""
+"<span size=\"small\">Na tento program NEJSOU POSKYTOVÁNY ZÁRUKY.\n"
+"Podrobněji viz <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0."
+"html\">GNU General Public License, verze 2 nebo pozdější</a>.</span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "O tomto doplňku"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Zobrazit dok najetím myši ke kraji obrazovky."
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Automatické skrývání"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Zatlač: k zobrazení doku je potřeba na kraj přitlačit"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr ""
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Zobrazit dok, kdykoliv sám nepřekáží spuštěným aplikacím"
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Uhýbat oknům"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Uhýbat oknům"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr ""
+
+#: Settings.ui.h:86
+#, fuzzy
+msgid "Only maximized windows"
+msgstr "Minimalizovat okno"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Délka efektů (s)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Odklad zobrazení (s)"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Míra tlaku (px)"
+
+#, fuzzy
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "Oblast po okrajích doku a tlačítko zobrazení všech aplikací jsou aktivní."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Přepínat pracovní plochy kolečkem myši nad dokem."
+
+#~ msgid "Only consider windows of the focused application"
+#~ msgstr "Brát v úvahu jen okna aktivní aplikace"
diff --git a/package/po/de.po b/package/po/de.po
new file mode 100644
index 0000000000000000000000000000000000000000..3844359287c44ef0406a6b2841af3f6907f5ce9b
--- /dev/null
+++ b/package/po/de.po
@@ -0,0 +1,589 @@
+# Translation for de
+# Copyright (C) 2014 Michele
+# This file is distributed under the same license as the dash-to-dock package.
+# Morris Jobke <hey@morrisjobke.de>, 2014.
+# Jonatan Zeidler <jonatan_zeidler@hotmail.de>, 2012
+# jonius <jonatan_zeidler@gmx.de>, 2012
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2015-10-29 14:54-0300\n"
+"Last-Translator: Jonatan Zeidler <jonatan_zeidler@gmx.de>\n"
+"Language-Team: jonius <jonatan_zeidler@gmx.de>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.7.7\n"
+
+# Konjugation wegen Stellung im Satz
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Primärer Anzeige"
+
+# Konjugation wegen Stellung im Satz
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Sekundärer Anzeige"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Rechts"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Links"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Automatisches Ausblenden anpassen"
+
+# Verwende Übersetzung aus Nautilus
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Auf Vorgaben zurücksetzen"
+
+#: prefs.js:386
+#, fuzzy
+msgid "Show dock and application numbers"
+msgstr "Laufende Anwendungen anzeigen"
+
+#: prefs.js:443
+#, fuzzy
+msgid "Customize middle-click behavior"
+msgstr "Transparenz anpassen"
+
+#: prefs.js:514
+#, fuzzy
+msgid "Customize running indicators"
+msgstr "Laufende Anwendungen anzeigen"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Alle Fenstern"
+
+#: Settings.ui.h:1
+#, fuzzy
+msgid "Customize indicator style"
+msgstr "Transparenz anpassen"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr ""
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr ""
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr ""
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr ""
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+
+#: Settings.ui.h:7
+#, fuzzy
+msgid "Show the dock if it is hidden"
+msgstr "Dock anzeigen auf"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr ""
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr ""
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Ausblende-Verzögerung in s"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Wenn auf »Minimieren« eingestellt, können durch Doppelklick alle Fenster der "
+"Anwendung gleichzeitig minimiert werden."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Wirkung bei Umschalttaste + Mausklick"
+
+#: Settings.ui.h:14
+#, fuzzy
+msgid "Raise window"
+msgstr "Minimieren"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Minimieren"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Neues Fenster"
+
+# Vielleicht einen Tick besser als „umschalten“?
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Zwischen den Fenstern der Anwendung wechseln"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr ""
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:20
+#, fuzzy
+msgid "Middle-Click action"
+msgstr "Wirkung bei Mausklick"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:22
+#, fuzzy
+msgid "Shift+Middle-Click action"
+msgstr "Wirkung bei Umschalttaste + Mausklick"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Dock anzeigen auf"
+
+# Konjugation wegen Stellung im Satz
+#: Settings.ui.h:24
+#, fuzzy
+msgid "Show on all monitors."
+msgstr "Sekundärer Anzeige"
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Position auf Bildschirm"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Unten"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Oben"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the the current application. "
+"More refined settings are available."
+msgstr ""
+"Das Dock automatisch ausblenden, falls es ein Fenster der laufenden "
+"Anwendung überlagert. Einstellungen können weiter verfeinert werden."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Automatisch ausblenden"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Maximale Dockgröße"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Panelmodus: bis zu Bildschirmkanten ausdehnen"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Maximale Icongröße"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Feste Icongröße: andere Icons durch Scrollen sichtbar machen"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Position und Größe"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Favoriten anzeigen"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Laufende Anwendungen anzeigen"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr ""
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr ""
+
+#: Settings.ui.h:41
+#, fuzzy
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Falls deaktiviert, sind diese Einstellungen über das Optimierungswerkzeug "
+"oder die Erweiterungsseite erreichbar."
+
+# Durchkopplung von Kompositum
+#: Settings.ui.h:42
+#, fuzzy
+msgid "Show <i>Applications</i> icon"
+msgstr "Symbol <i>Anwendungen anzeigen</i> anzeigen"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Anwendungen-anzeigen-Button an den Anfang verschieben."
+
+# Durchkopplung von Kompositum
+#: Settings.ui.h:44
+#, fuzzy
+msgid "Animate <i>Show Applications</i>."
+msgstr "Symbol <i>Anwendungen anzeigen</i> anzeigen"
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr ""
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr ""
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Verhalten bei Mausklick auf das Icon einer laufenden Anwendung."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Wirkung bei Mausklick"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Minimieren"
+
+#: Settings.ui.h:51
+#, fuzzy
+msgid "Minimize or overview"
+msgstr "Minimieren"
+
+#: Settings.ui.h:52
+#, fuzzy
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Verhalten bei Mausklick auf das Icon einer laufenden Anwendung."
+
+#: Settings.ui.h:53
+#, fuzzy
+msgid "Scroll action"
+msgstr "Wirkung bei Mausklick"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Nichts tun"
+
+#: Settings.ui.h:55
+#, fuzzy
+msgid "Switch workspace"
+msgstr "Nur eine Arbeitsfläche pro Scrollen weiterschalten"
+
+# Verwende Übersetzung aus Nautilus
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Verhalten"
+
+#: Settings.ui.h:57
+#, fuzzy
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Einige Anpassungen, durch die das Dock besser in das standardmäßige GNOME-"
+"Thema eingepasst werden soll. Alternativ können im Folgenden besondere "
+"Einstellungen vorgenommen werden."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Angepasstes Thema dieser Erweiterung nutzen"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Platz sparen, indem Innenabstand und Eckenradius verkleinert werden."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Dash verkleinern"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Für jedes Fenster einer Anwendung einen kleinen Indikator einblenden."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Indikatoren für Fensterzahl"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr ""
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr ""
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Die Hintergrundtransparenz des Docks einstellen."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Transparenz anpassen"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Transparenz"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr ""
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Erscheinungsbild"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "Version: "
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Verwandelt das Dash aus dem Übersichtsmodus in ein Dock"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Erstellt von"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Internetseite"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"See the <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, version 2 or later</a> for details.</span>"
+msgstr ""
+"<span size=\"small\">Für dieses Programm besteht KEINERLEI GARANTIE.\n"
+" Details finden Sie in der <a href=\"https://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html\">GNU General Public License, Version 2 oder später</"
+"a>.</span>"
+
+# Verwende Übersetzung aus Nautilus
+#: Settings.ui.h:77
+msgid "About"
+msgstr "Info"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Dock einblenden, wenn Mauszeiger an Bildschirmkante anliegt."
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Automatisch verstecken"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr ""
+"Anstoßen erforderlich: Dock nur einblenden, wenn Mauszeiger schnell gegen "
+"Bildschirmkante stößt"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr ""
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Dock einblenden, falls es keine Anwendungsfenster überlagert."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Fenstern ausweichen"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Alle Fenster"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Nur Anwendungsfenster mit Fokus"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Nur maximierte Fenster"
+
+# Nach DIN 1313 werden Einheiten nicht in Klammern gesetzt
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Animationsdauer in s"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0,000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Einblende-Verzögerung in s"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Stoßschwellwert"
+
+#, fuzzy
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "Falls es zu viele Symbole auf dem Dock werden, dann bleibt nur "
+#~ "<i>Anwendungen anzeigen</i> aktiv."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Arbeitsfläche durch Scrollen wechseln"
+
+#~ msgid "Only consider windows of the focused application"
+#~ msgstr "Nur Fenster der fokussierten Anwendung einbeziehen"
+
+#~ msgid "Main Settings"
+#~ msgstr "Grundeinstellungen"
+
+#~ msgid "Dock Position"
+#~ msgstr "Dock-Position"
+
+#~ msgid "Dock is fixed and always visible"
+#~ msgstr "Das Dock hat eine feste Position und ist immer sichtbar"
+
+#~ msgid "Show delay [ms]"
+#~ msgstr "Einblendeverzögerung [ms]"
+
+#~ msgid "Hide delay [ms]"
+#~ msgstr "Ausblendeverzögerung [ms]"
+
+#~ msgid "Application based intellihide"
+#~ msgstr "Anwendungsbasiertes intelligentes Verstecken"
+
+#~ msgid "Show the dock on following monitor (if attached)"
+#~ msgstr "Zeige Dock auf folgendem Monitor (falls angeschlossen)"
+
+#~ msgid "Primary (default)"
+#~ msgstr "Primäranzeige (Standard)"
+
+#~ msgid "1"
+#~ msgstr "1"
+
+#~ msgid "2"
+#~ msgstr "2"
+
+#~ msgid "3"
+#~ msgstr "3"
+
+#~ msgid "4"
+#~ msgstr "4"
+
+#~ msgid "Max height"
+#~ msgstr "Maximale Höhe"
+
+#~ msgid "Expand (experimental and buggy)"
+#~ msgstr "Komplette Höhe (experimentell und fehlerbehaftet)"
+
+#~ msgid "Maximum icon size"
+#~ msgstr "Maximale Symbolgröße"
+
+#~ msgid "16"
+#~ msgstr "16"
+
+#~ msgid "24"
+#~ msgstr "24"
+
+#~ msgid "32"
+#~ msgstr "32"
+
+#~ msgid "48"
+#~ msgstr "48"
+
+#~ msgid "64"
+#~ msgstr "64"
+
+#~ msgid "Optional features"
+#~ msgstr "Optionale Funktionen"
+
+#~ msgid "Deadtime between each workspace switching [ms]"
+#~ msgstr "Stillstandszeit zwischen Arbeitsflächenwechsel [ms]"
+
+#~ msgid "Only a 1px wide area close to the screen edge is active"
+#~ msgstr "Nur einen 1 Pixel-breiten Bereich am Rand nutzen"
+
+#~ msgid "All the area of the dock is active"
+#~ msgstr "Den gesamten Bereich des Docks nutzen"
+
+#~ msgid "Customize actions on mouse click"
+#~ msgstr "Aktion bei Mausklick anpassen"
+
+#~ msgid "Action on clicking on running app"
+#~ msgstr "Aktion beim Klicken auf eine laufende Anwendung"
+
+#~ msgid "Minimize window on shift+click (double click for all app windows)"
+#~ msgstr ""
+#~ "Fenster mit Shift+Klick minimieren (Doppelklick für alle Fenster der "
+#~ "Anwendung)"
+
+#~ msgid "Appearence and Themes"
+#~ msgstr "Erscheinungsbild und Themen"
+
+#~ msgid ""
+#~ "A customized theme is built in the extension. This is meant to work with "
+#~ "the default Adwaita theme: the dash is shrunk to save space, its "
+#~ "background transparency reduced, and custom indicators for the number of "
+#~ "windows of each application are added."
+#~ msgstr ""
+#~ "Ein angepasstes Thema ist in dieser Erweiterung enthalten. Es ist für das "
+#~ "Vorgabe-Adwaita-Thema gedacht: Das Dash ist schmaler, um Platz zu sparen, "
+#~ "die Hintergrundtransparenz ist reduziert und für jede Anwendung wird ein "
+#~ "Indikator für die Anzahl der Fenster eingefügt."
+
+#~ msgid ""
+#~ "Alternatively, for a better integration with custom themes, each "
+#~ "customization can be applied indipendently"
+#~ msgstr ""
+#~ "Alternativ können für eine bessere Integration Anpassungen vorgenommen "
+#~ "werden"
+
+#~ msgid "Shrink the dash size by reducing padding"
+#~ msgstr "Das Dash schmaler machen durch Verkleinern des Abstands zum Rand"
+
+#~ msgid "Apply custom theme (work only with the default Adwaita theme)"
+#~ msgstr ""
+#~ "Benutzerdefiniertes Theme verwenden (funktioniert nur mit dem Standard-"
+#~ "Adwaita-Theme)"
diff --git a/package/po/el.po b/package/po/el.po
new file mode 100644
index 0000000000000000000000000000000000000000..a20d29591889ca0184e5e129402e3f07456a3dd3
--- /dev/null
+++ b/package/po/el.po
@@ -0,0 +1,442 @@
+# 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.
+# 
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2017-05-17 15:40+0300\n"
+"Last-Translator: \n"
+"Language-Team: Δημήτριος-Ρωμανός Ησαΐας <dirosissaias@cosmotemail.gr>\n"
+"Language: el\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.1\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Κυρίως οθόνη"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Δευτερεύουσα οθόνη "
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Δεξιά"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Αριστερά"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Εξατομίκευση έξυπνης απόκρυψης"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Επαναφορά στις προεπιλογές"
+
+#: prefs.js:386
+msgid "Show dock and application numbers"
+msgstr "Προβολή της μπάρας και της αρίθμησης εφαρμογών"
+
+#: prefs.js:443
+msgid "Customize middle-click behavior"
+msgstr "Προσαρμογή συμπεριφοράς μεσαίου κλικ"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "Προσαρμογή δεικτών τρεχόντων εφαρμογών"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Όλα τα παράθυρα"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Προσαρμογή του στυλ του δείκτη"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Χρώμα"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Χρώμα περιγράμματος"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Πλάτος περιγράμματος"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "Αρίθμηση εφαρμογών"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Προσωρινή εμφάνιση της αρίθμησης των εφαρμογών πάνω από τα εικονίδια που "
+"αντιστοιχεί στη συντόμευση πληκτρολογίου."
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr "Προβολή της μπάρας αν είναι κρυμμένη"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Αν η αυτόματη απόκρυψη είναι σε χρήση, η μπάρα θα εμφανίζεται σύντομα με την "
+"χρήση της συντόμευσης."
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "Συντόμευση για τις παραπάνω επιλογές"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Σύνταξη: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Καθυστέρηση απόκρυψης"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Όταν είναι ρυθμισμένο στην ελαχιστοποίηση, το διπλό κλικ ελαχιστοποιεί όλα "
+"τα παράθυρα της εφαρμογής."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Λειτουργία του Shift+Click"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "Ανύψωση παραθύρου"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Ελαχιστοποίηση παραθύρου"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Νέο παράθυρο"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Περιήγηση στα ανοικτά παράθυρα"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr "Έξοδος"
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr "Συμπεριφορά μεσαίου κλικ."
+
+#: Settings.ui.h:20
+msgid "Middle-Click action"
+msgstr "Λειτουργία του μεσαίου κλικ"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Συμπεριφορά Shift+Μεσαίο κλικ."
+
+#: Settings.ui.h:22
+msgid "Shift+Middle-Click action"
+msgstr "Λειτουργία του Shift+Μεσαίο κλικ"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Εμφάνιση της μπάρας στην"
+
+#: Settings.ui.h:24
+msgid "Show on all monitors."
+msgstr "Εμφάνιση σε όλες τις οθόνες."
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Θέση στην οθόνη"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Κάτω"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Πάνω"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the the current application. "
+"More refined settings are available."
+msgstr ""
+"Απόκρυψη της μπάρας όταν εμποδίζει ένα παράθυρο της τρέχουσας εφαρμογής. Πιο "
+"εξειδικευμένες επιλογές είναι επίσης διαθέσιμες."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Έξυπνη απόκρυψη"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Περιορισμός μεγέθους μπάρας"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Λειτουργιά πάνελ: επέκταση της μπάρας ως τις άκρες της οθόνης"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Περιορισμός μεγέθους εικονιδίων"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr ""
+"Σταθερό μέγεθος εικονιδίων: κύλιση για την εμφάνιση περαιτέρω εικονιδίων"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Θέση και μέγεθος"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Εμφάνιση αγαπημένων εφαρμογών"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Εμφάνιση εκτελούμενων εφαρμογών"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "Απομόνωση χώρων εργασίας."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Εμφάνιση προεπισκόπησης ανοικτών παραθύρων."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Αν είναι απενεργοποιημένο, αυτές οι ρυθμίσεις είναι προσβάσιμες από το "
+"εργαλείο μικρορυθμίσεων του GNOME ή την ιστοσελίδα των επεκτάσεων."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Εμφάνιση εικονιδίου <i>Εφαρμογών</i>"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Μετακίνηση του πλήκτρου εφαρμογών στην αρχή της μπάρας."
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Ενεργοποίηση γραφικών κατά την <i>Εμφάνιση Εφαρμογών</i>."
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Εκκινητές"
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Ενεργοποίηση του Super+(0-9) ως συντόμευση για την ενεργοποίηση εφαρμογών. "
+"Μπορεί επίσης να χρησιμοποιηθεί με το Shift και το Ctrl."
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Χρήση συντομεύσεων πληκτρολογίου για την ενεργοποίηση εφαρμογών"
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Συμπεριφορά κατά το κλικ σε εικονίδιο τρέχουσας εφαρμογής."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Συμπεριφορά κλικ"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Ελαχιστοποίηση"
+
+#: Settings.ui.h:51
+msgid "Minimize or overview"
+msgstr "Ελαχιστοποίηση ή επισκόπηση"
+
+#: Settings.ui.h:52
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Συμπεριφορά κατά την κύλιση σε εικονίδιο τρέχουσας εφαρμογής."
+
+#: Settings.ui.h:53
+msgid "Scroll action"
+msgstr "Συμπεριφορά κύλισης"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Καμία δράση"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr "Αλλαγή χώρου εργασίας"
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Συμπεριφορά"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Μερικές προσαρμογές στοχεύουν στο να ενοποιήσουν την μπάρα με το "
+"προκαθορισμένο θέμα του GNOME. Εναλλακτικά, ειδικές επιλογές μπορούν να "
+"ενεργοποιηθούν παρακάτω."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Χρήση ενσωματωμένου θέματος"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Εξοικονόμηση χώρου μειώνοντας τα κενά και τα περιθώρια."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Σμίκρυνση της μπάρας"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Εμφανίζει μία τελεία για κάθε παράθυρο της εφαρμογής."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Εμφάνιση μετρητή παραθύρων"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "Ορισμός χρώματος φόντου της μπάρας."
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "Προσαρμογή του χρώματος της μπάρας"
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Αλλαγή της αδιαφάνειας του φόντου της μπάρας."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Προσαρμογή αδιαφάνειας"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Αδιαφάνεια"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr "Εξαναγκασμός ευθείας γωνίας\n"
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Εμφάνιση"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "έκδοση: "
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr ""
+"Μετακινεί το ταμπλώ και εκτός της προεπισκόπησης μετατρέποντάς το σε μπάρα "
+"εφαρμογών"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Δημιουργήθηκε από"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Ιστοσελίδα"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"See the <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, version 2 or later</a> for details.</span>"
+msgstr ""
+"<span size=\"small\">Αυτό πρόγραμμα παρέχεται χωρίς ΑΠΟΛΥΤΩΣ ΚΑΜΙΑ ΕΓΓΥΗΣΗ.\n"
+"Για λεπτομέρειες δείτε την <a href=\"https://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html\">Γενική δημόσια άδεια GNU, έκδοση 2 ή νεότερη.</a> </"
+"span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "Περί"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Εμφάνιση της μπάρας όταν το ποντίκι πηγαίνει στην άκρη της οθόνης."
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Αυτόματη απόκρυψη"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Πίεση για εμφάνιση: απαιτείται πίεση για την εμφάνιση της μπάρας"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "Ενεργοποίηση σε λειτουργία πλήρους οθόνης"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Εμφάνιση της μπάρας όταν δεν εμποδίζει τα παράθυρά των εφαρμογών."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Αποφυγή παραθύρων"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Όλα τα παράθυρα"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Μόνο τα παράθυρα της εστιασμένης εφαρμογής"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Μόνο μεγιστοποιημένα παράθυρα"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Διάρκεια γραφικών"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Χρονικό όριο εμφάνισης"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Ελάχιστη πίεση"
diff --git a/package/po/es.po b/package/po/es.po
new file mode 100644
index 0000000000000000000000000000000000000000..a678419f6b07b313f303437f64b62cd1e32bde3f
--- /dev/null
+++ b/package/po/es.po
@@ -0,0 +1,438 @@
+# Dash to Dock spanish translation.
+# This file is distributed under the same license as the Dash to Dock package.
+# Hugo Olabera <hugolabe@gmail.com>, 2015.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-05-30 17:27-0400\n"
+"PO-Revision-Date: 2017-02-17 12:11+0100\n"
+"Last-Translator: Hugo Olabera <hugolabe@gmail.com>\n"
+"Language-Team: \n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.11\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Pantalla principal"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Pantalla secundaria"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Derecha"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Izquierda"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Opciones de auto ocultado"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Restaurar"
+
+#: prefs.js:386
+msgid "Show dock and application numbers"
+msgstr "Mostrar el dock y el número de aplicación"
+
+#: prefs.js:443
+msgid "Customize middle-click behavior"
+msgstr "Personalizar comportamiento del botón central"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "Personalizar indicadores de ejecución"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Todas las ventanas"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Personalizar estilo del indicador"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Color"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Color del borde"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Grosor del borde"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "Número de aplicación"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Al usar atajos, mostrar momentáneamente el número de aplicación sobre los "
+"íconos."
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr "Mostrar el dock si está oculto"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Si auto-ocultar está activado, el dock aparecerá momentáneamente al usar el "
+"atajo."
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "Atajo para las opciones de arriba"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Sintaxis: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Tiempo de ocultación"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Cuando está seleccionado minimizar, doble click minimiza todas las ventanas "
+"de la aplicación."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Acción de Mayúsculas+Click"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "Elevar ventana"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Minimizar ventana"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Lanzar una nueva instancia"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Alternar entre ventanas"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr "Salir"
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr "Comportamiento del botón central"
+
+#: Settings.ui.h:20
+msgid "Middle-Click action"
+msgstr "Acción del botón central"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Comportamiento para Mayúsculas+Botón-Central"
+
+#: Settings.ui.h:22
+msgid "Shift+Middle-Click action"
+msgstr "Acción de Mayúsculas+Botón-Central"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Mostrar el dock en"
+
+#: Settings.ui.h:24
+msgid "Show on all monitors."
+msgstr "Mostrar en todas las pantallas."
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Posición en pantalla"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Abajo"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Arriba"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the the current application. "
+"More refined settings are available."
+msgstr ""
+"Ocultar el dock cuando cubre una ventana de la aplicación activa. Otras "
+"opciones disponibles."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Auto ocultado inteligente"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Tamaño máximo del dock"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Modo panel: extender hasta los bordes de la pantalla"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Tamaño máximo de los iconos"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Tamaño fijo de los iconos: desplazarse para mostrar otros"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Posición y tamaño"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Mostrar aplicaciones favoritas"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Mostrar aplicaciones en ejecución"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "Aislar los espacios de trabajo."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Mostrar vista rápida de ventanas."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Si está deshabilitado, estas opciones están accesibles desde gnome-tweak-"
+"tool o desde el sitio web de extensiones."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Mostrar el icono <i>Mostrar aplicaciones</i>"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Mover el botón de aplicaciones al comienzo del dock"
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animar <i>Mostrar aplicaciones</i>"
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Lanzadores"
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Habilitar Súper+(0-9) como atajos para activar aplicaciones. También puede "
+"ser usado junto con Mayús y Ctrl."
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Usar atajos de teclado para activar aplicaciones"
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Comportamiento al pulsar el icono de una aplicación en ejecución"
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Acción del Click"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Minimizar"
+
+#: Settings.ui.h:51
+msgid "Minimize or overview"
+msgstr "Minimizar o vista de actividades"
+
+#: Settings.ui.h:52
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Comportamiento al usar scroll sobre el icono de una aplicación."
+
+#: Settings.ui.h:53
+msgid "Scroll action"
+msgstr "Acción de scroll"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "No hacer nada"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr "Cambiar de espacio de trabajo."
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Comportamiento"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Utilizar el tema predeterminado de GNOME. Alternativamente, pueden elegirse "
+"ciertas opciones más abajo."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Utilizar el tema por defecto"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Reducir los márgenes para ganar espacio"
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Encoger el dock"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Mostrar un punto por cada ventana de la aplicación."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Mostrar contador de ventanas"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "Escoger el color de fondo del dock."
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "Personalizar el color del dock"
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Ajustar la opacidad del fondo del dock."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Personalizar opacidad"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Opacidad"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr "Forzar esquinas rectas\n"
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Apariencia"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "versión: "
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr ""
+"Mueve el panel fuera de la vista de actividades trasformándolo en un dock"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Creado por"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Sitio web"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"See the <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, version 2 or later</a> for details.</span>"
+msgstr ""
+"<span size=\"small\">Este programa viene SIN NINGUNA GARANTÍA.\n"
+"Consulte la <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">Licencia Pública General de GNU, versión 2 o posterior</a> para obtener "
+"más detalles.</span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "Acerca de"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Mostrar el dock al mover el puntero al borde de la pantalla"
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Auto ocultar"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Empujar para mostrar: requiere hacer presión para mostrar el dock"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "Habilitar en modo pantalla completa"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Mostrar el dock cuando no cubra otras ventanas de aplicaciones"
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Auto ocultado inteligente"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Todas las ventanas"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Sólo las ventanas de la aplicación activa"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Sólo las ventanas maximizadas"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Duración de la animación"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Tiempo de aparición"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Nivel de presión"
diff --git a/package/po/fr.po b/package/po/fr.po
new file mode 100644
index 0000000000000000000000000000000000000000..4982ab2ed031a19b0ce5c5cd1ad63b6e0579344c
--- /dev/null
+++ b/package/po/fr.po
@@ -0,0 +1,438 @@
+# 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.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-05-30 17:27-0400\n"
+"PO-Revision-Date: 2017-04-17 10:31+0200\n"
+"Last-Translator: Thomas GONET <th.gonet@gmail.com>\n"
+"Language-Team: Jean-Baptiste Le Cz <jb.lecoz@gmail.com>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Moniteur principal"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Moniteur secondaire"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Droite"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Gauche"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Personnalisation du masquage automatique"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Restaurer la configuration par défaut"
+
+#: prefs.js:386
+msgid "Show dock and application numbers"
+msgstr "Afficher le dock et le numéro d'application"
+
+#: prefs.js:443
+msgid "Customize middle-click behavior"
+msgstr "Personnaliser le comportement du clic milieu"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "Régler les indicateurs de fenêtres"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Toutes les fenêtres"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Régler le style des indicateurs"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Couleur"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Couleur de la bordure"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Épaisseur de la bordure"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "Numéro d'application"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Afficher temporairement les numéros d'application sur les icônes, "
+"correspondant au raccourci clavier."
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr "Afficher le dock s'il est caché"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Si le masquage automatique est actif, le dock apparaîtra temporairement lors "
+"de l'utilisation du raccourci."
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "Raccourci pour les options dessus"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Syntaxe: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Délai de masquage (s)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Quand réglé sur Minimiser, double-cliquer minimise toutes les fenêtres de "
+"l'application."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Action Shift+Clic"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "Faire apparaître la fenêtre"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Minimiser la fenêtre"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Lancer une nouvelle fenêtre"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Cycler sur les fenêtres"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr "Quitter"
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr "Comportement pour le clic milieu"
+
+#: Settings.ui.h:20
+msgid "Middle-Click action"
+msgstr "Action du clic milieu"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Comportement pour Shift+Clic milieu"
+
+#: Settings.ui.h:22
+msgid "Shift+Middle-Click action"
+msgstr "Action de Shift+Clic milieu"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Afficher le dock sur le"
+
+#: Settings.ui.h:24
+msgid "Show on all monitors."
+msgstr "Afficher sur tous les écrans."
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Position sur l'écran"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Bas"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Haut"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the the current application. "
+"More refined settings are available."
+msgstr ""
+"Cache le dock quand il gêne l'application principale. D'autres paramètres "
+"plus spécifiques sont disponibles."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Masquage intelligent"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Taille maximum du dock"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Mode barre: étendre aux bords de l'écran"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Taille maximum des icônes"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Taille des icônes fixe: faire défiler pour voir les autres icônes"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Position et taille"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Afficher les applications favorites"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Afficher les applications en cours"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "Isoler les espaces de travail."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Afficher des aperçus de fenêtres."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Si désactivés, ces paramètres sont accessibles via gnome-tweak-tool ou le "
+"site d'extension GNOME."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Afficher le raccourci <i>Afficher les Applications</i>"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr ""
+"Placer le raccourci <i>Afficher les Applications</i> en première position"
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animer le raccourci <i>Afficher les Applications</i>"
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Lanceurs"
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Activer Super+(0-9) comme raccourcis pour activer les applications. On peut "
+"l'utiliser aussi avec Shift et Ctrl."
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Utiliser des raccourcis clavier pour activer les applications"
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Comportement du clic sur l'icône d'une application ouverte."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Action du clic"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Minimiser la fenêtre"
+
+#: Settings.ui.h:51
+msgid "Minimize or overview"
+msgstr "Minimiser ou lancer l'exposé"
+
+#: Settings.ui.h:52
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Comportement lors du défilement sur l'icône d'une application."
+
+#: Settings.ui.h:53
+msgid "Scroll action"
+msgstr "Action du défilement"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Ne rien faire"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr "Changer d'espace de travail"
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Comportement"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Assortir le dock avec le thème par défaut. Sinon, vous pouvez personnaliser "
+"quelques paramètres ci-dessous."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Utiliser le thème par défaut"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Réduire la taille des marges pour gagner de la place."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Réduire les marges"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Afficher un point pour chaque fenêtre ouverte de l'application."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Afficher un compteur de fenêtres"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "Choisir la couleur de fond du dock."
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "Changer la couleur du dock"
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Régler l'opacité en fond du dock."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Régler l'opacité du dock"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Opacité"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr "Forcer des coins droits\n"
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Apparence"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "Version: "
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Place le dash hors de l'aperçu des fenêtres, le transformant en dock"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Conçu par"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Site web"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"See the <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, version 2 or later</a> for details.</span>"
+msgstr ""
+"<span size=\"small\">Ce programme est distribué SANS AUCUNE GARANTIE.\n"
+"Consultez la <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">Licence Générale Publique GNU version 2 ou plus récente</a> pour plus "
+"d'informations.</span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "À propos"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Afficher le dock en survolant le bord de l'écran."
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Masquage automatique"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Pousser pour Afficher: requiert une pression pour afficher le dock"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "Activer en mode plein-écran"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Afficher le dock quand il ne gêne pas les fenêtres."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Masquage automatique intelligent"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Toutes les fenêtres"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Seulement la fenêtre de l'application active"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Seulement les fenêtres maximisées"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Durée de l'animation (s)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Délai d'apparition (s)"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Seuil de pression"
diff --git a/package/po/hu.po b/package/po/hu.po
new file mode 100644
index 0000000000000000000000000000000000000000..7c9190813108f2370e0f8c2a42863e3f4ea08c1f
--- /dev/null
+++ b/package/po/hu.po
@@ -0,0 +1,440 @@
+# Hungarian translation for dash-to-dock.
+# Copyright (C) 2017 Free Software Foundation, Inc.
+# This file is distributed under the same license as the dash-to-dock package.
+#
+# Balázs Úr <urbalazs@gmail.com>, 2017.
+msgid ""
+msgstr ""
+"Project-Id-Version: dash-to-dock master\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2017-04-10 22:02+0100\n"
+"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
+"Language-Team: Hungarian <openscope@googlegroups.com>\n"
+"Language: hu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 2.0\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Elsődleges kijelző"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Másodlagos kijelző"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Jobb"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Bal"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Intelligens automatikus elrejtés személyre szabása"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Visszaállítás az alapértékekre"
+
+#: prefs.js:386
+msgid "Show dock and application numbers"
+msgstr "A dokk és az alkalmazás számainak megjelenítése"
+
+#: prefs.js:443
+msgid "Customize middle-click behavior"
+msgstr "Középső kattintás viselkedésének személyre szabása"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "Futásjelzők személyre szabása"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Összes Ablak"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Jelző stílusának személyre szabása"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Szín"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Szegély színe"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Szegély szélessége"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "Szám rátét"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Az alkalmazás számainak átmeneti megjelenítése az ikonok fölött a "
+"gyorsbillentyűnek megfelelően."
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr "A dokk megjelenítése, ha el van rejtve"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Az automatikus elrejtés használatakor a dokk meg fog jelenni egy rövid ideig "
+"a gyorsbillentyű megnyomásakor."
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "Gyorsbillentyűk a fenti beállításokhoz"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Szintaxis: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Elrejtési időkorlát (mp)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Ha minimalizálásra van állítva, akkor a dupla kattintás az alkalmazás összes "
+"ablakát minimalizálja."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Shift + kattintás művelet"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "Ablak előre hozása"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Ablak minimalizálása"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Új példány indítása"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Ablakok körbeléptetése"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr "Kilépés"
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr "A középső kattintás viselkedése."
+
+#: Settings.ui.h:20
+msgid "Middle-Click action"
+msgstr "Középső kattintás művelet"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr "A Shift + középső kattintás viselkedése."
+
+#: Settings.ui.h:22
+msgid "Shift+Middle-Click action"
+msgstr "Shift + középső kattintás művelet"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "A dokk megjelenítése"
+
+#: Settings.ui.h:24
+#, fuzzy
+msgid "Show on all monitors."
+msgstr "Másodlagos kijelző"
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Elhelyezkedés a képernyőn"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Lent"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Fent"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the the current application. "
+"More refined settings are available."
+msgstr ""
+"A dokk elrejtése, amikor az aktuális alkalmazás ablakát akadályozza. További "
+"finombeállítások is elérhetők."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Intelligens automatikus elrejtés"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Dokk méretkorlátja"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Panel mód: kiterjesztés a képernyő széléig"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Ikon méretkorlátja"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Rögzített ikonméret: görgetés egyéb ikonok felfedéséhez"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Elhelyezkedés és méret"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Kedvenc alkalmazások megjelenítése"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Futó alkalmazások megjelenítése"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "Munkaterületek elkülönítése."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Nyitott ablakok előnézeteinek megjelenítése."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Ha le van tiltva, akkor ezek a beállítások elérhetők a GNOME finomhangoló "
+"eszközből vagy a kiegészítők weboldaláról."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "<i>Alkalmazások</i> ikon megjelenítése"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Az alkalmazások gombjának áthelyezése a dokk elejére."
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "<i>Alkalmazások megjelenítése</i> animálása."
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Indítok"
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Szuper + (0-9) engedélyezése gyorsbillentyűként az alkalmazások "
+"aktiválásához. Használható a Shift és a Ctrl billentyűkkel együtt is."
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Gyorsbillentyűk használata az alkalmazások aktiválásához"
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Viselkedés egy futó alkalmazás ikonjára való kattintáskor."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Kattintás művelet"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Minimalizálás"
+
+#: Settings.ui.h:51
+#, fuzzy
+msgid "Minimize or overview"
+msgstr "Ablak minimalizálása"
+
+#: Settings.ui.h:52
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Viselkedés egy alkalmazás ikonján való görgetéskor."
+
+#: Settings.ui.h:53
+msgid "Scroll action"
+msgstr "Görgetési művelet"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Ne tegyen semmit"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr "Munkaterület váltása"
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Viselkedés"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Néhány személyre szabás célja, hogy integrálja a dokkot az alapértelmezett "
+"GNOME témába. Alternatív esetben bizonyos beállítások engedélyezhetők lent."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Beépített téma használata"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Helymegtakarítás a kitöltés és a szegély sugarának csökkentésével."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "A dash zsugorítása"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Egy pont megjelenítése az alkalmazás minden ablakánál."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Ablakszámlálók jelzőinek megjelenítése"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "A dash háttérszínének beállítása."
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "A dash színének személyre szabása"
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "A dash háttér átlátszatlanságának finomhangolása."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Átlátszatlanság személyre szabása"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Átlátszatlanság"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr "Egyenes sarok kényszerítése\n"
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Megjelenés"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "verzió: "
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Áthelyezi a dasht az áttekintőn kívülre egy dokká alakítva azt"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Létrehozta"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Weboldal"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"See the <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, version 2 or later</a> for details.</span>"
+msgstr ""
+"<span size=\"small\">Ehhez a programhoz SEMMILYEN GARANCIA NEM JÁR.\n"
+"Nézze meg a <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html "
+"\">GNU General Public License 2. vagy későbbi verzióját</a> a részletekért.</"
+"span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "Névjegy"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "A dokk megjelenítése a képernyő szélére történő egér rámutatással."
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Automatikus elrejtés"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Nyomás a megjelenítéshez: nyomást igényel a dokk megjelenítéséhez"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "Engedélyezés teljes képernyős módban"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "A dokk megjelenítése, amikor nem akadályozza az alkalmazás ablakait."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Ablakok kikerülése"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Összes ablak"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Csak a kijelölt alkalmazások ablakai"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Csak a maximalizált ablakok"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Animáció időtartama (mp)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0,000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Megjelenítési időkorlát (mp)"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Nyomás küszöbszintje"
diff --git a/package/po/it.po b/package/po/it.po
new file mode 100644
index 0000000000000000000000000000000000000000..67445885a8b834d42ac8c1f3b893648126984cbf
--- /dev/null
+++ b/package/po/it.po
@@ -0,0 +1,453 @@
+# 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.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash-to-Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2017-06-04 12:59+0100\n"
+"Last-Translator: Giuseppe Pignataro (Fastbyte01) <rogepix@gmail.com>\n"
+"Language-Team: Italian <micxgx@gmail.com>\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 1.8.11\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Monitor primario"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Monitor secondario"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Destra"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Sinistra"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Personalizzazione nascondimento automatico intelligente"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Ripristina a predefinito"
+
+#: prefs.js:386
+msgid "Show dock and application numbers"
+msgstr "Mostra applicazioni in esecuzione"
+
+#: prefs.js:443
+msgid "Customize middle-click behavior"
+msgstr "Personalizza comportamento clic centrale"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "Personalizza indicatori in esecuzione"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Tutte le finestre"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Personalizza stile indicatori"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Colore"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Colore bordo"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Larghezza bordo"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "Indicatore numerico in sovraimpressione"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Mostra brevemente il numero corrispondente alla scorciatoia sull'icona "
+"dell'applicazione."
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr "Mostra dock se nascosta"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Con nascondimento automatico intelligente, la dock viene mostrata per un "
+"istante quando la scorciatoia è attivata"
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "Scorciatoia"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Formato: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Timeout nascondimento (s)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Quando impostati su minimizza, un doppio clic minimizza tutte le finestre "
+"dell'applicazione."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Azione Shift+Clic"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "Solleva finestra"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Minimizza finestra"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Lancia nuova istanza"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Passa attraverso le finestre"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr "Chiudi"
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr "Comportamento per Clic-centrale"
+
+#: Settings.ui.h:20
+msgid "Middle-Click action"
+msgstr "Azione Clic-centrale"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Comportamento per Shift+Clic-centrale"
+
+#: Settings.ui.h:22
+msgid "Shift+Middle-Click action"
+msgstr "Azione Shift+Clic-centrale"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Mostra dock sul"
+
+#: Settings.ui.h:24
+msgid "Show on all monitors."
+msgstr "Mostra su tutti gli schermi"
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Posizione sullo schermo"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Basso"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Alto"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the the current application. "
+"More refined settings are available."
+msgstr ""
+"Nasconde la dock quando questa ostruisce una finestra dell'applicazione "
+"corrente. Sono disponibili maggiori impostazioni."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Autohide intelligente"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Limite dimensione dock"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Modalità pannello: si estende fino al bordo dello schermo"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Limite dimensione icone"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Dimensione icona fissa: scorri per rivelare le altre icone"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Posizione e dimensione"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Mostra applicazioni preferite"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Mostra applicazioni in esecuzione"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "Isola spazi di lavoro."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Mostra anteprime delle finestre aperte"
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Se disabilitate, queste impostazioni sono accessibili da gnome-tweak-tool o "
+"dal sito web delle estensioni."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Mostra icona <i>Applicazioni</i>"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Sposta il pulsante delle applicazioni all'inizio della dock."
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Anima <i>Mostra Applicazioni</i>."
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Icone delle applicazoni"
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Attiva Super+(0-9) come scorciatoie per attivare le applicazioni. Funziona "
+"anche con Shift e Ctrl"
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Usa scorciatoie da tastiera per attivare le applicazioni."
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr ""
+"Comportamento quando si fa clic sull'icona di una applicazione in esecuzione."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Azione clic"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Minimizza"
+
+#: Settings.ui.h:51
+msgid "Minimize or overview"
+msgstr "Minimizza o mostra attività"
+
+#: Settings.ui.h:52
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr ""
+"Comportamento quando si fa clic sull'icona di una applicazione in esecuzione."
+
+#: Settings.ui.h:53
+msgid "Scroll action"
+msgstr "Azione clic"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Non fare nulla"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr "Cambia spazio di lavoro."
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Comportamento"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Poche personalizzazioni significative per integrare la dock con il tema di "
+"default di GNOME. In alternativa, delle opzioni specifiche possono essere "
+"abilitate qui sotto."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Usa teme integrato"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Salva spazio riducendo il margine e il raggio dei bordi."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Riduci la dash"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Mostra un punto per ogni finestra dell'applicazione."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Mostra indicatore numerico delle finestra"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "Imposta il colore di sfondo della dash."
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "Personalizza il colore della dash"
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Personalizza l'opacità dello sfondo della dash."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Personalizza opacità"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Opacità"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr ""
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Aspetto"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "versione:"
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Sposta la dash fuori dalla panoramica trasformandola in una dock"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Creata da "
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Sito web"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"See the <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, version 2 or later</a> for details.</span>"
+msgstr ""
+"<span size=\"small\">Questo programma viene dato senza ASSOLUTAMENTE NESSUNA "
+"GARANZIA.\n"
+"Vedi la <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, versione 2 o successiva</a> per maggiori "
+"dettagli.</span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "Info su"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Mostra la dock passando con il mouse sul bordo dello schermo"
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Nascondi automaticamente"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Premi per vedere: richiede una pressione per mostrare la dock"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "Abilità in modalità a schermo intero"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr ""
+"Mostra la dock quando questa non ostruisce le finestre dell'applicazione."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Schive finestre"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Tutte le finestre"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Solo le finestre delle applicazione a fuoco"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Solo le finestre massimizzate"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Durata Animazione (s)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Timeout rivelazione (s)"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Soglia pressione"
+
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "Con la dimensione fissa delle icone, solo il bordo della dock e l'icona "
+#~ "<i> Mostra Applicazioni</i> sono attive."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Cambia spazio di lavoro scorrendo sulla dock"
diff --git a/package/po/ja.po b/package/po/ja.po
new file mode 100644
index 0000000000000000000000000000000000000000..20acd17898dd4538439d1d4a5367464868263145
--- /dev/null
+++ b/package/po/ja.po
@@ -0,0 +1,458 @@
+# Dash to Dock master ja.po
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the dash-to-dock package.
+# Jiro Matsuzawa <jmatsuzawa@gnome.org>, 2013.
+# Debonne Hooties <debonne.hooties@gmail.com>, 2014-2016.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: dash-to-dock master\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2016-04-03 17:02+0900\n"
+"Last-Translator: Debonne Hooties <debonne.hooties@gmail.com>\n"
+"Language-Team: Safranjoepe (an unofficial team of Japanese) <>\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"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "プライマリーモニター"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "セカンダリーモニター"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "右"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "左"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "インテリジェント表示の設定"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "既定値にリセット"
+
+#: prefs.js:386
+#, fuzzy
+msgid "Show dock and application numbers"
+msgstr "実行中アプリケーションの表示"
+
+#: prefs.js:443
+#, fuzzy
+msgid "Customize middle-click behavior"
+msgstr "表示スタイルの設定"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "インジケーターの表示設定"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "すべてのウィンドウが対象"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "表示スタイルの設定"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "ボディ色"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "縁取り色"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "縁取り幅"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr ""
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+
+#: Settings.ui.h:7
+#, fuzzy
+msgid "Show the dock if it is hidden"
+msgstr "ドックを表示するモニター"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr ""
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr ""
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "非表示までのタイムアウト (秒)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"[ウィンドウの最小化] に設定したときは、アイコンをダブルクリックするとそのアプ"
+"リケーションのウィンドウをすべて最小化します。"
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Shift+クリック時のアクション"
+
+#: Settings.ui.h:14
+#, fuzzy
+msgid "Raise window"
+msgstr "ウィンドウの最小化"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "ウィンドウの最小化"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "新しいウィンドウを開く"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "ウィンドウの切り替え"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr ""
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:20
+#, fuzzy
+msgid "Middle-Click action"
+msgstr "クリック時のアクション"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:22
+#, fuzzy
+msgid "Shift+Middle-Click action"
+msgstr "Shift+クリック時のアクション"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "ドックを表示するモニター"
+
+#: Settings.ui.h:24
+#, fuzzy
+msgid "Show on all monitors."
+msgstr "セカンダリーモニター"
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "表示位置"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "下"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "上"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the the current application. "
+"More refined settings are available."
+msgstr ""
+"開いているウィンドウの邪魔にならないようドックの表示/非表示を自動的に切り替え"
+"ます。より洗練された表示設定も可能です。"
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "インテリジェント表示"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "ドックサイズの上限"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "パネルモード(画面の端までドックを拡張)"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "アイコンサイズの上限"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "アイコンサイズの固定(隠れたアイコンはスクロールで表示)"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "位置とサイズ"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "お気に入りアプリケーションの表示"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "実行中アプリケーションの表示"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr ""
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr ""
+
+#: Settings.ui.h:41
+#, fuzzy
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"オフにしたときは、gnome-tweak-tool または拡張機能ウェブサイトを経由してこの設"
+"定ダイアログにアクセスします。"
+
+#: Settings.ui.h:42
+#, fuzzy
+msgid "Show <i>Applications</i> icon"
+msgstr "[アプリケーションを表示する] アイコンの表示"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "ドックの先頭(最上段または左端)に表示"
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "アニメーションしながらアプリケーション一覧を表示"
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr ""
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr ""
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "実行中アプリケーションのアイコンをクリックしたときの動作を指定します。"
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "クリック時のアクション"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "ウィンドウの最小化"
+
+#: Settings.ui.h:51
+#, fuzzy
+msgid "Minimize or overview"
+msgstr "ウィンドウの最小化"
+
+#: Settings.ui.h:52
+#, fuzzy
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "実行中アプリケーションのアイコンをクリックしたときの動作を指定します。"
+
+#: Settings.ui.h:53
+#, fuzzy
+msgid "Scroll action"
+msgstr "クリック時のアクション"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "何もしない"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr ""
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "動作"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"この設定がオンのときは、お使いのGNOMEテーマとの調和を図るためカスタマイズは無"
+"効になります。オフのときには以下のカスタマイズが可能です。"
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "ビルトインテーマの使用"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "境界線の太さとパディングを減らして表示域を小さくします。"
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Dashの縮小表示"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "アプリケーションウィンドウの数をドットで表示します。"
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "ウィンドウ数インジケーターの表示"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr ""
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr ""
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Dash背景の不透明度を調整します。"
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "不透明度の調整"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "不透明度"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr ""
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "外観"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "バージョン: "
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Dashをドック化してアクティビティ画面以外でもDash操作を可能にします。"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "作者:"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "ウェブページ"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"See the <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, version 2 or later</a> for details.</span>"
+msgstr ""
+"<span size=\"small\">このプログラムに<b>保証は一切ありません</b>。\n"
+"詳しくは <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU一般公衆ライセンス(GPL)バージョン2</a> またはそれ以降のバージョンをご"
+"覧ください。</span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "情報"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr ""
+"ドックを表示したいとき、ポインターを画面端に移動するとドックが表示されます。"
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "オンデマンド表示"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr ""
+"押し込んで表示(画面外にポインターを移動するようにマウスを動かして表示)"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "フルスクリーンモード時でも表示"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr ""
+"ドックを常に表示しますが、アプリケーションウィンドウと重なるときは表示しませ"
+"ん。"
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "ウィンドウ重なり防止"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "すべてのウィンドウが対象"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "フォーカスされたアプリケーションのウィンドウが対象"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "最大化されたウィンドウが対象"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "アニメーション表示時間 (秒)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "表示までのタイムアウト (秒)"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "押し込み量 (ピクセル)"
+
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "アイコンサイズを固定しているときは、ドックの端または [アプリケーションを表"
+#~ "示する] アイコン上でのスクロールのみが有効です。"
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "ドック上でスクロールしたらワークスペースを切り替える"
diff --git a/package/po/nl.po b/package/po/nl.po
new file mode 100644
index 0000000000000000000000000000000000000000..8cedf7d45486d83f028ca618ae35f6f798680d7f
--- /dev/null
+++ b/package/po/nl.po
@@ -0,0 +1,581 @@
+# Translation for de
+# Copyright (C) 2014 Michele
+# This file is distributed under the same license as the dash-to-dock package.
+# Morris Jobke <hey@morrisjobke.de>, 2014.
+# Jonatan Zeidler <jonatan_zeidler@hotmail.de>, 2012
+# jonius <jonatan_zeidler@gmx.de>, 2012
+# Heimen Stoffels <vistausss@outlook.com>, 2015.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2015-05-14 14:26+0200\n"
+"Last-Translator: Heimen Stoffels <vistausss@outlook.com>\n"
+"Language-Team: Nederlands <vistausss@outlook.com>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Gtranslator 2.91.7\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Eerste beeldscherm"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Tweede beeldscherm"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Rechts"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Links"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Voorkeuren voor intelligente verbergmodus"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Herstellen naar standaardwaarden"
+
+#: prefs.js:386
+#, fuzzy
+msgid "Show dock and application numbers"
+msgstr "Geopende applicaties weergeven"
+
+#: prefs.js:443
+#, fuzzy
+msgid "Customize middle-click behavior"
+msgstr "Doorzichtigheid aanpassen"
+
+#: prefs.js:514
+#, fuzzy
+msgid "Customize running indicators"
+msgstr "Geopende applicaties weergeven"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Vensters ontwijken"
+
+#: Settings.ui.h:1
+#, fuzzy
+msgid "Customize indicator style"
+msgstr "Doorzichtigheid aanpassen"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr ""
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr ""
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr ""
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr ""
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+
+#: Settings.ui.h:7
+#, fuzzy
+msgid "Show the dock if it is hidden"
+msgstr "Het dock weergeven op"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr ""
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr ""
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Verberginterval (s)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Indien gekozen voor minimaliseren zal dubbelklikken alle vensters van de "
+"huidige applicatie minimaliseren."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Shift+Klik-actie"
+
+#: Settings.ui.h:14
+#, fuzzy
+msgid "Raise window"
+msgstr "Venster minimalisren"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Venster minimalisren"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Nieuw proces openen"
+
+#: Settings.ui.h:17
+#, fuzzy
+msgid "Cycle through windows"
+msgstr "Schakelen tussen vensters"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr ""
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:20
+#, fuzzy
+msgid "Middle-Click action"
+msgstr "Klikactie"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:22
+#, fuzzy
+msgid "Shift+Middle-Click action"
+msgstr "Shift+Klik-actie"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Het dock weergeven op"
+
+#: Settings.ui.h:24
+#, fuzzy
+msgid "Show on all monitors."
+msgstr "Tweede beeldscherm"
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Positie op het scherm"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Onderaan"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Bovenaan"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the the current application. "
+"More refined settings are available."
+msgstr ""
+"Het dock verbergen wanneer het een venster van de huidige applicatie in de "
+"weg zit. Er zijn gedetailleerde instellingen hiervoor beschikbaar."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Intelligente verbergmodus"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Maximale dockgrootte"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Paneelmodus: uitrekken tot aan de schermrand"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Maximale pictogramgrootte"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr ""
+"Vastgezette pictogramgrootte: scroll om meer pictogrammen weer te geven"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Positie en grootte"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Favoriete applicaties weergeven"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Geopende applicaties weergeven"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr ""
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr ""
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+
+#: Settings.ui.h:42
+#, fuzzy
+msgid "Show <i>Applications</i> icon"
+msgstr "<i>Applicaties weergeven</i>-pictogram aan het begin"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Verplaatst de applicaties-knop naar het begin van het dock."
+
+#: Settings.ui.h:44
+#, fuzzy
+msgid "Animate <i>Show Applications</i>."
+msgstr "<i>Applicaties weergeven</i>-pictogram aan het begin"
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr ""
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr ""
+
+#: Settings.ui.h:48
+#, fuzzy
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Gedrag van het klikken op het pictogram van een geopende applicatie."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Klikactie"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Minimaliseren"
+
+#: Settings.ui.h:51
+#, fuzzy
+msgid "Minimize or overview"
+msgstr "Venster minimalisren"
+
+#: Settings.ui.h:52
+#, fuzzy
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Gedrag van het klikken op het pictogram van een geopende applicatie."
+
+#: Settings.ui.h:53
+#, fuzzy
+msgid "Scroll action"
+msgstr "Klikactie"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Niets doen"
+
+#: Settings.ui.h:55
+#, fuzzy
+msgid "Switch workspace"
+msgstr "Nur eine Arbeitsfläche pro Scrollen weiterschalten"
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Gedrag"
+
+#: Settings.ui.h:57
+#, fuzzy
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Enkele aanpassingen die bedoeld zijn om het dock te integreren met het "
+"standaard GNOME-thema. In plaats daarvan kunt specifieke opties hieronder "
+"inschakelen."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Ingebouwd thema gebruiken"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Bespaar ruimte door de radius van de dikte en rand te verkleinen."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "De dash verkleinen"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Een stip weergeven voor elk venster van de applicatie."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Indicatoren van de vensterteller weergeven"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr ""
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr ""
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "De doorzichtigheid van de dash-achtergrond aanpassen."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Doorzichtigheid aanpassen"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Doorzichtigheid"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr ""
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Uiterlijk"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "versie:"
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr ""
+"Verplaatst de dash naar buiten het activiteitenoverzicht zodat het een dock "
+"wordt"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Gecreëerd door"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr ""
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"See the <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, version 2 or later</a> for details.</span>"
+msgstr ""
+"<span size=\"small\">Dit programma wordt geleverd ZONDER ENIGE GARANTIE.\n"
+"Bekijk de <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, versie 2 of nieuwer</a> voor details.</span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "Over"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Het dock weergeven door de muiscursor op de schermrand te plaatsen"
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Automatisch verbergen"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Weergeven middels druk: druk toepassen om het dock weer te geven"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr ""
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Het dock weergeven wanneer het geen applicatievensters in de weg zit."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Vensters ontwijken"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Vensters ontwijken"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr ""
+
+#: Settings.ui.h:86
+#, fuzzy
+msgid "Only maximized windows"
+msgstr "Venster minimalisren"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Animatieduur (s)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Weergaveinterval (s)"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Drukwaarde (px)"
+
+#, fuzzy
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "Het gebied nabij de schermrand en de <i>Applicaties weergeven</i>-knop "
+#~ "zijn actief."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Van werkblad wisselen door te scrollen op het dock"
+
+#~ msgid "Only consider windows of the focused application"
+#~ msgstr "Alleen vensters van de huidige gefocuste applicatie overwegen"
+
+#~ msgid "Main Settings"
+#~ msgstr "Grundeinstellungen"
+
+#~ msgid "Dock Position"
+#~ msgstr "Dock-Position"
+
+#~ msgid "Dock is fixed and always visible"
+#~ msgstr "Das Dock hat eine feste Position und ist immer sichtbar"
+
+#~ msgid "Show delay [ms]"
+#~ msgstr "Einblendeverzögerung [ms]"
+
+#~ msgid "Hide delay [ms]"
+#~ msgstr "Ausblendeverzögerung [ms]"
+
+#~ msgid "Application based intellihide"
+#~ msgstr "Anwendungsbasiertes intelligentes Verstecken"
+
+#~ msgid "Show the dock on following monitor (if attached)"
+#~ msgstr "Zeige Dock auf folgendem Monitor (falls angeschlossen)"
+
+#~ msgid "Primary (default)"
+#~ msgstr "Primäranzeige (Standard)"
+
+#~ msgid "1"
+#~ msgstr "1"
+
+#~ msgid "2"
+#~ msgstr "2"
+
+#~ msgid "3"
+#~ msgstr "3"
+
+#~ msgid "4"
+#~ msgstr "4"
+
+#~ msgid "Max height"
+#~ msgstr "Maximale Höhe"
+
+#~ msgid "Expand (experimental and buggy)"
+#~ msgstr "Komplette Höhe (experimentell und fehlerbehaftet)"
+
+#~ msgid "Maximum icon size"
+#~ msgstr "Maximale Symbolgröße"
+
+#~ msgid "16"
+#~ msgstr "16"
+
+#~ msgid "24"
+#~ msgstr "24"
+
+#~ msgid "32"
+#~ msgstr "32"
+
+#~ msgid "48"
+#~ msgstr "48"
+
+#~ msgid "64"
+#~ msgstr "64"
+
+#~ msgid "Optional features"
+#~ msgstr "Optionale Funktionen"
+
+#~ msgid "Deadtime between each workspace switching [ms]"
+#~ msgstr "Stillstandszeit zwischen Arbeitsflächenwechsel [ms]"
+
+#~ msgid "Only a 1px wide area close to the screen edge is active"
+#~ msgstr "Nur einen 1 Pixel-breiten Bereich am Rand nutzen"
+
+#~ msgid "All the area of the dock is active"
+#~ msgstr "Den gesamten Bereich des Docks nutzen"
+
+#~ msgid "Customize actions on mouse click"
+#~ msgstr "Aktion bei Mausklick anpassen"
+
+#~ msgid "Action on clicking on running app"
+#~ msgstr "Aktion beim Klicken auf eine laufende Anwendung"
+
+#~ msgid "Minimize window on shift+click (double click for all app windows)"
+#~ msgstr ""
+#~ "Fenster mit Shift+Klick minimieren (Doppelklick für alle Fenster der "
+#~ "Anwendung)"
+
+#~ msgid "Appearence and Themes"
+#~ msgstr "Erscheinungsbild und Themen"
+
+#~ msgid ""
+#~ "A customized theme is built in the extension. This is meant to work with "
+#~ "the default Adwaita theme: the dash is shrunk to save space, its "
+#~ "background transparency reduced, and custom indicators for the number of "
+#~ "windows of each application are added."
+#~ msgstr ""
+#~ "Ein angepasstes Thema ist in dieser Erweiterung enthalten. Es ist für das "
+#~ "Vorgabe-Adwaita-Thema gedacht: Das Dash ist schmaler, um Platz zu sparen, "
+#~ "die Hintergrundtransparenz ist reduziert und für jede Anwendung wird ein "
+#~ "Indikator für die Anzahl der Fenster eingefügt."
+
+#~ msgid ""
+#~ "Alternatively, for a better integration with custom themes, each "
+#~ "customization can be applied indipendently"
+#~ msgstr ""
+#~ "Alternativ können für eine bessere Integration Anpassungen vorgenommen "
+#~ "werden"
+
+#~ msgid "Shrink the dash size by reducing padding"
+#~ msgstr "Das Dash schmaler machen durch Verkleinern des Abstands zum Rand"
+
+#~ msgid "Apply custom theme (work only with the default Adwaita theme)"
+#~ msgstr ""
+#~ "Benutzerdefiniertes Theme verwenden (funktioniert nur mit dem Standard-"
+#~ "Adwaita-Theme)"
diff --git a/package/po/pl.po b/package/po/pl.po
new file mode 100644
index 0000000000000000000000000000000000000000..39eae9dd63119bee11c54ee3b8d1aadd6b990a56
--- /dev/null
+++ b/package/po/pl.po
@@ -0,0 +1,564 @@
+# Polish translation for dash-to-dock GNOME Shell extension
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the dash-to-dock package.
+# 
+# Piotr Sokół <psokol.l10n@gmail.com>, 2012, 2013, 2015, 2016, 2017.
+# 
+msgid ""
+msgstr ""
+"Project-Id-Version: 55\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2017-04-09 09:44+0200\n"
+"Last-Translator: Piotr Sokół <psokol.l10n@gmail.com>\n"
+"Language-Team: polski <>\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bits\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2;\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Podstawowy"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Drugorzędny"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Prawo"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Lewo"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Dostosowanie automatycznego ukrywania"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Przywróć domyślne"
+
+#: prefs.js:386
+msgid "Show dock and application numbers"
+msgstr "Wyświetlanie doku i numerów programów"
+
+#: prefs.js:443
+msgid "Customize middle-click behavior"
+msgstr "Dostosowanie działania przycisków myszy"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "Dostosowanie wskaźników okien"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Wszystkie okna"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Dostosowanie stylu wskaźników"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Kolor"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Kolor obramowania"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Szerokość obramowania"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "Nakładka z numerem"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr "Wyświetla chwilowo na ikonach numery programów powiązane ze skrótami"
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr "Wyświetlenie ukrytego doku"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr "Wyświetla chwilowo dok po wciśnięciu skrótu klawiszowego"
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "Skrót klawiszowy dla powyższych poleceń"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Składnia: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Czas ukrywania (s)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Wybranie zminimalizowania okna, umożliwia minimalizowanie wszystkich okien "
+"programu dwukrotnym kliknięciem"
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Kliknięcia lewym przyciskiem + Shift"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "Przywrócenie okna"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Zminimalizowanie okna"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Otwarcie nowego okna"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Przełączenie pomiędzy oknami"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr "Zakończenie działania"
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr "Konfiguruje działanie kliknięcia środkowym przyciskiem myszy"
+
+#: Settings.ui.h:20
+msgid "Middle-Click action"
+msgstr "Kliknięcie środkowym przyciskiem"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr ""
+"Konfiguruje działanie kliknięcia środkowym przyciskiem myszy z przytrzymanym "
+"klawiszem Shift"
+
+#: Settings.ui.h:22
+msgid "Shift+Middle-Click action"
+msgstr "Kliknięcie środkowym przyciskiem + Shift"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Ekran wyświetlania doku"
+
+#: Settings.ui.h:24
+#, fuzzy
+msgid "Show on all monitors."
+msgstr "Drugorzędny"
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Położenie na ekranie"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Dół"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Góra"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the the current application. "
+"More refined settings are available."
+msgstr ""
+"Ukrywa dok jeśli zakrywa okno bieżącego programu. Dostępnych jest więcej "
+"szczegółowych opcji."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Inteligentne ukrywanie"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Ograniczenie rozmiaru doku"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Tryb panelu: rozciągnięcie do krawędzi ekranu"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Ograniczenie rozmiaru ikon"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Ustalony rozmiar ikon: odsłanianie ikon przewijaniem"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Położenie i rozmiar"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Ulubione programy"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Uruchomione programy"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "Izolowanie obszarów roboczych"
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Podgląd otwartych okien"
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Przełącza widoczność przycisku programów. Można też skonfigurować za pomocą "
+"narzędzia dostrajania lub witryny internetowej z rozszerzeniami."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Przycisk <i>Wyświetl programy</i>"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Przemieszczenie przycisku programów na początek doku"
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animowanie przycisku <i>Wyświetl programy</i>"
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Aktywatory"
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Używa skrótu Super+(0-9) do uruchomienia aktywatorów. Można użyć z "
+"modyfikatorem Shift lub Ctrl."
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Uruchamianie aktywatorów skrótami klawiszowymi"
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Określa działanie kliknięcia ikony uruchomionego programu"
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Działanie kliknięcia"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Zminimalizowanie okna"
+
+#: Settings.ui.h:51
+#, fuzzy
+msgid "Minimize or overview"
+msgstr "Zminimalizowanie okna"
+
+#: Settings.ui.h:52
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Określa działanie przewijania kółkiem ikony programu"
+
+#: Settings.ui.h:53
+msgid "Scroll action"
+msgstr "Działanie przewijania"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Brak"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr "Przełączenie obszaru roboczego"
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Zachowanie"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Integruje dok z domyślnym stylem GNOME przy użyciu kilku ustawień. "
+"Opcjonalnie ustawienia te można określić poniżej."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Użycie zintegrowanego stylu"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr ""
+"Zmniejsza zajmowaną powierzchnię redukując\n"
+"odległość od krawędzi i jej zaokrąglenie"
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Zmniejszenie kokpitu"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Wyświetla kropkę dla każdego okna programu"
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Wskaźniki ilości okien"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "Ustala wybrany kolor tła kokpitu"
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "Kolor kokpitu"
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Modyfikuje przezroczystość tła kokpitu"
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Dostosowanie przezroczystości tła"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Nieprzezroczystość"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr "Kąty proste narożników\n"
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Wygląd"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "wersja: "
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Przemieszcza kokpit z widoku podglądu do doku"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Autor:"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Strona internetowa"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"See the <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, version 2 or later</a> for details.</span>"
+msgstr ""
+"<span size=\"small\">Niniejszy program rozpowszechniany jest bez "
+"jakiejkolwiek gwarancji.\n"
+"Więcej informacji: <a href=\"https://www.gnu.org/licenses/old-licenses/"
+"gpl-2.0.html\">Powszechna licencja publiczna GNU, wersja 2 lub późniejsza</"
+"a>.</span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "O programie"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Wyświetla dok po przemieszczeniu wskaźnika myszy do krawędzi ekranu"
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Automatyczne ukrywanie"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Wymagany nacisk do wyświetlenia doku"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "Wyświetlanie na pełnym ekranie"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Wyświetla dok jeśli nie zakrywa okien programu"
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Ukrywanie przed oknami"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Wszystkie okna"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Tylko aktywne okna programu"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Tylko zmaksymalizowane okna"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Czas animacji (s)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Czas wyświetlania (s)"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Próg nacisku"
+
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "W przypadku ustalonego rozmiaru ikon, używa jedynie obszaru krawędzi doku "
+#~ "i przycisku <i>Wyświetl programy</i>."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Przełączanie obszarów roboczych przewijaniem doku"
+
+#~ msgid "Main Settings"
+#~ msgstr "Ogólne"
+
+#~ msgid "Dock Position"
+#~ msgstr "Położenie paska"
+
+#~ msgid "Dock is fixed and always visible"
+#~ msgstr "Zawsze widoczny pasek"
+
+#~ msgid "Show delay [ms]"
+#~ msgstr "Opóźnienie wysuwania [ms]"
+
+#~ msgid "Hide delay [ms]"
+#~ msgstr "Opóźnienie ukrywania [ms]"
+
+#~ msgid "Application based intellihide"
+#~ msgstr "Ukrywanie tylko przed uaktywnionymi oknami"
+
+#~ msgid "Show the dock on following monitor (if attached)"
+#~ msgstr "Wyświetlanie paska na podłączonym ekranie"
+
+#~ msgid "Primary (default)"
+#~ msgstr "Podstawowy (domyślnie)"
+
+#~ msgid "1"
+#~ msgstr "1"
+
+#~ msgid "2"
+#~ msgstr "2"
+
+#~ msgid "3"
+#~ msgstr "3"
+
+#~ msgid "4"
+#~ msgstr "4"
+
+#~ msgid "Max height"
+#~ msgstr "Maksymalna wysokość"
+
+#~ msgid "Expand (experimental and buggy)"
+#~ msgstr "Rozciągnięcie (opcja eksperymentalna)"
+
+#~ msgid "Maximum icon size"
+#~ msgstr "Maksymalny rozmiar ikony"
+
+#~ msgid "16"
+#~ msgstr "16"
+
+#~ msgid "24"
+#~ msgstr "24"
+
+#~ msgid "32"
+#~ msgstr "32"
+
+#~ msgid "48"
+#~ msgstr "48"
+
+#~ msgid "64"
+#~ msgstr "64"
+
+#~ msgid "Optional features"
+#~ msgstr "Dodatkowe"
+
+#~ msgid "Deadtime between each workspace switching [ms]"
+#~ msgstr "Opóźnienie przełączenia pomiędzy obszarami roboczymi [ms]"
+
+#~ msgid "Only a 1px wide area close to the screen edge is active"
+#~ msgstr ""
+#~ "Ograniczenie aktywnego obszaru do szerokości 1 piksela od krawędzi ekranu"
+
+#~ msgid "All the area of the dock is active"
+#~ msgstr "Aktywny cały obszar paska"
+
+#~ msgid "Customize actions on mouse click"
+#~ msgstr "Dostosowanie kliknięcia przyciskiem myszy"
+
+#~ msgid "Action on clicking on running app"
+#~ msgstr "Działanie kliknięcia ikony uruchomionego programu"
+
+#~ msgid "Minimize window on shift+click (double click for all app windows)"
+#~ msgstr ""
+#~ "Minimalizowanie okien kliknięciem z przytrzymanym klawiszem shift\n"
+#~ "(dwukrotne kliknięcie minimalizuje wszystkie okna programu)"
+
+#~ msgid "Appearence and Themes"
+#~ msgstr "Wygląd"
+
+#~ msgid ""
+#~ "A customized theme is built in the extension. This is meant to work with "
+#~ "the default Adwaita theme: the dash is shrunk to save space, its "
+#~ "background transparency reduced, and custom indicators for the number of "
+#~ "windows of each application are added."
+#~ msgstr ""
+#~ "Wraz z rozszerzeniem udostępniony jest zmodyfikowany styl paska, "
+#~ "zaprojektowany do działania z domyślnym stylem Adwaita: pasek został "
+#~ "zmniejszony, zredukowano jego przezroczystość i dodano wskaźniki ilości "
+#~ "okien programów."
+
+#~ msgid ""
+#~ "Alternatively, for a better integration with custom themes, each "
+#~ "customization can be applied indipendently"
+#~ msgstr ""
+#~ "Dla lepszego dopasowania do stylu, każdą z cech można dostosować "
+#~ "niezależnie."
+
+#~ msgid "Shrink the dash size by reducing padding"
+#~ msgstr "Zmniejszenie odległości krawędzi"
+
+#~ msgid "Only when in autohide"
+#~ msgstr "Włączenie tylko podczas automatycznego ukrywania"
diff --git a/package/po/pt.po b/package/po/pt.po
new file mode 100644
index 0000000000000000000000000000000000000000..f4209c8f2c75a20e3c3f1cc7b442c065b40252b5
--- /dev/null
+++ b/package/po/pt.po
@@ -0,0 +1,526 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Carlos Alberto Junior Spohr Poletto <carlos.spohr@gmail.com>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2012-12-20 20:45+1100\n"
+"Last-Translator: Carlos Alberto Junior Spohr Poletto <carlos."
+"spohr@gmail>com>\n"
+"Language-Team: Carlos Alberto Junior Spohr Poletto <carlos.spohr@gmail>\n"
+"Language: pt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Portuguese\n"
+"X-Poedit-Country: Portugal\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr ""
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr ""
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr ""
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr ""
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr ""
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr ""
+
+#: prefs.js:386
+#, fuzzy
+msgid "Show dock and application numbers"
+msgstr "Mostrar aplicações em execução"
+
+#: prefs.js:443
+#, fuzzy
+msgid "Customize middle-click behavior"
+msgstr "Alterar a opacidade do fundo do dock"
+
+#: prefs.js:514
+#, fuzzy
+msgid "Customize running indicators"
+msgstr "Mostrar aplicações em execução"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr ""
+
+#: Settings.ui.h:1
+#, fuzzy
+msgid "Customize indicator style"
+msgstr "Alterar a opacidade do fundo do dock"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr ""
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr ""
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr ""
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr ""
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr ""
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr ""
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr ""
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr ""
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr ""
+
+#: Settings.ui.h:14
+#, fuzzy
+msgid "Raise window"
+msgstr "Minimizar"
+
+#: Settings.ui.h:15
+#, fuzzy
+msgid "Minimize window"
+msgstr "Minimizar"
+
+#: Settings.ui.h:16
+#, fuzzy
+msgid "Launch new instance"
+msgstr "Abrir uma nova janela"
+
+#: Settings.ui.h:17
+#, fuzzy
+msgid "Cycle through windows"
+msgstr "Percorrer janelas de aplicativos"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr ""
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:20
+msgid "Middle-Click action"
+msgstr ""
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:22
+msgid "Shift+Middle-Click action"
+msgstr ""
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr ""
+
+#: Settings.ui.h:24
+msgid "Show on all monitors."
+msgstr ""
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr ""
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr ""
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr ""
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the the current application. "
+"More refined settings are available."
+msgstr ""
+
+#: Settings.ui.h:31
+#, fuzzy
+msgid "Intelligent autohide"
+msgstr "Ocultação inteligente"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr ""
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr ""
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr ""
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr ""
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr ""
+
+#: Settings.ui.h:37
+#, fuzzy
+msgid "Show favorite applications"
+msgstr "Mostrar ícones das aplicações favoritas"
+
+#: Settings.ui.h:38
+#, fuzzy
+msgid "Show running applications"
+msgstr "Mostrar aplicações em execução"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr ""
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr ""
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+
+#: Settings.ui.h:42
+#, fuzzy
+msgid "Show <i>Applications</i> icon"
+msgstr "Mostrar aplicações em execução"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr ""
+
+#: Settings.ui.h:44
+#, fuzzy
+msgid "Animate <i>Show Applications</i>."
+msgstr "Mostrar aplicações em execução"
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr ""
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr ""
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr ""
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr ""
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Minimizar"
+
+#: Settings.ui.h:51
+#, fuzzy
+msgid "Minimize or overview"
+msgstr "Minimizar"
+
+#: Settings.ui.h:52
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr ""
+
+#: Settings.ui.h:53
+msgid "Scroll action"
+msgstr ""
+
+#: Settings.ui.h:54
+#, fuzzy
+msgid "Do nothing"
+msgstr "Não faça nada (padrão)"
+
+#: Settings.ui.h:55
+#, fuzzy
+msgid "Switch workspace"
+msgstr "Trocar de espaço de trabalho um por vez"
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr ""
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr ""
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr ""
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr ""
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr ""
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr ""
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr ""
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr ""
+
+#: Settings.ui.h:65
+#, fuzzy
+msgid "Tune the dash background opacity."
+msgstr "Alterar a opacidade do fundo do dock"
+
+#: Settings.ui.h:66
+#, fuzzy
+msgid "Customize opacity"
+msgstr "Alterar a opacidade do fundo do dock"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Opacidade"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr ""
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr ""
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr ""
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr ""
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr ""
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr ""
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"See the <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, version 2 or later</a> for details.</span>"
+msgstr ""
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr ""
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr ""
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Masquage automatique"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr ""
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr ""
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr ""
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr ""
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr ""
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr ""
+
+#: Settings.ui.h:86
+#, fuzzy
+msgid "Only maximized windows"
+msgstr "Minimizar"
+
+#: Settings.ui.h:87
+#, fuzzy
+msgid "Animation duration (s)"
+msgstr "Tempo da animação [ms]"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr ""
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr ""
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr ""
+
+#, fuzzy
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Trocar de espaço de trabalho quando scrolar o mouse sobre o dock"
+
+#~ msgid "Main Settings"
+#~ msgstr "Configurações principais"
+
+#~ msgid "Dock is fixed and always visible"
+#~ msgstr "O Dock está fixo e sempre visível"
+
+#~ msgid "Show delay [ms]"
+#~ msgstr "Mostrar delay [ms]"
+
+#~ msgid "Hide delay [ms]"
+#~ msgstr "Ocultar delay [ms]"
+
+#~ msgid "Application based intellihide"
+#~ msgstr "Ocultação inteligente por aplicação"
+
+#~ msgid "Show the dock on following monitor (if attached)"
+#~ msgstr "Mostrar o dock nos monitores abaixo (se anexados)"
+
+#~ msgid "Primary (default)"
+#~ msgstr "Primário (por padrão)"
+
+#~ msgid "1"
+#~ msgstr "1"
+
+#~ msgid "2"
+#~ msgstr "2"
+
+#~ msgid "3"
+#~ msgstr "3"
+
+#~ msgid "4"
+#~ msgstr "4"
+
+#~ msgid "Max height"
+#~ msgstr "Altura máxima"
+
+#~ msgid "Expand (experimental and buggy)"
+#~ msgstr "Expandir (experimental e bugada)"
+
+#~ msgid "Maximum icon size"
+#~ msgstr "Tamanho máximo dos ícones"
+
+#~ msgid "16"
+#~ msgstr "16"
+
+#~ msgid "24"
+#~ msgstr "24"
+
+#~ msgid "32"
+#~ msgstr "32"
+
+#~ msgid "48"
+#~ msgstr "48"
+
+#~ msgid "64"
+#~ msgstr "64"
+
+#~ msgid "Optional features"
+#~ msgstr "Recursos opcionais"
+
+#~ msgid "Only a 1px wide area close to the screen edge is active"
+#~ msgstr ""
+#~ "Somente uma área de 1px de largura na borda da tela quando estiver ativa"
+
+#~ msgid "All the area of the dock is active"
+#~ msgstr "Toda a área quando o dock estiver ativo"
+
+#~ msgid "Customize actions on mouse click"
+#~ msgstr "Alterar configurações do click do mouse"
+
+#~ msgid "Action on clicking on running app"
+#~ msgstr "Ações de clique em aplicações em execução"
+
+#~ msgid "Minimize window on shift+click (double click for all app windows)"
+#~ msgstr ""
+#~ "Minimizar a janela com shift+click (clique duplo para todas as janelas de "
+#~ "aplicação)"
+
+#~ msgid "Only when in autohide"
+#~ msgstr "Somente quando estiver em auto-esconder"
diff --git a/package/po/pt_BR.po b/package/po/pt_BR.po
new file mode 100644
index 0000000000000000000000000000000000000000..9545d015adc09abf66b7b08257b587b28bdf916e
--- /dev/null
+++ b/package/po/pt_BR.po
@@ -0,0 +1,555 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Carlos Alberto Junior Spohr Poletto <carlos.spohr@gmail.com>, 2012.
+# Fábio Nogueira <fnogueira@gnome.org>, 2016.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2017-04-16 23:10-0300\n"
+"Last-Translator: Fábio Nogueira <fnogueira@gnome.org>\n"
+"Language-Team: Português do Brasil\n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.1\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Monitor primário"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Monitor secundário"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Direita"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Esquerda"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Configuração da ocultação inteligente"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Restaurar o padrão"
+
+#: prefs.js:386
+msgid "Show dock and application numbers"
+msgstr "Exibir o dock e os números dos aplicativos"
+
+#: prefs.js:443
+msgid "Customize middle-click behavior"
+msgstr "Customizar o comportamento do clique do botão do meio"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "Customizar os indicadores de execução"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Todas as Janelas"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Customizar o estilo do indicador"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Cor"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Cor da borda"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Tamanho da borda"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "Sobreposição de número"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Mostrar temporariamente os números dos aplicativos sobre os ícones, "
+"correspondentes ao atalho."
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr "Exibir o dock se este estiver oculto"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Se utilizar a ocultação, o dock será exibido por um curto período de tempo "
+"ao acionar o atalho."
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "Atalho para as opções acima"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Sintaxe: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Ocultar tempo limite [s]"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Quando minimizar, o duplo clique minizará todas as janelas dos aplicativos"
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Ação do Shift+Clique"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "Aumentar janela"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Minimizar janela"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Iniciar nova instância"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Percorrer através das janelas"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr "Sair"
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr "Comportamento do Clique do botão do meio."
+
+#: Settings.ui.h:20
+msgid "Middle-Click action"
+msgstr "Ação do clique do botão do meio"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Comportamento para Shift + Clique do botão do meio."
+
+#: Settings.ui.h:22
+msgid "Shift+Middle-Click action"
+msgstr "Ação do Shift+Clique do botão do meio"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Exibir o dock"
+
+#: Settings.ui.h:24
+#, fuzzy
+msgid "Show on all monitors."
+msgstr "Monitor secundário"
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Posição na tela"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Embaixo"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Em cima"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the the current application. "
+"More refined settings are available."
+msgstr ""
+"Ocultar o dock quando o mesmo sobrepor a janela do aplicativo em uso. "
+"Definições mais aperfeiçoadas estão disponíveis."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Ocultação inteligente"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Tamanho limite do dock"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Modo do painel: estender até a borda da tela"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Tamanho limite do ícone"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Tamanho do ícone fixo: use o scroll do mouse para revelar outro ícone"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Posição e tamanho"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Mostrar aplicativos favoritos"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Mostrar aplicativos em execução"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "Isolar espaços de trabalho."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Mostrar pré-visualizações de janelas abertas."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Se desabilitado, essas configurações estão acessíveis através do gnome-tweak-"
+"tool ou no site da extensão."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Exibir ícone dos <i>Aplicativos</i>"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Mover o botão de aplicativos para o início do dock."
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "<i>Mostrar aplicativos</i> com efeitos."
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Lançadores"
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Habilita tecla Super+(0-9) como atalhos para ativar aplicativos. Também pode "
+"ser usado junto com Shift e Ctrl."
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Usar atalhos de teclado para ativar aplicativos"
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Comportamento ao clicar sobre o ícone de um aplicativo em execução."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Ação do clique"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Minimizar"
+
+#: Settings.ui.h:51
+#, fuzzy
+msgid "Minimize or overview"
+msgstr "Minimizar janela"
+
+#: Settings.ui.h:52
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Comportamento ao rolar sobre o ícone de um aplicativo."
+
+#: Settings.ui.h:53
+msgid "Scroll action"
+msgstr "Ação da rolagem"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Não fazer nada"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr "Alternar espaço de trabalho"
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Comportamento"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Algumas personalizações se destinam a integrar o dock com o tema padrão do "
+"GNOME. Alternativamente, as opções específicas podem ser ativadas abaixo."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Usar o tema do sistema"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Economizar espaço reduzindo preenchimento e a borda arredondada"
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Encolher o dash"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Mostrar um ponto para cada janela do aplicativo"
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Mostrar indicadores de contador de janelas"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "Define a cor de fundo para o dash."
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "Customizar a cor do dash"
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Ajustar a opacidade do fundo do dash."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Customizar opacidade"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Opacidade"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr "Forçar canto reto\n"
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Aparência"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "versão:"
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Mover o dash para fora da visão geral transformando-o em dock"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Criado por"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Página Web"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"See the <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, version 2 or later</a> for details.</span>"
+msgstr ""
+"<span size=\"small\">Este programa é distribuido SEM QUALQUER GARANTIA.\n"
+"Veja em <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, versão 2 ou posterior</a> para maiores "
+"detalhes.</span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "Sobre"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Mostrar o dock quando o mouse pairar sobre a tela."
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Ocultação"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Empurrar para mostrar: requer pressão para mostrar o dock"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "Habilitar modo tela cheia"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Mostrar o dock quando nenhum aplicativo sobrepor o mesmo."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Esconder janela"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Todas as janelas"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Apenas janelas de aplicativos em foco"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Somente janelas maximizadas"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Tempo da animação [s]"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Mostrar tempo limite [s]"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Limite de pressão"
+
+#~ msgid "New Window"
+#~ msgstr "Nova janela"
+
+#~ msgid "Launch using Dedicated Graphics Card"
+#~ msgstr "Inicia utilizando uma placa gráfica dedicada"
+
+#~ msgid "Remove from Favorites"
+#~ msgstr "Remover dos favoritos"
+
+#~ msgid "Add to Favorites"
+#~ msgstr "Adicionar aos favoritos"
+
+#~ msgid "Show Details"
+#~ msgstr "Exibir detalhes"
+
+#~ msgid "Windows"
+#~ msgstr "Janelas"
+
+#~ msgid "Settings"
+#~ msgstr "Configurações"
+
+#~ msgid "Dash"
+#~ msgstr "Dash"
+
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "Com o tamanho do ícone fixo, somente a borda do dock e o ícone <i>Mostrar "
+#~ "aplicativos</i> são ativados."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr ""
+#~ "Trocar de área de trabalho quando usar o scroll do mouse sobre o dock"
+
+#~ msgid "Only consider windows of the focused application"
+#~ msgstr "Considere apenas janelas de aplicativos em uso."
+
+#~ msgid "Dock is fixed and always visible"
+#~ msgstr "O Dock está fixo e sempre visível"
+
+#~ msgid "Show delay [ms]"
+#~ msgstr "Mostrar delay [ms]"
+
+#~ msgid "Hide delay [ms]"
+#~ msgstr "Ocultar delay [ms]"
+
+#~ msgid "Application based intellihide"
+#~ msgstr "Ocultação inteligente por aplicação"
+
+#~ msgid "Show the dock on following monitor (if attached)"
+#~ msgstr "Mostrar o dock nos monitores abaixo (se anexados)"
+
+#~ msgid "Primary (default)"
+#~ msgstr "Primário (por padrão)"
+
+#~ msgid "1"
+#~ msgstr "1"
+
+#~ msgid "2"
+#~ msgstr "2"
+
+#~ msgid "3"
+#~ msgstr "3"
+
+#~ msgid "4"
+#~ msgstr "4"
+
+#~ msgid "Max height"
+#~ msgstr "Altura máxima"
+
+#~ msgid "Expand (experimental and buggy)"
+#~ msgstr "Expandir (experimental e bugada)"
+
+#~ msgid "Maximum icon size"
+#~ msgstr "Tamanho máximo dos ícones"
+
+#~ msgid "16"
+#~ msgstr "16"
+
+#~ msgid "24"
+#~ msgstr "24"
+
+#~ msgid "32"
+#~ msgstr "32"
+
+#~ msgid "48"
+#~ msgstr "48"
+
+#~ msgid "64"
+#~ msgstr "64"
+
+#~ msgid "Optional features"
+#~ msgstr "Recursos opcionais"
+
+#~ msgid "Only a 1px wide area close to the screen edge is active"
+#~ msgstr ""
+#~ "Somente uma área de 1px de largura na borda da tela quando estiver ativa"
+
+#~ msgid "All the area of the dock is active"
+#~ msgstr "Toda a área quando o dock estiver ativo"
+
+#~ msgid "Customize actions on mouse click"
+#~ msgstr "Alterar configurações do click do mouse"
+
+#~ msgid "Action on clicking on running app"
+#~ msgstr "Ações de clique em aplicações em execução"
+
+#~ msgid "Minimize window on shift+click (double click for all app windows)"
+#~ msgstr ""
+#~ "Minimizar a janela com shift+click (clique duplo para todas as janelas de "
+#~ "aplicação)"
+
+#~ msgid "Only when in autohide"
+#~ msgstr "Somente quando estiver em auto-esconder"
diff --git a/package/po/ru.po b/package/po/ru.po
new file mode 100644
index 0000000000000000000000000000000000000000..ad19a5faf37d92b03151a18651a8e77f92e3709e
--- /dev/null
+++ b/package/po/ru.po
@@ -0,0 +1,564 @@
+# Russian translation for dash-to-dock GNOME Shell extension
+# Ivan Komaritsyn <vantu5z@mail.ru>, 2015, 2016.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: dash-to-dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2017-04-28 13:26+0300\n"
+"Last-Translator: Ivan Komaritsyn <vantu5z@mail.ru>\n"
+"Language-Team: \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: Gtranslator 2.91.7\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Основной монитор"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Дополнительный монитор"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Справа"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Слева"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Настройка автоскрытия"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Сбросить настройки"
+
+#: prefs.js:386
+msgid "Show dock and application numbers"
+msgstr "Показывать количество запущенных приложений"
+
+#: prefs.js:443
+msgid "Customize middle-click behavior"
+msgstr "Настройка действий для средней кнопки мыши"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "Настройка индикаторов запуска"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Все окна"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Настроить стиль индикатора"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Цвет"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Цвет границы"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Ширина границы"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "Отображение номера"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Временно показывать номера приложений рядом с иконками, при нажатии "
+"сочетания клавиш."
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr "Показать Док, если он скрыт"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Если используется автоматическое скрытие, то Док кратковреммено появится при "
+"обработке сочетания клавиш."
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "Сочетания клавиш для указанных параметров"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Синтаксис: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Задержка скрытия (сек.)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Если установлено на «Минимизировать», то двойной клик минимизирует все окна "
+"данного приложения."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Действие по Shift+Click"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "Показать окно"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Минимизировать окно"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Открыть новое окно"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Переключить окно приложения"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr "Выйти"
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr "Действие по нажатию средней кнопки мыши."
+
+#: Settings.ui.h:20
+msgid "Middle-Click action"
+msgstr "Действие по Middle-Click"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Действие по нажатию Shift + средняя кнопка мыши."
+
+#: Settings.ui.h:22
+msgid "Shift+Middle-Click action"
+msgstr "Действие по Shift+Middle-Click"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Показывать Док на"
+
+#: Settings.ui.h:24
+msgid "Show on all monitors."
+msgstr "Показывать на всех мониторах."
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Расположение на экране"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Снизу"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Сверху"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the the current application. "
+"More refined settings are available."
+msgstr ""
+"Скрывать Док, если он перекрывается окном активного приложения. Доступны "
+"дополнительные настройки."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Интеллектуальное скрытие"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Ограничение размера Дока"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Режим панели: Док растянут по всей стороне экрана"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Ограничение размера иконок"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr ""
+"Фиксированный размер иконок: используйте прокрутку для доступа к нужному "
+"приложению"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Положение и размер"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Показывать избранные приложения"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Показывать запущенные приложения"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "Для текущего рабочего стола."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Показывать миниатюры открытых окон."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Если отключено, то эти настройки доступны в gnome-tweak-tool или через сайт "
+"дополнений."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Показывать иконку <i>«Приложения»</i>"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Расположить кнопку «Приложения» с другой стороны Дока."
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Анимация при показе <i>«Приложений»</i>"
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Команды"
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Включить сочетания клавиш Super+(0-9) для выбора приложений. Также может "
+"быть использовано совместно с Shift и Ctrl."
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Использовать сочетания клавиш для выбора приложений"
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Поведение при нажатии на иконку запущенного приложения."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Действие по нажатию"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Минимизировать"
+
+#: Settings.ui.h:51
+msgid "Minimize or overview"
+msgstr "Минимизация или обзор"
+
+#: Settings.ui.h:52
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Поведение при прокрутке на иконке приложения."
+
+#: Settings.ui.h:53
+msgid "Scroll action"
+msgstr "Действие при прокрутке"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Ничего не делать"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr "Переключить рабочий стол"
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Поведение"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Сбалансированные настройки для интеграции Дока с темой Gnome по умолчанию. "
+"Ниже можно установить настройки вручную."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Использовать встроенную тему"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr ""
+"Экономия рабочего пространства за счёт уменьшения промежутков и "
+"использования скругленных углов."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Сжать Док"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Отображает точку для каждого окна приложения."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Показывать индикаторы количества окон"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "Вобор цвета фона для панели."
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "Настроить цвет Дока"
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Настройка прозрачности фона Дока."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Настроить прозрачность"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Непрозрачность"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr "Не скруглять углы\n"
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Внешний вид"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "версия: "
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Показывает панель из режима «Обзор» в виде дока"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Автор"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Домашняя страница"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"See the <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, version 2 or later</a> for details.</span>"
+msgstr ""
+"<span size=\"small\">Эта программа распространяется БЕЗ КАКИХ ЛИБО "
+"ГАРАНТИЙ.\n"
+"Смотри <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, версия 2 или позднее</a> для информации.</"
+"span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "О дополнении"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Показывать Док при подведении мыши к стороне экрана."
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Автоматическое скрытие"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Давление для появления: требуется давление для открытия Дока"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "Включить для полноэкранного режима"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Скрывать Док, когда он перекрыт окнами приложений"
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Перекрытие окнами"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Все окна"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Только активное окно приложения"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Только развёрнутые окна"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Время анимации (сек.)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Задержка открытия (сек.)"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Порог давления"
+
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "При фиксированном размере иконок приложений активна только область иконки "
+#~ "<i>«Приложения»</i> и край дока."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Переключать рабочие столы при прокрутке на Доке"
+
+#~ msgid "Only consider windows of the focused application"
+#~ msgstr "Применить только к активным окнам приложений"
+
+#~ msgid "Main Settings"
+#~ msgstr "Основные настройки"
+
+#~ msgid "Dock Position"
+#~ msgstr "Расположение Дока"
+
+#~ msgid "Dock is fixed and always visible"
+#~ msgstr "Док зафиксирован и всегда виден"
+
+#~ msgid "Show delay [ms]"
+#~ msgstr "Задержка перед появлением [мс]"
+
+#~ msgid "Hide delay [ms]"
+#~ msgstr "Задержка перед скрытием [мс]"
+
+#~ msgid "Application based intellihide"
+#~ msgstr "Интеллектуальное скрытие действует только для активных окон"
+
+#~ msgid "Show the dock on following monitor (if attached)"
+#~ msgstr "Показывать Док на дополнительном мониторе (если подключен)"
+
+#~ msgid "Primary (default)"
+#~ msgstr "Главный (по умолчанию)"
+
+#~ msgid "1"
+#~ msgstr "1"
+
+#~ msgid "2"
+#~ msgstr "2"
+
+#~ msgid "3"
+#~ msgstr "3"
+
+#~ msgid "4"
+#~ msgstr "4"
+
+#~ msgid "Max height"
+#~ msgstr "Максимальная высота"
+
+#~ msgid "Expand (experimental and buggy)"
+#~ msgstr "Расширяемый (экспериментально и неустойчиво)"
+
+#~ msgid "Maximum icon size"
+#~ msgstr "Максимальный размер иконки"
+
+#~ msgid "16"
+#~ msgstr "16"
+
+#~ msgid "24"
+#~ msgstr "24"
+
+#~ msgid "32"
+#~ msgstr "32"
+
+#~ msgid "48"
+#~ msgstr "48"
+
+#~ msgid "64"
+#~ msgstr "64"
+
+#~ msgid "Optional features"
+#~ msgstr "Дополнительные функции"
+
+#~ msgid "Deadtime between each workspace switching [ms]"
+#~ msgstr "Задержка между каждым переключением [мс]"
+
+#~ msgid "Only a 1px wide area close to the screen edge is active"
+#~ msgstr "Активная область - 1 пиксель от края экрана"
+
+#~ msgid "All the area of the dock is active"
+#~ msgstr "Активен весь Док"
+
+#~ msgid "Customize actions on mouse click"
+#~ msgstr "Настроить действия по нажатию мыши"
+
+#~ msgid "Action on clicking on running app"
+#~ msgstr "Действие по нажатию на иконку запущенного приложения"
+
+#~ msgid "Minimize window on shift+click (double click for all app windows)"
+#~ msgstr ""
+#~ "Минимизировать окно при shift+click (двойное нажатие скрывает все окна "
+#~ "приложений)"
+
+#~ msgid "Make message tray insensitive to mouse events"
+#~ msgstr "Сделать область сообщений нечувствительной к мыши"
+
+#~ msgid "Appearence and Themes"
+#~ msgstr "Внешний вид и Темы"
+
+#~ msgid ""
+#~ "A customized theme is built in the extension. This is meant to work with "
+#~ "the default Adwaita theme: the dash is shrunk to save space, its "
+#~ "background transparency reduced, and custom indicators for the number of "
+#~ "windows of each application are added."
+#~ msgstr ""
+#~ "Тема встроена в расширение. Она оптимизирована для темы Adwaita по "
+#~ "умолчанию: Док уменьшен, чтобы сохранить пространство; прозрачность фона "
+#~ "снижена; включены индикаторы количества окон для каждого приложения."
+
+#~ msgid ""
+#~ "Alternatively, for a better integration with custom themes, each "
+#~ "customization can be applied indipendently"
+#~ msgstr ""
+#~ "Для большей интеграции с пользовательской темой, каждый параметр можно "
+#~ "настроить независимо"
+
+#~ msgid "Shrink the dash size by reducing padding"
+#~ msgstr "Уменьшить Док за счёт промежутков"
diff --git a/package/po/sk.po b/package/po/sk.po
new file mode 100644
index 0000000000000000000000000000000000000000..5f9997e0e4155ba84f429f97d1aabd8038557aa2
--- /dev/null
+++ b/package/po/sk.po
@@ -0,0 +1,454 @@
+# Slovak translation of dash-to-dock.
+# Copyright (C) 2016 Dušan Kazik
+# This file is distributed under the same license as the PACKAGE package.
+# Dušan Kazik <prescott66@gmail.com>, 2015, 2016.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2016-07-15 12:48+0200\n"
+"Last-Translator: Dušan Kazik <prescott66@gmail.com>\n"
+"Language-Team: \n"
+"Language: sk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Hlavnom monitore"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Vedľajšom monitore"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Vpravo"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Vľavo"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Prispôsobenie inteligentného automatického skrývania"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Obnoviť pôvodné"
+
+#: prefs.js:386
+#, fuzzy
+msgid "Show dock and application numbers"
+msgstr "Zobraziť spustené aplikácie"
+
+#: prefs.js:443
+#, fuzzy
+msgid "Customize middle-click behavior"
+msgstr "Prispôsobenie štýlu indikátorov"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "Prispôsobenie "
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Všetky okná"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Prispôsobenie štýlu indikátorov"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Farba"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Farba okraja"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Šírka okraja"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr ""
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+
+#: Settings.ui.h:7
+#, fuzzy
+msgid "Show the dock if it is hidden"
+msgstr "Zobraziť dok na"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr ""
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr ""
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Časový limit na skrytie (s)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Keď je nastavené na minimalizovanie, dvojklik minimalizuje všetky okná "
+"aplikácie."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Akcia Shift+Kliknutie"
+
+#: Settings.ui.h:14
+#, fuzzy
+msgid "Raise window"
+msgstr "Minimalizovať okno"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Minimalizovať okno"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Spustiť novú inštanciu"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Striedať okná"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr ""
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:20
+#, fuzzy
+msgid "Middle-Click action"
+msgstr "Akcia po kliknutí"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:22
+#, fuzzy
+msgid "Shift+Middle-Click action"
+msgstr "Akcia Shift+Kliknutie"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Zobraziť dok na"
+
+#: Settings.ui.h:24
+#, fuzzy
+msgid "Show on all monitors."
+msgstr "Vedľajšom monitore"
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Pozícia na obrazovke"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Na spodku"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Na vrchu"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the the current application. "
+"More refined settings are available."
+msgstr ""
+"Skryť dok, keď zasahuje do okna aktuálnej aplikácie. Sú dostupné "
+"podrobnejšie nastavenia."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Inteligentné automatické skrývanie"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Limit veľkosti doku"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Režim panelu: roztiahnutie k hranám obrazovky"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Limit veľkosti ikôn"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Pevná veľkosť ikôn: rolovaním odhalíte ostatné ikony"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Pozícia a veľkosť"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Zobraziť obľúbené aplikácie"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Zobraziť spustené aplikácie"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "Oddelené pracovné priestory."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr ""
+
+#: Settings.ui.h:41
+#, fuzzy
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Ak je voľba zakázaná, nastavenia sú dostupné z nástroja na vyladenie "
+"nastavení prostredia Gnome alebo webovej stránky rozšírenia."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Zobraziť ikonu <i>Aplikácie</i>"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Premiestni tlačidlo aplikácií na začiatok doku."
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animovať položku <i>Zobraziť aplikácie</i>."
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr ""
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr ""
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Správanie pri kliknutí na ikonu spustenej aplikácie."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Akcia po kliknutí"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Minimalizovať"
+
+#: Settings.ui.h:51
+#, fuzzy
+msgid "Minimize or overview"
+msgstr "Minimalizovať okno"
+
+#: Settings.ui.h:52
+#, fuzzy
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Správanie pri kliknutí na ikonu spustenej aplikácie."
+
+#: Settings.ui.h:53
+#, fuzzy
+msgid "Scroll action"
+msgstr "Akcia po kliknutí"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Nevykonať nič"
+
+#: Settings.ui.h:55
+#, fuzzy
+msgid "Switch workspace"
+msgstr "Oddelené pracovné priestory."
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Správanie"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Niekoľko úprav na integrovanie doku s predvolenou témou prostredia GNOME. "
+"Alternatívne môžu byť povolené špecifické voľby nižšie."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Použiť zabudovanú tému"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Ušetrí miesto zmenšením rádiusu odsadenia a okrajov."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Zmenšiť panel"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Zobrazí bodku za každé okno aplikácie."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Zobraziť indikátory počítadiel okien"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "Nastaví farbu pozadia panelu."
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "Prispôsobenie farby panelu"
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Vyladí krytie pozadia panelu."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Prispôsobenie krytia"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Krytie"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr ""
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Vzhľad"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "Verzia: c"
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Presunie panel z prehľadu transformovaním do doku"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Vytvoril"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Webová stránka"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"See the <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, version 2 or later</a> for details.</span>"
+msgstr ""
+"<span size=\"small\">Tento program je ABSOLÚTNE BEZ ZÁRUKY.\n"
+"Pre viac podrobností si pozrite <a href=\"https://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html\">Licenciu GNU General Public, verzie 2 alebo novšiu</"
+"a>.</span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "O rozšírení"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Zobrazí dok prejdením myši na hranu obrazovky."
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Automatické skrytie"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Zobraziť stlačením: vyžaduje tlak na zobrazenie doku"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "Povoliť v režime na celú obrazovku"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Zobrazí dok, keď nebude zasahovať do okien aplikácií."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Vyhýbať sa oknám"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Všetky okná"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Iba zamerané okná aplikácií"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Iba maximalizované okná"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Trvanie animácie (s)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Zobraziť časový limit (s)"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Medza tlaku"
+
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "S pevnou veľkosťou ikon je aktívna iba hrana doku a ikona <i>Zobraziť "
+#~ "aplikácie</i>."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Prepínať pracovné priestory rolovaním na doku"
diff --git a/package/po/sr.po b/package/po/sr.po
new file mode 100644
index 0000000000000000000000000000000000000000..76e659e5b3f92ac5be54f75ab680cf04f326dfd5
--- /dev/null
+++ b/package/po/sr.po
@@ -0,0 +1,465 @@
+# 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.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2015-07-29 18:11+0200\n"
+"Last-Translator: Слободан Терзић <Xabre@archlinux.info>\n"
+"Language-Team: \n"
+"Language: sr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.2\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "примарном монитору"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "секундарном монитору"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "десно"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "лево"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Поставке интелигентног самосакривања"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Поврати основно"
+
+#: prefs.js:386
+#, fuzzy
+msgid "Show dock and application numbers"
+msgstr "Приказ покренутих програма"
+
+#: prefs.js:443
+#, fuzzy
+msgid "Customize middle-click behavior"
+msgstr "Прилагоћавање прозирности"
+
+#: prefs.js:514
+#, fuzzy
+msgid "Customize running indicators"
+msgstr "Приказ покренутих програма"
+
+#: appIcons.js:804
+#, fuzzy
+msgid "All Windows"
+msgstr "Избегавање розора"
+
+#: Settings.ui.h:1
+#, fuzzy
+msgid "Customize indicator style"
+msgstr "Прилагоћавање прозирности"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr ""
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr ""
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr ""
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr ""
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+
+#: Settings.ui.h:7
+#, fuzzy
+msgid "Show the dock if it is hidden"
+msgstr "Прикажи док на"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr ""
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr ""
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Застој скривања"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Кад је постављено на минимизовање, дупли клик минимизује све прозоре "
+"програма."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Радња шифт+клика"
+
+#: Settings.ui.h:14
+#, fuzzy
+msgid "Raise window"
+msgstr "минимиуј прозор"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "минимиуј прозор"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "покрени нови примерак"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "кружење кроз прозоре"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr ""
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:20
+#, fuzzy
+msgid "Middle-Click action"
+msgstr "Радња клика"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:22
+#, fuzzy
+msgid "Shift+Middle-Click action"
+msgstr "Радња шифт+клика"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Прикажи док на"
+
+#: Settings.ui.h:24
+#, fuzzy
+msgid "Show on all monitors."
+msgstr "секундарном монитору"
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Позиција на екрану"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "дно"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "врх"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the the current application. "
+"More refined settings are available."
+msgstr ""
+"Сакриј док када је на путу прозора тренутног програма. Доступне су финије "
+"поставке."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Интелигентно самосакривање"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Ограничење величине дока"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Режим панела: проширен до ивица екрана"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Ограничење величине икона"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Устаљена величина икона: клизајте за друге иконе"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Позиција и величина"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Приказ омиљених програма"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Приказ покренутих програма"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr ""
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr ""
+
+#: Settings.ui.h:41
+#, fuzzy
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Уколико је онемогућено, ове поставке су доступне кроз алатку за лицкање или "
+"веб сајт проширења."
+
+#: Settings.ui.h:42
+#, fuzzy
+msgid "Show <i>Applications</i> icon"
+msgstr "Приказ иконе <i>Прикажи програме</i>"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Помери дугме програма на почетак дока"
+
+#: Settings.ui.h:44
+#, fuzzy
+msgid "Animate <i>Show Applications</i>."
+msgstr "Приказ иконе <i>Прикажи програме</i>"
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr ""
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr ""
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Понашање при клику на покренути програм."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Радња клика"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "минимизуј"
+
+#: Settings.ui.h:51
+#, fuzzy
+msgid "Minimize or overview"
+msgstr "минимиуј прозор"
+
+#: Settings.ui.h:52
+#, fuzzy
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Понашање при клику на покренути програм."
+
+#: Settings.ui.h:53
+#, fuzzy
+msgid "Scroll action"
+msgstr "Радња клика"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "ништа"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr ""
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Понашање"
+
+#: Settings.ui.h:57
+#, fuzzy
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Неколико поставки је намењено уграђивању дока у основну тему Гнома. "
+"Алтернативно, посебне поставке се могу уредити испод."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Користи уграђену тему"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Чува простор сужавањем попуне и опсега ивица."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Скупи плочу"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Приказује тачку за сваки прозор програма."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Приказ индикаторa бројача прозора."
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr ""
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr ""
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Прилагоди прозирност позадине плоче."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Прилагоћавање прозирности"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Прозирност"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr ""
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Изглед"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "верзија:"
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Помера плочу из глобалног приказа, претварајући је у док"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Направи"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Веб страница"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"See the <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, version 2 or later</a> for details.</span>"
+msgstr ""
+"<span size=\"small\">Овај програм се доставља БЕЗ ИКАКВИХ ГАРАНЦИЈА.\n"
+"Погледајте <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">ГНУову Општу Јавну лиценцу, верзија 2 или каснија</a>, за детаље.</span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "О програму"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Прикажи док прелазом миша пеко ивице екрана."
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Самоскривање"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Приказ притиском: захтева притисак за приказ дока"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr ""
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Приказује док када није на путу прозорима програма."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Избегавање розора"
+
+#: Settings.ui.h:84
+#, fuzzy
+msgid "All windows"
+msgstr "Избегавање розора"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr ""
+
+#: Settings.ui.h:86
+#, fuzzy
+msgid "Only maximized windows"
+msgstr "минимиуј прозор"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Трајање(а) анимације"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0,000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Застој приказивања"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Праг притиска"
+
+#, fuzzy
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "Ако се иконе преклапају на доку, приказује се само икона <i>Прикажи "
+#~ "програме</i>."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Промена радног простора клизањем по доку"
+
+#~ msgid "Only consider windows of the focused application"
+#~ msgstr "Разматрај само прозор фокусираног програма"
diff --git a/package/po/sr@latin.po b/package/po/sr@latin.po
new file mode 100644
index 0000000000000000000000000000000000000000..6c01f548ddc68e52bd853b5fab289214eb965a44
--- /dev/null
+++ b/package/po/sr@latin.po
@@ -0,0 +1,464 @@
+# 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.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2015-07-29 18:11+0200\n"
+"Last-Translator: Slobodan Terzić <Xabre@archlinux.info>\n"
+"Language-Team: \n"
+"Language: sr@latin\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.2\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "primarnom monitoru"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "sekundarnom monitoru"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "desno"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "levo"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Postavke inteligentnog samosakrivanja"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Povrati osnovno"
+
+#: prefs.js:386
+#, fuzzy
+msgid "Show dock and application numbers"
+msgstr "Prikaz pokrenutih programa"
+
+#: prefs.js:443
+#, fuzzy
+msgid "Customize middle-click behavior"
+msgstr "Prilagoćavanje prozirnosti"
+
+#: prefs.js:514
+#, fuzzy
+msgid "Customize running indicators"
+msgstr "Prikaz pokrenutih programa"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Izbegavanje rozora"
+
+#: Settings.ui.h:1
+#, fuzzy
+msgid "Customize indicator style"
+msgstr "Prilagoćavanje prozirnosti"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr ""
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr ""
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr ""
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr ""
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+
+#: Settings.ui.h:7
+#, fuzzy
+msgid "Show the dock if it is hidden"
+msgstr "Prikaži dok na"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr ""
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr ""
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Zastoj skrivanja"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Kad je postavljeno na minimizovanje, dupli klik minimizuje sve prozore "
+"programa."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Radnja šift+klika"
+
+#: Settings.ui.h:14
+#, fuzzy
+msgid "Raise window"
+msgstr "minimiuj prozor"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "minimiuj prozor"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "pokreni novi primerak"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "kruženje kroz prozore"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr ""
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:20
+#, fuzzy
+msgid "Middle-Click action"
+msgstr "Radnja klika"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:22
+#, fuzzy
+msgid "Shift+Middle-Click action"
+msgstr "Radnja šift+klika"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Prikaži dok na"
+
+#: Settings.ui.h:24
+#, fuzzy
+msgid "Show on all monitors."
+msgstr "sekundarnom monitoru"
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Pozicija na ekranu"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "dno"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "vrh"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the the current application. "
+"More refined settings are available."
+msgstr ""
+"Sakrij dok kada je na putu prozora trenutnog programa. Dostupne su finije "
+"postavke."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Inteligentno samosakrivanje"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Ograničenje veličine doka"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Režim panela: proširen do ivica ekrana"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Ograničenje veličine ikona"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Ustaljena veličina ikona: klizajte za druge ikone"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Pozicija i veličina"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Prikaz omiljenih programa"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Prikaz pokrenutih programa"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr ""
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr ""
+
+#: Settings.ui.h:41
+#, fuzzy
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Ukoliko je onemogućeno, ove postavke su dostupne kroz alatku za lickanje ili "
+"veb sajt proširenja."
+
+#: Settings.ui.h:42
+#, fuzzy
+msgid "Show <i>Applications</i> icon"
+msgstr "Prikaz ikone <i>Prikaži programe</i>"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Pomeri dugme programa na početak doka"
+
+#: Settings.ui.h:44
+#, fuzzy
+msgid "Animate <i>Show Applications</i>."
+msgstr "Prikaz ikone <i>Prikaži programe</i>"
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr ""
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr ""
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Ponašanje pri kliku na pokrenuti program."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Radnja klika"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "minimizuj"
+
+#: Settings.ui.h:51
+#, fuzzy
+msgid "Minimize or overview"
+msgstr "minimiuj prozor"
+
+#: Settings.ui.h:52
+#, fuzzy
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Ponašanje pri kliku na pokrenuti program."
+
+#: Settings.ui.h:53
+#, fuzzy
+msgid "Scroll action"
+msgstr "Radnja klika"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "ništa"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr ""
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Ponašanje"
+
+#: Settings.ui.h:57
+#, fuzzy
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Nekoliko postavki je namenjeno ugrađivanju doka u osnovnu temu Gnoma. "
+"Alternativno, posebne postavke se mogu urediti ispod."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Koristi ugrađenu temu"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Čuva prostor sužavanjem popune i opsega ivica."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Skupi ploču"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Prikazuje tačku za svaki prozor programa."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Prikaz indikatora brojača prozora."
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr ""
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr ""
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Prilagodi prozirnost pozadine ploče."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Prilagoćavanje prozirnosti"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Prozirnost"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr ""
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Izgled"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "verzija:"
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Pomera ploču iz globalnog prikaza, pretvarajući je u dok"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Napravi"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Veb stranica"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"See the <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, version 2 or later</a> for details.</span>"
+msgstr ""
+"<span size=\"small\">Ovaj program se dostavlja BEZ IKAKVIH GARANCIJA.\n"
+"Pogledajte <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNUovu Opštu Javnu licencu, verzija 2 ili kasnija</a>, za detalje.</span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "O programu"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Prikaži dok prelazom miša peko ivice ekrana."
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Samoskrivanje"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Prikaz pritiskom: zahteva pritisak za prikaz doka"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr ""
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Prikazuje dok kada nije na putu prozorima programa."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Izbegavanje rozora"
+
+#: Settings.ui.h:84
+#, fuzzy
+msgid "All windows"
+msgstr "Izbegavanje rozora"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr ""
+
+#: Settings.ui.h:86
+#, fuzzy
+msgid "Only maximized windows"
+msgstr "minimiuj prozor"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Trajanje(a) animacije"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0,000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Zastoj prikazivanja"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Prag pritiska"
+
+#, fuzzy
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "Ako se ikone preklapaju na doku, prikazuje se samo ikona <i>Prikaži "
+#~ "programe</i>."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Promena radnog prostora klizanjem po doku"
+
+#~ msgid "Only consider windows of the focused application"
+#~ msgstr "Razmatraj samo prozor fokusiranog programa"
diff --git a/package/po/sv.po b/package/po/sv.po
new file mode 100644
index 0000000000000000000000000000000000000000..db33fb27b16cf8e51aa5786de61ad207c65a7e21
--- /dev/null
+++ b/package/po/sv.po
@@ -0,0 +1,452 @@
+# Swedish translation for dash-to-dock.
+# Copyright © 2016 dash-to-dock's COPYRIGHT HOLDER
+# This file is distributed under the same license as the dash-to-dock package.
+# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2016.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2016-07-01 18:37+0200\n"
+"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
+"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.8\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Primär skärm"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Sekundär skärm "
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Höger"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Vänster"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Anpassning av intelligent automatiskt döljande"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Återställ till standardvärden"
+
+#: prefs.js:386
+#, fuzzy
+msgid "Show dock and application numbers"
+msgstr "Visa körande program"
+
+#: prefs.js:443
+#, fuzzy
+msgid "Customize middle-click behavior"
+msgstr "Anpassa indikatorstil"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "Anpassa körningsindikatorer"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Alla fönster"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Anpassa indikatorstil"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Färg"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Kantfärg"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Kantbredd"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr ""
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+
+#: Settings.ui.h:7
+#, fuzzy
+msgid "Show the dock if it is hidden"
+msgstr "Visa dockan på"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr ""
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr ""
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Tidsgräns för att dölja (s)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Då inställd till minimera så minimerar dubbelklick alla fönster för "
+"programmet."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Skift+klick-åtgärd"
+
+#: Settings.ui.h:14
+#, fuzzy
+msgid "Raise window"
+msgstr "Minimera fönster"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Minimera fönster"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Starta ny instans"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Växla mellan fönster"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr ""
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:20
+#, fuzzy
+msgid "Middle-Click action"
+msgstr "Klickåtgärd"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:22
+#, fuzzy
+msgid "Shift+Middle-Click action"
+msgstr "Skift+klick-åtgärd"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Visa dockan på"
+
+#: Settings.ui.h:24
+#, fuzzy
+msgid "Show on all monitors."
+msgstr "Sekundär skärm "
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Position på skärmen"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Nederkant"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Överkant"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the the current application. "
+"More refined settings are available."
+msgstr ""
+"Dölj dockan då den är i vägen för ett fönster för det aktuella programmet. "
+"Mer förfinade inställningar finns tillgängliga."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Intelligent automatiskt döljande"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Storleksgräns för docka"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Panelläge: sträck ut till skärmkanten"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Storleksgräns för ikoner"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Fast ikonstorlek: rulla för att avslöja andra ikoner"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Position och storlek"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Visa favoritprogram"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Visa körande program"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr ""
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr ""
+
+#: Settings.ui.h:41
+#, fuzzy
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Om inaktiverad är dessa inställningar tillgängliga från gnome-tweak-tool "
+"eller webbplatsen för utökningar."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Visa <i>Program</i>-ikon"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Flytta programknappen till början på dockan."
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animera <i>Visa program</i>."
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr ""
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr ""
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Beteende då ikonen för ett körande program klickas på."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Klickåtgärd"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Minimera"
+
+#: Settings.ui.h:51
+#, fuzzy
+msgid "Minimize or overview"
+msgstr "Minimera fönster"
+
+#: Settings.ui.h:52
+#, fuzzy
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Beteende då ikonen för ett körande program klickas på."
+
+#: Settings.ui.h:53
+#, fuzzy
+msgid "Scroll action"
+msgstr "Klickåtgärd"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Gör ingenting"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr ""
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Beteende"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Några anpassningar för att integrera dockan med GNOME:s standardtema. "
+"Alternativt kan specifika alternativ aktiveras nedan."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Använd inbyggt tema"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Spara utrymme genom att minska utfyllnad och kantradie."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Krymp snabbstartspanelen"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Visa en punkt för varje fönster för programmet."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Visa fönsterräknarindikatorer"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "Ställ in bakgrundsfärg för snabbstartspanelen."
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "Anpassa färgen för snabbstartspanelen"
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Justera opacitet för bakgrunden till snabbstartspanelen."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Anpassa opacitet"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Opacitet"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr ""
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Utseende"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "version: "
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr ""
+"Flyttar snabbstartspanelen från översiktsvyn och förvandlar den till en docka"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Skapat av"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Webbsida"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"See the <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, version 2 or later</a> for details.</span>"
+msgstr ""
+"<span size=\"small\">Detta program kommer HELT UTAN GARANTI.\n"
+"Se <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html\">GNU "
+"General Public License, version 2 eller senare</a> för detaljer.</span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "Om"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Visa dockan genom att hovra musen över skärmkanten."
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Dölj automatiskt"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Tryck för att visa: kräv tryck för att visa dockan"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "Aktivera i helskärmsläge"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Visa dockan då den inte är i vägen för programfönster."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Undvik fönster"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Alla fönster"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Endast fokuserade programs fönster"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Endast maximerade fönster"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Längd på animering (s)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Tidsgräns för att visa (s)"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Tröskelvärde för tryck"
+
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "Med fast ikonstorlek är endast kanten på dockan och <i>Visa program</i>-"
+#~ "ikonen aktiva."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Växla arbetsyta genom att rulla på dockan"
diff --git a/package/po/tr.po b/package/po/tr.po
new file mode 100644
index 0000000000000000000000000000000000000000..757f07f684f7313e243c55927b45cc7d6bf76e24
--- /dev/null
+++ b/package/po/tr.po
@@ -0,0 +1,457 @@
+# Turkish Translation.
+# Copyright (C) 2015
+# This file is distributed under the same license with main package.
+# Mustafa Akgün <mustafa.akgun@gmail.com>, 2015.
+# Çağatay Yiğit Şahin <cyigitsahin@outlook.com>, 2016.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2016-09-04 21:25+0300\n"
+"Last-Translator: Çağatay Yiğit Şahin <cyigitsahin@outlook.com>\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 2.91.7\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Ana Ekran"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "İkincil Ekran"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Sağ"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Sol"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Akıllı otomatik saklama ayarları"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Öntanımlı ayarlara geri dön"
+
+#: prefs.js:386
+#, fuzzy
+msgid "Show dock and application numbers"
+msgstr "Çalışan uygulamaları göster"
+
+#: prefs.js:443
+#, fuzzy
+msgid "Customize middle-click behavior"
+msgstr "Panel biçemini ayarla"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "Çalışan uygulamaları göster"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Bütün pencereler"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Panel biçemini ayarla"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Renk"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Çerçeve rengi"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Çerçeve genişliği"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr ""
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+
+#: Settings.ui.h:7
+#, fuzzy
+msgid "Show the dock if it is hidden"
+msgstr "Panelde göster"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr ""
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr ""
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Gecikme zaman aşımı(s)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"En küçüğe ayarlandığında, tüm uygulama pencerelerini küçültmek için çift "
+"tıklayın."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Shift+Tıkla hareketi"
+
+#: Settings.ui.h:14
+#, fuzzy
+msgid "Raise window"
+msgstr "Pencereyi küçült"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Pencereyi küçült"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Yeni durumu başlat"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Penceler döngüsü"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr ""
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:20
+#, fuzzy
+msgid "Middle-Click action"
+msgstr "Hareket için tıkla"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:22
+#, fuzzy
+msgid "Shift+Middle-Click action"
+msgstr "Shift+Tıkla hareketi"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Panelde göster"
+
+#: Settings.ui.h:24
+#, fuzzy
+msgid "Show on all monitors."
+msgstr "İkincil Ekran"
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Ekrandaki konumu"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Alt"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Üst"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the the current application. "
+"More refined settings are available."
+msgstr ""
+"Etkin uygulamanın penceresini engellediğinde paneli gizle. Daha ileri "
+"ayarlar mevcuttur."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Akıllı otogizleme"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Panel ölçü sınırı"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Panel modu: Ekran köşelerine genişlet"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Simge ölçü sınırı"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Sabit simge ölçüsü: Diğer simgeleri görmek için kaydır"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Konum ve ölçü"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Kullanılan uygulamaları göster"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Çalışan uygulamaları göster"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr ""
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr ""
+
+#: Settings.ui.h:41
+#, fuzzy
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Eğer engellenmiş ise, bu ayarlara Gnome-tweak-tool ile  veya Gnome extension "
+"sitesinden ulaşılabilir."
+
+#: Settings.ui.h:42
+#, fuzzy
+msgid "Show <i>Applications</i> icon"
+msgstr "<i>Uygulamaları Göster</i> simgesini göster"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Uygulamalar düğmesini panelin başlangıcına taşı "
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "<i>Uygulamaları Göster</i> simgesini göster"
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr ""
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr ""
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Çalışan uygulama simgesine tıkladığındaki davranış"
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Hareket için tıkla"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Küçült"
+
+#: Settings.ui.h:51
+#, fuzzy
+msgid "Minimize or overview"
+msgstr "Pencereyi küçült"
+
+#: Settings.ui.h:52
+#, fuzzy
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Çalışan uygulama simgesine tıkladığındaki davranış"
+
+#: Settings.ui.h:53
+#, fuzzy
+msgid "Scroll action"
+msgstr "Hareket için tıkla"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Hiçbir şey yapma"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr ""
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Davranış"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Varsayılan GNOME temasıyla bütünleşme için birkaç kişiselleştirme. Tercihen, "
+"belirli ayarlar aşağıdan etkinleştirilebilir"
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Varsayılan temayı kullan"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Yer kazanmak için dolguyu ve kenar çevresini azalt."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Paneli daralt"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Uygulamanın her penceresi için bir nokta göster"
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Pencere sayacını göster"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr ""
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr ""
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Panel arkaplanının saydamlığını ayarla"
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Saydamlığı ayarla"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Saydamlık"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr ""
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Görünüm"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "Sürüm: "
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Paneli genel görünümden ana ekrana taşır"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Tarafından oluşturulmuştur:"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Web sayfası"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"See the <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, version 2 or later</a> for details.</span>"
+msgstr ""
+"<span size=\"small\">Bu yazılım kesinlikle garantisiz olarak gelmektedir..\n"
+"Detayları görüntülemek için <a href=\"https://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html\">GNU Genel Halk Lisansı, sürüm 2 veya üstü</a> "
+"tıklayın</span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "Hakkında"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Fare Ekran köşeleri üzerinde iken paneli göster. "
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Otogizleme"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Göstermek için it: Panelin gösterilmesi icin etki gerektirir."
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "Tam ekran modunda etkinleştir"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Uygulama penceresini engellemediğinde paneli göster."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Pencereleri atlat"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Bütün pencereler"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Sadece odaklanan uygulamanın pencereleri"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Sadece büyütülen pencereler"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Animasyon süresi(s)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Zaman aşımını göster(s)"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Etki eşiği"
+
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "Simge boyutu sabitlenmişse, sadece panelin kenarları ve <i>Uygulamaları "
+#~ "Göster</i> simgesi etkindir."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Panel üzerinde kaydırarak çalışma alanını değiştir"
+
+#~ msgid "Only consider windows of the focused application"
+#~ msgstr "Sadece açık olan uygulama penceresini dikkate al"
diff --git a/package/po/zh_CN.po b/package/po/zh_CN.po
new file mode 100644
index 0000000000000000000000000000000000000000..c0a743b01b4c0465ebb378698255f356ff2570f2
--- /dev/null
+++ b/package/po/zh_CN.po
@@ -0,0 +1,524 @@
+# Simplified Chinese translation of dash-to-dock
+# Copyright (C) 2013 tuhaihe
+# This file is distributed under the same license as the dash-to-dock package.
+# tuhaihe <1132321739qq@gmail.com>, 2013.
+# 绿色圣光 <lishaohui.qd@163.com>, 2015, 2016.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2016-10-02 23:45+0800\n"
+"Last-Translator: 绿色圣光 <lishaohui.qd@163.com>\n"
+"Language-Team: Chinese (Simplified) <>\n"
+"Language: zh_CN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Gtranslator 2.91.7\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "主显示器"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "副显示器"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "右侧"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "左侧"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "智能自动隐藏自定义"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "重置为默认值"
+
+#: prefs.js:386
+#, fuzzy
+msgid "Show dock and application numbers"
+msgstr "显示正在运行的应用程序"
+
+#: prefs.js:443
+msgid "Customize middle-click behavior"
+msgstr "自定义中键点击行为"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "自定义“运行中”指示器"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "所有窗口"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "自定义指示器样式"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "颜色"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "边框颜色"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "边框宽度"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr ""
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+
+#: Settings.ui.h:7
+#, fuzzy
+msgid "Show the dock if it is hidden"
+msgstr "显示 dock 于"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr ""
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr ""
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "隐藏超时时间(秒)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr "当设置为最小化时,双击会最小化应用程序的所有窗口。"
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Shift+点击动作"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "提升窗口"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "最小化窗口"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "启动新实例"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "在窗口间循环"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr "退出"
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr "中键点击的行为。"
+
+#: Settings.ui.h:20
+msgid "Middle-Click action"
+msgstr "中键点击动作"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Shift+中键点击的行为"
+
+#: Settings.ui.h:22
+msgid "Shift+Middle-Click action"
+msgstr "Shift+中键点击动作"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "显示 dock 于"
+
+#: Settings.ui.h:24
+#, fuzzy
+msgid "Show on all monitors."
+msgstr "副显示器"
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "屏幕中的位置"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "底部"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "顶部"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the the current application. "
+"More refined settings are available."
+msgstr ""
+"当 dock 会挡住当前应用程序的某个窗口时,将其隐藏。点击右侧设置按钮可以设置更"
+"多细节。"
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "智能隐藏"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Dock 大小限制"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "面板模式:延伸到屏幕边缘"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "图标大小限制"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "固定图标大小:滚动显示其它图标"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "位置和大小"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "显示收藏的应用程序"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "显示正在运行的应用程序"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "隔离工作区。"
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr ""
+
+#: Settings.ui.h:41
+#, fuzzy
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr "禁用之后,可以通过 gnome-tweak-tool 或者扩展网站来访问设置。"
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "显示“<i>应用程序</i>”图标"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "将应用程序按钮移至 dock 的起始位置。"
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "动画“<i>显示应用程序</i>”。"
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr ""
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr ""
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "点击一个正在运行的应用程序图标时的行为。"
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "点击动作"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "最小化"
+
+#: Settings.ui.h:51
+#, fuzzy
+msgid "Minimize or overview"
+msgstr "最小化窗口"
+
+#: Settings.ui.h:52
+#, fuzzy
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "点击一个正在运行的应用程序图标时的行为。"
+
+#: Settings.ui.h:53
+#, fuzzy
+msgid "Scroll action"
+msgstr "点击动作"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "无动作"
+
+#: Settings.ui.h:55
+#, fuzzy
+msgid "Switch workspace"
+msgstr "一次切换一个工作区"
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "行为"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"几个自定义项可以将 dock 整合到默认 GNOME 主题中。或者,也可以启动下面的几个特"
+"殊选项。"
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "使用内置主题"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "减小填充和边框半径以节省空间。"
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "收缩 dash"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "为应用程序的每个窗口显示一个点。"
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "显示窗口个数指示器"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "设置 dash 的背景颜色。"
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "自定义 dash 颜色"
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "调整 dash 的背景透明度。"
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "自定义透明度"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "不透明度"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr ""
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "外观"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "版本:"
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "让 dash 跳出概览之外,转化为一个 dock"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "作者:"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "网站主页"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"See the <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, version 2 or later</a> for details.</span>"
+msgstr ""
+"<span size=\"small\">本程序不提供任何担保。\n"
+"参见 <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html\">GNU "
+"通用公共许可证,第二版或更高版本</a>以了解更多细节。</span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "关于"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "鼠标移至屏幕边缘时显示 dock"
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "自动隐藏"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "推压以显示:需要一定压力来显示 dock"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "在全屏模式下启用"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "在不妨碍应用程序窗口时,显示 dock。"
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "避开窗口"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "所有窗口"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "仅焦点程序窗口"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "仅最大化窗口"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "动画持续时间(秒)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "显示超时时间(秒)"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "压力阈值"
+
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "如果固定了图标大小,只有 dock 边缘和“<i>显示应用程序</i>”图标会激活该功"
+#~ "能。"
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "通过滚动 dock 来切换工作区"
+
+#~ msgid "Main Settings"
+#~ msgstr "主设置"
+
+#~ msgid "Dock is fixed and always visible"
+#~ msgstr "Dock 固定且总是可见"
+
+#~ msgid "Show delay [ms]"
+#~ msgstr "显示延迟(毫秒)"
+
+#~ msgid "Hide delay [ms]"
+#~ msgstr "隐藏延迟(毫秒)"
+
+#~ msgid "Application based intellihide"
+#~ msgstr "应用程序基于智能隐藏"
+
+#~ msgid "Show the dock on following monitor (if attached)"
+#~ msgstr "Dock 将在如下显示器显示(如果已连接)"
+
+#~ msgid "Primary (default)"
+#~ msgstr "主显示器(默认)"
+
+#~ msgid "1"
+#~ msgstr "1"
+
+#~ msgid "2"
+#~ msgstr "2"
+
+#~ msgid "3"
+#~ msgstr "3"
+
+#~ msgid "4"
+#~ msgstr "4"
+
+#~ msgid "Max height"
+#~ msgstr "最大高度"
+
+#~ msgid "Expand (experimental and buggy)"
+#~ msgstr "全部展开(实验阶段且存在问题)"
+
+#~ msgid "Maximum icon size"
+#~ msgstr "最大图标尺寸"
+
+#~ msgid "16"
+#~ msgstr "16"
+
+#~ msgid "24"
+#~ msgstr "24"
+
+#~ msgid "32"
+#~ msgstr "32"
+
+#~ msgid "48"
+#~ msgstr "48"
+
+#~ msgid "64"
+#~ msgstr "64"
+
+#~ msgid "Optional features"
+#~ msgstr "可选功能"
+
+#~ msgid "Only a 1px wide area close to the screen edge is active"
+#~ msgstr "仅当靠近屏幕边缘1像素宽区域时启用"
+
+#~ msgid "All the area of the dock is active"
+#~ msgstr "Dock 全部区域时启用"
+
+#~ msgid "Customize actions on mouse click"
+#~ msgstr "自定义鼠标点击动作"
+
+#~ msgid "Action on clicking on running app"
+#~ msgstr "点击正在运行程序的动作"
+
+#~ msgid "Minimize window on shift+click (double click for all app windows)"
+#~ msgstr "当按下“Shift+单击”(双击适用于全部程序窗口)时最小化窗口"
+
+#~ msgid "Only when in autohide"
+#~ msgstr "仅当自动隐藏时"
diff --git a/package/prefs.js b/package/prefs.js
new file mode 100644
index 0000000000000000000000000000000000000000..5f1f3789dc74a54388fbddefac923223c285660b
--- /dev/null
+++ b/package/prefs.js
@@ -0,0 +1,705 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+const GObject = imports.gi.GObject;
+const Gtk = imports.gi.Gtk;
+const Gdk = imports.gi.Gdk;
+const Lang = imports.lang;
+const Mainloop = imports.mainloop;
+
+// Use __ () and N__() for the extension gettext domain, and reuse
+// the shell domain with the default _() and N_()
+const Gettext = imports.gettext.domain('dashtodock');
+const __ = Gettext.gettext;
+const N__ = function(e) { return e };
+
+const ExtensionUtils = imports.misc.extensionUtils;
+const Me = ExtensionUtils.getCurrentExtension();
+const Convenience = Me.imports.convenience;
+
+const SCALE_UPDATE_TIMEOUT = 500;
+const DEFAULT_ICONS_SIZES = [ 128, 96, 64, 48, 32, 24, 16 ];
+
+/**
+ * This function was copied from the activities-config extension
+ * https://github.com/nls1729/acme-code/tree/master/activities-config
+ * by Norman L. Smith.
+ */
+function cssHexString(css) {
+    let rrggbb = '#';
+    let start;
+    for (let loop = 0; loop < 3; loop++) {
+        let end = 0;
+        let xx = '';
+        for (let loop = 0; loop < 2; loop++) {
+            while (true) {
+                let x = css.slice(end, end + 1);
+                if ((x == '(') || (x == ',') || (x == ')'))
+                    break;
+                end++;
+            }
+            if (loop == 0) {
+                end++;
+                start = end;
+            }
+        }
+        xx = parseInt(css.slice(start, end)).toString(16);
+        if (xx.length == 1)
+            xx = '0' + xx;
+        rrggbb += xx;
+        css = css.slice(end);
+    }
+    return rrggbb;
+}
+
+function setShortcut(settings) {
+    let shortcut_text = settings.get_string('shortcut-text');
+    let [key, mods] = Gtk.accelerator_parse(shortcut_text);
+
+    if (Gtk.accelerator_valid(key, mods)) {
+        let shortcut = Gtk.accelerator_name(key, mods);
+        settings.set_strv('shortcut', [shortcut]);
+    }
+    else {
+        settings.set_strv('shortcut', []);
+    }
+}
+
+const Settings = new Lang.Class({
+    Name: 'DashToDock.Settings',
+
+    _init: function() {
+        this._settings = Convenience.getSettings('org.gnome.shell.extensions.dash-to-dock');
+
+        this._rtl = (Gtk.Widget.get_default_direction() == Gtk.TextDirection.RTL);
+
+        this._builder = new Gtk.Builder();
+        this._builder.set_translation_domain(Me.metadata['gettext-domain']);
+        this._builder.add_from_file(Me.path + '/Settings.ui');
+
+        this.widget = this._builder.get_object('settings_notebook');
+
+        // Timeout to delay the update of the settings
+        this._dock_size_timeout = 0;
+        this._icon_size_timeout = 0;
+        this._opacity_timeout = 0;
+
+        this._bindSettings();
+
+        this._builder.connect_signals_full(Lang.bind(this, this._connector));
+    },
+
+    /**
+     * Connect signals
+     */
+    _connector: function(builder, object, signal, handler) {
+        object.connect(signal, Lang.bind(this, this._SignalHandler[handler]));
+    },
+
+    _bindSettings: function() {
+        // Position and size panel
+
+        // Monitor options
+
+        this._monitors = [];
+        // Build options based on the number of monitors and the current settings.
+        let n_monitors = Gdk.Screen.get_default().get_n_monitors();
+        let primary_monitor = Gdk.Screen.get_default().get_primary_monitor();
+
+        let monitor = this._settings.get_int('preferred-monitor');
+
+        // Add primary monitor with index 0, because in GNOME Shell the primary monitor is always 0
+        this._builder.get_object('dock_monitor_combo').append_text(__('Primary monitor'));
+        this._monitors.push(0);
+
+        // Add connected monitors
+        let ctr = 0;
+        for (let i = 0; i < n_monitors; i++) {
+            if (i !== primary_monitor) {
+                ctr++;
+                this._monitors.push(ctr);
+                this._builder.get_object('dock_monitor_combo').append_text(__('Secondary monitor ') + ctr);
+            }
+        }
+
+        // If one of the external monitor is set as preferred, show it even if not attached
+        if ((monitor >= n_monitors) && (monitor !== primary_monitor)) {
+            this._monitors.push(monitor)
+            this._builder.get_object('dock_monitor_combo').append_text(__('Secondary monitor ') + ++ctr);
+        }
+
+        this._builder.get_object('dock_monitor_combo').set_active(this._monitors.indexOf(monitor));
+
+        // Position option
+        let position = this._settings.get_enum('dock-position');
+
+        switch (position) {
+            case 0:
+                this._builder.get_object('position_top_button').set_active(true);
+                break;
+            case 1:
+                this._builder.get_object('position_right_button').set_active(true);
+                break;
+            case 2:
+                this._builder.get_object('position_bottom_button').set_active(true);
+                break;
+            case 3:
+                this._builder.get_object('position_left_button').set_active(true);
+                break;
+        }
+
+        if (this._rtl) {
+            /* Left is Right in rtl as a setting */
+            this._builder.get_object('position_left_button').set_label(__('Right'));
+            this._builder.get_object('position_right_button').set_label(__('Left'));
+        }
+
+        // Intelligent autohide options
+        this._settings.bind('dock-fixed',
+                            this._builder.get_object('intelligent_autohide_switch'),
+                            'active',
+                            Gio.SettingsBindFlags.INVERT_BOOLEAN);
+        this._settings.bind('dock-fixed',
+                            this._builder.get_object('intelligent_autohide_button'),
+                            'sensitive',
+                            Gio.SettingsBindFlags.INVERT_BOOLEAN);
+        this._settings.bind('autohide',
+                            this._builder.get_object('autohide_switch'),
+                            'active',
+                            Gio.SettingsBindFlags.DEFAULT);
+        this._settings.bind('autohide-in-fullscreen',
+                            this._builder.get_object('autohide_enable_in_fullscreen_checkbutton'),
+                            'active',
+                            Gio.SettingsBindFlags.DEFAULT);
+        this._settings.bind('require-pressure-to-show',
+                            this._builder.get_object('require_pressure_checkbutton'),
+                            'active',
+                            Gio.SettingsBindFlags.DEFAULT);
+        this._settings.bind('intellihide',
+                            this._builder.get_object('intellihide_switch'),
+                            'active',
+                            Gio.SettingsBindFlags.DEFAULT);
+        this._settings.bind('animation-time',
+                            this._builder.get_object('animation_duration_spinbutton'),
+                            'value',
+                            Gio.SettingsBindFlags.DEFAULT);
+        this._settings.bind('hide-delay',
+                            this._builder.get_object('hide_timeout_spinbutton'),
+                            'value',
+                            Gio.SettingsBindFlags.DEFAULT);
+        this._settings.bind('show-delay',
+                            this._builder.get_object('show_timeout_spinbutton'),
+                            'value',
+                            Gio.SettingsBindFlags.DEFAULT);
+        this._settings.bind('pressure-threshold',
+                            this._builder.get_object('pressure_threshold_spinbutton'),
+                            'value',
+                            Gio.SettingsBindFlags.DEFAULT);
+
+        //this._builder.get_object('animation_duration_spinbutton').set_value(this._settings.get_double('animation-time'));
+
+        // Create dialog for intelligent autohide advanced settings
+        this._builder.get_object('intelligent_autohide_button').connect('clicked', Lang.bind(this, function() {
+
+            let dialog = new Gtk.Dialog({ title: __('Intelligent autohide customization'),
+                                          transient_for: this.widget.get_toplevel(),
+                                          use_header_bar: true,
+                                          modal: true });
+
+            // GTK+ leaves positive values for application-defined response ids.
+            // Use +1 for the reset action
+            dialog.add_button(__('Reset to defaults'), 1);
+
+            let box = this._builder.get_object('intelligent_autohide_advanced_settings_box');
+            dialog.get_content_area().add(box);
+
+            this._settings.bind('intellihide',
+                            this._builder.get_object('intellihide_mode_box'),
+                            'sensitive',
+                            Gio.SettingsBindFlags.GET);
+
+            // intellihide mode
+
+            let intellihideModeRadioButtons = [
+                this._builder.get_object('all_windows_radio_button'),
+                this._builder.get_object('focus_application_windows_radio_button'),
+                this._builder.get_object('maximized_windows_radio_button')
+            ];
+
+            intellihideModeRadioButtons[this._settings.get_enum('intellihide-mode')].set_active(true);
+
+            this._settings.bind('autohide',
+                            this._builder.get_object('require_pressure_checkbutton'),
+                            'sensitive',
+                            Gio.SettingsBindFlags.GET);
+
+            this._settings.bind('autohide',
+                            this._builder.get_object('autohide_enable_in_fullscreen_checkbutton'),
+                            'sensitive',
+                            Gio.SettingsBindFlags.GET);
+
+            this._settings.bind('require-pressure-to-show',
+                                this._builder.get_object('show_timeout_spinbutton'),
+                                'sensitive',
+                                Gio.SettingsBindFlags.INVERT_BOOLEAN);
+            this._settings.bind('require-pressure-to-show',
+                                this._builder.get_object('show_timeout_label'),
+                                'sensitive',
+                                Gio.SettingsBindFlags.INVERT_BOOLEAN);
+            this._settings.bind('require-pressure-to-show',
+                                this._builder.get_object('pressure_threshold_spinbutton'),
+                                'sensitive',
+                                Gio.SettingsBindFlags.DEFAULT);
+            this._settings.bind('require-pressure-to-show',
+                                this._builder.get_object('pressure_threshold_label'),
+                                'sensitive',
+                                Gio.SettingsBindFlags.DEFAULT);
+
+            dialog.connect('response', Lang.bind(this, function(dialog, id) {
+                if (id == 1) {
+                    // restore default settings for the relevant keys
+                    let keys = ['intellihide', 'autohide', 'intellihide-mode', 'autohide-in-fullscreen', 'require-pressure-to-show',
+                                'animation-time', 'show-delay', 'hide-delay', 'pressure-threshold'];
+                    keys.forEach(function(val) {
+                        this._settings.set_value(val, this._settings.get_default_value(val));
+                    }, this);
+                    intellihideModeRadioButtons[this._settings.get_enum('intellihide-mode')].set_active(true);
+                } else {
+                    // remove the settings box so it doesn't get destroyed;
+                    dialog.get_content_area().remove(box);
+                    dialog.destroy();
+                }
+                return;
+            }));
+
+            dialog.show_all();
+
+        }));
+
+        // size options
+        this._builder.get_object('dock_size_scale').set_value(this._settings.get_double('height-fraction'));
+        this._builder.get_object('dock_size_scale').add_mark(0.9, Gtk.PositionType.TOP, null);
+        let icon_size_scale = this._builder.get_object('icon_size_scale');
+        icon_size_scale.set_range(8, DEFAULT_ICONS_SIZES[0]);
+        icon_size_scale.set_value(this._settings.get_int('dash-max-icon-size'));
+        DEFAULT_ICONS_SIZES.forEach(function(val) {
+             icon_size_scale.add_mark(val, Gtk.PositionType.TOP, val.toString());
+        });
+
+        // Corrent for rtl languages
+        if (this._rtl) {
+            // Flip value position: this is not done automatically
+            this._builder.get_object('dock_size_scale').set_value_pos(Gtk.PositionType.LEFT);
+            icon_size_scale.set_value_pos(Gtk.PositionType.LEFT);
+            // I suppose due to a bug, having a more than one mark and one above a value of 100
+            // makes the rendering of the marks wrong in rtl. This doesn't happen setting the scale as not flippable
+            // and then manually inverting it
+            icon_size_scale.set_flippable(false);
+            icon_size_scale.set_inverted(true);
+        }
+
+        this._settings.bind('icon-size-fixed', this._builder.get_object('icon_size_fixed_checkbutton'), 'active', Gio.SettingsBindFlags.DEFAULT);
+        this._settings.bind('extend-height', this._builder.get_object('dock_size_extend_checkbutton'), 'active', Gio.SettingsBindFlags.DEFAULT);
+        this._settings.bind('extend-height', this._builder.get_object('dock_size_scale'), 'sensitive', Gio.SettingsBindFlags.INVERT_BOOLEAN);
+
+
+        // Apps panel
+
+        this._settings.bind('show-running',
+                            this._builder.get_object('show_running_switch'),
+                            'active',
+                            Gio.SettingsBindFlags.DEFAULT);
+        this._settings.bind('isolate-workspaces',
+                            this._builder.get_object('application_button_isolation_button'),
+                            'active',
+                            Gio.SettingsBindFlags.DEFAULT);
+        this._settings.bind('isolate-monitors',
+                            this._builder.get_object('application_button_monitor_isolation_button'),
+                            'active',
+                            Gio.SettingsBindFlags.DEFAULT);
+        this._settings.bind('show-windows-preview',
+                            this._builder.get_object('windows_preview_button'),
+                            'active',
+                            Gio.SettingsBindFlags.DEFAULT);
+        this._settings.bind('multi-monitor',
+                            this._builder.get_object('multi_monitor_button'),
+                            'active',
+                            Gio.SettingsBindFlags.DEFAULT);
+        this._settings.bind('show-favorites',
+                            this._builder.get_object('show_favorite_switch'),
+                            'active',
+                            Gio.SettingsBindFlags.DEFAULT);
+        this._settings.bind('show-show-apps-button',
+                            this._builder.get_object('show_applications_button_switch'),
+                            'active',
+                            Gio.SettingsBindFlags.DEFAULT);
+        this._settings.bind('show-apps-at-top',
+                            this._builder.get_object('application_button_first_button'),
+                            'active',
+                            Gio.SettingsBindFlags.DEFAULT);
+        this._settings.bind('show-show-apps-button',
+                            this._builder.get_object('application_button_first_button'),
+                            'sensitive',
+                            Gio.SettingsBindFlags.DEFAULT);
+        this._settings.bind('animate-show-apps',
+                            this._builder.get_object('application_button_animation_button'),
+                            'active',
+                            Gio.SettingsBindFlags.DEFAULT);
+        this._settings.bind('show-show-apps-button',
+                            this._builder.get_object('application_button_animation_button'),
+                            'sensitive',
+                            Gio.SettingsBindFlags.DEFAULT);
+
+
+        // Behavior panel
+
+        this._settings.bind('hot-keys',
+                            this._builder.get_object('hot_keys_switch'),
+                            'active',
+                            Gio.SettingsBindFlags.DEFAULT);
+        this._settings.bind('hot-keys',
+                            this._builder.get_object('overlay_button'),
+                            'sensitive',
+                            Gio.SettingsBindFlags.DEFAULT);
+
+        this._builder.get_object('click_action_combo').set_active(this._settings.get_enum('click-action'));
+        this._builder.get_object('click_action_combo').connect('changed', Lang.bind (this, function(widget) {
+            this._settings.set_enum('click-action', widget.get_active());
+        }));
+
+        this._builder.get_object('scroll_action_combo').set_active(this._settings.get_enum('scroll-action'));
+        this._builder.get_object('scroll_action_combo').connect('changed', Lang.bind (this, function(widget) {
+            this._settings.set_enum('scroll-action', widget.get_active());
+        }));
+
+        this._builder.get_object('shift_click_action_combo').connect('changed', Lang.bind (this, function(widget) {
+            this._settings.set_enum('shift-click-action', widget.get_active());
+        }));
+
+        this._builder.get_object('middle_click_action_combo').connect('changed', Lang.bind (this, function(widget) {
+            this._settings.set_enum('middle-click-action', widget.get_active());
+        }));
+        this._builder.get_object('shift_middle_click_action_combo').connect('changed', Lang.bind (this, function(widget) {
+            this._settings.set_enum('shift-middle-click-action', widget.get_active());
+        }));
+
+        // Create dialog for number overlay options
+        this._builder.get_object('overlay_button').connect('clicked', Lang.bind(this, function() {
+
+            let dialog = new Gtk.Dialog({ title: __('Show dock and application numbers'),
+                                          transient_for: this.widget.get_toplevel(),
+                                          use_header_bar: true,
+                                          modal: true });
+
+            // GTK+ leaves positive values for application-defined response ids.
+            // Use +1 for the reset action
+            dialog.add_button(__('Reset to defaults'), 1);
+
+            let box = this._builder.get_object('box_overlay_shortcut');
+            dialog.get_content_area().add(box);
+
+            this._builder.get_object('overlay_switch').set_active(this._settings.get_boolean('hotkeys-overlay'));
+            this._builder.get_object('show_dock_switch').set_active(this._settings.get_boolean('hotkeys-show-dock'));
+
+            // We need to update the shortcut 'strv' when the text is modified
+            this._settings.connect('changed::shortcut-text', Lang.bind(this, function() {setShortcut(this._settings);}));
+            this._settings.bind('shortcut-text',
+                                this._builder.get_object('shortcut_entry'),
+                                'text',
+                                Gio.SettingsBindFlags.DEFAULT);
+
+            this._settings.bind('hotkeys-overlay',
+                                this._builder.get_object('overlay_switch'),
+                                'active',
+                                Gio.SettingsBindFlags.DEFAULT);
+            this._settings.bind('hotkeys-show-dock',
+                                this._builder.get_object('show_dock_switch'),
+                                'active',
+                                Gio.SettingsBindFlags.DEFAULT);
+            this._settings.bind('shortcut-timeout',
+                                this._builder.get_object('timeout_spinbutton'),
+                                'value',
+                                Gio.SettingsBindFlags.DEFAULT);
+
+            dialog.connect('response', Lang.bind(this, function(dialog, id) {
+                if (id == 1) {
+                    // restore default settings for the relevant keys
+                    let keys = ['shortcut-text', 'hotkeys-overlay', 'hotkeys-show-dock', 'shortcut-timeout'];
+                    keys.forEach(function(val) {
+                        this._settings.set_value(val, this._settings.get_default_value(val));
+                    }, this);
+                } else {
+                    // remove the settings box so it doesn't get destroyed;
+                    dialog.get_content_area().remove(box);
+                    dialog.destroy();
+                }
+                return;
+            }));
+
+            dialog.show_all();
+
+        }));
+
+        // Create dialog for middle-click options
+        this._builder.get_object('middle_click_options_button').connect('clicked', Lang.bind(this, function() {
+
+            let dialog = new Gtk.Dialog({ title: __('Customize middle-click behavior'),
+                                          transient_for: this.widget.get_toplevel(),
+                                          use_header_bar: true,
+                                          modal: true });
+
+            // GTK+ leaves positive values for application-defined response ids.
+            // Use +1 for the reset action
+            dialog.add_button(__('Reset to defaults'), 1);
+
+            let box = this._builder.get_object('box_middle_click_options');
+            dialog.get_content_area().add(box);
+
+            this._builder.get_object('shift_click_action_combo').set_active(this._settings.get_enum('shift-click-action'));
+
+            this._builder.get_object('middle_click_action_combo').set_active(this._settings.get_enum('middle-click-action'));
+
+            this._builder.get_object('shift_middle_click_action_combo').set_active(this._settings.get_enum('shift-middle-click-action'));
+
+            this._settings.bind('shift-click-action',
+                                this._builder.get_object('shift_click_action_combo'),
+                                'active-id',
+                                Gio.SettingsBindFlags.DEFAULT);
+            this._settings.bind('middle-click-action',
+                                this._builder.get_object('middle_click_action_combo'),
+                                'active-id',
+                                Gio.SettingsBindFlags.DEFAULT);
+            this._settings.bind('shift-middle-click-action',
+                                this._builder.get_object('shift_middle_click_action_combo'),
+                                'active-id',
+                                Gio.SettingsBindFlags.DEFAULT);
+
+            dialog.connect('response', Lang.bind(this, function(dialog, id) {
+                if (id == 1) {
+                    // restore default settings for the relevant keys
+                    let keys = ['shift-click-action', 'middle-click-action', 'shift-middle-click-action'];
+                    keys.forEach(function(val) {
+                        this._settings.set_value(val, this._settings.get_default_value(val));
+                    }, this);
+                    this._builder.get_object('shift_click_action_combo').set_active(this._settings.get_enum('shift-click-action'));
+                    this._builder.get_object('middle_click_action_combo').set_active(this._settings.get_enum('middle-click-action'));
+                    this._builder.get_object('shift_middle_click_action_combo').set_active(this._settings.get_enum('shift-middle-click-action'));
+                } else {
+                    // remove the settings box so it doesn't get destroyed;
+                    dialog.get_content_area().remove(box);
+                    dialog.destroy();
+                }
+                return;
+            }));
+
+            dialog.show_all();
+
+        }));
+
+        // Appearance Panel
+
+        this._settings.bind('apply-custom-theme', this._builder.get_object('customize_theme'), 'sensitive', Gio.SettingsBindFlags.INVERT_BOOLEAN | Gio.SettingsBindFlags.GET);
+        this._settings.bind('apply-custom-theme', this._builder.get_object('builtin_theme_switch'), 'active', Gio.SettingsBindFlags.DEFAULT);
+        this._settings.bind('custom-theme-shrink', this._builder.get_object('shrink_dash_switch'), 'active', Gio.SettingsBindFlags.DEFAULT);
+
+        this._settings.bind('custom-theme-running-dots',
+                             this._builder.get_object('running_dots_switch'),
+                             'active',
+                             Gio.SettingsBindFlags.DEFAULT);
+        this._settings.bind('custom-theme-running-dots',
+                            this._builder.get_object('running_dots_advance_settings_button'),
+                            'sensitive',
+                            Gio.SettingsBindFlags.DEFAULT);
+
+        // Create dialog for running dots advanced settings
+        this._builder.get_object('running_dots_advance_settings_button').connect('clicked', Lang.bind(this, function() {
+
+            let dialog = new Gtk.Dialog({ title: __('Customize running indicators'),
+                                          transient_for: this.widget.get_toplevel(),
+                                          use_header_bar: true,
+                                          modal: true });
+
+            let box = this._builder.get_object('running_dots_advance_settings_box');
+            dialog.get_content_area().add(box);
+
+            this._settings.bind('custom-theme-customize-running-dots',
+                                this._builder.get_object('dot_style_switch'),
+                                'active',
+                                Gio.SettingsBindFlags.DEFAULT);
+            this._settings.bind('custom-theme-customize-running-dots',
+                                this._builder.get_object('dot_style_settings_box'),
+                                'sensitive', Gio.SettingsBindFlags.DEFAULT);
+
+            let rgba = new Gdk.RGBA();
+            rgba.parse(this._settings.get_string('custom-theme-running-dots-color'));
+            this._builder.get_object('dot_color_colorbutton').set_rgba(rgba);
+
+            this._builder.get_object('dot_color_colorbutton').connect('notify::color', Lang.bind(this, function(button) {
+                let rgba = button.get_rgba();
+                let css = rgba.to_string();
+                let hexString = cssHexString(css);
+                this._settings.set_string('custom-theme-running-dots-color', hexString);
+            }));
+
+            rgba.parse(this._settings.get_string('custom-theme-running-dots-border-color'));
+            this._builder.get_object('dot_border_color_colorbutton').set_rgba(rgba);
+
+            this._builder.get_object('dot_border_color_colorbutton').connect('notify::color', Lang.bind(this, function(button) {
+                let rgba = button.get_rgba();
+                let css = rgba.to_string();
+                let hexString = cssHexString(css);
+                this._settings.set_string('custom-theme-running-dots-border-color', hexString);
+            }));
+
+            this._settings.bind('custom-theme-running-dots-border-width',
+                                this._builder.get_object('dot_border_width_spin_button'),
+                                'value',
+                                Gio.SettingsBindFlags.DEFAULT);
+
+
+            dialog.connect('response', Lang.bind(this, function(dialog, id) {
+                // remove the settings box so it doesn't get destroyed;
+                dialog.get_content_area().remove(box);
+                dialog.destroy();
+                return;
+            }));
+
+            dialog.show_all();
+
+        }));
+
+        this._settings.bind('custom-background-color', this._builder.get_object('custom_background_color_switch'), 'active', Gio.SettingsBindFlags.DEFAULT);
+        this._settings.bind('custom-background-color', this._builder.get_object('custom_background_color'), 'sensitive', Gio.SettingsBindFlags.DEFAULT);
+
+        let rgba = new Gdk.RGBA();
+        rgba.parse(this._settings.get_string('background-color'));
+        this._builder.get_object('custom_background_color').set_rgba(rgba);
+
+        this._builder.get_object('custom_background_color').connect('notify::color', Lang.bind(this, function(button) {
+            let rgba = button.get_rgba();
+            let css = rgba.to_string();
+            let hexString = cssHexString(css);
+            this._settings.set_string('background-color', hexString);
+        }));
+
+        this._settings.bind('opaque-background', this._builder.get_object('customize_opacity_switch'), 'active', Gio.SettingsBindFlags.DEFAULT);
+        this._builder.get_object('custom_opacity_scale').set_value(this._settings.get_double('background-opacity'));
+        this._settings.bind('opaque-background', this._builder.get_object('custom_opacity'), 'sensitive', Gio.SettingsBindFlags.DEFAULT);
+
+        this._settings.bind('force-straight-corner',
+            this._builder.get_object('force_straight_corner_switch'),
+            'active', Gio.SettingsBindFlags.DEFAULT);
+
+        // About Panel
+
+        this._builder.get_object('extension_version').set_label(Me.metadata.version.toString());
+    },
+
+    /**
+     * Object containing all signals defined in the glade file
+     */
+    _SignalHandler: {
+        dock_display_combo_changed_cb: function(combo) {
+            this._settings.set_int('preferred-monitor', this._monitors[combo.get_active()]);
+        },
+
+        position_top_button_toggled_cb: function(button) {
+            if (button.get_active())
+                this._settings.set_enum('dock-position', 0);
+        },
+
+        position_right_button_toggled_cb: function(button) {
+            if (button.get_active())
+                this._settings.set_enum('dock-position', 1);
+        },
+
+        position_bottom_button_toggled_cb: function(button) {
+            if (button.get_active())
+                this._settings.set_enum('dock-position', 2);
+        },
+
+        position_left_button_toggled_cb: function(button) {
+            if (button.get_active())
+                this._settings.set_enum('dock-position', 3);
+        },
+
+        icon_size_combo_changed_cb: function(combo) {
+            this._settings.set_int('dash-max-icon-size', this._allIconSizes[combo.get_active()]);
+        },
+
+        dock_size_scale_format_value_cb: function(scale, value) {
+            return Math.round(value*100)+ ' %';
+        },
+
+        dock_size_scale_value_changed_cb: function(scale) {
+            // Avoid settings the size consinuosly
+            if (this._dock_size_timeout > 0)
+                Mainloop.source_remove(this._dock_size_timeout);
+
+            this._dock_size_timeout = Mainloop.timeout_add(SCALE_UPDATE_TIMEOUT, Lang.bind(this, function() {
+                this._settings.set_double('height-fraction', scale.get_value());
+                this._dock_size_timeout = 0;
+                return GLib.SOURCE_REMOVE;
+            }));
+        },
+
+        icon_size_scale_format_value_cb: function(scale, value) {
+            return value+ ' px';
+        },
+
+        icon_size_scale_value_changed_cb: function(scale) {
+            // Avoid settings the size consinuosly
+            if (this._icon_size_timeout > 0)
+                Mainloop.source_remove(this._icon_size_timeout);
+
+            this._icon_size_timeout = Mainloop.timeout_add(SCALE_UPDATE_TIMEOUT, Lang.bind(this, function() {
+                this._settings.set_int('dash-max-icon-size', scale.get_value());
+                this._icon_size_timeout = 0;
+                return GLib.SOURCE_REMOVE;
+            }));
+        },
+
+        custom_opacity_scale_value_changed_cb: function(scale) {
+            // Avoid settings the opacity consinuosly as it's change is animated
+            if (this._opacity_timeout > 0)
+                Mainloop.source_remove(this._opacity_timeout);
+
+            this._opacity_timeout = Mainloop.timeout_add(SCALE_UPDATE_TIMEOUT, Lang.bind(this, function() {
+                this._settings.set_double('background-opacity', scale.get_value());
+                this._opacity_timeout = 0;
+                return GLib.SOURCE_REMOVE;
+            }));
+        },
+
+        custom_opacity_scale_format_value_cb: function(scale, value) {
+            return Math.round(value*100) + ' %';
+        },
+
+        all_windows_radio_button_toggled_cb: function(button) {
+            if (button.get_active())
+                this._settings.set_enum('intellihide-mode', 0);
+        },
+
+        focus_application_windows_radio_button_toggled_cb: function(button) {
+            if (button.get_active())
+                this._settings.set_enum('intellihide-mode', 1);
+        },
+
+        maximized_windows_radio_button_toggled_cb: function(button) {
+            if (button.get_active())
+                this._settings.set_enum('intellihide-mode', 2);
+        }
+    }
+});
+
+function init() {
+    Convenience.initTranslations();
+}
+
+function buildPrefsWidget() {
+    let settings = new Settings();
+    let widget = settings.widget;
+    widget.show_all();
+    return widget;
+}
diff --git a/package/schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml b/package/schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0f43bd7ee4881329a9ad8633b03a43dcc42bfdbf
--- /dev/null
+++ b/package/schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml
@@ -0,0 +1,713 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schemalist gettext-domain="gnome-shell-extensions">
+  <enum id='org.gnome.shell.extensions.dash-to-dock.clickAction'>
+    <value value='0' nick='skip'/>
+    <value value='1' nick='minimize'/>
+    <value value='2' nick='launch'/>
+    <value value='3' nick='cycle-windows'/>
+    <value value='4' nick='minimize-or-overview'/>
+    <value value='5' nick='previews'/>
+    <value value='6' nick='quit'/>
+  </enum>
+  <enum id='org.gnome.shell.extensions.dash-to-dock.scrollAction'>
+    <value value='0' nick='do-nothing'/>
+    <value value='1' nick='cycle-windows'/>
+    <value value='2' nick='switch-workspace'/>
+  </enum>
+  <!-- this is mean to Match StSide. LEFT and RIGHT actual position in reversed in
+       rtl languages -->
+  <enum id='org.gnome.shell.extensions.dash-to-dock.position'>
+    <value value='0' nick='TOP'/>
+    <value value='1' nick='RIGHT'/>
+    <value value='2' nick='BOTTOM'/>
+    <value value='3' nick='LEFT'/>
+  </enum>
+  <enum id='org.gnome.shell.extensions.dash-to-dock.intellihide-mode'>
+    <value value='0' nick='ALL_WINDOWS'/>
+    <value value='1' nick='FOCUS_APPLICATION_WINDOWS'/>
+    <value value='2' nick='MAXIMIZED_WINDOWS'/>
+  </enum>
+  <schema path="/org/gnome/shell/extensions/dash-to-dock/" id="org.gnome.shell.extensions.dash-to-dock">
+    <key name="dock-position" enum="org.gnome.shell.extensions.dash-to-dock.position">
+      <default>'LEFT'</default>
+      <summary>Dock position</summary>
+      <description>Dock is shown on the Left, Right, Top or Bottom side of the screen.</description>
+    </key>
+    <key type="d" name="animation-time">
+      <default>0.2</default>
+      <summary>Animation time</summary>
+      <description>Sets the time duration of the autohide effect.</description>
+    </key>
+    <key type="d" name="show-delay">
+      <default>0.25</default>
+      <summary>Show delay</summary>
+      <description>Sets the delay after the mouse reaches the screen border before showing the dock.</description>
+    </key>
+    <key type="d" name="hide-delay">
+      <default>0.20</default>
+      <summary>Show delay</summary>
+      <description>Sets the delay after the mouse left the dock before hiding it.</description>
+    </key>
+    <key type="b" name="custom-background-color">
+      <default>false</default>
+      <summary>Set a custom dash background background color</summary>
+      <description>Sets the color for the dash background.</description>
+    </key>
+    <key type="s" name="background-color">
+      <default>"#ffffff"</default>
+      <summary>Dash background color.</summary>
+      <description>Customize the background color of the dash.</description>
+    </key>
+    <key type="b" name="opaque-background">
+      <default>false</default>
+      <summary>Dash background is opaque</summary>
+      <description>Makes the background of the dash opaque improving readability when in autohide mode.</description>
+    </key>
+    <key type="d" name="background-opacity">
+      <default>0.8</default>
+      <summary>Opacity of the dash background</summary>
+      <description>Sets the opacity of the dash background  when in autohide mode.</description>
+    </key>
+    <key type="b" name="intellihide">
+      <default>true</default>
+      <summary>Dock dodges windows</summary>
+      <description>Enable or disable intellihide mode</description>
+    </key>
+    <key name="intellihide-mode" enum="org.gnome.shell.extensions.dash-to-dock.intellihide-mode">
+      <default>'FOCUS_APPLICATION_WINDOWS'</default>
+      <summary>Define which windows are considered for intellihide.</summary>
+      <description></description>
+    </key>
+    <key type="b" name="autohide">
+      <default>true</default>
+      <summary>Dock shown on mouse over</summary>
+      <description>Enable or disable autohide mode</description>
+    </key>
+    <key type="b" name="require-pressure-to-show">
+      <default>true</default>
+      <summary>Require pressure to show dash</summary>
+      <description>Enable or disable requiring pressure to show the dash</description>
+    </key>
+    <key type="d" name="pressure-threshold">
+      <default>100</default>
+      <summary>Pressure threshold</summary>
+      <description>Sets how much pressure is needed to show the dash.</description>
+    </key>
+    <key type="b" name="autohide-in-fullscreen">
+      <default>false</default>
+      <summary>Enable autohide in fullscreen mode.</summary>
+      <description>Enable autohide in fullscreen mode.</description>
+    </key>
+    <key type="b" name="dock-fixed">
+      <default>false</default>
+      <summary>Dock always visible</summary>
+      <description>Dock is always visible</description>
+    </key>
+    <key type="b" name="scroll-switch-workspace">
+      <default>true</default>
+      <summary>Switch workspace by scrolling over the dock</summary>
+      <description>Add the possibility to switch workspace by mouse scrolling over the dock.</description>
+    </key>
+    <key type="i" name="dash-max-icon-size">
+      <default>48</default>
+      <summary>Maximum dash icon size</summary>
+      <description>Set the allowed maximum dash icon size. Allowed range: 16..64.</description>
+    </key>
+    <key type="b" name="icon-size-fixed">
+      <default>false</default>
+      <summary>Fixed icon size</summary>
+      <description>Keep the icon size fived by scrolling the dock.</description>
+    </key>
+    <key type="b" name="apply-custom-theme">
+      <default>false</default>
+      <summary>Apply custom theme</summary>
+      <description>Apply customization to the dash appearance</description>
+    </key>
+    <key type="b" name="custom-theme-shrink">
+      <default>false</default>
+      <summary>TODO</summary>
+      <description>TODO</description>
+    </key>
+    <key type="b" name="custom-theme-running-dots">
+      <default>false</default>
+      <summary>TODO</summary>
+      <description>TODO</description>
+    </key>
+    <key type="b" name="custom-theme-customize-running-dots">
+      <default>false</default>
+      <summary>Customize the style of the running application indicators.</summary>
+      <description>Customize the style of the running application indicators.</description>
+    </key>
+    <key type="s" name="custom-theme-running-dots-color">
+      <default>"#ffffff"</default>
+      <summary>Running application indicators color</summary>
+      <description>Customize the color of the running application indicators.</description>
+    </key>
+    <key type="s" name="custom-theme-running-dots-border-color">
+      <default>"#ffffff"</default>
+      <summary>Running application indicators border color.</summary>
+      <description>Customize the border color of the running application indicators.</description>
+    </key>
+    <key type="i" name="custom-theme-running-dots-border-width">
+      <default>0</default>
+      <summary>Running application indicators border width.</summary>
+      <description>Customize the border width of the running application indicators.</description>
+    </key>
+    <key type="b" name="show-running">
+      <default>true</default>
+      <summary>Show running apps</summary>
+      <description>Show or hide running appplications icons in the dash</description>
+    </key>
+    <key type="b" name="isolate-workspaces">
+      <default>false</default>
+      <summary>Provide workspace isolation</summary>
+      <description>Dash shows only windows from the currentworkspace</description>
+    </key>
+    <key type="b" name="isolate-monitors">
+      <default>false</default>
+      <summary>Provide monitor isolation</summary>
+      <description>Dash shows only windows from the monitor</description>
+    </key>
+    <key type="b" name="show-windows-preview">
+      <default>true</default>
+      <summary>Show preview of the open windows</summary>
+      <description>Replace open windows list with windows previews</description>
+    </key>
+    <key type="b" name="show-favorites">
+      <default>true</default>
+      <summary>Show favorites apps</summary>
+      <description>Show or hide favorite appplications icons in the dash</description>
+    </key>
+    <key type="b" name="show-show-apps-button">
+      <default>true</default>
+      <summary>Show applications button</summary>
+      <description>Show appplications button in the dash</description>
+    </key>
+    <key type="b" name="show-apps-at-top">
+      <default>false</default>
+      <summary>Show application button at top</summary>
+      <description>Show appplication button at top of the dash</description>
+    </key>
+    <key type="b" name="animate-show-apps">
+      <default>true</default>
+      <summary>Animate Show Applications from the desktop</summary>
+      <description>Animate Show Applications from the desktop</description>
+    </key>
+    <key type="b" name="bolt-support">
+      <default>true</default>
+      <summary>Basic compatibility with bolt extensions</summary>
+      <description>Make the extension work properly when bolt extensions is enabled</description>
+    </key>
+    <key type="d" name="height-fraction">
+      <default>0.90</default>
+      <summary>Dock max height (fraction of available space)</summary>
+    </key>
+    <key type="b" name="extend-height">
+      <default>false</default>
+      <summary>Extend the dock container to all the available height</summary>
+    </key>
+    <key type="i" name="preferred-monitor">
+      <default>-1</default>
+      <summary>Monitor on which putting the dock</summary>
+      <description>Set on which monitor to put the dock, use -1 for the primary one</description>
+    </key>
+    <key type="b" name="multi-monitor">
+      <default>false</default>
+      <summary>Enable multi-monitor docks</summary>
+      <description>Show a dock on every monitor</description>
+    </key>
+    <key type="b" name="customize-click">
+      <default>true</default>
+      <summary>Customize click behaviour</summary>
+      <description>Customize action on various mouse events</description>
+    </key>
+    <key type="b" name="minimize-shift">
+      <default>true</default>
+      <summary>Minimize on shift+click</summary>
+    </key>
+    <key type="b" name="activate-single-window">
+      <default>true</default>
+      <summary>Activate only one window</summary>
+    </key>
+    <key name="click-action" enum="org.gnome.shell.extensions.dash-to-dock.clickAction">
+      <default>'cycle-windows'</default>
+      <summary>Action when clicking on a running app</summary>
+      <description>Set the action that is executed when clicking on the icon of a running application</description>
+    </key>
+    <key name="scroll-action" enum="org.gnome.shell.extensions.dash-to-dock.scrollAction">
+      <default>'do-nothing'</default>
+      <summary>Action when scrolling app</summary>
+      <description>Set the action that is executed when scrolling on the application icon</description>
+    </key>
+    <key name="shift-click-action" enum="org.gnome.shell.extensions.dash-to-dock.clickAction">
+      <default>'minimize'</default>
+      <summary>Action when shit+clicking on a running app</summary>
+      <description>Set the action that is executed when shift+clicking on the icon of a running application</description>
+    </key>
+    <key name="middle-click-action" enum="org.gnome.shell.extensions.dash-to-dock.clickAction">
+      <default>'launch'</default>
+      <summary>Action when clicking on a running app</summary>
+      <description>Set the action that is executed when middle-clicking on the icon of a running application</description>
+    </key>
+    <key name="shift-middle-click-action" enum="org.gnome.shell.extensions.dash-to-dock.clickAction">
+      <default>'launch'</default>
+      <summary>Action when clicking on a running app</summary>
+      <description>Set the action that is executed when shift+middle-clicking on the icon of a running application</description>
+    </key>
+    <key type="b" name="hot-keys">
+      <default>true</default>
+      <summary>Super Hot-Keys</summary>
+      <description>Launch and switch between dash items using Super+(0-9)</description>
+    </key>
+    <key type="b" name="hotkeys-show-dock">
+      <default>true</default>
+      <summary>Show the dock when using the hotkeys</summary>
+      <description>The dock will be quickly shown so that the number-overlay is visible and app activation is easier</description>
+    </key>
+    <key type="s" name="shortcut-text">
+      <default>"&lt;Super&gt;q"</default>
+      <summary>Keybinding to show the dock and the number overlay.</summary>
+      <description>Behavior depends on hotkeys-show-dock and hotkeys-overlay.</description>
+    </key>
+    <key type="as" name="shortcut">
+      <default><![CDATA[['<Super>q']]]></default>
+      <summary>Keybinding to show the dock and the number overlay.</summary>
+      <description>Behavior depends on hotkeys-show-dock and hotkeys-overlay.</description>
+    </key>
+    <key type="d" name="shortcut-timeout">
+      <default>2</default>
+      <summary>Timeout to hide the dock</summary>
+      <description>Sets the time duration before the dock is hidden again.</description>
+    </key>
+    <key type="b" name="hotkeys-overlay">
+      <default>true</default>
+      <summary>Show the dock when using the hotkeys</summary>
+      <description>The dock will be quickly shown so that the number-overlay is visible and app activation is easier</description>
+    </key>
+    <key name="app-ctrl-hotkey-1" type="as">
+      <default><![CDATA[['<Ctrl><Super>1']]]></default>
+      <summary>Keybinding to launch 1st dash app</summary>
+      <description>
+        Keybinding to launch 1st app.
+      </description>
+    </key>
+    <key name="app-ctrl-hotkey-2" type="as">
+      <default><![CDATA[['<Ctrl><Super>2']]]></default>
+      <summary>Keybinding to launch 2nd dash app</summary>
+      <description>
+        Keybinding to launch 2nd app.
+      </description>
+    </key>
+    <key name="app-ctrl-hotkey-3" type="as">
+      <default><![CDATA[['<Ctrl><Super>3']]]></default>
+      <summary>Keybinding to launch 3rd dash app</summary>
+      <description>
+        Keybinding to launch 3rd app.
+      </description>
+    </key>
+    <key name="app-ctrl-hotkey-4" type="as">
+      <default><![CDATA[['<Ctrl><Super>4']]]></default>
+      <summary>Keybinding to launch 4th dash app</summary>
+      <description>
+        Keybinding to launch 4th app.
+      </description>
+    </key>
+    <key name="app-ctrl-hotkey-5" type="as">
+      <default><![CDATA[['<Ctrl><Super>5']]]></default>
+      <summary>Keybinding to launch 5th dash app</summary>
+      <description>
+        Keybinding to launch 5th app.
+      </description>
+    </key>
+    <key name="app-ctrl-hotkey-6" type="as">
+      <default><![CDATA[['<Ctrl><Super>6']]]></default>
+      <summary>Keybinding to launch 6th dash app</summary>
+      <description>
+        Keybinding to launch 6th app.
+      </description>
+    </key>
+    <key name="app-ctrl-hotkey-7" type="as">
+      <default><![CDATA[['<Ctrl><Super>7']]]></default>
+      <summary>Keybinding to launch 7th dash app</summary>
+      <description>
+        Keybinding to launch 7th app.
+      </description>
+    </key>
+    <key name="app-ctrl-hotkey-8" type="as">
+      <default><![CDATA[['<Ctrl><Super>8']]]></default>
+      <summary>Keybinding to launch 8th dash app</summary>
+      <description>
+        Keybinding to launch 8th app.
+      </description>
+    </key>
+    <key name="app-ctrl-hotkey-9" type="as">
+      <default><![CDATA[['<Ctrl><Super>9']]]></default>
+      <summary>Keybinding to launch 9th dash app</summary>
+      <description>
+        Keybinding to launch 9th app.
+      </description>
+    </key>
+    <key name="app-ctrl-hotkey-10" type="as">
+      <default><![CDATA[['<Ctrl><Super>0']]]></default>
+      <summary>Keybinding to launch 10th dash app</summary>
+      <description>
+        Keybinding to launch 10th app.
+      </description>
+    </key>
+    <key name="app-shift-hotkey-1" type="as">
+      <default><![CDATA[['<Shift><Super>1']]]></default>
+      <summary>Keybinding to trigger 1st dash app with shift behavior</summary>
+      <description>
+        Keybinding to trigger 1st app with shift behavior.
+      </description>
+    </key>
+    <key name="app-shift-hotkey-2" type="as">
+      <default><![CDATA[['<Shift><Super>2']]]></default>
+      <summary>Keybinding to trigger 2nd dash app with shift behavior</summary>
+      <description>
+        Keybinding to trigger 2nd app with shift behavior.
+      </description>
+    </key>
+    <key name="app-shift-hotkey-3" type="as">
+      <default><![CDATA[['<Shift><Super>3']]]></default>
+      <summary>Keybinding to trigger 3rd dash app with shift behavior</summary>
+      <description>
+        Keybinding to trigger 3rd app with shift behavior.
+      </description>
+    </key>
+    <key name="app-shift-hotkey-4" type="as">
+      <default><![CDATA[['<Shift><Super>4']]]></default>
+      <summary>Keybinding to trigger 4th dash app with shift behavior</summary>
+      <description>
+        Keybinding to trigger 4th app with shift behavior.
+      </description>
+    </key>
+    <key name="app-shift-hotkey-5" type="as">
+      <default><![CDATA[['<Shift><Super>5']]]></default>
+      <summary>Keybinding to trigger 5th dash app with shift behavior</summary>
+      <description>
+        Keybinding to trigger 5th app with shift behavior.
+      </description>
+    </key>
+    <key name="app-shift-hotkey-6" type="as">
+      <default><![CDATA[['<Shift><Super>6']]]></default>
+      <summary>Keybinding to trigger 6th dash app with shift behavior</summary>
+      <description>
+        Keybinding to trigger 6th app with shift behavior.
+      </description>
+    </key>
+    <key name="app-shift-hotkey-7" type="as">
+      <default><![CDATA[['<Shift><Super>7']]]></default>
+      <summary>Keybinding to trigger 7th dash app with shift behavior</summary>
+      <description>
+        Keybinding to trigger 7th app with shift behavior.
+      </description>
+    </key>
+    <key name="app-shift-hotkey-8" type="as">
+      <default><![CDATA[['<Shift><Super>8']]]></default>
+      <summary>Keybinding to trigger 8th dash app with shift behavior</summary>
+      <description>
+        Keybinding to trigger 8th app with shift behavior.
+      </description>
+    </key>
+    <key name="app-shift-hotkey-9" type="as">
+      <default><![CDATA[['<Shift><Super>9']]]></default>
+      <summary>Keybinding to trigger 9th dash app with shift behavior</summary>
+      <description>
+        Keybinding to trigger 9th app with shift behavior.
+      </description>
+    </key>
+    <key name="app-shift-hotkey-10" type="as">
+      <default><![CDATA[['<Shift><Super>0']]]></default>
+      <summary>Keybinding to trigger 10th dash app with shift behavior</summary>
+      <description>
+        Keybinding to trigger 10th app with shift behavior.
+      </description>
+    </key>
+    <key name="app-hotkey-1" type="as">
+      <default><![CDATA[['<Super>1']]]></default>
+      <summary>Keybinding to trigger 1st dash app</summary>
+      <description>
+        Keybinding to either show or launch the 1st application in the dash.
+      </description>
+    </key>
+    <key name="app-hotkey-2" type="as">
+      <default><![CDATA[['<Super>2']]]></default>
+      <summary>Keybinding to trigger 2nd dash app</summary>
+      <description>
+        Keybinding to either show or launch the 2nd application in the dash.
+      </description>
+    </key>
+    <key name="app-hotkey-3" type="as">
+      <default><![CDATA[['<Super>3']]]></default>
+      <summary>Keybinding to trigger 3rd dash app</summary>
+      <description>
+        Keybinding to either show or launch the 3rd application in the dash.
+      </description>
+    </key>
+    <key name="app-hotkey-4" type="as">
+      <default><![CDATA[['<Super>4']]]></default>
+      <summary>Keybinding to trigger 4th dash app</summary>
+      <description>
+        Keybinding to either show or launch the 4th application in the dash.
+      </description>
+    </key>
+    <key name="app-hotkey-5" type="as">
+      <default><![CDATA[['<Super>5']]]></default>
+      <summary>Keybinding to trigger 5th dash app</summary>
+      <description>
+        Keybinding to either show or launch the 5th application in the dash.
+      </description>
+    </key>
+    <key name="app-hotkey-6" type="as">
+      <default><![CDATA[['<Super>6']]]></default>
+      <summary>Keybinding to trigger 6th dash app</summary>
+      <description>
+        Keybinding to either show or launch the 6th application in the dash.
+      </description>
+    </key>
+    <key name="app-hotkey-7" type="as">
+      <default><![CDATA[['<Super>7']]]></default>
+      <summary>Keybinding to trigger 7th dash app</summary>
+      <description>
+        Keybinding to either show or launch the 7th application in the dash.
+      </description>
+    </key>
+    <key name="app-hotkey-8" type="as">
+      <default><![CDATA[['<Super>8']]]></default>
+      <summary>Keybinding to trigger 8th dash app</summary>
+      <description>
+        Keybinding to either show or launch the 8th application in the dash.
+      </description>
+    </key>
+    <key name="app-hotkey-9" type="as">
+      <default><![CDATA[['<Super>9']]]></default>
+      <summary>Keybinding to trigger 9th dash app</summary>
+      <description>
+        Keybinding to either show or launch the 9th application in the dash.
+      </description>
+    </key>
+    <key name="app-hotkey-10" type="as">
+      <default><![CDATA[['<Super>0']]]></default>
+      <summary>Keybinding to trigger 10th dash app</summary>
+      <description>
+        Keybinding to either show or launch the 10th application in the dash.
+      </description>
+    </key>
+    <key name="app-ctrl-hotkey-kp-1" type="as">
+      <default><![CDATA[['<Ctrl><Super>KP_1']]]></default>
+      <summary>Keybinding to launch 1st dash app</summary>
+      <description>
+        Keybinding to launch 1st app.
+      </description>
+    </key>
+    <key name="app-ctrl-hotkey-kp-2" type="as">
+      <default><![CDATA[['<Ctrl><Super>KP_2']]]></default>
+      <summary>Keybinding to launch 2nd dash app</summary>
+      <description>
+        Keybinding to launch 2nd app.
+      </description>
+    </key>
+    <key name="app-ctrl-hotkey-kp-3" type="as">
+      <default><![CDATA[['<Ctrl><Super>KP_3']]]></default>
+      <summary>Keybinding to launch 3rd dash app</summary>
+      <description>
+        Keybinding to launch 3rd app.
+      </description>
+    </key>
+    <key name="app-ctrl-hotkey-kp-4" type="as">
+      <default><![CDATA[['<Ctrl><Super>KP_4']]]></default>
+      <summary>Keybinding to launch 4th dash app</summary>
+      <description>
+        Keybinding to launch 4th app.
+      </description>
+    </key>
+    <key name="app-ctrl-hotkey-kp-5" type="as">
+      <default><![CDATA[['<Ctrl><Super>KP_5']]]></default>
+      <summary>Keybinding to launch 5th dash app</summary>
+      <description>
+        Keybinding to launch 5th app.
+      </description>
+    </key>
+    <key name="app-ctrl-hotkey-kp-6" type="as">
+      <default><![CDATA[['<Ctrl><Super>KP_6']]]></default>
+      <summary>Keybinding to launch 6th dash app</summary>
+      <description>
+        Keybinding to launch 6th app.
+      </description>
+    </key>
+    <key name="app-ctrl-hotkey-kp-7" type="as">
+      <default><![CDATA[['<Ctrl><Super>KP_7']]]></default>
+      <summary>Keybinding to launch 7th dash app</summary>
+      <description>
+        Keybinding to launch 7th app.
+      </description>
+    </key>
+    <key name="app-ctrl-hotkey-kp-8" type="as">
+      <default><![CDATA[['<Ctrl><Super>KP_8']]]></default>
+      <summary>Keybinding to launch 8th dash app</summary>
+      <description>
+        Keybinding to launch 8th app.
+      </description>
+    </key>
+    <key name="app-ctrl-hotkey-kp-9" type="as">
+      <default><![CDATA[['<Ctrl><Super>KP_9']]]></default>
+      <summary>Keybinding to launch 9th dash app</summary>
+      <description>
+        Keybinding to launch 9th app.
+      </description>
+    </key>
+    <key name="app-ctrl-hotkey-kp-10" type="as">
+      <default><![CDATA[['<Ctrl><Super>KP_0']]]></default>
+      <summary>Keybinding to launch 10th dash app</summary>
+      <description>
+        Keybinding to launch 10th app.
+      </description>
+    </key>
+    <key name="app-shift-hotkey-kp-1" type="as">
+      <default><![CDATA[['<Shift><Super>KP_1']]]></default>
+      <summary>Keybinding to trigger 1st dash app with shift behavior</summary>
+      <description>
+        Keybinding to trigger 1st app with shift behavior.
+      </description>
+    </key>
+    <key name="app-shift-hotkey-kp-2" type="as">
+      <default><![CDATA[['<Shift><Super>KP_2']]]></default>
+      <summary>Keybinding to trigger 2nd dash app with shift behavior</summary>
+      <description>
+        Keybinding to trigger 2nd app with shift behavior.
+      </description>
+    </key>
+    <key name="app-shift-hotkey-kp-3" type="as">
+      <default><![CDATA[['<Shift><Super>KP_3']]]></default>
+      <summary>Keybinding to trigger 3rd dash app with shift behavior</summary>
+      <description>
+        Keybinding to trigger 3rd app with shift behavior.
+      </description>
+    </key>
+    <key name="app-shift-hotkey-kp-4" type="as">
+      <default><![CDATA[['<Shift><Super>KP_4']]]></default>
+      <summary>Keybinding to trigger 4th dash app with shift behavior</summary>
+      <description>
+        Keybinding to trigger 4th app with shift behavior.
+      </description>
+    </key>
+    <key name="app-shift-hotkey-kp-5" type="as">
+      <default><![CDATA[['<Shift><Super>KP_5']]]></default>
+      <summary>Keybinding to trigger 5th dash app with shift behavior</summary>
+      <description>
+        Keybinding to trigger 5th app with shift behavior.
+      </description>
+    </key>
+    <key name="app-shift-hotkey-kp-6" type="as">
+      <default><![CDATA[['<Shift><Super>KP_6']]]></default>
+      <summary>Keybinding to trigger 6th dash app with shift behavior</summary>
+      <description>
+        Keybinding to trigger 6th app with shift behavior.
+      </description>
+    </key>
+    <key name="app-shift-hotkey-kp-7" type="as">
+      <default><![CDATA[['<Shift><Super>KP_7']]]></default>
+      <summary>Keybinding to trigger 7th dash app with shift behavior</summary>
+      <description>
+        Keybinding to trigger 7th app with shift behavior.
+      </description>
+    </key>
+    <key name="app-shift-hotkey-kp-8" type="as">
+      <default><![CDATA[['<Shift><Super>KP_8']]]></default>
+      <summary>Keybinding to trigger 8th dash app with shift behavior</summary>
+      <description>
+        Keybinding to trigger 8th app with shift behavior.
+      </description>
+    </key>
+    <key name="app-shift-hotkey-kp-9" type="as">
+      <default><![CDATA[['<Shift><Super>KP_9']]]></default>
+      <summary>Keybinding to trigger 9th dash app with shift behavior</summary>
+      <description>
+        Keybinding to trigger 9th app with shift behavior.
+      </description>
+    </key>
+    <key name="app-shift-hotkey-kp-10" type="as">
+      <default><![CDATA[['<Shift><Super>KP_0']]]></default>
+      <summary>Keybinding to trigger 10th dash app with shift behavior</summary>
+      <description>
+        Keybinding to trigger 10th app with shift behavior.
+      </description>
+    </key>
+    <key name="app-hotkey-kp-1" type="as">
+      <default><![CDATA[['<Super>KP_1']]]></default>
+      <summary>Keybinding to trigger 1st dash app</summary>
+      <description>
+        Keybinding to either show or launch the 1st application in the dash.
+      </description>
+    </key>
+    <key name="app-hotkey-kp-2" type="as">
+      <default><![CDATA[['<Super>KP_2']]]></default>
+      <summary>Keybinding to trigger 2nd dash app</summary>
+      <description>
+        Keybinding to either show or launch the 2nd application in the dash.
+      </description>
+    </key>
+    <key name="app-hotkey-kp-3" type="as">
+      <default><![CDATA[['<Super>KP_3']]]></default>
+      <summary>Keybinding to trigger 3rd dash app</summary>
+      <description>
+        Keybinding to either show or launch the 3rd application in the dash.
+      </description>
+    </key>
+    <key name="app-hotkey-kp-4" type="as">
+      <default><![CDATA[['<Super>KP_4']]]></default>
+      <summary>Keybinding to trigger 4th dash app</summary>
+      <description>
+        Keybinding to either show or launch the 4th application in the dash.
+      </description>
+    </key>
+    <key name="app-hotkey-kp-5" type="as">
+      <default><![CDATA[['<Super>KP_5']]]></default>
+      <summary>Keybinding to trigger 5th dash app</summary>
+      <description>
+        Keybinding to either show or launch the 5th application in the dash.
+      </description>
+    </key>
+    <key name="app-hotkey-kp-6" type="as">
+      <default><![CDATA[['<Super>KP_6']]]></default>
+      <summary>Keybinding to trigger 6th dash app</summary>
+      <description>
+        Keybinding to either show or launch the 6th application in the dash.
+      </description>
+    </key>
+    <key name="app-hotkey-kp-7" type="as">
+      <default><![CDATA[['<Super>KP_7']]]></default>
+      <summary>Keybinding to trigger 7th dash app</summary>
+      <description>
+        Keybinding to either show or launch the 7th application in the dash.
+      </description>
+    </key>
+    <key name="app-hotkey-kp-8" type="as">
+      <default><![CDATA[['<Super>KP_8']]]></default>
+      <summary>Keybinding to trigger 8th dash app</summary>
+      <description>
+        Keybinding to either show or launch the 8th application in the dash.
+      </description>
+    </key>
+    <key name="app-hotkey-kp-9" type="as">
+      <default><![CDATA[['<Super>KP_9']]]></default>
+      <summary>Keybinding to trigger 9th dash app</summary>
+      <description>
+        Keybinding to either show or launch the 9th application in the dash.
+      </description>
+    </key>
+    <key name="app-hotkey-kp-10" type="as">
+      <default><![CDATA[['<Super>KP_0']]]></default>
+      <summary>Keybinding to trigger 10th dash app</summary>
+      <description>
+        Keybinding to either show or launch the 10th application in the dash.
+      </description>
+    </key>
+    <key name="force-straight-corner" type="b">
+      <default>false</default>
+      <summary>Force straight corners in dash</summary>
+      <description>Make the borders in the dash non rounded</description>
+    </key>
+  </schema>
+</schemalist>
diff --git a/package/stylesheet.css b/package/stylesheet.css
new file mode 100644
index 0000000000000000000000000000000000000000..6e9bf38cd98681f215cce07ca9578729adbf9888
--- /dev/null
+++ b/package/stylesheet.css
@@ -0,0 +1,109 @@
+/* Shrink the dash by reducing padding and border radius */
+#dashtodockContainer.shrink #dash,
+#dashtodockContainer.dashtodock #dash {
+    border:1px;
+    padding:0px;
+}
+
+#dashtodockContainer.shrink.left #dash,
+#dashtodockContainer.dashtodock.left #dash {
+    border-left: 0px;
+    border-radius: 0px 9px 9px 0px;
+}
+
+
+#dashtodockContainer.shrink.right #dash,
+#dashtodockContainer.dashtodock.right #dash {
+    border-right: 0px;
+    border-radius: 9px 0px 0px 9px;
+}
+
+
+#dashtodockContainer.shrink.top #dash,
+#dashtodockContainer.dashtodock.top #dash {
+    border-top: 0px;
+    border-radius: 0px 0px 9px 9px;
+}
+
+#dashtodockContainer.shrink.bottom #dash,
+#dashtodockContainer.dashtodock.bottom #dash {
+    border-bottom: 0px;
+    border-radius: 9px 9px 0px 0px;
+}
+
+#dashtodockContainer.straight-corner #dash,
+#dashtodockContainer.shrink.straight-corner #dash {
+    border-radius: 0px;
+}
+
+/* Scrollview style */
+.bottom #dashtodockDashScrollview,
+.top #dashtodockDashScrollview {
+    -st-hfade-offset: 24px;
+}
+
+.left #dashtodockDashScrollview,
+.right #dashtodockDashScrollview {
+    -st-vfade-offset: 24px;
+}
+
+#dashtodockContainer.running-dots .dash-item-container > StButton,
+#dashtodockContainer.dashtodock .dash-item-container > StButton {
+    transition-duration: 250;
+    background-size: contain;
+}
+
+#dashtodockContainer.shrink .dash-item-container > StButton,
+#dashtodockContainer.dashtodock .dash-item-container > StButton {
+   padding: 1px 2px;
+}
+
+/* Dash height extended to the whole available vertical space */
+#dashtodockContainer.extended.top #dash,
+#dashtodockContainer.extended.right #dash,
+#dashtodockContainer.extended.bottom #dash,
+#dashtodockContainer.extended.left #dash {
+    border-radius: 0;
+}
+
+#dashtodockContainer.extended.top #dash,
+#dashtodockContainer.extended.bottom #dash {
+    border-left:0px;
+    border-right:0px;
+}
+
+#dashtodockContainer.extended.right #dash,
+#dashtodockContainer.extended.left #dash {
+    border-top:0px;
+    border-bottom:0px;
+}
+
+/* Running and focused application style */
+
+#dashtodockContainer.running-dots .app-well-app.running > .overview-icon,
+#dashtodockContainer.dashtodock .app-well-app.running > .overview-icon {
+	background-image:none;
+}
+
+
+#dashtodockContainer.running-dots .app-well-app.focused  .overview-icon,
+#dashtodockContainer.dashtodock .app-well-app.focused  .overview-icon {
+    background-color: rgba(238, 238, 236, 0.1);
+}
+
+#dashtodockContainer.dashtodock #dash {
+    background: #2e3436;
+}
+
+#dashtodockContainer .number-overlay {
+    color: rgba(255,255,255,1);
+    background-color: rgba(0,0,0,0.8);
+    text-align: center;
+}
+
+#dashtodockPreviewSeparator.popup-separator-menu-item-horizontal {
+    width: 1px;
+    height: auto;
+    border-right-width: 1px;
+    margin: 32px 0px;
+}
diff --git a/package/theming.js b/package/theming.js
new file mode 100644
index 0000000000000000000000000000000000000000..0a306b47132676eae99733c5ae2b15edfb54ad23
--- /dev/null
+++ b/package/theming.js
@@ -0,0 +1,293 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
+const Clutter = imports.gi.Clutter;
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+const Gtk = imports.gi.Gtk;
+const Signals = imports.signals;
+const Lang = imports.lang;
+const Meta = imports.gi.Meta;
+const Shell = imports.gi.Shell;
+const St = imports.gi.St;
+const Mainloop = imports.mainloop;
+
+const AppDisplay = imports.ui.appDisplay;
+const AppFavorites = imports.ui.appFavorites;
+const Dash = imports.ui.dash;
+const DND = imports.ui.dnd;
+const IconGrid = imports.ui.iconGrid;
+const Main = imports.ui.main;
+const PopupMenu = imports.ui.popupMenu;
+const Tweener = imports.ui.tweener;
+const Util = imports.misc.util;
+const Workspace = imports.ui.workspace;
+
+const Me = imports.misc.extensionUtils.getCurrentExtension();
+const Utils = Me.imports.utils;
+
+/**
+ * Manage theme customization and custom theme support
+ */
+const ThemeManager = new Lang.Class({
+    Name: 'DashToDock.ThemeManager',
+
+    _init: function(settings, actor, dash) {
+        this._settings = settings;
+        this._signalsHandler = new Utils.GlobalSignalsHandler();
+        this._bindSettingsChanges();
+        this._actor = actor;
+        this._dash = dash;
+
+        // initialize colors with generic values
+        this._customizedBackground = {red: 0, green: 0, blue: 0, alpha: 0};
+        this._customizedBorder = {red: 0, green: 0, blue: 0, alpha: 0};
+
+        this._signalsHandler.add([
+            // When theme changes re-obtain default background color
+            St.ThemeContext.get_for_stage (global.stage),
+            'changed',
+            Lang.bind(this, this.updateCustomTheme)
+        ], [
+            // update :overview pseudoclass
+            Main.overview,
+            'showing',
+            Lang.bind(this, this._onOverviewShowing)
+        ], [
+            Main.overview,
+            'hiding',
+            Lang.bind(this, this._onOverviewHiding)
+        ]);
+
+        this._updateCustomStyleClasses();
+
+        // destroy themeManager when the managed actor is destroyed (e.g. extension unload)
+        // in order to disconnect signals
+        this._actor.connect('destroy', Lang.bind(this, this.destroy));
+
+    },
+
+    destroy: function() {
+        this._signalsHandler.destroy();
+    },
+
+    _onOverviewShowing: function() {
+        this._actor.add_style_pseudo_class('overview');
+    },
+
+    _onOverviewHiding: function() {
+        this._actor.remove_style_pseudo_class('overview');
+    },
+
+    _updateDashOpacity: function() {
+        let newAlpha = this._settings.get_double('background-opacity');
+
+        let [backgroundColor, borderColor] = this._getDefaultColors();
+
+        if (backgroundColor==null)
+            return;
+
+        // Get the background and border alphas. We check the background alpha
+        // for a minimum of .001 to prevent division by 0 errors
+        let backgroundAlpha = Math.max(Math.round(backgroundColor.alpha/2.55)/100, .001);
+        let borderAlpha = Math.round(borderColor.alpha/2.55)/100;
+
+        // The border and background alphas should remain in sync
+        // We also limit the borderAlpha to a maximum of 1 (full opacity)
+        borderAlpha = Math.min((borderAlpha/backgroundAlpha)*newAlpha, 1);
+
+        this._customizedBackground = 'rgba(' +
+            backgroundColor.red + ',' +
+            backgroundColor.green + ',' +
+            backgroundColor.blue + ',' +
+            newAlpha + ')';
+
+        this._customizedBorder = 'rgba(' +
+            borderColor.red + ',' +
+            borderColor.green + ',' +
+            borderColor.blue + ',' +
+            borderAlpha + ')';
+
+    },
+
+    _getDefaultColors: function() {
+        // Prevent shell crash if the actor is not on the stage.
+        // It happens enabling/disabling repeatedly the extension
+        if (!this._dash._container.get_stage())
+            return [null, null];
+
+        // Remove custom style
+        let oldStyle = this._dash._container.get_style();
+        this._dash._container.set_style(null);
+
+        let themeNode = this._dash._container.get_theme_node();
+        this._dash._container.set_style(oldStyle);
+
+        let backgroundColor = themeNode.get_background_color();
+
+        // Just in case the theme has different border colors ..
+        // We want to find the inside border-color of the dock because it is
+        // the side most visible to the user. We do this by finding the side
+        // opposite the position
+        let position = Utils.getPosition(this._settings);
+        let side = position + 2;
+        if (side > 3)
+            side = Math.abs(side - 4);
+
+        let borderColor = themeNode.get_border_color(side);
+
+        return [backgroundColor, borderColor];
+    },
+
+    _updateDashColor: function() {
+        if (this._settings.get_boolean('custom-background-color')) {
+            let [backgroundColor, borderColor] = this._getDefaultColors();
+
+            if (backgroundColor==null)
+              return;
+
+            let newAlpha = Math.round(backgroundColor.alpha/2.55)/100;
+            if (this._settings.get_boolean('opaque-background'))
+                newAlpha = this._settings.get_double('background-opacity');
+
+            let newColor = Clutter.color_from_string(this._settings.get_string('background-color'))[1];
+            this._customizedBackground = 'rgba(' +
+                newColor.red + ',' +
+                newColor.green + ',' +
+                newColor.blue + ',' +
+                newAlpha + ')';
+
+            this._customizedBorder = this._customizedBackground;
+        }
+    },
+
+    _updateCustomStyleClasses: function() {
+        if (this._settings.get_boolean('apply-custom-theme'))
+            this._actor.add_style_class_name('dashtodock');
+        else
+            this._actor.remove_style_class_name('dashtodock');
+
+        if (this._settings.get_boolean('custom-theme-shrink'))
+            this._actor.add_style_class_name('shrink');
+        else
+            this._actor.remove_style_class_name('shrink');
+
+        if (this._settings.get_boolean('custom-theme-running-dots'))
+            this._actor.add_style_class_name('running-dots');
+        else
+            this._actor.remove_style_class_name('running-dots');
+
+        // If not the built-in theme option is not selected
+        if (!this._settings.get_boolean('apply-custom-theme')) {
+            if (this._settings.get_boolean('force-straight-corner'))
+                this._actor.add_style_class_name('straight-corner');
+            else 
+                this._actor.remove_style_class_name('straight-corner');
+        } else {
+            this._actor.remove_style_class_name('straight-corner');
+        }
+    },
+
+    updateCustomTheme: function() {
+        this._updateCustomStyleClasses();
+        this._updateDashOpacity();
+        this._updateDashColor();
+        this._adjustTheme();
+        this._dash._redisplay();
+    },
+
+    /**
+     * Reimported back and adapted from atomdock
+     */
+    _adjustTheme: function() {
+        // Prevent shell crash if the actor is not on the stage.
+        // It happens enabling/disabling repeatedly the extension
+        if (!this._dash._container.get_stage())
+            return;
+
+        // Remove prior style edits
+        this._dash._container.set_style(null);
+
+        // If built-in theme is enabled do nothing else
+        if (this._settings.get_boolean('apply-custom-theme'))
+            return;
+
+        let newStyle = '';
+        let position = Utils.getPosition(this._settings);
+
+        if (!this._settings.get_boolean('custom-theme-shrink')) {
+            // obtain theme border settings
+            let themeNode = this._dash._container.get_theme_node();
+            let borderColor = themeNode.get_border_color(St.Side.TOP);
+            let borderWidth = themeNode.get_border_width(St.Side.TOP);
+            let borderRadius = themeNode.get_border_radius(St.Corner.TOPRIGHT);
+
+            // We're copying border and corner styles to left border and top-left
+            // corner, also removing bottom border and bottom-right corner styles
+            let borderInner = '';
+            let borderRadiusValue = '';
+            let borderMissingStyle = '';
+
+            if (this._rtl && (position != St.Side.RIGHT))
+                borderMissingStyle = 'border-right: ' + borderWidth + 'px solid ' +
+                       borderColor.to_string() + ';';
+            else if (!this._rtl && (position != St.Side.LEFT))
+                borderMissingStyle = 'border-left: ' + borderWidth + 'px solid ' +
+                       borderColor.to_string() + ';';
+
+            switch (position) {
+            case St.Side.LEFT:
+                borderInner = 'border-left';
+                borderRadiusValue = '0 ' + borderRadius + 'px ' + borderRadius + 'px 0;';
+                break;
+            case St.Side.RIGHT:
+                borderInner = 'border-right';
+                borderRadiusValue = borderRadius + 'px 0 0 ' + borderRadius + 'px;';
+                break;
+            case St.Side.TOP:
+                borderInner = 'border-top';
+                borderRadiusValue = '0 0 ' + borderRadius + 'px ' + borderRadius + 'px;';
+                break;
+            case St.Side.BOTTOM:
+                borderInner = 'border-bottom';
+                borderRadiusValue = borderRadius + 'px ' + borderRadius + 'px 0 0;';
+                break;
+            }
+
+            newStyle = borderInner + ': none;' +
+                'border-radius: ' + borderRadiusValue +
+                borderMissingStyle;
+
+            // I do call set_style possibly twice so that only the background gets the transition.
+            // The transition-property css rules seems to be unsupported
+            this._dash._container.set_style(newStyle);
+        }
+
+        // Customize background
+        if (this._settings.get_boolean('opaque-background') || this._settings.get_boolean('custom-background-color')) {
+            newStyle = newStyle + 'background-color:'+ this._customizedBackground + '; ' +
+                       'border-color:'+ this._customizedBorder + '; ' +
+                       'transition-delay: 0s; transition-duration: 0.250s;';
+            this._dash._container.set_style(newStyle);
+        }
+    },
+
+    _bindSettingsChanges: function() {
+        let keys = ['opaque-background',
+                    'background-opacity',
+                    'custom-background-color',
+                    'background-color',
+                    'apply-custom-theme',
+                    'custom-theme-shrink',
+                    'custom-theme-running-dots',
+                    'extend-height',
+                    'force-straight-corner'];
+
+        keys.forEach(function(key) {
+            this._signalsHandler.add([
+                this._settings,
+                'changed::' + key,
+                Lang.bind(this, this.updateCustomTheme)
+           ]);
+        }, this);
+    }
+});
diff --git a/package/utils.js b/package/utils.js
new file mode 100644
index 0000000000000000000000000000000000000000..b98fe45b1e5991a3e38243ea1f9919f0ef45322c
--- /dev/null
+++ b/package/utils.js
@@ -0,0 +1,123 @@
+const Clutter = imports.gi.Clutter;
+const Lang = imports.lang;
+const St = imports.gi.St;
+
+/**
+ * Simplify global signals and function injections handling
+ * abstract class
+ */
+const BasicHandler = new Lang.Class({
+    Name: 'DashToDock.BasicHandler',
+
+    _init: function() {
+        this._storage = new Object();
+    },
+
+    add: function(/* unlimited 3-long array arguments */) {
+        // Convert arguments object to array, concatenate with generic
+        let args = Array.concat('generic', Array.slice(arguments));
+        // Call addWithLabel with ags as if they were passed arguments
+        this.addWithLabel.apply(this, args);
+    },
+
+    destroy: function() {
+        for( let label in this._storage )
+            this.removeWithLabel(label);
+    },
+
+    addWithLabel: function(label /* plus unlimited 3-long array arguments*/) {
+        if (this._storage[label] == undefined)
+            this._storage[label] = new Array();
+
+        // Skip first element of the arguments
+        for (let i = 1; i < arguments.length; i++) {
+            this._storage[label].push( this._create(arguments[i]));
+        }
+    },
+
+    removeWithLabel: function(label) {
+        if (this._storage[label]) {
+            for (let i = 0; i < this._storage[label].length; i++)
+                this._remove(this._storage[label][i]);
+
+            delete this._storage[label];
+        }
+    },
+
+    // Virtual methods to be implemented by subclass
+
+    /**
+     * Create single element to be stored in the storage structure
+     */
+    _create: function(item) {
+        throw new Error('no implementation of _create in ' + this);
+    },
+
+    /**
+     * Correctly delete single element
+     */
+    _remove: function(item) {
+        throw new Error('no implementation of _remove in ' + this);
+    }
+});
+
+/**
+ * Manage global signals
+ */
+const GlobalSignalsHandler = new Lang.Class({
+    Name: 'DashToDock.GlobalSignalHandler',
+    Extends: BasicHandler,
+
+    _create: function(item) {
+        let object = item[0];
+        let event = item[1];
+        let callback = item[2]
+        let id = object.connect(event, callback);
+
+        return [object, id];
+    },
+
+    _remove: function(item) {
+         item[0].disconnect(item[1]);
+    }
+});
+
+/**
+ * Manage function injection: both instances and prototype can be overridden
+ * and restored
+ */
+const InjectionsHandler = new Lang.Class({
+    Name: 'DashToDock.InjectionsHandler',
+    Extends: BasicHandler,
+
+    _create: function(item) {
+        let object = item[0];
+        let name = item[1];
+        let injectedFunction = item[2];
+        let original = object[name];
+
+        object[name] = injectedFunction;
+        return [object, name, injectedFunction, original];
+    },
+
+    _remove: function(item) {
+        let object = item[0];
+        let name = item[1];
+        let original = item[3];
+        object[name] = original;
+    }
+});
+
+/**
+ * Return the actual position reverseing left and right in rtl
+ */
+function getPosition(settings) {
+    let position = settings.get_enum('dock-position');
+    if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL) {
+        if (position == St.Side.LEFT)
+            position = St.Side.RIGHT;
+        else if (position == St.Side.RIGHT)
+            position = St.Side.LEFT;
+    }
+    return position;
+}
diff --git a/package/windowPreview.js b/package/windowPreview.js
new file mode 100644
index 0000000000000000000000000000000000000000..4f84b4dfcc1e4b9c6f39d95c815c826244f05508
--- /dev/null
+++ b/package/windowPreview.js
@@ -0,0 +1,595 @@
+/*
+ * Credits:
+ * This file is based on code from the Dash to Panel extension by Jason DeRose
+ * and code from the Taskbar extension by Zorin OS
+ * Some code was also adapted from the upstream Gnome Shell source code.
+ */
+const Clutter = imports.gi.Clutter;
+const GLib = imports.gi.GLib;
+const Lang = imports.lang;
+const St = imports.gi.St;
+const Mainloop = imports.mainloop;
+const Main = imports.ui.main;
+const Gtk = imports.gi.Gtk;
+
+const Params = imports.misc.params;
+const PopupMenu = imports.ui.popupMenu;
+const Tweener = imports.ui.tweener;
+const Workspace = imports.ui.workspace;
+
+const Me = imports.misc.extensionUtils.getCurrentExtension();
+const Utils = Me.imports.utils;
+
+const PREVIEW_MAX_WIDTH = 250;
+const PREVIEW_MAX_HEIGHT = 150;
+
+const WindowPreviewMenu = new Lang.Class({
+    Name: 'WindowPreviewMenu',
+    Extends: PopupMenu.PopupMenu,
+
+    _init: function(source, settings) {
+        this._dtdSettings = settings;
+
+        let side = Utils.getPosition(settings);
+
+        this.parent(source.actor, 0.5, side);
+
+        // We want to keep the item hovered while the menu is up
+        this.blockSourceEvents = true;
+
+        this._source = source;
+        this._app = this._source.app;
+        let monitorIndex = this._source.monitorIndex;
+
+        this.actor.add_style_class_name('app-well-menu');
+        this.actor.set_style('max-width: '  + (Main.layoutManager.monitors[monitorIndex].width  - 22) + 'px; ' +
+                             'max-height: ' + (Main.layoutManager.monitors[monitorIndex].height - 22) + 'px;');
+        this.actor.hide();
+
+        // Chain our visibility and lifecycle to that of the source
+        this._mappedId = this._source.actor.connect('notify::mapped', Lang.bind(this, function () {
+            if (!this._source.actor.mapped)
+                this.close();
+        }));
+        this._destroyId = this._source.actor.connect('destroy', Lang.bind(this, this.destroy));
+
+        Main.uiGroup.add_actor(this.actor);
+
+        // Change the initialized side where required.
+        this._arrowSide = side;
+        this._boxPointer._arrowSide = side;
+        this._boxPointer._userArrowSide = side;
+
+        this._previewBox = new WindowPreviewList(this._source, this._dtdSettings);
+        this.addMenuItem(this._previewBox);
+    },
+
+    _redisplay: function() {
+        this._previewBox._shownInitially = false;
+        this._previewBox._redisplay();
+    },
+
+    popup: function() {
+        let windows = this._source.getInterestingWindows();
+        if (windows.length > 0) {
+            this._redisplay();
+            this.open();
+            this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
+            this._source.emit('sync-tooltip');
+        }
+    },
+
+    destroy: function () {
+        if (this._mappedId)
+            this._source.actor.disconnect(this._mappedId);
+
+        if (this._destroyId)
+            this._source.actor.disconnect(this._destroyId);
+
+        this.parent();
+    }
+
+});
+
+const WindowPreviewList = new Lang.Class({
+    Name: 'WindowPreviewMenuSection',
+    Extends: PopupMenu.PopupMenuSection,
+
+    _init: function(source, settings) {
+        this._dtdSettings = settings;
+
+        this.parent();
+
+        this.actor = new St.ScrollView({ name: 'dashtodockWindowScrollview',
+                                               hscrollbar_policy: Gtk.PolicyType.AUTOMATIC,
+                                               vscrollbar_policy: Gtk.PolicyType.AUTOMATIC,
+                                               enable_mouse_scrolling: true });
+
+        this.actor.connect('scroll-event', Lang.bind(this, this._onScrollEvent ));
+
+        let position = Utils.getPosition(this._dtdSettings);
+        this.isHorizontal = position == St.Side.BOTTOM || position == St.Side.TOP;
+        this.box.set_vertical(!this.isHorizontal);
+        this.box.set_name('dashtodockWindowList');
+        this.actor.add_actor(this.box);
+        this.actor._delegate = this;
+
+        this._shownInitially = false;
+
+        this._source = source;
+        this.app = source.app;
+
+        this._redisplayId = Main.initializeDeferredWork(this.actor, Lang.bind(this, this._redisplay));
+
+        this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
+        this._stateChangedId = this.app.connect('windows-changed',
+                                                Lang.bind(this,
+                                                          this._queueRedisplay));
+    },
+
+    _queueRedisplay: function () {
+        Main.queueDeferredWork(this._redisplayId);
+    },
+
+    _onScrollEvent: function(actor, event) {
+        // Event coordinates are relative to the stage but can be transformed
+        // as the actor will only receive events within his bounds.
+        let stage_x, stage_y, ok, event_x, event_y, actor_w, actor_h;
+        [stage_x, stage_y] = event.get_coords();
+        [ok, event_x, event_y] = actor.transform_stage_point(stage_x, stage_y);
+        [actor_w, actor_h] = actor.get_size();
+
+        // If the scroll event is within a 1px margin from
+        // the relevant edge of the actor, let the event propagate.
+        if (event_y >= actor_h - 2)
+            return Clutter.EVENT_PROPAGATE;
+
+        // Skip to avoid double events mouse
+        if (event.is_pointer_emulated())
+            return Clutter.EVENT_STOP;
+
+        let adjustment, delta;
+
+        if (this.isHorizontal)
+            adjustment = this.actor.get_hscroll_bar().get_adjustment();
+        else
+            adjustment = this.actor.get_vscroll_bar().get_adjustment();
+
+        let increment = adjustment.step_increment;
+
+        switch ( event.get_scroll_direction() ) {
+        case Clutter.ScrollDirection.UP:
+            delta = -increment;
+            break;
+        case Clutter.ScrollDirection.DOWN:
+            delta = +increment;
+            break;
+        case Clutter.ScrollDirection.SMOOTH:
+            let [dx, dy] = event.get_scroll_delta();
+            delta = dy*increment;
+            delta += dx*increment;
+            break;
+
+        }
+
+        adjustment.set_value(adjustment.get_value() + delta);
+
+        return Clutter.EVENT_STOP;
+    },
+
+    _onDestroy: function() {
+        this.app.disconnect(this._stateChangedId);
+        this._stateChangedId = 0;
+    },
+
+    _createPreviewItem: function(window) {
+        let preview = new WindowPreviewMenuItem(window);
+        return preview;
+    },
+
+    _redisplay: function () {
+        // Remove separator
+        let nonWinItem = this._getMenuItems().filter(function(actor) {
+                return !actor._window;
+            });
+        for (let i = 0; i < nonWinItem.length; i++) {
+             let item = nonWinItem[i];
+             item.destroy();
+        }
+
+        let children = this._getMenuItems().filter(function(actor) {
+                return actor._window;
+            });
+
+        // Windows currently on the menu
+        let oldWin = children.map(function(actor) {
+                return actor._window;
+            });
+
+        // All app windows
+        let newWin = this._source.getInterestingWindows().sort(this.sortWindowsCompareFunction);
+
+        let addedItems = [];
+        let removedActors = [];
+
+        let newIndex = 0;
+        let oldIndex = 0;
+
+        while (newIndex < newWin.length || oldIndex < oldWin.length) {
+            // No change at oldIndex/newIndex
+            if (oldWin[oldIndex] &&
+                oldWin[oldIndex] == newWin[newIndex]) {
+                oldIndex++;
+                newIndex++;
+                continue;
+            }
+
+            // Window removed at oldIndex
+            if (oldWin[oldIndex] &&
+                newWin.indexOf(oldWin[oldIndex]) == -1) {
+                removedActors.push(children[oldIndex]);
+                oldIndex++;
+                continue;
+            }
+
+            // Window added at newIndex
+            if (newWin[newIndex] &&
+                oldWin.indexOf(newWin[newIndex]) == -1) {
+                addedItems.push({ item: this._createPreviewItem(newWin[newIndex]),
+                                  pos: newIndex });
+                newIndex++;
+                continue;
+            }
+
+            // Window moved
+            let insertHere = newWin[newIndex + 1] &&
+                             newWin[newIndex + 1] == oldWin[oldIndex];
+            let alreadyRemoved = removedActors.reduce(function(result, actor) {
+                let removedWin = actor._window;
+                return result || removedWin == newWin[newIndex];
+            }, false);
+
+            if (insertHere || alreadyRemoved) {
+                addedItems.push({ item: this._createPreviewItem(newWin[newIndex]),
+                                  pos: newIndex + removedActors.length });
+                newIndex++;
+            } else {
+                removedActors.push(children[oldIndex]);
+                oldIndex++;
+            }
+        }
+
+        for (let i = 0; i < addedItems.length; i++)
+            this.addMenuItem(addedItems[i].item,
+                             addedItems[i].pos);
+
+        for (let i = 0; i < removedActors.length; i++) {
+            let item = removedActors[i];
+            if (this._shownInitially)
+                item._animateOutAndDestroy();
+            else
+                item.actor.destroy();
+        }
+
+        // Separate windows from other workspaces
+        let ws_index = global.screen.get_active_workspace_index();
+        let separator_index = 0;
+        for (let i = 0; i < newWin.length; i++)
+            if (newWin[i].get_workspace().index() == ws_index)
+                separator_index++;
+
+        if (separator_index > 0 && separator_index !== newWin.length) {
+            let separatorItem = new PopupMenu.PopupSeparatorMenuItem();
+            if (this.isHorizontal) {
+                separatorItem._separator.set_x_expand(false);
+                separatorItem._separator.set_y_expand(true);
+                separatorItem._separator.set_name('dashtodockPreviewSeparator');
+                separatorItem._separator.add_style_class_name('popup-separator-menu-item-horizontal');
+                separatorItem._separator.set_x_align(Clutter.ActorAlign.CENTER);
+                separatorItem._separator.set_y_align(Clutter.ActorAlign.FILL);
+            }
+            this.addMenuItem(separatorItem, separator_index);
+        }
+
+        // Skip animations on first run when adding the initial set
+        // of items, to avoid all items zooming in at once
+        let animate = this._shownInitially;
+
+        if (!this._shownInitially)
+            this._shownInitially = true;
+
+        for (let i = 0; i < addedItems.length; i++)
+            addedItems[i].item.show(animate);
+
+        // Workaround for https://bugzilla.gnome.org/show_bug.cgi?id=692744
+        // Without it, StBoxLayout may use a stale size cache
+        this.box.queue_relayout();
+
+        if (newWin.length < 1)
+            this._getTopMenu().close(~0);
+    },
+
+    isAnimatingOut: function() {
+        return this.actor.get_children().reduce(function(result, actor) {
+                   return result || actor.animatingOut;
+               }, false);
+    },
+
+    sortWindowsCompareFunction: function(windowA, windowB) {
+        let ws_index = global.screen.get_active_workspace_index();
+        let winA_inActiveWS = windowA.get_workspace().index() == ws_index;
+        let winB_inActiveWS = windowB.get_workspace().index() == ws_index;
+
+        // Only change the order if winA is not in the current WS, while winB is
+        if (!winA_inActiveWS && winB_inActiveWS)
+            return 1;
+
+        return 0;
+    }
+});
+
+const WindowPreviewMenuItem = new Lang.Class({
+    Name: 'WindowPreviewMenuItem',
+    Extends: PopupMenu.PopupBaseMenuItem,
+
+    _init: function(window, params) {
+        this._window = window;
+        this._destroyId = 0;
+        this._windowAddedId = 0;
+        params = Params.parse(params, { style_class: 'app-well-preview-menu-item' });
+        this.parent(params);
+
+        this._cloneBin = new St.Bin();
+        this._cloneBin.set_size(PREVIEW_MAX_WIDTH, PREVIEW_MAX_HEIGHT);
+
+        // TODO: improve the way the closebutton is layout. Just use some padding
+        // for the moment.
+        this._cloneBin.set_style('padding: 5px');
+
+        this.closeButton = new St.Button({ style_class: 'window-close',
+                                          x_expand: true,
+                                          y_expand: true});
+        this.closeButton.set_x_align(Clutter.ActorAlign.END);
+        this.closeButton.set_y_align(Clutter.ActorAlign.START);
+
+
+        this.closeButton.opacity = 0;
+        this.closeButton.connect('clicked', Lang.bind(this, this._closeWindow));
+
+        let overlayGroup = new Clutter.Actor({layout_manager: new Clutter.BinLayout() });
+
+        overlayGroup.add_actor(this._cloneBin);
+        overlayGroup.add_actor(this.closeButton);
+
+        let label = new St.Label({ text: window.get_title()});
+        label.set_style('max-width: '+PREVIEW_MAX_WIDTH +'px');
+        let labelBin = new St.Bin({ child: label,
+                                    x_align: St.Align.MIDDLE});
+
+        this._windowTitleId = this._window.connect('notify::title', Lang.bind(this, function() {
+                                  label.set_text(this._window.get_title());
+                              }));
+
+        let box = new St.BoxLayout({ vertical: true,
+                                     reactive:true,
+                                     x_expand:true });
+        box.add(overlayGroup);
+        box.add(labelBin);
+        this.actor.add_actor(box);
+
+        this.actor.connect('enter-event',
+                                  Lang.bind(this, this._onEnter));
+        this.actor.connect('leave-event',
+                                  Lang.bind(this, this._onLeave));
+        this.actor.connect('key-focus-in',
+                                  Lang.bind(this, this._onEnter));
+        this.actor.connect('key-focus-out',
+                                  Lang.bind(this, this._onLeave));
+
+        this._cloneTexture(window);
+
+    },
+
+    _cloneTexture: function(metaWin){
+
+        let mutterWindow = metaWin.get_compositor_private();
+
+        // Newly-created windows are added to a workspace before
+        // the compositor finds out about them...
+        // Moreover sometimes they return an empty texture, thus as a workarounf also check for it size
+        if (!mutterWindow || !mutterWindow.get_texture() || !mutterWindow.get_texture().get_size()[0]) {
+            let id = Mainloop.idle_add(Lang.bind(this,
+                                            function () {
+                                                // Check if there's still a point in getting the texture,
+                                                // otherwise this could go on indefinitely
+                                                if (this.actor && metaWin.get_workspace())
+                                                    this._cloneTexture(metaWin);
+                                                return GLib.SOURCE_REMOVE;
+                                            }));
+            GLib.Source.set_name_by_id(id, '[dash-to-dock] this._cloneTexture');
+            return;
+        }
+
+        let windowTexture = mutterWindow.get_texture();
+        let [width, height] = windowTexture.get_size();
+
+        let scale = Math.min(1.0, PREVIEW_MAX_WIDTH/width, PREVIEW_MAX_HEIGHT/height);
+
+        let clone = new Clutter.Clone ({ source: windowTexture,
+                                         reactive: true,
+                                         width: width * scale,
+                                         height: height * scale });
+
+        // when the source actor is destroyed, i.e. the window closed, first destroy the clone
+        // and then destroy the menu item (do this animating out)
+        this._destroyId = mutterWindow.connect('destroy', Lang.bind(this, function() {
+            clone.destroy();
+            this._destroyId = 0; // avoid to try to disconnect this signal from mutterWindow in _onDestroy(),
+                                 // as the object was just destroyed
+            this._animateOutAndDestroy();
+        }));
+
+        this._clone = clone;
+        this._mutterWindow = mutterWindow;
+        this._cloneBin.set_child(this._clone);
+    },
+
+    _windowCanClose: function() {
+        return this._window.can_close() &&
+               !this._hasAttachedDialogs();
+    },
+
+    _closeWindow: function(actor) {
+        this._workspace = this._window.get_workspace();
+
+        // This mechanism is copied from the workspace.js upstream code
+        // It forces window activation if the windows don't get closed,
+        // for instance because asking user confirmation, by monitoring the opening of
+        // such additional confirmation window
+        this._windowAddedId = this._workspace.connect('window-added',
+                                                      Lang.bind(this,
+                                                                this._onWindowAdded));
+
+        this.deleteAllWindows();
+    },
+
+    deleteAllWindows: function() {
+        // Delete all windows, starting from the bottom-most (most-modal) one
+        //let windows = this._window.get_compositor_private().get_children();
+        let windows = this._clone.get_children();
+        for (let i = windows.length - 1; i >= 1; i--) {
+            let realWindow = windows[i].source;
+            let metaWindow = realWindow.meta_window;
+
+            metaWindow.delete(global.get_current_time());
+        }
+
+        this._window.delete(global.get_current_time());
+    },
+
+    _onWindowAdded: function(workspace, win) {
+        let metaWindow = this._window;
+
+        if (win.get_transient_for() == metaWindow) {
+            workspace.disconnect(this._windowAddedId);
+            this._windowAddedId = 0;
+
+            // use an idle handler to avoid mapping problems -
+            // see comment in Workspace._windowAdded
+            let id = Mainloop.idle_add(Lang.bind(this,
+                                            function() {
+                                                this.emit('activate');
+                                                return GLib.SOURCE_REMOVE;
+                                            }));
+            GLib.Source.set_name_by_id(id, '[dash-to-dock] this.emit');
+        }
+    },
+
+    _hasAttachedDialogs: function() {
+        // count trasient windows
+        let n=0;
+        this._window.foreach_transient(function(){n++;});
+        return n>0;
+    },
+
+    _onEnter: function() {
+        this._showCloseButton();
+        return Clutter.EVENT_PROPAGATE;
+    },
+
+    _onLeave: function() {
+        if (!this._cloneBin.has_pointer &&
+            !this.closeButton.has_pointer)
+            this._hideCloseButton();
+
+        return Clutter.EVENT_PROPAGATE;
+    },
+
+    _idleToggleCloseButton: function() {
+        this._idleToggleCloseId = 0;
+
+        if (!this._cloneBin.has_pointer &&
+            !this.closeButton.has_pointer)
+            this._hideCloseButton();
+
+        return GLib.SOURCE_REMOVE;
+    },
+
+    _showCloseButton: function() {
+
+        if (this._windowCanClose()) {
+            this.closeButton.show();
+            Tweener.addTween(this.closeButton,
+                             { opacity: 255,
+                               time: Workspace.CLOSE_BUTTON_FADE_TIME,
+                               transition: 'easeOutQuad' });
+        }
+    },
+
+    _hideCloseButton: function() {
+        Tweener.addTween(this.closeButton,
+                         { opacity: 0,
+                           time: Workspace.CLOSE_BUTTON_FADE_TIME,
+                           transition: 'easeInQuad' });
+    },
+
+    show: function(animate) {
+        let fullWidth = this.actor.get_width();
+
+        this.actor.opacity = 0;
+        this.actor.set_width(0);
+
+        let time = animate ? 0.25 : 0;
+        Tweener.addTween(this.actor,
+                         { opacity: 255,
+                           width: fullWidth,
+                           time: time,
+                           transition: 'easeInOutQuad'
+                         });
+    },
+
+    _animateOutAndDestroy: function() {
+        Tweener.addTween(this.actor,
+                         { opacity: 0,
+                           time: 0.25,
+                         });
+
+        Tweener.addTween(this.actor,
+                         { height: 0,
+                           width: 0,
+                           time: 0.25,
+                           delay: 0.25,
+                           onCompleteScope: this,
+                           onComplete: function() {
+                              this.actor.destroy();
+                           }
+                         });
+    },
+
+    activate: function() {
+        this._getTopMenu().close();
+        Main.activateWindow(this._window);
+    },
+
+    _onDestroy: function() {
+
+        this.parent();
+
+        if (this._windowAddedId > 0) {
+            this._workspace.disconnect(this._windowAddedId);
+            this._windowAddedId = 0;
+        }
+
+        if (this._destroyId > 0) {
+            this._mutterWindow.disconnect(this._destroyId);
+            this._destroyId = 0;
+        }
+
+        if (this._windowTitleId > 0) {
+            this._window.disconnect(this._windowTitleId);
+            this._windowTitleId = 0;
+        }
+    }
+
+});
+