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 + + +## 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: <Shift>, <Ctrl>, <Alt>, <Super></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 <i>Applications</i> 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 <i>Show Applications</i>.</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"><b>Dash to Dock</b></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 (<a href="mailto:micxgx@gmail.com">micxgx@gmail.com</a>)</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"><span size="small">This program comes with ABSOLUTELY NO WARRANTY. +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></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>"<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="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; + } + } + +}); +