File _service:obs_scm:xfce4-docklike-plugin-20240306~git.da23d2a.obscpio of Package xfce4-docklike-plugin

07070100000000000081A400000000000000000000000165E8B85000000118000000000000000000000000000000000000003900000000xfce4-docklike-plugin-20240306~git.da23d2a/.clang-formatBasedOnStyle: LLVM

ColumnLimit: 0
IndentWidth: 4
TabWidth: 4
UseTab: Always
AlignAfterOpenBracket: DontAlign
AlignOperands: false
NamespaceIndentation: All

DerivePointerAlignment: false
PointerAlignment: Left

BreakBeforeBraces: Allman
AllowShortIfStatementsOnASingleLine: false07070100000001000081A400000000000000000000000165E8B850000001D0000000000000000000000000000000000000003600000000xfce4-docklike-plugin-20240306~git.da23d2a/.gitignore.vscode/**
.cache/**
obj/**
libdocklike.so
Makefile
INSTALL
aclocal.m4
ar-lib
autom4te.cache/
compile
config.guess
config.h
config.log
config.status
config.sub
configure
configure.ac
depcomp
install-sh
libtool
ltmain.sh
missing
stamp-h1
src/.deps/
src/.libs/
*~
*.lo
*.la
src/_gresources.c
src/docklike.desktop
*TAGS
GPATH
m4/
po/.*
po/*.gmo
po/POTFILES
po/stamp-it
intltool-*
Makefile.in
po/Makefile*
Makecache
xfce4-docklike-plugin-*.tar.*
compile_commands.json
07070100000002000081A400000000000000000000000165E8B8500000004F000000000000000000000000000000000000003A00000000xfce4-docklike-plugin-20240306~git.da23d2a/.gitlab-ci.ymlinclude:
  - project: 'xfce/xfce4-dev-tools'
    file: '/ci/build_project.yml'
07070100000003000081A400000000000000000000000165E8B85000000046000000000000000000000000000000000000003300000000xfce4-docklike-plugin-20240306~git.da23d2a/AUTHORSNicolas Szabo <nszabo@vivaldi.net>
David Keogh <davidtkeogh@gmail.com>07070100000004000081A400000000000000000000000165E8B85000008911000000000000000000000000000000000000003300000000xfce4-docklike-plugin-20240306~git.da23d2a/COPYING                    GNU GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU General Public License is a free, copyleft license for
software and other kinds of works.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.  We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors.  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
them 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 prevent others from denying you
these rights or asking you to surrender the rights.  Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received.  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.

  Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.

  For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software.  For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.

  Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so.  This is fundamentally incompatible with the aim of
protecting users' freedom to change the software.  The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable.  Therefore, we
have designed this version of the GPL to prohibit the practice for those
products.  If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.

  Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary.  To prevent this, the GPL assures that
patents cannot be used to render the program non-free.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey 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;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If 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 convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Use with the GNU Affero General Public License.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU 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 that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  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.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
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.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     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
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    xfce4-docklike-plugin
    Copyright (C) 2021  Panel Plugins

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

  If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:

    <program>  Copyright (C) 2021  Panel Plugins
    This program 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, your program's commands
might be different; for a GUI interface, you would use an "about box".

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.

  The GNU 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 Lesser General
Public License instead of this License.  But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.
07070100000005000081A400000000000000000000000165E8B850000001A5000000000000000000000000000000000000003700000000xfce4-docklike-plugin-20240306~git.da23d2a/Makefile.amACLOCAL_AMFLAGS = -I m4  ${ACLOCAL_FLAGS}

SUBDIRS = src po

distclean-local:
	rm -rf *.cache *~

EXTRA_DIST = AUTHORS COPYING README.md TODO.md

DISTCLEANFILES =				\
	aclocal.m4					\
	compile						\
	configure					\
	configure.ac				\
	depcomp						\
	install-sh					\
	ltmain.sh					\
	missing						\
	mkinstalldirs				\
	intltool-extract			\
	intltool-merge				\
	intltool-update				\
	po/.intltool-merge-cache.lock
07070100000006000081A400000000000000000000000165E8B85000001A9B000000000000000000000000000000000000003000000000xfce4-docklike-plugin-20240306~git.da23d2a/NEWS0.4.2 (2023-12-23)
=====
- Wnck: Add missing sanity check
- Settings: Use different colors for active and inactive indicators
- Use FDO compliant icon name
- Fix blurry icons/thumbnails when UI scale > 1
- GroupMenu: Make sure the window is the right size for each popup
- Group: Stop timeouts in destructor
- Fix pending source when GroupMenu is destroyed
- Settings: Bound icon sizes
- SettingsDialog: Fix deprecated icon names
- Remove unused project files
- Remove contrib directory
- GroupMenu: Re-popup if windows are added/removed when shown
- Update preview widgets on "showPreviews" setting change
- Helpers: Always stop timeout before starting a new one
- Wnck: Always update unactivated window state
- Group: Do not filter out skip-tasklist windows when activated
- Group: Do not manually mark window as activated when activating group
- Group: Update active state when adding windows
- Group: Remove useless class member states
- AppInfos: Use also app names for matching
- Use g_debug for debug logs
- Replace FALSE with false
- Replace NULL with nullptr
- Release data as much as possible on XfcePanelPlugin::free-data signal
- Wnck: Do not check for active window in init
- Fix remaining raw pointers not released
- Manage group button lifetime in Group
- Revert "Reset pointer when group button is destroyed"
- Wnck: Use std::shared_ptr to manage memory allocation of GroupWindows
- Dock: Use std::shared_ptr to manage memory allocation of Groups
- AppInfos: Use std::shared_ptr to manage memory allocation
- AppInfos: Wrap raw pointers into std::unique_ptr
- GroupMenuItem: Fix crash when closing window with preview enabled
- Revert "group: Fix crash when middle-clicking an item with preview 
enabled"
- Store pinned apps as ids instead of paths
- Wnck: Fix memory leaks
- Theme: Fix memory leaks
- SettingsDialog: Fix memory leaks
- Settings: Fix memory leaks
- Helpers: Fix memory leaks
- GroupMenuItem: Fix memory leaks
- Group: Fix memory leaks
- Dock: Fix memory leaks
- Fix previous commit
- Appinfos: Fix some memory leaks
- Update TODO
- AppInfos: Honor XDG_DATA_HOME also when editing item
- AppInfos: Properly honor XDG base dir spec
- group: Detach menu from button and destroy when hidden (Fixes #20)
- Fix cplusplus.StringChecker warning from scan-build 16.0.6
- Use glib functions for memory allocation
- build: Fix -Wunused-function warnings
- build: Fix -Wdangling-else warnings
- build: Fix -Wsequence-point warnings
- build: Fix -Wsign-compare warnings
- build: Fix -Wmaybe-uninitialized warnings
- build: Fix -Wshadow warnings
- build: Fix -Wmissing-declarations warnings
- group-menu-item: Refresh preview less often
- group: Fix missing dnd icon
- group: Fix crash when middle-clicking an item with preview enabled
- Reset pointer when group button is destroyed
- helpers: Reset source id when removed
- app-infos: Get translated app name (Fixes #67)
- Fix help button icon to be same as other plugins
- Added middle mouse button do nothing option
- Added closedir call to prevent too many open files error (Fixes #54)
- Fix previous commit
- Fix copyright info
- Translation Updates:
  Albanian, Bulgarian, Catalan, Chinese (China), Chinese (Taiwan),
  Croatian, Danish, Dutch, English (United Kingdom), Finnish, French,
  German, Italian, Japanese, Korean, Lithuanian, Norwegian Bokmål,
  Polish, Portuguese, Portuguese (Brazil), Russian, Serbian, Slovak,
  Slovenian, Spanish, Swedish, Ukrainian

0.4.1 (2023-03-19)
=====
- build: Use same automake init as other projects and bump autoconf
- Update copyright year and fix bug report address
- build: Use XDT_FEATURE_DEBUG
- basename() called but <libgen.h> not included
- Add option to change behavior of middle mouse button (Closes #32)
- build: Keep /usr/local as default prefix
- build: Fix autotools warnings
- build: Fix intltool lock file problem during make distcheck
- build: Bump GLib minimum required to 2.58
- Anchor group menu to center of app icon
- Add option to change inactive indicator style
- List window previews horizontally if panel is horizontal
- Add option to get the indicator color automatically from the Gtk 
theme foreground color
- Startup notification support Closes #13 Additionally, correctly 
release memory after launching.
- Reorder AppInfos.cpp for clarity
- Skip loadDesktopEntry() for files not ending in .desktop
- Pass std::string by const reference to avoid unnecessary copy
- Speed up ftw() by increasing handle limit
- Added Ciliora and Circles indicator styles
- Fix reordering (ctrl+dragging) icons to the right
- Fix size_t being truncated into uint and comparing unequal to npos
- Fix .desktop file StartupWMClass values being ignored
- Update TODO
- Fix warnings/crashes from timeouts In many cases the timeout's stop 
method was being called more than once raising GLib warnings.
- Don't clear this list
- Delete unused declarations
- Improve PANEL_DEBUG macro
- Improve debugging messages
- Drop the inotify dependency GLib provides a GAppInfoMonitor object 
that allows us to detect desktop file changes.
- Use the default theme hover effect The previous effect can still be 
achieved with CSS:
- Update the README Better debugging instructions and long desctiption.
- Cleanup: remove uneccessary casts to GtkWidget*
- Remove highlight on active group Related #14 It can be restored by 
using css or a future option.
- Add a "window_count" class to labels Related #9
- Translation Updates:
  Albanian, Bulgarian, Catalan, Chinese
  (China), Chinese (Taiwan), Croatian, Danish, Dutch, Finnish, French,
  German, Greek, Hebrew, Indonesian, Interlingue, Italian, Japanese,
  Korean, Lithuanian, Norwegian Bokmål, Polish, Portuguese, Portuguese
  (Brazil), Russian, Serbian, Slovak, Slovenian, Spanish, Swedish,
  Turkish, Ukrainian

0.4.0 (2021-09-26)
=====

- Fix pinned uninstalled applications get stuck on dock
- Fix button visual issue after drag & drop
- Use default button size request
- Changed some strings to be more clear
- New Catalan translation (andriybyelikov)
- New Indonesian translation (frachmadin)
- Updated translations: 
  Danish, Dutch, Finnish, French, German, Greek, Hungarian, Italian,
  Japanese, Polish, Portuguese, Portuguese (Brazil), Russian, Turkish

0.3.0 (2021-07-08)
=====

- Window previews
- Editing launchers
- Automatic indicator positioning mode
- Window count overlay
- CSS support
- Fix close buttons sometimes showing a broken icon
- Fix panel items getting duplicated when a desktop file is modified
  by a package update

0.2.0 (2021-03-13)
=====

- New Polish translation (matthaiks)
- Distros can set a default dock configuration and pinned icons in: 
  XDG_CONFIG_DIRS/xfce4/panel/docklike.rc
- Compiles on systems using GCC 11

0.1.0 (2021-02-02)
=====

- Initial release
- Fix build warnings and make distcheck errors
07070100000007000081A400000000000000000000000165E8B85000000649000000000000000000000000000000000000003500000000xfce4-docklike-plugin-20240306~git.da23d2a/README.md# Docklike Taskbar for Xfce

A modern, minimalist taskbar for Xfce

Docklike Taskbar behaves similarly to many other desktop environments and operating systems. Wherein all application windows are grouped together as an icon and can be pinned to act as a launcher when the application is not running. Commonly referred to as a dock.

For usage instructions, keyboard shortcuts, and screenshots, see:
<https://docs.xfce.org/panel-plugins/xfce4-docklike-plugin/start>.

## Build & Install

```bash
tar xvf xfce4-docklike-plugin-0.4.0.tar.gz && cd xfce4-docklike-plugin-0.4.0
./configure
make
sudo make install
```

Use e.g. `./configure --prefix=/usr` to change install location

### From git

```bash
git clone https://gitlab.xfce.org/panel-plugins/xfce4-docklike-plugin.git && cd xfce4-docklike-plugin
./autogen.sh
make
sudo make install
```

Use e.g. `./autogen.sh --prefix=/usr` to change install location

## Reporting bugs

To assist with troubleshooting plugin issues, please run Xfce Panel in debugging mode, and include the relevant output in issues.

<https://gitlab.xfce.org/panel-plugins/xfce4-docklike-plugin/-/issues>

### Running Xfce Panel in debugging mode

- Open a terminal
- Quit the Xfce Panel using `xfce4-panel -q`
- Start the panel in debugging mode with `PANEL_DEBUG=1 G_MESSAGES_PREFIXED= G_MESSAGES_DEBUG=docklike xfce4-panel`
- Perform any actions you want to debug and copy the relevant output
- Stop debugging by pressing `Ctrl^C`
- Start the panel again using `xfce4-panel &`

The Xfce wiki has more details on panel debugging:
<https://docs.xfce.org/xfce/xfce4-panel/debugging>.
07070100000008000081A400000000000000000000000165E8B85000000784000000000000000000000000000000000000003300000000xfce4-docklike-plugin-20240306~git.da23d2a/TODO.md# TODO

+ Format code and change variable_style
+ Make separate light and dark themes?
+ Greyscale/pixelate minimized thumbnail images
+ Use X-Flatpak value for icon/desktop file names if it exists
+ Handle running out of dock space, overflow menu? (https://gitlab.xfce.org/panel-plugins/xfce4-docklike-plugin/-/issues/5)
+ Make sure the label never overlaps the indicator
+ Use g_app_info_get_all() rather than finding apps ourselves?
+ Move aliases to a text file so users can add stuff

## DONE

> + Can we still crash the plugin?
> + Investigate Gtk-CRITICAL from DnD
> + Test how well the updating thumbnails perform on a really slow system
> + Layering of XDG_DATA_DIRS is not working: files in /usr/share/applications, should not be used over those in home
> + Investigate GLib-CRITICAL from DnD, Timeouts
> + Use GAppInfoMonitor rather than inotify for better portability
> + Dragged groups hover state gets stuck on
> + Docs: write the help page and update screenshots
> + Remove pinned application when desktop file is removed
> + Make automatic indicator orientation the default mode
> + Configurable thumbnail size, update sleep
> + Set indicator orientation based on panel orientation
> + Investigate GLib-CRITICAL from g_source_remove
> + Window count overlay
> + Improve the Dots indicator style
> + Option to set minimum width/height
> + New CSS indicator style, No indicator style
> + Make sure we are finding all the .desktop files
> + Associate new .desktop file in ~/.local/share/applications etc.
> + Editing launchers with exo-desktop-item-edit
> + Simplify Theme.cpp
> + Fix all build warnings
> + Indicator orientation
> + Basic orientation managing
> + Show only windows from active workspace
> + i18n
> + Settings UI
> + Basic workspaces managing
> + Drop down list of windows
> + Icon resizing
> + Pinable dock buttons
> + CSS class
> + Button reordering (d n'd)
> + XDG Desktop Files integration
07070100000009000081ED00000000000000000000000165E8B850000001A7000000000000000000000000000000000000003600000000xfce4-docklike-plugin-20240306~git.da23d2a/autogen.sh#!/bin/sh

type xdt-autogen >/dev/null 2>&1 || {
  cat >&2 <<EOF
autogen.sh: You don't seem to have the Xfce development tools installed on
            your system, which are required to build this software.
            Please install the xfce4-dev-tools package first, it is available
            from your distribution or https://www.xfce.org/.
EOF
  exit 1
}

XDT_AUTOGEN_REQUIRED_VERSION="4.18.1" exec xdt-autogen "$@"
0707010000000A000081A400000000000000000000000165E8B850000011C5000000000000000000000000000000000000003B00000000xfce4-docklike-plugin-20240306~git.da23d2a/configure.ac.indnl
dnl Docklike Taskbar - A modern, minimalist taskbar for Xfce
dnl --------------------------------------------------------
dnl (c) 2019-2020		Nicolas Szabo <nszabo@vivaldi.net>
dnl (c) 2020-2021		David Keogh <davidtkeogh@gmail.com>
dnl

dnl ***************************
dnl *** Version information ***
dnl ***************************
m4_define([project_version_major], [0])
m4_define([project_version_minor], [4])
m4_define([project_version_micro], [2])
m4_define([project_version_build], [@REVISION@])
m4_define([project_version_tag], [git]) # leave empty for release
m4_define([project_version], [project_version_major().project_version_minor().project_version_micro()ifelse(project_version_tag(), [git], [project_version_tag()-project_version_build()], [project_version_tag()])])

dnl minimum required versions
m4_define([glib_min_version], [2.58.0])
m4_define([gtk_min_version], [3.24.0])
m4_define([cairo_min_version], [1.16.0])
m4_define([xfce_build_version], [4.14.0])
m4_define([libxfce4windowing_min_version], [4.19.3])

m4_define([libx11_min_version], [1.6.7])

m4_define([gtk_layer_shell_min_version], [0.7.0])

dnl ***************************
dnl *** Initialize autoconf ***
dnl ***************************
AC_COPYRIGHT([Copyright (c) 2019-2023 The Xfce development team. All rights reserved.
  Written for Xfce by Nicolas Szabo <nszabo@vivaldi.net> and David Keogh <davidtkeogh@gmail.com>.])
AC_INIT([xfce4-docklike-plugin], [project_version], [https://gitlab.xfce.org/panel-plugins/xfce4-docklike-plugin])
AC_PREREQ([2.69])
AC_CANONICAL_TARGET()
AC_REVISION([project_version_build])
AC_CONFIG_MACRO_DIRS([m4])

dnl ***************************
dnl *** Initialize automake ***
dnl ***************************
AM_INIT_AUTOMAKE([1.8 no-dist-gzip dist-bzip2 tar-ustar foreign])
AM_MAINTAINER_MODE()
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])

dnl **************************
dnl *** Initialize libtool ***
dnl **************************
LT_PREREQ([2.2.6])
LT_INIT([disable-static])

dnl ********************************
dnl *** Check for basic programs ***
dnl ********************************
AC_PROG_CXX()
AX_CXX_COMPILE_STDCXX_11()
AC_PROG_INSTALL()
AC_PROG_LN_S()
IT_PROG_INTLTOOL([0.35.0])

dnl ***********************************
dnl *** Check for required packages ***
dnl ***********************************
XDT_CHECK_PACKAGE([GIO], [gio-2.0], [glib_min_version])
XDT_CHECK_PACKAGE([GLIB], [glib-2.0], [glib_min_version])
XDT_CHECK_PACKAGE([GTK], [gtk+-3.0], [gtk_min_version])
XDT_CHECK_PACKAGE([CAIRO], [cairo], [cairo_min_version])
XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-2], [xfce_build_version])
XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [xfce_build_version])
XDT_CHECK_PACKAGE([LIBXFCE4PANEL], [libxfce4panel-2.0], [xfce_build_version])
XDT_CHECK_PACKAGE([LIBXFCE4WINDOWING], [libxfce4windowing-0], [libxfce4windowing_min_version])
XDT_CHECK_PACKAGE([LIBXFCE4WINDOWINGUI], [libxfce4windowingui-0], [libxfce4windowing_min_version])

XDT_CHECK_OPTIONAL_FEATURE([X11],
                           [x11],
                           [
                             XDT_FEATURE_DEPENDENCY([GDK_X11], [gdk-x11-3.0], [gtk_min_version])
                             XDT_FEATURE_DEPENDENCY([LIBX11], [x11], [libx11_min_version])
                             XDT_FEATURE_DEPENDENCY([LIBXFCE4WINDOWING_X11], [libxfce4windowing-x11-0], [libxfce4windowing_min_version])
                           ],
                           [the X11 windowing system])
XDT_CHECK_OPTIONAL_FEATURE([WAYLAND],
                           [wayland],
                           [
                             XDT_FEATURE_DEPENDENCY([GDK_WAYLAND], [gdk-wayland-3.0], [gtk_min_version])
                             XDT_FEATURE_DEPENDENCY([GTK_LAYER_SHELL], [gtk-layer-shell-0], [gtk_layer_shell_min_version])
                           ],
                           [the Wayland windowing system])
if test x"$ENABLE_X11" != x"yes" -a x"$ENABLE_WAYLAND" != x"yes"; then
  AC_MSG_ERROR([Either both X11 and Wayland support was disabled, or required dependencies are missing. One of the two must be enabled.])
fi

dnl ******************************
dnl *** Check for i18n support ***
dnl ******************************
XDT_I18N([@LINGUAS@])

dnl ***********************************
dnl *** Check for debugging support ***
dnl ***********************************
XDT_FEATURE_DEBUG()

dnl ************************
dnl *** Makefile outputs ***
dnl ************************
AC_CONFIG_FILES([
Makefile
src/Makefile
po/Makefile.in
])
AC_OUTPUT
0707010000000B000041ED00000000000000000000000265E8B85000000000000000000000000000000000000000000000002E00000000xfce4-docklike-plugin-20240306~git.da23d2a/po0707010000000C000081A400000000000000000000000165E8B85000000070000000000000000000000000000000000000003A00000000xfce4-docklike-plugin-20240306~git.da23d2a/po/POTFILES.insrc/Plugin.cpp
src/Xfw.cpp
src/SettingsDialog.cpp
src/docklike.desktop.in
[type: gettext/glade]src/_dialogs.xml
0707010000000D000081A400000000000000000000000165E8B8500000178E000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/bg.po# 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.
# 
# Translators:
# Любомир Василев, 2023
# Kiril Kirilov <cybercop_montana@abv.bg>, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Kiril Kirilov <cybercop_montana@abv.bg>, 2023\n"
"Language-Team: Bulgarian (https://app.transifex.com/xfce/teams/16840/bg/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: bg\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Прикачено към дока"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Прикачване към дока"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Редактиране на стартер"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Затваряне на всички"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Премахване"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Само първите %u бързи клавиш(и) са активирани.</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"Комбинацията &lt;SUPER&gt;+%u изглежда вече се използва от друг процес.\n"
"Проверете вашите настройки на Xfce."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Модерна, минималистична лента на задачи за Xfce"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_Помощ"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Затваряне"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Да не се показва списъка с прозорци за един прозорец"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Показване на приложения само в текущото работно пространство"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Показване на приложения само на текущия дисплей"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Показване на миниатюри за визуализация за отворени прозорци"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Показване на броя отворени прозорци (ако са повече от 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Среден бутон на мишката:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Затваряне на всички"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Стартиране на ново копие"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "Не прави нищо"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "Поведение"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "Стил на активният индикатор:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "Ленти"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "Точки"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "Правоъгълници"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "Кръгове"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "Без"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "Стил на неактивният индикатор:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "Ориентация на индикатора:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "Автоматично"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "Отдолу"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "Отдясно"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "Отгоре"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "Отляво"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "Вземи цвят за индикатора от темата"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "Активен индикатор:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "Неактивен индикатор:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "Форсиран размер на икона:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "Външен вид"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Превключване между приложенията с<SUPER>+[1, 2, ...]"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "Преминаване към последния прозорец с <SUPER>"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Тази опция ще бъде деактивирана.</b>\n"
"Изисква разширение X11 XInput2.0, което не се предоставя от вашата система."

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "Бързи клавиши на клавиатурата"
0707010000000E000081A400000000000000000000000165E8B85000001407000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/ca.po# 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.
# 
# Translators:
# Xfce Bot <transifex@xfce.org>, 2023
# Robert Antoni Buj i Gelonch <rbuj@fedoraproject.org>, 2023
# Oscar Perez <oscarpc@gmail.com>, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Oscar Perez <oscarpc@gmail.com>, 2023\n"
"Language-Team: Catalan (https://app.transifex.com/xfce/teams/16840/ca/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ca\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Ancorat al Dock"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Ancora al Dock"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Edita el llançador"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Tanca-ho tot"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Suprimeix"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Només les primeres %u dreceres estan habilitades.</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"Pareix que la combinació &lt;SUPER&gt;+%u ja s'empra per un altre procés.\n"
"Comprova els teus ajusts d'Xfce."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Una barra de tasques moderna i minimalista per Xfce"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_Ajuda"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Tanca"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "No mostris la llista de finestres per a una sola finestra"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Mostra només les aplicacions a l'espai de treball actual"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Mostra només les aplicacions al monitor actual"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Mostra miniatures de previsualització per a finestres obertes"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Mostra el nombre de finestres obertes (si n'hi ha més de 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Botó del mig del ratolí:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Tanca-ho tot"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Llança una nova instància"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "No facis res"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "Comportament"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "Estil de l'indicador actiu:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "Barres"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "Punts"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "Rectangles"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "Cercles"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "Cap"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "Estil de l'indicador inactiu:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "Ubicació de l'indicador:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "Automàtica"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "Inferior"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "Dreta"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "Superior"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "Esquerra"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "Pren el color de l'indicador del tema"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "Indicador actiu:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "Indicador inactiu:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "Forçar mida de les icones:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "Aparença"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Canvia entre aplicacions amb <SUPER>+[1, 2, ...]"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "Canvia a la darrera finestra amb <SUPER>"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Aquesta característica està deshabilitada.</b>\n"
"Requereix de l'extensió X11 XInput2.0 la qual no està proporcionada per el teu sistema."

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "Dreceres de teclat"
0707010000000F000081A400000000000000000000000165E8B8500000131D000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/da.po# 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.
# 
# Translators:
# Xfce Bot <transifex@xfce.org>, 2023
# scootergrisen, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: scootergrisen, 2023\n"
"Language-Team: Danish (https://app.transifex.com/xfce/teams/16840/da/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: da\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Fastgjort til dok"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Fastgør til dok"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Rediger programstarter"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Luk alle"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Fjern"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Kun de første %u genvejstaster er aktiveret.</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"Kombinationen &lt;SUPER&gt;+%u ser allerede ud til at være i brug af en anden process.\n"
"Tjek dine Xfce-indstillinger."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "En moderne, minimalistisk proceslinje til Xfce"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_Hjælp"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Luk"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Vis ikke vindueslisten for et enkelt vindue"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Vis kun programmer på det nuværende arbejdsområde"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Vis kun programmer på den nuværende skærm"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Vis forhåndsvisningsminiaturer for åbne vinduer"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Vis antallet af åbne vinduer (hvis mere end 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Midterste museknap:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Luk alle"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Start ny instans"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "Gør ingenting"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "Opførsel"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "Stil for aktiv indikator:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "Bjælker"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "Prikker"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "Rektangler"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "Cirkler"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "Ingen"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "Stil for inaktiv indikator:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "Indikatorretning:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "Automatisk"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "Nederst"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "Højre"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "Øverst"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "Venstre"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "Hent indikatorfarve fra tema"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "Aktiv indikator:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "Inaktiv indikator:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "Tving ikonstørrelse:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "Udseende"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Skift mellem programmer med <SUPER>+[1, 2, ...]"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "Skift til den sidste vindue med <SUPER>"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Funktionaliteten er deaktiveret.</b>\n"
"Den kræver X11 XInput2.0-udvidelsen, som ikke findes på dit system."

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "Tastaturgenveje"
07070100000010000081A400000000000000000000000165E8B85000001417000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/de.po# 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.
# 
# Translators:
# Xfce Bot <transifex@xfce.org>, 2023
# Vinzenz Vietzke <vinz@vinzv.de>, 2023
# Andreas Eitel <github-aneitel@online.de>, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Andreas Eitel <github-aneitel@online.de>, 2023\n"
"Language-Team: German (https://app.transifex.com/xfce/teams/16840/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Ans Dock angeheftet"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Ans Dock anheften"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Starter bearbeiten"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Alle schließen"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Entfernen"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Nur die ersten %u Tastenkürzel sind aktiviert.</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"Die Kombination &lt;SUPER&gt;+%u scheint bereits von einem anderen Prozess verwendet zu werden. \n"
"Überprüfen Sie Ihre Xfce-Einstellungen."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Eine moderne und minimalistische Taskleiste für Xfce"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_Hilfe"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Schließen"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Die Fensterliste für ein einzelnes Fenster nicht anzeigen"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Nur Anwendungen aus dem aktuellen Arbeitsbereich anzeigen"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Nur Anwendungen vom aktuellen Bildschirm anzeigen"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Vorschau-Miniaturansicht für geöffnete Fenster anzeigen"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Anzeigen der Anzahl der geöffneten Fenster (wenn mehr als 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Mittlere Maustaste:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Alle schließen"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Neue Instanz starten"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "Nichts unternehmen"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "Verhalten"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "Aktiver Indikatorstil:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "Leisten"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "Punkte"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "Rechtecke"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "Kreise"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "Keine"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "Inaktiver Indikatorstil:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "Orientierung des Indikators:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "Automatisch"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "Unten"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "Rechts"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "Oben"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "Links"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "Indikatorfarbe aus dem Theme holen"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "Aktiver Indikator:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "Inaktiver Indikator:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "Größe der Symbole erzwingen:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "Aussehen"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Wechseln Sie zwischen Anwendungen mit <SUPER>+[1, 2, ...]"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "Wechseln Sie zum letzten Fenster mit <SUPER>"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Diese Funktion ist deaktiviert.</b>\n"
"Es erfordert die X11 XInput2.0-Erweiterung, die nicht von Ihrem System bereitgestellt wird."

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "Tastenkürzel"
07070100000011000081A400000000000000000000000165E8B850000017C4000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/el.po# 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.
# 
# Translators:
# Xfce Bot <transifex@xfce.org>, 2023
# Ioannis LM, 2023
# Nick Schermer <nick@xfce.org>, 2023
# Πέτρος Σαμαράς <psamaras1@gmail.com>, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-02 12:55+0100\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Πέτρος Σαμαράς <psamaras1@gmail.com>, 2023\n"
"Language-Team: Greek (https://www.transifex.com/xfce/teams/16840/el/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: el\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Καρφιτσωμένα στη Γραμμή εργασιών"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Καρφίτσωμα στη Γραμμή εργασιών"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Επεξεργασία Εκτελεστή"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Κλείσιμο όλων των εφαρμογών"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Αφαίρεση"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Μόνο τα πρώτα %u πλήκτρα πρόσβασης είναι ενεργοποιημένα.</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"Ο συνδυασμός πληκτρολογίου &lt;SUPER&gt;+%u είναι κρατημένος απο μια άλλη εφαρμογή.\n"
"Παρακαλώ ελέγξτε τις ρυθμίσεις στο Xfce."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Μία σύγχρονη, μινιμαλιστική γραμμή εργασιών για το Xfce"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_Βοήθεια"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Κλείσιμο"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Να μην εμφανίζεται λίστα για ένα μόνο παράθυρο"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Εμφάνιση παραθύρων μόνο από την ίδια επιφάνεια εργασίας"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Εμφάνιση παραθύρων μόνο από την ίδια οθόνη"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Εμφάνιση μικρογραφιών για ανοιχτά παράθυρα"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Εμφάνιση αριθμού ανοιχτών παραθύρων (για περισσότερα από 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Μεσαίο κουμπί ποντικιού:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Κλείσιμο όλων"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Εκκίνηση νέου παραθύρου εφαρμογής"

#: ../src/_dialogs.xml.h:11
msgid "Behavior"
msgstr "Συμπεριφορά"

#: ../src/_dialogs.xml.h:12
msgid "Active indicator style:"
msgstr "Μορφή δείκτη ενεργού:"

#: ../src/_dialogs.xml.h:13
msgid "Bars"
msgstr "Ράβδοι"

#: ../src/_dialogs.xml.h:14
msgid "Dots"
msgstr "Τελείες"

#: ../src/_dialogs.xml.h:15
msgid "Rectangles"
msgstr "Ορθογώνια"

#: ../src/_dialogs.xml.h:16
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:17
msgid "Circles"
msgstr "Κύκλοι"

#: ../src/_dialogs.xml.h:18
msgid "None"
msgstr "Κανένα"

#: ../src/_dialogs.xml.h:19
msgid "Inactive indicator style:"
msgstr "Μορφή δείκτη μη ενεργού:"

#: ../src/_dialogs.xml.h:20
msgid "Indicator orientation:"
msgstr "Προσανατολισμός δείκτη:"

#: ../src/_dialogs.xml.h:21
msgid "Automatic"
msgstr "Αυτόματο"

#: ../src/_dialogs.xml.h:22
msgid "Bottom"
msgstr "Κάτω μέρος"

#: ../src/_dialogs.xml.h:23
msgid "Right"
msgstr "Δεξιά"

#: ../src/_dialogs.xml.h:24
msgid "Top"
msgstr "Πάνω"

#: ../src/_dialogs.xml.h:25
msgid "Left"
msgstr "Αριστερά"

#: ../src/_dialogs.xml.h:26
msgid "Get indicator color from theme"
msgstr "Ορισμός χρώματος δείκτη από το θέμα"

#: ../src/_dialogs.xml.h:27
msgid "Active indicator:"
msgstr "Δείκτης ενεργού:"

#: ../src/_dialogs.xml.h:28
msgid "Inactive indicator:"
msgstr "Δείκτης μη ενεργού:"

#: ../src/_dialogs.xml.h:29
msgid "Force icon size:"
msgstr "Επιβολή μεγέθους εικονιδίων:"

#: ../src/_dialogs.xml.h:30
msgid "Appearance"
msgstr "Εμφάνιση"

#: ../src/_dialogs.xml.h:31
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Εναλλαγή μεταξύ εφαρμογών με <SUPER>+[1, 2, ...]"

#: ../src/_dialogs.xml.h:32
msgid "Switch to the last window with <SUPER>"
msgstr "Εναλλαγή στο τελευταίο παράθυρο με <SUPER>"

#: ../src/_dialogs.xml.h:33
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Αυτή η λειτουργία είναι απενεργοποιημένη.</b>\n"
"Προϋποθέτει την επέκταση X11 XInput2.0 η οποία δεν παρέχεται από το σύστημά σας."

#: ../src/_dialogs.xml.h:35
msgid "Keyboard hotkeys"
msgstr "Συνδυασμοί πληκτρολογίου"
07070100000012000081A400000000000000000000000165E8B85000001345000000000000000000000000000000000000003700000000xfce4-docklike-plugin-20240306~git.da23d2a/po/en_GB.po# 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.
# 
# Translators:
# Jackson Doak <noskcaj@ubuntu.com>, 2023
# Nick Schermer <nick@xfce.org>, 2023
# Andi Chandler <andi@gowling.com>, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Andi Chandler <andi@gowling.com>, 2023\n"
"Language-Team: English (United Kingdom) (https://app.transifex.com/xfce/teams/16840/en_GB/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: en_GB\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Pinned to Dock"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Pin to Dock"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Edit Launcher"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Close All"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Remove"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Only the first %u hotkeys(s) are enabled.</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "A modern, minimalist taskbar for Xfce"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_Help"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Close"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Don't show the window list for a single window"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Only show applications on the current workspace"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Only show applications on the current display"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Show preview thumbnails for open windows"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Show the number of open windows (if more than 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Middle mouse button:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Close all"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Launch new instance"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "Do Nothing"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "Behaviour"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "Active indicator style:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "Bars"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "Dots"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "Rectangles"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "Circles"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "None"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "Inactive indicator style:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "Indicator orientation:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "Automatic"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "Bottom"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "Right"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "Top"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "Left"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "Get indicator colour from theme"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "Active indicator:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "Inactive indicator:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "Force icon size:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "Appearance"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Switch between applications with <SUPER>+[1, 2, ...]"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "Switch to the last window with <SUPER>"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "Keyboard hotkeys"
07070100000013000081A400000000000000000000000165E8B85000001452000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/es.po# 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.
# 
# Translators:
# Xfce Bot <transifex@xfce.org>, 2023
# Toni Estévez <toni.estevez@gmail.com>, 2023
# emiliano casal chiarotti <emiliano.casal.chiarotti@gmail.com>, 2023
# Ignacio Poggi <ignaciop.3@gmail.com>, 2023
# Casper, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Casper, 2023\n"
"Language-Team: Spanish (https://app.transifex.com/xfce/teams/16840/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Anclado al muelle "

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Anclar al muelle "

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Editar lanzador "

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Cerrar Todas"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Eliminar"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Solo los %u primeros atajos de teclado están activados.</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"La combinación &lt;SUPER&gt;+%u está siendo utilizada por otro proceso.\n"
"Verifique sus configuraciones de Xfce."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Una moderna y minimalista barra de tareas para Xfce"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_Ayudar"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Cerrar"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "No mostrar la lista para una única ventana"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Mostrar solo aplicaciones del escritorio actual"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Mostrar solo aplicaciones de la pantalla actual"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Mostrar miniaturas de vista previa para ventanas abiertas"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Muestra el número de ventanas abiertas (si hay más de 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Botón medio del ratón:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Cerrar todo"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Lanzar nueva instancia"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "No hacer nada"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "Comportamiento"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "Estilo del indicador activo"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "Barras"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "Puntos"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "Rectángulos"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "Círculos"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "Ninguno"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "Estilo del indicador inactivo:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "Posición del indicador:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "Automático"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "Abajo"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "Derecha"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "Arriba"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "Izquierda"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "Usar el color del tema para el indicador"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "Indicador activo:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "Indicador inactivo:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "Forzar el tamaño de los iconos:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "Apariencia"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Cambiar de aplicación con <SUPER>+[1, 2, ...]"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "Cambiar a la última aplicación con <SUPER>"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Esta función se encuentra deshabilitada.</b>\n"
"Requiere la extensión XInput2.0 de X11 la cual no está presente en su sistema."

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "Atajos de teclado"
07070100000014000081A400000000000000000000000165E8B85000001362000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/et.po# 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.
# 
# Translators:
# Priit Jõerüüt <transifex@joeruut.com>, 2024
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Priit Jõerüüt <transifex@joeruut.com>, 2024\n"
"Language-Team: Estonian (https://app.transifex.com/xfce/teams/16840/et/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: et\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Kinnitatud tegumiribale"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Kinnita tegumiribale"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Muuda käivitajat"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Sulge kõik"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Eemalda"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Kasutusel on vaid %u esimene kiirklahv (esimest kiirklahvi).</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"&lt;SUPER&gt;+%u klahvikombinatsioon tundub juba olema kasutusel muu tegumi poolt.\n"
"Palun vaata Xfce seadistused üle."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Moodne ja napp tegumiriba Xfce jaoks"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_Abiteave"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Sulge"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Ühe akna puhul ära näita akende loendit"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Näita vaid praeguse tööala rakendusi"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Näita vaid praeguse ekraani rakendusi"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Näita avatud akende pisipilte"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Näita avatud akende arvu (kui see on suurem kui 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Toiming hiire keskmise nupu klõpsimisel:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Sulge kõik"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Käivita uus rakenduse aken"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "Ära tee midagi"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "Käitumine"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "Aktiivse näidiku stiil:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "Tulbad"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "Punktid"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "Ruudud"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "Ringid"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "Mitte midagi"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "Mitteaktiivse näidiku stiil:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "Näidiku paigutus:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "Automaatne"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "All"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "Paremal"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "Üleval"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "Vasakul"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "Laadi näidiku värv teemast"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "Aktiivne näidik:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "Mitteaktiivne näidik:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "Määra ikooni suuruseks:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "Välimus"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Rakenduste vahetamiseks kasuta: <SUPER>+[1, 2, ...]"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "Viimatikasutatud akna avamiseks kasuta: <SUPER>"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>See funktsionalsus on välja lülitatud.</b>\n"
"See vajab X11 XInput2.0 laiendust, mida sinu arvutis ei leidu."

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "Klaviatuuri kiirklahvid"
07070100000015000081A400000000000000000000000165E8B8500000127A000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/fi.po# 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.
# 
# Translators:
# Xfce Bot <transifex@xfce.org>, 2023
# Jiri Grönroos <jiri.gronroos@iki.fi>, 2023
# Ammuu5, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Ammuu5, 2023\n"
"Language-Team: Finnish (https://app.transifex.com/xfce/teams/16840/fi/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fi\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Kiinnitetty telakkaan"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Kiinnitä telakkaan"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Muokkaa käynnistintä"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Sulje kaikki"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Poista"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Vain ensimmäiset %u pikanäppäimet ovat käytössä.</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Moderni, minimalistinen tehtäväpalkki Xfce:lle"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_Ohje"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Sulje"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Älä näytä luetteloa yksittäisistä ikkunoista"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Näytä vain nykyisen työtilan sovellukset"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Näytä sovellukset vain nykyisellä näytöllä"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Näytä esikatselukuvat avoimille ikkunoille"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Näytä avoinna olevien ikkunoiden määrä (jos yli 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr ""

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Sulje kaikki"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr ""

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "Älä tee mitään"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "Toiminta"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "Aktiivisen ilmaisimen tyyli:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "Palkit"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "Pisteet"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "Suorakulmiot"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr ""

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr ""

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "Ei mitään"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "Passiivisen ilmaisimen tyyli:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "Ilmaisimen suunta:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "Automaattinen"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "Alas"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "Oikealle"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "Ylös"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "Vasemmalle"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "Määritä ilmaisimen väri teemasta"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "Aktiivinen ilmaisin:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "Passiivinen ilmaisin:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "Pakota kuvakkeiden koko:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "Ulkoasu"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Vaihda sovellusten välillä painikkeilla <SUPER> + [1, 2, ...]"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "Vaihda viimeiseen ikkunaan näppäimellä <SUPER>"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "Pikanäppäimet"
07070100000016000081A400000000000000000000000165E8B8500000142A000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/fr.po# 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.
# 
# Translators:
# Xfce Bot <transifex@xfce.org>, 2023
# Charles Monzat <c.monzat@laposte.net>, 2023
# David D, 2023
# Joel Carnat, 2023
# Wallon Wallon, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Wallon Wallon, 2023\n"
"Language-Team: French (https://app.transifex.com/xfce/teams/16840/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fr\n"
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Épinglé"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Épingler"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Modifier le lanceur"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Tout fermer"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Enlever"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Seules les %u premières touches de raccourci sont activées.</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"La combinaison &lt;SUPER&gt;+%u semble déjà être utilisée par un autre processus.\n"
"Vérifiez vos paramètres Xfce."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Une barre des tâches moderne et minimaliste pour Xfce"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_Aider"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Fermer"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Cacher la liste pour une seule fenêtre"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Ne voir que les applications de l'espace de travail courant"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Ne voir que les applications de l'écran courant"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Afficher les vignettes d'aperçu des fenêtres ouvertes"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Afficher le nombre de fenêtres ouvertes (si plus de 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Bouton du milieu de la souris :"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Tout fermer"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Lancer une nouvelle instance"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "Ne rien faire"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "Comportement"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "Style de l'indicateur actif :"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "Barres"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "Points"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "Rectangles"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "Cercles"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "Rien"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "Style de l'indicateur inactif :"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "Orientation de l'indicateur:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "Automatique"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "Bas"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "Droite"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "Haut"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "Gauche"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "Obtenir la couleur de l'indicateur à partir du thème"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "Indicateur actif :"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "Indicateur inactif :"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "Forcer la taille des icônes :"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "Apparence"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Changer d'application avec <SUPER>+[1, 2, ...]"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "Appeler l'application précédente avec <SUPER>"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Cette fonction est désactivée.</b>\n"
"Elle nécessite l'extension X11 XInput2.0 qui n'est pas fournie par votre système."

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "Raccourcis clavier"
07070100000017000081A400000000000000000000000165E8B85000001507000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/he.po# 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.
# 
# Translators:
# gk <genghiskhan@gmx.ca>, 2023
# עומר א״ש <omeritzicschwartz@gmail.com>, 2023
# Elishai Eliyahu <elishai@mailfence.com>, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-02 12:55+0100\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Elishai Eliyahu <elishai@mailfence.com>, 2023\n"
"Language-Team: Hebrew (https://www.transifex.com/xfce/teams/16840/he/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: he\n"
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "נעוץ למעגן"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "נעץ למעגן"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "ערוך מפעיל"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "סגור הכל"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "הסרה"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>רק מקש(ים) ישיר ראשון %u מופעל.</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"השילוב &lt;SUPER&gt;+%u כנראה בשימוש בתהליך נוסף.\n"
"בדוק את הגדרות Xfce שלך."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "סרגל משימות מודרני, מינימליסטי לXfce "

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_עזרה"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_סגור"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "אל תציג את רשימת החלונות עבור חלון בודד"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "הצג רק ישומים במרחב העבודה הנוכחי"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "הצג ישומים רק במסך הנוכחי"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "הצג תמונות ממוזערות של תצוגה מקדימה לחלונות פתוחים"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "הצג את מספר החלונות הפתוחים (אם יותר מ-2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "לחצן עכבר אמצעי:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "סגור הכל"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "הפעל מופע חדש"

#: ../src/_dialogs.xml.h:11
msgid "Behavior"
msgstr "התנהגות"

#: ../src/_dialogs.xml.h:12
msgid "Active indicator style:"
msgstr "סגנון אינדיקטור פעיל:"

#: ../src/_dialogs.xml.h:13
msgid "Bars"
msgstr "שורות"

#: ../src/_dialogs.xml.h:14
msgid "Dots"
msgstr "נקודות"

#: ../src/_dialogs.xml.h:15
msgid "Rectangles"
msgstr "מרובעים"

#: ../src/_dialogs.xml.h:16
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:17
msgid "Circles"
msgstr "מעגלים"

#: ../src/_dialogs.xml.h:18
msgid "None"
msgstr "ללא"

#: ../src/_dialogs.xml.h:19
msgid "Inactive indicator style:"
msgstr "סגנון אינדיקטור לא פעיל:"

#: ../src/_dialogs.xml.h:20
msgid "Indicator orientation:"
msgstr "אוריינטצית אינדיקטור:"

#: ../src/_dialogs.xml.h:21
msgid "Automatic"
msgstr "אוטומטי"

#: ../src/_dialogs.xml.h:22
msgid "Bottom"
msgstr "למטה"

#: ../src/_dialogs.xml.h:23
msgid "Right"
msgstr "ימין"

#: ../src/_dialogs.xml.h:24
msgid "Top"
msgstr "למעלה"

#: ../src/_dialogs.xml.h:25
msgid "Left"
msgstr "שמאל"

#: ../src/_dialogs.xml.h:26
msgid "Get indicator color from theme"
msgstr "קח צבע אינדיקטור מערכת נושא"

#: ../src/_dialogs.xml.h:27
msgid "Active indicator:"
msgstr "אינדיקטור פעיל:"

#: ../src/_dialogs.xml.h:28
msgid "Inactive indicator:"
msgstr "אינדיקטור לא פעיל:"

#: ../src/_dialogs.xml.h:29
msgid "Force icon size:"
msgstr "אלץ גודל איקון:"

#: ../src/_dialogs.xml.h:30
msgid "Appearance"
msgstr "מראה"

#: ../src/_dialogs.xml.h:31
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "החלף בין ישומים עם <SUPER>+[1,2, ...]"

#: ../src/_dialogs.xml.h:32
msgid "Switch to the last window with <SUPER>"
msgstr "עבור אל החלון האחרון עם <SUPER>"

#: ../src/_dialogs.xml.h:33
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>מאפיין זה כבוי.</b>\n"
"נדרשת הרחבה X11 XInput2.0 שאינה מסופקת על ידי המערכת שלך."

#: ../src/_dialogs.xml.h:35
msgid "Keyboard hotkeys"
msgstr "מקשים ישירים מקלדת"
07070100000018000081A400000000000000000000000165E8B8500000119E000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/hr.po# 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.
# 
# Translators:
# Xfce Bot <transifex@xfce.org>, 2023
# Ivica  Kolić <ikoli@yahoo.com>, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-02 12:55+0100\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Ivica  Kolić <ikoli@yahoo.com>, 2023\n"
"Language-Team: Croatian (https://www.transifex.com/xfce/teams/16840/hr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: hr\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"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr ""

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr ""

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Uredi pokretač"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Zatvori sve"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Ukloni"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr ""

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Moderna, minimalistička programska traka za Xfce"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_Pomoć"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Zatvori"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Ne prikazujte popis prozora za jedan prozor"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Prikaži samo aplikacije iz trenutnog radnog prostora"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Prikaži samo programe s trenutnog zaslona"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Prikaži minijature pregleda za otvorene prozore"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Prikaži broj otvorenih prozora (ako je veći od 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr ""

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Zatvori sve"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr ""

#: ../src/_dialogs.xml.h:11
msgid "Behavior"
msgstr "Ponašanje"

#: ../src/_dialogs.xml.h:12
msgid "Active indicator style:"
msgstr ""

#: ../src/_dialogs.xml.h:13
msgid "Bars"
msgstr ""

#: ../src/_dialogs.xml.h:14
msgid "Dots"
msgstr "Točkice"

#: ../src/_dialogs.xml.h:15
msgid "Rectangles"
msgstr "Pravokutnici"

#: ../src/_dialogs.xml.h:16
msgid "Ciliora"
msgstr ""

#: ../src/_dialogs.xml.h:17
msgid "Circles"
msgstr ""

#: ../src/_dialogs.xml.h:18
msgid "None"
msgstr "Nijedna"

#: ../src/_dialogs.xml.h:19
msgid "Inactive indicator style:"
msgstr ""

#: ../src/_dialogs.xml.h:20
msgid "Indicator orientation:"
msgstr "Orijentacija indikatora:"

#: ../src/_dialogs.xml.h:21
msgid "Automatic"
msgstr "Automatski"

#: ../src/_dialogs.xml.h:22
msgid "Bottom"
msgstr "Dno"

#: ../src/_dialogs.xml.h:23
msgid "Right"
msgstr "Pravo"

#: ../src/_dialogs.xml.h:24
msgid "Top"
msgstr "Vrh"

#: ../src/_dialogs.xml.h:25
msgid "Left"
msgstr "Lijevo"

#: ../src/_dialogs.xml.h:26
msgid "Get indicator color from theme"
msgstr ""

#: ../src/_dialogs.xml.h:27
msgid "Active indicator:"
msgstr "Aktivni pokazatelj "

#: ../src/_dialogs.xml.h:28
msgid "Inactive indicator:"
msgstr "Neaktivni pokazatelj:"

#: ../src/_dialogs.xml.h:29
msgid "Force icon size:"
msgstr "Prisiliti veličinu ikona:"

#: ../src/_dialogs.xml.h:30
msgid "Appearance"
msgstr "Izgled"

#: ../src/_dialogs.xml.h:31
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Prebacivanje između aplikacija pomoću <SUPER> + [1, 2, ...]"

#: ../src/_dialogs.xml.h:32
msgid "Switch to the last window with <SUPER>"
msgstr "Prebacite se na zadnji prozor pomoću <SUPER>"

#: ../src/_dialogs.xml.h:33
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""

#: ../src/_dialogs.xml.h:35
msgid "Keyboard hotkeys"
msgstr "Tipkovni prečaci"
07070100000019000081A400000000000000000000000165E8B8500000126C000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/id.po# 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.
# 
# Translators:
# Xfce Bot <transifex@xfce.org>, 2023
# Triyan W. Nugroho <triyan.wn@gmail.com>, 2023
# Faisal Rachmadin <frachmadin@gmail.com>, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-02-22 12:49+0100\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Faisal Rachmadin <frachmadin@gmail.com>, 2023\n"
"Language-Team: Indonesian (https://www.transifex.com/xfce/teams/16840/id/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: id\n"
"Plural-Forms: nplurals=1; plural=0;\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Tersemat di Dok"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Sematkan di Dok"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Ubah Peluncur"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Tutup Semua"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Hapus"

#: ../src/SettingsDialog.cpp:217
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Hanya tombol pintas %u pertama yang diaktifkan.<b>\n"

#: ../src/SettingsDialog.cpp:219
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"Kombinasi &lt;SUPER&gt;+%u sepertinya sudah digunakan oleh proses lainnya.\n"
"Cek pengaturan Xfce anda."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Sebuah bilah tugas yang modern, minimalis untuk Xfce"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_Bantuan"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Tutup"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Jangan tampilkan daftar jendela untuk jendela tunggal"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Hanya tampilkan aplikasi di ruang kerja saat ini"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Hanya tampilkan aplikasi di tampilan saat ini"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Tampilkan pratinjau gambar mini untuk jendela yang terbuka"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Tampilkan jumlah jendela yang terbuka (jika lebih dari 2)"

#: ../src/_dialogs.xml.h:8
msgid "Behavior"
msgstr "Perilaku"

#: ../src/_dialogs.xml.h:9
msgid "Active indicator style:"
msgstr "Gaya indikator aktif:"

#: ../src/_dialogs.xml.h:10
msgid "Bars"
msgstr "Batang"

#: ../src/_dialogs.xml.h:11
msgid "Dots"
msgstr "Titik"

#: ../src/_dialogs.xml.h:12
msgid "Rectangles"
msgstr "Persegi panjang"

#: ../src/_dialogs.xml.h:13
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:14
msgid "Circles"
msgstr "Lingkaran"

#: ../src/_dialogs.xml.h:15
msgid "None"
msgstr "Tidak ada"

#: ../src/_dialogs.xml.h:16
msgid "Inactive indicator style:"
msgstr "Gaya indikator tidak aktif:"

#: ../src/_dialogs.xml.h:17
msgid "Indicator orientation:"
msgstr "Orientasi indikator:"

#: ../src/_dialogs.xml.h:18
msgid "Automatic"
msgstr "Otomatis"

#: ../src/_dialogs.xml.h:19
msgid "Bottom"
msgstr "Bawah"

#: ../src/_dialogs.xml.h:20
msgid "Right"
msgstr "Kanan"

#: ../src/_dialogs.xml.h:21
msgid "Top"
msgstr "Atas"

#: ../src/_dialogs.xml.h:22
msgid "Left"
msgstr "Kiri"

#: ../src/_dialogs.xml.h:23
msgid "Get indicator color from theme"
msgstr "Dapatkan warna indikator dari tema"

#: ../src/_dialogs.xml.h:24
msgid "Active indicator:"
msgstr "Indikator aktif:"

#: ../src/_dialogs.xml.h:25
msgid "Inactive indicator:"
msgstr "Indikator tidak aktif:"

#: ../src/_dialogs.xml.h:26
msgid "Force icon size:"
msgstr "Paksa ukuran ikon:"

#: ../src/_dialogs.xml.h:27
msgid "Appearance"
msgstr "Tampilan"

#: ../src/_dialogs.xml.h:28
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Beralih antar aplikasi dengan <SUPER>+[1, 2, ...]"

#: ../src/_dialogs.xml.h:29
msgid "Switch to the last window with <SUPER>"
msgstr "Beralih ke jendela terakhir dengan <SUPER>"

#: ../src/_dialogs.xml.h:30
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Fitur ini dinonaktifkan.</b>\n"
"Fitur ini membutuhkan ekstensi X11 XInput2.0 yang tidak disediakan oleh sistem Anda."

#: ../src/_dialogs.xml.h:32
msgid "Keyboard hotkeys"
msgstr "Tombol pintas papan ketik"
0707010000001A000081A400000000000000000000000165E8B85000001125000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/ie.po# 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.
# 
# Translators:
# Caarmi, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-02-22 12:49+0100\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Caarmi, 2023\n"
"Language-Team: Interlingue (https://www.transifex.com/xfce/teams/16840/ie/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ie\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Fixat al dock"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Fixar al dock"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Redacter li lansator"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Cluder omni"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Remover"

#: ../src/SettingsDialog.cpp:217
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Solmen li prim %u rapid-taste(s) es activ.</b>\n"

#: ../src/SettingsDialog.cpp:219
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Un modern, minimalist barra de taches por Xfce"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "Au_xilie"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Cluder"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Ne monstrar li liste de fenestres por un singul fenestre"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Monstrar solmen applicationes sur li actual labor-spacie"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Monstrar solmen applicationes sur li actual ecran"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Monstrar miniaturas por apertet fenestres"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Monstrar li númere de apertet fenestres (si plu quam 2)"

#: ../src/_dialogs.xml.h:8
msgid "Behavior"
msgstr "Conduida"

#: ../src/_dialogs.xml.h:9
msgid "Active indicator style:"
msgstr "Stil de indication activ:"

#: ../src/_dialogs.xml.h:10
msgid "Bars"
msgstr "Barras"

#: ../src/_dialogs.xml.h:11
msgid "Dots"
msgstr "Punctus"

#: ../src/_dialogs.xml.h:12
msgid "Rectangles"
msgstr "Rectangules"

#: ../src/_dialogs.xml.h:13
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:14
msgid "Circles"
msgstr "Circules"

#: ../src/_dialogs.xml.h:15
msgid "None"
msgstr "Necú"

#: ../src/_dialogs.xml.h:16
msgid "Inactive indicator style:"
msgstr "Stil de indication ínactiv:"

#: ../src/_dialogs.xml.h:17
msgid "Indicator orientation:"
msgstr "Orientation de indicator:"

#: ../src/_dialogs.xml.h:18
msgid "Automatic"
msgstr "Automatic"

#: ../src/_dialogs.xml.h:19
msgid "Bottom"
msgstr "Bass"

#: ../src/_dialogs.xml.h:20
msgid "Right"
msgstr "Dextri"

#: ../src/_dialogs.xml.h:21
msgid "Top"
msgstr "Alt"

#: ../src/_dialogs.xml.h:22
msgid "Left"
msgstr "Levul"

#: ../src/_dialogs.xml.h:23
msgid "Get indicator color from theme"
msgstr "Obtener li color ex li tema"

#: ../src/_dialogs.xml.h:24
msgid "Active indicator:"
msgstr "Indicator activ:"

#: ../src/_dialogs.xml.h:25
msgid "Inactive indicator:"
msgstr "Indicator ínactiv:"

#: ../src/_dialogs.xml.h:26
msgid "Force icon size:"
msgstr "Assignar li dimension de icones:"

#: ../src/_dialogs.xml.h:27
msgid "Appearance"
msgstr "Aspecte"

#: ../src/_dialogs.xml.h:28
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr ""

#: ../src/_dialogs.xml.h:29
msgid "Switch to the last window with <SUPER>"
msgstr "Activar li ultim fenestre per <SUPER>"

#: ../src/_dialogs.xml.h:30
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Ti function es ínactiv.</b>\n"
"It besona li extension de X11 XInput2.0 quel ne es providet de vor sistema."

#: ../src/_dialogs.xml.h:32
msgid "Keyboard hotkeys"
msgstr "Rapid-tastes"
0707010000001B000081A400000000000000000000000165E8B8500000141B000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/it.po# 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.
# 
# Translators:
# Xfce Bot <transifex@xfce.org>, 2023
# nortio <savi.napolitano@gmail.com>, 2023
# Dmytro Tokayev, 2023
# Emanuele Petriglia <transifex@emanuelepetriglia.com>, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Emanuele Petriglia <transifex@emanuelepetriglia.com>, 2023\n"
"Language-Team: Italian (https://app.transifex.com/xfce/teams/16840/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Fissato alla barra"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Fissa alla barra"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Modifica avviatore"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Chiudi tutto"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Rimuovi"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Sono abilitati solo i primi %u tasti di scelta rapida.</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"La combinazione &lt;SUPER&gt;+%u è già in uso da un altro processo.\n"
"Controlla le impostazioni di Xfce."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Una Taskbar moderna e minimale per Xfce"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_Aiuto"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "Chiudi"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Non mostrare l'elenco delle finestre per una singola finestra"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Mostra solo le applicazioni dall'area di lavoro corrente"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Mostra solo le applicazioni nella schermata corrente"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Mostra le miniature di anteprima per le finestre aperte"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Mostra il numero di finestre aperte (se più di 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Pulsante centrale del mouse:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Chiudi tutto"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Lancia nuova istanza"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "Non fare nulla"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "Comportamento"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "Stile di indicatore attivo:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "Barre"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "Punti"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "Rettangoli"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "Cerchi"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "Nessuno"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "Stile di indicatore inattivo:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "Orientamento indicatori:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "Automatico"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "Sotto"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "Destra"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "Sopra"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "Sinistra"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "Usa il colore del tema per l'indicatore"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "Indicatore attivo:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "Indicatore inattivo:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "Forza dimensione icone:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "Aspetto"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Passa tra le applicazioni con <SUPER>+[1, 2, ...]"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "Torna all'ultima finestra con <SUPER>"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Questa funzione è disabilitata.</b>\n"
"Richiede l'estensione X11 XInput2.0 non presente nel sistema."

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "Scarciatoie tastiera"
0707010000001C000081A400000000000000000000000165E8B85000001521000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/ja.po# 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.
# 
# Translators:
# Xfce Bot <transifex@xfce.org>, 2023
# UTUMI Hirosi <utuhiro78@yahoo.co.jp>, 2023
# Nobuhiro Iwamatsu <iwamatsu@nigauri.org>, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>, 2023\n"
"Language-Team: Japanese (https://app.transifex.com/xfce/teams/16840/ja/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ja\n"
"Plural-Forms: nplurals=1; plural=0;\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "ピン留め済み"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "ドックにピン留め"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "ランチャーを編集"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "全てのウィンドウを閉じる"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "削除"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>最初の %u ホットキーのみが有効です。</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"&lt;SUPER&gt;+%u の組み合わせは既に別のプロセス使用されているようです。\n"
"Xfceの設定を確認して下さい。"

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Xfce用のモダンで小さなタスクバー"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "ヘルプ"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "閉じる"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "1つのウィンドウの場合にウィンドウリストを非表示"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "現在のワークスペースのアプリケーションのみ表示"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "現在のディスプレイのアプリケーションのみ表示"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "ウィンドウのプレビューを表示"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "開かれているウィンドウの数を表示(2つ以上の場合)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "マウスの中ボタン:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "すべて閉じる"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "新しいインスタンスを起動"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "なにもしない"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "動作"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "アクティブなインジケーターのスタイル:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "バー"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "ドット"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "長方形"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "円"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "なし"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "アクティブでないインジケーターのスタイル:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "インジケータの向き:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "自動"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "下"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "右"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "上"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "左"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "テーマからインジケーターの色を取得"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "アクティブなインジケーター:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "アクティブでないインジケーター:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "アイコンサイズを強制的に変更する:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "見た目"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "アプリケーションを <SUPER>+[1, 2, ...] で切り替える"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "<SUPER> で最後のウィンドウに切り替える"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>この機能は無効化されています。</b>\n"
"この機能を使うには X11 XInput2.0 extension が必要です。"

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "キーボードショートカット"
0707010000001D000081A400000000000000000000000165E8B8500000139C000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/ko.po# 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.
# 
# Translators:
# 1763f4a4329a2376c933c5e919a36cbc_341ca53 <1f851310383599d03339229d772e1290_119292>, 2023
# Nick Schermer <nick@xfce.org>, 2023
# Seong-ho Cho <darkcircle.0426@gmail.com>, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-02 12:55+0100\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Seong-ho Cho <darkcircle.0426@gmail.com>, 2023\n"
"Language-Team: Korean (https://app.transifex.com/xfce/teams/16840/ko/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ko\n"
"Plural-Forms: nplurals=1; plural=0;\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "도크에 고정했습니다"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "도크에 고정"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "실행 아이콘 편집"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "모두 닫기"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "제거"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>처음 %u 바로 가기 키만 사용할 수 있습니다.</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"&lt;SUPER&gt;+%u 키 조합을 다른 프로세스에서 이미 사용하고 있는 것 같습니다.\n"
"Xfce 설정을 확인하십시오."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "최신 초단순 Xfce용 작업 표시줄"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "도움말(_H)"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "닫기(_C)"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "단일 창 목록을 나타내지 않음"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "현재 작업 공간에만 앱 표시"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "현재 화면에만 앱 표시"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "열어둘 창의 미리 보기 그림 표시"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "창 갯수(가 2개 이상일 경우) 표시"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "가운데 마우스 단추:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "모두 닫기"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "새 인스턴스 실행"

#: ../src/_dialogs.xml.h:11
msgid "Behavior"
msgstr "동작"

#: ../src/_dialogs.xml.h:12
msgid "Active indicator style:"
msgstr "활성 표시 방식:"

#: ../src/_dialogs.xml.h:13
msgid "Bars"
msgstr "막대"

#: ../src/_dialogs.xml.h:14
msgid "Dots"
msgstr "반점"

#: ../src/_dialogs.xml.h:15
msgid "Rectangles"
msgstr "사각형"

#: ../src/_dialogs.xml.h:16
msgid "Ciliora"
msgstr "실리오라"

#: ../src/_dialogs.xml.h:17
msgid "Circles"
msgstr "동글뱅이"

#: ../src/_dialogs.xml.h:18
msgid "None"
msgstr "없음"

#: ../src/_dialogs.xml.h:19
msgid "Inactive indicator style:"
msgstr "비활성 표시 방식:"

#: ../src/_dialogs.xml.h:20
msgid "Indicator orientation:"
msgstr "표시 방향:"

#: ../src/_dialogs.xml.h:21
msgid "Automatic"
msgstr "자동"

#: ../src/_dialogs.xml.h:22
msgid "Bottom"
msgstr "아래"

#: ../src/_dialogs.xml.h:23
msgid "Right"
msgstr "오른쪽"

#: ../src/_dialogs.xml.h:24
msgid "Top"
msgstr "위"

#: ../src/_dialogs.xml.h:25
msgid "Left"
msgstr "왼쪽"

#: ../src/_dialogs.xml.h:26
msgid "Get indicator color from theme"
msgstr "테마에서 표시 색상 가져오기"

#: ../src/_dialogs.xml.h:27
msgid "Active indicator:"
msgstr "활성 표시:"

#: ../src/_dialogs.xml.h:28
msgid "Inactive indicator:"
msgstr "비활성 표시:"

#: ../src/_dialogs.xml.h:29
msgid "Force icon size:"
msgstr "아이콘 강제 크기:"

#: ../src/_dialogs.xml.h:30
msgid "Appearance"
msgstr "모양새"

#: ../src/_dialogs.xml.h:31
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "<SUPER>+[1, 2, ...] 키로 앱 전환"

#: ../src/_dialogs.xml.h:32
msgid "Switch to the last window with <SUPER>"
msgstr "<SUPER> 키로 마지막에 사용한 창 전환"

#: ../src/_dialogs.xml.h:33
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>이 기능은 사용할 수 없습니다.</b>\n"
"시스템에 설치하지 않은 X11 XInput 2.0 확장이 필요합니다."

#: ../src/_dialogs.xml.h:35
msgid "Keyboard hotkeys"
msgstr "키보드 바로 가기 키"
0707010000001E000081A400000000000000000000000165E8B85000001429000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/lt.po# 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.
# 
# Translators:
# Nick Schermer <nick@xfce.org>, 2023
# Moo, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Moo, 2023\n"
"Language-Team: Lithuanian (https://app.transifex.com/xfce/teams/16840/lt/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: lt\n"
"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Prisegta prie doko"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Prisegti prie doko"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Taisyti leistuką"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Užverti visus"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Šalinti"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Yra įjungtas tik pirmasis %u susiejimas(-ai).</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"Atrodo, kad kombinaciją &lt;SUPER&gt;+%u jau naudoja kitas procesas.\n"
"Patikrinkite Xfce nustatymus."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Šiuolaikinė, minimalistinė užduočių juosta, skirta Xfce"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "Ž_inynas"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Užverti"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Nerodyti langų sąrašo, kai yra vienas langas"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Rodyti tik dabartinėje darbo srityje esančias programas"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Rodyti tik dabartiniame ekrane esančias programas"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Rodyti atvertų langų peržiūros miniatiūras"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Rodyti atvertų langų skaičių (jeigu jų yra daugiau nei 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Vidurinis pelės mygtukas:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Užverti visus"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Paleisti naują egzempliorių"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "Nieko nedaryti"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "Elgsena"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "Aktyvaus indikatoriaus stilius:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "Juostos"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "Taškai"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "Stačiakampiai"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "Apskritimai"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "Nėra"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "Neaktyvaus indikatoriaus stilius:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "Indikatoriaus orientacija:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "Automatiškai"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "Apačia"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "Dešinė"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "Viršus"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "Kairė"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "Gauti indikatoriaus spalvą iš apipavidalinimo"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "Aktyvus indikatorius:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "Neaktyvus indikatorius:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "Priverstinis piktogramų dydis:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "Išvaizda"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Perjunginėkite programas naudodami <SUPER>+[1, 2, ...]"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "Perjunkite į paskutinį langą naudodami <SUPER>"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Ši ypatybė yra išjungta.</b>\n"
"Ji reikalauja X11 XInput2.0 plėtinio, kurio jūsų sistema neteikia."

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "Spartieji klavišai"
0707010000001F000081A400000000000000000000000165E8B8500000138E000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/nb.po# 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.
# 
# Translators:
# Erlend Østlie <erlendandreas12368@gmail.com>, 2023
# Allan Nordhøy <epost@anotheragency.no>, 2023
# Harald H. <haarektrans@gmail.com>, 2023
# heskjestad <cato@heskjestad.xyz>, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: heskjestad <cato@heskjestad.xyz>, 2023\n"
"Language-Team: Norwegian Bokmål (https://app.transifex.com/xfce/teams/16840/nb/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: nb\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Festet til dokkpanelet"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Fest til dokkpanelet"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Rediger programstarter"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Lukk alle"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Fjern"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Kun de(n) første %u hurtigtasten(e) er slått på.</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"Tastekombinasjonen &lt;SUPER&gt; + %u brukes allerede av en annen prosess.\n"
"Sjekk dette i Xfce-innstillingene."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "En moderne og minimalistisk verktøylinje for Xfce"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_Hjelp"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Lukk"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Ikke vis vindusliste for et enkeltvindu"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Vis kun programmer i gjeldende arbeidsområde"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Vis kun programmer på gjeldende skjerm"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Vis miniatyrbilder av åpne vinduer"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Vis antall åpne vinduer (hvis flere enn 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Midtre museknapp:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Lukk alle"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Start ny instans"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "Gjør ingenting"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "Oppførsel"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "Aktiv indikatorstil:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "Stolper"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "Prikker"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "Rektangler"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "Sirkler"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "Ingen"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "Inaktiv indikatorstil:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "Indikatorretning:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "Automatisk"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "Bunn"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "Høyre"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "Topp"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "Venstre"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "Hent indikatorfarge fra tema"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "Aktiv indikator:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "Inaktiv indikator:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "Tving ikonstørrelse:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "Utseende"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Bytt mellom programmer med <SUPER> +[1, 2, …]"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "Bytt til siste vindu med <SUPER>"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Denne funksjonaliteten er slått av.</b>\n"
"Den krever utvidelsen X11 XInput2.0, som ikke tilbys av dette systemet."

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "Hurtigtaster"
07070100000020000081A400000000000000000000000165E8B85000001380000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/nl.po# 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.
# 
# Translators:
# Xfce Bot <transifex@xfce.org>, 2023
# Pjotr <pjotrvertaalt@gmail.com>, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Pjotr <pjotrvertaalt@gmail.com>, 2023\n"
"Language-Team: Dutch (https://app.transifex.com/xfce/teams/16840/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Vastgemaakt aan Dock"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Vastmaken aan Dock"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Launcher bewerken"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Sluit alle"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Verwijderen"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Alleen de eerste %u sneltoetsen zijn ingeschakeld.</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"De combinatie &lt;SUPER&gt;+%u is reeds in gebruik door een ander proces. \n"
"Controleer de instellingen van Xfce."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Een moderne, minimalistische taakbalk voor Xfce"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_Hulp"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "Sluiten"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Toon de vensterlijst niet voor een enkel venster"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Toon alleen applicaties op de huidige werkruimte"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Toon alleen applicaties op het huidige scherm"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Voorbeeldminiaturen weergeven voor geopende vensters"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Toon het aantal geopende vensters (indien meer dan 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Middelste muisknop:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Alles sluiten"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Start nieuwe instantie"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "Niets doen"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "Gedrag"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "Stijl van actieve indicator:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "Balken"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "Stippen"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "Vierkanten"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "Cirkels"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "Geen"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "Stijl van inactieve indicator:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "Orientatie indicator:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "Automatisch"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "Onder"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "Rechts"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "Boven"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "Links"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "Verkrijg de indicatorkleur vanuit het thema"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "Actieve indicator:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "Inactieve indicator:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "Forceer icoongrootte:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "Uiterlijk"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Wissel tussen applicaties met <SUPER>+[1, 2, ...]"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "Wissel naar het laatste venster met"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Deze functie is niet beschikbaar.</b>\n"
"Deze functie heeft de X11 XInput2.0-extentie nodig, welke niet op uw systeem beschikbaar is."

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "Sneltoetsen"
07070100000021000081A400000000000000000000000165E8B8500000140E000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/pl.po# 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.
# 
# Translators:
# Xfce Bot <transifex@xfce.org>, 2023
# Marek Adamski, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Marek Adamski, 2023\n"
"Language-Team: Polish (https://app.transifex.com/xfce/teams/16840/pl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pl\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Przypięty do paska"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Przypnij do paska"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Edytuj aktywator"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Zamknij wszystkie"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Usuń"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Włączono tylko pierwsze skróty klawiszowe %u</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"Wydaje się, że kombinacja &lt;SUPER&gt;+%u jest już używana przez inny proces.\n"
"Sprawdź ustawienia Xfce."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Nowoczesny, minimalistyczny pasek zadań dla Xfce"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_Pomoc"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Zamknij"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Nie pokazuj listy okien dla pojedynczego okna"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Pokazuj tylko aplikacje w bieżącym obszarze roboczym"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Pokazuj tylko aplikacje na bieżącym ekranie"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Pokazuj miniatury podglądu dla otwartych okien"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Pokazuj liczbę otwartych okien (jeśli więcej niż 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Środkowy przycisk myszy:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Zamknij wszystkie"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Uruchom nowe wystąpienie"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "Nic nie rób"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "Zachowanie"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "Styl wskaźnika aktywnych:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "Paski"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "Kropki"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "Prostokąty"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "Kręgi"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "Żaden"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "Styl wskaźnika nieaktywnych:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "Orientacja wskaźnika:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "Automatyczna"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "Dolna"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "Prawa"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "Górna"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "Lewa"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "Pobierz kolor wskaźnika z motywu"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "Wskaźnik aktywnych:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "Wskaźnik nieaktywnych:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "Wymuś rozmiar ikon:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "Wygląd"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Przełączaj się między aplikacjami za pomocą <SUPER>+[1, 2, ...]"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "Przechodź do ostatniego okna za pomocą <SUPER>"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Ta funkcja jest wyłączona.</b>\n"
"Wymaga rozszerzenia XInput2.0 X11, które nie zostało dostarczone przez ten system."

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "Skróty klawiszowe"
07070100000022000081A400000000000000000000000165E8B85000001423000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/pt.po# 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.
# 
# Translators:
# Xfce Bot <transifex@xfce.org>, 2023
# José Vieira <jvieira33@sapo.pt>, 2023
# Hugo Carvalho <hugokarvalho@hotmail.com>, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Hugo Carvalho <hugokarvalho@hotmail.com>, 2023\n"
"Language-Team: Portuguese (https://app.transifex.com/xfce/teams/16840/pt/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pt\n"
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Afixado na doca"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Afixar na doca"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Editar lançador"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Fechar tudo"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Remover"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Apenas o(s) %u primeiros atalhos estão ativados.</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"A combinação &lt;SUPER&gt;+%u parece já estar a ser utilizada por outro processo.\n"
"Verifique as definições do Xfce."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Uma barra de tarefas moderna e minimalista para o Xfce"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_Ajuda"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "Fe_char"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Não mostrar a lista de janelas para uma única janela"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Mostrar apenas aplicações na área de trabalho atual"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Mostrar apenas aplicações no ecrã atual"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Mostrar miniaturas de pré-visualização para janelas abertas"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Mostrar o número de janelas abertas (se mais de 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Botão do meio do rato:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Fechar tudo"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Lançar nova instância"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "Não fazer nada"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "Comportamento"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "Estilo do indicador ativo:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "Barras"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "Pontos"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "Retângulos"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "Cílios"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "Círculos"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "Nenhum"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "Estilo do indicador inativo:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "Orientação do indicador:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "Automática"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "Inferior"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "Direita"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "Superior"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "Esquerda"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "Obter cor do indicador a partir do tema"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "Indicador ativo:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "Indicador inativo:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "Forçar tamanho dos ícones:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "Aparência"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Alternar entre aplicações com <SUPER>+[1, 2, ...]"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "Alternar para a última janela com <SUPER>"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Esta funcionalidade está desativada.</b>\n"
"Requer a extensão X11 XInput2.0, que não é fornecida pelo seu sistema."

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "Teclas de atalho"
07070100000023000081A400000000000000000000000165E8B8500000147A000000000000000000000000000000000000003700000000xfce4-docklike-plugin-20240306~git.da23d2a/po/pt_BR.po# 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.
# 
# Translators:
# Xfce Bot <transifex@xfce.org>, 2023
# Andre Miranda <andre@andreldm.com>, 2023
# Nick Schermer <nick@xfce.org>, 2023
# Felipe Nogueira <contato.fnog@gmail.com>, 2023
# The Cat, 2023
# Michael Martins <michaelfm21@gmail.com>, 2024
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Michael Martins <michaelfm21@gmail.com>, 2024\n"
"Language-Team: Portuguese (Brazil) (https://app.transifex.com/xfce/teams/16840/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pt_BR\n"
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Fixo no Dock"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Fixar no Dock"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Editar lançador"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Fechar todas"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Remover"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Apenas o(s) %u primeiros atalhos estão habilitados.</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"A combinação &lt;SUPER&gt;+%u parece já estar em uso por outro processo.\n"
"Verifique as configurações do Xfce."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Uma barra de tarefas moderna e minimalista para o Xfce"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "A_juda"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "Fechar"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Não mostrar a lista de janelas para uma única janela"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Mostrar apenas aplicativos no espaço de trabalho atual"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Mostrar apenas aplicativos no monitor atual"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Mostrar miniaturas de pré-visualização para janelas abertas"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Mostrar o número de janelas abertas (se mais de 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Botão do meio do mouse:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Fechar tudo"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Iniciar nova instância"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "Fazer nada"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "Comportamento"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "Estilo do indicador ativo:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "Barras"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "Pontos"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "Retângulos"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "Círculos"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "Nenhum"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "Estilo do indicador inativo:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "Posição do indicador:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "Automático"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "Abaixo"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "Direita"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "Topo"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "Esquerda"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "Obter a cor do indicador do tema"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "Indicador ativo:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "Indicador inativo:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "Forçar tamanho dos ícones:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "Aparência"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Alternar aplicativos com <SUPER>+[1, 2, ...]"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "Alternar para a última janela com <SUPER>"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Este recurso está desabilitado.</b>\n"
"Ele requer a extensão X11 XInput2.0, que não é fornecida pelo seu sistema."

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "Atalhos de teclado"
07070100000024000081A400000000000000000000000165E8B85000001796000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/ru.po# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# 
# Translators:
# Xfce Bot <transifex@xfce.org>, 2023
# Igor <f2404@yandex.ru>, 2023
# Igor Vornovskii, 2023
# Andrei Stepanov, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Andrei Stepanov, 2023\n"
"Language-Team: Russian (https://app.transifex.com/xfce/teams/16840/ru/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ru\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Прикреплен к док-станции"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "прикрепить к док-станции"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Править запуск"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Закрыть Всё"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Удалить"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Не удалось активировать привязку для клавиш, идущих после %u.</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"Похоже, что комбинация &lt;SUPER&gt;+%u уже используется.\n"
"Проверьте свои настройки Xfce."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Простая и современная панель задач для Xfce"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_помощь"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Закрыть"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Не показывать список окон для одного окна"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Показывать окна только с текущего рабочего места"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Показывать окна только с текущего монитора"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Показывать миниатюры предварительного просмотра для открытых окон"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Показать количество открытых окон (если их больше 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Средняя кнопка мыши:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Закрыть всё"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Запуск нового экземпляра"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "Ничего не делать"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "Поведение"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "Стиль активного индикатора:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "Полоса"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "Точки"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "Линии"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "Круги"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "ничто"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "Стиль неактивного индикатора:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "Расположение индикатора:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "автоматизированный"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "Снизу"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "Справа"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "Сверху"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "Слева"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "Получить цвет индикатора из темы"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "Активный индикатор:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "Неактивный индикатор:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "Размер значков:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "Внешний вид"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Переключать окна с помощью <SUPER>+[1, 2, ...]"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "Переключать ранее выбранные окна с помощью <SUPER>"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Эта функция недоступна.</b>\n"
"Для её работы необходим X11 XInput2.0, который, вероятно, отсутствует в вашей системе."

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "Комбинации клавиш"
07070100000025000081A400000000000000000000000165E8B85000001384000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/sk.po# 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.
# 
# Translators:
# Dušan Kazik <prescott66@gmail.com>, 2023
# Nick Schermer <nick@xfce.org>, 2023
# Slavko <linux@slavino.sk>, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-05 10:55+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Slavko <linux@slavino.sk>, 2023\n"
"Language-Team: Slovak (https://app.transifex.com/xfce/teams/16840/sk/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: sk\n"
"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Pripnuté do doku"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Pripnúť do doku"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Upraviť spúšťač"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Zatvoriť všetko"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Odstrániť"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr ""

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"Kombinácia &lt;SUPER&gt;+%u sa javí ako už použitá iným procesom.\n"
"Skontrolujte svoje nastavenia Xfce."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Moderný, minimalistický panel úloh pre Xfce"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_Pomocník"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Zatvoriť"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Nezobrazovať zoznam okien pre jedno okno"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Zobraziť aplikácie len z aktívneho pracovného priestoru"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Zobraziť aplikácie len z aktívneho displeja"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Zobraziť ukážky otvorených okien"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Zobraziť počet otvorených okien (ak ich ej viac ako 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Stredné tlačidlo myši:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Zatvoriť všetko"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Spustiť novú inštanciu"

#: ../src/_dialogs.xml.h:11
msgid "Behavior"
msgstr "Správanie"

#: ../src/_dialogs.xml.h:12
msgid "Active indicator style:"
msgstr "Štýl aktívneho indikátora:"

#: ../src/_dialogs.xml.h:13
msgid "Bars"
msgstr "Stĺpce"

#: ../src/_dialogs.xml.h:14
msgid "Dots"
msgstr "Bodky"

#: ../src/_dialogs.xml.h:15
msgid "Rectangles"
msgstr "Štvorce"

#: ../src/_dialogs.xml.h:16
msgid "Ciliora"
msgstr ""

#: ../src/_dialogs.xml.h:17
msgid "Circles"
msgstr "Kruhy"

#: ../src/_dialogs.xml.h:18
msgid "None"
msgstr "Žiadne"

#: ../src/_dialogs.xml.h:19
msgid "Inactive indicator style:"
msgstr "Štýl neaktívneho indikátora:"

#: ../src/_dialogs.xml.h:20
msgid "Indicator orientation:"
msgstr "Orientácia indikátora:"

#: ../src/_dialogs.xml.h:21
msgid "Automatic"
msgstr "Automatická"

#: ../src/_dialogs.xml.h:22
msgid "Bottom"
msgstr "Dole"

#: ../src/_dialogs.xml.h:23
msgid "Right"
msgstr "Vpravo"

#: ../src/_dialogs.xml.h:24
msgid "Top"
msgstr "Hore"

#: ../src/_dialogs.xml.h:25
msgid "Left"
msgstr "Vľavo"

#: ../src/_dialogs.xml.h:26
msgid "Get indicator color from theme"
msgstr "Získať farbu indikátora z témy"

#: ../src/_dialogs.xml.h:27
msgid "Active indicator:"
msgstr "Aktívny indikátor:"

#: ../src/_dialogs.xml.h:28
msgid "Inactive indicator:"
msgstr "Neaktívny indikátor:"

#: ../src/_dialogs.xml.h:29
msgid "Force icon size:"
msgstr "Vynútiť veľkosť ikony:"

#: ../src/_dialogs.xml.h:30
msgid "Appearance"
msgstr "Vzhľad"

#: ../src/_dialogs.xml.h:31
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Prepínať medzi aplikáciami pomocou <SUPER>+[1, 2, ...]"

#: ../src/_dialogs.xml.h:32
msgid "Switch to the last window with <SUPER>"
msgstr " Prepnúť na posledné okno pomocou <SUPER>"

#: ../src/_dialogs.xml.h:33
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Táto funkcia je vypnutá.</b>\n"
"Vyžaduje rozšírenie X11 XInput2.0, ktoré nie je vašim systémom poskytované."

#: ../src/_dialogs.xml.h:35
msgid "Keyboard hotkeys"
msgstr "Klávesové skratky"
07070100000026000081A400000000000000000000000165E8B850000013AC000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/sl.po# 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.
# 
# Translators:
# Nick Schermer <nick@xfce.org>, 2023
# Kernc, 2023
# Martin Srebotnjak <miles@filmsi.net>, 2023
# Arnold Marko <arnold.marko@gmail.com>, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Arnold Marko <arnold.marko@gmail.com>, 2023\n"
"Language-Team: Slovenian (https://app.transifex.com/xfce/teams/16840/sl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: sl\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Pripeto v sidrišče"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Pripni v sidrišče"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Uredi zaganjalnik"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Zapri vse"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Odstrani"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Vključenih je zgolj prvih %u hitrih tipk.</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"Ta  &lt;SUPER&gt;+%u kombinacija je že uporabljena s strani drugega procesa.\n"
"Preverite Xfce nastavitve."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Moderna, minimalistična opravilna vrstica za Xfce"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "Pomo_č"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Zapri"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Ne pokaži seznama oken pri enem samem oknu"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Pokaži le programe na trenutni delovni površini"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Pokaži le programe na trenutnem zaslonu"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Prikaži predogledne sličice odprtih oken"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Pokaži število odprtih oken (če sta več kot dva)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Srednja tipka miške:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Zapri vse"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Zaženi novo instanco"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "Ne naredi ničesar"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "Obnašanje"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "Slog dejavnega kazalnika:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "Stolpce"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "Pike"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "Pravokotniki"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "Krogi"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "Brez"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "Slog nedejavnega kazalnika:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "Usmerjenost kazalnika:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "Samodejno"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "Spodaj"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "Desno"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "Zgoraj"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "Levo"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "Iz teme pridobi barvo kazalnika"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "Dejavni kazalnik: "

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "Nedejavni kazallnik:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "Vsili velikost ikon:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "Videz"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Preklopi med programi s/z <SUPER>+[1, 2, ...]"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "Preklopi na zadnje okno s/z <SUPER>"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Ta možnost je onemogočena.</b>\n"
"Zahteva razširitev X11 XInput2.0, ki ni vsebovana na vašem sistemu."

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "Hitre tipke"
07070100000027000081A400000000000000000000000165E8B850000013AF000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/sq.po# 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.
# 
# Translators:
# Nick Schermer <nick@xfce.org>, 2023
# Besnik Bleta <besnik@programeshqip.org>, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Besnik Bleta <besnik@programeshqip.org>, 2023\n"
"Language-Team: Albanian (https://app.transifex.com/xfce/teams/16840/sq/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: sq\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "U fiksua te Paneli"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Fiksoje te Paneli"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Përpunoni Nisës"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Mbylli Krejt"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Hiqe"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Janë aktivizuar vetëm %u tastet e parë shkurtore.</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"Ndërthurja &lt;SUPER&gt;+%u duket tashmë e përdorur nga një tjetër proces.\n"
"Shihni rregullimet tuaja për Xfce-në."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Një shtyllë moderne, minimaliste punësh për Xfce-në"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_Ndihmë"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Mbylle"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Mos shfaq listën e dritareve për një dritare të vetme"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Shfaq vetëm aplikacione në hapësirën e tanishme të punës"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Shfaq vetëm aplikacione në ekranin e tanishëm"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Shfaq miniatura paraparjesh për dritare të hapura"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Shfaq numrin e dritareve të hapura (nëse ka më tepër se 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Butoni i mesit i miut:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Mbylli krejt"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Nis një instancë të re"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "Mos Bëj Gjë"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "Sjellje"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "Stil treguesi aktivesh:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "Shtylla"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "Pika"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "Drejtkëndësha"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr ""

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "Rrathë"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "Asnjë"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "Stil treguesi joaktivesh:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "Orientim treguesi:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "Automatik"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "Poshtë"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "Djathtas"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "Sipër"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "Majtas"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "Ngjyrën për treguesin merre nga tema"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "Tregues aktivesh:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "Tregues joaktivesh:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "Detyro madhësi ikonash:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "Dukje"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Kalo nga një aplikacion në tjetër me <SUPER>+[1, 2, …]"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "Kalo te dritarja e fundit me <SUPER>"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Kjo veçori është çaktivizuar.</b>\n"
"Lyp zgjerimin X11 XInput2.0, i cili nuk ofrohet nga sistemi juaj."

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "Taste shkurtoresh"
07070100000028000081A400000000000000000000000165E8B85000001702000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/sr.po# 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.
# 
# Translators:
# Nick Schermer <nick@xfce.org>, 2023
# Саша Петровић <salepetronije@gmail.com>, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Саша Петровић <salepetronije@gmail.com>, 2023\n"
"Language-Team: Serbian (https://app.transifex.com/xfce/teams/16840/sr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: sr\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"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Закачен за док"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Закачи за док"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Уреди покретач"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Затвори све"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Уклони"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Само прва пречица %u је омогућена.</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"Сједињавање &lt;СУПЕР&gt;+%u је изгледа већ у употреби за неко друго дејство.\n"
"Проверите поставке ИксФЦЕ-а."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Савремена, сажета трака задатака за ИксФЦЕ"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_Помоћ"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Затвори"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Не приказуј списак прозора за само један прозор"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Само приказуј програме тренутног радног простора"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Само приказуј програме тренутног заслона"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Приказуј умањене сличице прегледа отворених прозора"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Приказуј број отворених прозора (ако их је више од 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Средње дугме миша"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Затвори све"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Покрени нови примерак"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "Не дејствуј ништа"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "Понашање"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "Начин приказа показивача у погону:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "Траке"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "Тачке"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "троуглови"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "Трепавице"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "Кругови"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "Ништа"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "Начин приказа указивача ван погона:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "Усмерење указивача:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "Самостално"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "Доле"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "Десно"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "Горе"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "Лево"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "Добави боју указивача из теме"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "Указивач у погону:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "Указивач ван погона:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "Присили величину сличице:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "Изглед"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Мењај програме помоћу <СУПЕР>+[1,2, ..]"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "Пређи на последњи прозор помоћу <СУПЕР>"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Ова могућност је онемогућена.</b>\n"
"Захтева проширење Х11 Хинпут2.0 које није обезбеђено у Вашем радном склопу."

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "Пречице дугмади"
07070100000029000081A400000000000000000000000165E8B850000013AA000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/sv.po# 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.
# 
# Translators:
# Påvel Nicklasson <pavel2@frimix.se>, 2023
# Nick Schermer <nick@xfce.org>, 2023
# Arve Eriksson <031299870@telia.com>, 2023
# Luna Jernberg <bittin@cafe8bitar.se>, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Luna Jernberg <bittin@cafe8bitar.se>, 2023\n"
"Language-Team: Swedish (https://app.transifex.com/xfce/teams/16840/sv/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: sv\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Fastsatt till Dock"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Fäst till Dock"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Redigera programstartare"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Stäng alla"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Ta bort"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Endast de första %u snabbtangenterna är aktiverade.</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"Kombinationen &lt;SUPER&gt;+%u används tydligen redan av en annan process.\n"
"Kontrollera dina Xfce-inställningar."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Ett modernt, minimalistiskt aktivitetsfält för Xfce"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_Hjälp"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Stäng"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Visa inte fönsterlistan för ett enda fönster"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Visa endast program på aktuell arbetsyta"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Visa bara program på aktuell skärm"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Visa förhandsgransningstumnaglar för öppna fönster"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Visa antal öppna fönster (om fler än 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Mitten musknapp: "

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Stäng alla"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Starta ny instans"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "Gör ingenting"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "Beteende"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "Aktiv indikatorstil:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "Rader"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "Prickar"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "Rektanglar"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "Cirklar"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "Ingen"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "Inaktiv indikatorstil:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "Indikatororientering:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "Automatisk"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "Nederkant"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "Höger"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "Överkant"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "Vänster"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "Hämta indikatorfärg från tema"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "Aktiv indikator:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "Inaktiv indikator:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "Tvinga ikonstorlek:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "Utseende"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Växla mellan program med<SUPER>+[1, 2, ...]"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "Växla till senaste fönstret med <SUPER>"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Funktionen är avaktiverad.</b>\n"
"Den kräver X11-utökningen XInput 2.0, vilken inte finns på ditt system."

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "Tangentgenvägar"
0707010000002A000081A400000000000000000000000165E8B850000013EC000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/tr.po# 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.
# 
# Translators:
# Xfce Bot <transifex@xfce.org>, 2023
# Demiray Muhterem <mdemiray@msn.com>, 2023
# Sabri Ünal <libreajans@gmail.com>, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Sabri Ünal <libreajans@gmail.com>, 2023\n"
"Language-Team: Turkish (https://app.transifex.com/xfce/teams/16840/tr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: tr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Dock'a Sabitlendi"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Dock'a Sabitle"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Başlatıcıyı Düzenle"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Tümünü Kapat"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Kaldır"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Sadece ilk %u kısayol tuşları aktif hale getirildi.</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"&lt;SUPER&gt;+%u kombinasyonu halihazırda başka bir program tarafından kullanılıyor.\n"
"Xfce ayarlarınızı kontrol edin."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Xfce için modern, minimalist bir görev çubuğu"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_Yardım"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Kapat"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Yalnızca birden çok pencere için pencere listesini göster"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Sadece mevcut çalışma alanındaki uygulamaları göster"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Sadece mevcut ekrandaki uygulamaları göster"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Açık pencereler için önizleme küçük resimlerini göster"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Açık pencerelerin sayısını göster (2'den fazlaysa)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Orta fare düğmesi:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Tümünü kapat"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Yeni örneği başlat"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "Bir Şey Yapma"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "Davranış"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "Aktif gösterge biçemi:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "Barlar"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "Noktalar"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "Dikdörtgenler"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "Kirpikler"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "Daireler"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "Hiçbiri"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "Pasif gösterge biçemi:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "Gösterge yönü:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "Otomatik"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "Aşağı"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "Sağ"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "Yukarı"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "Sol"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "Gösterge rengini temadan al"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "Aktif gösterge:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "Aktif olmayan gösterge:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "Simgelerin boyutlarını zorla:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "Görünüm"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "<SUPER>+[1, 2, ...] ile uygulamalar araşında geçiş yap"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "<SUPER> ile son pencereye geçiş yap"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Bu özellik kapalı.</b>\n"
"Sisteminiz tarafından sağlanmayan X11 XInput2.0 eklentisini gerektiriyor."

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "Klavye kısayol tuşları"
0707010000002B000081A400000000000000000000000165E8B850000017EA000000000000000000000000000000000000003400000000xfce4-docklike-plugin-20240306~git.da23d2a/po/uk.po# 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.
# 
# Translators:
# Yarema aka Knedlyk <yupadmin@gmail.com>, 2023
# Nick Schermer <nick@xfce.org>, 2023
# Gordon Freeman, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: Gordon Freeman, 2023\n"
"Language-Team: Ukrainian (https://app.transifex.com/xfce/teams/16840/uk/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: uk\n"
"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "Прикріплено до доку"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "Прикріпити до доку"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "Редагувати значок запуску"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "Закрити все"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "Вилучити"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>Увімкнено лише %u перших гарячих клавіш.</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"Схоже, що комбінація &lt;SUPER&gt;+%u вже задіяна для іншої дії.\n"
"Перевірте ваші налаштування Xfce."

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Сучасна мінімалістична панель завдань для Xfce"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "_Допомога"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "_Закрити"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "Сховати список вікон для одиночного вікна"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "Показувати програми лише з поточної робочої області"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "Показувати програми лише з поточного монітору"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "Показувати мініатюри попереднього перегляду для відкритих вікон"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "Показувати кількість відкритих вікон (якщо більше 2-х)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "Середня кнопка миші:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "Закрити все"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "Запуск нового екземпляру"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "Не робити нічого"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "Поведінка"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "Стиль активного індикатора:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "Шкала"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "Крапки"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "Прямокутники"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "Кола"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "Нічого"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "Стиль неактивного індикатора:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "Розташування індикатора:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "Автоматично"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "Внизу"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "Зправа"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "Зверху"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "Зліва"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "Отримати колір індикатора з теми"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "Активний індикатор:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "Неактивний індикатор:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "Розмір значків:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "Зовнішній вигляд"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "Переключатися між програмами за допомогою <SUPER>+[1, 2, ...]"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "Переключатися на попереднє вікно за допомогою <SUPER>"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>Ця функція вимкнена.</b>\n"
"Вона потребує розширення X11 XInput2.0, якого немає у вашій системі."

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "Гарячі клавіші"
0707010000002C000081A400000000000000000000000165E8B850000012C9000000000000000000000000000000000000003700000000xfce4-docklike-plugin-20240306~git.da23d2a/po/zh_CN.po# 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.
# 
# Translators:
# Nick Schermer <nick@xfce.org>, 2023
# 玉堂白鹤 <yjwork@qq.com>, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: 玉堂白鹤 <yjwork@qq.com>, 2023\n"
"Language-Team: Chinese (China) (https://app.transifex.com/xfce/teams/16840/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0;\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "已固定到 Dock"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "固定到 Dock"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "编辑启动器"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "全部关闭"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "移除"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>仅启用第一个热键 %u。</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"&lt;SUPER&gt;+%u 组合似乎已经被另一个进程使用。\n"
"请检查 Xfce 设置。"

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "现代简约的 Xfce 任务栏"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "帮助(_H)"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "关闭(_C)"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "不显示单个窗口的窗口列表"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "仅在当前工作区上显示应用程序"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "仅在当前显示器上显示应用程序"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "显示打开窗口的预览缩略图"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "显示打开的窗口数 (如果超过 2 个)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "鼠标中键:"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "全部关闭"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "启动新实例"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "什么都不做"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "行为"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "活动指示器样式:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "长条"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "点"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "矩形"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "Ciliora"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "圆圈"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "无"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "非活动指示器样式:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "指示器方向:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "自动"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "底部"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "右边"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "顶部"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "左边"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "从主题获取指示器颜色"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "活动指示器:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "非活动指示器:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "强制图标大小:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "外观"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "使用 <SUPER>+[1, 2, ...] 在应用程序之间切换"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "使用 <SUPER> 切换到最后一个窗口"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>此功能已禁用。</b>\n"
"它需要 X11 XInput2.0 扩展,而您的系统不提供该扩展。"

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "键盘热键"
0707010000002D000081A400000000000000000000000165E8B85000001386000000000000000000000000000000000000003700000000xfce4-docklike-plugin-20240306~git.da23d2a/po/zh_TW.po# 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.
# 
# Translators:
# pan93412 <pan93412@gmail.com>, 2023
# Cheng-Chia Tseng <pswo10680@gmail.com>, 2023
# Hsiu-Ming Chang <cges30901@gmail.com>, 2023
# Nick Schermer <nick@xfce.org>, 2023
# 黃柏諺 <s8321414@gmail.com>, 2023
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-23 12:51+0200\n"
"PO-Revision-Date: 2023-02-22 11:02+0000\n"
"Last-Translator: 黃柏諺 <s8321414@gmail.com>, 2023\n"
"Language-Team: Chinese (Taiwan) (https://app.transifex.com/xfce/teams/16840/zh_TW/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: zh_TW\n"
"Plural-Forms: nplurals=1; plural=0;\n"

#: ../src/Wnck.cpp:202
msgid "Pinned to Dock"
msgstr "已釘選至 Dock"

#: ../src/Wnck.cpp:202
msgid "Pin to Dock"
msgstr "釘選至 Dock"

#: ../src/Wnck.cpp:203
msgid "Edit Launcher"
msgstr "編輯啟動器"

#: ../src/Wnck.cpp:230
msgid "Close All"
msgstr "關閉全部"

#: ../src/Wnck.cpp:249
msgid "Remove"
msgstr "移除"

#: ../src/SettingsDialog.cpp:225
#, c-format
msgid "<b>Only the first %u hotkeys(s) are enabled.</b>\n"
msgstr "<b>僅啟用第一個 %u 快捷鍵。</b>\n"

#: ../src/SettingsDialog.cpp:227
#, c-format
msgid ""
"The &lt;SUPER&gt;+%u combination seems already in use by another process.\n"
"Check your Xfce settings."
msgstr ""
"&lt;SUPER&gt;+%u 組合鍵似乎已被其他處理程序使用。\n"
"請檢查您的 Xfce 設定。"

#. namespace SettingsDialog
#: ../src/docklike.desktop.in.h:1
msgid "A modern, minimalist taskbar for Xfce"
msgstr "Xfce 的現代簡約工作列"

#: ../src/_dialogs.xml.h:1
msgid "_Help"
msgstr "說明(_H)"

#: ../src/_dialogs.xml.h:2
msgid "_Close"
msgstr "關閉(_C)"

#: ../src/_dialogs.xml.h:3
msgid "Don't show the window list for a single window"
msgstr "不要在僅有一個視窗時顯示視窗清單"

#: ../src/_dialogs.xml.h:4
msgid "Only show applications on the current workspace"
msgstr "僅顯示目前工作空間中的應用程式"

#: ../src/_dialogs.xml.h:5
msgid "Only show applications on the current display"
msgstr "僅顯示目前螢幕中的應用程式"

#: ../src/_dialogs.xml.h:6
msgid "Show preview thumbnails for open windows"
msgstr "顯示開啟視窗的預覽縮圖"

#: ../src/_dialogs.xml.h:7
msgid "Show the number of open windows (if more than 2)"
msgstr "顯示開啟視窗的數量(若多於 2)"

#: ../src/_dialogs.xml.h:8
msgid "Middle mouse button:"
msgstr "滑鼠中鍵"

#: ../src/_dialogs.xml.h:9
msgid "Close all"
msgstr "關閉全部"

#: ../src/_dialogs.xml.h:10
msgid "Launch new instance"
msgstr "啟動新實體"

#: ../src/_dialogs.xml.h:11
msgid "Do Nothing"
msgstr "不做任何動作"

#: ../src/_dialogs.xml.h:12
msgid "Behavior"
msgstr "行為"

#: ../src/_dialogs.xml.h:13
msgid "Active indicator style:"
msgstr "作用中的指示器樣式:"

#: ../src/_dialogs.xml.h:14
msgid "Bars"
msgstr "條"

#: ../src/_dialogs.xml.h:15
msgid "Dots"
msgstr "點"

#: ../src/_dialogs.xml.h:16
msgid "Rectangles"
msgstr "矩形"

#: ../src/_dialogs.xml.h:17
msgid "Ciliora"
msgstr "睫毛"

#: ../src/_dialogs.xml.h:18
msgid "Circles"
msgstr "圈圈"

#: ../src/_dialogs.xml.h:19
msgid "None"
msgstr "無"

#: ../src/_dialogs.xml.h:20
msgid "Inactive indicator style:"
msgstr "非作用中的指示器樣式:"

#: ../src/_dialogs.xml.h:21
msgid "Indicator orientation:"
msgstr "指示器方向:"

#: ../src/_dialogs.xml.h:22
msgid "Automatic"
msgstr "自動"

#: ../src/_dialogs.xml.h:23
msgid "Bottom"
msgstr "底端"

#: ../src/_dialogs.xml.h:24
msgid "Right"
msgstr "右側"

#: ../src/_dialogs.xml.h:25
msgid "Top"
msgstr "頂端"

#: ../src/_dialogs.xml.h:26
msgid "Left"
msgstr "左側"

#: ../src/_dialogs.xml.h:27
msgid "Get indicator color from theme"
msgstr "從佈景主題取得指示器色彩"

#: ../src/_dialogs.xml.h:28
msgid "Active indicator:"
msgstr "作用中的指示器:"

#: ../src/_dialogs.xml.h:29
msgid "Inactive indicator:"
msgstr "非作用中的指示器:"

#: ../src/_dialogs.xml.h:30
msgid "Force icon size:"
msgstr "強制圖示大小:"

#: ../src/_dialogs.xml.h:31
msgid "Appearance"
msgstr "外觀"

#: ../src/_dialogs.xml.h:32
msgid "Switch between applications with <SUPER>+[1, 2, ...]"
msgstr "使用 <SUPER>+[1, 2, ...] 在應用程式間切換"

#: ../src/_dialogs.xml.h:33
msgid "Switch to the last window with <SUPER>"
msgstr "使用 <SUPER> 切換至前一個視窗"

#: ../src/_dialogs.xml.h:34
msgid ""
"<b>This feature is disabled.</b>\n"
"It requires X11 XInput2.0 extension which is is not provided by your system."
msgstr ""
"<b>此功能已停用。</b>\n"
"其需要 X11 XInput2.0 擴充功能,但您的系統並未提供。"

#: ../src/_dialogs.xml.h:36
msgid "Keyboard hotkeys"
msgstr "鍵盤快捷鍵"
0707010000002E000041ED00000000000000000000000265E8B85000000000000000000000000000000000000000000000002F00000000xfce4-docklike-plugin-20240306~git.da23d2a/src0707010000002F000081A400000000000000000000000165E8B85000001EC4000000000000000000000000000000000000003C00000000xfce4-docklike-plugin-20240306~git.da23d2a/src/AppInfos.cpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#include <unordered_set>

#include "AppInfos.hpp"
#include "Settings.hpp"

void AppInfo::launch()
{
	GDesktopAppInfo* info = g_desktop_app_info_new_from_filename(this->path.c_str());

	if (info != nullptr)
	{
		GdkAppLaunchContext* context = gdk_display_get_app_launch_context(Plugin::mDisplay);

		g_app_info_launch(G_APP_INFO(info), nullptr, G_APP_LAUNCH_CONTEXT(context), nullptr);

		g_object_unref(context);
		g_object_unref(info);
	}
}

void AppInfo::launch_action(const gchar* action)
{
	GDesktopAppInfo* info = g_desktop_app_info_new_from_filename(this->path.c_str());

	if (info != nullptr)
	{
		GdkAppLaunchContext* context = gdk_display_get_app_launch_context(Plugin::mDisplay);

		g_desktop_app_info_launch_action(info, action, G_APP_LAUNCH_CONTEXT(context));

		g_object_unref(context);
		g_object_unref(info);
	}
}

void AppInfo::edit()
{
	GError* error = nullptr;
	gchar* quoted = g_shell_quote(this->path.c_str());
	gchar* command = g_strconcat("exo-desktop-item-edit ", quoted, nullptr);

	if (!g_spawn_command_line_async(command, &error))
	{
		g_warning("Failed to open edit dialog: %s", error->message);
		g_error_free(error);
	}

	g_free(command);
	g_free(quoted);
}

namespace AppInfos
{
	std::list<std::string> mXdgDataDirs;
	Store::Map<const std::string, std::shared_ptr<AppInfo>> mAppInfoWMClasses;
	Store::Map<const std::string, std::shared_ptr<AppInfo>> mAppInfoIds;
	Store::Map<const std::string, std::shared_ptr<AppInfo>> mAppInfoNames;
	Store::AutoPtr<GAppInfoMonitor> mMonitor;

	static void findXDGDirectories()
	{
		std::unordered_set<std::string> dir_set;
		std::list<std::string> dir_list, topdir_list;

		dir_list.push_back(g_get_user_data_dir());
		for (const gchar *const *p = g_get_system_data_dirs(); *p != nullptr; p++)
			dir_list.push_back(*p);

		for (std::string& dir : dir_list)
		{
			if (dir.back() == '/')
				dir += "applications/";
			else
				dir += "/applications/";

			// ensure uniqueness and existing dirs
			if (dir_set.insert(dir).second && g_file_test(dir.c_str(), G_FILE_TEST_IS_DIR))
				topdir_list.push_back(dir);
		}

		for (std::string& dir : topdir_list)
		{
			// Recursively add subdirectories of mXdgDataDirs to mXdgDataDirs.
			// Wine (and maybe some others) create their own directory tree.
			// See man ftw(3) for more information.
			ftw(
				dir.c_str(),
				[](const char* fpath, const struct stat* sb, int typeflag) -> int
				{
					if (typeflag == FTW_D)
						mXdgDataDirs.push_back(std::string(fpath) + '/');
					return 0;
				},
				16);
		}
	}

	static void loadDesktopEntry(const std::string& xdgDir, std::string filename)
	{
		#define DOT_DESKTOP ".desktop"
		constexpr size_t DOT_DESKTOP_SIZE = 8;

		if (!g_str_has_suffix(filename.c_str(), DOT_DESKTOP))
			return;

		std::string id = filename.substr(0, filename.size() - DOT_DESKTOP_SIZE);
		std::string lower_id = Help::String::toLowercase(id);
		if (mAppInfoIds.get(lower_id) != nullptr)
			return;

		std::string path = xdgDir + filename;
		GDesktopAppInfo* gAppInfo = g_desktop_app_info_new_from_filename(path.c_str());
		if (gAppInfo == nullptr)
			return;

		char* name_ = g_desktop_app_info_get_locale_string(gAppInfo, "Name");
		std::string name = (name_ != nullptr) ? name_ : id;
		g_free(name_);

		char* icon_ = g_desktop_app_info_get_string(gAppInfo, "Icon");
		std::string icon = (icon_ != nullptr) ? icon_ : "";
		g_free(icon_);

		std::shared_ptr<AppInfo> info = std::make_shared<AppInfo>(id, path, icon, name, gAppInfo);
		mAppInfoIds.set(lower_id, info);

		name_ = g_desktop_app_info_get_string(gAppInfo, "Name");
		name = (name_ != nullptr) ? name_ : "";
		g_free(name_);

		if (!name.empty())
		{
			name = Help::String::toLowercase(Help::String::trim(name));

			if (name.find(' ') == std::string::npos)
				if (name != lower_id)
					mAppInfoNames.set(name, info);
		}

		std::string exec;
		char* exec_ = g_desktop_app_info_get_string(gAppInfo, "Exec");
		if (exec_ != nullptr && exec_[0] != '\0')
		{
			std::string execLine = Help::String::toLowercase(Help::String::pathBasename(Help::String::trim(exec_)));
			exec = Help::String::getWord(execLine, 0);

			if (exec != "env" && exec != "exo-open")
				if (exec != lower_id && exec != name)
					mAppInfoNames.set(Help::String::toLowercase(exec), info);
		}
		g_free(exec_);

		std::string wmclass;
		char* wmclass_ = g_desktop_app_info_get_string(gAppInfo, "StartupWMClass");
		if (wmclass_ != nullptr && wmclass_[0] != '\0')
		{
			wmclass = Help::String::toLowercase(Help::String::trim(wmclass_));
			mAppInfoWMClasses.set(wmclass, info);
		}
		g_free(wmclass_);
	}

	static void loadXDGDirectories()
	{
		for (const std::string& xdgDir : mXdgDataDirs)
		{
			DIR* directory = opendir(xdgDir.c_str());
			if (directory == nullptr)
				continue;

			struct dirent* entry;
			while ((entry = readdir(directory)) != nullptr)
				loadDesktopEntry(xdgDir, entry->d_name);

			closedir(directory);
			g_debug("APPDIR: %s", xdgDir.c_str());
		}
	}

	void init()
	{
		mMonitor = Store::AutoPtr<GAppInfoMonitor>(g_app_info_monitor_get(), g_object_unref);

		g_signal_connect(G_OBJECT(mMonitor.get()), "changed",
			G_CALLBACK(+[](GAppInfoMonitor* monitor)
				{
					mAppInfoIds.clear();
					mAppInfoNames.clear();
					mAppInfoWMClasses.clear();
					loadXDGDirectories();
					Dock::drawGroups();
				}),
			nullptr);

		findXDGDirectories();
		loadXDGDirectories();
	}

	void finalize()
	{
		mXdgDataDirs.clear();
		mAppInfoWMClasses.clear();
		mAppInfoIds.clear();
		mAppInfoNames.clear();
		mMonitor.reset();
	}

	// TODO: Load these from a file so that the user can add their own aliases
	std::map<std::string, std::string> mGroupNameRename = {
		{"soffice", "libreoffice-startcenter"},
		{"libreoffice", "libreoffice-startcenter"},
		{"radium_linux.bin", "radium"},
		{"viberpc", "viber"},
		{"multimc5", "multimc"},
	};

	static void groupNameTransform(std::string& groupName)
	{
		std::map<std::string, std::string>::iterator itRenamed;
		if ((itRenamed = mGroupNameRename.find(groupName)) != mGroupNameRename.end())
			groupName = itRenamed->second;
	}

	std::shared_ptr<AppInfo> search(std::string id)
	{
		groupNameTransform(id);

		g_debug("Searching a match for '%s'", id.c_str());

		std::shared_ptr<AppInfo> ai = mAppInfoWMClasses.get(id);
		if (ai != nullptr)
		{
			g_debug("App WMClass match");
			return ai;
		}

		ai = mAppInfoIds.get(id);
		if (ai != nullptr)
		{
			g_debug("App id match");
			return ai;
		}

		ai = mAppInfoNames.get(id);
		if (ai != nullptr)
		{
			g_debug("App name match");
			return ai;
		}

		// Try to use just the first word of the window class; so that
		// virtualbox manager, virtualbox machine get grouped together etc.
		auto pos = id.find(' ');
		if (pos != std::string::npos)
		{
			id = id.substr(0, pos);
			g_debug("No match for whole string, searching a match for first word '%s'", id.c_str());

			ai = mAppInfoIds.get(id);
			if (ai != nullptr)
			{
				g_debug("App id match");
				return ai;
			}

			ai = mAppInfoNames.get(id);
			if (ai != nullptr)
			{
				g_debug("App name match");
				return ai;
			}
		}

		gchar*** gioPath = g_desktop_app_info_search(id.c_str());

		if (gioPath[0] != nullptr && gioPath[0][0] != nullptr && gioPath[0][0][0] != '\0')
		{
			std::string gioId = gioPath[0][0];
			gioId = Help::String::toLowercase(gioId.substr(0, gioId.size() - 8));
			ai = mAppInfoIds.get(gioId);
		}

		for (int i = 0; gioPath[i] != nullptr; ++i)
			g_strfreev(gioPath[i]);
		g_free(gioPath);

		if (ai != nullptr)
		{
			g_debug("GIO search match");
			return ai;
		}

		g_debug("No match");

		return std::make_shared<AppInfo>("", "", "", id);
	}
} // namespace AppInfos
07070100000030000081A400000000000000000000000165E8B8500000047F000000000000000000000000000000000000003C00000000xfce4-docklike-plugin-20240306~git.da23d2a/src/AppInfos.hpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#ifndef APPINFOS_HPP
#define APPINFOS_HPP

#include <ftw.h>

#include <gio/gdesktopappinfo.h>

#include <iostream>
#include <memory>

#include "Helpers.hpp"
#include "Store.tpp"

struct AppInfo
{
	const std::string id;
	const std::string path;
	const std::string icon;
	const std::string name;
	const Store::AutoPtr<GDesktopAppInfo> gAppInfo;

	AppInfo(std::string _id, std::string _path, std::string _icon, std::string _name, GDesktopAppInfo* _gAppInfo = nullptr)
		: id(_id), path(_path), icon(_icon), name(_name), gAppInfo(_gAppInfo, [](gpointer o) { if (o) g_object_unref(o); }) {}
	const gchar* const* get_actions() { return gAppInfo ? g_desktop_app_info_list_actions(gAppInfo.get()) : nullptr; };
	void launch();
	void launch_action(const gchar* action);
	void edit();
};

namespace AppInfos
{
	void init();
	void finalize();
	std::shared_ptr<AppInfo> search(std::string id);
} // namespace AppInfos

#endif // APPINFOS_HPP
07070100000031000081A400000000000000000000000165E8B850000013FD000000000000000000000000000000000000003800000000xfce4-docklike-plugin-20240306~git.da23d2a/src/Dock.cpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#include "Dock.hpp"
#ifdef ENABLE_X11
#include "Hotkeys.hpp"
#endif

namespace Dock
{
	GtkWidget* mBox;
	Store::KeyStore<std::shared_ptr<AppInfo>, std::shared_ptr<Group>> mGroups;

	int mPanelSize;
	int mIconSize;

	void init()
	{
		mBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
		gtk_widget_set_name(mBox, "docklike-plugin");

		if (Settings::dockSize)
			gtk_widget_set_size_request(mBox, Settings::dockSize, -1);

		gtk_widget_show(mBox);
		drawGroups();
	}

	Group* prepareGroup(std::shared_ptr<AppInfo> appInfo)
	{
		std::shared_ptr<Group> group = mGroups.get(appInfo);

		if (!group)
		{
			group = std::make_shared<Group>(appInfo, false);
			mGroups.push(appInfo, group);
			gtk_container_add(GTK_CONTAINER(mBox), group->mButton);
		}

		return group.get();
	}

	void moveButton(Group* moving, Group* dest)
	{
		int startpos = Help::Gtk::getChildPosition(GTK_CONTAINER(mBox), moving->mButton);
		int destpos = Help::Gtk::getChildPosition(GTK_CONTAINER(mBox), dest->mButton);

		if (startpos == destpos)
			return;

		gtk_box_reorder_child(GTK_BOX(mBox), moving->mButton, destpos);

		savePinned();
	}

	void savePinned()
	{
		std::list<std::string> pinnedList;
		GList* children = gtk_container_get_children(GTK_CONTAINER(mBox));

		for (GList* child = children; child != nullptr; child = child->next)
		{
			GtkWidget* widget = (GtkWidget*)child->data;
			Group* group = (Group*)g_object_get_data(G_OBJECT(widget), "group");

			if (group->mPinned && g_file_test(group->mAppInfo->path.c_str(), G_FILE_TEST_IS_REGULAR))
				pinnedList.push_back(group->mAppInfo->id);
		}

		Settings::pinnedAppList.set(pinnedList);
		g_list_free(children);
	}

	void drawGroups()
	{
		// Remove old groups
		Xfw::mGroupWindows.clear();
		mGroups.clear();

		// Add pinned groups
		std::list<std::string> pinnedApps = Settings::pinnedAppList;
		std::list<std::string>::iterator it = pinnedApps.begin();

		while (it != pinnedApps.end())
		{
			std::shared_ptr<AppInfo> appInfo = AppInfos::search(Help::String::toLowercase(*it));
			std::shared_ptr<Group> group = std::make_shared<Group>(appInfo, true);

			mGroups.push(appInfo, group);
			gtk_container_add(GTK_CONTAINER(mBox), group->mButton);
			++it;
		}

		// Add open windows
		for (GList* window_l = xfw_screen_get_windows(Xfw::mXfwScreen);
			 window_l != nullptr;
			 window_l = window_l->next)
		{
			XfwWindow* xfwWindow = XFW_WINDOW(window_l->data);
			std::shared_ptr<GroupWindow> groupWindow = Xfw::mGroupWindows.get(xfwWindow);

			if (!groupWindow)
				groupWindow = std::make_shared<GroupWindow>(xfwWindow);
			else
				gtk_container_add(GTK_CONTAINER(mBox), groupWindow->mGroup->mButton);

			Xfw::mGroupWindows.push(xfwWindow, groupWindow);
			groupWindow->updateState();
		}

		gtk_widget_queue_draw(mBox);
	}

	void hoverSupered(bool on)
	{
#ifdef ENABLE_X11
		if (GDK_IS_X11_DISPLAY(gdk_display_get_default()))
		{
			int grabbedKeys = Hotkeys::mGrabbedKeys;
			GList* children = gtk_container_get_children(GTK_CONTAINER(mBox));

			for (GList* child = children; child != nullptr && grabbedKeys; child = child->next)
			{
				GtkWidget* widget = (GtkWidget*)child->data;

				if (!gtk_widget_get_visible(widget))
					continue;

				--grabbedKeys;
			}

			g_list_free(children);
	  }
#endif
	}

	void activateGroup(int nb, guint32 timestamp)
	{
		int i = 0;
		GList* children = gtk_container_get_children(GTK_CONTAINER(mBox));

		for (GList* child = children; child != nullptr; child = child->next)
		{
			GtkWidget* widget = (GtkWidget*)child->data;

			if (gtk_widget_get_visible(widget))
			{
				if (i == nb)
				{
					Group* group = (Group*)g_object_get_data(G_OBJECT(widget), "group");

					if (group->mActive)
						group->scrollWindows(timestamp, GDK_SCROLL_DOWN);
					else if (group->mWindowsCount > 0)
						group->activate(timestamp);
					else
						group->mAppInfo->launch();

					return;
				}
				else
					++i;
			}
		}

		g_list_free(children);
	}

	void onPanelResize(int size)
	{
		if (size != -1)
			mPanelSize = size;

		gtk_box_set_spacing(GTK_BOX(mBox), mPanelSize / 10);

		if (Settings::forceIconSize)
			mIconSize = Settings::iconSize;
		else
		{
			if (mPanelSize <= 20)
				mIconSize = mPanelSize - 6;
			else if (mPanelSize <= 28)
				mIconSize = 16;
			else if (mPanelSize <= 38)
				mIconSize = 24;
			else if (mPanelSize <= 41)
				mIconSize = 32;
			else
				mIconSize = mPanelSize * 0.8;
		}

		mGroups.forEach([](std::pair<std::shared_ptr<AppInfo>, std::shared_ptr<Group>> g) -> void
			{ g.second->resize(); });
	}

	void onPanelOrientationChange(GtkOrientation orientation)
	{
		gtk_orientable_set_orientation(GTK_ORIENTABLE(mBox), orientation);

		if (Settings::dockSize)
		{
			if (orientation == GTK_ORIENTATION_HORIZONTAL)
				gtk_widget_set_size_request(mBox, Settings::dockSize, -1);
			else
				gtk_widget_set_size_request(mBox, -1, Settings::dockSize);
		}
	}
} // namespace Dock
07070100000032000081A400000000000000000000000165E8B85000000428000000000000000000000000000000000000003800000000xfce4-docklike-plugin-20240306~git.da23d2a/src/Dock.hpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#ifndef DOCK_HPP
#define DOCK_HPP

#include <gtk/gtk.h>
#include <libxfce4windowing/libxfce4windowing.h>

#include <iostream>
#include <string>

#include "GroupWindow.hpp"
#include "Helpers.hpp"
#include "Plugin.hpp"
#include "Settings.hpp"
#include "Store.tpp"
#include "Xfw.hpp"

class Group;

namespace Dock
{
	void init();

	Group* prepareGroup(std::shared_ptr<AppInfo> appInfo);

	void moveButton(Group* moving, Group* dest);
	void savePinned();
	void drawGroups();

	void hoverSupered(bool on);
	void activateGroup(int nb, guint32 timestamp);

	void onPanelResize(int size = -1);
	void onPanelOrientationChange(GtkOrientation orientation);

	extern GtkWidget* mBox;
	extern Store::KeyStore<std::shared_ptr<AppInfo>, std::shared_ptr<Group>> mGroups;

	extern int mPanelSize;
	extern int mIconSize;
} // namespace Dock

#endif // DOCK_HPP
07070100000033000081A400000000000000000000000165E8B85000006677000000000000000000000000000000000000003900000000xfce4-docklike-plugin-20240306~git.da23d2a/src/Group.cpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#include "Group.hpp"

static GtkTargetEntry entries[1] = {{(gchar*)"application/docklike_group", 0, 0}};
static GtkTargetList* targetList = gtk_target_list_new(entries, 1);

Group::Group(std::shared_ptr<AppInfo> appInfo, bool pinned) : mGroupMenu(this)
{
	mIconPixbuf = nullptr;
	mAppInfo = appInfo;
	mPinned = pinned;
	mTopWindowIndex = 0;
	mActive = false;

	//--------------------------------------------------

	mWindowsCount.setup(
		0,
		[this]() -> uint {
			uint count = 0;
			
			mWindows.findIf([&count](GroupWindow* e) -> bool {
				if (!e->getState(XFW_WINDOW_STATE_SKIP_TASKLIST))
					++count;
			return false;
		
		}); return count; },
		[this](uint windowsCount) -> void { updateStyle(); });

	mLeaveTimeout.setup(40, [this]() {
		uint distance = mGroupMenu.getPointerDistance();

		if (distance >= mTolerablePointerDistance)
		{
			onMouseLeave();
			return false;
		}

		mTolerablePointerDistance -= 10;
		return true;
	});

	mMenuShowTimeout.setup(90, [this]() {
		onMouseEnter();
		return false;
	});

	//--------------------------------------------------

	mButton = GTK_WIDGET(g_object_ref(gtk_button_new()));
	mImage = gtk_image_new();
	mLabel = gtk_label_new("");
	GtkWidget* overlay = gtk_overlay_new();

	// The button contains a GtkOverlay, so that the label can be placed on top of the image.
	gtk_label_set_use_markup(GTK_LABEL(mLabel), true);
	gtk_container_add(GTK_CONTAINER(overlay), mImage);
	gtk_overlay_add_overlay(GTK_OVERLAY(overlay), mLabel);
	gtk_widget_set_halign(mLabel, GTK_ALIGN_START);
	gtk_widget_set_valign(mLabel, GTK_ALIGN_START);
	gtk_overlay_set_overlay_pass_through(GTK_OVERLAY(overlay), mLabel, true);
	gtk_container_add(GTK_CONTAINER(mButton), overlay);

	Help::Gtk::cssClassAdd(mButton, "flat");
	Help::Gtk::cssClassAdd(mButton, "group");
	Help::Gtk::cssClassAdd(mLabel, "window_count");

	g_object_set_data(G_OBJECT(mButton), "group", this);
	gtk_button_set_relief(GTK_BUTTON(mButton), GTK_RELIEF_NONE);
	gtk_drag_dest_set(mButton, GTK_DEST_DEFAULT_DROP, entries, 1, GDK_ACTION_MOVE);
	gtk_widget_add_events(mButton, GDK_SCROLL_MASK);

	//--------------------------------------------------

	g_signal_connect(G_OBJECT(mButton), "button-press-event",
		G_CALLBACK(+[](GtkWidget* widget, GdkEventButton* event, Group* me) {
			if (event->button != GDK_BUTTON_SECONDARY && event->state & GDK_CONTROL_MASK)
				gtk_drag_begin_with_coordinates(widget, targetList, GDK_ACTION_MOVE, event->button, (GdkEvent*)event, -1, -1);

			if (event->state & GDK_CONTROL_MASK)
			{
				me->mGroupMenu.hide();
				return false;
			}

			me->onButtonPress(event);
			return true;
		}),
		this);

	g_signal_connect(G_OBJECT(mButton), "button-release-event",
		G_CALLBACK(+[](GtkWidget* widget, GdkEventButton* event, Group* me) {
			if (event->button != GDK_BUTTON_PRIMARY && event->button != GDK_BUTTON_MIDDLE)
				return false;
			me->onButtonRelease(event);
			return true;
		}),
		this);

	g_signal_connect(G_OBJECT(mButton), "scroll-event",
		G_CALLBACK(+[](GtkWidget* widget, GdkEventScroll* event, Group* me) {
			me->scrollWindows(event->time, event->direction);
			return true;
		}),
		this);

	g_signal_connect(G_OBJECT(mButton), "drag-begin",
		G_CALLBACK(+[](GtkWidget* widget, GdkDragContext* context, Group* me) {
			me->onDragBegin(context);
		}),
		this);

	g_signal_connect(G_OBJECT(mButton), "drag-motion",
		G_CALLBACK(+[](GtkWidget* widget, GdkDragContext* context, gint x, gint y, guint time, Group* me) {
			return me->onDragMotion(widget, context, x, y, time);
		}),
		this);

	g_signal_connect(G_OBJECT(mButton), "drag-leave",
		G_CALLBACK(+[](GtkWidget* widget, GdkDragContext* context, guint time, Group* me) {
			me->onDragLeave(context, time);
		}),
		this);

	g_signal_connect(G_OBJECT(mButton), "drag-data-get",
		G_CALLBACK(+[](GtkWidget* widget, GdkDragContext* context, GtkSelectionData* data, guint info, guint time, Group* me) {
			me->onDragDataGet(context, data, info, time);
		}),
		this);

	g_signal_connect(G_OBJECT(mButton), "drag-data-received",
		G_CALLBACK(+[](GtkWidget* widget, GdkDragContext* context, gint x, gint y, GtkSelectionData* data, guint info, guint time, Group* me) {
			me->onDragDataReceived(context, x, y, data, info, time);
		}),
		this);

	g_signal_connect(G_OBJECT(mButton), "enter-notify-event",
		G_CALLBACK(+[](GtkWidget* widget, GdkEventCrossing* event, Group* me) {
			Help::Gtk::cssClassAdd(me->mButton, "hover_group");
			me->mLeaveTimeout.stop();
			me->mMenuShowTimeout.start();

			if (Settings::showPreviews)
				me->mWindows.forEach([](GroupWindow* w) -> void {
					w->mGroupMenuItem->mPreviewTimeout.start();
				});

			return false;
		}),
		this);

	g_signal_connect(G_OBJECT(mButton), "leave-notify-event",
		G_CALLBACK(+[](GtkWidget* widget, GdkEventCrossing* event, Group* me) {
			Help::Gtk::cssClassRemove(me->mButton, "hover_group");
			me->mMenuShowTimeout.stop();

			if (me->mPinned && !me->mWindowsCount)
				me->onMouseLeave();
			else
				me->setMouseLeaveTimeout();

			if (Settings::showPreviews)
				me->mWindows.forEach([](GroupWindow* w) -> void {
					w->mGroupMenuItem->mPreviewTimeout.stop();
				});

			return false;
		}),
		this);

	g_signal_connect(G_OBJECT(mButton), "draw",
		G_CALLBACK(+[](GtkWidget* widget, cairo_t* cr, Group* me) {
			me->onDraw(cr);
			return false;
		}),
		this);

	//--------------------------------------------------

	if (mPinned)
		gtk_widget_show_all(mButton);

	if (mAppInfo != nullptr && !mAppInfo->icon.empty())
	{
		if (mAppInfo->icon[0] == '/' && g_file_test(mAppInfo->icon.c_str(), G_FILE_TEST_IS_REGULAR))
			mIconPixbuf = gdk_pixbuf_new_from_file(mAppInfo->icon.c_str(), nullptr);
		else
			gtk_image_set_from_icon_name(GTK_IMAGE(mImage), mAppInfo->icon.c_str(), GTK_ICON_SIZE_BUTTON);
	}
	else
		gtk_image_set_from_icon_name(GTK_IMAGE(mImage), "application-x-executable", GTK_ICON_SIZE_BUTTON);

	resize();
	updateStyle();
}

Group::~Group()
{
	mLeaveTimeout.stop();
	mMenuShowTimeout.stop();

	// can be unparented before the group is destroyed on exit
	if (gtk_widget_get_parent(mButton) != nullptr)
		gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(mButton)), mButton);
	g_object_unref(mButton);

	if (mIconPixbuf != nullptr)
		g_object_unref(mIconPixbuf);
}

void Group::add(GroupWindow* window)
{
	mWindows.push(window);
	mWindowsCount.updateState();
	mGroupMenu.add(window->mGroupMenuItem);
	Help::Gtk::cssClassAdd(mButton, "open_group");

	if (mWindowsCount == 1 && !mPinned)
		gtk_box_reorder_child(GTK_BOX(Dock::mBox), mButton, -1);

	if (!mActive && xfw_window_is_active(window->mXfwWindow))
		onWindowActivate(window);

	gtk_widget_queue_draw(mButton);
}

void Group::remove(GroupWindow* window)
{
	mWindows.pop(window);
	mWindowsCount.updateState();
	mGroupMenu.remove(window->mGroupMenuItem);

	if (!mWindowsCount)
		Help::Gtk::cssClassRemove(mButton, "open_group");

	gtk_widget_queue_draw(mButton);
}

void Group::activate(guint32 timestamp)
{
	if (!mWindowsCount)
		return;

	GroupWindow* groupWindow = mWindows.get(mTopWindowIndex);

	mWindows.forEach([&timestamp, &groupWindow](GroupWindow* w) -> void {
		if (w != groupWindow)
			w->activate(timestamp);
	});

	groupWindow->activate(timestamp);
}

void Group::scrollWindows(guint32 timestamp, GdkScrollDirection direction)
{
	if (mPinned && !mWindowsCount)
		return;

	if (!mActive)
		mWindows.get(mTopWindowIndex)->activate(timestamp);
	else
	{
		if (direction == GDK_SCROLL_UP)
			mTopWindowIndex = (mTopWindowIndex + 1) % mWindows.size();
		else if (direction == GDK_SCROLL_DOWN)
		{
			int size = mWindows.size();
			mTopWindowIndex = (mTopWindowIndex - 1 + size) % size;
		}
		mWindows.get(mTopWindowIndex)->activate(timestamp);
	}
}

void Group::closeAll()
{
	mWindows.forEach([](GroupWindow* w) -> void {
		if (!w->getState(XFW_WINDOW_STATE_SKIP_TASKLIST))
			Xfw::close(w, 0);
	});
}

void Group::resize()
{
	// TODO: set `min-width` / `min-height` CSS property on button?
	// https://github.com/davekeogh/xfce4-docklike-plugin/issues/39
	
	if (mIconPixbuf != nullptr)
	{
		gint scale_factor = gtk_widget_get_scale_factor(mButton);
		gint size = Dock::mIconSize * scale_factor;
		GdkPixbuf* scaled = gdk_pixbuf_scale_simple(mIconPixbuf, size, size, GDK_INTERP_BILINEAR);
		cairo_surface_t* surface = gdk_cairo_surface_create_from_pixbuf(scaled, scale_factor, NULL);
		gtk_image_set_from_surface(GTK_IMAGE(mImage), surface);
		cairo_surface_destroy (surface);
		g_object_unref(scaled);
	}
	else
		gtk_image_set_pixel_size(GTK_IMAGE(mImage), Dock::mIconSize);

	gtk_widget_set_valign(mImage, GTK_ALIGN_CENTER);
	gtk_widget_queue_draw(mButton);
}

void Group::onDraw(cairo_t* cr)
{
	int w = gtk_widget_get_allocated_width(mButton);
	int h = gtk_widget_get_allocated_height(mButton);

	double rgba[4];

	if (Settings::indicatorColorFromTheme)
	{
		GtkWidget* menu = gtk_menu_new();
		GtkStyleContext* sc = gtk_widget_get_style_context(menu);

		GValue gv = G_VALUE_INIT;
		gtk_style_context_get_property(sc, "color", GTK_STATE_FLAG_NORMAL, &gv);
		GdkRGBA* indicatorColor = (GdkRGBA*)g_value_get_boxed(&gv);

		gtk_widget_destroy(menu);

		rgba[0] = (*indicatorColor).red;
		rgba[1] = (*indicatorColor).green;
		rgba[2] = (*indicatorColor).blue;
		rgba[3] = (*indicatorColor).alpha;
		g_value_unset(&gv);
	}
	else
	{
		std::shared_ptr<GdkRGBA> color;
		if (mActive)
			color = Settings::indicatorColor;
		else
			color = Settings::inactiveColor;

		rgba[0] = color->red;
		rgba[1] = color->green;
		rgba[2] = color->blue;
		rgba[3] = color->alpha;
	}

	const float BAR_WEIGHT = 0.935;
	const double DOT_RADIUS = h * 0.065;
	const double CIRCLE_WEIGHT = 0.0375;

	int orientation = Settings::indicatorOrientation;
	// Orientation based on panel mode and position
	// Mimics Windows 10 style, indicator stays on outside
	// TODO: make this a hidden setting now
	if (orientation == ORIENTATION_AUTOMATIC)
	{
		XfcePanelPluginMode panelMode = xfce_panel_plugin_get_mode(Plugin::mXfPlugin);
		XfceScreenPosition screenPosition = xfce_panel_plugin_get_screen_position(Plugin::mXfPlugin);

		if (panelMode == XFCE_PANEL_PLUGIN_MODE_VERTICAL || panelMode == XFCE_PANEL_PLUGIN_MODE_DESKBAR)
		{
			if (xfce_screen_position_is_left(screenPosition))
				orientation = ORIENTATION_LEFT;
			else if (xfce_screen_position_is_right(screenPosition))
				orientation = ORIENTATION_RIGHT;
		}
		else
		{
			if (xfce_screen_position_is_top(screenPosition))
				orientation = ORIENTATION_TOP;
			else if (xfce_screen_position_is_bottom(screenPosition))
				orientation = ORIENTATION_BOTTOM;
		}
	}
	
	int indicator_style = Settings::inactiveIndicatorStyle;
	if (mActive)
		indicator_style = Settings::indicatorStyle;

	switch (indicator_style)
	{
	case STYLE_NONE:
		break;

	case STYLE_BARS:
	{
		if (mWindowsCount > 0)
		{
			cairo_set_source_rgba(cr, rgba[0], rgba[1], rgba[2], rgba[3]);

			if (orientation == ORIENTATION_BOTTOM)
				cairo_rectangle(cr, 0, round(h * BAR_WEIGHT), w, h - round(h * BAR_WEIGHT));
			else if (orientation == ORIENTATION_RIGHT)
				cairo_rectangle(cr, round(w * BAR_WEIGHT), 0, w - round(w * BAR_WEIGHT), h);
			else if (orientation == ORIENTATION_TOP)
				cairo_rectangle(cr, 0, 0, w, round(h * (1 - BAR_WEIGHT)));
			else if (orientation == ORIENTATION_LEFT)
				cairo_rectangle(cr, 0, 0, round(w * (1 - BAR_WEIGHT)), h);

			cairo_fill(cr);
		}

		if (mWindowsCount > 1)
		{
			int pat0;
			cairo_pattern_t* pat;

			if (orientation == ORIENTATION_BOTTOM || orientation == ORIENTATION_TOP)
			{
				pat0 = (int)w * 0.88;
				pat = cairo_pattern_create_linear(pat0, 0, w, 0);
			}
			else
			{
				pat0 = (int)h * 0.90;
				pat = cairo_pattern_create_linear(0, pat0, 0, h);
			}

			cairo_pattern_add_color_stop_rgba(pat, 0.0, 0, 0, 0, 0.45);
			cairo_pattern_add_color_stop_rgba(pat, 0.1, 0, 0, 0, 0.35);
			cairo_pattern_add_color_stop_rgba(pat, 0.3, 0, 0, 0, 0.15);

			if (orientation == ORIENTATION_BOTTOM)
				cairo_rectangle(cr, pat0, round(h * BAR_WEIGHT), w - pat0, round(h * (1 - BAR_WEIGHT)));
			else if (orientation == ORIENTATION_RIGHT)
				cairo_rectangle(cr, round(w * BAR_WEIGHT), pat0, round(w * (1 - BAR_WEIGHT)), h - pat0);
			else if (orientation == ORIENTATION_TOP)
				cairo_rectangle(cr, pat0, 0, w - pat0, round(h * (1 - BAR_WEIGHT)));
			else if (orientation == ORIENTATION_LEFT)
				cairo_rectangle(cr, 0, pat0, round(w * (1 - BAR_WEIGHT)), h - pat0);

			cairo_set_source(cr, pat);
			cairo_fill(cr);
			cairo_pattern_destroy(pat);
		}
		break;
	}

	case STYLE_CILIORA:
	{
		if (mWindowsCount > 0)
		{
		    int offset;
			cairo_set_source_rgba(cr, rgba[0], rgba[1], rgba[2], rgba[3]);
			
			offset = 0;
			
			if (mWindowsCount > 1) {
			    if (orientation == ORIENTATION_BOTTOM || orientation == ORIENTATION_TOP) {
			        offset = 2 * (round(h * (1 - BAR_WEIGHT)));
			    } else {
			        offset = (2 * (round(w * (1 - BAR_WEIGHT))));
			    }
			}

			if (orientation == ORIENTATION_BOTTOM)
				cairo_rectangle(cr, 0, round(h * BAR_WEIGHT), w - offset, round(h * (1 - BAR_WEIGHT)));
			else if (orientation == ORIENTATION_RIGHT)
				cairo_rectangle(cr, round(w * BAR_WEIGHT), 0, round(w * (1 - BAR_WEIGHT)), h - offset);
			else if (orientation == ORIENTATION_TOP)
				cairo_rectangle(cr, 0, 0, w - offset, round(h * (1 - BAR_WEIGHT)));
			else if (orientation == ORIENTATION_LEFT)
				cairo_rectangle(cr, 0, 0, round(w * (1 - BAR_WEIGHT)), h - offset);

			cairo_fill(cr);
		}

		if (mWindowsCount > 1)
		{
		    int size;
			cairo_set_source_rgba(cr, rgba[0], rgba[1], rgba[2], rgba[3]);
			
			if (orientation == ORIENTATION_BOTTOM || orientation == ORIENTATION_TOP) {
			    size = round(h * (1 - BAR_WEIGHT));
			} else {
			    size = round(w * (1 - BAR_WEIGHT));
			}
			
			
			if (orientation == ORIENTATION_BOTTOM)
				cairo_rectangle(cr, w - size, round(h * BAR_WEIGHT), size, size);
			else if (orientation == ORIENTATION_RIGHT)
				cairo_rectangle(cr, round(w * BAR_WEIGHT), h - size, size, size);
			else if (orientation == ORIENTATION_TOP)
				cairo_rectangle(cr, w - size, 0, size, size);
			else if (orientation == ORIENTATION_LEFT)
				cairo_rectangle(cr, 0, h - size, size, size);

			cairo_fill(cr);
		}
		break;
	}

	case STYLE_CIRCLES:
	{
		if (mWindowsCount > 0)
		{
			if (mWindowsCount > 1)
			{
				double x0 = 0, y0 = 0, x1 = 0, y1 = 0, radius = 0;

				if (orientation == ORIENTATION_BOTTOM)
				{
					radius = h * CIRCLE_WEIGHT;
					x0 = (w / 2.) - radius * 1.5;
					x1 = (w / 2.) + radius * 1.5;
					y0 = y1 = h - radius;
				}
				else if (orientation == ORIENTATION_RIGHT)
				{
					radius = w * CIRCLE_WEIGHT;
					y0 = (h / 2.) - radius * 1.5;
					y1 = (h / 2.) + radius * 1.5;
					x0 = x1 = w - radius;
				}
				else if (orientation == ORIENTATION_TOP)
				{
					radius = h * CIRCLE_WEIGHT;
					x0 = (w / 2.) - radius * 1.5;
					x1 = (w / 2.) + radius * 1.5;
					y0 = y1 = radius;
				}
				else if (orientation == ORIENTATION_LEFT)
				{
					radius = w * CIRCLE_WEIGHT;
					y0 = (h / 2.) - radius * 1.5;
					y1 = (h / 2.) + radius * 1.5;
					x0 = x1 = radius;
				}

				cairo_set_source_rgba(cr, rgba[0], rgba[1], rgba[2], rgba[3]);

				cairo_arc(cr, x0, y0, radius, 0.0, 2.0 * M_PI);
				cairo_fill(cr);

				cairo_set_source_rgba(cr, rgba[0], rgba[1], rgba[2], rgba[3]);

				cairo_arc(cr, x1, y1, radius, 0.0, 2.0 * M_PI);
				cairo_fill(cr);
			}
			else
			{
				double x = 0, y = 0, radius = 0;

				if (orientation == ORIENTATION_BOTTOM)
				{
					radius = h * CIRCLE_WEIGHT;
					x = (w / 2.);
					y = h - radius;
				}
				else if (orientation == ORIENTATION_RIGHT)
				{
					radius = w * CIRCLE_WEIGHT;
					x = w - radius;
					y = (h / 2.);
				}
				else if (orientation == ORIENTATION_TOP)
				{
					radius = h * CIRCLE_WEIGHT;
					x = (w / 2.);
					y = radius;
				}
				else if (orientation == ORIENTATION_LEFT)
				{
					radius = w * CIRCLE_WEIGHT;
					x = radius;
					y = (h / 2.);
				}

				cairo_set_source_rgba(cr, rgba[0], rgba[1], rgba[2], rgba[3]);

				cairo_arc(cr, x, y, radius, 0.0, 2.0 * M_PI);
				cairo_fill(cr);
			}
		}
		break;
	}

	case STYLE_DOTS:
	{
		if (mWindowsCount > 0)
		{
			if (mWindowsCount > 1)
			{
				double x0 = 0, y0 = 0, x1 = 0, y1 = 0;

				if (orientation == ORIENTATION_BOTTOM)
				{
					x0 = (w / 2.) - DOT_RADIUS * 1.3;
					x1 = (w / 2.) + DOT_RADIUS * 1.3;
					y0 = y1 = h * 0.99;
				}
				else if (orientation == ORIENTATION_RIGHT)
				{
					y0 = (h / 2.) - DOT_RADIUS * 1.3;
					y1 = (h / 2.) + DOT_RADIUS * 1.3;
					x0 = x1 = w * 0.99;
				}
				else if (orientation == ORIENTATION_TOP)
				{
					x0 = (w / 2.) - DOT_RADIUS * 1.3;
					x1 = (w / 2.) + DOT_RADIUS * 1.3;
					y0 = y1 = h * 0.01;
				}
				else if (orientation == ORIENTATION_LEFT)
				{
					y0 = (h / 2.) - DOT_RADIUS * 1.3;
					y1 = (h / 2.) + DOT_RADIUS * 1.3;
					x0 = x1 = w * 0.01;
				}

				cairo_pattern_t* pat = cairo_pattern_create_radial(x0, y0, 0, x0, y0, DOT_RADIUS);
				cairo_pattern_add_color_stop_rgba(pat, 0.4, rgba[0], rgba[1], rgba[2], rgba[3]);
				cairo_pattern_add_color_stop_rgba(pat, 1, rgba[0], rgba[1], rgba[2], rgba[3]);
				cairo_set_source(cr, pat);

				cairo_arc(cr, x0, y0, DOT_RADIUS, 0.0, 2.0 * M_PI);
				cairo_fill(cr);

				cairo_pattern_destroy(pat);

				pat = cairo_pattern_create_radial(x1, y1, 0, x1, y1, DOT_RADIUS);
				cairo_pattern_add_color_stop_rgba(pat, 0.4, rgba[0], rgba[1], rgba[2], rgba[3]);
				cairo_pattern_add_color_stop_rgba(pat, 1, rgba[0], rgba[1], rgba[2], rgba[3]);
				cairo_set_source(cr, pat);

				cairo_arc(cr, x1, y1, DOT_RADIUS, 0.0, 2.0 * M_PI);
				cairo_fill(cr);

				cairo_pattern_destroy(pat);
			}
			else
			{
				double x = 0, y = 0;

				if (orientation == ORIENTATION_BOTTOM)
				{
					x = (w / 2.);
					y = h * 0.99;
				}
				else if (orientation == ORIENTATION_RIGHT)
				{
					x = w * 0.99;
					y = (h / 2.);
				}
				else if (orientation == ORIENTATION_TOP)
				{
					x = (w / 2.);
					y = h * 0.01;
				}
				else if (orientation == ORIENTATION_LEFT)
				{
					x = w * 0.01;
					y = (h / 2.);
				}

				cairo_pattern_t* pat = cairo_pattern_create_radial(x, y, 0, x, y, DOT_RADIUS);
				cairo_pattern_add_color_stop_rgba(pat, 0.4, rgba[0], rgba[1], rgba[2], rgba[3]);
				cairo_pattern_add_color_stop_rgba(pat, 1, rgba[0], rgba[1], rgba[2], rgba[3]);
				cairo_set_source(cr, pat);

				cairo_arc(cr, x, y, DOT_RADIUS, 0.0, 2.0 * M_PI);
				cairo_fill(cr);

				cairo_pattern_destroy(pat);
			}
		}
		break;
	}

	case STYLE_RECTS:
	{
		if (mWindowsCount > 0)
		{
			int vw;

			if (orientation == ORIENTATION_BOTTOM || orientation == ORIENTATION_TOP)
				vw = w;
			else
				vw = h;

			if (mWindowsCount > 1)
			{
				int space = floor(vw / 4.5);
				int sep = vw / 11.;
				sep = std::max(sep - (sep % 2) + (vw % 2), 2);

				cairo_set_source_rgba(cr, rgba[0], rgba[1], rgba[2], rgba[3]);

				if (orientation == ORIENTATION_BOTTOM)
				{
					cairo_rectangle(cr, w / 2. - sep / 2. - space, round(h * BAR_WEIGHT), space, round(h * (1 - BAR_WEIGHT)));
					cairo_rectangle(cr, w / 2. + sep / 2., round(h * BAR_WEIGHT), space, round(h * (1 - BAR_WEIGHT)));
				}
				else if (orientation == ORIENTATION_RIGHT)
				{
					cairo_rectangle(cr, round(w * BAR_WEIGHT), h / 2. - sep / 2. - space, round(w * (1 - BAR_WEIGHT)), space);
					cairo_rectangle(cr, round(w * BAR_WEIGHT), h / 2. + sep / 2., round(w * (1 - BAR_WEIGHT)), space);
				}
				else if (orientation == ORIENTATION_TOP)
				{
					cairo_rectangle(cr, w / 2. - sep / 2. - space, 0, space, round(h * (1 - BAR_WEIGHT)));
					cairo_rectangle(cr, w / 2. + sep / 2., 0, space, round(h * (1 - BAR_WEIGHT)));
				}
				else if (orientation == ORIENTATION_LEFT)
				{
					cairo_rectangle(cr, 0, h / 2. - sep / 2. - space, round(w * (1 - BAR_WEIGHT)), space);
					cairo_rectangle(cr, 0, h / 2. + sep / 2., round(w * (1 - BAR_WEIGHT)), space);
				}

				cairo_fill(cr);
			}
			else
			{
				int space = floor(vw / 4.5);
				space = space + (space % 2) + (vw % 2);
				int start = (vw - space) / 2;

				cairo_set_source_rgba(cr, rgba[0], rgba[1], rgba[2], rgba[3]);

				if (orientation == ORIENTATION_BOTTOM)
					cairo_rectangle(cr, start, round(h * BAR_WEIGHT), space, round(h * (1 - BAR_WEIGHT)));
				else if (orientation == ORIENTATION_RIGHT)
					cairo_rectangle(cr, round(w * BAR_WEIGHT), start, round(w * (1 - BAR_WEIGHT)), space);
				else if (orientation == ORIENTATION_TOP)
					cairo_rectangle(cr, start, 0, space, round(h * (1 - BAR_WEIGHT)));
				else if (orientation == ORIENTATION_LEFT)
					cairo_rectangle(cr, 0, start, round(w * (1 - BAR_WEIGHT)), space);

				cairo_fill(cr);
			}
		}
		break;
	}
	}
}

void Group::onMouseEnter()
{
	Dock::mGroups.forEach([this](std::pair<std::shared_ptr<AppInfo>, std::shared_ptr<Group>> g) -> void {
		if (&(g.second->mGroupMenu) != &(this->mGroupMenu))
			g.second->mGroupMenu.mGroup->onMouseLeave();
	});

	mGroupMenu.popup();
}

void Group::onMouseLeave()
{
	if (!mGroupMenu.mMouseHover)
		mGroupMenu.hide();
}

void Group::setMouseLeaveTimeout()
{
	mTolerablePointerDistance = 200;
	mLeaveTimeout.start();
}

void Group::updateStyle()
{
	if (mPinned || mWindowsCount > 0)
		gtk_widget_show_all(mButton);
	else
		gtk_widget_hide(mButton);

	if (mWindowsCount > 0)
	{
		if (mWindowsCount == 1 && Settings::noWindowsListIfSingle)
			gtk_widget_set_tooltip_text(mButton, mAppInfo->name.c_str());
		else
			gtk_widget_set_tooltip_text(mButton, nullptr);

		if (mWindowsCount > 2 && Settings::showWindowCount)
		{
			gchar* markup = g_strdup_printf("<b>%d</b>", (int)mWindowsCount);
			gtk_label_set_markup(GTK_LABEL(mLabel), markup);
			g_free(markup);
		}
		else
			gtk_label_set_markup(GTK_LABEL(mLabel), "");
	}
	else
	{
		gtk_widget_set_tooltip_text(mButton, mAppInfo->name.c_str());
	}
}

void Group::electNewTopWindow()
{
	if (mWindows.size() > 0)
	{
		GroupWindow* newTopWindow;

		if (mWindows.size() == 1)
			newTopWindow = mWindows.get(0);
		else
			newTopWindow = Xfw::mGroupWindows.findIf([this](std::pair<XfwWindow*, std::shared_ptr<GroupWindow>> e) -> bool {
				if (e.second->mGroup == this)
					return true;
				return false;
			}).get();

		setTopWindow(newTopWindow);
	}
}

void Group::onWindowActivate(GroupWindow* groupWindow)
{
	mActive = true;
	setTopWindow(groupWindow);
	Help::Gtk::cssClassAdd(mButton, "active_group");
}

void Group::onWindowUnactivate()
{
	mActive = false;
	Help::Gtk::cssClassRemove(mButton, "active_group");
}

void Group::setTopWindow(GroupWindow* groupWindow)
{
	mTopWindowIndex = mWindows.getIndex(groupWindow);
}

void Group::onButtonPress(GdkEventButton* event)
{
	if (event->button == GDK_BUTTON_SECONDARY)
	{
		std::shared_ptr<GroupWindow> win = Xfw::mGroupWindows.findIf([this](std::pair<XfwWindow*, std::shared_ptr<GroupWindow>> e) -> bool {
			return (e.second->mGroupAssociated && e.second->mGroup == this);
		});

		if (!win && !mPinned)
			return;

		if (mButton != nullptr)
		{
			GtkWidget* menu = GTK_WIDGET(g_object_ref_sink(Xfw::buildActionMenu(win.get(), this)));
			xfce_panel_plugin_register_menu(Plugin::mXfPlugin, GTK_MENU(menu));
			g_signal_connect(menu, "deactivate", G_CALLBACK(g_object_unref), nullptr);
			gtk_menu_popup_at_widget(GTK_MENU(menu), mButton, GDK_GRAVITY_SOUTH_WEST, GDK_GRAVITY_NORTH_WEST, (GdkEvent*)event);
		}

		mGroupMenu.hide();
	}
}

void Group::onButtonRelease(GdkEventButton* event)
{
	if (event->button == GDK_BUTTON_MIDDLE)
	{
		switch(Settings::middleButtonBehavior)
		{
			case BEHAVIOR_CLOSE_ALL:
			{
				closeAll();
				break;
			}
			case BEHAVIOR_LAUNCH_NEW:
			{
				mAppInfo->launch();
				break;
			}
			case BEHAVIOR_DO_NOTHING:
			{
				break;
			}
		}
	}
	else if (event->state & GDK_SHIFT_MASK || (mPinned && !mWindowsCount))
		mAppInfo->launch();
	else if (mActive)
		mWindows.get(mTopWindowIndex)->minimize();
	else
		activate(event->time);
}

bool Group::onDragMotion(GtkWidget* widget, GdkDragContext* context, int x, int y, guint time)
{
	GdkModifierType mask;
	GdkDevice* device = gdk_drag_context_get_device(context);
	gdk_window_get_device_position(gtk_widget_get_window(widget), device, nullptr, nullptr, &mask);

	if (mask & GDK_CONTROL_MASK)
		gtk_drag_cancel(context);

	GList* tmp_list = gdk_drag_context_list_targets(context);

	if (tmp_list != nullptr)
	{
		gchar* name = gdk_atom_name(GDK_POINTER_TO_ATOM(tmp_list->data));
		std::string target = name;
		g_free(name);

		if (target != "application/docklike_group")
		{
			if (mWindowsCount)
			{
				GroupWindow* groupWindow = mWindows.get(mTopWindowIndex);
				groupWindow->activate(time);

				if (!mGroupMenu.mVisible)
					onMouseEnter();
			}

			gdk_drag_status(context, GDK_ACTION_DEFAULT, time);
			return true;
		}
	}

	gtk_drag_highlight(mButton);
	gdk_drag_status(context, GDK_ACTION_MOVE, time);
	return true;
}

void Group::onDragLeave(const GdkDragContext* context, guint time)
{
	gtk_drag_unhighlight(mButton);
}

void Group::onDragDataGet(const GdkDragContext* context, GtkSelectionData* selectionData, guint info, guint time)
{
	gtk_selection_data_set(selectionData, gdk_atom_intern("button", false), 32, (const guchar*)this, sizeof(gpointer) * 32);
}

void Group::onDragDataReceived(const GdkDragContext* context, int x, int y, const GtkSelectionData* selectionData, guint info, guint time)
{
	Dock::moveButton((Group*)gtk_selection_data_get_data(selectionData), this);
}

void Group::onDragBegin(GdkDragContext* context)
{
	if (mIconPixbuf != nullptr)
	{
		gint scale_factor = gtk_widget_get_scale_factor(mButton);
		gint size;
		if (!gtk_icon_size_lookup(GTK_ICON_SIZE_DND, &size, NULL))
			size = 32;
		size *= scale_factor;
		GdkPixbuf* scaled = gdk_pixbuf_scale_simple(mIconPixbuf, size, size, GDK_INTERP_BILINEAR);
		cairo_surface_t* surface = gdk_cairo_surface_create_from_pixbuf(scaled, scale_factor, NULL);
		gtk_drag_set_icon_surface(context, surface);
		cairo_surface_destroy (surface);
		g_object_unref(scaled);
	}
	else
	{
		const gchar *icon_name;
		gtk_image_get_icon_name(GTK_IMAGE(mImage), &icon_name, nullptr);
		gtk_drag_set_icon_name(context, icon_name, 0, 0);
	}
}
07070100000034000081A400000000000000000000000165E8B85000000918000000000000000000000000000000000000003900000000xfce4-docklike-plugin-20240306~git.da23d2a/src/Group.hpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#ifndef GROUP_HPP
#define GROUP_HPP

#include <gtk/gtk.h>

#include <algorithm>
#include <iostream>
#include <math.h>

#include "AppInfos.hpp"
#include "GroupMenu.hpp"
#include "GroupWindow.hpp"
#include "Helpers.hpp"
#include "State.tpp"

enum MiddleButtonBehavior
{
	BEHAVIOR_CLOSE_ALL,
	BEHAVIOR_LAUNCH_NEW,
	BEHAVIOR_DO_NOTHING
};

enum IndicatorOrientation
{
	ORIENTATION_AUTOMATIC,
	ORIENTATION_BOTTOM,
	ORIENTATION_RIGHT,
	ORIENTATION_TOP,
	ORIENTATION_LEFT,
};

enum IndicatorStyle
{
	STYLE_BARS,
	STYLE_DOTS,
	STYLE_RECTS,
	STYLE_CILIORA,
	STYLE_CIRCLES,
	STYLE_NONE
};

class GroupWindow;

class Group
{
  public:
	Group(std::shared_ptr<AppInfo> appInfo, bool pinned);
	~Group();

	void add(GroupWindow* window);
	void remove(GroupWindow* window);
	void electNewTopWindow();
	void setTopWindow(GroupWindow* groupWindow);

	void activate(guint32 timestamp);
	void scrollWindows(guint32 timestamp, GdkScrollDirection direction);
	void closeAll();

	void resize();
	void updateStyle();

	void onDraw(cairo_t* cr);
	void onWindowActivate(GroupWindow* groupWindow);
	void onWindowUnactivate();
	void onButtonPress(GdkEventButton* event);
	void onButtonRelease(GdkEventButton* event);
	void onMouseEnter();
	void onMouseLeave();
	void setMouseLeaveTimeout();
	bool onDragMotion(GtkWidget* widget, GdkDragContext* context, int x, int y, guint time);
	void onDragLeave(const GdkDragContext* context, guint time);
	void onDragDataGet(const GdkDragContext* context, GtkSelectionData* selectionData, guint info, guint time);
	void onDragDataReceived(const GdkDragContext* context, int x, int y, const GtkSelectionData* selectionData, guint info, guint time);
	void onDragBegin(GdkDragContext* context);

	bool mPinned;
	bool mActive;

	uint mTolerablePointerDistance;
	uint mTopWindowIndex;
	Store::List<GroupWindow*> mWindows;
	LogicalState<uint> mWindowsCount;

	std::shared_ptr<AppInfo> mAppInfo;
	GroupMenu mGroupMenu;

	GtkWidget* mButton;
	GtkWidget* mLabel;
	GtkWidget* mImage;
	GdkPixbuf* mIconPixbuf;

	Help::Gtk::Timeout mLeaveTimeout;
	Help::Gtk::Timeout mMenuShowTimeout;
};

#endif // GROUP_HPP
07070100000035000081A400000000000000000000000165E8B8500000187F000000000000000000000000000000000000003D00000000xfce4-docklike-plugin-20240306~git.da23d2a/src/GroupMenu.cpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#ifdef ENABLE_WAYLAND
#include <gtk-layer-shell/gtk-layer-shell.h>
#endif

#include "GroupMenu.hpp"
#include "Group.hpp"
#include "GroupMenuItem.hpp"
#include "Plugin.hpp"

static GtkWidget*
create_window()
{
	GtkWidget* window = gtk_window_new(GtkWindowType::GTK_WINDOW_POPUP);
	gtk_widget_add_events(window, GDK_SCROLL_MASK);
	gtk_window_set_default_size(GTK_WINDOW(window), 1, 1);
#ifdef ENABLE_WAYLAND
	if (gtk_layer_is_supported())
	{
		gtk_layer_init_for_window(GTK_WINDOW(window));
		gtk_layer_set_exclusive_zone(GTK_WINDOW(window), -1);
		gtk_layer_set_anchor(GTK_WINDOW(window), GTK_LAYER_SHELL_EDGE_TOP, TRUE);
		gtk_layer_set_anchor(GTK_WINDOW(window), GTK_LAYER_SHELL_EDGE_LEFT, TRUE);
	}
#endif

	return window;
}

GroupMenu::GroupMenu(Group* dockButton)
{
	mGroup = dockButton;
	mVisible = false;
	mMouseHover = false;
	mWindow = create_window();
	mBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);

	Help::Gtk::cssClassAdd(mBox, "menu");
	gtk_container_add(GTK_CONTAINER(mWindow), mBox);
	gtk_widget_show(mBox);

	mPopupIdle.setup([this]() {
		popup();
		return false;
	});

	//--------------------------------------------------

	g_signal_connect(G_OBJECT(mWindow), "enter-notify-event",
		G_CALLBACK(+[](GtkWidget* widget, GdkEvent* event, GroupMenu* me) {
			me->mMouseHover = true;

			if (Settings::showPreviews)
				me->mGroup->mWindows.forEach([](GroupWindow* w) -> void {
						w->mGroupMenuItem->updatePreview();
				});

			return true;
		}),
		this);

	g_signal_connect(G_OBJECT(mWindow), "leave-notify-event",
		G_CALLBACK(+[](GtkWidget* widget, GdkEvent* event, GroupMenu* me) {
			me->mGroup->setMouseLeaveTimeout();
			me->mMouseHover = false;

			return true;
		}),
		this);

	g_signal_connect(G_OBJECT(mWindow), "scroll-event",
		G_CALLBACK(+[](GtkWidget* widget, GdkEventScroll* event, GroupMenu* me) {
			((Group*)me->mGroup)->scrollWindows(event->time, event->direction);
			return true;
		}),
		this);

	g_signal_connect(G_OBJECT(Plugin::mXfPlugin), "notify::scale-factor",
		G_CALLBACK(+[](GtkWidget* widget, GParamSpec* pspec, GroupMenu* me) {
			g_object_ref(me->mBox);
			gtk_container_remove(GTK_CONTAINER(me->mWindow), me->mBox);
			gtk_widget_destroy(me->mWindow);
			me->mWindow = create_window();
			gtk_container_add(GTK_CONTAINER(me->mWindow), me->mBox);
			g_object_unref(me->mBox);
		}),
		this);
}

GroupMenu::~GroupMenu()
{
	mPopupIdle.stop();
	gtk_widget_destroy(mWindow);
}

void GroupMenu::add(GroupMenuItem* menuItem)
{
	gtk_box_pack_end(GTK_BOX(mBox), GTK_WIDGET(menuItem->mItem), false, true, 0);

	if (mVisible)
		mPopupIdle.start();
}

void GroupMenu::remove(GroupMenuItem* menuItem)
{
	gtk_container_remove(GTK_CONTAINER(mBox), GTK_WIDGET(menuItem->mItem));
	gtk_window_resize(GTK_WINDOW(mWindow), 1, 1);

	if (mGroup->mWindowsCount < (Settings::noWindowsListIfSingle ? 2 : 1))
		gtk_widget_hide(mWindow);

	if (mVisible)
		mPopupIdle.start();
}

void GroupMenu::popup()
{
	if (mGroup->mWindowsCount >= (Settings::noWindowsListIfSingle ? 2 : 1))
	{
		gint wx, wy;
		mVisible = true;

		updateOrientation();

		// Update the previews before showing the window
		if (Settings::showPreviews)
		{
			mGroup->mWindows.forEach([](GroupWindow* w) -> void {
				w->mGroupMenuItem->updatePreview();
			});
			gtk_window_resize(GTK_WINDOW(mWindow), 1, 1);
		}

		xfce_panel_plugin_position_widget(Plugin::mXfPlugin, mWindow, mGroup->mButton, &wx, &wy);
		updatePosition(wx, wy);
		gtk_widget_show(mWindow);
	}
}

void GroupMenu::updateOrientation()
{
	XfcePanelPluginMode panelMode = xfce_panel_plugin_get_mode(Plugin::mXfPlugin);

	if (Settings::showPreviews && panelMode == XFCE_PANEL_PLUGIN_MODE_HORIZONTAL)
		gtk_orientable_set_orientation(GTK_ORIENTABLE(mBox), GTK_ORIENTATION_HORIZONTAL);
	else
		gtk_orientable_set_orientation(GTK_ORIENTABLE(mBox), GTK_ORIENTATION_VERTICAL);
}

void GroupMenu::updatePosition(gint wx, gint wy)
{
	GdkScreen *screen;
	GdkRectangle geometry;
	GdkDisplay *display;
	GdkMonitor *monitor;

	screen = gtk_widget_get_screen(mGroup->mButton);
	display = gdk_screen_get_display(screen);
	monitor = gdk_display_get_monitor_at_window(display, gtk_widget_get_window(mGroup->mButton));
	gdk_monitor_get_geometry(monitor, &geometry);

	gint window_width, window_height;
	gtk_window_get_size(GTK_WINDOW(mWindow), &window_width, &window_height);

	gint button_width = gtk_widget_get_allocated_width(mGroup->mButton);
	gint button_height = gtk_widget_get_allocated_height(mGroup->mButton);
	
	XfcePanelPluginMode panelMode = xfce_panel_plugin_get_mode(Plugin::mXfPlugin);

	if (panelMode == XFCE_PANEL_PLUGIN_MODE_HORIZONTAL)
	{
		if (wx != geometry.x + geometry.width - window_width) {
			wx -= (window_width/2) - (button_width/2);
			wx = wx < geometry.x ? geometry.x : wx;
		}
	} else {
		if (wy != geometry.y + geometry.height - window_height) {
			wy -= (window_height/2) - (button_height/2);
			wy = wy < geometry.y ? geometry.y : wy;
		}
	}

#ifdef HAVE_GTK_LAYER_SHELL
	if (gtk_layer_is_supported())
	{
		gtk_layer_set_margin(GTK_WINDOW(mWindow), GTK_LAYER_SHELL_EDGE_LEFT, wx - geometry.x);
		gtk_layer_set_margin(GTK_WINDOW(mWindow), GTK_LAYER_SHELL_EDGE_TOP, wy - geometry.y);
	}
	else
#endif
	{
		gtk_window_move(GTK_WINDOW(mWindow), wx, wy);
	}
}

void GroupMenu::hide()
{
	mVisible = false;
	gtk_widget_hide(mWindow);
}

void GroupMenu::showPreviewsChanged()
{
	mGroup->mWindows.forEach([](GroupWindow* w) -> void {
		gtk_widget_set_visible(GTK_WIDGET(w->mGroupMenuItem->mPreview), Settings::showPreviews);
		w->mGroupMenuItem->mPreviewTimeout.stop();
	});
	gtk_window_resize(GTK_WINDOW(mWindow), 1, 1);
}

uint GroupMenu::getPointerDistance()
{
	gint wx, wy, ww, wh, px, py;
	guint dx, dy;
	dx = dy = 0;

	gtk_window_get_position(GTK_WINDOW(mWindow), &wx, &wy);
	gtk_window_get_size(GTK_WINDOW(mWindow), &ww, &wh);
	gdk_device_get_position(Plugin::mPointer, nullptr, &px, &py);

	if (px < wx)
		dx = wx - px;
	else if (px > wx + ww)
		dx = px - (wx + ww);

	if (py < wy)
		dy = wy - py;
	else if (py > wy + wh)
		dy = py - (wy + wh);

	return std::max(dx, dy);
}
07070100000036000081A400000000000000000000000165E8B8500000033B000000000000000000000000000000000000003D00000000xfce4-docklike-plugin-20240306~git.da23d2a/src/GroupMenu.hpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#ifndef GROUP_MENU_HPP
#define GROUP_MENU_HPP

#include <gtk/gtk.h>

#include <iostream>

#include "Helpers.hpp"

class Group;
class GroupMenuItem;

class GroupMenu
{
  public:
	GroupMenu(Group* dockButton);
	~GroupMenu();

	void add(GroupMenuItem* menuItem);
	void remove(GroupMenuItem* menuItem);

	void popup();
	void updateOrientation();
	void updatePosition(gint wx, gint wy);
	void hide();
	void showPreviewsChanged();

	uint getPointerDistance();

	Group* mGroup;

	GtkWidget* mWindow;
	GtkWidget* mBox;

	bool mVisible;
	bool mMouseHover;

	Help::Gtk::Idle mPopupIdle;
};

#endif // GROUP_MENU_HPP
07070100000037000081A400000000000000000000000165E8B85000001899000000000000000000000000000000000000004100000000xfce4-docklike-plugin-20240306~git.da23d2a/src/GroupMenuItem.cpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#ifdef ENABLE_X11
#include <gdk/gdkx.h>
#include <libxfce4windowing/xfw-x11.h>
#endif

#include "GroupMenuItem.hpp"

static GtkTargetEntry entries[1] = {{(gchar*)"any", 0, 0}};

GroupMenuItem::GroupMenuItem(GroupWindow* groupWindow)
{
	mGroupWindow = groupWindow;

	// This needs work to survive porting to GTK4.
	// GtkEventBox is removed, all events are supported by all widgets.

	mItem = GTK_EVENT_BOX(gtk_event_box_new());
	gtk_drag_dest_set(GTK_WIDGET(mItem), GTK_DEST_DEFAULT_DROP, entries, 1, GDK_ACTION_MOVE);
	Help::Gtk::cssClassAdd(GTK_WIDGET(mItem), "menu_item");
	gtk_widget_show(GTK_WIDGET(mItem));
	g_object_ref(mItem);

	mGrid = GTK_GRID(gtk_grid_new());
	gtk_grid_set_column_spacing(mGrid, 6);
	gtk_widget_set_margin_start(GTK_WIDGET(mGrid), 6);
	gtk_widget_set_margin_end(GTK_WIDGET(mGrid), 6);
	gtk_widget_set_margin_top(GTK_WIDGET(mGrid), 2);
	gtk_widget_set_margin_bottom(GTK_WIDGET(mGrid), 2);
	gtk_widget_show(GTK_WIDGET(mGrid));
	gtk_container_add(GTK_CONTAINER(mItem), GTK_WIDGET(mGrid));

	mIcon = GTK_IMAGE(gtk_image_new());
	gtk_widget_show(GTK_WIDGET(mIcon));
	gtk_grid_attach(mGrid, GTK_WIDGET(mIcon), 0, 0, 1, 1);

	mLabel = GTK_LABEL(gtk_label_new(""));
	gtk_label_set_xalign(mLabel, 0);
	gtk_label_set_ellipsize(mLabel, PANGO_ELLIPSIZE_END);
	gtk_label_set_width_chars(mLabel, 26);
	gtk_widget_show(GTK_WIDGET(mLabel));
	gtk_grid_attach(mGrid, GTK_WIDGET(mLabel), 1, 0, 1, 1);

	mCloseButton = GTK_BUTTON(gtk_button_new_from_icon_name("window-close", GTK_ICON_SIZE_MENU));
	gtk_button_set_relief(mCloseButton, GTK_RELIEF_NONE);
	gtk_widget_show(GTK_WIDGET(mCloseButton));
	gtk_grid_attach(mGrid, GTK_WIDGET(mCloseButton), 2, 0, 1, 1);

	mPreview = GTK_IMAGE(gtk_image_new());
	gtk_widget_set_margin_top(GTK_WIDGET(mPreview), 6);
	gtk_widget_set_margin_bottom(GTK_WIDGET(mPreview), 6);
	gtk_grid_attach(mGrid, GTK_WIDGET(mPreview), 0, 1, 3, 1);
	gtk_widget_set_visible(GTK_WIDGET(mPreview), Settings::showPreviews);

	if (Xfw::getActiveWindow() == mGroupWindow->mXfwWindow)
		Help::Gtk::cssClassAdd(GTK_WIDGET(mItem), "active_menu_item");

	int sleepMS = 1000;
	if (Settings::previewSleep)
		sleepMS = Settings::previewSleep;

	mPreviewTimeout.setup(sleepMS, [this]() {
		updatePreview();
		return true;
	});

	//--------------------------------------------------

	g_signal_connect(G_OBJECT(mItem), "button-press-event",
		G_CALLBACK(+[](GtkWidget* widget, GdkEventButton* event, GroupMenuItem* me) {
			if (event->button == GDK_BUTTON_PRIMARY)
				me->mGroupWindow->activate((event)->time);
			return true;
		}),
		this);

	g_signal_connect(G_OBJECT(mItem), "enter-notify-event",
		G_CALLBACK(+[](GtkWidget* widget, GdkEventCrossing* event, GroupMenuItem* me) {
			if (event->state & GDK_BUTTON1_MASK)
				me->mGroupWindow->activate(event->time);
			Help::Gtk::cssClassAdd(widget, "hover_menu_item");
			gtk_widget_queue_draw(widget);
			return true;
		}),
		this);

	g_signal_connect(G_OBJECT(mItem), "leave-notify-event",
		G_CALLBACK(+[](GtkWidget* widget, GdkEvent* event, GroupMenuItem* me) {
			Help::Gtk::cssClassRemove(widget, "hover_menu_item");
			gtk_widget_queue_draw(widget);
			gtk_widget_queue_draw(me->mGroupWindow->mGroup->mButton);
			return true;
		}),
		this);

	g_signal_connect(G_OBJECT(mCloseButton), "clicked",
		G_CALLBACK(+[](GtkButton* button, GroupMenuItem* me) {
			Xfw::close(me->mGroupWindow, 0);
		}),
		this);
}

GroupMenuItem::~GroupMenuItem()
{
	mPreviewTimeout.stop();
	g_object_unref(mItem);
}

void GroupMenuItem::updateLabel()
{
	const char* winName = xfw_window_get_name(mGroupWindow->mXfwWindow);

	if (Xfw::getActiveWindow() == mGroupWindow->mXfwWindow)
	{
		gchar* escaped = g_markup_escape_text(winName, -1);
		gchar* markup = g_strdup_printf("<b>%s</b>", escaped);
		gtk_label_set_markup(mLabel, markup);
		g_free(markup);
		g_free(escaped);
	}
	else if (mGroupWindow->getState(XFW_WINDOW_STATE_MINIMIZED))
	{
		gchar* escaped = g_markup_escape_text(winName, -1);
		gchar* markup = g_strdup_printf("<i>%s</i>", escaped);
		gtk_label_set_markup(mLabel, markup);
		g_free(markup);
		g_free(escaped);
	}
	else
		gtk_label_set_text(mLabel, winName);
}

void GroupMenuItem::updateIcon()
{
	gint scale_factor = gtk_widget_get_scale_factor(GTK_WIDGET(mIcon));
	GdkPixbuf* iconPixbuf = xfw_window_get_icon(mGroupWindow->mXfwWindow, 16, scale_factor);

	if (iconPixbuf != nullptr)
	{
		cairo_surface_t* surface = gdk_cairo_surface_create_from_pixbuf(iconPixbuf, scale_factor, NULL);
		gtk_image_set_from_surface(mIcon, surface);
		cairo_surface_destroy (surface);
	}
}

void GroupMenuItem::updatePreview()
{
	if (mGroupWindow->getState(XFW_WINDOW_STATE_MINIMIZED))
		return; // minimized windows never need a new thumbnail

	// This needs work to survive porting to GTK4 and/or Wayland.
	// GDK doesn't expose an API to get a foreign window on X11 anymore (so X11 code).
	// Wayland may never have a public protocol for obtaining a preview of a foreign window,
	// which goes against its security principles (so private protocol).
#ifdef ENABLE_X11
	if (GDK_IS_X11_DISPLAY(Plugin::mDisplay))
	{
		GdkWindow* window;
		GdkPixbuf* pixbuf;
		GdkPixbuf* thumbnail;

		double scale = 0.125;
		if (Settings::previewScale)
			scale = Settings::previewScale;

		window = gdk_x11_window_foreign_new_for_display(Plugin::mDisplay,
			xfw_window_x11_get_xid(mGroupWindow->mXfwWindow));

		if (window != nullptr)
		{
			pixbuf = gdk_pixbuf_get_from_window(window, 0, 0, gdk_window_get_width(window),
				gdk_window_get_height(window));

			if (pixbuf != nullptr)
			{
				gint scale_factor = gtk_widget_get_scale_factor(GTK_WIDGET(mPreview));
				scale *= scale_factor;
				thumbnail = gdk_pixbuf_scale_simple(pixbuf,
					gdk_pixbuf_get_width(pixbuf) * scale, gdk_pixbuf_get_height(pixbuf) * scale, GDK_INTERP_BILINEAR);
				cairo_surface_t* surface = gdk_cairo_surface_create_from_pixbuf(thumbnail, scale_factor, NULL);

				gtk_image_set_from_surface(mPreview, surface);

				cairo_surface_destroy (surface);
				g_object_unref(thumbnail);
				g_object_unref(pixbuf);
			}
			g_object_unref(window);
		}
	}
#endif
}
07070100000038000081A400000000000000000000000165E8B85000000319000000000000000000000000000000000000004100000000xfce4-docklike-plugin-20240306~git.da23d2a/src/GroupMenuItem.hpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#ifndef GROUP_MENU_ITEM_HPP
#define GROUP_MENU_ITEM_HPP

#include <gtk/gtk.h>

#include <iostream>

#include "GroupWindow.hpp"
#include "Helpers.hpp"
#include "Xfw.hpp"

class GroupWindow;

class GroupMenuItem
{
  public:
	GroupMenuItem(GroupWindow* groupWindow);
	~GroupMenuItem();

	void updateLabel();
	void updateIcon();
	void updatePreview();

	GroupWindow* mGroupWindow;

	GtkEventBox* mItem;
	GtkGrid* mGrid;
	GtkImage* mIcon;
	GtkLabel* mLabel;
	GtkButton* mCloseButton;
	GtkImage* mPreview;

	Help::Gtk::Timeout mPreviewTimeout;
};

#endif // GROUP_MENU_ITEM_HPP
07070100000039000081A400000000000000000000000165E8B85000000FF1000000000000000000000000000000000000003F00000000xfce4-docklike-plugin-20240306~git.da23d2a/src/GroupWindow.cpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#include "GroupWindow.hpp"

GroupWindow::GroupWindow(XfwWindow* xfwWindow)
{
	mXfwWindow = xfwWindow;
	mGroupMenuItem = new GroupMenuItem(this);
	mGroupAssociated = false;

	std::string groupName = Xfw::getGroupName(this);

	g_debug("NEW: %s", groupName.c_str());

	std::shared_ptr<AppInfo> appInfo = AppInfos::search(groupName);
	mGroup = Dock::prepareGroup(appInfo);

	//--------------------------------------------------

	g_signal_connect(G_OBJECT(mXfwWindow), "name-changed",
		G_CALLBACK(+[](XfwWindow* window, GroupWindow* me) {
			me->mGroupMenuItem->updateLabel();
		}),
		this);

	g_signal_connect(G_OBJECT(mXfwWindow), "icon-changed",
		G_CALLBACK(+[](XfwWindow* window, GroupWindow* me) {
			me->mGroupMenuItem->updateIcon();
		}),
		this);

	g_signal_connect(G_OBJECT(mXfwWindow), "state-changed",
		G_CALLBACK(+[](XfwWindow* window, XfwWindowState changed_mask,
						XfwWindowState new_state, GroupWindow* me) {
			me->updateState();
		}),
		this);

	g_signal_connect(G_OBJECT(mXfwWindow), "workspace-changed",
		G_CALLBACK(+[](XfwWindow* window, GroupWindow* me) {
			me->updateState();
		}),
		this);

	g_signal_connect(G_OBJECT(mXfwWindow), "notify::monitors",
		G_CALLBACK(+[](XfwWindow* window, GParamSpec* pspec, GroupWindow* me) {
			me->updateState();
			Xfw::setActiveWindow();
		}),
		this);

	g_signal_connect(G_OBJECT(mXfwWindow), "class-changed",
		G_CALLBACK(+[](XfwWindow* window, GroupWindow* me) {
			std::string _groupName = Xfw::getGroupName(me);
			Group* group = Dock::prepareGroup(AppInfos::search(_groupName));
			if (group != me->mGroup)
			{
				me->leaveGroup();
				me->mGroup = group;
				me->getInGroup();
				Xfw::setActiveWindow();
			}
		}),
		this);

	updateState();
	mGroupMenuItem->updateIcon();
	mGroupMenuItem->updateLabel();
}

bool GroupWindow::getState(XfwWindowState flagMask) const
{
	return (mState & flagMask) != 0;
}

void GroupWindow::activate(guint32 timestamp)
{
	Xfw::activate(this, timestamp);
}

void GroupWindow::minimize()
{
	xfw_window_set_minimized(this->mXfwWindow, TRUE, NULL);
}

GroupWindow::~GroupWindow()
{
	leaveGroup();
	g_signal_handlers_disconnect_by_data(this->mXfwWindow, this);
	delete mGroupMenuItem;
}

void GroupWindow::getInGroup()
{
	if (mGroupAssociated)
		return;
	mGroup->add(this);
	mGroupAssociated = true;
}

void GroupWindow::leaveGroup()
{
	if (!mGroupAssociated)
		return;
	mGroup->remove(this);
	mGroup->onWindowUnactivate();
	mGroupAssociated = false;
}

void GroupWindow::onActivate()
{
	gtk_widget_queue_draw(GTK_WIDGET(mGroupMenuItem->mItem));
	mGroupMenuItem->updateLabel();

	if (mGroupAssociated)
		mGroup->onWindowActivate(this);
}

void GroupWindow::onUnactivate() const
{
	gtk_widget_queue_draw(GTK_WIDGET(mGroupMenuItem->mItem));
	mGroupMenuItem->updateLabel();

	if (mGroupAssociated)
		mGroup->onWindowUnactivate();
}

void GroupWindow::updateState()
{
	bool onScreen = true;
	bool onWorkspace = true;
	bool onTasklist = !(mState & XfwWindowState::XFW_WINDOW_STATE_SKIP_TASKLIST);
	mState = xfw_window_get_state(this->mXfwWindow);

	if (Settings::onlyDisplayVisible)
	{
		XfwWorkspace* windowWorkspace = xfw_window_get_workspace(mXfwWindow);

		if (windowWorkspace != nullptr)
		{
			XfwWorkspace* activeWorkspace = xfw_workspace_group_get_active_workspace(Xfw::mXfwWorkspaceGroup);

			if (windowWorkspace != activeWorkspace)
				onWorkspace = false;
		}
	}

	if (Settings::onlyDisplayScreen && gdk_display_get_n_monitors(Plugin::mDisplay) > 1)
	{
		GList* monitors = xfw_window_get_monitors(mXfwWindow);
		GdkWindow* pluginWindow = gtk_widget_get_window(GTK_WIDGET(Plugin::mXfPlugin));

		if (!g_list_find(monitors, gdk_display_get_monitor_at_window(Plugin::mDisplay, pluginWindow)))
			onScreen = false;
	}

	if (onWorkspace && onTasklist && onScreen)
		getInGroup();
	else
		leaveGroup();

	gtk_widget_show(GTK_WIDGET(mGroupMenuItem->mItem));
}
0707010000003A000081A400000000000000000000000165E8B850000003EF000000000000000000000000000000000000003F00000000xfce4-docklike-plugin-20240306~git.da23d2a/src/GroupWindow.hpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#ifndef GROUP_WINDOW_HPP
#define GROUP_WINDOW_HPP

#include <gtk/gtk.h>
#include <libxfce4windowing/libxfce4windowing.h>

#include <iostream>

#include "AppInfos.hpp"
#include "Dock.hpp"
#include "Group.hpp"
#include "GroupMenuItem.hpp"
#include "Helpers.hpp"
#include "Plugin.hpp"
#include "Xfw.hpp"

class GroupMenuItem;
class Group;

class GroupWindow
{
  public:
	GroupWindow(XfwWindow* xfwWindow);
	~GroupWindow();

	void updateState();
	void getInGroup();
	void leaveGroup();
	void onActivate();
	void onUnactivate() const;
	void minimize();
	void activate(guint32 timestamp);
	bool getState(XfwWindowState flagMask) const;

	Group* mGroup;
	GroupMenuItem* mGroupMenuItem;

	XfwWindow* mXfwWindow;

	unsigned short mState{};
	bool mGroupAssociated;
};

#endif // GROUP_WINDOW_HPP
0707010000003B000081A400000000000000000000000165E8B850000010D4000000000000000000000000000000000000003B00000000xfce4-docklike-plugin-20240306~git.da23d2a/src/Helpers.cpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#include "Helpers.hpp"

namespace Help
{
	namespace String
	{
		void split(const std::string& str, std::list<std::string>& list,
			char delim = ' ')
		{
			std::stringstream ss(str);
			std::string token;
			while (std::getline(ss, token, delim))
				list.push_back(token);
		}

		std::string toLowercase(std::string str)
		{
			std::for_each(str.begin(), str.end(), [](char& c) {
				c = std::tolower(static_cast<unsigned char>(c));
			});
			return str;
		}

		std::string numericOnly(std::string str)
		{
			str.erase(
				std::remove_if(str.begin(), str.end(), [](char chr) { return chr < 48 || chr > 57; }),
				str.end());

			return str;
		}

		std::string getWord(std::string str, int index, char separator)
		{
			if (index == (int)std::string::npos)
			{
				std::string::iterator it = --str.end();
				while (it != str.begin() && *it == separator)
					--it;

				std::string::iterator end = it + 1;

				while (it != str.begin() && *it != separator)
					--it;

				if (*it == separator)
					++it;

				return std::string(it, end);
			}

			std::string::iterator it = str.begin();
			while (it != str.end() && *it == separator)
				++it;

			while (index > 0)
			{
				--index;
				while (it != str.end() && *it != separator)
					++it;
				while (it != str.end() && *it == separator)
					++it;
			}
			if (it == str.end())
				return "";

			std::string::iterator start = it;

			while (it != str.end() && *it != separator)
				++it;

			return std::string(start, it);
		}

		std::string pathBasename(const std::string str)
		{
			gchar* basename = g_path_get_basename(str.c_str());
			std::string str_out = basename;
			g_free(basename);
			return str_out;
		}

		std::string trim(const std::string str)
		{
			std::string::const_iterator s = str.begin();
			std::string::const_iterator e = str.end();

			while (s != e && (*s == ' ' || *s == '\t' || *s == '"'))
				++s;
			if (e != s)
				--e;
			while (e != s && (*e == ' ' || *e == '\t' || *e == '"'))
				--e;

			return std::string(s, e + 1);
		}
	} // namespace String

	namespace Gtk
	{
		std::list<std::string> bufferToStdStringList(gchar** stringList)
		{
			std::list<std::string> ret;

			if (stringList != nullptr)
				for (int i = 0; stringList[i] != nullptr; ++i)
					ret.push_back(stringList[i]);

			return ret;
		}

		std::vector<char*> stdToBufferStringList(std::list<std::string>& stringList)
		{
			std::vector<char*> buf;

			for (std::string& s : stringList)
				buf.push_back(&s[0]);

			return buf;
		}

		int getChildPosition(GtkContainer* container, GtkWidget* child)
		{
			int ret;
			GValue gv = G_VALUE_INIT;
			g_value_init(&gv, G_TYPE_INT);

			gtk_container_child_get_property(container, child, "position", &gv);
			ret = g_value_get_int(&gv);
			g_value_unset(&gv);

			return ret;
		}

		void cssClassAdd(GtkWidget* widget, const char* className)
		{
			gtk_style_context_add_class(gtk_widget_get_style_context(widget), className);
		}

		void cssClassRemove(GtkWidget* widget, const char* className)
		{
			gtk_style_context_remove_class(gtk_widget_get_style_context(widget), className);
		}

		Timeout::Timeout()
		{
			mDuration = mTimeoutId = 0;
		}

		void Timeout::setup(uint ms, std::function<bool()> function)
		{
			mDuration = ms;
			mFunction = function;
		}

		void Timeout::start()
		{
			stop();
			mTimeoutId = g_timeout_add(mDuration, G_SOURCE_FUNC(+[](Timeout* me) {
				bool cont = me->mFunction();

				if (!cont)
					me->mTimeoutId = 0;
				return cont;
			}),
				this);
		}

		void Timeout::stop()
		{
			if (mTimeoutId)
			{
				g_source_remove(mTimeoutId);
				mTimeoutId = 0;
			}
		}

		Idle::Idle()
		{
			mIdleId = 0;
		}

		void Idle::setup(std::function<bool()> function)
		{
			mFunction = function;
		}

		void Idle::start()
		{
			stop();
			mIdleId = g_idle_add(G_SOURCE_FUNC(+[](Idle* me) {
				bool cont = me->mFunction();
				if (!cont)
					me->mIdleId = 0;
				return cont;
			}),
			this);
		}

		void Idle::stop()
		{
			if (mIdleId != 0)
			{
				g_source_remove(mIdleId);
				mIdleId = 0;
			}
		}
	} // namespace Gtk

} // namespace Help
0707010000003C000081A400000000000000000000000165E8B8500000067C000000000000000000000000000000000000003B00000000xfce4-docklike-plugin-20240306~git.da23d2a/src/Helpers.hpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#ifndef HELPERS_HPP
#define HELPERS_HPP

#include <gtk/gtk.h>

#include <algorithm>
#include <cstring>
#include <functional>
#include <iostream>
#include <list>
#include <sstream>
#include <string>
#include <vector>

namespace Help
{
	namespace String
	{
		void split(const std::string& str, std::list<std::string>& list, char delim);
		std::string toLowercase(std::string str);
		std::string numericOnly(std::string str);
		std::string getWord(std::string str, int index, char separator = ' ');
		std::string pathBasename(const std::string str);
		std::string trim(const std::string str);
	} // namespace String

	namespace Gtk
	{
		std::list<std::string> bufferToStdStringList(gchar** stringList);
		std::vector<char*> stdToBufferStringList(std::list<std::string>& stringList);

		int getChildPosition(GtkContainer* container, GtkWidget* child);

		void cssClassAdd(GtkWidget* widget, const char* className);
		void cssClassRemove(GtkWidget* widget, const char* className);

		class Timeout
		{
		  public:
			Timeout();

			void setup(uint ms, std::function<bool()> function);

			void start();
			void stop();

			uint mDuration;
			std::function<bool()> mFunction;

			uint mTimeoutId;
		};

		class Idle
		{
			public:
			Idle();

			void setup(std::function<bool()> function);
			void start();
			void stop();

			std::function<bool()> mFunction;
			uint mIdleId;
		};
	} // namespace Gtk
} // namespace Help

#endif // HELPERS_HPP
0707010000003D000081A400000000000000000000000165E8B850000016F4000000000000000000000000000000000000003B00000000xfce4-docklike-plugin-20240306~git.da23d2a/src/Hotkeys.cpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#include <iostream>
#include <string>

#include <X11/XKBlib.h>
#include <X11/extensions/XInput2.h>
#include <gdk/gdkx.h>

#include "Hotkeys.hpp"
#include "Settings.hpp"

#define ModifierChange 85 //? this event type isn't listed in libX11

namespace Hotkeys
{
	int mGrabbedKeys;
	bool mHotkeysHandling;

	bool mXIExtAvailable;
	int mXIOpcode;
	pthread_t mThread;

	uint mSuperLKeycode, mSuperRKeycode, m1Keycode;

	// =========================================================================

	static GdkFilterReturn hotkeysHandler(GdkXEvent* gdk_xevent, GdkEvent* event, gpointer data)
	{
		XEvent* xevent = (XEvent*)gdk_xevent;

		switch (xevent->type)
		{
		case ModifierChange:
			if (GDK_MOD4_MASK & xevent->xkey.keycode)
				Dock::hoverSupered(true);
			else
				Dock::hoverSupered(false);
			break;
		case KeyPress:
			if (xevent->xkey.keycode >= m1Keycode && xevent->xkey.keycode <= m1Keycode + NbHotkeys)
				Dock::activateGroup(xevent->xkey.keycode - m1Keycode, xevent->xkey.time);
			break;
		}
		return GDK_FILTER_CONTINUE;
	}

	static void startStopHotkeysHandler(bool start)
	{
		if (start && !mHotkeysHandling)
		{
			gdk_window_add_filter(nullptr, hotkeysHandler, nullptr);
			mHotkeysHandling = true;
		}
		else if (!start && mHotkeysHandling)
		{
			gdk_window_remove_filter(nullptr, hotkeysHandler, nullptr);
			mHotkeysHandling = false;
		}
	}

	static void grabUngrabHotkeys(bool grab, unsigned int startKey = 0)
	{
		GdkWindow* rootwin = gdk_get_default_root_window();
		GdkDisplay* display = gdk_window_get_display(rootwin);

		if (grab)
			mGrabbedKeys = NbHotkeys;
		else
			mGrabbedKeys = startKey;

		for (uint k = m1Keycode + startKey; k < m1Keycode + NbHotkeys; k++)
		{
			for (int ignoredModifiers : {0, (int)GDK_MOD2_MASK, (int)GDK_LOCK_MASK, (int)(GDK_MOD2_MASK | GDK_LOCK_MASK)})
				if (grab)
				{
					gdk_x11_display_error_trap_push(display);

					XGrabKey(
						GDK_WINDOW_XDISPLAY(rootwin),
						k, GDK_MOD4_MASK | ignoredModifiers,
						GDK_WINDOW_XID(rootwin),
						False,
						GrabModeAsync,
						GrabModeAsync);

					if (gdk_x11_display_error_trap_pop(display))
					{
						grabUngrabHotkeys(false, k - m1Keycode);
						return;
					}
				}
				else
				{
					XUngrabKey(
						GDK_WINDOW_XDISPLAY(rootwin),
						k, GDK_MOD4_MASK | ignoredModifiers,
						GDK_WINDOW_XID(rootwin));
				}
		}
	}

	/* =========================================================================
	*
	* The method used here to listen keyboard events globaly is taken from :
	* github.com/anko/xkbcat
	* It create a direct connection to X11 keyboard events without any grabbing,
	* allowing us to determine the state (consumed or not) of the modifier key when released.
	*/

	static gboolean threadSafeSwitch(gpointer data)
	{
		Xfw::switchToLastWindow(g_get_monotonic_time() / 1000);
		return false;
	}

	static void* threadedXIKeyListenner(void* data)
	{
		pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, nullptr);
		pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, nullptr);

		Display* display = XOpenDisplay(nullptr);

		// Register events
		Window root = DefaultRootWindow(display);
		XIEventMask m;
		m.deviceid = XIAllMasterDevices;
		m.mask_len = XIMaskLen(XI_LASTEVENT);
		m.mask = g_new0(unsigned char, m.mask_len);
		XISetMask(m.mask, XI_RawKeyPress);
		XISetMask(m.mask, XI_RawKeyRelease);
		XISelectEvents(display, root, &m, 1);
		XSync(display, false);
		free(m.mask);

		bool toTrigger = false;
		while (true)
		{
			XEvent event;
			XGenericEventCookie* cookie = (XGenericEventCookie*)&event.xcookie;
			XNextEvent(display, &event);
			if (XGetEventData(display, cookie) && cookie->type == GenericEvent && cookie->extension == mXIOpcode)
			{
				uint keycode = ((XIRawEvent*)cookie->data)->detail;
				if (cookie->evtype == XI_RawKeyRelease)
					if (keycode == mSuperLKeycode || keycode == mSuperRKeycode)
						if (toTrigger)
							gdk_threads_add_idle(threadSafeSwitch, nullptr);
				if (cookie->evtype == XI_RawKeyPress)
				{
					if (keycode == mSuperLKeycode || keycode == mSuperRKeycode)
						toTrigger = true;
					else
						toTrigger = false;
				}
			}
		}
	}

	static void startStopXIKeyListenner(bool start)
	{
		if (mXIExtAvailable && start)
		{
			if (!mThread)
				pthread_create(&mThread, nullptr, threadedXIKeyListenner, nullptr);
			else if (mThread)
			{
				pthread_cancel(mThread); //also close the XDisplay in the thread
				void* ret = nullptr;
				pthread_join(mThread, &ret);
				mThread = 0;
			}
		}
	}

	static void checkXIExtension(Display* display)
	{
		mXIExtAvailable = false;

		// Test for XInput 2 extension
		int queryEvent, queryError;
		if (!XQueryExtension(display, "XInputExtension", &mXIOpcode, &queryEvent, &queryError))
			return;

		// Request XInput 2.0, guarding against changes in future versions
		int major = 2, minor = 0;
		int queryResult = XIQueryVersion(display, &major, &minor);
		if (queryResult == BadRequest)
			return;
		else if (queryResult != Success)
			return;

		mXIExtAvailable = true;
		mThread = 0;
	}

	// =========================================================================

	void updateSettings()
	{
		startStopXIKeyListenner(Settings::keyAloneActive);

		grabUngrabHotkeys(Settings::keyComboActive);
		startStopHotkeysHandler(mGrabbedKeys > 0);
	}

	void init()
	{
		Display* display = XOpenDisplay(nullptr);

		checkXIExtension(display);

		mSuperLKeycode = XKeysymToKeycode(display, XK_Super_L);
		mSuperRKeycode = XKeysymToKeycode(display, XK_Super_R);
		m1Keycode = XKeysymToKeycode(display, XK_1);

		XCloseDisplay(display);

		mGrabbedKeys = 0;
		mHotkeysHandling = false;

		updateSettings();
	}
} // namespace Hotkeys
0707010000003E000081A400000000000000000000000165E8B850000001C3000000000000000000000000000000000000003B00000000xfce4-docklike-plugin-20240306~git.da23d2a/src/Hotkeys.hpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#ifndef HOTKEYS_HPP
#define HOTKEYS_HPP

namespace Hotkeys
{
	void init();
	void updateSettings();

	extern bool mXIExtAvailable;
	extern int mGrabbedKeys;

	const int NbHotkeys = 10;
} // namespace Hotkeys

#endif // HOTKEYS_HPP
0707010000003F000081A400000000000000000000000165E8B8500000071C000000000000000000000000000000000000003B00000000xfce4-docklike-plugin-20240306~git.da23d2a/src/Makefile.amAM_CXXFLAGS = \
	-DPACKAGE_LOCALE_DIR=\"$(localedir)\" \
	-DG_LOG_DOMAIN=\"docklike\"

plugindir = $(libdir)/xfce4/panel/plugins
plugin_LTLIBRARIES = libdocklike.la

libdocklike_la_SOURCES =							\
		Theme.cpp Theme.hpp							\
		AppInfos.cpp AppInfos.hpp					\
		Settings.cpp Settings.hpp					\
		Group.cpp Group.hpp							\
		GroupMenu.cpp GroupMenu.hpp					\
		GroupMenuItem.cpp GroupMenuItem.hpp			\
		GroupWindow.cpp GroupWindow.hpp				\
		Helpers.cpp Helpers.hpp						\
		Plugin.cpp Plugin.hpp						\
		Dock.cpp Dock.hpp							\
		Xfw.cpp Xfw.hpp							\
		SettingsDialog.cpp SettingsDialog.hpp		\
		State.tpp 									\
		Store.tpp									\
		register.c									\
		_gresources.xml _dialogs.xml				\
		_gresources.c

if ENABLE_X11
libdocklike_la_SOURCES += \
	Hotkeys.cpp Hotkeys.hpp
endif

_gresources.c: _gresources.xml _dialogs.xml
	glib-compile-resources --generate-source --target _gresources.c _gresources.xml

libdocklike_la_CPPFLAGS = \
	$(LIBXFCE4PANEL_CFLAGS) \
	$(LIBXFCE4UI_CFLAGS) \
	$(GTK_CFLAGS) \
	$(CAIRO_CFLAGS) \
	$(LIBXFCE4WINDOWING_CFLAGS) \
	$(LIBXFCE4WINDOWINGUI_CFLAGS) \
	$(GTK_LAYER_SHELL_CFLAGS)

libdocklike_la_LDFLAGS = -avoid-version -module -no-undefined -export-symbols-regex '^xfce_panel_module_(preinit|init|construct)'

libdocklike_la_LIBADD = \
	$(LIBXFCE4PANEL_LIBS) \
	$(LIBXFCE4UI_LIBS) \
	$(GTK_LIBS) \
	$(CAIRO_LIBS) \
	$(LIBXFCE4WINDOWING_LIBS) \
	$(LIBXFCE4WINDOWINGUI_LIBS) \
	$(GTK_LAYER_SHELL_LIBS)

if ENABLE_X11
libdocklike_la_CPPFLAGS += \
	$(LIBX11_CFLAGS)

libdocklike_la_LIBADD += \
	$(LIBX11_LIBS)
endif

pluginsdir = $(datadir)/xfce4/panel/plugins
plugins_in_files = docklike.desktop.in
plugins_DATA = $(plugins_in_files:.desktop.in=.desktop)
@INTLTOOL_DESKTOP_RULE@

EXTRA_DIST = $(plugins_in_files)

CLEANFILES = $(NULL)
DISTCLEANFILES = docklike.desktop
07070100000040000081A400000000000000000000000165E8B85000000E3A000000000000000000000000000000000000003A00000000xfce4-docklike-plugin-20240306~git.da23d2a/src/Plugin.cpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#include "Plugin.hpp"
#include "Helpers.hpp"
#ifdef ENABLE_X11
#include "Hotkeys.hpp"
#endif

namespace Plugin
{
	XfcePanelPlugin* mXfPlugin;
	GdkDevice* mPointer;
	GdkDisplay* mDisplay;

	static void init(XfcePanelPlugin* xfPlugin)
	{
		xfce_textdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, nullptr);

		mXfPlugin = xfPlugin;
		mDisplay = gdk_display_get_default();
		mPointer = gdk_seat_get_pointer(gdk_display_get_default_seat(mDisplay));

		Settings::init();
		AppInfos::init();
		Xfw::init();
		Dock::init();
		Theme::init();
#ifdef ENABLE_X11
		if (GDK_IS_X11_DISPLAY(gdk_display_get_default()))
			Hotkeys::init();
#endif

		gtk_container_add(GTK_CONTAINER(mXfPlugin), Dock::mBox);
		xfce_panel_plugin_menu_show_configure(mXfPlugin);
		xfce_panel_plugin_menu_show_about(mXfPlugin);

		//--------------------------------------------------

		g_signal_connect(G_OBJECT(GTK_WIDGET(mXfPlugin)), "size-changed",
			G_CALLBACK(+[](XfcePanelPlugin* plugin, gint size) {
				Dock::onPanelResize(size);
				return true;
			}),
			nullptr);

		g_signal_connect(G_OBJECT(GTK_WIDGET(mXfPlugin)), "orientation-changed",
			G_CALLBACK(+[](XfcePanelPlugin* plugin, GtkOrientation orientation) {
				Dock::onPanelOrientationChange(orientation);
			}),
			nullptr);

		g_signal_connect(G_OBJECT(mXfPlugin), "configure-plugin",
			G_CALLBACK(+[](XfcePanelPlugin* plugin) {
				SettingsDialog::popup();
			}),
			nullptr);

		g_signal_connect(G_OBJECT(mXfPlugin), "about",
			G_CALLBACK(+[](XfcePanelPlugin* plugin) {
				Plugin::aboutDialog();
			}),
			nullptr);

		g_signal_connect(G_OBJECT(mXfPlugin), "remote-event",
			G_CALLBACK(+[](XfcePanelPlugin* plugin, gchar* name, GValue* value) {
				remoteEvent(name, value);
			}),
			nullptr);

		g_signal_connect(G_OBJECT(mXfPlugin), "free-data",
			G_CALLBACK(+[](XfcePanelPlugin* plugin) {
				Xfw::finalize();
				Dock::mGroups.clear();
				AppInfos::finalize();
				Settings::finalize();
			}),
			nullptr);
	}

	void aboutDialog()
	{
		const gchar* AUTHORS[] = {
			"Nicolas Szabo <nszabo@vivaldi.net>",
			"David Keogh <davidtkeogh@gmail.com>",
			nullptr};

		// TODO: Load these from a TRANSLATORS text file, so people can add themselves.
		const gchar* TRANSLATORS =
			"Yamada Hayao <hayao@fascode.net> : ja\n"
			"Dmitry K <dkabishchev@ya.ru> : ru\n"
			"Fábio Meneghetti <fabiom@riseup.net> : pt\n"
			"Mirko Brombin <send@mirko.pm> : it\n"
			"Adem Kürşat Uzun <ademkursatuzun@gmail.com> : tr\n"
			"Santiago Soler <santiago.r.soler@gmail.com> : es\n"
			"fredii: de\n"
			"Lucas Hadjilucas <puzzle@outlook.com> : el\n"
			"Jan Kazemier : nl\n"
			"Matthaiks : pl\n"
			"Faisal Rachmadin <frachmadin@gmail.com> : id\n";

		gtk_show_about_dialog(nullptr,
			"program-name", "Docklike Taskbar",
			"logo-icon-name", "preferences-system",
			"version", PACKAGE_VERSION,
			"copyright", "Copyright \302\251 2003-2023 The Xfce development team",
			"license-type", GTK_LICENSE_GPL_3_0,
			"authors", AUTHORS,
			"translator-credits", TRANSLATORS,
			nullptr);
	}

	void remoteEvent(gchar* name, GValue* value)
	{
		if (g_strcmp0(name, "settings") == 0)
			SettingsDialog::popup();
		else if (g_strcmp0(name, "about") == 0)
			aboutDialog();
	}

} // namespace Plugin

//----------------------------------------------------------------------------------------------------------------------

extern "C" void construct(XfcePanelPlugin* xfPlugin) { Plugin::init(xfPlugin); }
07070100000041000081A400000000000000000000000165E8B850000003E5000000000000000000000000000000000000003A00000000xfce4-docklike-plugin-20240306~git.da23d2a/src/Plugin.hpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#ifndef PLUGIN_HPP
#define PLUGIN_HPP

#include <gtk/gtk.h>
#include <libxfce4windowing/libxfce4windowing.h>

#include <iostream>
#include <string>
#include <vector>

#include "AppInfos.hpp"
#include "Dock.hpp"
#include "Settings.hpp"
#include "SettingsDialog.hpp"
#include "Theme.hpp"

extern "C"
{
#include <libxfce4panel/libxfce4panel.h>
#include <libxfce4ui/libxfce4ui.h>
#include <libxfce4util/libxfce4util.h>
void construct(XfcePanelPlugin* xfPlugin);
}

#define HELP_WEBSITE "https://docs.xfce.org/panel-plugins/xfce4-docklike-plugin/start"

namespace Plugin
{
	extern XfcePanelPlugin* mXfPlugin;
	extern GdkDevice* mPointer;
	extern GdkDisplay* mDisplay;

	void aboutDialog();
	void remoteEvent(gchar* name, GValue* value);
} // namespace Plugin

#endif // PLUGIN_HPP
07070100000042000081A400000000000000000000000165E8B8500000236F000000000000000000000000000000000000003C00000000xfce4-docklike-plugin-20240306~git.da23d2a/src/Settings.cpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#include "Settings.hpp"
#ifdef ENABLE_X11
#include "Hotkeys.hpp"
#endif

namespace Settings
{
	Store::AutoPtr<gchar> mPath;
	Store::AutoPtr<GKeyFile> mFile;

	State<bool> forceIconSize;
	State<int> iconSize;

	State<bool> noWindowsListIfSingle;
	State<bool> onlyDisplayVisible;
	State<bool> onlyDisplayScreen;
	State<bool> showPreviews;
	State<int> middleButtonBehavior;

	State<int> indicatorOrientation;
	State<int> indicatorStyle;
	State<int> inactiveIndicatorStyle;
	State<bool> indicatorColorFromTheme;
	State<std::shared_ptr<GdkRGBA>> indicatorColor;
	State<std::shared_ptr<GdkRGBA>> inactiveColor;

	State<bool> keyComboActive;
	State<bool> keyAloneActive;

	State<std::list<std::string>> pinnedAppList;

	State<bool> showWindowCount;
	State<int> dockSize;
	State<double> previewScale;
	State<int> previewSleep;

	void init()
	{
		gchar* path = xfce_panel_plugin_save_location(Plugin::mXfPlugin, true);
		GKeyFile* file = g_key_file_new();
		mPath = Store::AutoPtr<gchar>(path, g_free);
		mFile = Store::AutoPtr<GKeyFile>(file, (GDestroyNotify)g_key_file_unref);

		if (g_file_test(path, G_FILE_TEST_IS_REGULAR))
			g_key_file_load_from_file(file, path, G_KEY_FILE_NONE, nullptr);

		else // Look for a default config file in XDG_CONFIG_DIRS/xfce4/panel/docklike.rc
		{
			gchar* distConfig = xfce_resource_lookup(XFCE_RESOURCE_CONFIG, "xfce4/panel/docklike.rc");

			if (distConfig != nullptr && g_file_test(distConfig, G_FILE_TEST_IS_REGULAR))
				g_key_file_load_from_file(file, distConfig, G_KEY_FILE_NONE, nullptr);

			g_free(distConfig);
		}

		showPreviews.setup(g_key_file_get_boolean(file, "user", "showPreviews", nullptr),
			[](bool _showPreviews) -> void {
				g_key_file_set_boolean(mFile.get(), "user", "showPreviews", _showPreviews);
				saveFile();

				Dock::mGroups.forEach([](std::pair<std::shared_ptr<AppInfo>, std::shared_ptr<Group>> g) -> void
					{ g.second->mGroupMenu.showPreviewsChanged(); });
			});
		
		showWindowCount.setup(g_key_file_get_boolean(file, "user", "showWindowCount", nullptr),
			[](bool _showWindowCount) -> void {
				g_key_file_set_boolean(mFile.get(), "user", "showWindowCount", _showWindowCount);
				saveFile();

				Dock::drawGroups();
			});

		middleButtonBehavior.setup(g_key_file_get_integer(file, "user", "middleButtonBehavior", nullptr),
			[](int _middleButtonBehavior) -> void {
				g_key_file_set_integer(mFile.get(), "user", "middleButtonBehavior", _middleButtonBehavior);
				saveFile();
			});

		indicatorOrientation.setup(g_key_file_get_integer(file, "user", "indicatorOrientation", nullptr),
			[](int _indicatorOrientation) -> void {
				g_key_file_set_integer(mFile.get(), "user", "indicatorOrientation", _indicatorOrientation);
				saveFile();

				Dock::drawGroups();
			});

		forceIconSize.setup(g_key_file_get_boolean(file, "user", "forceIconSize", nullptr),
			[](bool _forceIconSize) -> void {
				g_key_file_set_boolean(mFile.get(), "user", "forceIconSize", _forceIconSize);
				saveFile();

				Dock::onPanelResize();
			});

		iconSize.setup(CLAMP(g_key_file_get_integer(file, "user", "iconSize", nullptr), Settings::minIconSize, Settings::maxIconSize),
			[](int _iconSize) -> void {
				int clamped = CLAMP(_iconSize, Settings::minIconSize, Settings::maxIconSize);
				if (clamped != _iconSize)
				{
					iconSize.set(clamped);
					return;
				}
				g_key_file_set_integer(mFile.get(), "user", "iconSize", _iconSize);
				saveFile();

				Dock::onPanelResize();
			});

		indicatorStyle.setup(g_key_file_get_integer(file, "user", "indicatorStyle", nullptr),
			[](int _indicatorStyle) -> void {
				g_key_file_set_integer(mFile.get(), "user", "indicatorStyle", _indicatorStyle);
				saveFile();

				Dock::drawGroups();
			});

		inactiveIndicatorStyle.setup(g_key_file_get_integer(file, "user", "inactiveIndicatorStyle", nullptr),
			[](int _inactiveIndicatorStyle) -> void {
				g_key_file_set_integer(mFile.get(), "user", "inactiveIndicatorStyle", _inactiveIndicatorStyle);
				saveFile();

				Dock::drawGroups();
			});

		indicatorColorFromTheme.setup(g_key_file_get_boolean(file, "user", "indicatorColorFromTheme", nullptr),
			[](bool _indicatorColorFromTheme) -> void {
				g_key_file_set_boolean(mFile.get(), "user", "indicatorColorFromTheme", _indicatorColorFromTheme);
				saveFile();

				Theme::load();
				Dock::drawGroups();
			});

		gchar* colorString = g_key_file_get_string(file, "user", "indicatorColor", nullptr);
		std::shared_ptr<GdkRGBA> color(g_new(GdkRGBA, 1), g_free);

		if (colorString == nullptr || !gdk_rgba_parse(color.get(), colorString))
			gdk_rgba_parse(color.get(), "rgb(53,132,228)");
		g_free(colorString);

		indicatorColor.setup(color,
			[](std::shared_ptr<GdkRGBA> _indicatorColor) -> void {
				gchar* str = gdk_rgba_to_string(_indicatorColor.get());
				g_key_file_set_string(mFile.get(), "user", "indicatorColor", str);
				g_free(str);
				saveFile();

				Theme::load();
				Dock::drawGroups();
			});

		colorString = g_key_file_get_string(file, "user", "inactiveColor", nullptr);
		color = std::shared_ptr<GdkRGBA>(g_new(GdkRGBA, 1), g_free);

		if (colorString == nullptr || !gdk_rgba_parse(color.get(), colorString))
			gdk_rgba_parse(color.get(), "rgb(51,209,122)");
		g_free(colorString);

		inactiveColor.setup(color,
			[](std::shared_ptr<GdkRGBA> _inactiveColor) -> void {
				gchar* str = gdk_rgba_to_string(_inactiveColor.get());
				g_key_file_set_string(mFile.get(), "user", "inactiveColor", str);
				g_free(str);
				saveFile();

				Theme::load();
				Dock::drawGroups();
			});

		noWindowsListIfSingle.setup(g_key_file_get_boolean(file, "user", "noWindowsListIfSingle", nullptr),
			[](bool _noWindowsListIfSingle) -> void {
				g_key_file_set_boolean(mFile.get(), "user", "noWindowsListIfSingle", _noWindowsListIfSingle);
				saveFile();
			});

		onlyDisplayVisible.setup(g_key_file_get_boolean(file, "user", "onlyDisplayVisible", nullptr),
			[](bool _onlyDisplayVisible) -> void {
				g_key_file_set_boolean(mFile.get(), "user", "onlyDisplayVisible", _onlyDisplayVisible);
				saveFile();
			});

		onlyDisplayScreen.setup(g_key_file_get_boolean(file, "user", "onlyDisplayScreen", nullptr),
			[](bool _onlyDisplayScreen) -> void {
				g_key_file_set_boolean(mFile.get(), "user", "onlyDisplayScreen", _onlyDisplayScreen);
				saveFile();
			});

		keyComboActive.setup(g_key_file_get_boolean(file, "user", "keyComboActive", nullptr),
			[](bool _keyComboActive) -> void {
				g_key_file_set_boolean(mFile.get(), "user", "keyComboActive", _keyComboActive);
				saveFile();

#ifdef ENABLE_X11
			if (GDK_IS_X11_DISPLAY(gdk_display_get_default()))
				Hotkeys::updateSettings();
#endif
			});

		keyAloneActive.setup(g_key_file_get_boolean(file, "user", "keyAloneActive", nullptr),
			[](bool _keyAloneActive) -> void {
				g_key_file_set_boolean(mFile.get(), "user", "keyAloneActive", _keyAloneActive);
				saveFile();

#ifdef ENABLE_X11
				if (GDK_IS_X11_DISPLAY(gdk_display_get_default()))
					Hotkeys::updateSettings();
#endif
			});

		gchar** pinnedListBuffer = g_key_file_get_string_list(file, "user", "pinned", nullptr, nullptr);

		pinnedAppList.setup(Help::Gtk::bufferToStdStringList(pinnedListBuffer),
			[](std::list<std::string> list) -> void {
				std::vector<char*> buf = Help::Gtk::stdToBufferStringList(list);
				g_key_file_set_string_list(mFile.get(), "user", "pinned", buf.data(), buf.size());
				saveFile();
			});

		if (pinnedListBuffer != nullptr)
		{
			// try to be backward compatible: retrieve ids from paths
			for (gchar** p = pinnedListBuffer; *p != nullptr; p++)
				if (**p == '/' && g_str_has_suffix(*p, ".desktop"))
				{
					gchar* basename = g_path_get_basename(*p);
					std::string id = basename;
					g_free(basename);
					g_free(*p);
					*p = g_strdup(id.substr(0, id.size() - 8).c_str());
				}
			pinnedAppList.set(Help::Gtk::bufferToStdStringList(pinnedListBuffer));
			g_strfreev(pinnedListBuffer);
		}

		// HIDDEN SETTINGS:
		dockSize.setup(g_key_file_get_integer(file, "user", "dockSize", nullptr),
			[](int _dockSize) -> void {
				g_key_file_set_integer(mFile.get(), "user", "dockSize", _dockSize);
				saveFile();
			});
		
		previewScale.setup(g_key_file_get_double(file, "user", "previewScale", nullptr),
			[](int _previewScale) -> void {
				g_key_file_set_double(mFile.get(), "user", "previewScale", _previewScale);
				saveFile();
			});
		
		previewSleep.setup(g_key_file_get_integer(file, "user", "previewSleep", nullptr),
			[](int _previewSleep) -> void {
				g_key_file_set_integer(mFile.get(), "user", "previewSleep", _previewSleep);
				saveFile();
			});
	}

	void finalize()
	{
		mPath.reset();
		mFile.reset();
		indicatorColor.get().reset();
		inactiveColor.get().reset();
		pinnedAppList.get().clear();
	}

	void saveFile()
	{
		g_key_file_save_to_file(mFile.get(), mPath.get(), nullptr);
	}
} // namespace Settings
07070100000043000081A400000000000000000000000165E8B850000005A7000000000000000000000000000000000000003C00000000xfce4-docklike-plugin-20240306~git.da23d2a/src/Settings.hpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#ifndef SETTINGS_HPP
#define SETTINGS_HPP

#include <glib.h>

#include <iostream>
#include <list>
#include <string>
#include <vector>

#include "Dock.hpp"
#include "Helpers.hpp"
#include "Plugin.hpp"
#include "State.tpp"

namespace Settings
{
	void init();
	void finalize();

	void saveFile();

	const int minIconSize = 16;
	const int maxIconSize = 128;

	extern State<bool> forceIconSize;
	extern State<int> iconSize;

	extern State<bool> noWindowsListIfSingle;
	extern State<bool> onlyDisplayVisible;
	extern State<bool> onlyDisplayScreen;
	extern State<bool> showPreviews;
	extern State<bool> showWindowCount;
	extern State<int> middleButtonBehavior;

	extern State<int> indicatorOrientation;
	extern State<int> indicatorStyle;
	extern State<int> inactiveIndicatorStyle;
	extern State<bool> indicatorColorFromTheme;
	extern State<std::shared_ptr<GdkRGBA>> indicatorColor;
	extern State<std::shared_ptr<GdkRGBA>> inactiveColor;

	extern State<bool> keyComboActive;
	extern State<bool> keyAloneActive;

	extern State<std::list<std::string>> pinnedAppList;

	// HIDDEN SETTINGS:
	extern State<int> dockSize;
	extern State<double> previewScale;
	extern State<int> previewSleep;
}; // namespace Settings

#endif // SETTINGS_HPP
07070100000044000081A400000000000000000000000165E8B85000002CAC000000000000000000000000000000000000004200000000xfce4-docklike-plugin-20240306~git.da23d2a/src/SettingsDialog.cpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#include "SettingsDialog.hpp"
#include "Plugin.hpp"
#ifdef ENABLE_X11
#include "Hotkeys.hpp"
#endif

namespace SettingsDialog
{
	void popup()
	{
		/* Hook to make sure GtkBuilder knows this is an XfceTitledDialog object */
		if (xfce_titled_dialog_get_type() == 0)
			return;

		GtkBuilder* builder = gtk_builder_new_from_resource("/_dialogs.xml");
		GtkWidget* dialog = (GtkWidget*)gtk_builder_get_object(builder, "dialog");
		gtk_window_set_role(GTK_WINDOW(dialog), "xfce4-panel");
		gtk_widget_show(dialog);
		xfce_panel_plugin_block_menu(Plugin::mXfPlugin);

		g_signal_connect(
			gtk_builder_get_object(builder, "b_close"), "clicked",
			G_CALLBACK(+[](GtkButton* button, GtkWidget* dialogWindow) {
				gtk_widget_hide(dialogWindow);
				gtk_dialog_response(GTK_DIALOG(dialogWindow), 0);
			}),
			dialog);

		g_signal_connect(
			gtk_builder_get_object(builder, "b_help"), "clicked",
			G_CALLBACK(+[](GtkButton* button, GtkWindow* dialogWindow) {
				gtk_show_uri_on_window(dialogWindow, HELP_WEBSITE, GDK_CURRENT_TIME, nullptr);
			}),
			dialog);

		g_signal_connect(dialog, "close",
			G_CALLBACK(+[](GtkDialog* _dialog, GtkBuilder* _builder) {
				xfce_panel_plugin_unblock_menu(Plugin::mXfPlugin);
				g_object_unref(_builder);
			}),
			builder);

		g_signal_connect(dialog, "response",
			G_CALLBACK(+[](GtkDialog* _dialog, gint response, GtkBuilder* _builder) {
				xfce_panel_plugin_unblock_menu(Plugin::mXfPlugin);
				g_object_unref(_builder);
			}),
			builder);

		// =====================================================================

		GObject* noListForSingleWindow = gtk_builder_get_object(builder, "c_noListForSingleWindow");
		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(noListForSingleWindow), Settings::noWindowsListIfSingle);
		g_signal_connect(noListForSingleWindow, "toggled",
			G_CALLBACK(+[](GtkToggleButton* noWindowsListIfSingle) {
				Settings::noWindowsListIfSingle.set(gtk_toggle_button_get_active(noWindowsListIfSingle));
			}),
			nullptr);

		GObject* onlyDisplayVisible = gtk_builder_get_object(builder, "c_onlyDisplayVisible");
		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(onlyDisplayVisible), Settings::onlyDisplayVisible);
		g_signal_connect(onlyDisplayVisible, "toggled",
			G_CALLBACK(+[](GtkToggleButton* _onlyDisplayVisible) {
				Settings::onlyDisplayVisible.set(gtk_toggle_button_get_active(_onlyDisplayVisible));
				Xfw::setVisibleGroups();
			}),
			nullptr);

		GObject* onlyDisplayScreen = gtk_builder_get_object(builder, "c_onlyDisplayScreen");
		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(onlyDisplayScreen), Settings::onlyDisplayScreen);
		g_signal_connect(onlyDisplayScreen, "toggled",
			G_CALLBACK(+[](GtkToggleButton* _onlyDisplayScreen) {
				Settings::onlyDisplayScreen.set(gtk_toggle_button_get_active(_onlyDisplayScreen));
				Xfw::setVisibleGroups();
			}),
			nullptr);

		GObject* showPreviews = gtk_builder_get_object(builder, "c_showPreviews");
#ifdef ENABLE_X11
		if (GDK_IS_X11_DISPLAY(gdk_display_get_default()))
		{
			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(showPreviews), Settings::showPreviews);
			g_signal_connect(showPreviews, "toggled",
				G_CALLBACK(+[](GtkToggleButton* _showPreviews) {
					Settings::showPreviews.set(gtk_toggle_button_get_active(_showPreviews));
				}),
				nullptr);
		}
		else
#endif
		{
			gtk_widget_hide(GTK_WIDGET(showPreviews));
		}
		
		GObject* showWindowCount = gtk_builder_get_object(builder, "c_showWindowCount");
		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(showWindowCount), Settings::showWindowCount);
		g_signal_connect(showWindowCount, "toggled",
			G_CALLBACK(+[](GtkToggleButton* _showWindowCount) {
				Settings::showWindowCount.set(gtk_toggle_button_get_active(_showWindowCount));
			}),
			nullptr);

		GObject* middleButtonBehavior = gtk_builder_get_object(builder, "co_middleButtonBehavior");
		gtk_combo_box_set_active(GTK_COMBO_BOX(middleButtonBehavior), Settings::middleButtonBehavior);
		g_signal_connect(middleButtonBehavior, "changed",
			G_CALLBACK(+[](GtkComboBox* _middleButtonBehavior, GtkWidget* g) {
				Settings::middleButtonBehavior.set(gtk_combo_box_get_active(GTK_COMBO_BOX(_middleButtonBehavior)));
			}),
			dialog);

		// =====================================================================

		GObject* indicatorOrientation = gtk_builder_get_object(builder, "co_indicatorOrientation");
		gtk_combo_box_set_active(GTK_COMBO_BOX(indicatorOrientation), Settings::indicatorOrientation);
		g_signal_connect(indicatorOrientation, "changed",
			G_CALLBACK(+[](GtkComboBox* _indicatorOrientation, GtkWidget* g) {
				Settings::indicatorOrientation.set(gtk_combo_box_get_active(GTK_COMBO_BOX(_indicatorOrientation)));
			}),
			dialog);

		GObject* indicatorStyle = gtk_builder_get_object(builder, "co_indicatorStyle");
		gtk_combo_box_set_active(GTK_COMBO_BOX(indicatorStyle), Settings::indicatorStyle);
		g_signal_connect(indicatorStyle, "changed",
			G_CALLBACK(+[](GtkComboBox* _indicatorStyle, GtkWidget* g) {
				Settings::indicatorStyle.set(gtk_combo_box_get_active(GTK_COMBO_BOX(_indicatorStyle)));
			}),
			dialog);

		GObject* inactiveIndicatorStyle = gtk_builder_get_object(builder, "co_inactiveIndicatorStyle");
		gtk_combo_box_set_active(GTK_COMBO_BOX(inactiveIndicatorStyle), Settings::inactiveIndicatorStyle);
		g_signal_connect(inactiveIndicatorStyle, "changed",
			G_CALLBACK(+[](GtkComboBox* _inactiveIndicatorStyle, GtkWidget* g) {
				Settings::inactiveIndicatorStyle.set(gtk_combo_box_get_active(GTK_COMBO_BOX(_inactiveIndicatorStyle)));
			}),
			dialog);

		GObject* customIndicatorColors = gtk_builder_get_object(builder, "g_customIndicatorColors");
		gtk_widget_set_sensitive(GTK_WIDGET(customIndicatorColors), !Settings::indicatorColorFromTheme);

		GObject* indicatorColor = gtk_builder_get_object(builder, "cp_indicatorColor");
		gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(indicatorColor), Settings::indicatorColor.get().get());
		g_signal_connect(indicatorColor, "color-set",
			G_CALLBACK(+[](GtkColorButton* _indicatorColor, GtkWidget* g) {
				std::shared_ptr<GdkRGBA> color(g_new(GdkRGBA, 1), g_free);
				gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(_indicatorColor), color.get());
				Settings::indicatorColor.set(color);
			}),
			dialog);

		GObject* inactiveColor = gtk_builder_get_object(builder, "cp_inactiveColor");
		gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(inactiveColor), Settings::inactiveColor.get().get());
		g_signal_connect(inactiveColor, "color-set",
			G_CALLBACK(+[](GtkColorButton* _inactiveColor, GtkWidget* g) {
				std::shared_ptr<GdkRGBA> color(g_new(GdkRGBA, 1), g_free);
				gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(_inactiveColor), color.get());
				Settings::inactiveColor.set(color);
			}),
			dialog);

		GObject* indicatorColorFromTheme = gtk_builder_get_object(builder, "c_indicatorColorFromTheme");
		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(indicatorColorFromTheme), Settings::indicatorColorFromTheme);
		g_signal_connect(indicatorColorFromTheme, "toggled",
			G_CALLBACK(+[](GtkToggleButton* _indicatorColorFromTheme, GtkWidget* _customIndicatorColors) {
				Settings::indicatorColorFromTheme.set(gtk_toggle_button_get_active(_indicatorColorFromTheme));
				gtk_widget_set_sensitive(GTK_WIDGET(_customIndicatorColors), !Settings::indicatorColorFromTheme);
			}),
			customIndicatorColors);

		// =====================================================================

		GObject* iconSize = gtk_builder_get_object(builder, "e_iconSize");
		gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(iconSize))), std::to_string(Settings::iconSize).c_str());
		gtk_widget_set_sensitive(GTK_WIDGET(iconSize), Settings::forceIconSize);
		g_signal_connect(iconSize, "changed",
			G_CALLBACK(+[](GtkComboBox* _iconSize) {
				GtkEntry* entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(_iconSize)));
				std::string svalue = Help::String::numericOnly(gtk_entry_get_text(entry));
				int value = std::stoi("0" + svalue);
				Settings::iconSize.set(value);
				gtk_entry_set_text(entry, svalue.c_str());
				if (value < Settings::minIconSize || value > Settings::maxIconSize)
					gtk_style_context_add_class(gtk_widget_get_style_context(GTK_WIDGET(entry)), GTK_STYLE_CLASS_ERROR);
				else
					gtk_style_context_remove_class(gtk_widget_get_style_context(GTK_WIDGET(entry)), GTK_STYLE_CLASS_ERROR);
			}),
			nullptr);

		GObject* forceIconSize = gtk_builder_get_object(builder, "c_forceIconSize");
		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(forceIconSize), Settings::forceIconSize);
		g_signal_connect(forceIconSize, "toggled",
			G_CALLBACK(+[](GtkToggleButton* _forceIconSize, GtkWidget* _iconSize) {
				Settings::forceIconSize.set(gtk_toggle_button_get_active(_forceIconSize));
				gtk_widget_set_sensitive(GTK_WIDGET(_iconSize), Settings::forceIconSize);
			}),
			iconSize);

		// =====================================================================

#ifdef ENABLE_X11
		if (GDK_IS_X11_DISPLAY(gdk_display_get_default()))
		{
			GObject* keyComboActiveWarning = gtk_builder_get_object(builder, "c_keyComboActiveWarning");
			GObject* keyComboActive = gtk_builder_get_object(builder, "c_keyComboActive");
			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(keyComboActive), Settings::keyComboActive);
			g_signal_connect(keyComboActive, "toggled",
				G_CALLBACK(+[](GtkToggleButton* _keyComboActive, GtkWidget* tooltip) {
					Settings::keyComboActive.set(gtk_toggle_button_get_active(_keyComboActive));
					updateKeyComboActiveWarning(tooltip);
				}),
				keyComboActiveWarning);

			GObject* keyAloneActive = gtk_builder_get_object(builder, "c_keyAloneActive");
			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(keyAloneActive), Settings::keyAloneActive);
			g_signal_connect(keyAloneActive, "toggled",
				G_CALLBACK(+[](GtkToggleButton* _keyAloneActive) {
					Settings::keyAloneActive.set(gtk_toggle_button_get_active(_keyAloneActive));
				}),
				nullptr);

			if (!Hotkeys::mXIExtAvailable)
			{
				gtk_widget_set_sensitive(GTK_WIDGET(keyAloneActive), false);
				gtk_widget_show(GTK_WIDGET(gtk_builder_get_object(builder, "c_keyAloneActiveWarning")));
			}

			updateKeyComboActiveWarning(GTK_WIDGET(keyComboActiveWarning));
		}
		else
#endif
		{
			gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(builder, "hotkeysFrame")));
		}
	}

#ifdef ENABLE_X11
	void updateKeyComboActiveWarning(GtkWidget* widget)
	{
		if (!Settings::keyComboActive || Hotkeys::mGrabbedKeys == Hotkeys::NbHotkeys)
			gtk_widget_hide(widget);
		else
		{
			std::string tooltip = "";
			gchar* markup;

			if (Hotkeys::mGrabbedKeys > 0)
			{
				markup = g_strdup_printf(_("<b>Only the first %u hotkeys(s) are enabled.</b>\n"), Hotkeys::mGrabbedKeys);
				tooltip += markup;
				g_free(markup);
			}

			markup = g_strdup_printf(_("The &lt;SUPER&gt;+%u combination seems already in use by another process.\nCheck your Xfce settings."), Hotkeys::mGrabbedKeys + 1);
			tooltip += markup;
			g_free(markup);

			gtk_widget_set_tooltip_markup(widget, tooltip.c_str());
			gtk_image_set_from_icon_name(GTK_IMAGE(widget), (Hotkeys::mGrabbedKeys == 0) ? "dialog-error" : "dialog-warning", GTK_ICON_SIZE_SMALL_TOOLBAR);
			gtk_widget_show(widget);
		}
	}
#endif
} // namespace SettingsDialog
07070100000045000081A400000000000000000000000165E8B85000000222000000000000000000000000000000000000004200000000xfce4-docklike-plugin-20240306~git.da23d2a/src/SettingsDialog.hpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#ifndef SETTINGS_DIALOG_HPP
#define SETTINGS_DIALOG_HPP

#include <gtk/gtk.h>

#include <string>

#include "Helpers.hpp"
#include "Plugin.hpp"
#include "Settings.hpp"

namespace SettingsDialog
{
	void popup();
	void updateKeyComboActiveWarning(GtkWidget* widget);
} // namespace SettingsDialog

#endif // SETTINGS_DIALOG_HPP
07070100000046000081A400000000000000000000000165E8B8500000041D000000000000000000000000000000000000003900000000xfce4-docklike-plugin-20240306~git.da23d2a/src/State.tpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#ifndef STATE_TPP
#define STATE_TPP

#include <functional>

template <typename V>
class State
{
  public:
	void setup(V value, std::function<void(V)> feedback)
	{
		v = value;
		f = feedback;
	}

	void set(V value)
	{
		bool change = (v != value);
		v = value;

		if (change)
			f(v);
	}

	V get() { return v; }

	operator V() const { return v; }

  private:
	V v;
	std::function<void(V)> f;
};

template <typename V>
class LogicalState
{
  public:
	void setup(V value, std::function<V()> eval,
		std::function<void(V)> feedback)
	{
		v = value;
		e = eval;
		f = feedback;
	}

	void updateState()
	{
		V value = e();
		if (v != value)
		{
			v = value;
			f(v);
		}
	}

	operator V() const { return v; }
	operator V*() const { return v; }

  private:
	V v;
	std::function<V()> e;
	std::function<void(V)> f;
};

#endif // STATE_HPP
07070100000047000081A400000000000000000000000165E8B85000000C55000000000000000000000000000000000000003900000000xfce4-docklike-plugin-20240306~git.da23d2a/src/Store.tpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#ifndef STORE_HPP
#define STORE_HPP

#include <algorithm>
#include <functional>
#include <list>
#include <map>
#include <utility>
#include <memory>

namespace Store
{
	template <typename K, typename V>
	class KeyStore
	{
	  public:
		void push(K k, V v) { mList.push_front(std::make_pair(k, v)); }

		void pushSecond(K k, V v) { mList.insert(std::next(mList.begin()), std::make_pair(k, v)); }

		V pop(K k)
		{
			typename std::list<std::pair<const K, V>>::iterator it = std::find_if(
				mList.begin(), mList.end(), [&k](std::pair<const K, V> o) -> bool { return (o.first == k); });

			if (it != mList.end())
			{
				V v = it->second;
				mList.erase(it);
				return v;
			}

			return nullptr;
		}

		V get(K k)
		{
			typename std::list<std::pair<const K, V>>::iterator it = std::find_if(
				mList.begin(), mList.end(), [&k](std::pair<const K, V> o) -> bool { return (o.first == k); });

			if (it != mList.end())
				return it->second;

			return nullptr;
		}

		V moveToStart(K k)
		{
			V v = pop(k);
			mList.push_front(std::make_pair(k, v));

			return v;
		}

		V findIf(std::function<bool(std::pair<const K, V>)> pred)
		{
			typename std::list<std::pair<const K, V>>::iterator it = std::find_if(mList.begin(), mList.end(), pred);
			if (it != mList.end())
				return it->second;

			return nullptr;
		}

		void forEach(std::function<void(std::pair<const K, V>)> funct)
		{
			std::for_each(mList.begin(), mList.end(), funct);
		}

		void clear() { mList.clear(); }

		uint size() { return mList.size(); }

		V first() { return mList.front().second; }

		std::list<std::pair<const K, V>> mList;
	};

	template <typename K, typename V>
	class Map
	{
	  public:
		void set(K k, V v) { mMap[k] = v; }

		V get(K k)
		{
			typename std::map<const K, V>::iterator it = mMap.find(k);
			if (it != mMap.end())
				return it->second;

			return nullptr;
		}

		void remove(K k)
		{
			typename std::map<const K, V>::iterator it = mMap.find(k);
			if (it != mMap.end())
				mMap.erase(it);
		}

		void clear() { mMap.clear(); }

	  private:
		std::map<const K, V> mMap;
	};

	template <typename V>
	class List
	{
	  public:
		void push(V v) { mList.push_back(v); }

		void pop(V v) { mList.remove(v); }

		V get(uint index) { return *std::next(mList.begin(), index); }

		uint getIndex(V v)
		{
			typename std::list<V>::iterator it = std::find(mList.begin(), mList.end(), v);
			return std::distance(mList.begin(), it);
		}

		V findIf(std::function<bool(V)> pred)
		{
			typename std::list<V>::iterator it = std::find_if(mList.begin(), mList.end(), pred);
			if (it != mList.end())
				return *it;

			return nullptr;
		}

		void forEach(std::function<void(V)> funct) { std::for_each(mList.begin(), mList.end(), funct); }

		uint size() { return mList.size(); }

	  private:
		std::list<V> mList;
	};

	template<typename T>
	using AutoPtr = std::unique_ptr<T,std::function<void(void*)>>;
} // namespace Store

#endif // STORE_HPP
07070100000048000081A400000000000000000000000165E8B85000000CE4000000000000000000000000000000000000003900000000xfce4-docklike-plugin-20240306~git.da23d2a/src/Theme.cpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#include "Theme.hpp"

void Theme::init()
{
	g_signal_connect(G_OBJECT(gtk_widget_get_style_context(Dock::mBox)), "changed",
		G_CALLBACK(+[](GtkStyleContext* stylecontext)
				   { load(); }),
		nullptr);
}

void Theme::load()
{
	GtkCssProvider* css_provider = gtk_css_provider_new();
	std::string css = get_theme_colors();
	gchar* filename = xfce_resource_lookup(XFCE_RESOURCE_CONFIG, "xfce4-docklike-plugin/gtk.css");

	if (filename != nullptr && g_file_test(filename, G_FILE_TEST_IS_REGULAR))
	{
		FILE* f = fopen(filename, "r");

		if (f != nullptr)
		{
			int read_char;
			while ((read_char = getc(f)) != EOF)
				css += read_char;
			fclose(f);
		}
		else // Empty file
			css += DEFAULT_THEME;
	}
	else // No file
		css += DEFAULT_THEME;

	if (gtk_css_provider_load_from_data(css_provider, css.c_str(), -1, nullptr))
		gtk_style_context_add_provider_for_screen(gdk_screen_get_default(),
			GTK_STYLE_PROVIDER(css_provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);

	g_free(filename);
	g_object_unref(css_provider);
}

std::string Theme::get_theme_colors()
{
	GtkWidget* menu = gtk_menu_new();
	GtkStyleContext* sc = gtk_widget_get_style_context(menu);
	gchar* str;

	GValue gv = G_VALUE_INIT;
	gtk_style_context_get_property(sc, "background-color", GTK_STATE_FLAG_NORMAL, &gv);
	str = gdk_rgba_to_string((GdkRGBA*)g_value_get_boxed(&gv));
	std::string menuBg = str;
	g_free(str);
	g_value_unset(&gv);

	gv = G_VALUE_INIT;
	gtk_style_context_get_property(sc, "color", GTK_STATE_FLAG_NORMAL, &gv);
	str = gdk_rgba_to_string((GdkRGBA*)g_value_get_boxed(&gv));
	std::string itemLabel = str;
	g_free(str);
	g_value_unset(&gv);

	gv = G_VALUE_INIT;
	gtk_style_context_get_property(sc, "color", GTK_STATE_FLAG_PRELIGHT, &gv);
	str = gdk_rgba_to_string((GdkRGBA*)g_value_get_boxed(&gv));
	std::string itemLabelHover = str;
	g_free(str);
	g_value_unset(&gv);

	gv = G_VALUE_INIT;
	gtk_style_context_get_property(sc, "background-color", GTK_STATE_FLAG_PRELIGHT, &gv);
	str = gdk_rgba_to_string((GdkRGBA*)g_value_get_boxed(&gv));
	std::string itemBgHover = str;
	g_free(str);
	g_value_unset(&gv);

	str = gdk_rgba_to_string(Settings::indicatorColor.get().get());
	std::string indicatorColor = str;
	g_free(str);
	str = gdk_rgba_to_string(Settings::inactiveColor.get().get());
	std::string inactiveColor = str;
	g_free(str);

	if (Settings::indicatorColorFromTheme)
	{
		gv = G_VALUE_INIT;
		gtk_style_context_get_property(sc, "color", GTK_STATE_FLAG_NORMAL, &gv);
		str = gdk_rgba_to_string((GdkRGBA*)g_value_get_boxed(&gv));
		indicatorColor = str;
		inactiveColor = str;
		g_free(str);
		g_value_unset(&gv);
	}

	gtk_widget_destroy(menu);

	std::string css = "@define-color menu_bgcolor " + menuBg + ";\n";
	css += "@define-color menu_item_color " + itemLabel + ";\n";
	css += "@define-color menu_item_color_hover " + itemLabelHover + ";\n";
	css += "@define-color menu_item_bgcolor_hover " + itemBgHover + ";\n";
	css += "@define-color active_indicator_color " + indicatorColor + ";\n";
	css += "@define-color inactive_indicator_color " + inactiveColor + ";\n";
	return css;
}
07070100000049000081A400000000000000000000000165E8B8500000028E000000000000000000000000000000000000003900000000xfce4-docklike-plugin-20240306~git.da23d2a/src/Theme.hpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#ifndef THEME_HPP
#define THEME_HPP

#define DEFAULT_THEME ".menu { margin: 0; padding: 0; border: 0; background-color: @menu_bgcolor; }\n" \
					  ".hover_menu_item { background-color: alpha(@menu_item_color_hover, 0.2); }\n";

#include <gtk/gtk.h>

#include <iostream>
#include <string>

#include "Dock.hpp"

namespace Theme
{
	void init();
	void load();
	std::string get_theme_colors();
} // namespace Theme

#endif // THEME_HPP
0707010000004A000081A400000000000000000000000165E8B85000002488000000000000000000000000000000000000003700000000xfce4-docklike-plugin-20240306~git.da23d2a/src/Xfw.cpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#ifdef ENABLE_X11
#include <gdk/gdkx.h>
#endif

#include "Xfw.hpp"

namespace Xfw
{
	XfwScreen* mXfwScreen;
	XfwWorkspaceGroup* mXfwWorkspaceGroup;
	Store::KeyStore<XfwWindow*, std::shared_ptr<GroupWindow>> mGroupWindows;

	namespace // private:
	{
		std::string getGroupNameSys(XfwWindow* xfwWindow)
		{
			// Xfw method const char *
			const gchar* const* class_ids = xfw_window_get_class_ids(xfwWindow);
			if (!xfce_str_is_empty(class_ids[0]))
				return class_ids[0];

			// proc/{pid}/cmdline method
			XfwApplicationInstance* instance = xfw_application_get_instance(xfw_window_get_application(xfwWindow), xfwWindow);
			char buffer[512];
			std::string path = "/proc/" + std::to_string(xfw_application_instance_get_pid(instance)) + "/cmdline";
			int fd = open(path.c_str(), O_RDONLY);

			if (fd >= 0)
			{
				int nbr = read(fd, buffer, 512);
				::close(fd);

				char* exe = g_path_get_basename(buffer);
				std::string exe_out = exe;
				g_free(exe);
				if (exe_out != "python") // ADDIT graphical interpreters here
					return exe_out;

				char* it = buffer;
				while (*it++)
					;

				if (it < buffer + nbr)
				{
					gchar* basename = g_path_get_basename(it);
					std::string basename_out = basename;
					g_free(basename);
					return basename_out;
				}
			}

			// fallback : return window's name
			return xfw_window_get_name(xfwWindow);
		}
	} // namespace

	// public:

	void init()
	{
		xfw_set_client_type(XFW_CLIENT_TYPE_PAGER);
		mXfwScreen = xfw_screen_get_default();

		g_signal_connect(G_OBJECT(mXfwScreen), "window-opened",
			G_CALLBACK(+[](XfwScreen* screen, XfwWindow* xfwWindow) {
				std::shared_ptr<GroupWindow> newWindow = std::make_shared<GroupWindow>(xfwWindow);
				mGroupWindows.pushSecond(xfwWindow, newWindow);
				newWindow->mGroup->updateStyle();

				if (Settings::showPreviews && newWindow->mGroup->mGroupMenu.mVisible)
					newWindow->mGroupMenuItem->mPreviewTimeout.start();
			}),
			nullptr);

		g_signal_connect(G_OBJECT(mXfwScreen), "window-closed",
			G_CALLBACK(+[](XfwScreen* screen, XfwWindow* xfwWindow) {
				std::shared_ptr<GroupWindow> groupWindow = mGroupWindows.pop(xfwWindow);
			}),
			nullptr);

		g_signal_connect(G_OBJECT(mXfwScreen), "active-window-changed",
			G_CALLBACK(+[](XfwScreen* screen, XfwWindow* previousActiveWindow) {
				XfwWindow* activeXfwWindow = getActiveWindow();
				if (activeXfwWindow != nullptr)
				{
					std::shared_ptr<GroupWindow> activeWindow = mGroupWindows.get(activeXfwWindow);
					Help::Gtk::cssClassAdd(GTK_WIDGET(activeWindow->mGroupMenuItem->mItem), "active_menu_item");
					gtk_widget_queue_draw(activeWindow->mGroup->mButton);
				}
				if (previousActiveWindow != nullptr)
				{
					std::shared_ptr<GroupWindow> prevWindow = mGroupWindows.get(previousActiveWindow);
					if (prevWindow)
					{
						Help::Gtk::cssClassRemove(GTK_WIDGET(prevWindow->mGroupMenuItem->mItem), "active_menu_item");
						gtk_widget_queue_draw(prevWindow->mGroup->mButton);
					}
				}
				setActiveWindow();
			}),
			nullptr);

		XfwWorkspaceManager* wpManager = xfw_screen_get_workspace_manager(Xfw::mXfwScreen);
		mXfwWorkspaceGroup = XFW_WORKSPACE_GROUP(xfw_workspace_manager_list_workspace_groups(wpManager)->data);
		g_signal_connect(G_OBJECT(mXfwWorkspaceGroup), "active-workspace-changed",
			G_CALLBACK(+[](XfwScreen* screen, XfwWindow* xfwWindow) {
				setVisibleGroups();
			}),
			nullptr);
	}

	void finalize()
	{
		mGroupWindows.clear();
		g_signal_handlers_disconnect_by_data(mXfwWorkspaceGroup, nullptr);
		g_signal_handlers_disconnect_by_data(mXfwScreen, nullptr);
		g_object_unref(mXfwScreen);
	}

	XfwWindow* getActiveWindow()
	{
		return xfw_screen_get_active_window(mXfwScreen);
	}

	std::string getGroupName(GroupWindow* groupWindow)
	{
		return Help::String::toLowercase(getGroupNameSys(groupWindow->mXfwWindow));
	}

	void activate(GroupWindow* groupWindow, guint32 timestamp)
	{
#ifdef ENABLE_X11
		if (!timestamp && GDK_IS_X11_DISPLAY(gdk_display_get_default()))
			timestamp = gdk_x11_get_server_time(gdk_get_default_root_window());
#endif

		XfwWorkspace* workspace = xfw_window_get_workspace(groupWindow->mXfwWindow);
		if (workspace != nullptr)
			xfw_workspace_activate(workspace, NULL);

		xfw_window_activate(groupWindow->mXfwWindow, timestamp, NULL);
	}

	void close(GroupWindow* groupWindow, guint32 timestamp)
	{
#ifdef ENABLE_X11
		if (!timestamp && GDK_IS_X11_DISPLAY(gdk_display_get_default()))
			timestamp = gdk_x11_get_server_time(gdk_get_default_root_window());
#endif

		xfw_window_close(groupWindow->mXfwWindow, timestamp, NULL);
	}

	void setActiveWindow()
	{
		XfwWindow* activeWindow = getActiveWindow();
		if (mGroupWindows.size() > 0)
			mGroupWindows.first()->onUnactivate();
		if (activeWindow != nullptr)
			mGroupWindows.moveToStart(activeWindow)->onActivate();
	}

	void setVisibleGroups()
	{
		for (GList* window_l = xfw_screen_get_windows(mXfwScreen);
			 window_l != nullptr;
			 window_l = window_l->next)
		{
			XfwWindow* xfwWindow = XFW_WINDOW(window_l->data);
			std::shared_ptr<GroupWindow> groupWindow = mGroupWindows.get(xfwWindow);

			groupWindow->leaveGroup();
			groupWindow->updateState();
		}
	}

	GtkWidget* buildActionMenu(GroupWindow* groupWindow, Group* group)
	{
		GtkWidget* menu = (groupWindow != nullptr && !groupWindow->getState(XFW_WINDOW_STATE_SKIP_TASKLIST)) ? xfw_window_action_menu_new(groupWindow->mXfwWindow) : gtk_menu_new();
		std::shared_ptr<AppInfo> appInfo = (groupWindow != nullptr) ? groupWindow->mGroup->mAppInfo : group->mAppInfo;

		if (!appInfo->path.empty())
		{
			const gchar* const* actions = appInfo->get_actions();
			for (int i = 0; actions[i]; i++)
			{
				// Desktop actions get inserted into the menu above all the window manager controls.
				// We need an extra separator only if the application is running.
				if (i == 0 && group->mWindowsCount > 0)
					gtk_menu_shell_insert(GTK_MENU_SHELL(menu), gtk_separator_menu_item_new(), 0);

				GDesktopAppInfo* GDAppInfo = g_desktop_app_info_new_from_filename(appInfo->path.c_str());
				gchar* action_name = g_desktop_app_info_get_action_name(GDAppInfo, actions[i]);
				GtkWidget* actionLauncher = gtk_menu_item_new_with_label(action_name);
				g_free(action_name);
				g_object_unref(GDAppInfo);

				g_object_set_data((GObject*)actionLauncher, "action", (gpointer)actions[i]);
				gtk_menu_shell_insert(GTK_MENU_SHELL(menu), actionLauncher, 0 + i);

				g_signal_connect(G_OBJECT(actionLauncher), "activate",
					G_CALLBACK(+[](GtkMenuItem* menuitem, AppInfo* _appInfo) {
						_appInfo->launch_action((const gchar*)g_object_get_data((GObject*)menuitem, "action"));
					}),
					appInfo.get());
			}

			if (group != nullptr)
			{
				GtkWidget* pinToggle = gtk_check_menu_item_new_with_label(group->mPinned ? _("Pinned to Dock") : _("Pin to Dock"));
				GtkWidget* editLauncher = gtk_menu_item_new_with_label(_("Edit Launcher"));

				gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(pinToggle), group->mPinned);
				gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), gtk_separator_menu_item_new());

				gchar* program = g_find_program_in_path("exo-desktop-item-edit");
				if (program != nullptr)
				{
					gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), editLauncher);
					g_free(program);
				}

				gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), pinToggle);

				g_signal_connect(G_OBJECT(pinToggle), "toggled",
					G_CALLBACK(+[](GtkCheckMenuItem* menuitem, Group* _group) {
						_group->mPinned = !_group->mPinned;
						if (!_group->mPinned)
							_group->updateStyle();
						Dock::savePinned();
					}),
					group);

				g_signal_connect(G_OBJECT(editLauncher), "activate",
					G_CALLBACK(+[](GtkMenuItem* menuitem, AppInfo* _appInfo) {
						_appInfo->edit();
					}),
					appInfo.get());

				if (group->mWindowsCount > 1)
				{
					GtkWidget* closeAll = gtk_menu_item_new_with_label(_("Close All"));

					gtk_menu_shell_append(GTK_MENU_SHELL(menu), gtk_separator_menu_item_new());
					gtk_menu_shell_append(GTK_MENU_SHELL(menu), closeAll);

					g_signal_connect(G_OBJECT(closeAll), "activate",
						G_CALLBACK(+[](GtkMenuItem* menuitem, Group* _group) {
							_group->closeAll();
						}),
						group);
				}
			}

			gtk_widget_show_all(menu);

			return menu;
		}

		menu = gtk_menu_new();
		GtkWidget* remove = gtk_menu_item_new_with_label(_("Remove"));
		gtk_menu_shell_append(GTK_MENU_SHELL(menu), remove);

		g_signal_connect(G_OBJECT(remove), "activate",
			G_CALLBACK(+[](GtkMenuItem* menuitem, Group* _group) {
				_group->mPinned = false;
				Dock::savePinned();
				Dock::drawGroups();
			}),
			group);

		gtk_widget_show_all(menu);

		return menu;
	}

	void switchToLastWindow(guint32 timestamp)
	{
		auto it = mGroupWindows.mList.begin();

		while (it != mGroupWindows.mList.end() && it->second->getState(XFW_WINDOW_STATE_SKIP_TASKLIST))
			++it; //skip dialogs
		if (it != mGroupWindows.mList.end())
			++it; //skip current window

		while (it != mGroupWindows.mList.end())
		{
			if (!it->second->getState(XFW_WINDOW_STATE_SKIP_TASKLIST))
			{
				it->second->activate(timestamp);
				return;
			}
			++it;
		}
	}
} // namespace Xfw
0707010000004B000081A400000000000000000000000165E8B85000000486000000000000000000000000000000000000003700000000xfce4-docklike-plugin-20240306~git.da23d2a/src/Xfw.hpp/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#ifndef WNCK_HPP
#define WNCK_HPP

#include <fcntl.h>
#include <gio/gdesktopappinfo.h>
#include <libxfce4windowing/libxfce4windowing.h>
#include <libxfce4windowingui/libxfce4windowingui.h>

#include <map>

#include "Group.hpp"
#include "GroupWindow.hpp"
#include "Helpers.hpp"
#include "Store.tpp"

class GroupWindow;

namespace Xfw
{
	void init();
	void finalize();

	XfwWindow* getActiveWindow();
	std::string getGroupName(GroupWindow* groupWindow);
	GtkWidget* buildActionMenu(GroupWindow* groupWindow, Group* group);

	void close(GroupWindow* groupWindow, guint32 timestamp);
	void activate(GroupWindow* groupWindow, guint32 timestamp);

	void switchToLastWindow(guint32 timestamp);

	void setActiveWindow();
	void setVisibleGroups();

	extern XfwScreen* mXfwScreen;
	extern XfwWorkspaceGroup* mXfwWorkspaceGroup;
	extern Store::KeyStore<XfwWindow*, std::shared_ptr<GroupWindow>> mGroupWindows;
} // namespace Xfw

#endif //WNCK_HPP
0707010000004C000081A400000000000000000000000165E8B850000075D6000000000000000000000000000000000000003C00000000xfce4-docklike-plugin-20240306~git.da23d2a/src/_dialogs.xml<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.2 -->
<interface>
  <requires lib="gtk+" version="3.22"/>
  <requires lib="libxfce4ui-2" version="4.20"/>
  <object class="GtkImage" id="i_close">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
    <property name="icon_name">window-close</property>
  </object>
  <object class="GtkImage" id="i_help">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
    <property name="icon_name">help-browser</property>
  </object>
  <object class="XfceTitledDialog" id="dialog">
    <property name="can_focus">False</property>
    <property name="title">Docklike Taskbar</property>
    <property name="resizable">False</property>
    <property name="icon_name">preferences-system</property>
    <property name="type_hint">normal</property>
    <child internal-child="vbox">
      <object class="GtkBox">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="orientation">vertical</property>
        <property name="spacing">2</property>
        <child internal-child="action_area">
          <object class="GtkButtonBox">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
            <property name="layout_style">end</property>
            <child>
              <object class="GtkButton" id="b_help">
                <property name="label" translatable="yes">_Help</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="receives_default">True</property>
                <property name="image">i_help</property>
                <property name="use_underline">True</property>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">False</property>
                <property name="position">1</property>
                <property name="secondary">True</property>
              </packing>
            </child>
            <child>
              <object class="GtkButton" id="b_close">
                <property name="label" translatable="yes">_Close</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="receives_default">True</property>
                <property name="image">i_close</property>
                <property name="use_underline">True</property>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">False</property>
                <property name="position">0</property>
              </packing>
            </child>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="pack_type">end</property>
            <property name="position">0</property>
          </packing>
        </child>
        <child>
          <object class="GtkBox">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
            <property name="border_width">6</property>
            <property name="orientation">vertical</property>
            <property name="spacing">6</property>
            <child>
              <object class="GtkFrame">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="margin_bottom">6</property>
                <property name="label_xalign">0</property>
                <property name="shadow_type">none</property>
                <child>
                  <object class="GtkGrid">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="margin_left">6</property>
                    <property name="margin_right">6</property>
                    <property name="row_spacing">6</property>
                    <property name="column_spacing">12</property>
                    <child>
                      <object class="GtkCheckButton" id="c_noListForSingleWindow">
                        <property name="label" translatable="yes">Don't show the window list for a single window</property>
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="receives_default">False</property>
                        <property name="halign">start</property>
                        <property name="use_underline">True</property>
                        <property name="draw_indicator">True</property>
                      </object>
                      <packing>
                        <property name="left_attach">0</property>
                        <property name="top_attach">0</property>
                      </packing>
                    </child>
                    <child>
                      <object class="GtkCheckButton" id="c_onlyDisplayVisible">
                        <property name="label" translatable="yes">Only show applications on the current workspace</property>
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="receives_default">False</property>
                        <property name="halign">start</property>
                        <property name="use_underline">True</property>
                        <property name="draw_indicator">True</property>
                      </object>
                      <packing>
                        <property name="left_attach">0</property>
                        <property name="top_attach">1</property>
                      </packing>
                    </child>
                    <child>
                      <object class="GtkCheckButton" id="c_onlyDisplayScreen">
                        <property name="label" translatable="yes">Only show applications on the current display</property>
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="receives_default">False</property>
                        <property name="halign">start</property>
                        <property name="use_underline">True</property>
                        <property name="draw_indicator">True</property>
                      </object>
                      <packing>
                        <property name="left_attach">0</property>
                        <property name="top_attach">2</property>
                      </packing>
                    </child>
                    <child>
                      <object class="GtkCheckButton" id="c_showPreviews">
                        <property name="label" translatable="yes">Show preview thumbnails for open windows</property>
                        <property name="visible">True</property>
                        <property name="can_focus">True</property>
                        <property name="receives_default">False</property>
                        <property name="halign">start</property>
                        <property name="valign">start</property>
                        <property name="use_underline">True</property>
                        <property name="draw_indicator">True</property>
                      </object>
                      <packing>
                        <property name="left_attach">0</property>
                        <property name="top_attach">3</property>
                      </packing>
                    </child>
                    <child>
                      <object class="GtkCheckButton" id="c_showWindowCount">
                        <property name="label" translatable="yes">Show the number of open windows (if more than 2)</property>
                        <property name="visible">True</property>
                        <property name="can_focus">True</property>
                        <property name="receives_default">False</property>
                        <property name="halign">start</property>
                        <property name="valign">start</property>
                        <property name="use_underline">True</property>
                        <property name="draw_indicator">True</property>
                      </object>
                      <packing>
                        <property name="left_attach">0</property>
                        <property name="top_attach">4</property>
                      </packing>
                    </child>
                    <child>
                      <object class="GtkBox">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="orientation">horizontal</property>
                        <property name="spacing">6</property>
                        <child>
                          <object class="GtkLabel">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                            <property name="halign">start</property>
                            <property name="label" translatable="yes">Middle mouse button:</property>
                          </object>
                          <packing>
                            <property name="expand">False</property>
                            <property name="fill">True</property>
                            <property name="position">0</property>
                          </packing>
                        </child>
                        <child>
                          <object class="GtkComboBoxText" id="co_middleButtonBehavior">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                            <items>
                              <item translatable="yes">Close all</item>
                              <item translatable="yes">Launch new instance</item>
                              <item translatable="yes">Do Nothing</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">0</property>
                        <property name="top_attach">5</property>
                      </packing>
                    </child>
                  </object>
                </child>
                <child type="label">
                  <object class="GtkLabel">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="margin_bottom">6</property>
                    <property name="label" translatable="yes">Behavior</property>
                    <attributes>
                      <attribute name="weight" value="bold"/>
                    </attributes>
                  </object>
                </child>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">True</property>
                <property name="position">0</property>
              </packing>
            </child>
            <child>
              <object class="GtkFrame">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="margin_bottom">6</property>
                <property name="label_xalign">0</property>
                <property name="shadow_type">none</property>
                <child>
                  <object class="GtkGrid">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="margin_left">6</property>
                    <property name="margin_right">6</property>
                    <property name="row_spacing">6</property>
                    <property name="column_spacing">12</property>
                    <child>
                      <object class="GtkLabel">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="halign">start</property>
                        <property name="label" translatable="yes">Active indicator style:</property>
                      </object>
                      <packing>
                        <property name="left_attach">0</property>
                        <property name="top_attach">0</property>
                      </packing>
                    </child>
                    <child>
                      <object class="GtkComboBoxText" id="co_indicatorStyle">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="hexpand">True</property>
                        <items>
                          <item translatable="yes">Bars</item>
                          <item translatable="yes">Dots</item>
                          <item translatable="yes">Rectangles</item>
                          <item translatable="yes">Ciliora</item>
                          <item translatable="yes">Circles</item>
                          <item translatable="yes">None</item>
                        </items>
                      </object>
                      <packing>
                        <property name="left_attach">1</property>
                        <property name="top_attach">0</property>
                      </packing>
                    </child>
                    <child>
                      <object class="GtkLabel">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="halign">start</property>
                        <property name="label" translatable="yes">Inactive indicator style:</property>
                      </object>
                      <packing>
                        <property name="left_attach">0</property>
                        <property name="top_attach">1</property>
                      </packing>
                    </child>
                    <child>
                      <object class="GtkComboBoxText" id="co_inactiveIndicatorStyle">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="hexpand">True</property>
                        <items>
                          <item translatable="yes">Bars</item>
                          <item translatable="yes">Dots</item>
                          <item translatable="yes">Rectangles</item>
                          <item translatable="yes">Ciliora</item>
                          <item translatable="yes">Circles</item>
                          <item translatable="yes">None</item>
                        </items>
                      </object>
                      <packing>
                        <property name="left_attach">1</property>
                        <property name="top_attach">1</property>
                      </packing>
                    </child>
                    <child>
                      <object class="GtkLabel">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="halign">start</property>
                        <property name="label" translatable="yes">Indicator orientation:</property>
                      </object>
                      <packing>
                        <property name="left_attach">0</property>
                        <property name="top_attach">2</property>
                      </packing>
                    </child>
                    <child>
                      <object class="GtkComboBoxText" id="co_indicatorOrientation">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <items>
                          <item translatable="yes">Automatic</item>
                          <item translatable="yes">Bottom</item>
                          <item translatable="yes">Right</item>
                          <item translatable="yes">Top</item>
                          <item translatable="yes">Left</item>
                        </items>
                      </object>
                      <packing>
                        <property name="left_attach">1</property>
                        <property name="top_attach">2</property>
                      </packing>
                    </child>
                    <child>
                      <object class="GtkCheckButton" id="c_indicatorColorFromTheme">
                        <property name="label" translatable="yes">Get indicator color from theme</property>
                        <property name="visible">True</property>
                        <property name="can_focus">True</property>
                        <property name="receives_default">False</property>
                        <property name="halign">start</property>
                        <property name="use_underline">True</property>
                        <property name="draw_indicator">True</property>
                      </object>
                      <packing>
                        <property name="left_attach">0</property>
                        <property name="top_attach">3</property>
                      </packing>
                    </child>
                    <child>
                      <object class="GtkGrid" id="g_customIndicatorColors">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="margin_left">6</property>
                        <property name="margin_right">6</property>
                        <property name="row_spacing">6</property>
                        <property name="column_spacing">12</property>
                        <child>
                          <object class="GtkLabel">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                            <property name="halign">start</property>
                            <property name="label" translatable="yes">Active indicator:</property>
                          </object>
                          <packing>
                            <property name="left_attach">0</property>
                            <property name="top_attach">0</property>
                          </packing>
                        </child>
                        <child>
                          <object class="GtkColorButton" id="cp_indicatorColor">
                            <property name="visible">True</property>
                            <property name="can_focus">True</property>
                            <property name="receives_default">False</property>
                            <property name="use_alpha">True</property>
                          </object>
                          <packing>
                            <property name="left_attach">1</property>
                            <property name="top_attach">0</property>
                          </packing>
                        </child>
                        <child>
                          <object class="GtkLabel">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                            <property name="halign">start</property>
                            <property name="label" translatable="yes">Inactive indicator:</property>
                          </object>
                          <packing>
                            <property name="left_attach">0</property>
                            <property name="top_attach">1</property>
                          </packing>
                        </child>
                        <child>
                          <object class="GtkColorButton" id="cp_inactiveColor">
                            <property name="visible">True</property>
                            <property name="can_focus">True</property>
                            <property name="receives_default">False</property>
                            <property name="use_alpha">True</property>
                          </object>
                          <packing>
                            <property name="left_attach">1</property>
                            <property name="top_attach">1</property>
                          </packing>
                        </child>
                      </object>
                      <packing>
                        <property name="left_attach">1</property>
                        <property name="top_attach">4</property>
                      </packing>
                    </child>
                    <child>
                      <object class="GtkCheckButton" id="c_forceIconSize">
                        <property name="label" translatable="yes">Force icon size:</property>
                        <property name="visible">True</property>
                        <property name="can_focus">True</property>
                        <property name="receives_default">False</property>
                        <property name="halign">start</property>
                        <property name="use_underline">True</property>
                        <property name="draw_indicator">True</property>
                      </object>
                      <packing>
                        <property name="left_attach">0</property>
                        <property name="top_attach">5</property>
                      </packing>
                    </child>
                    <child>
                      <object class="GtkComboBoxText" id="e_iconSize">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="has_entry">True</property>
                        <items>
                          <item>16</item>
                          <item>24</item>
                          <item>32</item>
                          <item>48</item>
                          <item>64</item>
                          <item>96</item>
                          <item>128</item>
                        </items>
                        <child internal-child="entry">
                          <object class="GtkEntry">
                            <property name="can_focus">True</property>
                          </object>
                        </child>
                      </object>
                      <packing>
                        <property name="left_attach">1</property>
                        <property name="top_attach">5</property>
                      </packing>
                    </child>
                  </object>
                </child>
                <child type="label">
                  <object class="GtkLabel">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="margin_bottom">6</property>
                    <property name="label" translatable="yes">Appearance</property>
                    <attributes>
                      <attribute name="weight" value="bold"/>
                    </attributes>
                  </object>
                </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="hotkeysFrame">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="margin_bottom">6</property>
                <property name="label_xalign">0</property>
                <property name="shadow_type">none</property>
                <child>
                  <object class="GtkGrid">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="margin_left">6</property>
                    <property name="margin_right">6</property>
                    <property name="row_spacing">6</property>
                    <property name="column_spacing">12</property>
                    <child>
                      <object class="GtkCheckButton" id="c_keyComboActive">
                        <property name="label" translatable="yes">Switch between applications with &lt;SUPER&gt;+[1, 2, ...]</property>
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="receives_default">False</property>
                        <property name="halign">start</property>
                        <property name="use_underline">True</property>
                        <property name="draw_indicator">True</property>
                      </object>
                      <packing>
                        <property name="left_attach">0</property>
                        <property name="top_attach">0</property>
                      </packing>
                    </child>
                    <child>
                      <object class="GtkImage" id="c_keyComboActiveWarning">
                        <property name="can_focus">False</property>
                        <property name="halign">start</property>
                        <property name="valign">start</property>
                        <property name="stock">dialog-warning</property>
                      </object>
                      <packing>
                        <property name="left_attach">1</property>
                        <property name="top_attach">0</property>
                      </packing>
                    </child>
                    <child>
                      <object class="GtkCheckButton" id="c_keyAloneActive">
                        <property name="label" translatable="yes">Switch to the last window with &lt;SUPER&gt;</property>
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="receives_default">False</property>
                        <property name="halign">start</property>
                        <property name="use_underline">True</property>
                        <property name="draw_indicator">True</property>
                      </object>
                      <packing>
                        <property name="left_attach">0</property>
                        <property name="top_attach">1</property>
                      </packing>
                    </child>
                    <child>
                      <object class="GtkImage" id="c_keyAloneActiveWarning">
                        <property name="can_focus">False</property>
                        <property name="tooltip_markup" translatable="yes">&lt;b&gt;This feature is disabled.&lt;/b&gt;
It requires X11 XInput2.0 extension which is is not provided by your system.</property>
                        <property name="halign">start</property>
                        <property name="valign">start</property>
                        <property name="stock">dialog-warning</property>
                      </object>
                      <packing>
                        <property name="left_attach">1</property>
                        <property name="top_attach">1</property>
                      </packing>
                    </child>
                  </object>
                </child>
                <child type="label">
                  <object class="GtkLabel">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="margin_bottom">6</property>
                    <property name="label" translatable="yes">Keyboard hotkeys</property>
                    <attributes>
                      <attribute name="weight" value="bold"/>
                    </attributes>
                  </object>
                </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>
</interface>
0707010000004D000081A400000000000000000000000165E8B85000000087000000000000000000000000000000000000003F00000000xfce4-docklike-plugin-20240306~git.da23d2a/src/_gresources.xml<?xml version="1.0" encoding="UTF-8"?>
<gresources>
  <gresource prefix="/">
    <file>_dialogs.xml</file>
  </gresource>
</gresources>0707010000004E000081A400000000000000000000000165E8B850000000E1000000000000000000000000000000000000004300000000xfce4-docklike-plugin-20240306~git.da23d2a/src/docklike.desktop.in[Xfce Panel]
Type=X-XFCE-PanelPlugin
Encoding=UTF-8
Name=Docklike Taskbar
_Comment=A modern, minimalist taskbar for Xfce
Icon=preferences-system
X-XFCE-Module=docklike
X-XFCE-Internal=false
X-XFCE-Unique=false
X-XFCE-API=2.0
0707010000004F000081A400000000000000000000000165E8B85000000161000000000000000000000000000000000000003A00000000xfce4-docklike-plugin-20240306~git.da23d2a/src/register.c/*
 * Docklike Taskbar - A modern, minimalist taskbar for Xfce
 * Copyright (c) 2019-2020 Nicolas Szabo <nszabo@vivaldi.net>
 * Copyright (c) 2020-2021 David Keogh <davidtkeogh@gmail.com>
 * gnu.org/licenses/gpl-3.0
 */

#include <libxfce4panel/libxfce4panel.h>

extern void construct(XfcePanelPlugin* xfPlugin);

XFCE_PANEL_PLUGIN_REGISTER(construct);
07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000B00000000TRAILER!!!762 blocks
openSUSE Build Service is sponsored by