pax_global_header00006660000000000000000000000064151377347370014533gustar00rootroot0000000000000052 comment=9680d2fe7aae8e8b060f7283922afcc8ebd7d8d5 labwc-tweaks-0.1.0/000077500000000000000000000000001513773473700141155ustar00rootroot00000000000000labwc-tweaks-0.1.0/.github/000077500000000000000000000000001513773473700154555ustar00rootroot00000000000000labwc-tweaks-0.1.0/.github/workflows/000077500000000000000000000000001513773473700175125ustar00rootroot00000000000000labwc-tweaks-0.1.0/.github/workflows/build.yml000066400000000000000000000036261513773473700213430ustar00rootroot00000000000000name: CI on: pull_request: branches: - '*' jobs: build: name: Build timeout-minutes: 20 strategy: fail-fast: false matrix: name: [ Arch, Debian ] include: - name: Arch os: ubuntu-latest container: archlinux:base-devel - name: Debian os: ubuntu-latest container: debian:trixie runs-on: ${{ matrix.os }} container: ${{ matrix.container }} steps: - name: Checkout uses: actions/checkout@v4 - name: Install Arch Linux dependencies if: matrix.name == 'Arch' run: | pacman-key --init pacman -Syu --noconfirm packages=( clang cmake git libxml2 qt6-base qt6-tools ) pacman -S --noconfirm ${packages[@]} - name: Install Debian Testing dependencies if: matrix.name == 'Debian' run: | apt-get update apt-get upgrade -y apt-get install -y cmake clang g++ gcc git \ libglib2.0 libgl1-mesa-dev libxml2-dev pkg-config \ qt6-base-dev qt6-l10n-tools \ qt6-tools-dev qt6-tools-dev-tools # These builds are executed on all runners - name: Build with gcc run: | export CC=gcc export CXX=g++ cmake \ -D CMAKE_BUILD_TYPE=Release \ -B build-gcc \ -S . cmake --build build-gcc --verbose - name: Build with clang run: | export CC=clang export CXX=clang++ cmake \ -D CMAKE_BUILD_TYPE=Release \ -B build-clang \ -S . cmake --build build-clang --verbose - name: Run tests run: | ctest --verbose --force-new-ctest-process --test-dir build-gcc labwc-tweaks-0.1.0/.gitignore000066400000000000000000000000201513773473700160750ustar00rootroot00000000000000build*/ *.user* labwc-tweaks-0.1.0/BSD-3-Clause000066400000000000000000000027131513773473700160250ustar00rootroot00000000000000License: BSD-3-Clause Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. labwc-tweaks-0.1.0/CMakeLists.txt000066400000000000000000000157571513773473700166740ustar00rootroot00000000000000cmake_minimum_required(VERSION 3.5) project(labwc-tweaks VERSION 0.1.0 LANGUAGES CXX ) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") include(Config.cmake) # QtCreator doesn't use the system locale and I see no way to prefix with LANG=XYZ.UTF-8 the command, # so enabling these 2 settings we can test any language, see initLocale() in main.cpp. set(PROJECT_TRANSLATION_TEST_ENABLED 0 CACHE STRING "Whether to enable translation testing [default: 0]") set(PROJECT_TRANSLATION_TEST_LANGUAGE "en" CACHE STRING "Country code of language to test in IDE [default: en]") set(PROJECT_QT_VERSION 6 CACHE STRING "Qt version to use [Default: 6]") option(PROJECT_TRANSLATIONS_UPDATE "Update source translations [default: OFF]" OFF) if(ASAN) MESSAGE(NOTICE "Use Address Sanitizer") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fsanitize=undefined") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fsanitize=undefined") endif() find_package(QT NAMES Qt${PROJECT_QT_VERSION}) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools) find_package(PkgConfig REQUIRED) pkg_search_module(GLIB REQUIRED glib-2.0) find_package(LibXml2 REQUIRED) set(PROJECT_SOURCES src/main.cpp src/maindialog.cpp src/maindialog.h src/layoutmodel.cpp src/layoutmodel.h src/environment.cpp src/environment.h src/setting.cpp src/setting.h src/settings.cpp src/settings.h src/xml.cpp src/xml.h src/find-themes.cpp src/find-themes.h src/pair.h src/parse-bool.cpp src/parse-bool.h src/nodename.cpp src/nodename.h src/appearance.cpp src/appearance.h src/appearance.ui src/behaviour.cpp src/behaviour.h src/behaviour.ui src/mouse.cpp src/mouse.h src/mouse.ui src/keyboard.cpp src/keyboard.h src/keyboard.ui src/touchscreen.cpp src/touchscreen.h src/touchscreen.ui src/about.cpp src/about.h src/about.ui src/template.cpp src/template.h src/template.ui ) set(PROJECT_OTHER_FILES .github/workflows/build.yml README.md ) file(GLOB PROJECT_TRANSLATION_SOURCES "${PROJECT_TRANSLATIONS_DIR}/*") source_group("" FILES ${PROJECT_SOURCES} ${PROJECT_TRANSLATION_SOURCES} ) #=================================================================================================== # Translations #=================================================================================================== include(GNUInstallDirs) include(LXQtTranslate) lxqt_translate_ts(PROJECT_QM_FILES SOURCES ${PROJECT_SOURCES} TEMPLATE ${PROJECT_ID} TRANSLATION_DIR "${PROJECT_TRANSLATIONS_DIR}" UPDATE_TRANSLATIONS ${PROJECT_TRANSLATIONS_UPDATE} INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/${PROJECT_ID}/translations" ) lxqt_translate_desktop(PROJECT_DESKTOP_FILES SOURCES "${CMAKE_BINARY_DIR}/${PROJECT_APPSTREAM_ID}.desktop.in" TRANSLATION_DIR "${PROJECT_TRANSLATIONS_DIR}" USE_YAML ) #=================================================================================================== # Tests #=================================================================================================== include(CTest) add_executable(t1000 tests/t1000-add-xpath-node.cpp tests/tap.cpp src/xml.cpp src/parse-bool.cpp src/nodename.cpp) target_link_libraries(t1000 PRIVATE ${GLIB_LDFLAGS} ${LIBXML2_LIBRARIES}) target_include_directories(t1000 PRIVATE ${GLIB_INCLUDE_DIRS} ${LIBXML2_INCLUDE_DIR}) add_test(t1000 t1000) add_executable(t1001 tests/t1001-nodenames.cpp tests/tap.cpp src/parse-bool.cpp src/nodename.cpp) target_link_libraries(t1001 PRIVATE ${GLIB_LDFLAGS} ${LIBXML2_LIBRARIES}) target_include_directories(t1001 PRIVATE ${GLIB_INCLUDE_DIRS} ${LIBXML2_INCLUDE_DIR}) add_test(t1001 t1001) #=================================================================================================== # Application #=================================================================================================== qt_add_executable(${PROJECT_NAME} MANUAL_FINALIZATION ${PROJECT_SOURCES} ${PROJECT_DESKTOP_FILES} ${PROJECT_OTHER_FILES} ${PROJECT_QM_FILES} ${PROJECT_TRANSLATION_SOURCES} ) set(PROJECT_ICON_SYSTEM_PATH "${CMAKE_INSTALL_FULL_DATADIR}/icons/hicolor/scalable/apps") file(COPY_FILE "${CMAKE_SOURCE_DIR}/data/${PROJECT_APPSTREAM_ID}.svg" "${CMAKE_BINARY_DIR}/${PROJECT_APPSTREAM_ID}.svg" ) target_compile_definitions(${PROJECT_NAME} PRIVATE APPLICATION_NAME="${PROJECT_NAME}" APPLICATION_VERSION="${PROJECT_VERSION}" PROJECT_ID="${PROJECT_ID}" PROJECT_APPSTREAM_ID="${PROJECT_APPSTREAM_ID}" PROJECT_DATA_DIR="${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT_NAME}" PROJECT_ICON_SYSTEM_PATH="${PROJECT_ICON_SYSTEM_PATH}" PROJECT_TRANSLATION_TEST_ENABLED=${PROJECT_TRANSLATION_TEST_ENABLED} PROJECT_TRANSLATION_TEST_LANGUAGE="${PROJECT_TRANSLATION_TEST_LANGUAGE}" ) target_include_directories(${PROJECT_NAME} PRIVATE ${GLIB_INCLUDE_DIRS} ${LIBXML2_INCLUDE_DIR} src ) target_link_libraries(${PROJECT_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Widgets ${GLIB_LDFLAGS} ${LIBXML2_LIBRARIES} ) #target_link_options(${PROJECT_NAME} BEFORE PUBLIC -fsanitize=undefined PUBLIC -fsanitize=address) #=================================================================================================== # Installation #=================================================================================================== configure_file("${CMAKE_SOURCE_DIR}/data/${PROJECT_APPSTREAM_ID}.desktop.in" "${CMAKE_BINARY_DIR}/${PROJECT_APPSTREAM_ID}.desktop.in" @ONLY ) configure_file("${CMAKE_SOURCE_DIR}/data/${PROJECT_APPSTREAM_ID}.appdata.xml.in" "${CMAKE_BINARY_DIR}/${PROJECT_APPSTREAM_ID}.appdata.xml" @ONLY ) install(TARGETS ${PROJECT_NAME} BUNDLE DESTINATION . LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) install(FILES "${CMAKE_BINARY_DIR}/${PROJECT_APPSTREAM_ID}.appdata.xml" DESTINATION "${CMAKE_INSTALL_DATADIR}/metainfo" ) install(FILES "${PROJECT_DESKTOP_FILES}" DESTINATION "${CMAKE_INSTALL_DATADIR}/applications" ) install(FILES "${CMAKE_BINARY_DIR}/${PROJECT_APPSTREAM_ID}.svg" # Don't use PROJECT_ICON_SYSTEM_PATH here which is absolute and doesn't take prefixes into account DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps" ) qt_finalize_executable(${PROJECT_NAME}) #=================================================================================================== # Configuration report #=================================================================================================== message(STATUS " Project name: ${PROJECT_NAME} Version: ${PROJECT_VERSION} Qt version: ${QT_VERSION} Build type: ${CMAKE_BUILD_TYPE} Install prefix: ${CMAKE_INSTALL_PREFIX} Update translations before build: ${PROJECT_TRANSLATIONS_UPDATE} ") labwc-tweaks-0.1.0/Config.cmake000066400000000000000000000036051513773473700163300ustar00rootroot00000000000000#=============================================================================== # Editable project configuration # # Essential, non translatable application information (except DESCRIPTION). # Translatable strings are passed via code. #=============================================================================== set(PROJECT_ID "labwc-tweaks") list(APPEND PROJECT_CATEGORIES "Qt;Settings;DesktopSettings") # Freedesktop menu categories list(APPEND PROJECT_KEYWORDS "labwc;wayland;compositor") set(PROJECT_AUTHOR_NAME "Labwc Team") set(PROJECT_COPYRIGHT_YEAR "2024") # TODO: from git set(PROJECT_DESCRIPTION "Labwc Wayland compositor settings") set(PROJECT_ORGANIZATION_NAME "labwc") set(PROJECT_ORGANIZATION_URL "${PROJECT_ORGANIZATION_NAME}.github.io") set(PROJECT_ORGANIZATION_ID "io.github.${PROJECT_ORGANIZATION_NAME}") set(PROJECT_REPOSITORY_URL "https://github.com/${PROJECT_ORGANIZATION_NAME}/${PROJECT_ID}") set(PROJECT_REPOSITORY_BRANCH "master") set(PROJECT_HOMEPAGE_URL ${PROJECT_REPOSITORY_URL}) # TODO: "https://${PROJECT_ORGANIZATION_URL}/${PROJECT_ID}" set(PROJECT_SPDX_ID "GPL-2.0-only") set(PROJECT_TRANSLATIONS_DIR "${CMAKE_SOURCE_DIR}/data/translations") set(PROJECT_SCREENSHOT_URL "https://raw.githubusercontent.com/labwc/labwc-tweaks/refs/heads/master/data/screenshot.png") #=============================================================================== # Appstream #=============================================================================== set(PROJECT_APPSTREAM_SPDX_ID "CC0-1.0") set(PROJECT_APPSTREAM_ID "labwc_tweaks") #=============================================================================== # Adapt to CMake variables #=============================================================================== set(${PROJECT_NAME}_DESCRIPTION "${PROJECT_DESCRIPTION}") set(${PROJECT_NAME}_HOMEPAGE_URL "${PROJECT_HOMEPAGE_URL}") labwc-tweaks-0.1.0/LICENSE000066400000000000000000000432541513773473700151320ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. labwc-tweaks-0.1.0/README.md000066400000000000000000000045401513773473700153770ustar00rootroot00000000000000[![CI]](https://github.com/labwc/labwc-tweaks/actions/workflows/build.yml)

labwc-tweaks

A GUI settings application for labwc

# About the Project ### Description 1. GUI for managing settings in `~/.config/labwc{rc.xml,environment}` # Getting Started ### Usage Use environment variable `LABWC_CONFIG_DIR` to specify a non-standard location for configuration files. ### dependencies Runtime: - Qt6 base - libxml2 - glib2 Build: - CMake - Qt Linguist Tools - Git (optional, to pull latest VCS checkouts) ### build `CMAKE_BUILD_TYPE` is usually set to `Release`, though `None` might be a valid [alternative].
`CMAKE_INSTALL_PREFIX` has to be set to `/usr` on most operating systems. ```bash cmake -B build -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr -W no-dev cmake --build build --verbose ``` ### test ```bash ctest --verbose --force-new-ctest-process --test-dir build ``` ### install Using `sudo make install` is discouraged, instead use the system package manager where possible. In this packaging simulation, CMake installs the binary to /usr/bin and data files to their respective locations in a "package" directory. ```bash DESTDIR="$(pwd)/package" cmake --install build ``` If you find it a useful tool and want to expand its scope, feel free. ### packages [![Packaging status]](https://repology.org/project/labwc-tweaks/versions) ### translations For contributing translations the [LXQt Weblate] platform can be used. [![Translation status]](https://translate.lxqt-project.org/widgets/labwc/) ### licenses - labwc-tweaks is licensed under the [GPL-2.0-only] license - LXQt build tools cmake modules are licensed under the [BSD-3-Clause] license. [alternative]: https://wiki.archlinux.org/title/CMake_package_guidelines#Fixing_the_automatic_optimization_flag_override [BSD-3-Clause]: BSD-3-Clause [CI]: https://github.com/labwc/labwc-tweaks/actions/workflows/build.yml/badge.svg [GPL-2.0-only]: LICENSE [LXQt Weblate]: https://translate.lxqt-project.org/projects/labwc/labwc-tweaks/ [Packaging status]: https://repology.org/badge/vertical-allrepos/labwc-tweaks.svg [Translation status]: https://translate.lxqt-project.org/widgets/labwc/-/labwc-tweaks/multi-auto.svg labwc-tweaks-0.1.0/bin/000077500000000000000000000000001513773473700146655ustar00rootroot00000000000000labwc-tweaks-0.1.0/bin/gen-layout-list000077500000000000000000000056141513773473700176560ustar00rootroot00000000000000#!/usr/bin/env python3 from enum import Enum HEADER="""#pragma once #include #include // Auto-generated based on "/usr/share/X11/xkb/rules/evdev.lst" struct layout { QString code; QString description; }; static std::vector evdev_lst_layouts = {""" FOOTER="};" class Layout(): def __init__(self, layout, variant, description): self.layout=layout self.variant=variant self.description=description def __lt__(self, other): return self.description < other.description def get_layout(self): if not self.variant: return self.layout return f"{self.layout}({self.variant})" def get_description(self): return self.description def generate_code(layouts): print(HEADER) for layout in layouts: print(f' {{ "{layout.get_layout()}", "{layout.get_description()}" }},') print(FOOTER) def main(): with open("/usr/share/X11/xkb/rules/evdev.lst", 'r', encoding='UTF-8') as f: lines = f.read().split('\n') section_type=Enum('section_type', 'NONE LAYOUT VARIANT') section = section_type.NONE layouts = [] for line in lines: if line.startswith('!'): if line == "! layout": section = section_type.LAYOUT elif line == "! variant": section = section_type.VARIANT else: section = section_type.NONE continue # # The 'layout' section looks like this: # ! layout # al Albanian # et Amharic # am Armenian # ara Arabic # eg Arabic (Egypt) # ... # if section == section_type.LAYOUT: fields = line.strip().split(None, maxsplit=1) if not fields: continue layout = fields[0] description = fields[1] layouts.append(Layout(layout, None, description)) # # The 'variant' section looks like this: # ! variant # plisi al: Albanian (Plisi) # veqilharxhi al: Albanian (Veqilharxhi) # phonetic am: Armenian (phonetic) # phonetic-alt am: Armenian (alt. phonetic) # eastern am: Armenian (eastern) # if section == section_type.VARIANT: fields = line.strip().split(None, maxsplit=1) if not fields: continue variant = fields[0] fields = fields[1].strip().split(':', maxsplit=1) if not fields: continue layout = fields[0] description = fields[1].strip() layouts.append(Layout(layout, variant, description)) generate_code(sorted(layouts)) if __name__ == '__main__': main() labwc-tweaks-0.1.0/bin/lxqt-transupdate000077500000000000000000000044431513773473700201400ustar00rootroot00000000000000#!/bin/sh #============================================================================= # Copyright 2018 Alf Gaida # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #============================================================================= # lxqt-transupdate # Update LXQt translation files. # just to be sure - for distributions that user qtchooser # Debian and derivatives, Fedora, FreeBSD, Mageia, OpenMandriva, PCLinuxOS export QT_SELECT=6 TEMPLATES=$(find . -name \*.ts | grep -v '_') for i in $TEMPLATES; do echo "\n\n==== $i ====\n" TRANSDIR=$(dirname $i) SOURCEDIR=$(dirname $TRANSDIR) # template-update echo "== Template Update ==" echo "lupdate $SOURCEDIR -ts $i -locations absolute -no-obsolete\n" lupdate $SOURCEDIR -ts $i -locations absolute -no-obsolete echo echo "== Language updates ==" echo "lupdate $SOURCEDIR -ts $TRANSDIR/*_*.ts -locations absolute -no-obsolete\n" lupdate $SOURCEDIR -ts $TRANSDIR/*_*.ts -locations absolute -no-obsolete done labwc-tweaks-0.1.0/bootstrap000077500000000000000000000001721513773473700160600ustar00rootroot00000000000000#!/bin/sh cmake \ -D ASAN=1 \ -B build export LABWC_TWEAKS_SHOW_TEMPLATE=1 cmake --build build && build/labwc-tweaks labwc-tweaks-0.1.0/cmake/000077500000000000000000000000001513773473700151755ustar00rootroot00000000000000labwc-tweaks-0.1.0/cmake/LXQtTranslate.cmake000066400000000000000000000205021513773473700207040ustar00rootroot00000000000000#============================================================================= # Copyright 2014 Luís Pereira # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #============================================================================= # # funtion lxqt_translate_ts(qmFiles # [UPDATE_TRANSLATIONS [Yes | No]] # SOURCES # [UPDATE_OPTIONS] update_options # [TEMPLATE] translation_template # [TRANSLATION_DIR] translation_directory # [INSTALL_DIR] install_directory # [COMPONENT] component # ) # Output: # qmFiles The generated compiled translations (.qm) files # # UPDATE_TRANSLATIONS Optional flag. Setting it to Yes, extracts and # compiles the translations. Setting it No, only # compiles them. # # UPDATE_OPTIONS Optional options to lupdate when UPDATE_TRANSLATIONS # is True. # # TEMPLATE Optional translations files base name. Defaults to # ${PROJECT_NAME}. An .ts extensions is added. # # TRANSLATION_DIR Optional path to the directory with the .ts files, # relative to the CMakeList.txt. Defaults to # "translations". # # INSTALL_DIR Optional destination of the file compiled files (qmFiles). # If not present no installation is performed # # COMPONENT Optional install component. Only effective if INSTALL_DIR # present. Defaults to "Runtime". # function(lxqt_translate_ts qmFiles) set(oneValueArgs UPDATE_TRANSLATIONS TEMPLATE TRANSLATION_DIR INSTALL_DIR COMPONENT ) set(multiValueArgs SOURCES UPDATE_OPTIONS) cmake_parse_arguments(TR "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) if (NOT DEFINED TR_UPDATE_TRANSLATIONS) set(TR_UPDATE_TRANSLATIONS "No") endif() if (NOT DEFINED TR_UPDATE_OPTIONS) set(TR_UPDATE_OPTIONS "") endif() if(NOT DEFINED TR_TEMPLATE) set(TR_TEMPLATE "${PROJECT_NAME}") endif() if (NOT DEFINED TR_TRANSLATION_DIR) set(TR_TRANSLATION_DIR "translations") endif() get_filename_component(TR_TRANSLATION_DIR "${TR_TRANSLATION_DIR}" ABSOLUTE) if (EXISTS "${TR_TRANSLATION_DIR}") file(GLOB tsFiles "${TR_TRANSLATION_DIR}/${TR_TEMPLATE}_*.ts") set(templateFile "${TR_TRANSLATION_DIR}/${TR_TEMPLATE}.ts") endif () if (TR_UPDATE_TRANSLATIONS) qt6_create_translation(QMS ${TR_SOURCES} ${templateFile} OPTIONS ${TR_UPDATE_OPTIONS} ) qt6_create_translation(QM ${TR_SOURCES} ${tsFiles} OPTIONS ${TR_UPDATE_OPTIONS} ) else() qt6_add_translation(QM ${tsFiles}) endif() if(TR_UPDATE_TRANSLATIONS) add_custom_target("update_${TR_TEMPLATE}_ts" ALL DEPENDS ${QMS}) endif() if(DEFINED TR_INSTALL_DIR) if(NOT DEFINED TR_COMPONENT) set(TR_COMPONENT "Runtime") endif() install(FILES ${QM} DESTINATION "${TR_INSTALL_DIR}" COMPONENT "${TR_COMPONENT}" ) endif() set(${qmFiles} ${QM} PARENT_SCOPE) endfunction() #============================================================================= # The lxqt_translate_desktop() function was copied from the # LXQt LXQtTranslate.cmake # # Original Author: Alexander Sokolov # # funtion lxqt_translate_desktop(_RESULT # SOURCES # [TRANSLATION_DIR] translation_directory # [USE_YAML] # ) # Output: # _RESULT The generated .desktop (.desktop) files # # Input: # # SOURCES List of input desktop files (.destktop.in) to be translated # (merged), relative to the CMakeList.txt. # # TRANSLATION_DIR Optional path to the directory with the .ts files, # relative to the CMakeList.txt. Defaults to # "translations". # # USE_YAML Flag if *.desktop.yaml translation should be used. #============================================================================= find_package(Perl REQUIRED) function(lxqt_translate_desktop _RESULT) # Parse arguments *************************************** set(options USE_YAML) set(oneValueArgs TRANSLATION_DIR) set(multiValueArgs SOURCES) cmake_parse_arguments(_ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) # check for unknown arguments set(_UNPARSED_ARGS ${_ARGS_UNPARSED_ARGUMENTS}) if (NOT ${_UNPARSED_ARGS} STREQUAL "") MESSAGE(FATAL_ERROR "Unknown arguments '${_UNPARSED_ARGS}'.\n" "See lxqt_translate_desktop() documentation for more information.\n" ) endif() if (NOT DEFINED _ARGS_SOURCES) set(${_RESULT} "" PARENT_SCOPE) return() else() set(_sources ${_ARGS_SOURCES}) endif() if (NOT DEFINED _ARGS_TRANSLATION_DIR) set(_translationDir "translations") else() set(_translationDir ${_ARGS_TRANSLATION_DIR}) endif() get_filename_component (_translationDir ${_translationDir} ABSOLUTE) foreach (_inFile ${_sources}) get_filename_component(_inFile ${_inFile} ABSOLUTE) get_filename_component(_fileName ${_inFile} NAME_WE) #Extract the real extension ............ get_filename_component(_fileExt ${_inFile} EXT) string(REPLACE ".in" "" _fileExt ${_fileExt}) string(REGEX REPLACE "^\\.([^.].*)$" "\\1" _fileExt ${_fileExt}) #....................................... set(_outFile "${CMAKE_CURRENT_BINARY_DIR}/${_fileName}.${_fileExt}") if (_ARGS_USE_YAML) add_custom_command(OUTPUT ${_outFile} COMMAND ${PERL_EXECUTABLE} ${CMAKE_SOURCE_DIR}/cmake/LXQtTranslateDesktopYaml.pl ${_inFile} ${_fileName} ${_translationDir}/${_fileName}[_.]*${_fileExt}.yaml >> ${_outFile} VERBATIM COMMENT "Generating ${_fileName}.${_fileExt}" ) else () file(GLOB _translations ${_translationDir}/${_fileName}[_.]*${_fileExt} ) list(SORT _translations) add_custom_command(OUTPUT ${_outFile} COMMAND grep -v -a "#TRANSLATIONS_DIR=" ${_inFile} > ${_outFile} VERBATIM COMMENT "Generating ${_fileName}.${_fileExt}" ) if (_translations) add_custom_command(OUTPUT ${_outFile} COMMAND grep -h -a "\\[.*]\\s*=" ${_translations} >> ${_outFile} VERBATIM APPEND ) endif () endif () set(__result ${__result} ${_outFile}) endforeach() set(${_RESULT} ${__result} PARENT_SCOPE) endfunction(lxqt_translate_desktop) labwc-tweaks-0.1.0/cmake/LXQtTranslateDesktopYaml.pl000066400000000000000000000030241513773473700224140ustar00rootroot00000000000000use strict; binmode(STDOUT, ":encoding(utf8)"); binmode(STDERR, ":encoding(utf8)"); my $desktop_in = $ARGV[0]; my $filename_base = $ARGV[1]; my @translation_files = glob($ARGV[2]); my $section_re = qr/^\[([^\]]+)]/o; my $lang_re = qr/^.*${filename_base}_([^.]+)\..+$/o; my $strip_re = qr/#TRANSLATIONS_DIR=/o; sub flush_translations { my ($curr_section) = @_; if (defined $curr_section) { my $transl_yaml_re = qr/^${curr_section}\/([^: ]+) ?: *([^ ].*)$/; foreach my $file (@translation_files) { my $language = ($file =~ $lang_re ? "[$1]" : ''); open(my $trans_fh, '<:encoding(UTF-8)', $file) or next; while (my $trans_l = <$trans_fh>) { if ($trans_l =~ $transl_yaml_re) { my ($key, $value) = ($1, $2); $value =~ s/^\s+|\s+$//; $value =~ s/^['"]//; $value =~ s/['"]$//; if (length($value)) { # Don't flush empty (untranslated) strings print(STDOUT "$key$language=$value\n"); } } } close($trans_fh); } } } open(my $fh, '<:encoding(UTF-8)', $desktop_in) or die "Could not open file '$desktop_in' $!"; my $curr_section = undef; while (my $line = <$fh>) { if ($line =~ $section_re) { flush_translations($curr_section); $curr_section = $1; } $line =~ $strip_re or print(STDOUT $line); } flush_translations($curr_section); close($fh); labwc-tweaks-0.1.0/data/000077500000000000000000000000001513773473700150265ustar00rootroot00000000000000labwc-tweaks-0.1.0/data/labwc_tweaks.appdata.xml.in000066400000000000000000000016461513773473700222430ustar00rootroot00000000000000 @PROJECT_APPSTREAM_ID@ @PROJECT_APPSTREAM_SPDX_ID@ @PROJECT_SPDX_ID@ @PROJECT_NAME@ @PROJECT_DESCRIPTION@ @PROJECT_DESCRIPTION_HTML@ @PROJECT_ORGANIZATION_NAME@ @PROJECT_AUTHOR_NAME@ @PROJECT_HOMEPAGE_URL@ Screenshot @PROJECT_SCREENSHOT_URL@ @PROJECT_ID@ @PROJECT_APPSTREAM_ID@.desktop @PROJECT_KEYWORDS_HTML@ @PROJECT_RELEASES_HTML@ labwc-tweaks-0.1.0/data/labwc_tweaks.desktop.in000066400000000000000000000001611513773473700214720ustar00rootroot00000000000000[Desktop Entry] Type=Application Exec=@PROJECT_ID@ Icon=@PROJECT_APPSTREAM_ID@ Categories=@PROJECT_CATEGORIES@; labwc-tweaks-0.1.0/data/labwc_tweaks.svg000066400000000000000000000147321513773473700202240ustar00rootroot00000000000000 labwc-tweaks-0.1.0/data/screenshot.png000066400000000000000000001436261513773473700177250ustar00rootroot00000000000000‰PNG  IHDR<Ç»²‚ÝsRGBÙÉ,gAMA±� üa cHRMz&€„ú€èu0ê`:˜pœºQ< pHYs  šœtIMEê ,ÿÂǃ IDATxÚìÝuœTÕÿÇñ×½SÛÝ K.�€¤Ò R’"¡X( ‚RÆlA 1ƒén�în¶k¶wêÞß Ë¢ ‹,ºðû<�á±ÌÜ{çÖÜyÏ9瞣téÒEG!„â•››‹àÔ©S²7„BqÇ)_¾<‡Uv…B!îdƒA�B!îl&“I�B!îlv»]�B!îlÒ†G!„wÜ ”jÔ‚Ê^pÿÔwi$îZΩðÜ•ºˆE3À«:í»×CÛ6‹¥‡³Áï.lãͮٛˆq™ªÔ�†wEà®`K9ÍÎMpÒêÅBd�fÔ«‚�›Š++�#ld÷…þÜ�¼âIƒûî%ðÜzVíMÂR®!Mê–'Тàræ�°g5«�X‘îç…(™AêR¸¹^¨ú3£ÑX´ÀSéJñp$spÍ^âÒm«Óü¾¦ÔNšË¶W~°”¡¬û*–ÍXƒÃ§ÍÛ¶ ~Ú\6Å&�èˆ&ÌOáBŠ¡Á.²\!„ú*Ä¥b'ñP6ºD�ûš·�ß×^  ~�î8þ²"..l]Ëш&hkç²#YÜÔd|£B°Ê@ Å3;Bƒ1ÎÁŠOò)’] neî¥uM…Ý+grܪX­9­›×ĺp7)º‚3í_Cj®‚oÅÆÜߤ>)³×q¶ÐЍ^e¹çþzx]ÍŠC)8ŒQ4lLüò,Iv¢X¼ p·Ë9#D1¸V.¸Ñ riY—æûóüEÍ7܆§ðý“•Bü›t²bNrÁš‡K×±%æÐ#!¡^—ðêñÞK®¦ã´cï '¥Ë†bÐR‰O2ê…âJ§9p^%4ÔÕ+”c"ñV5¸åÝαkçy²œ:º3�´„´Ë%H×Y?[BAa©‚ÂH9xˆÔ€üÿ‡a�OÄŽ…¨è(²ïàxš]·‘|x?gÍQ”öU@Ï#áôYRrœèºë‰œ¶pùòfð�¦Y›z˜®dõ¡”‹�LC×ÍxùãeÍ–A²5OJw„¸MÔ�¶¸\®¢•ðGºBüÛܪS¿N4a>f]Gµ˜±¼ü±×Yd;.ÅçfçbòwÀ‹¤øT|K‡â™ŠWÒ1NŸQ½Bž®P|SN“ìÕÝ÷œ²\~oeZu«Dà禢ë*&7…3ÆËûÁ·|5ü3±è¤祧�1ìX{„ºw5¦C}œÉç8´ó'Ú$ôq‡¹¡6<…C�„!njušU�í˘{&§®yoŽD&/I§ZP<‰™:èY$$Ø0ø$Ÿz1hÉìYµõžt|Ä£ËFú¹¬NJÃöçõÑÓ9uðe>LŸ&ñÛæ±òX¹ñ dBÉIHÎZI‰X•ЏÅ'`×/–ÄœÙÄJS}´êFCwš=‹”˜ƒl;‡–xˆíšsoç.äeç‘›–H¢õ*E4® Ž­_�Úüh¦±bk.!Uи‰&Õ…-=†}›a•Ò!nyˆú' ç�«Õ:ý›Í†Ò¥KýÔ©Srt„BqÇ)_¾x¹™ÈÊsp26ãšÏÕ*@‚5—øÔœšW–wç/ïÒßB!Dq²X,(]ºtÑcbbnhÆØØØ"•ð”q¹ÓØH fª:ØdJã”1[ö¼¸n �Ti !„(‘‘‘¤¥¥Ý\£å >×|­¼Ëƒ‡r#wY0ë*!. ]òB©àò�½/nø|B!þ)§ÓysUZ^n¦+þ çÒÞv’='�Qþ4ý¾2^$U©�ÓKÔ› . §J‰�¸úù$„B�› ÎX‰6ìx°ÞèYðš¦ÂO­‚9áí}ñ Àâ�±a8Þ{w¡]·í†BånYÝÛ‡Õ“góøÚ\t9~wœÂç“BQ\4M»¹*­Â�LŸÎÙ�¶«N·­ŠérØ)Äé4‘wWõë¿‘1˜Þ-ýÉÎÒiÖºL9ÆQûÅ펪Àˆ>5é\Å oÝIÜ™ã¼>f'k³Añ âñ>õx¾AafqÇN2æ›�Ì‹uÉ™-„Bb·Ûo®„',àräTÕýŠ×*¹VÂÅŠ§,“;Fƒ‹@G<Ê~ÜÍGq³d`P�ÿ&Šmï+‹ûþãÌÞ~‚Yç}èÑ*Kái �ÜW:�áï.áÁ¡ è0˜±ƒkPÕpi•Fu<™;q)�_ŸG‡ï3yp`S V•ª�[ómK�o>˜Eôc¿Ònzm6癈ü¢$Å‘Á¼ï—rOߟ¨øÂr¦ä•gòs /(iRð«‰eÉ*Ú™Këïã°+®ØD‡þ?Sî‰Ù<³ÙÌsƒЦP›mCX$õ’wÑëõ4¼–Õeêó~KOT@ñ-ËØ7RûÌv:ô›Nù¾³é=ý<\€âÅ#/ßÏË>gè?ègÊ=9—WŽòÁ�ÚÜ}7ƒ‘FËB!n“Éts�'ÔïrÈYì}ÅkAú îvþ‚/1D§ÆaN^MRÎz²¬‡ÉNÚKNâÜLÇqOÿû[âÕ r:Ll…hz^ªRÜéÔ­õ½U0yÑ¡WuêÆœbAAñˆB…–µy¬Œ U1Q¹UM`ÎŽl4W"?¯Ì¤Uït/cÁÌnT¬V†{CÀˆ·›‹øØ ’€ÁƒÖmËSÉðw{CÁËÝHN²•3Y` lÓ*´ó+úþLüã(K=*ñv÷JYƒ‰ÒÑ!Tt×ù“L;ÈË}«p·Ÿ³§7õFPIj…„Bˆ+�Æ›+á)<þÑÁœ(x¿ú×Èå\ÕÀãîÕ_„1óÉAq£m«2˜wnáÛ9¤ÎE{ò퉊<Û:”‰³W2¿n3ñê»sw ‘ô“'ôÉ~º ?ҹذ:†*Owbw Öx¾¿‘Ÿu@çÀÜUôµ×eØ�nŒö7àÊËãÌÉ |ùý9p%òÅw'™ØçAÖwÌ&)ÏÆ¡ýñv¹ý]–då¬mÜ÷⽬ù$�Ø '‰ÇÙœZä}«§ŸaÈûF^¼!˦zá®9ˆ;uœ×Ç&rBÏäÇñËÑ{×eÂÇu‰tƒ¼Ì,<Â;»nß²VùÀ+J …BˆârSciþ‚Š2'16ê{| ¹W¾A¨Šq9Wé@ÃS/¢áDq)xöÆ�cøçà[‰_'Wdõ+Kø*ñ*¥Eªƒ>z�»þÆã¤�Èíxn‹±´Ô²<õý÷Tû¹=C—æÈÁBˆ*22’”””âëiùœ=˜þgž£­ïn"Ì©4*s¯à\Ï+kÍŽæDaL1 æ±$YPíÒIŸÈ—`Í-+âÕŽ±KߦÙ5:ˆÒs–1¼í7ä$žÆjµàçç'P!J(]×o.ðü¹‘i²Ó‡ŸRšÐP=É{egþežŸv6Ä3FŸZBJJ²–1¬Å N;†®›éüíIÆdÙÇXüéH¦Ä5æ•OЬ¼'æ0úÍÏØ”œßß­lžô$Ô ÇC³rlÝ4Æ}2�£9’¾„âZ,Kñž >x¹™ÈÊs”ú„xàô¨Ç7'ë´ó©áC­òWNwµy¯µ¼K^^Qæ•åÝË+Î]×ÉÈÈ //—«hÃmü¹Ý�¢(€RÐû€¢(Ÿãb—&š=rkw§úÎ,*ôû†ùÃb]ÇO9dö£âccÝá#ŸjÆ�$Úz¿}õÉ�?Ëì$o@Å»q+‚>K³‰xtø„%Œ£êÎeLØž'ŽºóÔwóxµû¶|v=¨5Ã'&hÖPZ÷\ÄY*ÒoÊ >|ö}>=LŽr¹z866V®pBˆÉ`0àææ†��Ïåkê-–››[<�çjý§Ä§æüå ìjÓõ9YÞ�¿¼â”‘‘�Ëå"((ƒÁp‹>B.ö}ÿ_m8ED©RänYÇþamˆ žƒ†ÆtìZ†Í£ûðãöó”Š*�åü,~ÚÓ‡‡ëšøu¾ бmþ–·fíÇ3"Óþ-ì17!å‹QÌÛ§ÁÎMGðowÆ”x=ô-³çÐæ­ÙdxûdcÝ/ËyöÓŽ”ûßF\3¼ !DIár¹HOO'##__ßí=ÿqà ;ö©5qK¤Ã2òòònqØÐHIJÆ/ wwwpØÑpÇdÐp脺Q{ÈLv 2¢ªù¥/F;©ûBÉÊ< è䦤€‡'>>> ÛÑ�™$';ð÷Ãd2âp8PÜ|Ðòì‡cïÌ÷[[`4]ìpI5ãéÚ‡Á•‰®ëÿÚ¯%!„¸™___’““ÿµÀsKÛðñ_ÿ‚¸µaçÊï%—*ÀtG2‰©Y,Ú„ç—Ú®"š¦áï\ð£ñOCEùËsºî$5)Û‰Ùôlö.'•+_×4¨¨ýkÛ,„7{Ý,jsƒâàææV¼�§iÓ¦tèÐ�èèh<<®~'VNNÇ�gÑ¢ElذAŽº¸39÷²`^,GŽ¡_îlŠÓÐ,þ”®^‹À¸õ슻Ñît’×ÌfÕ¯2æÕÍŒ_O|žÏ� Ô®¨³oóÑ+ÆeBqeö(¶À3`ÀÚ·oÝé<<<¨U«µjÕbÑ¢E|öÙgr$ÄÈÁñi¯òbê3 ød!£Â=ÐóÒ¸phß~°‡ÃrÃKÔÓÖ0ú%•žÏ¼Ã”�ñ1:ÈJ8ÉÎù“Ù¼,¼¼e· !ÄÕ~ƒ:�ÿ¼§å€€€‚ÿ7mÚ”×_ý­Ä|pKKz”€n|±¸3zŠŸb´â¯™¸òööîÃ7§59«ŠAjjêM7º���-Ö†»çÏŸÇ`0üe™'Ož$00° ãAMÓ8zô(åË—ÇbÉ5)))¤¦¦æ^§ª¸¹¹ŽÙl&>>MÓ –«ë:G�¥L™2ùí‚«ÕJJJ *TÀf³‘��@vv6�_7íççGPP�œÉ‚;P+W£Œ `ãðŠl?—�]×È=·š¯g¡\ýÚø+ §®eÁæÚv¬…ÀTƒíCùcÁrÿœwLµèÐ>„-_O`M¬ Ý™Êîo'ó»½›úQÔÈ£[×0}ÖIråB!nZ±�¥u-—Js ¿ÝÎß¡¿ùú'qÑH›¼—bÀ#¸&݆ÿ�ÏßLåÑ·7‚9¢cç¶¡ ¨f¼œûñr¿1´4’Ó.·±Ñòòp͘ Q÷=Ë€ÇZQ3 ÅåBñÀtz î  e°qÁ†¿Õ‘úw²ã®Ž<à¹�1k­ü¥ÕŽ!€@+1q¹—_sůpwP ÙE <)¤9åB!ŠÃM -Q~~~=¿�Fâããó«»,KvlÖ"-×JJr2N€¤D¾Ÿ×�G‡<@­Ös(1ûéÅ |t*§®rW¸ð÷KW#bÔ;Í8:¤?]¶Æ‘§©„ôœÂ‚ö—ËcrÿXÈ û8:5 ÇÜ¢Êê×Ùœuµ=šJJ†aî@æÅFD¨NjJ*::‡£©ÐnW=ñö”á„Bˆ[Åétþû7µêëÊÔbÀ`0`0˜ñЍG÷¶5àÂYb�:É«f°&°7Ãú6 Ü]Å„WX5š5­RÐFço¹{≕³§ÈÓ@ñ©E﮵0žÆ¾—…KÓhÒç<Þ,›e wrÕ5wìeñÒdîéÛŸæáƒ?µŸx‘ŽîX¸ÁŠŽ‹S‡NXÿ^*ZÌ”nß‹VÁx„Bˆ[Å`0O ONNÎUï¶*JiNNÎõFÉV‰xô[¶? º®áÈNâÔÎyüoø4Žk@êJÞyÞÈ ƒ†ðÓQx«v2N°sþdöl¼þºk§f2nÚ]¼öÍ<º$&’�uŽM»öã¨~E6äÈï‹8÷ÄjŸú’÷;®±4»?{™wÔ þe-cÜœ¤[Ç—/�ai²èÄÍÃøÚï2~î¤%Y‰Ý¹•-çÊ fB!Ä-b4‹§§å�>úˆZµj1|QþÿGw¸<íõžÛ»w/#FŒ�£! ”Äž–…B¯³§åÔÔÔâ)XX´hµjÕº"Ô\r½ç-Z$G]qM6›�ììlìv;š&÷Q©ªŠÙlÆËË ³Ù\âÖÏápOàÙ°a‹/.Òà¡J2bºâZ²²²ÈÉÉÁßßOOOŒF©ü¢$r:�dgg“––†‡‡^^^%jýÜÜÜŠ¯éȤI“سg:t ::úš=(çääpüøq ;Bˆ¿e³ÙÈÉÉ!22—Ë…ÃáÀn·ËŽ¢R‹ÅBDD±±±˜L¦‚”KOOÏâm+»aà 1Bˆb‘���ŸŸ‡Cv†%œ®ë躎¦iøùù‘••U¢Ovv¶ŒK)„(™ìv{‰l „ø{&“©Ä•Æþ'ýð!DQhš†¢HUBÜnTU-q7�F |øa§0† vÍ×ÅÃÜê#6ÍHuÿ÷žjXo¾Ùú5=n×qÄÔ²<õÃZ>nëQVÆHíÁsYòF£+Ç€7p<#ytê:&vöGL÷ü�esSËX Çæ•y,}ã96Bü‡L&Sñž^½z]·³!ooozõêU´*~tý|ûönar×` 5ª•^`æî}ìYÿMKè•ÄR¡3£¦-eóöíl^³€ïFÜGØ5÷¸�//`÷¾}ì»êc¿õ« �®Š“âG§ñë™?¸öm4–™‘šg³ldcþßÞ¿¤FñøwëøäAŠ;.ç$Ÿ%--çè> IDAT ]spáÄñb©VÓrS‰��•ÏœÿÕ徸ÛðT«V­X§»x© éLÕ»´£Ôü8¯˜©Õ¥=žgÎ�XR/Êatyí5^x‹žÏ/'ÁRš»ªya»æµÓÅÁÏ¢á—*  F?Ëôï고dzü›?ð¨æp ë ‘/7é,V«‚¯ŸŸì !nRQz2¿Ô›òí¨ØoK�ŒŒDÓ´+À_ž+UªÔ ,U'cÃ\Ö†t¤c¥‹u.ž�èÚ:“ߤp—d†�{yþ“¬Ü´•­—óó˜§ixq�uºh#ï¹\¤FöaÚÖ/é *!M0iö*6mÞ̦ «XøÝóÔ¹xüïê<s§ á¾R—ÞÏB�GÇðý¼Ulز�-kðõkí)Wh÷#Zñê”ßÙ°y#«æ~ÁÀf¡JôÇCÁ·þÓŒùv6KV­eíêÅüüIš„]¹Ö¦Òmúål–®ZÃ²ßÆÑ¯a * ucÒš¯èž¿‡Íõ‡³hëz>í˜_e‚[F.™Å€Æ‹çW º¿þ93—®aÝÚU,úe�Õ0ýe�üۼɻ�Ãñmõ¿Î™ÃœßFÐüb­šb.CÛaS˜·z#–ýÂèGkàUPb"¼ÉsŒþa!«Ö®eÕÂi¼Û§6~_77—U3†óðcïóÓâµlX=—É/4"(¨Oü K×mdõìOyª¶÷åR5€º�½Ã7óV°víjÿ<–çî ¹ÅÇÕD£ÁŸðx%7šŒZÅÊU«˜ùa'BUP¼«Òíõ/˜½l-ëÖ-cÖg¯pÔ¥r03Õz½Ï”‹Yµn=ë–Íâó¡m)k.ê¹ð ;‡¥«Ö±nÍ~ùäEš:Ÿtãsf-[Ëúu«XüëD/tüKº}0‡ùk6±qù¯ŒéS³Ð±â¿W¹re¦Oÿ‰™3»êcúôŸ¨\¹òm½�ÅxzôèA·nÝ®x¨ªú—çzôèqc ÎÛÁÜ%Úw®ƒ¿æ]h|v¿Ÿ.TÞ¡–ç±±céìœÎsÜ˽í2ßÒ›OF÷$ª([iªG¿ÿu"÷»Çhuï½4nÑ™þã׫j]?šÌÓ~+x­K35íÆ[{ª2âÓç©y­ ¦–ÂŽm§¨ØïC†4ºÉm¡vÿ ¼Ý$–I�¶¤QÓ.¼±¹/MI›À¢\5MTé7‘ñ©Ì{µM5áþGÿÇŒC…R[:-fH§Æ4éúÇkexç°Ëëm¬J³Š»xï¹§y¢G/^Û^“‘cž úâ5ß•¸‘É»ÒúÞ{hõøDÎ5x“÷û\ TjóÍc'ЫeSxêK²îëÊ]%¼Iq\`Å'/Ò½M Zuȯ¹mx{D‚ vŠ™úrrìã´¿¯ÏO·Óñ½‘t WÑSw±ãlEê×ñFÁ@…úµ±Ç$S¥AmÜc•úÔÖv³ã˜ÔHº~ð)Ooæý>mhѲ-½GüÀîTí/á?mÙ{üo~é«ß§W·ntëùërò?ÊÞͤڮèsKº¼¹•È~#èU!eÝk÷gü¨{ˆ�ò¶jIÇ—~ÁÕõ#Þh\pŒ ­hå>�Wº¶¦ÝósPº�âËÑݰýø�Zw`ðJžÖ‹Š#ËèŽvf îJ«–mé;9ަo½GÏ2·²âÕÁÖO_aòÁ\Ö½Ù˜š5jP»û8v^Pèôîxžô]É -ªVº>Ï®Šâ•÷{R;  %máã§ÛP©T)ʵ|ƒý5‡ñFGo”"TY)Žó,üàIêUŽ"¢Êƒ|šØŠQƒîÁßå5’nï�§oÐ&·®AXxyê>ü. ÷œ 77Pñ}àajmJë•©þø"ŸDç@«|ËŠc×®]¼÷Þ{8�Ϋ–޼÷Þ{ìÚµKÏ%óæÍ+òã £8¼`!i­»ÐÈ;ŒºÔbïÜå$ºN*¶¡C•#üøéBNfkh™G˜9áW.ÜÕ‘ûJa3u§…� U(â�êÊâüÞ#$h –mÏÃõNñÃÇ39`u‚3•]ßNe­ïý„-_O`M¬ Ý™Êîo'ó»½›ú]¿ƒ±]º–aûW2÷°'¶”ãì8”TPE¦g®á›/7›«a‹]ü V¢«U¸ük]»À²ŸW’àÈåèo3Ù]¶=m¢ €�Ã+°ý\v]#÷Üj¾žy„rõk㯀¡â´¯¸Ÿ&¯$Ʀã²î凯—’T¢ï8Ö±îYÆŠñd;AË<Á¢“X³>Õ ¹‹Ó ¦2ïD6šžÃéß¿bvLmÚ5 AÕγsg*5Ü…E� n3›¾™Ë¹šõ©fV)S÷n|öoç€Ô²mèZë ÓÇþÌžd;ºî ãìNĺnh};~á‹UgÈr9HÙ¹€UçJQ%Úp§A·x®úœ/6Æ’«éäœ]ΔÙç©w#|.ž@ZÖ~ø~;‰6Y'–²ú¨ÊžŸùe_ vg:û—¬ålD¢=c :v-ÃŽ©X~: M·¿y Ó÷Vä¾f¥ŠíÂr©»ú??¼L ªÑBHH+V¤ô½OÐíî3L2ž�‰yTˆò!yᯬòïH#ÿ84-—Ã+²ãB!¥")m:Ưó�R±Á]h)Éù˽boúW×HÛ½”%{ãð¥B¨ƒm³–W¯)áI±(eÚеö& þˆ�1Ù”+WŠ5‘xWƒ]×±m™Ê›Ówá2›ð�ßÀš3‰ŽÌ&//ïšÛ(yüÛ�-[¶òÑGc®è4PÓ4>üp4[¶l½¡e•4&“éöi«é:·ˆù§~¡ûSEm`ò:+zýB#0ˆ{1)…TÜb 8P…˜ëeª=|ñê8ží÷ÏúÿÌ£¬ŸóŸ~·kH8!¦*<5e½ôË¡ÆM5°þjåÒjz¶5±ßwâ—‰,8ogÒ'SùÐóEÞ\Ê= ]œœ_ôö8†}¬ÄÄå^¾(»âˆ‰W¸;( �'ˆÿ4ΟÏâZ§¡žžBšóòåÞžgÇäkº¼l-�”´Ëk¬ç¦’š@P  ‰ºïY<ÖŠš^(.ŠG¦ÓkpW #0ˆ€ìb¬—ßÝsžxWù]¥åÝžçž{ˆ{+…àŽ —Á‹@ËnŽZ"ñ‰à€B<ǶïÆ5¼>Uƒü©¶�9ë·‘ñÈ[Ô¯NJ½R]¹›lÀB #†óIÚM´Ü´Tr v±›-ÿC®¨ž„†xà[î5¦×-ôëÍäAÞO¼ÈôŒT¬®Ë?ìvÖTëåsÆnÆ “Qc0a�nÔ}ñ[fô+tªyØÈ<éÍ¿][c'ØT‰glàY£ébÍ*n&•ß½4òbt*wx‘iAõ/T— ÅÝóÉ ”Üôë� •ä•ç»ÓøÒ¹ zè¶³+5(„û9ŽœÊ",²|A;ˆüa1ŒùÇ&9ÝÃ3ÿUÅŽæ7Oolyy%j¼!!Ö­[‡ÅbfÈ�W;vëׯ¿í·K×õÛèæ-‰sw1pt/2~zš?rþ\ƒ”Lš¹*Äçq¨a¥'•)ZþÜaÀ»Ð+^Þx*—¿02ÏgÜ+ó§X©Ý‡÷&Œæåm“HŠm/¿>ÙŸ9)EH®ªÞž:YY9hèdîþ’—:˜0i*_¶M$üø²‘}Ù§ÉÞãÆ‹-Úc­tŽ£SòçKN$ÙÔˆRA*ùu¨×‹6pC#.h™$'ç‘täm¿‡« ÅyÃw|9SHJÍbÓ'O0j]ÎQwŰ®”D’m»ùìþvLO3^ùšËE©úÝxcT |š¾ ÷“asñÌv<œ“?„ÅuÎ…Çßy•ÊK_ CŸ•œOÏÅXã5Ö/¿ gRI憔7pÒtí[FÿÒ T‘ŽEÉ´|ùŠ‚qìV¬XyGlS±7Z¾ZÝßÍL÷ç+\úš±<÷쳼܆rW|g(×éi:•÷@QÜ)Û¾ÝJïcÙú‹¥>Ù{Ø~$Š.½ës~Çn2u‡·ï£T÷ÞÔ±îbÇ…‹�úÏ,gþÞr<újOî 4ƒbÄ;ªÕﶃ42ÒÒ±DDTäÖÁ9l�»g»—x¾iž*`p'¨bCšÕø‡íËœûY0/–{žDÛŠ¾ÕâO™»[pwø->°zÖ (U¡LAPÓN/aÆîê ÷ ëU¢b…hªÖiF×g¡M�JxàN{6ïÂ3 ˆJubø3 0›¼Špî{àéîàÜ®md«nT¬Üˆ'†6vö2ï¨#üËZƸ9I;¶Ž/_ÃÒdýúÛ†ƒ#_¿Ì«Î!¼4a¯ù©Ø­çØòõì>œTÄ/¸ƒÌ[éÉsß-§f˜…Œƒ 5ì;Žº€S37í.^ûf]ÉÎ:Ǧ]ûqT¿tlN0mø»ø�ú�ßÈ 93“S[6pÐY¶| TÂ{|ÎÚÂíè]'˜úøLÿt #_üŽ_I$-7�ã;vqÂPø„dûïÛ©4üG–T DMÙÍœ7ßa^ÜÅR=…];Na¹ÛÈÎ�ù!(oïvÚR}÷vŽ]ÊýÚæ¼ù †/1ê—ç2;ÉŠ=À¯ å`œö—ÀsaÙ�,l>˜VöCµoâÃnos½£˜³ó3^~ç ^zz"óÞõÃèÌ!ùÌ>V}7Ž�ÿh¿986íUFØ^âÙÑ3hAËKåÂáÍüüÉ-.þÖÓY÷ÓÏ´6“mϘpø‚Ç_žÁïÿ{™ŒÇžæÍéïPÊKÁ–DZí3½4שٌý®Cïà™4+99çÙ¼ëöйE8÷÷òã'‹>bË_N"Ý–Åñí;9ìô,8~óß|…œ§ûñÖÌ‘„YœdÆä§QØãp!„øïyzz¢téÒE�‰‰¹¡ccc øËóÏ<ó �:uºîü ,`êÔ©rnJ@7¾XÜ™�=ÅO1·¾' ÔÔT"""nj±±±7½ ñߊ��%,,욯ggg‡ËåÂÝÝ�¨¨(\.IIIddd iƒOOOÂÃÃQ…ääd¬VkþÈɪŠÅb!77—²eËüóóóÃÏÏ�¬¬,âãã©P¡Š¢�™™Ibb"ªª¢ª*žžž$''S©R%TUÅår‘��@ff&º®c6› ÇÝÝ�„„4M#<<üŠ~—ÞKˆ;M||üu¯ÁÿÖu:22’ôôôâ-á™1cÍš5ûÛ°ÕjeÆŒr6!núÛŸK” aaa× JAAA]s™—‚€——×Ë÷ööÆÛÛû/Ë+üÞ׺x‡††þí{ !n-›ÍV¼�'##ƒ±cÇ2tèP|}}¯v>þøc222dï !®Kõ !ŠƒÑh,þ»´öíÛÇ‹/¾H�=¨V­‘‘‘ÄÄÄpèÐ!f̘!açvüÒI�Ãó�æÈŽBq[2›Í·æ¶ôŒŒ i£#„¸)ªª¢iª*w; q;)‰Ÿ[»Ý.ƒo !J&ƒÁ€Ýn—!ÄmÆn·c0”¬Ñu]—À#„(™¼½½IOO—vŽT¯ŠZÒ‚Ñã/¯]^—ôØX²ýƒ PC÷>õ2}ÛÖ!Ê׈æÒpó³�~Ö¥ ð¤�æ,Ò‚ÑcÏW°L�¸ qx„Bˆ[$77·øOñVg]ÊIlüø9æLäÓÏ'ã1h _ìÊ %1ûéÅ |t*§´«‡¥ó‹æ²ïé®´¯OT[wÖ¼»k¡¶ÎŠ8¡î°?+ÿÿæÐ0²RH±é¤&¥ „F¦‚Õ•X|ÂÃñL;Aª¦à{ÿ>ê–ˇ/ô`ÙÙ,4Y›s‹?ã ü¼<0eçd\àQ¹Ý¹¡\³[!�¤õ‹ÙõÂ#ô®»€qÛ3À·�t­ŽÑ±YÎH!®q¡ÊÎÎÆn·£ir�£%‘ªª˜Íf¼¼¼0›Í%nýŒFcñžqãÆáææV¤ióòòxõÕWo0ôd±ÿ›<—û1“ÇNÁý�þ¼ÿüÇ<;h?<…·j'3á;çOfÏÆKód²aÎJ†~Õ�„¯^gïŸz¦×Î/eiv>_<†H/§VŒãÕIÛɈŸÏÿù2|ÈxôC͉aׂ7<å  yÉ$&5Éø9-IŠÏ '~+vgò7› ÅÍcÔk¡Œö³òR°f_`ã†8ÉFˆ?ËÊÊ"''<==¥óA!J(§ÓIvv6iiixxx”¸ÁC=<eUœë/_ÀþmÞäÝÎáøÞà×Úyàøƒ O�%PÌeh;¬/O·­F ã<›xŸw>@–`"¼I_=û õ¢¼!ó,›û”qÓ÷`ÕÁÜü]–¼˜Å— }èÜ»1eÜÒØ7s4£f:é<üUnPsòv~|w$ßïÉDP¨ûè ú?tü äÄîbþgc˜º9‘’LåbTß�´«Œ’¼‹™ãÞç›m)h©ýÊ,F‡-áÛÝ´,ï�aÇÇ<9þµú¼Â‹Ý/oç¼I£/o§@ÝG_ýu�–Œüy(� Šã xøû’0íIùòšwUºȣͫäf#iÿ2¾ó+Î]«/•€ú}y}ÈÃÔ †Ô㫘öGáŠ(3Õz�bP·:Tõ˜—ÈÁ•S3a)gì taÂÜ.\øf?á-jî—ÈÌ^犲!Å—Ú}?ä�6É|5ô=�µË\\SåÊ•yç�·1›¯^!j·;9r»víº-·Ïl6—à*-¯™¸}ûþ�½ûŽŽ¢êÃ8þ�mÙôÞ�ЛH/6�"JÁˆ‚( 4á¥(X("6 (H�^Cï%ô.�lHïÛfÞ?H Šá÷9'çÀÎî´½3ó̽wïì»þßÞ­ch$mâNÖø6bð—ý¨pì+º>Ó�MÚÒç›MÄ95tAÍ>¶#>«Ó¦Qš¿1…´§F2¶sùËý% åy´äÆöx•í:0öä£ |«>žÊ_—¤‘¼üC†Í�%uõG¼Ðº5­Û�f]Vî…ÐóÉTŒþ˜�ÐjèVÂ_Ä ¥rUת=øü½G±|ÿ-6 å[¿áŒÍ�f�ù³>¬! ]ÿ _d#š½9¥í{|;¦5Ö_ÞâÙFÍé»Ê—W¾@i=€�ÒÇ1¦¥�Y}#iØ )¯}KÝ÷?¤}ĽÜâm¢ÞK 84¼JUâéq‰<3rM¼²ò…Wíêä|õ"�ë?ΣoÍÁ£õhƶ´1©s]І—¦î ƒÔ>”V�Ù¹û¡Ó¸OÏZÃûÏ6¥L™2”.]ŽzýWr1qß~»„ØÏ~ð9�½WѽþC„­E·¨bôû¨=å¸~Èз`èÇ­°MíL…e©Óc#Uš×Á¤9óC±zq ŸtiBÙ"E(Ñ`ûÈ�–ž(y¿\Ó x$dƒÛÿa ±9*š#“˜ý{9“¥Ã¿Þ3ÔJšÏÄ™‡HujdŸ[Á׿ì£X³&T¸TOê<Åò™¹è´tvo>€®LyŠÞÖQ¦aßù£N“á´“¸kQg‹P¾ŒàJíÖÍq�ú†‰-d«YgVðýœsÔlü^yÁJÍØÀÔÉ;¸`u’ñç2Võ@Ù3�ßö%bs¤²éZ΄•§Œ`¨DËÈvþø+Ne j6â6Ï´½¥yª^‘ÿüqi¸ú¿þ�“£¿Žeâ–s{ íø•ç£I ‡Í†¦iX7Oå³õ1øøúR²lK^íTšMã‡2uÇ9Šâ~f6¿ì©ÄS5ŒØ�eiqãéV+Š¢Pºtª¶ù„ß?¯ÁºAùÊíh]ý4_õÿœ]r(UÌ‹„…3ˆòmÉ#¾±¨ªú—õWð¯Û”š±¿3äó5½½ slá§ù'±;³ó¶;‡Ã«²ó|AEÂ)j<ÆŒùG)]»2jbBî>PÏ2û«9ü™žCDD¥K—B¯((>5è9yoºÏäŶCX~&�ˆˆL&Ó ÷§üÉŸ¦ilÙ²•Ñ£Ç^5h ªªŒ5†-[¶ÞÖ¼î56›íßï«©9í8“Ï£Ú2Ñ™ÜÑûAÑä7*›•KYÓ¡i Ú±Z­ØQð©Ö�ï¼L½Ò>è3ϳsþFO\‹Å®àÛú–´ÜHë.ÓˆUs›{9C³ÞáÙ±»qn¥[ðVßWiR-w-‹ Gþ`t߯؜‘GBž¤ÏÄ7i]3]ü.f~<„ ›ÑÐT·'Ãú´¢z¨+8³Iús6Ã_ÿ–ÝP¼¦]ßÞ¼\¿"Áf•ôØýL{¯?,J×é¿Q{û,åšR!ȇãß´ah”;µ:õ§WûÇ)ík +f's?ûˆo7ÆçU³ûßdº�j0>dS2«Ó¨t¾‡Áð©ûòš@DÁèð Ëy,ÎkÃ�_€Z| qêå`’K–o¾—R�–Azæå�®Ùí8 FŒÊížìä$²ógcÃjÍ]ѹä†w‰ÁL«qÅ]˜Ñ�œóîx*�hiI¤8óW›ÍIJR —giÅŠ£AC !þfjôü‰Y¯_ž¥ÁÍJú O”{öûrb9ƒ§�OîózÔ $'BPXég�¬ÄDpsÇÕÕ A„ø»Rmàvõ3 Óå~iW‰û‚ÉÈñºùôô£øøûc(Ú’£[÷iGúÍ9BXx8náE 4–¥ç¬ t3QÐa6êXä¡¢¯ö Ç4ÌíœnÛ‡-úr8ÀíÜqbuF‚}}•ÄøxT½k~ V±†]éþR} ó@çt¢¸úb:€’�W‹¥&s!IÃÏÏ/o™¹eÕ½VººœàËæßq(C¥X±bùÛ#Ä­¬[·ýûç>sܸOY¿~ý}¿]w¬ÏMOKÉçq¤žGËIG5{æžDJü³KSð³|ðù«è'õ¢å+±†7åߌâsûk¼<ñÈ­ïåý3üÛ�„.LÇw¶ëp#ü¡2—. F괪˚��htL¥Ü«Ÿóíðnl}v;´š¼>ìY²¿ìHÃE¬zŠV*‚MtEx~ì×tsþÄ€v=Ø� áQ•»š?ßu‹2¹kGÞOTeº|Áø–'õÖ3,;i'¸n¾øx i�^ã—Ó:ʼz³é¹jŸGj¡­�Ždb(ö2§¥Ãæøö¸<,µàT/&@ÃpBt\ y!$)! %(”`¤:s/,ž!!¸%Ÿ$ùoîf Pn'Q¨é$$äpñÈ^ú|öë6ôÜ&G"“2Ø4þÞ[—u_Õ�† ÃÕŸwR"4’±_ª’×4ôú¼jTG’2X>à ÞXšsUPUŸï›O÷ñAñ®CïOÞ&`^ošNØŠoPîîî8/�`ÝÍ„ÆÍ˜–l¸"|€Óé$ìPšë$&&&÷ü£èy¢~"Ze?B\ŒyAT‡¯Ÿ/:%w¹º°H†¼÷zuáµ…ûI³: 뺀�Ïg]5€šéhª‘±j(ívµæ—é?àÒo8³O:åð·eÅŠ•ùϱ[¹rU¡Ø¦»Ò‡Gµe¢å¤³rhãÜÐcû§�uÔoI�Ĺ|9í)N�ì³Ëøâç½D´x†‡náµ¥AÆï|òÍ&,9*š#ƒó{ws:ëòÝãáÙ_3ïp vgç-æ€OyÊé@³cw¸Tª<%‚ÜÐ938·÷ñ*èJ4-í�йøQ½>ÕCïåZ=å:ô'²„ Eq¥xón´)²—9‹Ï¢»"ä‡Ç~̳ÐxØX^²<åJ•¢LÅš4|¾+íŸ,G ïÙ›O„F�¤îÑQ¼0tzo|||r¿ÉSK™µû!úÚ•–5ËRºT*T«Gd×—hR©,x{{S±bE*V¬H… åHÞ¼œ�%ÛñjíÜZ4Å«:ퟫ€QË;7˜Ýq%™=›£q÷  l�6¼Ûµ6&£GŠr&'§½É«_:iÿå§¼RÞx×Ô‰{Õ¢E‹Y´hq¡Ù³Ùüï×ðèLî¨fOÂýÜQÌžèLîÿpŽ ~�þhqç¯j^HµXÈô ÄOgn˜üƒÁrŽóÎ_Œ’“¹4{Íjņ“pìaâ;ŸÒíõWøä÷�ñM?Êú¹ùìç­¤ão;ÏÙ êMæ›’?_ Á„¸R«Ï4æ÷¸ü.ƒ[éÇ=Qn5=oÛsÒÓ¯¸Ûw`·+M¹'9iÕº�È“¼šQ½Íôèý?/ Ƭfqáè>}÷gâ1r ýz�å�Þè²-ìYü>:ŒþÆEåüò_Xød_¦®z�m£Z�àâ­"Ï® ôù ouù’?>ðÁàÈ"áô>¢~þ”�¯¢—cSÞa�õ-º�™Å»þ.¨9Iœ?¼™éãïåjlë[O©÷пrúÄÝLëÓ�ÿÌ!¢¤çõ·sr_z$u£×g‹x?Ô 5'™ó‡6òóG˰Ûu7�®F4&²†7ÞÉ}Yµ¿_^ �“33úÐsê  ëMZÇ. �6’" ÖÔXŽí˜Í˜eéh&�«j}Ô¸Œ@ÿ—2Í™Jzv,7îÂV-'/DÍeÜÏé¿d']“SÈÊ:ÇæèØJgì,©ØH^=’ÎÖ|?þ+\õáû}9H�¯xPÝ•gié}‹äÿ{å»õh1óŸö4ÖHº˜ˆvEÓƒ‚Wh(îÉ’¤jØmv0¯mÔˆ‡‡%+÷B“xá"U\ªÚ�¿Cï?›0ü|< ¦Ç)¨ƒõ†Ÿ¿œM¸�˜Á†1/ð¿5×iN0˜o>]…ö‹R úÔcÁßMÖŸ‹÷öbÆ]ç{KÞó+Ã^ýõai>½êÏ¿ú»åCš¶¾Iä¹°†q]×\½¬Ï"ivÕ›b˜þz}¦_qáŽÝô#C6ýxý°n�Öýuë_±� Z~£[ýß®x!‰èé#ysú}ò½©§ø©c=N�:…‡ÇefæžÌ BÂÃ1öŒŽêññW_àÕ$Nü1š“�œœŒÃá@§Óa6› ¹Åô/y¶Êçœ:u ½^U€ñóóßìþª/3‡_$-- UUÑëõ¸»»êqÝÀ›ºóGúµû‚øøxt::�Žq..d:¡¤–¾Éýyf\))) †üéÙ*Oúƒ�ýΟ§UJ•º|³sõv;ÈØ4ŠO¤Gxx8îîîrÜ‹Ò]éãè�ù}v¼�,~É@‹™ör¶#aÝb¶÷|‹ží×0dÆlEž¦W窜]2�ƒP�æ|Ä#<ö gÏ;q-ÛŽv�º¢ÌϽp%DÍaí›CéÿƆþ´‹Ý�°Š¥1�ØËéœ[,Þ¥,O6ðàä¦ýœO·‘–˜D†Ý‰ªj¨§–2gw^ôFÌbO¢ŠW±*³ïæ@ÜuæåØËsbøþ­4�ù‚åÇRP]|)öpu,kØi¹Õt)ÄâÁU¢Dîy%00ðºÓƒƒƒ¯ûº¿¿?þþþ7œïͦW¨PáÆ7wz=!!!¹á©€ÜÝÝ)Y²ä §pÝiƒ�òåËßr»½¼¼ðòò’#hF£ñß <š8pQcÒÞË÷Y¡ ‹ÚÿQèQãæ3¬�7ïöÿœ%½|ÐeŽ`(}¿?˜Û´slO.ϰçÓ6!‘”3ë‰Þ–Ê¥!µ¤•Œìnæí~ï2mu(f53÷WZýöqúV ×yP¦ù@ .†�çØ1{_m²‚zŽÙï¾�¡o>œû�F;é–ýüú~ïëì™ô6ý¬}è1þ†¸ f'qî঎]S€éBòJ8yZºâpqqAiÕª•vé×e±XðóóËÿêËË®æ£ðësFâ24Šû\݆]cÒå¦-ïiMåÛù’’’ ûg#p[,–<ñß²X,7¬¥BÜÛâããoy¾[çéððp’’’î̯´té×o[9•¢ñÎ*á^W‡�ØŒ[Vñ`ÓétW €&„¸?¨ªzÏ�ý¤iÚ�iÒºÙÃ?#7=Î�!CòÇÄØ¶j1ÞÓ¾”R!„¸!½^�ÍfÃl6ËÎâ>b³Ù.��u�0 wçg>›6mâ™gž‘R „(ø�”§'III¹m$#Äý@Ó4RSSñõõ½§ÖËÍÍ o\qO2›Í¸¸¸`±XÈÌÌÄ锃…¸W9�N233±X,¸¸¸ä>Òå’––&¹!î]þþþ˜Íf’““‰‹‹Ãf³ÉNâd2™pssÃßßÿžï鮌Ã#„ÿ„»»;îîî8Žü'� ! Óéþò\·{/�IàBÜîå“©âÞæêê*}x„BQ¸eggÿ;5<®®®DFFR§NBCCˆ��eÛ¶mÌ›7�ììlÙûB!„¸+Ç�|øMkz.\¸ aG!„w�Íf»ó¿ÒÚ»w/o¿ý6‘‘‘Ô®];ÿNÝb±°}ûvyx¨B!î*ƒÁðïü,=;;›éÓ§3}útÙËB!„øO™Ífä©TB!„(Ôrrr$ð!„B�B!Ä}펎Ã#„Bq/òöö–À#„BˆÂ-++K�wŠñÑ¡,›Û‡*û·�FjZÌ‚þ5îõ§úÞ]ºâ¼:u-Ÿ4u»sóÔ—å�ßÖòqC“ì_!‡C�×¹ÂÚþ;ÖÏêIEýå×BÚ}˦­Kù_�+.’�µœa�»à<µŒñ–°áèq4MûÛKwf&û¯n_D§ŸÙ¼};Û·ocÛÖ�¬]>—©_ çõ§Kãy×”k¢Hý2Ÿ¨�›Ù¸f9üú5#Û?Ä•q$ëÂ)RRRîØR5 #öiiiRä…(ä ƒ!®¥ra×NN…T¦˜ídnxQÜ©R³gO¤Q¾„žìŒŒÜKõC5¨¬ÛËü9{I=¾†ÅË¢úÞòñ*÷û�ñÔòóÁ' åkÇÐß©ÕÿG&v¯xƒÐ£ 7Üù'èêËtbôÈ&äÌìËãeŠZº&Í{|Éš£gHNL”â(„øçguU•À#Äõ8Oï$:©OÔñÄa·ƒéajU<ɯŸGa|¢9™€žR5ªãyh›S5¼ŸMÔÂ<à¨ÚwËFw¥Ãð Lšò̟Θ—+áq)L(ž<Ôþ¦.YÃêåðóû‘”u½:`xWy‰÷šÏªµkY½d:ãº×#ÔèJòÚÔ(Æ4ñD�Üš¦5[Yñ~]ÌŠ/->[ÍO‹Þä W1 ”-Aˆ‡�«¾àõ!+ñz¡7M=/æoÃò1oÐyä·Lþu&“ߪ†WÊ<;ˆ‰s–³vÝZ–ÏþŠwš–È].`zò¢æŒàõ·GóõÄï™2k? iI)óõ×µL"Ò7òõ—‹È2ºS"Ü}Êao¾€Ãp¹qOÞ”þ?.gå†�DÍù’îuür·ïZ]ûÓ–F­eíê%L߃'B®gæ’4ü ¢Ö°rá4FwªŠÏ•¡Nq»ñ6ÝξV¼©Úñc¦,\Åê¨(V-›ÇO}ÇK‘cJˆÿ¼–Gv�(Œ4M#--�œœœNg�>sÕKGØ½×Æÿê?†ºr;†ê5x8e7cDQexwªš¿a“.”ê5B8µr=I&3¾:M³sîÏãhå^µ&£õË4;”…3¬3WöáÙem˜žè‡ç}ÓÅŸ)]ê1**†"­>aη¾(¿å6‡é‚š3|lGø±'5?�"5¤%ãç|ÉÇ©íy}ÚvE§Y>€œYçñ|¤'Ÿ'¹Biãgp®ø“Ôª˜@ÔÈ­\Hp! à†Û}©6Êh4À¾ulÍE­Jz¦­±:‰ùÛ°®åg2y¢ØÏ³èãWyuÍ’õ¥yù‹Y|Ü{/í®%YïNån£y§üº=ÙŠ…gŒ<=â7¦SX•˜<‡ñ½‹ß`›Îx_' dÀ+žÌhûã·Ÿs•ˉ‹MÆ;$$k,‹¤â�¥×ë1›ÍxyyݵÚpUU%ðˆÂ)-- §ÓI@@zýßi†Éaߎ˜^kDiÛzt5ªaÚ5žÙÑì;^�ÇkÙ`©LÍRɬ¼W�ëÅ.²7ü—[ã*Q³þOöÄ”¢l‘,rbhÔìIì {0fåqÂ#"0žÁ´ÝÏÓÕ– èð¯÷ µçÒxÔœ¾�3àçiûXб¡ÆqdÇt½‘³•€ZUˆŸ?‘Õ ^¤v1±åkRÅÍ·Ñ鸇øÝFÕV éé Åý|ÉÎLÀºy*Ÿo°à[,7·½Ü mqo†ÏÛGP±b¸Ÿÿ�׽̈&e¿ó`î–§®áÛŸ¢y‡R"¶/ÚŒÇÿž#bôPŽû‡\}":ý½_µÐ´e#Úô­NùrNn`öWŸòóÖ‹äÆU'û&�æ» ' +R„ì-ëØ?° aÄqPs'eÏr–eeáîB€«“sV;±.¡§“\´5MŸö%jØ(–ŸI£LDgŸÍêŽïátX7j?Sÿ¦ÛTÐ}íö˜‚MçMh± É4‘h7�™¡bòö¾q¸âãt:IMM%-- ï¿ÿEQ¤IKN999x{{ÿͰ“VÒ¢wrÌÿqjó¤jõP¢7ìÀàjeot,µ>‚¾|u²F³zGîîî×�GNj:&Ìf3à@u(¸¸y`µ¹àï§çܱ#¸{{ãêê Z I2Á`tøø¡Åœ V1àç燢@öÅx2#pÍHźo;ûü§V‘0jTUغj>Û£}y¢nŪWÇm×vÙ”¼eôÖË_/HMIÇît*Y‰Iàæž[ã¢óÂßÏ@쉣¸y{çm·•Ô É¸†GàLÍíT¬¦&�èÔããã“ûÿ”d2¼‹ànM½N‡n Û™µÌ7€u«R¬t]ÞZáÃKõ§‰GÖ¥XDâÅ|üür÷•݆Š+F½ŠÝîÀ­Ls†|3ƒÅ«V³xáæÑž’f?ŒŽ,4½þI?O`` ƒÅKb’†¢è ´M¶}; ´¯M–Ù y=ž�¾fêŠu,˜<šž ‹áíê*¥WÔðx{{“““s×–i4%ðˆÂ{ñ÷ÃNÞ%6~»,Ômü5Ëe݆‹¸»›±ìÞ‹õѧy¦NuŒ{6°=çæ¡â¯ë¡( š3…¤d'~þ>¸˜ò~‹¤˜ñóuE§3*I IJ„Ù˜Wí«à‚Grq6ZÆnv/Γϵ¢†4«v\àÏ]û)õÔKÔ«ÊþõQÝÜn£ÊXÁûÑÆÔq=ÁúMñè.­·¦]Þ5�¤dÁa!¸]Zo\õ#'!™$›�QJxêó—í†FqYÎþ‚Íl6N‰@•c‹£8`ªH÷XìvÇu÷¥’׃GÓ•¥ãˆ~”Û?–uªP¶|ŽüšãŽ,444{ éžúë0�y3òÅß[A§7h›´Ì‚îk+–õ?ò^·H*W›¶ß¥ñôð7©gL—ƒRˆ¿œ ÚÝàN�Ÿ¥ qÓÔt’èèTjtïC�˜M¬‹ÉíWâ<¾“ýþmx³Y ‡Ö¯Çêê†Nw»‡RÛ—mÀ³u7øå×rmi]Ó ZnÍJâ†el ~‘s5e.ÚˆªpfÁBökP/²{çyjvïNÙ½kÙšá@;ͱê¯Ó±â1Ö¬9‡ûu›Ú.Ñ¡7ÐÍx—áѶïòù�ú¤Ìø„ïÙ¯ªµºš²Ù¶t=Jä^¯æ�A1øHW^«—Å‚Ùëqæ Åõ zh@€AÃà_›.�Ÿ mÙ¶;õ×0s�—éÛ¡!•Šàn2`ö+ÃS�[RÙz„�‡mØìö[ä47ÜÝìœÙµ…L�™2åå•þ/QÞ�öìûX•I“7^&\çLmñ<õ|t¨ªȺõ6p_ëŠÖ¡Iíâ ð¡x˜^°k’,189¦„ø�8éÃ#Ä�Ù9¼sÖ¶O‘>c%çuFŠ `?ÀîƒnD>q‚)«Žâêîó7æ­‘¶þSúø÷cðô%Ò3ÈNØÃ¶Í‰4µçäÕ0-âƒþîtïñ s‡ûcȶ½`(/Ž\ƒ«·7Š¢qfW4‰]ÛprÅr®®�º›è³®J°O… IDAT<溎¨#¸¹á+õc£¥/šê ;í"çŽF³rD;Æþ´||qqq¹îz§oÇ[Ÿõ ß¸(Þ qÁzñ0K?êÎÀűø-š›Ï.ffâ+|:§^vNF�§ã�ůÓIÑ™œ„½l[·BD ;d'qîÐF>yu¿ÅC©r·б‡_Ç/aÀ •,ï}‘4[&ÇwDsØá–W›deÏwƒù´û;|õ{g2Ò¤ÝÍšÓUÑTg·I-оVÌEy¢Ûú”ðǬ8ÉŠ?À¡#˜� á+G”ÿ�N‡ÒªU+-&&æ¶>h±Xðóó“=(þIIIÿ¸S§Åb¹cCÓÒÒ8wîþþþ„\ñK›³gÏ’žžN©R¥ò›´222ˆ��¥téÒ(ŠB\\ªª^µ.§N�ÂÇÇ_ßÜ+`bb"III ŒF#ªªb4 Í­ ÊÊ"..«ÕŠN§ÃÇLJ   üà�••Å©S§ Í?.Ož<‰ÓéÌ_�ëIHH >>>ÿÿ—~9áëë{UGÂëm@rr2 ØívŒF#���øøø`zò–¼y†V�¼Ë)’““q:�xyyzÝÚ0«ÕÊ… ÈÊÊÊ­zÖépuu%(((ÿ×Z'NœÀßßÿr¿ UåèÑ£”,YÒÒÒˆ��Ï}H N‡»»; ”+W�N‡ªªÄÆÆ’���^¯ÇÕÕ•ôôt‚ƒƒñòòºé6å×Ë`_çää`±X°Z­¹ÁÒh$(((Bˆ;ž¾™ððpRSS%ð <âκx"DZD©ûbF!Dáa·Û%ðˆ;ì\¼x‘âÅ‹c0ìPp8œ>}@B�¸®Ã‡ÿ­2(eJˆ‰Ùl–&-ñ`žˆˆôz=š¦èO¯×S²dIdŠëú;e*""BÊ”ÿ"ƒÁ �G<¸l6Ûm]˜4MÃÇǛѣG¸ ì_>„©ÚwK‡<‚ñï0>:”esûPåN×åêŠóêÔµ|ÒÔíÎÍS_–7~[ËÇ M÷u¹ºÝ2u)ô<ðeêNòhƸµ“y¥¸ÐS±ç,¢FÔãï–,sãѬýµ+¥uwr½þãuyÀdffJ“–x°išVà÷/^œ1cFáééY°(><ûÙ"†>ö—Ó¬šÈ¼ÞÏ2j›]¾€¼LÝ6)S×0=ñ>‹ú$Òï…¯8àÈ{Ñzˆy_üBb¢(÷ÎÊ^µ^ân’>¾O„课éw-Gë÷â�å«Y³ä>|©ž7º©ÕùQ£ãH&ý±’µkW³dú8Þx,ýõßLàãÝùtúb¢Ö¬&jÕ~ÿ®ëUM†àº¼õÅlVnØHÔœÛ\wsIšþ�QkX¹p£;UÅûÊõVÜ(óì &ÎYÎÚukY>û+ÞiZ3€®$¯M�bLÏÜåy4fÔš­¬x¿nîtÅ—Ÿ­æ§ŽEÑ)ÞTíø1S®buT«–Íã§¾�ã¥ÜÇ…õ¾-S€©(�z}ÎÌekX·v%ó¾J›Šyßc^“Ú²Ñ]é0|“¦üÆó§3æåJx\gùº¢Ï3jP}¼B[1zÖ\æÎ™LÏj†[6)žh=x"¿/_Ãڵ˙ýU_3å—{¿š]ødÆrÖD-cηxºè�Ô€Ö|µæ;Ú‡æ.ËTë]o]Ïg-}s·Éü×þÎÛ•®]/Ó“5{�º}ÄÄŸ¦2sþLyïYJºPàuÑ>B×1¿°8j-k£2ù£W¨á—;·°â·î”×è)ûÆt¶lþ™NÅr§*õâ÷¥Ãy ¦bOÓÿëÙ,�ZMTÔJÍG»ÒúBs~wuu•À#än\Ó4¼½½èÒå5t:Ç£téR(ŠB¯^oÓ·ot:6›�áÃßgÆŒ™wp LT{4„Uïu£óËÏÓuR&-ÿ÷ÕóÎiŠý<+Ç÷¤m“ú4|®3²›0bPsu—Oˆ^õ›SfãpÚ7}Šçú¯Àû•1ôÒû:ùJwǘ–6fõ�¤aƒ¦¼öu,ußÿ�ö×9«óê æäüÒ•f Ò¨I;úLØ@¬šÿj¶|œó_ç™úÍx{¡‰¶^w•»�æ� ûù¨ýÓ4n݇?¼šÑ¬Ø¥õPð|üÆ÷.þQh\ÿi:}v‚*ï~ÊÛµÜ@=Ë®è®õ0&ÀT©'Ç�Q¹6 €¹2µ*&°s§¥t;¼âÉÒ·[Ò¨Q#š´îÎØe§±iÿn™ºÝ¿¢La¢òãöh,ß¼Ú”úOµcĶpÞ7˜§ü”üå{×®�~æ@º¾ò"Ï¿5Ï×Þå…R×ÎO=7›Á£×’ûƒÚµ¦u›Î|½ÛqóÝ£ ¥åÈÏyÅ'ŠáíSÿ©øh_yú�y�J&з`èÇ­Pgv§yãgè4î�>Wç†ý´¤hvž)M­jž(è)U«*¶˜Ê×®Š+`(_‹ªênv»þzé‹>ÊÃñßÑûµN´a0[J÷¡_‹`t`]tÅyqÔ(ZØgòVˆ4lõ‹Líûa[Šê {ï…Ô z¨tAÔ¨î�%.”š5üPÐQ¤f |ì`ŸÕ�zÝRûÌg¼Ø¤!�žjN‡A“‰N*LÓ§}Ùôó�lK°ƒý"[ü•MÙù÷cÔ~¦>ÊÊó"vÍFüæï™´Áƒ§›×ÀGvìA©V‹²=ekUáâÒI¬É©JÍzŒjQÕÍÎN4»‡Þ—ˆò¥ñÐãÌŠãÈárîB�þwÂÎ}\¦ŒÓ´I['ÃúX+š#™=S¿c‰íqžyÜ'/Pido›Ãì£Yh€=f+ÛÎ¥|™;ÓA^W¬ mªŸbÚgs9”âG2{¦LfƒWC•3á_·)5âæñÝü“d©*™þÁ� Ná¼Ñ ÕsìÚ•D¥Ú•qÑ…Q£š‰M“æqöáZT4鈨Q¯ý;8pƒ>éjâ:f.9‹ û8[v¥PºBIôèn¹.ú’�iVö(Ó',áT–Šš~Œ¹_ÿNL¥f4(¢CKÙÍΓ%©UÍ�Wuj„G3å×ý”ªUw�?ÕkãøŽÝdhv›÷ÐÒ”-æ‹ 6RNàÏ$µÐœç‡ôáv.]p¶nÝʧŸŽgàÀÀ¹sçxç�þÄÄXþθ¸ìºýpðò S³‘ž¢åOÏHÏ@ÍÏv1sk9ÜÊ<Ão´á±²A¸âÄ©÷Àße7nFÈ=CjdÇÇ“?;T.Ä]DÿP^:¸xÕÅ)�35zþĬׯxÙÍJú ÏkïÞ{ùqð¼Ö¹M�oÆ16Îÿ‘ ¿lÏ›¯JrRòåu·Y±tÝUü=’8k½âÌ‚%Q¥€Î ?�Ä]ÑOÅJ¼% —‡üqW yßø¼DÍâ¨Õö|¶–­~ÝèR#Œ ÞÕqÛ;‰ƒ6POÿÆ{šx­íP~„ýôv–NžÀ¤µç±ýËeê_*µ÷o™Òûã%6›üÙ;ã°Ä+T ðA!аfdp¹G’»=÷YH ðO÷¬>(„@cY:M˜ÉóÚåiÖëÙä¡Ã/À-.†8õòöÇÆÄÞ8ðàäØŽÝ8ß­E…_j„ìcîúm¤½ô>µJ‡’X³GWíæF=ÿ´Ìt2ÕËß­ÝîÈÛVå–ë¢ó÷Ç×GìÁD��!?ütpÖ®]éX« >iµ(w|;£¶¸Òô•ÚTòU¨U>†�Ÿ_@EeÃïܵ#oŽ…⮉X;›o¿þ�i…£–ÇÅÅE�Wš?EŠᥗ^`ïÞ} 4˜´´´¿}qR³’¹xáŽkoÔoqf.KÇý¨Õ—7þ·Ÿ$›†¾ÌëüòC¹+~x¢àŒ�µÜ™…àLJ$í¯7gŽD.&e°iü+¼·.«@ëž~d_ ZÄŠ �U^à½O> Ç‰ç±ù®»#‰ÄtOü|ôpéô­÷ÅïR'5�¤d�¡ÁÈ»ûÅ…àP?¬‰‰dj eîfDZwiðTcœþû˜v,‹ƒ�û)Ú²) †½;8âo*Õ¯ÏC!nPÉIM %ÛY°cý>!ãð <×¹ØhšÆ{ï�ÀápÜ�¦ ¡í¾am»«îÙ8¢ï,½ÅGû˜öÙR†÷ü™ß^º@rv*ÇwFó§Ã望bÚº%œ¨÷³Þ-†·Ë–_óÉšë]<ì›òƒ¬oÑmÌ,ÞõwAÍIâüáÍL¿þ:«îA™fýèß¿>&pdœgçÜ÷™¸Åzë;åº[ÙóÝ`¾}gŸNkEJb©G£Ù|¶Z^‡L�ô ãèÿuoú›ÉËþF¬±jÜ;LØ–•¿ígvE“üz ,;¢É„Ü> gÍÔñŠfWLî _1¥Þé[œdÅïgù‡ãXñ/ÕîüûMZ÷q™ÂÊÞo0Jy‡^SV𑋃”?7ðcÿñ¬ø›cÓ8Ïgò¦‘¼õ{HaÉàvŒ;t³ÃC{£½Ù“¡¿ô$ÄMÚ˱�s™°Ô¸…|8<ˆÁý~bZN©™1lÞ�½ö;ôD¢wžÄ¥º�]»âQ�œ½;8¨oÊC»wpÌñ÷¾é[®‹ó$ÓÅÜ¿ß,Œ»–ÎÙís<ìwÎ]ÊXÙ{ØqÈÈS%v³ãdnmê‘»q¼ðû·ï˽y@‡÷ÃmèÙo(¡ž:T[*§·üÀÈÉ ͹^UU”V­Zi111·õA‹Å‚ŸŸŸ\-Å¿"))‰°°°4‹ÅrËy9r„ÐÐп5ÿØØXÊ—//_–¸Fjjª”)!îÐyúN'55Uš´Äƒ+ €˜˜˜Ûº×4�˜˜yÈ£¸!)SBÜ{¤Ó²xà@\\\�Ÿcd2™ ’‹“¸¡   )SBÜcrrr$ð =r¡R¦„(ÜœN§4i !„¢pÓëõx„BQ¸É8Ùó!ï—§ãïùÁÄ`r%((OŸKq… Á¦Çd2ý÷¡Ó£Ç‰S•ïS!¬V«!®¡:1™Œ”,YŒax4Õ�¿¿?ÞÞÞä6iÍ`Bðš�L¤ÓøžT7{R~ÑnÞ@‡eÞ`úLÏþËL�„>ñ}ºµ f1OH?Ãæ™Ÿñé´=¤hyoQ|x¤÷:w­G¨[6'WÿÀ¨Or"ЧÅà¼ôHB½L8’ޱþ×ñŒŸ{„L ßçøb^+ÎM:@Xƒ*„xÇ3»Ç»Ì�—Ä#„6›M�(œ4M#--�œœœNg�>vÕÿEá¯pr›šÔœΟYÎ�}‹SrAsV7oÈ7gu(Š‚¯•«>çZµŸ¿W�µƒ:Ðé÷ÝØ‹¶âóÙÓÿÌs ß�»~úbÍiã݉Žu{qBy˜ÿMÿ…�:î¡Ówg°é uß/t¾„=g3¬;€_y�ŽÑ-ùö”Gî6*ðHÈx^n3˜C‰i8�NŠ/ŽÑhÄb±H¡BÜôz=f³//¯»Ö|¯×ë%ðˆÂ)--÷‚€^ÿïöVWÅ�¢£xñ¼&-Ý•}v\©Ýº9nËðî´mø‡‡ãi8ÀÔyf6­�¶hEn`ÉZÇø—a1ùS<8–9Ó6ÑéÝg‰=Œãþ:6,>’““q:�xyyŠN§CUU, ÙÙÙ�FŒF#‡³ÙLpp0‡ƒãÇ�SªT©{c, !„¸Kçé› '55Ujx„¸å]�¢P®\¹k^¾êÿþþþøûû_õZ‰%®ú¿§§'žžž×]Ž——^^^^3]§Ó凫ë1 T¨PA¾0!„ø §Ó)}x„BQ¸éõz n”È·�ðXãî̤ ŸŽjG9s q[äYZâ?¢Cß–0¯''î%;ïåìÓ»XøÕ.) úÀGø?{÷EÕ÷qü;³5»)›J �H¥¨xK/" Š€ zKQ)* (M)‚Øoñ±€ Š "RUPª€H“*5›�²©»I¶Ì/>M›¥mã»™{0œت÷ùœ·bÞ¦Õˆ•ø+v壩ՙÑjKŽ�í®WYøÐºuû˜z7ÿwý;ÞJ9›‚æËåÐâ‰ô{}¹ºbÿ,ïÜÈ}m+ñÛGO³ø �ÝÌyã ÚÍnÇÝ•¾äý}I…8WV«U�¸v©êq[l2?,ÞVvN¦ë€Z‘ÎcÇÒ:u}Û,ä !‘vÃ'3atÝú~ÉáâäD­ú |Ö«cއ GÌÔº=–©}Ÿ`|D·ôeýÙè5’øÈDÆßó¯ö¿Ÿ¥¼Äüç)&ŽMÞãO2ã €Jèm·aîû Ý·åqÆì`¼žU¿ gÏI¤ø,TËXÔãÙzÄ�¡lcžyu#:ïæ±iûÑÔJt3‚úŒ¡Ë€ï9j­A—1©aÜË¢ (CCbGžëÂ7=Ú0ó@ª-–ë*ðJØùÇ”ðë¸.*�;]%û_sþÎÎü'HJ´À¾‚‹¾ õêÕ;§Ï­]»ö¢¬ÿÏãuBCCOûó�Ÿ—Fœ•Çã‘.-q ž°p¸ÈÌ:óÕÙP¹­ªîbÆÛ ÙïÑÐòv3ç�Ù$×hE“’~?¿Ï›ÁúSÆûøØ:ÿ ~ÍÑ�ŒukØ–DR´ Æ´¹¿>xƒ%ûóÑt/©«ßgúo‰4oX¶ä¤,Ú0›Ï·Ÿ%ìh‡Yòù²ca ˆ�Ë¿eãá<¼ºFÁáùxÎ.*Õ½ ‡†Ê͹«òvf¼÷=Î"�@ÎV¦¼”Œ (ºÏ�ßN…jUˆ 6ð¤²ó÷d åðúç�'Ȇ î‚“vŽ^€Û£b·[‘) …8w~¿_ZxĵKËÉ"‡"Ã8z†PI¸/•”“ÂŒv4™"ˆŠPá€F–+ûOc^tòóòK~¦û}ø1þ�ÚÜ IDATa2Æhb#­Ôéó_>~Rc�­ˆ¼}!Ç.dÙYþ]ѲpeŸü!3åš%@ Çxp%A äEFâð8qæœø¿3™Ô@¥ +ß3b´™G; å£Á1ø¬ç»©oóá�GðÊ!ö�è<ذ)'§ ìAnw!—¢íbµÜœ«?·ÜoÙ‘q¾d �¸¶ÏÁµ¬MíFã7ðñÎ-i•PÐ23É6Õ&.\…£ÅñE-O,.¶ŸÒ¢s—&é®|V½Ö•+<§ùÀ±ÓR?·ežü)5®-/ ¯Ïî!ýè´>•BM%ºÃ;Ìjyì;gf’m­J¸ŽRÂ# ?S[¯Ï‡Æ’šBÅ|RëB!–Oaøò)`'©õóL9€#÷?Ë7YÒ¯õ�OÖödÄP­ªe[&: Æ%Q5ø+÷I q‚‚‚¤KK\Ã|Ûùlò”ö¯0¡g3ªÇ…`1Ûˆ¨X‡Ö}'ò\‹´ýËY´·�zÝI›‚œHÛ^í)»ý;~8r�ƒFý[™?×Éí=ûqWbF@µ„S¡vcjÇýÃSÒjÇN6‡¤Q¨�R“Ž÷Öàø+*û¿gé�š´ë�D€M£Ž-(w†Õj黨�“Äí·F R¼¼N'-O-w-o­ˆÃ¬‚7WF^M“'¼þ þ­ÌŸ»Ÿ›ºô¡i¼ÕV‰6}¤âosøn¿”°çÃëõJ �¸¦ï¡ÉZ5�'úîäÑn]ûéH¢màIßË/Kfóé/nô@3† Å:°7ï.‚]ÏãÐú¯2l6‡5.ðmt>vOÀࢾ<1þKEZÐ ]ù}53^[ù�¾‘vàkÞø¬ÿ7“6é¸Ý‡Xóëv|Õ�'ž}L6Ç /ñIÓ<2óó9°~;üÎPKüÊÇã2²ÿÇÌìšIVÖ~øå7|·ÿZ±–£aÏçé_) ¯?t:�DDDH Š‹Âårÿ�–át:ÿñ2„¸˜.W=ê÷û1å^÷ߨgÄ??.Å>HHH 33Sº´„BQºÉ»´„BQêÉ«%„BQêùý~ YYYx<é⺈L&6›�ÈÈH‚ƒƒ¥@®1V«U�B\NÁÁÁrâ"³ÛíÒ¥%„BˆÒÍívKàB!Dé&óð!„¢Ô“ÇÒ…BQê)Š"�G!„¥›ti !„¢Ô“—‡ !„¢Ô3™Lx„BQº)Š" !ÄåTTT„ÛíÆëõÊÛÓ/"UU1›Íc6›¥@®1~¿_�B\.ùùùx<ÂÃñÛí�R%_Ì žÛí&++ ›Í&³[_ƒäìBˆË ¨¨�ÇCBB�@ŸÏ‡×ë•‚¹HEÁb±�ÓéÄd2a±X¤`®!2†G!.·Û�ÃáÀçó¡iº®K¡\Dº®£i~¿‡Ã�Ûí–B¹†È e!„¸L¼^¯Œ%¹Œ?iM»ö¯!„¸ 4MCQ)ˆË@UU ~�‘‰…â2ßu )wqñ ´,„rá¢t³ÛíÒÂ#„BˆÒÍãñHàâ’nÅħҵâžrjýß�¼qo8ÿþ¨·þ–ùëœs“¯µÅ8~ü¬‰WQ bº}(‹æô㦫¼]Ûtû0Ýÿ,ßÃ@õ>³X>ª!ç2$Z‰hË›+þ�Îñr9¥WQQ‘q SÜûúϬ_÷#“ï�:%H¨‰�3}ÍzÖ.ƦãlÛÁ×o|ÊºÌ ìÂгÙðùÌÞâF:Aþž¹þH–Ì~Š'…‚ÀþE¼ûÁ�$_ÉcUƒ[1iÕ/üòËéÿ­_1šúGñÚ[ ùy×t¥]>^Ák­Cÿ„õ‚l’““ÏíðBçè¾ßåÉ%Qj�FÃ#®uéÓ©ÞúNÌàˆ`¦f›–ؤ0ü_Z�ï «¾>x᯻Ùýý×ì¾æ÷—£!€?p{:uó^á_/1Ï5Zʾ={Ð4m?þƒ 9�P£ß÷x]𨴯 ZTLÉS^éÉÎVs8®ê}t6ç2õñÙ”…øËM�Ù,�G\ëtòVÏgkã{¸;q&ïï€íÚ4Éç»Y‡èøHÉéBõNÃé×¾•c‚1¥±}é¼úæbxA-Ó’1>�ún†,LASÂið⇠�›IÏ~39`iÅÄ�ØÚíQ¦P¹¹ÿ,ÆEÌâý¢ætkv¡îÝ,œ<œ÷SîàÙÁ]iXÙNî¶9Œú6«2´â.­)Ó¹í›ûé·ÀÂ}ã§ðxõ§¯)8ûÎÉ´ï5“TÍD\ýGé÷Dkê–�¼ƒ¬ž9™IÓ7“­J7t|žA]ëSÖ�ÃÁ53X®yg*#•ˆºÝ2°#u£u\{–3mý©�%JÈõÜß÷ij\�(‹—ô­‹xÿÕwXzÈ{ì÷5hÿTo:5¼ž«F~Ê6¾3�O·ùÀ\ŽfOà‰»o"Öêǵ{Ÿ½þsvä¡«é>uu~™BJÕæ$Å8Ø÷þC¼¼½}=JÓê 8,�wp³ß|•O6f¡”{€±ƒ`Ü—Mðê¹,݃÷­ƒùæ¹|u|�ßü`ˆ®G÷�}¸¿n9ìäq`ílÞšô)]¨é>u*µ×¾Ë‘ªwr}t8á¦dMÉ{ë\±•MCókT¬X°P&XAÉ7a ¢l\\ñ¾þÏp¾}>Ÿçx› g^£KU+¦ËYö¼‚¶{}_üö/KµVjI¯~ݹóÆ8lZ6»œÊÄ׿²Ë£—„”ø;_âݾÿåÆ2rw|Ã[cÞáûd_ñ±ÿàúµ«E•2Á ÓØ¾ì&¼±ˆ^@­D÷©Ó¨»á=œU[P-ÆÁÞ)�¹¬à_}ì>))‰Q£^Âl>}“«×ëcøðlÚ´Iª5qšãÃ+]ZBPø+ó—¨´lsf î¥Þ¡oøîàÉ} ZƦ x�»›4¡U�ÿq¸î`Ft®„ hG—0öåTê7‚ÎU¬ÄßóCnÛÉk/Íâ€ïô!"¤~K*ý4œ›·à‘÷3hô›¼Ù=’…Ï·§Ù�=øÂ׆A�Öþë8 -•¹ÏÝÇ=÷ÜÃ=÷ÜCÛÞ²Ý�ÆÊ¹+I× èæÞ¼>âvœï÷¤uÓ&´éû9�ûÇñb«hTBê÷güc‘,þ>šßÕ‰¡?WåÞ¦g¤–iÍÐWÚ¢ÍìÅ=-î¦ËÄ}Ü~ßm'¶K�£Í¨×éêXÎðN-hÜüAÆl©ÆÀñ�Sà ¨ ÜÿÊdºG¯fÌ[Ò¸É]tü ¿º´âÖ´žv{ ïv¿‹ÆÍ;òÒºžœ8„æÇ·ÈD­ú ,у.�ÚñÒòBP Ø;w =Ú¶ qó YLç—Ÿ¡a°‚vxCÆýHnÊ\wlG»öÝxçWÿŸ¾TE:�KkßLú¶iJÓ¶X`îÈ„Ñ(§ž¹µn�eÙˆ'èöðôøÐM›¥ö%˜+PQ”¿„…ã?S]óqdïÖ¼ÖŸw¶°bèÜX£7w˜ÄÆC§vc)ŽF zóYªl|…fÕ+_£#ÓÍÝ×3 ›~ì7Vçá6¹L~à*TiÀ í·0tDk*¼ÅÇ~ú^}¬%UË–¥R“Ùzãó¼Ø&¥ä)37ßÊW½ÚÐð¶Ú<2eyyyÿj™lÚ´‰Ñ£Gã÷ûOÛ²3zôh ;âÌ·¶2ñ ~v}»�ìÆm¸-¤ ÍÚÔ`ë7Ë9zÊX�"v.ÿ–�‡óðê‡äã9»¨T÷&JqKQîº71ËB· òú3ø~ôX–¤iglYòmø‚÷WÁ(äð’%l1³gîG¬M-$àÙÇwKwš”DÌYÎR%ü¼Ú“àÙƒyù»qk»{°/—ÿýì¤@Óñ\Âû_¦n‹z„*AÜÚª�ÅÿÇŒm¹hzÉ˧ðÅ–À[w"ÜE�Ô¯™2ï<š†{ï\>˜¿Ÿã¡–oIûÚû™>y;²ýàÏbó´©üÚ”fIFÔŠ-¹ÿ¦LŸ8ƒÍ^tÝGîÁ�lsÀt#wµŒbíÔwY™R„îÏbó'SX轃»ïp a~~Ÿ7ƒõ®e©¥¬cáŠ]dhàÏbÛŸñ£vu ç´Ç •[Ъê.f¼½�ý -o7sÞ™Mr�V4){¼À}l�ÿ¿æh€Fƺ5ìK")ZýW+á³ý;íg�?Å?ƒ`“‚j´Cbb" ñ%-PºŽFíišÿFÎ&Ç`¥JL?L_LAË6Tr¥¯GÏ`öø7Xq(‹Šq*»¦ÏdCÕvÜ–Цðû²oØp$Ÿ˜² ”3íæ‹y»H¼µ&ZfƱíô³ù³wY¸?›øøxªT©BHHÈß~¿óý·fÍZÆ�›pʤ�š¦1vìxÖ¬Y{^Ë×éÒ^Ä‚ýS¹ÿ‘\"Ë­aÊOÙPûäO˜)×ä1zunÄ ñÁ(�JP8ƃ+ RŽ_ Ù5o>¿?<˜Z¿Obú/ygéúÐ)È΢ðø4/Eþ\²³ý%¿/òzÁt–~gkÿ;œ[¶¼BÏ©;𨡔‰±ViÓëœt'l²QxÄNˆ!”È©¿¥–ôlœÎü3l«BDTzj2©%×�”ä”’¿7ÄÄmªJ—·gò€~"(Y V+‚bˆô%s8ý4áÏIdHΔ‚ë¤â<ªP+Ê�‚hd¹²9¥½-¬&ôîA뺕ˆ4ëø5#¡á–�[ŠI¸/•”“CÔÑdRˆ *B…#Åû ?/¿d½ºß‡&ÓÕtdˆŽ�ÁÓÖ6ÆxüUŠ{à7ŒZ~ñÅ?�Æa§ŸèèX ä%« †(‡�¢t¨zwoz=Ô˜âƒQ�ûæ}Q(žcûM#3=“P‡ã¢¿ñ}ÅŠX,fÀĉ“X¹r¥Tbâ¬d �%W» –Ïÿ�Þ£ ÷‹^lðüé×–†×g÷�~tZŸJ¡¦Ýáfµ<ùÚRŽû†ô¤Â/sY—Ô��­WñÜüd.ÊCAjš¿0އ|Ñg 2ޝDË##£�ô�/ñÐë›ùkoš�¤¬á‘RŽ]ü¬D„¡¤ž>˜eedAí*x´â0^Ò<ÈL'Ó»•ÙOôcžë¯±I­œF†©e£Tpþ©4.2óˆ-DÉ "C,q1:®ÌltÂJ¶ãäðyK¯Wè5�§»?Ëž\?˜êòü×cNt³é:œeüˆ–™I¶©6qá*Ç›òÔ2ñÄâb»ëjzå€:g+À•–IÑÞ¯èØ`¨¦SZŒ4M'QÓÁCù#ÆäâK‚R†X[û2@+s?/Ž¨Ï¶§ãÑo¶’[ ¾Ç|6<à)~=ÆIÛb4^š4¸dÉÒ’÷�-]ºLê/ñ÷7µ�€ti q¼²Î]ù:OõíËsS·ð—‡s­vìdsø@…(!5éxo NTïªu{‰Þe2räx^µŒ²O�ä‘ë.€ÅNÍžãy.ñ'F ý’?NÙXk¿þ«¾<Ù ñ&ÿêPJc ZßW »)†3š•üØ·u �¿0Ÿô�oǫ́®ô}ìMæ¾ìÀè÷�q` Ë?žÄÏè䮜Äà„A<ÿ¿<âÊ¢ ýW6®sÑêL‘'õF�aȳ1½ÐEŽ;™Õ«7á»õø’™;ôô'û0ôÓ>ÄÚtŠrRؽao¯´#Ìú,†§ú2âóžD™ýä;·ñÅ+ϱ=¥ˆßÞ{Ž±Êžž¶„1?Ù{âƒ�¯±$Sçô·d¬þp2w Âg3²IËñ�¹u ›Rn.ù„ÿ÷yL]5о³—óÙ,Ò‘7N©ýþ`Æ�¡XöæÝC°ëyZÿC†Íæ°WÍ­ žÃŠÏfÐøùY¬ëa¿ítyæ«S?âúžq½U||ÿ÷tÂŒ~ò�îcÃÜ·Y½$Âÿ>_AÏiK©“`#ï÷oyöñWÙm°P1y?®ÉÀ…è‘•�Çs˜Õ›¶áM,�:C\5ŒF#JÛ¶mõs�œê8§ÓIDD„” ¸(\.ñññÿhN§ó/Cˆ‹Éétû·Ÿ;räƒ�¸c�¥äç瓚šJ•*UP·ÛMJJ �@€   Ê—/OZZ>Ÿ�„„ x¦Ù´´4<º®c2™p8DFFâ÷ûÙ»w/111deeáóù "..®¤ë(##ƒììlŒF#ªªb±X(((8ö=ìß¿Ÿˆˆ®ŠòOMM•:â 8.Å>HHH ¨¨HZx„âJV¶lÙ¿ü,88˜ÄÄÄ’ÿÛíöSþsÊÿ- åÊ•;ãÝoµjÕÎx3ETTÔ·³R¥J²³Ä«°°P�B\.òx´—†L<(„BˆRÏl6KàBˆËAUÕS&Зަi¨ª\þ®%V«U�B\ƒAÞN~™x½Þâ Å5£  @�B\!!!äääÈ8žKL×urrr–¸†IàBˆËÁjµb±Xp:�¸Ýn�€ÊEp»Ý8�N, AAAR(×£Ñ(Oi !Äå‰Õj%++‹ÔÔTé⺈Ìf36›�ÈÈHìv»È5Æf³IàBˆËÉn·c·Ûñûýhš&]\�¢(¨ªzÑ_l*®\2ñ B\!äb,ÄÅã÷ûe �B!J7“É$�G!„¥›Á`�À#„BˆÒMKB!D©§iš!„B”n‹E�(� ƒLä&„W¨@ pI_ï!�G”ZV«•œœ =Bq†�œœ¬Vë%[gaa¡ÌÃ#J§ÐÐPrssÉÈÈ�Ð#„WƒÁ€Õj%44ô’­ÓçóI॓¢(„……&…!„×8³Ù,]ZB!„(Ýd!„B”z^¯W�B!J7ŸÏ'�G!„¥›ŒáB!D©gµZ%ð!„¢t“wi !„¢Ô“1ÙïBˆR%77W�gÍ;åZѦ¶ŸlO5î¬gBóz¥P„â*ãóù®Ê–w!.#×·nÍuûgÐ}úM|øxWª~ð2{ÍeŠ­„pCÇçÔµ>e 9\3ƒå �(ZŒ]B¯´çypòfŠc’BDëIÌêòO?ô6¿G5¦ï GiZ=‡ò®cö›¯òÉÆ,tŒÜÜãÊ|Ëgž›iR%’H‡Î®/_áåÛÈ×Ì$4ìÎÓ=î¡nùP”"û¿—_]FªÖŠ-y²_7î¼1›–ÍîÓ˜ôÚ\vyt@%¢nw† ìHÝhמåL[o–].„(•Ìf³Q:éºNnn.………�sú›øøøS`­C›Vql™2�åsvñËàa´¯7šñ;tPTBê÷güc‘L{¬!c—'S¶í«|õ^8Êç:èÙ¬ZðO=߈J/-bWh,¨ehvO-ÏÇ7¿ï¡Jƒ[Ù9û%&Ì]Á�Ü êöšÂÌ‘�±ó¾Q¬ÓB•Ð[n$¿ÝôÚá!ß…™Kûqï¢öÌÈ ÇVç)ÞY›UÃãÆékÉV¢©Y+‚¬d'¶ë;3èÍþDÍ~Žf�¾å ‰<þþ—Œ}bÿ�ü;…±÷2ô•¶¾Þ�ëß^…?ña¦ÌzsÞ/)§Ó)”â_c0°Z­„††¢(Ê%YgPP�Q:åææˆŠŠÂ`0\ÀBëßG³àM ›±•`Ÿ›…«G2ô¿­yã™eÇrk«Fø¾éÍø¥{H¨Pëï_0ý×èáuàùe!Ë£¹·î`ÆïÔ0VhA«ë÷ðù“q8ÐS×óía^K(U+“÷ý×,í;ˆêᩬIt ~ú”7צS©VÃ^6'W¡jY…É‘4iÛ ëâçè÷ÁJññT Å“áE '¼Q{š¸çÐräW䆄s]T+>_“ÛPiØ Ò¸‹:)_Ñø�°D•!V[ÇÇóÿ Eÿ‚BñrrrÈÍÍ%,,ì’¬³  @�(� ÿAØÔhšß÷”Ÿ†1/ÙOD�µ WâÛ�æŽ9,ЪaàðŠ�ØÃ =WšŒÖâexcɲ\^è&ø‰Ê-[Qñ×éÌÜå&¬r,JXMî݃Öu+iÖñkFB# |eS(,,t sò0cµZ?š_Áb ¦Èk!:ÚDò†XBCK* UU±Ù‚‰Ž�ÆwS×6Æh2ûNfì�-nÂ##Ðï!E5h¸ŽE3XåàB\ôž°°0222.YàñûýxD齃¸à°¨å[qoí ‚Š^dþÁÅËR,›­tj—ÈüÏ2qeˆˆt`1»Ž5 Y‰Bu?­üìZ´˜äÿ{˜a)ÔlÅÊ sÉ ²á0sK¯Wèù1�[=È/É9è¦LÜü!f-€¦i§T§´=) z ›ôtqåã±$ÿië5\é™íýŠN _fŸrêi®ipGº ½f8±ÓñoLxD8Šb�ƒGqIBϹ7ø·Ö'Oi ñ&ª·iM¢ós¨s ·ß~;õêÕ£Þmu¸{ÜÊ?Ø…¤ÂdÖ/ú‰�vOÐ$B (©íêZA?qkóÝžÚ<ôr?Zýħsæplv ùlb_F!•+W£iß~ÜWÆ„¢žKèð°nÞ" îÆÀfe±© Z£Iº9‘0E'㇯XÝ� šÑ f×U­ÎÍõÛЭ[kêV»×êÅl¨Ü‘î·† Jh-:Þ{=&]“Ý/„(ud �§=3êpoËh6½ó.?¥¹(_±bÉÀº¬å_±òÉgi_o4cœH¿È ™±c^>›Y·:“»|'�ƒÑœü¸h }†4Äõñ|Ÿ«Q®LPÀê'só ñ|ÿc&™n?™[·°.¹&zÀN›éÙð&½‡u¥ïS_ðM¢¥ÈÅËÞæÙµ[ÐõßW¥S�Q¼ÿt"¡FùG÷±qÞ;¬^œ‡®Ãè¡Q<ûòB> ä�W˜ÊªU›ðÞ\(û_Qêx½^”¶mÛêÉÉÉçõ‡N§“ˆˆ)AqQ¸\®¼^¯ŒçIQ, ñññ8�NL&‹åŠÙ>™‡GqMs»Ý8|>š¦¡ëºŠ@×u4MÃï÷ãp8p»ÝWÔö………IàB\»¼^ï9Þ@ˆ«™ÉdºâZJ=�!ĵKÓ4E‘‚â_¤ªê7øßï÷KàB\Û¤KˆÒN�F´,„�ÊYQºÉ«%„BqM�À#D©` zŸ/YþRC®æ!¸j™ŽüïÇwh-ãj.šàVLZ1�nÏTý›¸uðB¾y®Žt` zŸY,"ì‰* IDATuqÏ+µL&}9†ærÜ_,š¦Éñ,®aŠƒ{'/`èÌ ëhþBr3’Ù·e5ß͜΂mY\™sî¹ñé™Lt¼F›Q«(~B'eåG¼iÛ‹_öì¿Â–x½žz˜f7U ÜXDNÚvoø’Éã°ÿJžŒY�æÖ.OÓó¾zT-cCs»HÙ¿�¥Œå£õ9èE;øjò46®ÞAQd¥3Εpg’ššJTlìù­ßÜ€—Oâî`]×åãJùƒmë–2û³¹ürôJ�çÈÈ�Ï|É$Çk´~éç’ó*u凌)ZË¡ädb.Ƒƭ�>Jôâgù`ýÊV¬ˆ)¢žêMdžÕIQ)ÈNåàï?óé«oñCªö÷ûøØ>ÑäV9‘�W÷Š"�G\󹟔™OÒñõßÐL6®§^›GéõÞGÔñ£–§_âÐcÀhàœÿ÷ÈÚºˆy²Cÿ–:ô™4˜Ú«Gðà3ùõ¨Ÿ¨ 7Ò¨I$é©)w¾Õ-£Jàüwìy.S%®ÝHÆ?àÏ´¥ÍÒZc¨V¯5 ãv°Ù²êëd•!ôbÍ*­{˜õpeû¦³=’r5óðó#yíãÚ¼Úãyæ;/u繟WZAÉÉÉD'$®­‹Xàñvq.ÄMéØ,ƒ/[­Å†ÑIÓAéû OµëέiX¢+Q·émX�‡ðâ(ßùoö±¹xìܹ“jÕª�ÓvœË,ãÇgS¾™L& P ©Aû§zÓ©áõÄX5òS¶ñŘ�|ºÍ‡!ºÝöáþºå°“Ç�µ³ykÒ§lti V¤ûÔiÔùe )U›“ã`ßûózîC¼Øënn¬I�âÁ¹yïN˜ÂÏ©á-‡òò}q„^ä‹› Á·ž7º¿Jz÷Ïy+æmZ�X‰Îa½S©½ö]ŽT½“ë£Ã 7%³hÒHÞ[çB?ÍÝïÍýg1.bï5§[³ëuïfáä἟rÏîJÃÊvr·ÍaüзY•QϺ €1®}^|š678(JÛÆw3÷`8¥µ"‚:÷£wûÛ©â0àqnbÞÛø`u�‹xH¨ÑÕ¨y„9o|È®l+ÊFc �u‹“q-D”l[út8±msßlÛŒÜüìlÆÇ~ÇçEµiR9ïóÙÖðl¯µgø�ù%w÷ F|Åm4^^…ç|—¹áUº½¶É£õ*]_õ—áLš¿‰ˆ²e‰¶YÉÛóK= ƒÁ­xíÛÙÚµ;Sh „pC§çܵe 9\=ƒe*�{¢<¬•ZÒ«_wî¼1›–Íî§2ñµ¹ìòœyÀ·®ˆ‹‹%$$Ýõ?÷ ¾�?§×ÃÕX4f^³ùo—k«ÒŠ'ŸêBó›â±ë¤ïþ†‰Ï¿ËÚ\Côít®íê–îçq`ÝlÞšø \¨•è>uu7¼‡³j ªÅ8Ø;å!&ç>İ^÷ŸWªç¯ xwÂ{ü”ªÞr£ï‹Ã¡LàÇ[FbÔ7ñz· ¤wÿ‚·Ê¼E«áÇÏ«3¯W‰hË_·åÐû¿R¦q-âÃ#rýÄ;#^cyJà´¡5äÖFÜ|t-ƒvfV®¨e¹>ÉÎÖ÷ßdá¶bâ1›ýì_½·;»ýöñHJJbÔ¨—0›M§ý½×ëcøðlڴ骬æå±t!NËÃÖe+I�ªM�ò*¨q´õ:]ËÞ©�›?Ș-Õ8þqj˜5�û_™L÷èÕŒùoK7¹‹Îƒ?á×cÁ¢óر´öͤo›¦4m;€æŽLÝ�r%gŸ‰ZõX>¢]:µã¥å…(¾#,}­Z6¦é}OóEAK^|ѪNÖâÑ ›—BÎ÷cx°];ÚuÇ ÏŸ¯Øç²^3µn�eÙˆ'èöðôøÐM›¥ö+¨„ÔoI¥Ÿ†ó`ó<ò~�^x“7»G²ðùö4»³_øÚ0èÑÚÅãþnÔJt3‚ú©ïÒ宿Üûĸ›¶¡†ñDÈJ|d"ãÛxù²ÿý4mr�¾“Bƒ‘£éTáâV]ZÚoür¤,]^EïNwqc¥(,jñÔùÅÛÖe"Úxù°[Ê%$Ò`ðvn>”¶Ñ%åzkm ßêL‹Æwp{¯±Lý:‹z�®Ã˜ŸW|¹ ýw×/bþ´yìu¦�ÿ2û~Á‘£GOÚò{6n¦ ~¦¼Ø�–·ßH™`#ƒ���l6[qA'mßNŠŠ¼„Ö– �EòMφ”«X‹Î³Êpwʱث81èÍg©²ñšU¯L|�ŽL7wc\Ï$lúÙÛ?EAQTUÅfròËO{ ¹£ ±Ùé»\%¢CÞ@µß'ѪFb+ÜHëç§³aß~zy:�Kkï Ú×J$¾z;>ðÞϸa͉Óü%çÕÍ·†òU¯64¼­6�LÙ†;{ß¼Ò�ºI副֚ÉiMÑïvÂ^²¿Lÿ/��5¯7uo¼‘µåÃ-ûн ›äääâcöoÖ««qKÄ·¼Ð± ÿ©Û€~›ëòÜ£Õ±ú}§myª˜”ˆúÇNaÄd2�v��¿fQûñ±ŒìÙžz5*fV0™L8L&õœöñùÚ´i£G�Æï÷Ÿ6,Œ=úª ;x„8Û/;‹B QQË·¤}íýLŸ<‡Ù~ðg±yÚT~ mJ³$#jÅ–ÜÓ¦OœÁæ /ºî#÷àF¶9*· UÕ]Ìx{!û=ZÞnæ¼3›ä­hRöøéçç÷y3Xï:~ñÐÉÞ¼˜¥ÛRqûAËÛË·Ÿ,$íÆ[¨~Žm²ç¶^[çÁ¯9 ‘±n »Ã’HŠ>Sµ ãÛðï¯<‚'PÈá%KØbfÏÜ�X›ZHÀ³�ï–î 4)‰õï·ÁP¹9wUÞÎŒ÷¾ÇY¤ÈÙÊô�—’q¼ÑÀXƒ6÷W`Ão°d>šî%uõûLÿ-‘æ Ëþk•—®ëýW´•÷ž|’1"ùO×a¼9cßû1/u¾‘Pttà ´¹¿«^Ê'¿&¾l4öƒ³øts š×1á+*B×uŠVÂä•É8Âé\¹,GW.ÃÙè¿ÜaÉA×!¼Ñ=ÜæZÄ´2‹lpˬL™2eNÚöiߣ󀹤]ÿ}^ùˆyË—2ëõ§hZÎtì3'÷ niÕßü7·d7ñe£0oŸÁg¿мnt�ÚÓ4ÿ+ŒœMŽÁJ•˜~˜¾˜‚–m¨äJ=MùQÒBxêÏ5²]ÙàˆÆZà!¬áÙ–{”ˆF÷Ó(6ÏžAšf"±b,æl¹ö Uî¤UÕ]¼=èìqëTŽ)`Ňs8P§·˜RŽM5àgógï²p6ñññT©Rÿî|÷[ ¶ˆ2T)ãcÝìŤÔm@\º]×±›Us0Á!!$&&R¥JåS޵ró¿_oàf¾»�ù…T(FÊÖ�¨5jcO?}YÙCíæ¸PŽÍø­ky¬žð]þï±­žfä{³Yºl.ï jÃuAœó>ÖÏv|Ÿáßš5k7nÂ)“j𯨱ãY³fíy-ëJ£ªªti qÚ“ÃNyääibb‰6U¥ËÛ3y@?ÑÚa5X¬`Š!Ò—Ìáô¿Þíª‘‘„ûRIq�T�M&…¢"T8 ‘åÊ>i¬�‚íº»éÙ³=ÿ©C†`"-¿b3ç0æóÜÖ«“Ÿ—_²^ÝïÃ� “éŒÑ€‚ì, �—�æ¥ÈŸKv¶¿ä÷E^/˜ÌÏaTK$�gΉÊÑïL&5PéXà‰&6ÒJ�>ñåã'u®ÙŠÈÛÂÅ~žEÏÚÆOÓ63o²‹|oÕÛã£×ÇóÌž;yyk ±‘AÔzþ+6>kDU‹ã—1ÈKæ–2äçít<™™`³TüýÿXĽÓáîh¾_E³{jqàë—Ù¡©Rî‚–ùW¸6Îbâ�14;Cl=ú¼ù£F:ÙÛeO9PB‰Œ4pxÅNìaaÅËÔ³quƒÁˆŽ�ÁÓÖ6Æxü5Š{à7ŒZ>º®ŸãlÕ ŽJî~2}w¶å…~h‡5•èèè’uaŒŠ&ܛ̾ÃbÊV).«t'éJ"C‹ð¦ù�ÌôLBŽccSlUïáÙ';pÇñóJµi݈9PpNi5"êìëõúAÏ';_'""EQÐý~æ`ð�¦¬tòsݘÂ0«'ExïQö-šÂÀÏÇ‘—ï#òæ‡xõ£——óßÙ�_ý›}ü)[±b‹™�0qâ$V®\yÕ×é2ñ §D�f ˆÍXÃÆCÒÉôneöý˜çúk¥¨VN#ÃT�²Q*8O =Zf&Ù¦ÚÄ…«p´øwj™xbq±Ý¥�Rñ�hž©Ê#/=ËõËûÓó…­¸¼:†ëçÓÿKâøU^Îv�9÷õ^ÄV²¿ÙÍœI¶µ*áVàXk¿IxIÃW&é®|V½Ö•é³»t•dLL 1@Á¦…,9ôMÊ[q¯DìF•{ªíä³Ç7†ȼ°ežAHH!!!Àaæû+FÕ ,ý8NÞI¹¸\~"¢Â±˜]ÇvBáA¨YF €+-“¢½_ѱÁ(þPM§´xhšN•p휶SEš5½÷úwØ®Á ig]îmGÓ¡QY*YMdýé`×\¸Ì7S>ÆÀ¾cmÕ2 Äãbeš†?p"„�¦’óªË¨$-êÅ=ÿ]ÆáœŒ5†°rIMt޵LÀYƒôß®7øÄ¹ur™(ÇöÛ_8°{úƒITPæ�Ðö/bÎoÕè6°5"Í(¨˜C¨Ùø6*šA;°„y¿Uâá�¨iÅHHùZܧؿœE{«Ñ©×�T°)¨Á‰´íÕž²Û¿ã‡#gJv›�ôƒ‡Èòê`ˆâ?´¤RÉí‰FnV–øòD�á:sAëý·+˜¿Ù†ÀþïYz &í:$ FÓ¨c‹cŒü[™?×Éí=ûqWbXq«‘%œ µS;îâV]jdC}ª#õ¯O ÂfÂh‹¡FëÿÒ¦b.›7'ãÎ_Ãü¯�´6�ÇU#©J®«^—¦ô S£$¢££O¹p�tÉ$ýû¬-ß™�ƒî§üƹ|¹ÇMXXXñ÷½ ežÌÀõíúñè]µ©ŠÙ`&¬Â<Þéôßw°9ßû§wyX·ègBÚ=NÓˆâ rPR:Ôµ¢k@'ãÇÙ,‹îÊ«›sG�먒X�šÿiM·®÷P'©êÃŽ¢0Œ˜m”¯y'OŒŸÌcñóÊ×ømAdþøÕY–{Ù+æ²<ôaFö«O¬0؈¯Q“ 6ü±Œ…»ªÓ{xÊš¨Á×ѶwÊmý†¹û §¹—Wl؃|Ú´·j%1©]>D5cPɾÉÉÊÅZ¾±gh øÛõÏ÷¸ÔÉ[·‚Mñ ¨},¤©å¹»÷“ÜwÛuÄ9¬MÁÄ×îHׯa$oÙ…³ pžûøÂ,Xð- |[jªy™‡GTâ:½ÇO�t4ù™Éìݲšÿë=Œo¶dw÷hÉÌú ú“}úibm:E9)ìÞ0‡·WÚæ }ÃS}ñyO¢Ì~ò�Ûøâ•çØžò3† Å:°7ï.‚]ÏãÐú¯2l6‡5N?õ§ Ó'Çð>óùCidä°gÃ&öú#J*æ#‹?å›FýùdÙã¨ÞUŒm7’äSkæó_￞xþfØÇôaãq¼ðŸ4Í#3?ŸëW±ÃüöÔÇîi\Ô—'ÆÉ H Z¡‹#¿¯fÆk·‰]/t‘Ô†G^z”ëËE`ÑóÉØ¿•%#{0h¡‹Ð„²ìžÚŸÞ®'xzòFÆÙÐ ³8²ãg>³ŸïÌ} zöJ­z–‰­tæ?1“ü á&Sñ÷½Àež|ÍÉ,"¾]^®eB e;Ùµö3º¿ø:‡LV*žÜu‚Nô‹À�Ï¿Ã�›OA毬[�É]þÂâO¸¾g\o•Åÿ=]…0£Ÿü£ûØ0÷mV/É{ðiÃÅÓ�ò€®ðºq¥üÁ–UŸÐ¥ÿ»,Úã¡bÅŠ»\]_θ§Ltyr,S{—#H+ }×<Æ<½žý¾½|1äü}û3eqeB•<®�Íc=Þ&ÅD…Ó=iäÿ�O_[È ÁKYòL:9Eùìùe#¿ûí'ΫEŸ0ûŽ~|·½?&ßj^¹DqïïIÇôÙÖ[Ñ|þ—T=s³¾”Y4«Õâ&#?š=ÇÓ·jŸ�ÔÔT<žâ.O»ÝNlllÉ|2û÷ï'""¢¸í¤²IKKCUUTUÅn·“‘‘AÕªUQUŸÏGrr2……ÅÝŠ‰‰‰dddàóùH86ñàÙÖë÷ûÙ»w/UªT)ùžùùù¤¦¦R¥J•ӶΩ±÷2frMævêÏ:5²däææRtl°ºÉd"44´d<Óßíããû ))鲜[©©©[_ªz:!!¿ß/�GHàx„¸Ü|>‡¢bÅŠç6&ê w¥žœœéÒB\ÛäméâJ`4©\¹²“‰×ë•AËB!„(Ýìv»!ĵKUÕå‰!Ä š¦�2­Â•À`0HàB\» ^¯W Bˆ‘×ë½âÆ!¹Ýn ü~?n·›¬¬,l6ÁÁÁRÆ—¡ŒO$�G!Ä©­�‡„„�>Ÿ¯×+sEÁb±�ÓéÄd2a±X¤Œ/aÿYAA�ŒáBq‚ÛíÆápàóùÐ4 ]×¥PΓ®ëhš†ßïÇápàv»¥Œ/qÿ™ÌÃ#„â/†s!Î�ÉdúKë�”ñÅ/ãÓ}F�Bˆš¦¡(ŠÄ¿DUÕ¿ H–2¾øeügf³Y�BˆSIËÅ/K)ãK{¼ú|>´,„B.ÆRÆ¥›ßï—!„B”nF£Q�BˆK+""‚‰'2~üøË¿1j°‚7ï GFÕœ‰�ê}f±|TC®Ö¡ÖV«U�BˆK{á2d*TÀ`0œÛ7æå%ëX;»/5.Ò@ OÆA²²²®ºò|å•W?~<¡¡¡%? ãå—_fäÈ‘ç¼ct]:~“éß,çç5«Y¹xŽíÃÝUCJ‚ ^�MrròUyÜÉ»´„B\2ªªÒ¯_?*V¬Hnn.'N<‡¿RˆjÚ–¦k¯<õ>!{d*ë7±ëûaÖý^cð dÉN‡Ã’Û8î%y /lšFõ¯ÿBú­…$&¤�àù?ÿé˼{&Øy_Z1?Úü"ΦóÌÞ–öãS¶�'C‹˜ñoûñ^c1]¼x1eee¸Ýn***P—ËEUU‹/îF ñŒúîãŒ>·š±ÿô Ÿ›ãHKKÃj qrï*ÝÚL pq—oSÚHþeþ÷˜6<{¸™Ê÷Öóâò5l0 ~Sÿu³oï‹Ódl9ËŸVÍgÑγXÈ3‡y—0Ì�ÍŸóçuϱüµC|Ù‹y¬Éd’!„½o„ Œ?Ã0X¹r%ÇŽëÞÕ€‰”�å�W_ç­�ïþÖÆÆ5uΉ\£(üè î™z·�þ¯Æ?ÂâûÝXÛÇf ›Rœº�wOgÜè±<øV?ž(�D^è‚ÁêüÙòæßQ„µ9²%évîÓÆ†_næXuõ5צ¦&***8}ú4999¸\.Μ9CEE�çò˜¿Æ¨âDox�“XÈÉɉ´wQUÌf3}úô!##ý‚$´€{ž]¤ÀZ¦éGö i¬LåÙgÆ‘edLü?èû?<|¸n§,6â”�Ù¹§†›î»Ÿ|ïùÚ ÃSO½®’””yߨ@³3»ßÓžð4r®Þ 99EQ·5ÐìO#5)ˆßß¹–Ç8³‹­1}r.¡Pß.¹‰�_ÿÇTK·ÛÄü-9�NÊËËc5;ÑšžòòòN ™/Éh¢Ñ©iÉX»9c»šœJŸÀŽWyIOOGUU”ºjê” R}Toú ßÃÏÄÅ[ؾwkŸÿ!“‹ÑâÒÈȈ'éJ9pè»wïfÆ7xeV>{j³§×âÔÚÚ* �Bˆž³téRêêêHKK£¢¢‚… b³ÙØ·ok×®½‚’Rî˜Â˜$ _Ÿ·…O�eÏžØÿ‹ÿà�œù¬Zv?£û¥a×4ìéý9c>+�åÂ}žx›7�âÑÒäXC¨ŽþLyt¹mcóÉ0®=0�œôTÜivÌ„0 çÎãÀ†íè3ËX4c_ïß—¾n¦øÎ{™3uyy½+é¥%„¢W’žŠŠ ¼^/Ë–-ëæ—o‡/§�“()ªbÍãëhðAFFFû’6þ{Ã[x—Íá‹v³�ÚÎリÍÊM·“—àøÛ+¸ÿé7±$&Fj(ôOø¯-úÕÛ Ï‰§ùÓüð¡çMùZCé³s—‡{´ñêSë1ŽXMƵ¦¬¬ì¢ÏšššX°`A·Ë0ξIùÕÜyï=<¼r}Óì„›«ùdÿvþó¥?R]ÛDÿÎëžü1úcóøùîB•f>?°žz‰³Öx ]£¸ï�,ʈG øâè»”þø5N ù¼ÈܧgñÈÜ5l”†%ä¥þäavýâ§¼ÕÖ†×k±R¦L™¾^Bѳª««ÉÌÌ쑲ÒÓÓÑu�†††«ÚÞçóQYYI~~>6›­Ó²––NŸ>Í×¾û:ï>ž”””KŽß#1î½_˜ì@dÌ Ix„B\Än·c·ÛÑu=6󶏯]%;3H!„—t­N© 1ÝMv¢É¥´áB!Ä ›ì´¶¶JÂ#„Bˆ7Ù‡G!„7x²‘6<’ð!„â†Mv ½¡³„L!„7j²ep¹\=!„B\7�@·Ç/ ‡Ã˜C¡Á`›ÍFkkkl¡Åb‰d‹%2p�Ù›·Â0Œó™“ÙL(Âd2 c뫪[ ãßèËf³Å¶Óu³Ù“@UUE! ÆúÝGË�ŸÕjE×u 2ò¢¦i±÷º®c³Ùb}>f³ŸÏ‡ªª±~üÑýúý~4M# ÅÎÍb±t:®p8Û®­­-V¾¢(�ŽYUÕØþTUEÓ4ÚÚÚbeÅÇÇãõz …B‘ Ñ¿h|âãã †�¢(X­Vü~l?Ñ1L&Š¢ iÁ`0vŒ&“)¯Ž×1ºÞ…ç¥i>ŸEQÐu‹Å»îÑ÷~¿?6é�Éd" a6›1 #Ò ¬ý<£åû|¾ØõP%—@ €ªª±ýG�­#‡Ã�×ë�­=ώשãñ+ŠB(Š•Ûñ8£s©ƒÁó7~û~£÷Sô~‰žwt"ºè}‡×ëEQ”‹¶ ‡Ã�âyá}/χ<ò|Èó!ÏÇW>¢s�Eïc‹Å;¶è½§( ‰‰‰x½ÞØ>- V«•ÿµºø'däLÝIEND®B`‚labwc-tweaks-0.1.0/data/translations/000077500000000000000000000000001513773473700175475ustar00rootroot00000000000000labwc-tweaks-0.1.0/data/translations/labwc-tweaks.ts000066400000000000000000001161211513773473700225050ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Behaviour Mouse & Touchpad Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add Remove Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_ar.ts000066400000000000000000001161721513773473700231750ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance المظهر Behaviour السلوك Mouse & Touchpad الÙ�أرة Ùˆ لوح اللمس Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius أركان نصÙ� قطرية Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add أضÙ� Remove احذÙ� Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_ca.ts000066400000000000000000001161421513773473700231530ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Aspecte Behaviour Comportament Mouse & Touchpad Ratolí i ratolí tàctil Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius Radi de cantonada Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add Afegeix Remove Elimina Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_cs.ts000066400000000000000000001161211513773473700231720ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Vzhled Behaviour Chování Mouse & Touchpad MyÅ¡ a touchpad Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius PolomÄ›r rohů Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add PÅ™idat Remove Odebrat Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_da.ts000066400000000000000000001161211513773473700231510ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Udseende Behaviour Adfærd Mouse & Touchpad Mus & Touchpad Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius Hjørneradius Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add Tilføj Remove Fjern Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_de.qm000066400000000000000000000536541513773473700231570ustar00rootroot00000000000000<¸dÊÍ!¿`¡½Ý§de_DEB ­8¢'CHw'x?�G¤H¡M€@ÖQÉ#1ƒå,¸¼œDºÕ5ÞÒ„67+Ô8þÉZì5P*]û¨GCnUˆHpÅ<¸~U=္´&Ùƒ†i†Â.1Õ͔N�°5D„²½2p²½2>ûÞð?» ÷Kò 9•3%ÆÓqS2ã†bb52‘ß³š—ó’Ξ÷O.óçüy¢é/Ô„-\¾œû1�ÌÒT ÜÜo~ù1$Mõ-ø”9�55É1SûùEhZ‚s?<o¯ ¼‡ �OzžX„Kx«F\.í¢LïÅ D+·æé J�îÚSÐùnWTå¤6Á<"s06t06Egž*yƒÙËœZ‡¬šb¿¬šbKºÂ+OÜËóÒ6‡Í2U5mëýôAMCî>h(“å>$5‰$>=Gs= >f¨I¿V“|9,c‹”(ÓsCµYv/©C…ŒFÅJHŒ¡DĪ‹ÃNþÌŸ´8Â$0Ÿa~= œTD-8ÓAMC4åW ì  \Ä*ÐrõBDƒ5é.S¨«ÎPà´rƒ¹óÄPªÁH¥KèX_:ó€õ] §äñ /¥/%]’M^U|×{0@Fu/$!�Š 4%‹ŸU@�—~Ldö2£A ?NJÖS,¤:°f.#CÁƒ•û2¨“¼ HÙ½ê2FØÂÉ7 A³X )gT9Î Mgþ"3 r�t 6 tø E¶ €CÉ ‰—åT / d @�ä_ r d ø ‡´µ4µ ŒlA} ¡¿BÜ §2ä/ ®üøE å t;Û ýN2, ôsˆ K³ðBÖ cÂ3 p¤PW s‰ÃY €˜™o �õ3n ÈMÄ<5 ÖC$ ÖXÞ+ î–4#[ ÷0ËJ  £¤ )\…Eþ :œt; G’ô6 H3dÿ ­¤"l ½?dIo É ;s ìÇ`7_ ø�4Gv ù]”3ñ XäB jÕL¡ #þT'¨ & 4%b ?B‘ ZÀ Ê dù<&Ÿ ž•S=Š ¹ õ;¦ ÄÈ<I5 îüÃFür Vollbild-Lupe auf -1 setzen#For full screen magnifier set to -1 BehaviourzAnfängliche Anzahl, um die das vergrößerte Bild skaliert wird:Initial number of times by which magnified image is scaled BehaviourTMaximieren statt am oberen Rand anzudocken(Maximize instead of snapping on top edge Behaviour®Zeigerbewegung erforderlich, um ein gekacheltes oder maximiertes Fenster zu verschiebenGMovement of cursor required for a tiled or maximized window to be moved BehaviourNieNever BehaviourNicht-PixelNonpixel BehaviourÞEindimensionale Zeigerbewegung erforderlich, um ein vertikal oder horizontal maximiertes Fenster zu verschiebeniOne-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved BehaviourNur an Rändern Only on edges BehaviourNur in RegionenOnly on regions BehaviourNPlatzierungsrichtlinie für neue Fenster Placement policy for new windows Behaviour`Fenster bei Fokusierung in den Vordergrund heben"Raise window to front when focused BehaviourzErfordert Zeigerbewegung, wenn Fokus folgt Maus aktiviert ist2Requires cursor movement if followMouse is enabled BehaviourÐWiderstehen Sie interaktiven Bewegungen und Größenänderungen eines Fensters über Bildschirmränder hinwegEResist interactive moves and resizes of a window across screen edges BehaviouräWiderstehen Sie interaktiven Bewegungen und Größenänderungen eines Fensters über die Ränder anderer Fenster hinwegVResist interactive moves and resizes of a window across the edges of any other window Behaviour¨Einen kleinen Indikator über dem Fenster beim Größenändern oder Verschieben anzeigenCShow a small indicator on top of the window when resizing or moving BehaviourŠOverlay anzeigen beim Andocken eines Fensters an einen Bildschirmrand8Show an overlay when snapping a window to an output edge BehaviourbGröße der Eckbereiche, auf die alle 'Corner'-Mausbindungs-Kontexte angewandt werden, sowie Größe des Randbereichs, in dem die Mausgrößenänderung in jede Richtung angewandt wird.›Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. BehaviourÄAndocken von Fenstern kann entsprechende Kachel-Ereignisse für native Wayland-Anwendungen auslösenXSnapping windows can trigger corresponding tiling events for native Wayland applications Behaviour’Geben Sie die Dicke der Rand-Greifbereiche zum Ändern der Fenstergröße anOSpecify the thickness of border grab areas for the purposes of resizing windows BehaviourˆSchritte für Änderungen bei jedem Aufruf von 'ZoomIn' oder 'ZoomOut'7Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Behaviour$Alt+Feststelltaste Alt+Caps LockKeyboardAlt+StrgAlt+CtrlKeyboardAlt+Umschalt Alt+ShiftKeyboardAlt+Leertaste Alt+SpaceKeyboard@Beliebige Win (während gedrückt)Any Win (while pressed)Keyboard2Beide Alt-Tasten zusammenBoth Alts togetherKeyboardtBeide Alt-Tasten zusammen; AltGr allein wählt dritte Ebene3Both Alts together; AltGr alone chooses third levelKeyboard4Beide Strg-Tasten zusammenBoth Ctrls togetherKeyboard:Beide Umschalttasten zusammenBoth Shifts togetherKeyboardFeststelltaste Caps LockKeyboardÂFeststelltaste (während gedrückt), Alt+Feststelltaste für die ursprüngliche FeststelltastenaktionJCaps Lock (while pressed), Alt+Caps Lock for the original Caps Lock actionKeyboardœFeststelltaste für erste Belegung; Umschalt+Feststelltaste für zweite Belegung;Caps Lock to first layout; Shift+Caps Lock to second layoutKeyboard€Strg+Linke Win für erste Belegung; Strg+Menü für zweite Belegung9Ctrl+Left Win to first layout; Ctrl+Menu to second layoutKeyboardStrg+Umschalt Ctrl+ShiftKeyboardStrg+Leertaste Ctrl+SpaceKeyboardbVerzögerung, bevor Tastendrücke wiederholt werden$Delay before keypresses are repeatedKeyboardBeschreibung DescriptionKeyboardrNum Lock aktivieren, wenn eine neue Tastatur erkannt wird/Enable Num Lock when recognizing a new keyboardKeyboard TasteKeyKeyboardfTastenkombination zum Wechseln der Tastaturbelegung)Key combination to switch keyboard layoutKeyboardLinke AltLeft AltKeyboard8Linke Alt (während gedrückt)Left Alt (while pressed)Keyboard(Linke Alt+Linke StrgLeft Alt+Left CtrlKeyboard0Linke Alt+Linke UmschaltLeft Alt+Left ShiftKeyboardÈLinke Alt+Linke Umschalt wählt vorherige Belegung, Rechte Alt+Rechte Umschalt wählt nächste BelegungXLeft Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layoutKeyboardLinke Strg Left CtrlKeyboard|Linke Strg für erste Belegung; Rechte Strg für zweite Belegung6Left Ctrl to first layout; Right Ctrl to second layoutKeyboard¸Linke Strg+Linke Alt wählt vorherige Belegung, Rechte Strg+Rechte Alt wählt nächste BelegungVLeft Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layoutKeyboard2Linke Strg+Linke UmschaltLeft Ctrl+Left ShiftKeyboardÌLinke Strg+Linke Umschalt wählt vorherige Belegung, Rechte Strg+Rechte Umschalt wählt nächste BelegungZLeft Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layoutKeyboard(Linke Strg+Linke WinLeft Ctrl+Left WinKeyboardLinke Umschalt Left ShiftKeyboardLinke WinLeft WinKeyboard8Linke Win (während gedrückt)Left Win (while pressed)Keyboard‚Linke Win für erste Belegung; Rechte Win/Menü für zweite Belegung9Left Win to first layout; Right Win/Menu to second layoutKeyboardMenüMenuKeyboard^Menü (während gedrückt), Umschalt+Menü für Menü)Menu (while pressed), Shift+Menu for MenuKeyboardpRate, mit der Tastendrücke pro Sekunde wiederholt werden0Rate at which keypresses are repeated per secondKeyboardRechte Alt Right AltKeyboard:Rechte Alt (während gedrückt)Right Alt (while pressed)Keyboard,Rechte Alt+Rechte StrgRight Alt+Right CtrlKeyboard4Rechte Alt+Rechte UmschaltRight Alt+Right ShiftKeyboardRechte Strg Right CtrlKeyboard<Rechte Strg (während gedrückt)Right Ctrl (while pressed)Keyboard6Rechte Strg+Rechte UmschaltRight Ctrl+Right ShiftKeyboardRechte Umschalt Right ShiftKeyboardRechte Win Right WinKeyboard:Rechte Win (während gedrückt)Right Win (while pressed)Keyboard Rollen Scroll LockKeyboard6Tastenkombination auswählenSelect key combinationKeyboardHBelegung zum Hinzufügen auswählen...Select layout to add...Keyboard.Umschalt+FeststelltasteShift+Caps LockKeyboardWin+Leertaste Win+SpaceKeyboardÜberAbout MainDialog Erscheinungsbild Appearance MainDialogVerhalten Behaviour MainDialogTastaturKeyboard MainDialogMaus & TouchpadMouse & Touchpad MainDialogTouchscreen Touchscreen MainDialogAdaptivAdaptiveMouse(Schaltflächenbereich Button AreaMouseKlickfinger ClickfingerMouse<Bei externer Maus deaktivierenDisable with external mouseMouseRandEdgeMouseAktiviertEnabledMouse FlachFlatMouse KeineNoneMouseZwei Finger Two FingerMouse$links-mitte-rechtsleft-middle-rightMouse$links-rechts-mitteleft-right-middleMouse,Fehler beim Laden von Error loading QObjectšFühren Sie labwc-tweaks von einem Terminal aus, um Fehlermeldungen anzuzeigen7Run labwc-tweaks from a terminal to view error messagesQObjectÿÿÿÿ TouchscreenInvertiertInverted Touchscreen LinksLeft Touchscreen NormalNormal Touchscreen RechtsRight TouchscreenEntwicklung Development pageAboutUmgebung Environment pageAbout<Icon-Unterstützung mit libsfdoIcon support with libsfdo pageAboutLizenzenLicenses pageAbout4Native SprachunterstützungNative language support pageAbout,SVG-Icon-UnterstützungSVG icon support pageAboutVersionVersion pageAboutWebseiteWebsite pageAbout,XWayland-UnterstützungXWayland support pageAboutErweitertAdvancedpageAppearanceEckenradius Corner radiuspageAppearance DekorationsmodusDecoration modepageAppearanceFBei gekachelten Fenstern aktivierenEnable on tiled windowspageAppearance&Schatten aktivierenEnable shadowspageAppearanceSymbolthema Icon themepageAppearanceLabwc-Thema Labwc themepageAppearance*Maximierte DekorationMaximized decorationpageAppearance ThemaThemepageAppearanceTitelleisteTitlebarpageAppearanceFensterschattenWindow Drop ShadowspageAppearance px px pageBehaviourEckenbereich Corner range pageBehaviour Inhalte zeichnen Draw contents pageBehaviour FokusFocus pageBehaviour Fokus folgt MausFocus follows mouse pageBehaviourAbstandGap pageBehaviourGreifdickeGrab thickness pageBehaviourHöheHeight pageBehaviourSchrittweite Increment pageBehaviour"Anfangsskalierung Initial scale pageBehaviourLupe Magnifier pageBehaviourNMaximieren beim Andocken an oberen Rand"Maximize when snapping to top edge pageBehaviourjAnwendungen über gekachelten Zustand benachrichtigen #Notify applications of tiled state  pageBehaviourRichtliniePolicy pageBehaviour<In Vordergrund wenn fokussiertRaise on focus pageBehaviour$Erfordert BewegungRequires movement pageBehaviourWiderstand Resistance pageBehaviourGrößenänderungResize pageBehaviour*Bildschirmrand-StärkeScreen edge strength pageBehaviour Overlay anzeigen Show overlay pageBehaviourPopup anzeigen Show popup pageBehaviour>Schwellenwert zum EntmaximierenThreshold to unmaximize pageBehaviour.Schwellenwert zum LösenThreshold to unsnap pageBehaviour6Bilinearen Filter verwendenUse bilinear filter pageBehaviour BreiteWidth pageBehaviour$FensterplatzierungWindow Placement pageBehaviour Fenster-AndockenWindow Snapping pageBehaviour$Fensterrand-StärkeWindow edge strength pageBehaviour ms ms pageKeyboardHinzufügenAdd pageKeyboard*Beim Start aktivierenEnable on startup pageKeyboardAllgemeinGeneral pageKeyboard TastaturbelegungKeyboard Layout pageKeyboard Belegungswechsel Layout switch pageKeyboardNum-TasteNum lock pageKeyboardEntfernenRemove pageKeyboard(Wiederholverzögerung Repeat delay pageKeyboardWiederholrate Repeat rate pageKeyboard*BeschleunigungsprofilAcceleration profile pageMouseKlickmethode Click method pageMouseMauszeigerCursor pageMouse@Während der Eingabe deaktivierenDisable while typing pageMouseZieh-Sperre Drag lock pageMouse LinkshändermodusLeft handed mode pageMouse0Mittlere Taste emulierenMiddle button emulation pageMouse(Natürlicher BildlaufNatural scroll pageMouse Zeiger AllgemeinPointer General pageMouse*Zeigergeschwindigkeit Pointer speed pageMouseScrollfaktor Scroll factor pageMouseScrollmethode Scroll method pageMouse GrößeSize pageMouse StatusStatus pageMouse"Tippen und Ziehen Tap and drag pageMouse6Tipp-SchaltflächenzuordnungTap button map pageMouse$Tippen zum Klicken Tap to click pageMouse ThemaTheme pageMouse$Drei-Finger-ZiehenThree finger drag pageMouseTouchpadTouchpad pageMouseRotationRotationpageTouchscreenTouchscreen TouchscreenpageTouchscreenˆlabwc-tweaks-0.1.0/data/translations/labwc-tweaks_de.ts000066400000000000000000001216201513773473700231550ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Radius der oberen Ecken bei serverseitigen Dekoration Render drop-shadows behind windows Schlagschatten hinter Fenstern rendern Render drop-shadows behind tiled windows Schlagschatten hinter gekachelten Fenstern rendern Specify decorations for xdg-shell windows Dekorationen für xdg-shell-Fenster festlegen Server Side Decoration (SSD) Serverseitige Dekoration (SSD) Client Side Decoration (CSD) Clientseitige Dekoration (CSD) Show server side decorations on maximized windows Serverseitige Dekorationen bei maximierten Fenstern anzeigen Titlebar Titelleiste None Keine Behaviour Placement policy for new windows Platzierungsrichtlinie für neue Fenster Automatic Automatisch Cascade Kaskade Center Zentrieren Cursor Zeiger Focus is given to window under mouse cursor Fokus geht an Fenster unter dem Mauszeiger Requires cursor movement if followMouse is enabled Erfordert Zeigerbewegung, wenn Fokus folgt Maus aktiviert ist Distance between windows and output edges when using movement actions Abstand zwischen Fenstern und Bildschirmrändern bei Bewegungsaktionen Show an overlay when snapping a window to an output edge Overlay anzeigen beim Andocken eines Fensters an einen Bildschirmrand Always Immer Only on regions Nur in Regionen Only on edges Nur an Rändern Never Nie Movement of cursor required for a tiled or maximized window to be moved Zeigerbewegung erforderlich, um ein gekacheltes oder maximiertes Fenster zu verschieben Specify the thickness of border grab areas for the purposes of resizing windows Dicke der Rand-Greifbereiche zum Ändern der Fenstergröße Raise window to front when focused Fokussiertes Fenster in den Vordergrund heben Maximize instead of snapping on top edge Maximieren statt am oberen Rand anzudocken Snapping windows can trigger corresponding tiling events for native Wayland applications Andocken von Fenstern kann entsprechende Kachel-Ereignisse für native Wayland-Anwendungen auslösen Resist interactive moves and resizes of a window across screen edges Widerstand bei interaktiven Bewegungen und Größenänderungen eines Fensters über Bildschirmränder hinweg Resist interactive moves and resizes of a window across the edges of any other window Widerstand bei interaktiven Bewegungen und Größenänderungen eines Fensters über die Ränder anderer Fenster hinweg One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Eindimensionale Zeigerbewegung erforderlich, um ein vertikal oder horizontal maximiertes Fenster zu verschieben Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Anwendung zeichnet Inhalte während der Größenänderung neu. Wenn deaktiviert, wird ein umrissenes Rechteck angezeigt Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Größe der Eckbereiche, auf die alle 'Corner'-Mausbindungs-Kontexte angewandt werden, sowie Größe des Randbereichs, in dem die Mausgrößenänderung in jede Richtung angewandt wird. Show a small indicator on top of the window when resizing or moving Einen kleinen Hinweis über dem Fenster beim Größenändern oder Verschieben anzeigen Nonpixel Nicht-Pixel For full screen magnifier set to -1 Für Vollbild-Lupe auf -1 setzen Initial number of times by which magnified image is scaled Anfängliche Anzahl, um die das vergrößerte Bild skaliert wird Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Schritte für Änderungen bei jedem Aufruf von 'ZoomIn' oder 'ZoomOut' Apply a bilinear filter to the magnified image Einen bilinearen Filter auf das vergrößerte Bild anwenden Keyboard Shift+Caps Lock Umschalt+Feststelltaste Alt+Caps Lock Alt+Feststelltaste Both Shifts together Beide Umschalttasten zusammen Both Alts together Beide Alt-Tasten zusammen Both Ctrls together Beide Strg-Tasten zusammen Right Alt (while pressed) Rechte Alt (während gedrückt) Left Alt (while pressed) Linke Alt (während gedrückt) Left Win (while pressed) Linke Win (während gedrückt) Right Win (while pressed) Rechte Win (während gedrückt) Any Win (while pressed) Beliebige Win (während gedrückt) Menu (while pressed), Shift+Menu for Menu Menü (während gedrückt), Umschalt+Menü für Menü Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Feststelltaste (während gedrückt), Alt+Feststelltaste für die ursprüngliche Feststelltastenaktion Right Ctrl (while pressed) Rechte Strg (während gedrückt) Right Alt Rechte Alt Left Alt Linke Alt Caps Lock Feststelltaste Caps Lock to first layout; Shift+Caps Lock to second layout Feststelltaste für erste Belegung; Umschalt+Feststelltaste für zweite Belegung Left Win to first layout; Right Win/Menu to second layout Linke Win für erste Belegung; Rechte Win/Menü für zweite Belegung Left Ctrl to first layout; Right Ctrl to second layout Linke Strg für erste Belegung; Rechte Strg für zweite Belegung Both Alts together; AltGr alone chooses third level Beide Alt-Tasten zusammen; AltGr allein wählt dritte Ebene Ctrl+Shift Strg+Umschalt Left Ctrl+Left Shift Linke Strg+Linke Umschalt Right Ctrl+Right Shift Rechte Strg+Rechte Umschalt Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Linke Strg+Linke Umschalt wählt vorherige Belegung, Rechte Strg+Rechte Umschalt wählt nächste Belegung Alt+Ctrl Alt+Strg Left Alt+Left Ctrl Linke Alt+Linke Strg Right Alt+Right Ctrl Rechte Alt+Rechte Strg Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Linke Strg+Linke Alt wählt vorherige Belegung, Rechte Strg+Rechte Alt wählt nächste Belegung Alt+Shift Alt+Umschalt Left Alt+Left Shift Linke Alt+Linke Umschalt Right Alt+Right Shift Rechte Alt+Rechte Umschalt Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Linke Alt+Linke Umschalt wählt vorherige Belegung, Rechte Alt+Rechte Umschalt wählt nächste Belegung Menu Menü Left Win Linke Win Alt+Space Alt+Leertaste Win+Space Win+Leertaste Ctrl+Space Strg+Leertaste Right Win Rechte Win Left Shift Linke Umschalt Right Shift Rechte Umschalt Left Ctrl Linke Strg Right Ctrl Rechte Strg Scroll Lock Rollen Ctrl+Left Win to first layout; Ctrl+Menu to second layout Strg+Linke Win für erste Belegung; Strg+Menü für zweite Belegung Left Ctrl+Left Win Linke Strg+Linke Win Select layout to add... Belegung zum Hinzufügen auswählen... Rate at which keypresses are repeated per second Rate, mit der Tastendrücke pro Sekunde wiederholt werden Delay before keypresses are repeated Verzögerung, bevor Tastendrücke wiederholt werden Enable Num Lock when recognizing a new keyboard Num Lock aktivieren, wenn eine neue Tastatur erkannt wird Key combination to switch keyboard layout Tastenkombination zum Wechseln der Tastaturbelegung Key Taste Description Beschreibung Select key combination Tastenkombination auswählen MainDialog Appearance Erscheinungsbild Behaviour Verhalten Mouse & Touchpad Maus & Touchpad Keyboard Tastatur Touchscreen Touchscreen About Über Mouse Flat Flach Adaptive Adaptiv left-right-middle links-rechts-mitte left-middle-right links-mitte-rechts None Keine Button Area Schaltflächenbereich Clickfinger Klickfinger Two Finger Zwei Finger Edge Rand Enabled Aktiviert Disable with external mouse Bei externer Maus deaktivieren QObject Error loading Fehler beim Laden von Run labwc-tweaks from a terminal to view error messages Führen Sie labwc-tweaks von einem Terminal aus, um Fehlermeldungen anzuzeigen Touchscreen Normal Normal Left Links Right Rechts Inverted Invertiert pageAbout Version Version XWayland support XWayland-Unterstützung Native language support Native Sprachunterstützung SVG icon support SVG-Icon-Unterstützung Icon support with libsfdo Icon-Unterstützung mit libsfdo Website Webseite Environment Umgebung Licenses Lizenzen Development Entwicklung pageAppearance Theme Thema Labwc theme Labwc-Thema Icon theme Symbolthema Window Drop Shadows Fensterschatten Enable shadows Schatten aktivieren Enable on tiled windows Bei gekachelten Fenstern aktivieren Titlebar Titelleiste Corner radius Eckenradius Advanced Erweitert Decoration mode Dekorationsmodus Maximized decoration Maximierte Dekoration pageBehaviour Focus follows mouse Fokus folgt Maus Requires movement Erfordert Bewegung Raise on focus Anheben wenn fokussiert Gap Abstand Window Placement Fensterplatzierung Policy Richtlinie px px Focus Fokus Window Snapping Fenster-Andocken Corner range Eckenbereich Notify applications of tiled state Anwendungen über gekachelten Zustand benachrichtigen Maximize when snapping to top edge Maximieren beim Andocken an oberen Rand Show overlay Overlay anzeigen Use bilinear filter Bilinearen Filter verwenden Resistance Widerstand Screen edge strength Bildschirmrand-Stärke Window edge strength Fensterrand-Stärke Threshold to unsnap Schwellenwert zum Lösen Threshold to unmaximize Schwellenwert zum Entmaximieren Resize Größenänderung Grab thickness Greifdicke Draw contents Inhalte zeichnen Show popup Popup anzeigen Magnifier Lupe Width Breite Height Höhe Initial scale Anfangsskalierung Increment Schrittweite pageKeyboard General Allgemein Repeat rate Wiederholrate Repeat delay Wiederholverzögerung ms ms Num lock Num-Taste Enable on startup Beim Start aktivieren Keyboard Layout Tastaturbelegung Add Hinzufügen Remove Entfernen Layout switch Belegungswechsel pageMouse Natural scroll Natürlicher Bildlauf Pointer speed Zeigergeschwindigkeit Acceleration profile Beschleunigungsprofil Status Status Tap to click Tippen zum Klicken Tap button map Tipp-Schaltflächenzuordnung Cursor Mauszeiger Theme Thema Size Größe Pointer General Zeiger Allgemein Left handed mode Linkshändermodus Tap and drag Tippen und Ziehen Drag lock Zieh-Sperre Three finger drag Drei-Finger-Ziehen Middle button emulation Mittlere Taste emulieren Disable while typing Während der Eingabe deaktivieren Click method Klickmethode Scroll method Scrollmethode Scroll factor Scrollfaktor Touchpad Touchpad pageTouchscreen Touchscreen Touchscreen Rotation Drehung labwc-tweaks-0.1.0/data/translations/labwc-tweaks_el.ts000066400000000000000000001165641513773473700232000ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Αυτόματο Cascade Κλιμάκωση Center ΚεντÏ�άÏ�ισμα Cursor ΔÏ�ομέας Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Επιλογή της διάταξης για Ï€Ï�οσθήκη... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Εμφάνιση Behaviour ΣυμπεÏ�ιφοÏ�ά Mouse & Touchpad Ποντίκι & επιφάνεια αφής Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Σφάλμα φόÏ�τωσης Run labwc-tweaks from a terminal to view error messages Εκτελέστε το labwc-tweaks από ένα τεÏ�ματικό για να δείτε τα μηνÏ�ματα σφάλματος Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius Γωνιακή ακτίνα Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add ΠÏ�οσθήκη Remove ΑφαίÏ�εση Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor ΔÏ�ομέας Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_en_GB.ts000066400000000000000000001161271513773473700235450ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Appearance Behaviour Behaviour Mouse & Touchpad Mouse & Touchpad Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius Corner radius Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add Add Remove Remove Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_en_IE.ts000066400000000000000000001161421513773473700235470ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Behaviour Mouse & Touchpad Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add Remove Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_en_US.ts000066400000000000000000001161421513773473700236010ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Behaviour Mouse & Touchpad Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add Remove Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_es.ts000066400000000000000000001162601513773473700232000ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Radio de las esquinas superiores de la decoración del lado del servidor Render drop-shadows behind windows Renderizar sombras detrás de las ventanas Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Apariencia Behaviour Comportamiento Mouse & Touchpad Ratón y panel táctil Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius Radio de esquina Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add Añadir Remove Quitar Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_et.ts000066400000000000000000001173061513773473700232030ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar Tiitliriba None Puudub Behaviour Placement policy for new windows Uute akende paigutuse reeglid Automatic Automaatne Cascade Kaskaadis Center Keskel Cursor Kursori juures Focus is given to window under mouse cursor Hiirekursori all olev aken saab fookuse Requires cursor movement if followMouse is enabled Kui „followMouse“ meetod on kasutusel, siis eeldab kursori liikumist Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Kui naksad aknaga ekraani või väljundi äärde, siis näita ülekatet Always Alati Only on regions Vaid alade puhul Only on edges Vaid äärte puhul Never Mitte kunagi Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Kui fookus on aknal, siis tõsta ta esiplaanile Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Shift+Suurtähtede lukustus (Caps Lock) Alt+Caps Lock Alt+Suurtähtede lukustus (Caps Lock) Both Shifts together Mõlemad Shiftid korraga Both Alts together Mõlemad Altid korraga Both Ctrls together Mõlemad Ctrlid korraga Right Alt (while pressed) Parem Alt (vajutamisel) Left Alt (while pressed) Vasak Alt (vajutamisel) Left Win (while pressed) Vasak Win (vajutamisel) Right Win (while pressed) Parem Win (vajutamisel) Any Win (while pressed) Iga Win (vajutamisel) Menu (while pressed), Shift+Menu for Menu Menüüklahv (vajutamisel), Shift+Menüüklahv menüü jaoks Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Suurtähtede lukustus (Caps Lock) (vajutamisel), Alt+Suurtähtede lukustus algse suurtähtede lukustamise jaoks Right Ctrl (while pressed) Parem Ctrl (vajutamisel) Right Alt Parem Alt Left Alt Vasak Alt Caps Lock Suurtähtede lukustus (Caps Lock) Caps Lock to first layout; Shift+Caps Lock to second layout Suurtähtede lukustus (Caps Lock) esimesele paigutusele, Shift+Suurtähtede lukustus teisele paigutusele Left Win to first layout; Right Win/Menu to second layout Vasak Win esimesele paigutusele, Parem Win/Menüüklahv teisele paigutusele Left Ctrl to first layout; Right Ctrl to second layout Vasak Ctrl esimesele paigutusele, Parem Ctrl teisele paigutusele Both Alts together; AltGr alone chooses third level Mõlemad Altid koos; AltGr üksi valib kolmanda taseme Ctrl+Shift Ctrl+Shift Left Ctrl+Left Shift Vasak Ctrl+Left Shift Right Ctrl+Right Shift Parem Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Vasak Ctrl+Vasak Shift valib eelmise paigutuse, Parem Ctrl + Parem Shift valib järgmise paigutuse Alt+Ctrl Alt+Ctrl Left Alt+Left Ctrl Vasak Alt+Vasak Ctrl Right Alt+Right Ctrl Parem Alt+Parem Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Vasak Ctrl+Vasak Alt valib eelmise paigutuse, Parem Ctrl + Parem Alt valib järgmise paigutuse Alt+Shift Alt+Shift Left Alt+Left Shift Vasak Alt+Vasak Shift Right Alt+Right Shift Parem Alt+Parem Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Vasak Alt+Vasak Shift valib eelmise paigutuse, Parem Alt + Parem Shift valib järgmise paigutuse Menu Menüü Left Win Vasak Win Alt+Space Alt+Tühik Win+Space Win+Tühik Ctrl+Space Ctrl+Tühik Right Win Parem Win Left Shift Vasak Shift Right Shift Parem Shift Left Ctrl Vasak Ctrl Right Ctrl Parem Ctrl Scroll Lock Kerimislukk (Scroll Lock) Ctrl+Left Win to first layout; Ctrl+Menu to second layout Ctrl+Vasak Win esimesele paigutusele; Ctrl+Menüü teisele paigutusele Left Ctrl+Left Win Vasak Ctrl+Vasak Win Select layout to add... Vali lisatav paigutus... Rate at which keypresses are repeated per second Klahvivajutuste kordusi sekundis Delay before keypresses are repeated Viivitus enne klahvivajutuste kordamist Enable Num Lock when recognizing a new keyboard Uue klahvistiku tuvastamisel võta numbrilukustus kasutusele Key combination to switch keyboard layout Klahvikombinatsioon klahvistiku paigutuse vahetamiseks Key Klahv Description Kirjeldus Select key combination Vali klahvikombinatsioon MainDialog Appearance Välimus Behaviour Käitumine Mouse & Touchpad Hiir ja puuteplaat Keyboard Klahvistik Touchscreen Puuteekraan About Mouse Flat Lineaarne Adaptive Kohenduv left-right-middle vasak-parem-keskmine left-middle-right vasak-keskmine-parem None Puudub Button Area Nuppude ala Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Viga laadimisel Run labwc-tweaks from a terminal to view error messages Veateadete nägemiseks käivita labwc-tweaks terminalis Touchscreen Normal Tavaline Left Vasakul Right Paremal Inverted Pööratud pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Veebisait Environment Keskkond Licenses Litsentsid Development Arendus pageAppearance Theme Kujundus Labwc theme Labwc kujundus Icon theme Ikoonistiil Window Drop Shadows Näita akende varjutust Enable shadows Kasuta varjutamist Enable on tiled windows Kasuta paanitud akendel Titlebar Tiitliriba Corner radius Nurga raadius Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Näita ülekatet Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Üldist Repeat rate Korduse sagedus Repeat delay Viivitus kordamisel ms ms Num lock NumLock ehk numbrilukk Enable on startup Lülita käivitamisel sisse Keyboard Layout Klahvistiku paigutus Add Lisa Remove Eemalda Layout switch Paigutuse vahetamine pageMouse Natural scroll Loomulik kerimine Pointer speed Kursori kiirus Acceleration profile Kiirendusprofiil Status Olek Tap to click Klõpsamiseks puuduta Tap button map Cursor Kursor Theme Kujundus Size Suurus Pointer General Left handed mode Töörežiim vasaku käe jaoks Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Puuteekraan Rotation Pööramine labwc-tweaks-0.1.0/data/translations/labwc-tweaks_eu.ts000066400000000000000000001161301513773473700231760ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Itxura Behaviour Portaera Mouse & Touchpad Sagua eta Ukipen-panela Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius Izkinako erradioa Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add Gehitu Remove Kendu Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_fa.ts000066400000000000000000001161551513773473700231620ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance ظاهر Behaviour رÙ�تار Mouse & Touchpad موشواره Ùˆ صÙ�حه لمسی Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius گردی گوشه Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add اضاÙ�Ù‡ Remove حذÙ� Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_fi.ts000066400000000000000000001162051513773473700231660ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Ei mitään Behaviour Placement policy for new windows Automatic Automaattinen Cascade Kaskadi Center Keskitetty Cursor Kursorin alle Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Valitse lisättävä asettelu... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Ulkoasu Behaviour Toiminta Mouse & Touchpad Hiiri & kosketuslevy Keyboard Touchscreen About Mouse Flat Lineaarinen Adaptive Mukautuva left-right-middle left-middle-right None Ei mitään Button Area Painikealue Clickfinger Vapaa Two Finger Kaksisorminen Edge Reuna Enabled Käytössä Disable with external mouse Poista käytöstä, kun ulkoinen hiiri kytketty QObject Error loading Virhe ladattaessa Run labwc-tweaks from a terminal to view error messages Suorita labwc-tweaks päätteessä nähdäksesi virheilmoitukset Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius Kulman säde Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add Lisää Remove Poista Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Kursorin alle Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad Kosketuslevy pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_fr.ts000066400000000000000000001162431513773473700232010ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Automatique Cascade Cascade Center Centré Cursor Curseur Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Sélection de la disposition à ajouter... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Apparence Behaviour Comportement Mouse & Touchpad Souris & Pavé tactile Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Erreur au chargement Run labwc-tweaks from a terminal to view error messages Exécutez labwc-tweaks en concole pour voir les messages d'erreur Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius Rayon des coins Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add Ajouter Remove Enlever Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Curseur Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_gl.ts000066400000000000000000001161411513773473700231710ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Apariencia Behaviour Comportamento Mouse & Touchpad Rato e Touchpad Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius Redondeado De Esquina Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add Engadir Remove Eliminar Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_he.ts000066400000000000000000001161561513773473700231710ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance מר×�×” Behaviour התנהגות Mouse & Touchpad עכבר ומשטח מגע Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius רדיוס פינות Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add הוספה Remove הסרה Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_hr.ts000066400000000000000000001222671513773473700232060ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Polumjer grafiÄ�kih elemenata na strani servera u gornjim kutovima Render drop-shadows behind windows Iscrtaj sjene iza prozora Render drop-shadows behind tiled windows Iscrtaj sjene iza poploÄ�enih prozora Specify decorations for xdg-shell windows Odredi grafiÄ�ke elemente za xdg-shell prozore Server Side Decoration (SSD) GrafiÄ�ki elementi na strani servera (SSD) Client Side Decoration (CSD) GrafiÄ�ki elementi na strani klijenta (CSD) Show server side decorations on maximized windows Prikaži grafiÄ�ke elemente na serverskoj strani pri maksimalno raÅ¡irenim prozorima Titlebar Naslovna traka None Bez Behaviour Placement policy for new windows Politika postavljanja mjesta za nove prozore Automatic Automaski Cascade Kaskada Center Centriraj Cursor Kursor Focus is given to window under mouse cursor Fokus se daje prozoru ispod kursora miÅ¡a Requires cursor movement if followMouse is enabled Potrebno je pomicanje kursora ako je „followMouse“ ukljuÄ�eno Distance between windows and output edges when using movement actions Udaljenost izmeÄ‘u prozora i prikazanih rubova pri koriÅ¡tenju radnje kretanja Show an overlay when snapping a window to an output edge Always Uvijek Only on regions Samo na regijama Only on edges Samo na rubovima Never Nikada Movement of cursor required for a tiled or maximized window to be moved Pomicanje kursora koje je potrebno za pomicanje ploÄ�astog ili maks. raÅ¡irenog prozora Specify the thickness of border grab areas for the purposes of resizing windows Odredi Å¡irinu podruÄ�ja za hvatanje rubova u svrhu mijenjanja veliÄ�ine prozora Raise window to front when focused Prikaži prozor ispred ostalih kada se fokusira Maximize instead of snapping on top edge Maks. raÅ¡iri umjesto privlaÄ�enja na gornji rub Snapping windows can trigger corresponding tiling events for native Wayland applications PrivlaÄ�enje prozora može pokrenuti odgovarajuće dogaÄ‘aje poploÄ�ivanja za nativne Wayland aplikacije Resist interactive moves and resizes of a window across screen edges Odupri se interaktivnim pokretima i promjenama veliÄ�ine prozora za sve rubove ekrana Resist interactive moves and resizes of a window across the edges of any other window Odupri se interaktivnim pokretima i promjenama veliÄ�ine prozora za sve rubove bilo kojeg prozora One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Za okomito ili vodoravno pomicanje maks. raÅ¡irenog prozora potrebno je jednodimenzionalno pomicanje kursora Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Aplikacija ponovo crta sadržaj tijekom mijenjanja veliÄ�ine. Ako je iskljuÄ�eno, prikazuje se pravokutnik s konturom Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. VeliÄ�ina kutnih podruÄ�ja na koja se primjenjuju svi konteksti miÅ¡a vezani uz „Kut“ kao i veliÄ�ina rubnog podruÄ�ja za koje će se promjena veliÄ�ine miÅ¡em primjenjivati u bilo kojem smjeru. Show a small indicator on top of the window when resizing or moving Prikaži mali indikator na vrhu prozora prilikom mijenjanja veliÄ�ine ili premjeÅ¡tanja Nonpixel Ne u pikslima For full screen magnifier set to -1 Za povećalo u cjeloekranskom prikazu postavi na -1 Initial number of times by which magnified image is scaled PoÄ�etni broj puta za koje se povećava povećana slika Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Koraci za promjene pri svakom pozivu opcija „ZoomIn“ ili „ZoomOut“ (smanji ili povećaj prikaz) Apply a bilinear filter to the magnified image Primijeni bilinearni filtar na povećanu sliku Keyboard Shift+Caps Lock Tipke Shift+Caps Lock Alt+Caps Lock Tipke Alt+Caps Lock Both Shifts together Obje tipke Shift zajedno Both Alts together Obje tipke Alt zajedno Both Ctrls together Obje tipke Ctrl zajedno Right Alt (while pressed) Desna tipka Alt (dok je pritisnuta) Left Alt (while pressed) Lijeva tipka Alt (dok je pritisnuta) Left Win (while pressed) Desna tipka Win (dok je pritisnuta) Right Win (while pressed) Desna tipka Win (dok je pritisnuta) Any Win (while pressed) Bilo koja tipka Win (dok je pritisnuta) Menu (while pressed), Shift+Menu for Menu Tipka menu (dok je pritisnuta), Shift+Menu za izbornik Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Caps Lock (dok je pritisnuta), Alt+Caps Lock omogućuje izvornu Caps Lock radnju Right Ctrl (while pressed) Desna tipka Ctrl (dok je pritisnuta) Right Alt Desna tipka Alt Left Alt Lijeva tipka Alt Caps Lock Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Caps Lock za prvi raspored, Shift+Caps Lock za drugi raspored Left Win to first layout; Right Win/Menu to second layout Lijeva tipka Win za prvi raspored, Desna tipka Win/Menu za drugi raspored Left Ctrl to first layout; Right Ctrl to second layout Lijeva tipka Ctrl za prvi raspored, Desna tipka Ctrl za drugi raspored Both Alts together; AltGr alone chooses third level Obje Alt-tipke zajedno; Samo AltGr bira treću razinu Ctrl+Shift Ctrl+Shift Left Ctrl+Left Shift Lijeva tipka Ctrl+Lijeva tipka Shift Right Ctrl+Right Shift Desna tipka Ctrl+Desna tipka Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Lijeva tipka Ctrl+Lijeva tipka Shift bira prethodni raspored, Desna tipka Ctrl+Desna tipka Shift bira sljedeći raspored Alt+Ctrl Alt+Ctrl Left Alt+Left Ctrl Lijeva tipka Alt+Lijeva tipka Ctrl Right Alt+Right Ctrl Desna tipka Alt+Desna tipka Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Lijeva tipka Ctrl+Lijeva tipka ALT bira prethodni raspored, Desna tipka Ctrl+Desna tipka Alt bira sljedeći raspored Alt+Shift Alt+Shift Left Alt+Left Shift Lijeva tipka Alt+Lijeva tipka Shift Right Alt+Right Shift Desna tipka Alt+Desna tipka Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Lijeva tipka Alt+Lijeva tipka Shift bira prethodni raspored, Desna tipka Alt+Desna tipka Shift bira sljedeći raspored Menu Menu Left Win Lijeva tipka Win Alt+Space Alt+Razmaknica Win+Space Win+Razmaknica Ctrl+Space Ctrl+Razmaknica Right Win Desna tipka Win Left Shift Lijeva tipka Shift Right Shift Desna tipka Shift Left Ctrl Lijeva tipka Ctrl Right Ctrl Desna tipka Ctrl Scroll Lock ZakljuÄ�avanje klizaÄ�a Ctrl+Left Win to first layout; Ctrl+Menu to second layout Lijeva tipka Ctrl+Lijeva tipka Win za prvi raspored, Desna tipka Ctrl+Menu tipka za drugi raspored Left Ctrl+Left Win Lijeva tipka Ctrl+Lijeva tipka Win Select layout to add... Odaberi raspored za dodavanje … Rate at which keypresses are repeated per second Brzina kojom se pritisci tipki ponavljaju u sekundi Delay before keypresses are repeated KaÅ¡njenje prije ponavljanja pritisaka tipki Enable Num Lock when recognizing a new keyboard UkljuÄ�i Num Lock prilikom prepoznavanja nove tipkovnice Key combination to switch keyboard layout Kombinacija tipki za mijenjanje rasporeda tipkovnice Key Description Select key combination MainDialog Appearance Izgled Behaviour PonaÅ¡anje Mouse & Touchpad MiÅ¡ i dodirna ploÄ�a Keyboard Tipkovnica Touchscreen Ekran osjetljiv na dodir About Mouse Flat PloÅ¡no Adaptive Prilagodljivo left-right-middle lijevo-desno-sredina left-middle-right lijevo-sredina-desno None Bez Button Area PodruÄ�je gumbova Clickfinger Klik prstima Two Finger Dva prsta Edge Rub Enabled UkljuÄ�eno Disable with external mouse IskljuÄ�i pomoću eksternog miÅ¡a QObject Error loading GreÅ¡ka pri uÄ�itavanju Run labwc-tweaks from a terminal to view error messages Pokreni labwc-tweaks s terminala za pregled poruka greÅ¡aka Touchscreen Normal Normalno Left Lijevo Right Desno Inverted Invertirano pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Tema Labwc theme Icon theme Window Drop Shadows Sjene prozora Enable shadows UkljuÄ�i sjene Enable on tiled windows UkljuÄ�i pri ploÄ�astim prozorima Titlebar Naslovna traka Corner radius Polumjer kuta Advanced Napredno Decoration mode Modus grafiÄ�kih elemenata Maximized decoration GrafiÄ�ki elementi u maks. raÅ¡irenom prozoru pageBehaviour Focus follows mouse Fokus prati miÅ¡a Requires movement Zahtijeva kretanje Raise on focus Podigni pri fokusu Gap Razmak Window Placement SmjeÅ¡taj prozora Policy Politika px px Focus Fokus Window Snapping PrivlaÄ�enje prozora Corner range Raspon kutova Notify applications of tiled state Obavijesti aplikaciju o ploÄ�astom stanju Maximize when snapping to top edge Maks. raÅ¡iri pri poravnanju na gornji rub Show overlay Use bilinear filter Koristi bilinearni filtar Resistance Otpor Screen edge strength JaÄ�ina ruba ekrana Window edge strength JaÄ�ina ruba prozora Threshold to unsnap Prag za neprivlaÄ�enje Threshold to unmaximize Prag za smanjivanje Resize Promijeni veliÄ�inu Grab thickness Å irina podruÄ�ja za hvatanje rubova Draw contents Iscrtaj sadržaj Show popup Prikaži skoÄ�ni prozor Magnifier Povećalo Width Å irina Height Visina Initial scale PoÄ�etno uvećanje Increment Povećaj pageKeyboard General Opće Repeat rate Stopa ponavljanja Repeat delay KaÅ¡njenje ponavljanja ms ms Num lock Num Lock Enable on startup UkljuÄ�i pri pokretanju Keyboard Layout Raspored tipkovnice Add Dodaj Remove Ukloni Layout switch PrekidaÄ� rasporeda pageMouse Natural scroll Prirodno klizanje Pointer speed Brzina pokazivaÄ�a Acceleration profile Profil ubrzanja Status Tap to click Dodirni za klik Tap button map Dodirni mapiranje gumba Cursor Kursor Theme Tema Size VeliÄ�ina Pointer General PokazivaÄ� općenito Left handed mode Lijevoruki naÄ�in rada Tap and drag Dodirni i povuci Drag lock ZakljuÄ�ano povlaÄ�enje Three finger drag PovlaÄ�enje s tri prsta Middle button emulation Emulacija srednjeg gumba Disable while typing IskljuÄ�i tijekom tipkanja Click method Metoda klikova Scroll method Metoda klizanja Scroll factor Faktor klizanja Touchpad Dodirna ploÄ�a pageTouchscreen Touchscreen Ekran osjetljiv na dodir Rotation Okret labwc-tweaks-0.1.0/data/translations/labwc-tweaks_hu.ts000066400000000000000000001162701513773473700232060ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Automatikus Cascade LépcsÅ‘zetes Center Közép Cursor Mutató Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Válassz hozzáadandó elrendezést... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Megjelenés Behaviour Viselkedés Mouse & Touchpad Egér és érintÅ‘párna Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Betöltési hiba Run labwc-tweaks from a terminal to view error messages Futtasd a labwc-tweaks parancsot a terminálból a hibaüzenetek megtekintéséhez Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius Sarokkerekítés Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add Hozzáadás Remove Eltávolítás Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Mutató Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_it.ts000066400000000000000000001222331513773473700232020ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Raggio degli angoli superiori della decorazione lato server Render drop-shadows behind windows Rendere le ombre dietro le finestre Render drop-shadows behind tiled windows Rendere ombre dietro lo finestre aggianciate Specify decorations for xdg-shell windows Specifica decorazione per le finestre Server Side Decoration (SSD) Decorazione lato server (SSD) Client Side Decoration (CSD) Decorazione lato client (CSD) Show server side decorations on maximized windows Mostra le decorazioni lato server nelle finestre massimizzate Titlebar Barra del titolo None Nessuno Behaviour Placement policy for new windows Politica di piazzamento per le nuove finestre Automatic Automatico Cascade A cascata Center centrato Cursor Cursore Focus is given to window under mouse cursor La finestra sotto il cursore riceve il focus Requires cursor movement if followMouse is enabled Richiede un movimento del cursore se 'segue il mouse' è abilitato Distance between windows and output edges when using movement actions Distanza tra i bordi di finestre e schermi quando si usano azioni di movimento Show an overlay when snapping a window to an output edge Mostra una sovrapposizione quando aggancia una finestra a un bordo dello schermo Always Sempre Only on regions Solo alle regioni Only on edges Solo ai bordi Never Mai Movement of cursor required for a tiled or maximized window to be moved Movimento del cursore richiesto per spostare una finestra massimizzata o aggianciata Specify the thickness of border grab areas for the purposes of resizing windows Specifica lo spessore delle aree di cattura del bordo per ridimensionare le finestre Raise window to front when focused Alza la finestra se riceve focus Maximize instead of snapping on top edge Massimizza invece di agganciare al bordo superiore Snapping windows can trigger corresponding tiling events for native Wayland applications L'aggancio delle finestre può attivare i corrispondenti eventi di affiancamento per le applicazioni Wayland native Resist interactive moves and resizes of a window across screen edges Impedisci spostamenti interattivi e ridimensionamenti di una finestra oltre i bordi dello schermo Resist interactive moves and resizes of a window across the edges of any other window Impedisci spostamenti e ridimensionamenti interattivi di una finestra oltre i bordi di qualsiasi altra finestra One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Movimento unidimensionale del cursore richiesto per spostare una finestra massimizzata verticalmente o orizzontalmente Application redraws its contents while resizing. If disabled, an outlined rectangle is shown L'applicazione ridisegna il suo contenuto durante il ridimensionamento. Se disabilitato, viene visualizzato un rettangolo contornato Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Dimensioni delle regioni angolari a cui si applicano tutti le azioni del mouse e dimensioni della regione del bordo per cui si applicherà il ridimensionamento del mouse in qualsiasi direzione. Show a small indicator on top of the window when resizing or moving Mostra un piccolo indicatore sopra la finestra durante il ridimensionamento o lo spostamento Nonpixel For full screen magnifier set to -1 Per la lente d'ingrandimento a schermo intero impostare su -1 Initial number of times by which magnified image is scaled Numero iniziale di volte per cui l'immagine ingrandita viene ingrandito Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Gradi di cambiamento per ogni azione di 'ZoomIn' o 'ZoomOut' Apply a bilinear filter to the magnified image Applica un filtro bilineare all'immagie ingrandita Keyboard Shift+Caps Lock Maiusc+Blocco Maiuscole Alt+Caps Lock Alt+Blocco Maiuscole Both Shifts together Entrambi Maiusc insieme Both Alts together Entrambi Alt insieme Both Ctrls together Entrambi Ctrl insieme Right Alt (while pressed) Alt destro (mentre premuto) Left Alt (while pressed) Alt sinistro (mentre premuto) Left Win (while pressed) Win sinistro (mentre premuto) Right Win (while pressed) Win destro (mentre premuto) Any Win (while pressed) Qualsiasi win (mentre premuto) Menu (while pressed), Shift+Menu for Menu Menu (mentre premuto), Maiusc+Menu per menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Blocco maiusc (mentre premuto), Alt+Blocco maiusc per l'originale azione Right Ctrl (while pressed) Ctrl destro (mentre premuto) Right Alt Alt destro Left Alt Alt sinistro Caps Lock Blocco maiuscole Caps Lock to first layout; Shift+Caps Lock to second layout Blocco maiuscole per il primo layout; Maiusc+Blocco maiuscole per il secondo layout Left Win to first layout; Right Win/Menu to second layout Tasto Win sinistro per il primo layout; Tasto Win/Menu destro per il secondo layout Left Ctrl to first layout; Right Ctrl to second layout Ctrl sinistro per il primo layout; Ctrl destro per il secondo layout Both Alts together; AltGr alone chooses third level Entrambi Alt insieme; AltGr da solo sceglie il terzo livello Ctrl+Shift Ctrl+Maiusc Left Ctrl+Left Shift Ctrl sinistro+Maiusc sinistro Right Ctrl+Right Shift Ctrl destro+Maiusc destro Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Ctrl sinistro+Maiusc sinistro seleziona il layout precedente, Ctrl destro+Maiusc destro seleziona il layout successivo Alt+Ctrl Alt+Ctrl Left Alt+Left Ctrl Alt sinistro+Ctrl sinistro Right Alt+Right Ctrl Alt destro+Ctrl destro Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Ctrl sinistro+Alt sinistro sceglie il layout precedente, Ctrl destro+Alt destro sceglie il layout successivo Alt+Shift Alt+Maiusc Left Alt+Left Shift Alt sinistro+Maiusc sinistro Right Alt+Right Shift Alt destro+Maiusc destro Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Alt sinistro+Maiusc sinistro sceglie il layout precedente, Alt destro+Maiusc destro sceglie il layout successivo Menu Menu Left Win Win sinistro Alt+Space Alt+spazio Win+Space Win+spazio Ctrl+Space Ctrl+spazio Right Win Win destro Left Shift Maiusc sinistro Right Shift Maiusc destro Left Ctrl Ctrl sinistro Right Ctrl Ctrl destro Scroll Lock Blocco scorrimento Ctrl+Left Win to first layout; Ctrl+Menu to second layout Ctrl+Win sinistro per il primo layout; Ctrl+Menu per il secondo layout Left Ctrl+Left Win Ctrl sinistro+Win sinistro Select layout to add... Seleziona mappatura da aggiungere... Rate at which keypresses are repeated per second Frequenza con cui le pressioni dei tasti vengono ripetute al secondo Delay before keypresses are repeated Ritardo prima che le pressioni dei tasti vengano ripetute Enable Num Lock when recognizing a new keyboard Attiva Num Lock quando viene connesso una tastiera nuova Key combination to switch keyboard layout Combinazione di tasti per cambiare la mappatura della tastiera Key Chiave Description Descrizione Select key combination Seleziona la combinazione di tasti MainDialog Appearance Aspetto Behaviour Comportamento Mouse & Touchpad Mouse e Touchpad Keyboard Tastiera Touchscreen Schermata touch About Informazioni Mouse Flat Piatto Adaptive Adattivo left-right-middle sinistro-destro-centrale left-middle-right sinistro-centrale-destro None Nessuno Button Area Area pulsanti Clickfinger Click dito Two Finger Due dita Edge Bordo Enabled Abilitato Disable with external mouse Disabilitato con mouse esterno QObject Error loading Errore caricando Run labwc-tweaks from a terminal to view error messages Esegui labwc-tweaks in un terminale per vedere i messaggi di errore Touchscreen Normal Normale Left Sinistro Right Destro Inverted Invertito pageAbout Version Versione XWayland support Supporto XWayland Native language support Supporto lingua madre SVG icon support Supporto icone SVG Icon support with libsfdo Supporto icone con libsfdo Website Sito web Environment Ambiente Licenses Lizenze Development Sviluppo pageAppearance Theme Thema Labwc theme Tema Labwc Icon theme Tema icone Window Drop Shadows Ombre delle finestre Enable shadows Abilita ombre Enable on tiled windows Abilita su finestre aggianciate Titlebar Barra del titolo Corner radius Raggio Angolo Advanced Avanzate Decoration mode Tipo decorazione Maximized decoration Decorazione massimizzata pageBehaviour Focus follows mouse Focus segue il mouse Requires movement Richiede movimento Raise on focus Alza quando riceve focus Gap Spazio riservato Window Placement Piazzamento delle finestre Policy Modo px px Focus Focus Window Snapping Aggancio delle finestre Corner range Area dell’angolo Notify applications of tiled state Notifica applicazioni dello stato affiancato Maximize when snapping to top edge Massimizza se aggancia al bordo superiore Show overlay Mostra sovrapposizione Use bilinear filter Usa filtro bilineare Resistance Resistenze Screen edge strength Resistenza al bordo dello schermo Window edge strength Resistenza al bordo della finestra Threshold to unsnap Soglia per sganciare Threshold to unmaximize Soglia per de-massimizzare Resize Ridimensionamento Grab thickness Spessore di presa Draw contents Disegna contenuto Show popup Mostra pop-up Magnifier Lente di ingrandimento Width Larghezza Height Altezza Initial scale Scala iniziale Increment Incremento pageKeyboard General Generali Repeat rate Intervallo di ripetizione Repeat delay Ritardo di ripetizione ms ms Num lock Num lock Enable on startup Abilita all'avvio Keyboard Layout Mappatura della tastiera Add Aggiungi Remove Rimuovi Layout switch Cambio mappatura pageMouse Natural scroll Scroll naturale Pointer speed Velocità puntatore Acceleration profile Profilo di accelerazione Status Stato Tap to click Tocco per click Tap button map Mappatura dei pulsanti Cursor Puntatore Theme Thema Size Dimensione Pointer General Puntatore generali Left handed mode Mancino Tap and drag Tocco e trascina Drag lock Blocco trascinamento Three finger drag Trascinamento a tre dita Middle button emulation Emulazione di pulsante centrale Disable while typing Disabilita durante la digitazione Click method Metodo di click Scroll method Metodo di scroll Scroll factor Fattore di scroll Touchpad Touchpad pageTouchscreen Touchscreen Schermata touch Rotation Rotazione labwc-tweaks-0.1.0/data/translations/labwc-tweaks_ka.ts000066400000000000000000001162771513773473700231740ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance გáƒ�რეგნáƒ�ბáƒ� Behaviour ქცევáƒ� Mouse & Touchpad თáƒ�გუნáƒ� დáƒ� თáƒ�ჩპედი Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius კუთხის რáƒ�დიუსი Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add დáƒ�მáƒ�ტებáƒ� Remove წáƒ�შლáƒ� Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_kab.ts000066400000000000000000000050221513773473700233170ustar00rootroot00000000000000 MainDialog Appearance Corner radius Openbox theme Behaviour Mouse & Touchpad Drop Shadows Placement policy Cursor theme Cursor Size Natural Scroll Add Rnu Remove Kkes Language & Region Keyboard Layout labwc-tweaks-0.1.0/data/translations/labwc-tweaks_kk.ts000066400000000000000000001312361513773473700231760ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Сервер жағындағы безендірудің жоғарғы бұрыштарының радиуÑ�Ñ‹ Render drop-shadows behind windows Терезелердің артында көлеңкелерді бейнелеу Render drop-shadows behind tiled windows Плиткалы терезелердің артында көлеңкелерді бейнелеу Specify decorations for xdg-shell windows xdg-shell терезелері үшін безендіруді көрÑ�ету Server Side Decoration (SSD) Сервер жағындағы безендіру (SSD) Client Side Decoration (CSD) Клиент жағындағы безендіру (CSD) Show server side decorations on maximized windows Жайылған терезелерде Ñ�ервер жағындағы безендіруді көрÑ�ету Titlebar Ð�тау жолағы None ЕшнәрÑ�е Behaviour Placement policy for new windows Жаңа терезелерді орналаÑ�тыру Ñ�аÑ�Ñ�аты Automatic Ð�втоматты Cascade КаÑ�кадты Center Орта бойынша Cursor КурÑ�ор Focus is given to window under mouse cursor ФокуÑ� тышқан курÑ�орының аÑ�тындағы терезеге беріледі Requires cursor movement if followMouse is enabled Егер followMouse Ñ–Ñ�ке қоÑ�ылған болÑ�а, курÑ�орды жылжытуды талап етеді Distance between windows and output edges when using movement actions Жылжыту әрекеттерін пайдалану кезінде терезелер мен шығыÑ� жиектері араÑ�ындағы қашықтық Show an overlay when snapping a window to an output edge Терезені Ñ�кран жиегіне жабыÑ�тырғанда көмекші қабатты көрÑ�ету Always Әрқашан Only on regions Тек аймақтарда Only on edges Тек жиектерде Never Ешқашан Movement of cursor required for a tiled or maximized window to be moved Плиткалы немеÑ�е жайылған терезені жылжыту үшін курÑ�орды жылжыту қажет Specify the thickness of border grab areas for the purposes of resizing windows Терезелердің өлшемін өзгерту мақÑ�атында жиектерді Ò±Ñ�тау аймақтарының қалыңдығын көрÑ�етіңіз Raise window to front when focused ФокуÑ� алған кезде терезені алдыңғы көрініÑ�ке шығару Maximize instead of snapping on top edge Жоғарғы жиекке жабыÑ�тырудың орнына жазық қылу Snapping windows can trigger corresponding tiling events for native Wayland applications Терезелерді бекіту нативті Wayland қолданбалары үшін тиіÑ�ті плиткалық оқиғаларды тудыруы мүмкін Resist interactive moves and resizes of a window across screen edges Терезені Ñ�кран жиектері арқылы интерактивті жылжытуға және өлшемін өзгертуге қарÑ�Ñ‹ тұру Resist interactive moves and resizes of a window across the edges of any other window Терезені кез келген баÑ�қа терезенің жиектері арқылы интерактивті жылжытуға және өлшемін өзгертуге қарÑ�Ñ‹ тұру One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Вертикалды немеÑ�е горизонталды жазылған терезені жылжыту үшін курÑ�ордың бір өлшемді қозғалыÑ�Ñ‹ қажет Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Өлшемі өзгертілген кезде қолданба өз мазмұнын қайта Ñ�ызады. Егер Ñ�өндірулі болÑ�а, Ñ�ызылған тіктөртбұрыш көрÑ�етіледі Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Барлық 'Бұрыш' тышқан байланыÑ�тары контекÑ�тері Ñ–Ñ�ке аÑ�ырылатын бұрыштық аймақтар өлшемі, Ñ�ондай-ақ тышқанмен өлшемін өзгерту кез келген бағытта Ñ–Ñ�ке аÑ�ырылатын жиек аймағының өлшемі. Show a small indicator on top of the window when resizing or moving Өлшемін өзгерткенде немеÑ�е жылжытқанда терезенің жоғарғы жағында кішкентай индикаторды көрÑ�ету Nonpixel ПикÑ�ельдік емеÑ� For full screen magnifier set to -1 Толық Ñ�кранды лупа үшін -1 мәнін орнатыңыз Initial number of times by which magnified image is scaled Үлкейтілген Ñ�уреттің баÑ�тапқы маÑ�штабының Ñ�аны Steps for changes on each call to 'ZoomIn' or 'ZoomOut' 'Үлкейту' немеÑ�е 'Кішірейту' әр шақырылғандағы өзгеріÑ�тер қадамдары Apply a bilinear filter to the magnified image Үлкейтілген Ñ�уретке билинейлі Ñ�үзгіні Ñ–Ñ�ке аÑ�ыру Keyboard Shift+Caps Lock Shift+Caps Lock Alt+Caps Lock Alt+Caps Lock Both Shifts together Екі Shift бірге Both Alts together Екі Alt бірге Both Ctrls together Екі Ctrl бірге Right Alt (while pressed) Оң жақ Alt (баÑ�ылып тұрғанда) Left Alt (while pressed) Сол жақ Alt (баÑ�ылып тұрғанда) Left Win (while pressed) Сол жақ Win (баÑ�ылып тұрғанда) Right Win (while pressed) Оң жақ Win (баÑ�ылып тұрғанда) Any Win (while pressed) Кез келген Win (баÑ�ылып тұрғанда) Menu (while pressed), Shift+Menu for Menu Мәзір (баÑ�ылып тұрғанда), Мәзір үшін Shift+Мәзір Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Caps Lock (баÑ�ылып тұрғанда), баÑ�тапқы Caps Lock әрекеті үшін Alt+Caps Lock Right Ctrl (while pressed) Оң жақ Ctrl (баÑ�ылып тұрғанда) Right Alt Оң жақ Alt Left Alt Сол жақ Alt Caps Lock Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Caps Lock - бірінші жаймаға; Shift+Caps Lock - екінші жаймаға Left Win to first layout; Right Win/Menu to second layout Сол жақ Win - бірінші жаймаға; Оң жақ Win/Menu - екінші жаймаға Left Ctrl to first layout; Right Ctrl to second layout Сол жақ Ctrl - бірінші жаймаға; Оң жақ Ctrl - екінші жаймаға Both Alts together; AltGr alone chooses third level Екі Alt бірге; AltGr өзі үшінші деңгейді таңдайды Ctrl+Shift Ctrl+Shift Left Ctrl+Left Shift Сол жақ Ctrl+Сол жақ Shift Right Ctrl+Right Shift Оң жақ Ctrl+Оң жақ Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Сол жақ Ctrl+Сол жақ Shift алдыңғы жайманы таңдайды, Оң жақ Ctrl+Оң жақ Shift келеÑ�Ñ– жайманы таңдайды Alt+Ctrl Alt+Ctrl Left Alt+Left Ctrl Сол жақ Alt+Сол жақ Ctrl Right Alt+Right Ctrl Оң жақ Alt+Оң жақ Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Сол жақ Ctrl+Сол жақ Alt алдыңғы жайманы таңдайды, Оң жақ Ctrl+Оң жақ Alt келеÑ�Ñ– жайманы таңдайды Alt+Shift Alt+Shift Left Alt+Left Shift Сол жақ Alt+Сол жақ Shift Right Alt+Right Shift Оң жақ Alt+Оң жақ Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Сол жақ Alt+Сол жақ Shift алдыңғы жайманы таңдайды, Оң жақ Alt+Оң жақ Shift келеÑ�Ñ– жайманы таңдайды Menu Мәзір Left Win Сол жақ Win Alt+Space Alt+БоÑ� аралық Win+Space Win+БоÑ� аралық Ctrl+Space Ctrl+БоÑ� аралық Right Win Оң жақ Win Left Shift Сол жақ Shift Right Shift Оң жақ Shift Left Ctrl Сол жақ Ctrl Right Ctrl Оң жақ Ctrl Scroll Lock Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Бірінші жайма үшін Ctrl+Сол жақ Win; екінші жайма үшін Ctrl+Мәзір Left Ctrl+Left Win Сол жақ Ctrl+Сол жақ Win Select layout to add... ҚоÑ�у үшін жайманы таңдау... Rate at which keypresses are repeated per second Пернелердің Ñ�екундтағы қайталану жылдамдығы Delay before keypresses are repeated Пернелердің қайталану алдындағы кідіріÑ�Ñ– Enable Num Lock when recognizing a new keyboard Жаңа пернетақтаны анықтағанда Num Lock-ты Ñ–Ñ�ке қоÑ�у Key combination to switch keyboard layout Пернетақта жаймаÑ�ын ауыÑ�тыруға арналған пернелер тіркеÑ�імі Key Перне Description СипаттамаÑ�Ñ‹ Select key combination Пернелер жарлығын таңдаңыз MainDialog Appearance Сыртқы түрі Behaviour Мінез-құлығы Mouse & Touchpad Тышқан және тачпад Keyboard Пернетақта Touchscreen СенÑ�орлы Ñ�кран About ОÑ�Ñ‹ туралы Mouse Flat Жалпақ Adaptive Ð�даптивті left-right-middle Ñ�ол-оң-ортаңғы left-middle-right Ñ�ол-ортаңғы-оң None Ештеңе Button Area Батырма аймағы Clickfinger Шерту Ñ�ауÑ�ағы Two Finger Екі Ñ�ауÑ�ақ Edge Жиек Enabled ІÑ�ке қоÑ�ылған Disable with external mouse Сыртқы тышқанмен Ñ�өндіру QObject Error loading Жүктеу қатеÑ�Ñ– Run labwc-tweaks from a terminal to view error messages Қате туралы хабарларды көру үшін терминалдан labwc-tweaks Ñ–Ñ�ке қоÑ�ыңыз Touchscreen Normal Қалыпты Left Сол жақ Right Оң жақ Inverted ТеріÑ�телген pageAbout Version Ð�Ò±Ñ�қаÑ�Ñ‹ XWayland support XWayland қолдауы Native language support Табиғи тілді қолдану SVG icon support SVG таңбашаларын қолдау Icon support with libsfdo libsfdo арқылы таңбашаларды қолдау Website Веб-Ñ�айт Environment Қоршаған орта Licenses ЛицензиÑ�лар Development Әзірлеу pageAppearance Theme Тема Labwc theme Labwc темаÑ�Ñ‹ Icon theme Таңбашалар темаÑ�Ñ‹ Window Drop Shadows Терезе көлеңкелері Enable shadows Көлеңкелерді Ñ–Ñ�ке қоÑ�у Enable on tiled windows Плиткалы терезелерде Ñ–Ñ�ке қоÑ�у Titlebar Тақырып жолағы Corner radius Бұрыш радиуÑ�Ñ‹ Advanced Кеңейтілген Decoration mode Безендіру режимі Maximized decoration Жазық етілген безендіру pageBehaviour Focus follows mouse ФокуÑ� тышқан Ñ�оңынан ереді Requires movement ҚозғалыÑ�ты талап етеді Raise on focus ФокуÑ� кезінде көтеру Gap Ð�ралық Window Placement Терезені орналаÑ�тыру Policy СаÑ�Ñ�ат px пикÑ� Focus ФокуÑ� Window Snapping Терезелерді жабыÑ�тыру Corner range Бұрыш ауқымы Notify applications of tiled state Қолданбаларға мозаикалық күйі туралы хабарлау Maximize when snapping to top edge Жоғарғы жиекке жабыÑ�тырғанда жазық қылу Show overlay ҚоÑ�ымша қабатты көрÑ�ету Use bilinear filter Билинейлі Ñ�үзгіні қолдану Resistance ҚарÑ�ылық Screen edge strength Экран жиегінің күші Window edge strength Терезе жиегінің күші Threshold to unsnap ЖабыÑ�тыруды ажырату шегі Threshold to unmaximize Жазық емеÑ� етудің шегі Resize Өлшемін өзгерту Grab thickness Ò°Ñ�тау қалыңдығы Draw contents Мазмұнын Ñ�алу Show popup Қалқымалы терезені көрÑ�ету Magnifier Үлкейткіш Width Ені Height Биіктігі Initial scale БаÑ�тапқы маÑ�штаб Increment Қадам pageKeyboard General Жалпы Repeat rate Қайталау жиілігі Repeat delay Қайталау кідіріÑ�Ñ– ms мÑ� Num lock Num lock Enable on startup ІÑ�ке қоÑ�ылғанда оны Ñ–Ñ�ке қоÑ�у Keyboard Layout Пернетақта жаймаÑ�Ñ‹ Add ҚоÑ�у Remove Өшіру Layout switch Жайманы ауыÑ�тыру pageMouse Natural scroll Табиғи айналдыру Pointer speed КурÑ�ор жылдамдығы Acceleration profile Үдету профилі Status Күйі Tap to click Шерту үшін тию Tap button map Тию батырмаларының картаÑ�Ñ‹ Cursor КурÑ�ор Theme Тема Size Өлшемі Pointer General Ð�Ò±Ñ�қағыш - Жалпы Left handed mode Солақай режимі Tap and drag Тию және Ñ�үйреу Drag lock Сүйреуді бұғаттау Three finger drag Үш Ñ�ауÑ�ақпен Ñ�үйреу Middle button emulation Ортаңғы батырма Ñ�мулÑ�циÑ�Ñ�Ñ‹ Disable while typing Теру кезінде Ñ�өндіру Click method Шерту әдіÑ�Ñ– Scroll method Ð�йналдыру әдіÑ�Ñ– Scroll factor Ð�йналдыру коÑ�ффициенті Touchpad Тачпад pageTouchscreen Touchscreen СенÑ�орлы Ñ�кран Rotation Бұру labwc-tweaks-0.1.0/data/translations/labwc-tweaks_ko.ts000066400000000000000000001160261513773473700232020ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None ì—†ì�Œ Behaviour Placement policy for new windows Automatic ìž�ë�™ Cascade Center 중심 Cursor 커서 Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always í•­ìƒ� Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance 모양새 Behaviour ë�™ìž‘ Mouse & Touchpad 마우스 & 터치패드 Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None ì—†ì�Œ Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius 모서리 반경 Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add 추가하기 Remove 제거하기 Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor 커서 Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_lt.ts000066400000000000000000001161451513773473700232120ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance IÅ¡vaizda Behaviour Elgsena Mouse & Touchpad PelÄ— ir jutiklinis kilimÄ—lis Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius Kampų spindulys Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add PridÄ—ti Remove Å alinti Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_ms.ts000066400000000000000000001161271513773473700232120ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Penampilan Behaviour Kelakuan Mouse & Touchpad Tetikus & Pad Sentuh Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius Jejari Bucu Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add Tambah Remove Buang Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_nl.ts000066400000000000000000001162471513773473700232070ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Automatisch Cascade Trapsgewijs schikken Center Centreren Cursor Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Kies een toe te voegen indeling… Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Vormgeving Behaviour Gedrag Mouse & Touchpad Muis en touchpad Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Fout tijdens het laden van Run labwc-tweaks from a terminal to view error messages Voer labwc-tweaks uit vanuit een terminalvenster om foutmeldingen te bekijken Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius Hoekstraal Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add Toevoegen Remove Verwijderen Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_pa.ts000066400000000000000000001162201513773473700231650ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance ਦਿੱਖ Behaviour ਰਵੱਈਆ Mouse & Touchpad ਮਾਊਸ ਤੇ ਟੱਚਪੈਡ Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius ਕੋਨਾ ਦੇ ਵਿਆਸ Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add ਜੋੜੋ Remove ਹਟਾਓ Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_pl.ts000066400000000000000000001215721513773473700232060ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners PromieÅ„ górnych narożników dekoracji po stronie serwera Render drop-shadows behind windows Renderuj cienie za oknami Render drop-shadows behind tiled windows Renderuj cienie za oknami kafelkowymi Specify decorations for xdg-shell windows OkreÅ›l dekoracje dla okien xdg-shell Server Side Decoration (SSD) Dekoracja po stronie serwera (SSD) Client Side Decoration (CSD) Dekoracja po stronie klienta (CSD) Show server side decorations on maximized windows Pokaż dekoracje po stronie serwera w zmaksymalizowanych oknach Titlebar Pasek tytuÅ‚u None Brak Behaviour Placement policy for new windows Zasady umieszczania nowych okien Automatic Automatycznie Cascade Kaskada Center Åšrodek Cursor Kursor Focus is given to window under mouse cursor Fokus jest przekazywany do okna pod kursorem myszy Requires cursor movement if followMouse is enabled Wymaga ruchu kursora, jeÅ›li włączona jest opcja followMouse Distance between windows and output edges when using movement actions OdlegÅ‚ość miÄ™dzy oknami i krawÄ™dziami wyjÅ›ciowymi podczas korzystania z akcji ruchu Show an overlay when snapping a window to an output edge Pokaż nakÅ‚adkÄ™ podczas przyciÄ…gania okna do krawÄ™dzi wyjÅ›ciowej Always Zawsze Only on regions Tylko w regionach Only on edges Tylko na krawÄ™dziach Never Nigdy Movement of cursor required for a tiled or maximized window to be moved Aby przesunąć kafelkowe lub zmaksymalizowane okno, wymagany jest ruch kursora Specify the thickness of border grab areas for the purposes of resizing windows OkreÅ›l grubość obszarów obramowania w celu zmiany rozmiaru okien Raise window to front when focused PodnieÅ› okno do przodu po uzyskaniu fokusu Maximize instead of snapping on top edge Maksymalizuj zamiast przypinać do górnej krawÄ™dzi Snapping windows can trigger corresponding tiling events for native Wayland applications PrzyciÄ…ganie okien może wywoÅ‚ać odpowiednie zdarzenia kafelkowania dla natywnych aplikacji Wayland Resist interactive moves and resizes of a window across screen edges Ograniczaj interaktywne ruchy i zmiany rozmiaru okna na krawÄ™dziach ekranu Resist interactive moves and resizes of a window across the edges of any other window Zapobiegaj interaktywnym ruchom i zmianom rozmiaru okna na krawÄ™dziach dowolnego innego okna One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Jednowymiarowy ruch kursora wymagany do przesuniÄ™cia okna zmaksymalizowanego w pionie lub poziomie Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Aplikacja odÅ›wieża swojÄ… zawartość podczas zmiany rozmiaru. JeÅ›li ta opcja jest wyłączona, wyÅ›wietlany jest obramowany prostokÄ…t Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Rozmiar obszarów narożników, do których majÄ… zastosowanie wszystkie konteksty powiÄ…zaÅ„ myszy „Narożnikâ€� a także rozmiar obszaru obramowania, do którego bÄ™dzie stosowana zmiana rozmiaru myszy w dowolnym kierunku. Show a small indicator on top of the window when resizing or moving WyÅ›wietl maÅ‚y wskaźnik na górze okna podczas zmiany rozmiaru lub przesuwania Nonpixel Niepikselowy For full screen magnifier set to -1 Aby uzyskać peÅ‚ny ekran, ustaw lupÄ™ na -1 Initial number of times by which magnified image is scaled PoczÄ…tkowa liczba krotnoÅ›ci, o jakÄ… powiÄ™kszony obraz jest skalowany Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Kroki wprowadzania zmian przy każdym wywoÅ‚aniu funkcji „ZoomInâ€� i „ZoomOutâ€� Apply a bilinear filter to the magnified image Zastosuj filtr dwuliniowy do powiÄ™kszonego obrazu Keyboard Shift+Caps Lock Shift+Caps Lock Alt+Caps Lock Alt+Caps Lock Both Shifts together Oba klawisze Shift razem Both Alts together Oba klawisze Alt razem Both Ctrls together Oba klawisze Ctrl razem Right Alt (while pressed) Prawy Alt (podczas wciÅ›niÄ™cia) Left Alt (while pressed) Lewy Alt (podczas wciÅ›niÄ™cia) Left Win (while pressed) Lewy Win (podczas wciÅ›niÄ™cia) Right Win (while pressed) Prawy Win (podczas wciÅ›niÄ™cia) Any Win (while pressed) Dowolny Alt (podczas wciÅ›niÄ™cia) Menu (while pressed), Shift+Menu for Menu Menu (podczas wciÅ›niÄ™cia), Shift+Menu dla menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Caps Lock (podczas wciÅ›niÄ™cia), Alt+Caps Lock dla pierwotnego dziaÅ‚ania Caps Lock Right Ctrl (while pressed) Prawy Ctrl (podczas wciÅ›niÄ™cia) Right Alt Prawy Alt Left Alt Lewy Alt Caps Lock Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Caps Lock do pierwszego ukÅ‚adu; Shift+Caps Lock do drugiego ukÅ‚adu Left Win to first layout; Right Win/Menu to second layout Lewy Win do pierwszego ukÅ‚adu; prawy Win/Menu do drugiego ukÅ‚adu Left Ctrl to first layout; Right Ctrl to second layout Lewy Ctrl do pierwszego ukÅ‚adu; prawy Ctrl do drugiego ukÅ‚adu Both Alts together; AltGr alone chooses third level Oba klawisze Alt razem; AltGr sam wybiera trzeci poziom Ctrl+Shift Ctrl+Shift Left Ctrl+Left Shift Lewy Ctrl+lewy Shift Right Ctrl+Right Shift Prawy Ctrl+prawy Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Lewy Ctrl+lewy Shift wybiera poprzedni ukÅ‚ad, prawy Ctrl+prawy Shift wybiera nastÄ™pny ukÅ‚ad Alt+Ctrl Alt+Ctrl Left Alt+Left Ctrl Lewy Alt+lewy Ctrl Right Alt+Right Ctrl Prawy Alt+prawy Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Lewy Ctrl+lewy Alt wybiera poprzedni ukÅ‚ad, prawy Ctrl+prawy Alt wybiera nastÄ™pny ukÅ‚ad Alt+Shift Alt+Shift Left Alt+Left Shift Lewy Alt+lewy Shift Right Alt+Right Shift Prawy Alt+prawy Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Lewy Alt+lewy Shift wybiera poprzedni ukÅ‚ad, prawy Alt+prawy Shift wybiera nastÄ™pny ukÅ‚ad Menu Menu Left Win Lewy Win Alt+Space Alt+Spacja Win+Space Win+Spacja Ctrl+Space Ctrl+Spacja Right Win Prawy Win Left Shift Lewy Shift Right Shift Prawy Shift Left Ctrl Lewy Ctrl Right Ctrl Prawy Ctrl Scroll Lock Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Ctrl+lewy Win do pierwszego ukÅ‚adu; Ctrl+Menu do drugiego ukÅ‚adu Left Ctrl+Left Win Lewy Ctrl+lewy Win Select layout to add... Wybierz ukÅ‚ad, który chcesz dodać... Rate at which keypresses are repeated per second CzÄ™stotliwość, z jakÄ… naciÅ›niÄ™cia klawiszy sÄ… powtarzane na sekundÄ™ Delay before keypresses are repeated Opóźnienie przed ponownym naciÅ›niÄ™ciem klawisza Enable Num Lock when recognizing a new keyboard Włącz Num Lock podczas rozpoznawania nowej klawiatury Key combination to switch keyboard layout Kombinacja klawiszy do przełączania ukÅ‚adu klawiatury Key Klawisz Description Opis Select key combination Wybierz kombinacjÄ™ klawiszy MainDialog Appearance WyglÄ…d Behaviour Zachowanie Mouse & Touchpad Mysz i panel dotykowy Keyboard Klawiatura Touchscreen Ekran dotykowy About Informacje Mouse Flat PÅ‚aski Adaptive Adaptacyjny left-right-middle lewy-prawy-Å›rodkowy left-middle-right lewy-Å›rodkowy-prawy None Brak Button Area Obszar przycisków Clickfinger KlikniÄ™cie palcem Two Finger Dwa palce Edge KrawÄ™dź Enabled Włączone Disable with external mouse Wyłącz za pomocÄ… myszy zewnÄ™trznej QObject Error loading Błąd Å‚adowania Run labwc-tweaks from a terminal to view error messages Uruchom labwc-tweaks z terminala, aby wyÅ›wietlić komunikaty o błędach Touchscreen Normal ZwykÅ‚y Left Lewy Right Prawy Inverted Odwrócony pageAbout Version Wersja XWayland support ObsÅ‚uga XWayland Native language support ObsÅ‚uga jÄ™zyka natywnego SVG icon support ObsÅ‚uga ikon SVG Icon support with libsfdo ObsÅ‚uga ikon z libsfdo Website Strona internetowa Environment Åšrodowisko Licenses Licencje Development Rozwój pageAppearance Theme Motyw Labwc theme Motyw Labwc Icon theme Motyw ikon Window Drop Shadows Cienie okien Enable shadows Włącz cienie Enable on tiled windows Włącz w oknach kafelkowych Titlebar Pasek tytuÅ‚u Corner radius PromieÅ„ narożnika Advanced Zaawansowane Decoration mode Tryb dekoracji Maximized decoration Dekoracja zmaksymalizowana pageBehaviour Focus follows mouse Fokus podąża za myszÄ… Requires movement Wymaga ruchu Raise on focus PodnieÅ› przy fokusie Gap Przerwa Window Placement Rozmieszczenie okien Policy Zasady px px Focus Fokus Window Snapping PrzyciÄ…ganie okien Corner range Zakres narożnka Notify applications of tiled state Powiadom aplikacje o stanie kafelkowym Maximize when snapping to top edge Maksymalizuj po przyciÄ…gniÄ™ciu do górnej krawÄ™dzi Show overlay Pokaż nakÅ‚adkÄ™ Use bilinear filter Użyj filtra dwuliniowego Resistance Opór Screen edge strength WytrzymaÅ‚ość krawÄ™dzi ekranu Window edge strength WytrzymaÅ‚ość krawÄ™dzi okna Threshold to unsnap Próg odłączenia Threshold to unmaximize Próg demaksymalizacji Resize ZmieÅ„ rozmiar Grab thickness Grubość chwytu Draw contents Rysuj zawartość Show popup Pokaż wyskakujÄ…ce okienko Magnifier Lupa Width Szerokość Height Wysokość Initial scale Skala poczÄ…tkowa Increment Przyrost pageKeyboard General Ogólne Repeat rate CzÄ™stotliwość powtarzania Repeat delay Opóźnienie powtarzania ms ms Num lock Num Lock Enable on startup Włącz przy uruchamianiu Keyboard Layout UkÅ‚ad klawiatury Add Dodaj Remove UsuÅ„ Layout switch Przełącznik ukÅ‚adu pageMouse Natural scroll Przewijanie naturalne Pointer speed PrÄ™dkość wskaźnika Acceleration profile Profil przyspieszenia Status Stan Tap to click Stuknij, aby kliknąć Tap button map Mapa przycisków stukania Cursor Kursor Theme Motyw Size Rozmiar Pointer General Wskaźnik ogólny Left handed mode Tryb leworÄ™czny Tap and drag Stuknij i przeciÄ…gnij Drag lock Blokada przeciÄ…gania Three finger drag PrzeciÄ…ganie trzema palcami Middle button emulation Emulacja Å›rodkowego przycisku Disable while typing Wyłącz podczas pisania Click method Metoda klikania Scroll method Metoda przewijania Scroll factor Współczynnik przewijania Touchpad Panel dotykowy pageTouchscreen Touchscreen Ekran dotykowy Rotation Obrót labwc-tweaks-0.1.0/data/translations/labwc-tweaks_pt.ts000066400000000000000000001162371513773473700232200ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Automático Cascade Cascata Center Centro Cursor Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Selecionar o esquema a adicionar... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Aparência Behaviour Comportamento Mouse & Touchpad Rato e Painel tátil Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Erro ao carregar Run labwc-tweaks from a terminal to view error messages Executar o labwc-tweaks a partir de um terminal para visualizar as mensagens de erro Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius Raio do canto Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add Adicionar Remove Remover Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_pt_BR.ts000066400000000000000000001162321513773473700235760ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Automático Cascade Cascata Center Centro Cursor Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Selecionar layout para adicionar... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Aparência Behaviour Comportamento Mouse & Touchpad Mouse & Touchpad Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Erro ao carregar Run labwc-tweaks from a terminal to view error messages Executar labwc-tweaks de um terminal para ver mensagens de erro Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius Arrendondamento dos Cantos Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add Adicionar Remove Remover Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_ro.ts000066400000000000000000001161211513773473700232050ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Aspect Behaviour Mouse & Touchpad Mouse È™i tastatură Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius Raza colÈ›ului Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add Remove Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_ru.ts000066400000000000000000001162341513773473700232200ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Внешний вид Behaviour Поведение Mouse & Touchpad Мышь и Ñ�енÑ�орнаÑ� панель Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius РадиуÑ� углов Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add Добавить Remove Убрать Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_sk.ts000066400000000000000000001161331513773473700232050ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Vzhľad Behaviour Správanie Mouse & Touchpad MyÅ¡ a touchpad Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add PridaÅ¥ Remove OdstrániÅ¥ Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_sl.ts000066400000000000000000001161371513773473700232120ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Behaviour Mouse & Touchpad Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add Remove Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_tr.ts000066400000000000000000001161411513773473700232140ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Görünüş Behaviour Davranış Mouse & Touchpad Fare ve Dokunmatik Yüzey Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius Köşe Yuvarlatma Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add Ekle Remove Kaldır Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_vi.ts000066400000000000000000001161271513773473700232110ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance Giao diện Behaviour Hành vi Mouse & Touchpad Chuá»™t & Bàn di Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius Bán kính góc Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add Thêm Remove Xóa Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_zh_CN.ts000066400000000000000000001161201513773473700235650ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners Render drop-shadows behind windows Render drop-shadows behind tiled windows Specify decorations for xdg-shell windows Server Side Decoration (SSD) Client Side Decoration (CSD) Show server side decorations on maximized windows Titlebar None Behaviour Placement policy for new windows Automatic Cascade Center Cursor Focus is given to window under mouse cursor Requires cursor movement if followMouse is enabled Distance between windows and output edges when using movement actions Show an overlay when snapping a window to an output edge Always Only on regions Only on edges Never Movement of cursor required for a tiled or maximized window to be moved Specify the thickness of border grab areas for the purposes of resizing windows Raise window to front when focused Maximize instead of snapping on top edge Snapping windows can trigger corresponding tiling events for native Wayland applications Resist interactive moves and resizes of a window across screen edges Resist interactive moves and resizes of a window across the edges of any other window One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved Application redraws its contents while resizing. If disabled, an outlined rectangle is shown Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. Show a small indicator on top of the window when resizing or moving Nonpixel For full screen magnifier set to -1 Initial number of times by which magnified image is scaled Steps for changes on each call to 'ZoomIn' or 'ZoomOut' Apply a bilinear filter to the magnified image Keyboard Shift+Caps Lock Alt+Caps Lock Both Shifts together Both Alts together Both Ctrls together Right Alt (while pressed) Left Alt (while pressed) Left Win (while pressed) Right Win (while pressed) Any Win (while pressed) Menu (while pressed), Shift+Menu for Menu Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Right Ctrl (while pressed) Right Alt Left Alt Caps Lock Caps Lock to first layout; Shift+Caps Lock to second layout Left Win to first layout; Right Win/Menu to second layout Left Ctrl to first layout; Right Ctrl to second layout Both Alts together; AltGr alone chooses third level Ctrl+Shift Left Ctrl+Left Shift Right Ctrl+Right Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout Alt+Ctrl Left Alt+Left Ctrl Right Alt+Right Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout Alt+Shift Left Alt+Left Shift Right Alt+Right Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout Menu Left Win Alt+Space Win+Space Ctrl+Space Right Win Left Shift Right Shift Left Ctrl Right Ctrl Scroll Lock Ctrl+Left Win to first layout; Ctrl+Menu to second layout Left Ctrl+Left Win Select layout to add... Rate at which keypresses are repeated per second Delay before keypresses are repeated Enable Num Lock when recognizing a new keyboard Key combination to switch keyboard layout Key Description Select key combination MainDialog Appearance 外观 Behaviour 行为 Mouse & Touchpad 鼠标与触摸æ�¿ Keyboard Touchscreen About Mouse Flat Adaptive left-right-middle left-middle-right None Button Area Clickfinger Two Finger Edge Enabled Disable with external mouse QObject Error loading Run labwc-tweaks from a terminal to view error messages Touchscreen Normal Left Right Inverted pageAbout Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment Licenses Development pageAppearance Theme Labwc theme Icon theme Window Drop Shadows Enable shadows Enable on tiled windows Titlebar Corner radius 圆角å�Šå¾„ Advanced Decoration mode Maximized decoration pageBehaviour Focus follows mouse Requires movement Raise on focus Gap Window Placement Policy px Focus Window Snapping Corner range Notify applications of tiled state Maximize when snapping to top edge Show overlay Use bilinear filter Resistance Screen edge strength Window edge strength Threshold to unsnap Threshold to unmaximize Resize Grab thickness Draw contents Show popup Magnifier Width Height Initial scale Increment pageKeyboard General Repeat rate Repeat delay ms Num lock Enable on startup Keyboard Layout Add 添加 Remove 删除 Layout switch pageMouse Natural scroll Pointer speed Acceleration profile Status Tap to click Tap button map Cursor Theme Size Pointer General Left handed mode Tap and drag Drag lock Three finger drag Middle button emulation Disable while typing Click method Scroll method Scroll factor Touchpad pageTouchscreen Touchscreen Rotation labwc-tweaks-0.1.0/data/translations/labwc-tweaks_zh_TW.ts000066400000000000000000001175321513773473700236270ustar00rootroot00000000000000 Appearance Radius of server side decoration top corners 伺æœ�器端邊è£�飾頂端圓角å�Šå¾‘ Render drop-shadows behind windows 渲染視窗後方的投放陰影 Render drop-shadows behind tiled windows 渲染平鋪視窗後方的投放陰影 Specify decorations for xdg-shell windows 指定 xdg-shell 視窗的邊飾 Server Side Decoration (SSD) 伺æœ�器端的邊飾 (SSD) Client Side Decoration (CSD) 用戶端的邊飾 (CSD) Show server side decorations on maximized windows 顯示伺æœ�器端邊飾於最大化視窗 Titlebar 標題列 None ç„¡ Behaviour Placement policy for new windows 新建視窗的放置原則 Automatic 自動 Cascade 層疊 Center 中央 Cursor 游標 Focus is given to window under mouse cursor 焦點被置於滑鼠游標下的視窗 Requires cursor movement if followMouse is enabled 如果啟用跟隨滑鼠(followMouse),則需è¦�游標移動 Distance between windows and output edges when using movement actions 當使用移動動作時,視窗和輸出邊緣之間的è·�離 Show an overlay when snapping a window to an output edge 當將視窗鋪放到輸出邊緣時顯示覆蓋 Always 總是 Only on regions 僅在å�€åŸŸ Only on edges 僅在邊緣 Never æ°¸ä¸� Movement of cursor required for a tiled or maximized window to be moved 用於平鋪或最大化視窗進行移動,游標移動是必須的 Specify the thickness of border grab areas for the purposes of resizing windows 用於調整視窗大å°�的目的 指定邊框抓å�–å�€åŸŸçš„厚度 Raise window to front when focused 當處於焦點時,將視窗æ��å�‡è‡³å‰�æ–¹ Maximize instead of snapping on top edge 用最大化å�–代鋪放於頂端邊緣 Snapping windows can trigger corresponding tiling events for native Wayland applications 鋪放視窗å�¯ä»¥è§¸ç™¼ç›¸æ‡‰çš„平鋪事件 用於原生 Wayland 應用程å¼� Resist interactive moves and resizes of a window across screen edges 抗拒交互移動和調整視窗大å°� 跨越螢幕邊緣 Resist interactive moves and resizes of a window across the edges of any other window 抗拒交互移動和調整視窗大å°� 跨越任何其他視窗的邊緣 One-dimensional movement of cursor required for a vertically or horizontally maximized window to be moved 游標一維移動是必須的 用於垂直或水平最大化視窗進行移動 Application redraws its contents while resizing. If disabled, an outlined rectangle is shown 應用程å¼�在調整大å°�時é‡�繪其內容。 如果å�œç”¨ï¼Œå‰‡æœƒé¡¯ç¤ºä¸€å€‹æ¡†ç·šçŸ©å½¢ Size of corner regions to which all 'Corner' mousebinds contexts apply as well size of border region for which mouse resizing will apply in any direction. è§’ä½�å�€åŸŸçš„大å°�,在此全部“角ä½�â€�滑鼠標ç¶�定內文å�‡æœƒå¥—用 以å�Šé‚Šæ¡†å�€åŸŸçš„大å°�,用於游標調整大å°�時將會套用於任何方å�‘。 Show a small indicator on top of the window when resizing or moving ç•¶è¦�調整大å°�或移動時,在視窗頂部顯示å°�型指示器 Nonpixel é�žåƒ�ç´  For full screen magnifier set to -1 用於全螢幕放大é�¡è¨­å®šè‡³ -1 Initial number of times by which magnified image is scaled 放大圖åƒ�çš„åˆ�始縮放å€�數 Steps for changes on each call to 'ZoomIn' or 'ZoomOut' æ–¼æ¯�次å�«ç”¨ 'ZoomIn'(拉近放大) 或 'ZoomOut'(拉é� ç¸®å°�) 時的變化步驟 Apply a bilinear filter to the magnified image å°�放大圖åƒ�套用雙線性é�Žæ¿¾å™¨ Keyboard Shift+Caps Lock Shift+Caps Lock Alt+Caps Lock Alt+Caps Lock Both Shifts together å…©é�µ Shifts å�Œæ™‚ Both Alts together å…©é�µ Alts å�Œæ™‚ Both Ctrls together å…©é�µ Ctrls å�Œæ™‚ Right Alt (while pressed) å�³ Alt (當按下時) Left Alt (while pressed) å·¦ Alt (當按下時) Left Win (while pressed) å·¦ Win (當按下時) Right Win (while pressed) å�³ Win (當按下時) Any Win (while pressed) 任何 Win (當按下時) Menu (while pressed), Shift+Menu for Menu Menu(當按下時),Shift+Menu 用於é�¸å–® Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action Caps Lock (當按下時), Alt+Caps Lock 用於原始 Caps Lock (大寫鎖定)動作 Right Ctrl (while pressed) å�³ Ctrl (當按下時) Right Alt å�³ Alt Left Alt å·¦ Alt Caps Lock Caps Lock (大寫鎖定) Caps Lock to first layout; Shift+Caps Lock to second layout Caps Lock 至第一佈置; Shift+Caps Lock 至第二佈置 Left Win to first layout; Right Win/Menu to second layout å·¦ Win 至第一佈置; å�³ Win/Menu 至第二佈置 Left Ctrl to first layout; Right Ctrl to second layout å·¦ Ctrl 至第一佈置;å�³ Ctrl 至第二佈置 Both Alts together; AltGr alone chooses third level å…©é�µ Alt å�Œæ™‚ï¼› AltGr å–®ç�¨é�¸æ“‡ç¬¬ä¸‰å±¤ç´š Ctrl+Shift Ctrl+Shift Left Ctrl+Left Shift å·¦ Ctrl+å·¦ Shift Right Ctrl+Right Shift å�³ Ctrl+å�³ Shift Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout å·¦ Ctrl+å·¦ Shift é�¸æ“‡å‰�一個佈置,å�³ Ctrl + å�³ Shift é�¸æ“‡ä¸‹ä¸€å€‹ä½ˆç½® Alt+Ctrl Alt+Ctrl Left Alt+Left Ctrl å·¦ Alt+å·¦ Ctrl Right Alt+Right Ctrl å�³ Alt+å�³ Ctrl Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout å·¦ Ctrl+å·¦ Alt é�¸æ“‡å‰�一個佈置,å�³ Ctrl + å�³ Alt é�¸æ“‡ä¸‹ä¸€å€‹ä½ˆç½® Alt+Shift Alt+Shift Left Alt+Left Shift å·¦ Alt+å·¦ Shift Right Alt+Right Shift å�³ Alt+å�³ Shift Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout å·¦ Alt+å·¦ Shift é�¸æ“‡å‰�一個佈置,å�³ Alt + å�³ Shift é�¸æ“‡ä¸‹ä¸€å€‹ä½ˆç½® Menu Menu é�¸å–® Left Win å·¦ Win Alt+Space Alt+空白 Win+Space Win+空白 Ctrl+Space Ctrl+空白 Right Win å�³ Win Left Shift å·¦ Shift Right Shift å�³ Shift Left Ctrl å·¦ Ctrl Right Ctrl å�³ Ctrl Scroll Lock Scroll Lock (滾動鎖定é�µ) Ctrl+Left Win to first layout; Ctrl+Menu to second layout Ctrl+å·¦ Win 至第一佈置, Ctrl+Menu 至第二佈置 Left Ctrl+Left Win å·¦ Ctrl+å·¦ Win Select layout to add... é�¸æ“‡ä½ˆç½®é€²è¡Œæ·»åŠ â€¦ Rate at which keypresses are repeated per second æ¯�ç§’é‡�複按é�µçš„速率 Delay before keypresses are repeated 在é‡�複按é�µå‰�的延é�² Enable Num Lock when recognizing a new keyboard 識別新設é�µç›¤æ™‚啟用 Num Lock Key combination to switch keyboard layout 切æ�›é�µç›¤ä½ˆç½®çš„組å�ˆé�µ Key 按é�µ Description æ��è¿° Select key combination é�¸ç”¨æŒ‰é�µçµ„å�ˆ MainDialog Appearance 外觀 Behaviour 行為 Mouse & Touchpad 滑鼠å�Šè§¸æŽ§æ�¿ Keyboard é�µç›¤ Touchscreen 觸控螢幕 About 關於 Mouse Flat å¹³é�¢ Adaptive 自é�©æ‡‰ left-right-middle å·¦-å�³-中 left-middle-right å·¦-中-å�³ None ç„¡ Button Area 按鈕å�€åŸŸ Clickfinger 點按手指 Two Finger 兩手指 Edge 邊緣 Enabled 已經啟用 Disable with external mouse å�œç”¨å¤–接滑鼠使用 QObject Error loading 錯誤載入 Run labwc-tweaks from a terminal to view error messages 從終端機執行 labwc-tweaks 以查看錯誤訊æ�¯ Touchscreen Normal 正常 Left å·¦ Right å�³ Inverted 顛倒 pageAbout Version 版本 XWayland support XWayland 支æ�´ Native language support 本地語文支æ�´ SVG icon support SVG 圖示支æ�´ Icon support with libsfdo 圖示支æŒ�使用 libsfdo Website 網站 Environment 環境 Licenses 授權 Development 開發 pageAppearance Theme 主題 Labwc theme Labwc 主題 Icon theme 圖示主題 Window Drop Shadows 視窗投放陰影 Enable shadows 啟用陰影 Enable on tiled windows 啟用於在平鋪視窗 Titlebar 標題列 Corner radius 圓角å�Šå¾‘ Advanced 進階 Decoration mode è£�飾模å¼� Maximized decoration 最大化è£�飾 pageBehaviour Focus follows mouse 焦點跟隨滑鼠 Requires movement 需è¦�移動 Raise on focus æ��昇於焦點 Gap é–“éš™ Window Placement 視窗放置 Policy 原則 px px Focus 焦點 Window Snapping 視窗鋪放 Corner range 角端範åœ� Notify applications of tiled state 通知應用程å¼�平鋪狀態 Maximize when snapping to top edge 當鋪放至頂端邊緣時進行最大化 Show overlay 顯示覆蓋 Use bilinear filter 使用雙線性é�Žæ¿¾å™¨ Resistance 阻抗 Screen edge strength 螢幕邊緣強度 Window edge strength 視窗邊緣強度 Threshold to unsnap å�–消鋪放的閾值 Threshold to unmaximize å�–消最大化的閾值 Resize 調整大å°� Grab thickness 抓å�–厚度 Draw contents 繪製內容 Show popup 顯示彈出視窗 Magnifier 放大é�¡ Width 寬度 Height 高度 Initial scale åˆ�å§‹é‡�度 Increment 增é‡� pageKeyboard General 通則 Repeat rate é‡�複率 Repeat delay é‡�複延é�² ms ms Num lock Num lock (數字鎖定é�µ) Enable on startup 於啟動時å�³ç‚ºå•Ÿç”¨ Keyboard Layout é�µç›¤ä½ˆç½® Add 添加 Remove 移除 Layout switch 佈置切æ�› pageMouse Natural scroll 自然æ�²å‹• Pointer speed 滑鼠指標速度 Acceleration profile 游標加速度設定檔 Status 狀態 Tap to click 觸滑å�³å�¯é»žæŒ‰ Tap button map 觸滑按鈕測圖 Cursor 游標 Theme 主題 Size 大å°� Pointer General 滑鼠指標通則 Left handed mode 左撇å­�模å¼� Tap and drag 觸滑並拖放 Drag lock 拖放鎖定 Three finger drag 三指拖放 Middle button emulation 中é�µæ¨¡æ“¬ Disable while typing 當打字輸入時å�œç”¨ Click method 點按方å¼� Scroll method æ�²å‹•æ–¹å¼� Scroll factor æ�²å‹•係數 Touchpad 觸控æ�¿ pageTouchscreen Touchscreen 觸控螢幕 Rotation 旋轉 labwc-tweaks-0.1.0/data/translations/labwc_tweaks.desktop.yaml000066400000000000000000000002171513773473700245510ustar00rootroot00000000000000Desktop Entry/Name: "Labwc Tweaks" Desktop Entry/GenericName: "Compositor Settings" Desktop Entry/Comment: "Labwc Wayland compositor settings" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_ar.desktop.yaml000066400000000000000000000002561513773473700252360ustar00rootroot00000000000000Desktop Entry/Name: "تطويعات Labwc" Desktop Entry/GenericName: "تكوين الإعدادات" Desktop Entry/Comment: "تكوين إعدادات وايلاند Labwc" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_ca.desktop.yaml000066400000000000000000000002451513773473700252150ustar00rootroot00000000000000Desktop Entry/Name: "Ajustos de Labwc" Desktop Entry/GenericName: "Configuració del compositor" Desktop Entry/Comment: "Configuració del compositor Labwc Wayland" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_cs.desktop.yaml000066400000000000000000000002311513773473700252320ustar00rootroot00000000000000Desktop Entry/Name: "VyladÄ›ní Labwc" Desktop Entry/GenericName: "Nastavení kompozitoru" Desktop Entry/Comment: "Nastavení Wayland kompozitoru Labwc" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_da.desktop.yaml000066400000000000000000000002271513773473700252160ustar00rootroot00000000000000Desktop Entry/Name: "Labwc Tweaks" Desktop Entry/GenericName: "Kompositorindstillinger" Desktop Entry/Comment: "Labwc Wayland kompositorindstillinger" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_de.desktop.yaml000066400000000000000000000002401513773473700252150ustar00rootroot00000000000000Desktop Entry/Name: "Labwc-Optimierungen" Desktop Entry/GenericName: "Kompositor-Einstellungen" Desktop Entry/Comment: "Labwc Wayland-Kompositor-Einstellungen" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_el.desktop.yaml000066400000000000000000000002771513773473700252370ustar00rootroot00000000000000Desktop Entry/Name: "ΤÏ�οποποιήσεις Labwc" Desktop Entry/GenericName: "Ρυθμίσεις Συνθέτη" Desktop Entry/Comment: "Ρυθμίσεις συνθέτη Labwc Wayland" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_en_US.desktop.yaml000066400000000000000000000001171513773473700256410ustar00rootroot00000000000000Desktop Entry/Name: "" Desktop Entry/GenericName: "" Desktop Entry/Comment: "" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_es.desktop.yaml000066400000000000000000000002521513773473700252370ustar00rootroot00000000000000Desktop Entry/Name: "Ajustes de Labwc" Desktop Entry/GenericName: "Configuración Del Compositor" Desktop Entry/Comment: "Configuración del compositor Wayland de Labwc" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_et.desktop.yaml000066400000000000000000000002431513773473700252400ustar00rootroot00000000000000Desktop Entry/Name: "Labwc peenhäälestus" Desktop Entry/GenericName: "Komposiitori seadistused" Desktop Entry/Comment: "Labwc Waylandi komposiitori seadistused" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_eu.desktop.yaml000066400000000000000000000002431513773473700252410ustar00rootroot00000000000000Desktop Entry/Name: "Labwc-ren Doikuntzak" Desktop Entry/GenericName: "Konpositorearen Ezarpenak" Desktop Entry/Comment: "Labwc Wayland konpositorearen ezarpenak" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_fa.desktop.yaml000066400000000000000000000002551513773473700252210ustar00rootroot00000000000000Desktop Entry/Name: "تنظیم Labwc" Desktop Entry/GenericName: "تنظیمات ترکیبنما" Desktop Entry/Comment: "تنظیمات ترکیبنمای Labwc Wayland" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_fi.desktop.yaml000066400000000000000000000002221513773473700252230ustar00rootroot00000000000000Desktop Entry/Name: "Labwc-säädöt" Desktop Entry/GenericName: "Koostimen asetukset" Desktop Entry/Comment: "Labwc Wayland-koostimen asetukset" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_fr.desktop.yaml000066400000000000000000000002431513773473700252370ustar00rootroot00000000000000Desktop Entry/Name: "Réglages de Labwc" Desktop Entry/GenericName: "Paramètres du Compositeur" Desktop Entry/Comment: "Paramètres du compositeur Labwc Wayland" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_gl.desktop.yaml000066400000000000000000000002451513773473700252340ustar00rootroot00000000000000Desktop Entry/Name: "Axustes de Labwc" Desktop Entry/GenericName: "Configuración do compositor" Desktop Entry/Comment: "Configuración do compositor Labwc Wayland" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_he.desktop.yaml000066400000000000000000000003011513773473700252170ustar00rootroot00000000000000Desktop Entry/Name: "שפצורי Labwc" Desktop Entry/GenericName: "הגדרות ניהול חלונ×�×™" Desktop Entry/Comment: "הגדרות ניהול חלונ×�×™ של Wayland ×¢×� Labwc" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_hr.desktop.yaml000066400000000000000000000002261513773473700252420ustar00rootroot00000000000000Desktop Entry/Name: "Labwc optimiranja" Desktop Entry/GenericName: "Postavke kompositora" Desktop Entry/Comment: "Postavke Labwc Wayland kompozitora" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_hu.desktop.yaml000066400000000000000000000002421513773473700252430ustar00rootroot00000000000000Desktop Entry/Name: "Labwc Finomhangoló" Desktop Entry/GenericName: "Kompozitor beállítások" Desktop Entry/Comment: "Labwc Wayland kompozitor beállítások" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_it.desktop.yaml000066400000000000000000000003001513773473700252360ustar00rootroot00000000000000Desktop Entry/Name: "Impostazioni Labwc" Desktop Entry/GenericName: "Impostazioni del gestore finestre labwc" Desktop Entry/Comment: "Impostazioni di Labwc, gestore delle finestre in Wayland" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_ka.desktop.yaml000066400000000000000000000004021513773473700252200ustar00rootroot00000000000000Desktop Entry/Name: "Labwc-ის დეტáƒ�ლები" Desktop Entry/GenericName: "კáƒ�მპáƒ�ზიტáƒ�რის მáƒ�რგებáƒ�" Desktop Entry/Comment: "Labwc Wayland კáƒ�მპáƒ�ზიტáƒ�რის პáƒ�რáƒ�მეტრები" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_kk.desktop.yaml000066400000000000000000000003301513773473700252320ustar00rootroot00000000000000Desktop Entry/Name: "Labwc қоÑ�ымша баптаулары" Desktop Entry/GenericName: "Композитор баптаулары" Desktop Entry/Comment: "Labwc Wayland композитор баптаулары" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_ko.desktop.yaml000066400000000000000000000002301513773473700252350ustar00rootroot00000000000000Desktop Entry/Name: "Labwc 트윅" Desktop Entry/GenericName: "ì»´í�¬ì§€í„° 설정" Desktop Entry/Comment: "Labwc Wayland ì»´í�¬ì§€í„° 설정입니다" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_lt.desktop.yaml000066400000000000000000000002401513773473700252440ustar00rootroot00000000000000Desktop Entry/Name: "Labwc patobulinimai" Desktop Entry/GenericName: "Tvarkytojo nustatymai" Desktop Entry/Comment: "Labwc „Wayland“ tvarkytojo nustatymai" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_ms.desktop.yaml000066400000000000000000000002121513773473700252430ustar00rootroot00000000000000Desktop Entry/Name: "Pulasan Labwc" Desktop Entry/GenericName: "Aturan Penggubah" Desktop Entry/Comment: "Aturan Penggubah Labwc Wayland" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_nl.desktop.yaml000066400000000000000000000002271513773473700252430ustar00rootroot00000000000000Desktop Entry/Name: "Labwc-afstellingen" Desktop Entry/GenericName: "Vensterbeheerderinstellingen" Desktop Entry/Comment: "Labwc Wayland-instellingen" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_pl.desktop.yaml000066400000000000000000000002331513773473700252420ustar00rootroot00000000000000Desktop Entry/Name: "Usprawnienia Labwc" Desktop Entry/GenericName: "Ustawienia kompozytora" Desktop Entry/Comment: "Ustawienia kompozytora Wayland Labwc" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_pt.desktop.yaml000066400000000000000000000002361513773473700252550ustar00rootroot00000000000000Desktop Entry/Name: "Ajustes Labwc" Desktop Entry/GenericName: "Definições do Compositor" Desktop Entry/Comment: "Definições do compositor Labwc Wayland" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_pt_BR.desktop.yaml000066400000000000000000000002471513773473700256420ustar00rootroot00000000000000Desktop Entry/Name: "Configurações do Labwc" Desktop Entry/GenericName: "Configurações do Compositor" Desktop Entry/Comment: "Configurações do Compositor Labwc" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_ru.desktop.yaml000066400000000000000000000002731513773473700252610ustar00rootroot00000000000000Desktop Entry/Name: "Labwc Tweaks" Desktop Entry/GenericName: "Ð�аÑ�тройки композитора" Desktop Entry/Comment: "Ð�аÑ�тройки композитора Labwc Wayland" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_vi.desktop.yaml000066400000000000000000000002511513773473700252450ustar00rootroot00000000000000Desktop Entry/Name: "Tùy chỉnh Labwc" Desktop Entry/GenericName: "Cài đặt bá»™ tổng hợp" Desktop Entry/Comment: "Cài đặt bổ tổng hợp Labwc Wayland" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_zh_CN.desktop.yaml000066400000000000000000000002151513773473700256300ustar00rootroot00000000000000Desktop Entry/Name: "labwc é…�置调整" Desktop Entry/GenericName: "æ··æˆ�器设置" Desktop Entry/Comment: "Labwc Wayland æ··æˆ�器设置" labwc-tweaks-0.1.0/data/translations/labwc_tweaks_zh_TW.desktop.yaml000066400000000000000000000002071513773473700256630ustar00rootroot00000000000000Desktop Entry/Name: "Labwc 調控" Desktop Entry/GenericName: "å�ˆæˆ�器設定" Desktop Entry/Comment: "Labwc Wayland å�ˆæˆ�器設定" labwc-tweaks-0.1.0/src/000077500000000000000000000000001513773473700147045ustar00rootroot00000000000000labwc-tweaks-0.1.0/src/.clang-format000066400000000000000000000020271513773473700172600ustar00rootroot00000000000000BasedOnStyle: WebKit Standard: c++20 ColumnLimit: 100 CommentPragmas: "^!|^:|^ SPDX-License-Identifier:" PointerBindsToType: false SpaceAfterTemplateKeyword: false BreakBeforeBinaryOperators: NonAssignment BreakBeforeBraces: Custom BraceWrapping: AfterClass: true AfterControlStatement: false AfterEnum: false AfterFunction: true AfterNamespace: false AfterObjCDeclaration: false AfterStruct: true AfterUnion: false BeforeCatch: false BeforeElse: false IndentBraces: false ConstructorInitializerAllOnOneLineOrOnePerLine: true ConstructorInitializerIndentWidth: 4 ContinuationIndentWidth: 8 NamespaceIndentation: None IndentPPDirectives: AfterHash PPIndentWidth: 2 AlignAfterOpenBracket: true AlwaysBreakTemplateDeclarations: true AllowShortFunctionsOnASingleLine: Inline SortIncludes: false ForEachMacros: [ foreach, Q_FOREACH, forever, Q_FOREVER ] BreakConstructorInitializers: BeforeColon FixNamespaceComments: true ShortNamespaceLines: 1 AlignEscapedNewlines: Left SpaceBeforeCpp11BracedList: false labwc-tweaks-0.1.0/src/.editorconfig000066400000000000000000000003361513773473700173630ustar00rootroot00000000000000root = true [*.{cpp,h}] end_of_line = lf insert_final_newline = true charset = utf-8 trim_trailing_whitespace = true indent_style = space indent_size = 4 max_line_length = 100 [*.ui] indent_style = space indent_size = 1 labwc-tweaks-0.1.0/src/about.cpp000066400000000000000000000052251513773473700165260ustar00rootroot00000000000000#include "about.h" #include #include #include #include #include "./ui_about.h" About::About(QWidget *parent) : QWidget(parent), ui(new Ui::pageAbout) { ui->setupUi(this); } About::~About() { delete ui; } void About::loadInfo() { QString version = QString::fromUtf8(qgetenv("LABWC_VER")); if (version.isEmpty()) version = "Unknown"; ui->versionValue->setText(version); // Features QString pid = QString::fromUtf8(qgetenv("LABWC_PID")); QString exePath = QString("/proc/%1/exe").arg(pid); QProcess proc; proc.start(exePath, {"-v"}); proc.waitForFinished(); // Fallback if (exePath.isEmpty() || !QFile::exists(exePath)) { proc.start("labwc", {"-v"}); proc.waitForFinished(); } QString out = proc.readAllStandardOutput().trimmed(); if (out.isEmpty()) out = proc.readAllStandardError().trimmed(); ui->xwaylandValue->setText(out.contains("+xwayland") ? "✔" : "✘"); ui->nlsValue->setText(out.contains("+nls") ? "✔" : "✘"); ui->rsvgValue->setText(out.contains("+rsvg") ? "✔" : "✘"); ui->libsfdoValue->setText(out.contains("+libsfdo") ? "✔" : "✘"); QString labwcLink = QStringLiteral("labwc.github.io"); ui->labwcLinkValue->setText(labwcLink); ui->labwcLinkValue->setTextInteractionFlags(Qt::TextBrowserInteraction); ui->labwcLinkValue->setOpenExternalLinks(true); QString labwcTweaksVersion = QStringLiteral("0.1.0"); ui->labwcTweaksVersionValue->setText(labwcTweaksVersion); QString labwcTweaksLink = QStringLiteral("github.com/labwc/labwc-tweaks"); ui->labwcTweaksLinkValue->setText(labwcTweaksLink); ui->labwcTweaksLinkValue->setTextInteractionFlags(Qt::TextBrowserInteraction); ui->labwcTweaksLinkValue->setOpenExternalLinks(true); } void About::getEnv() { QString desktop = QString::fromUtf8(qgetenv("XDG_CURRENT_DESKTOP")); if (desktop.isEmpty()) desktop = "Unknown"; ui->desktopValue->setText(desktop); QString pid = QString::fromUtf8(qgetenv("LABWC_PID")); if (pid.isEmpty()) pid = "Unknown"; ui->pidValue->setText(pid); QString confdir = QString::fromUtf8(qgetenv("LABWC_CONFIG_DIR")); confdir.replace(QDir::homePath(), "~"); if (confdir.isEmpty()) confdir = "~/.config/labwc/"; ui->configdirValue->setText(confdir); QString display = QString::fromUtf8(qgetenv("WAYLAND_DISPLAY")); if (display.isEmpty()) display = "Unknown"; ui->displayValue->setText(display); } void About::onApply() { // No-op } labwc-tweaks-0.1.0/src/about.h000066400000000000000000000005271513773473700161730ustar00rootroot00000000000000#ifndef ABOUT_H #define ABOUT_H #include QT_BEGIN_NAMESPACE namespace Ui { class pageAbout; } QT_END_NAMESPACE class About : public QWidget { Q_OBJECT public: About(QWidget *parent = nullptr); ~About(); void onApply(); void loadInfo(); void getEnv(); private: Ui::pageAbout *ui; }; #endif // ABOUT_H labwc-tweaks-0.1.0/src/about.ui000066400000000000000000000165401513773473700163630ustar00rootroot00000000000000 pageAbout QFrame::Shape::NoFrame true 9 Labwc Version XWayland support Native language support SVG icon support Icon support with libsfdo Website Environment XDG_CURRENT_DESKTOP Labwc PID LABWC_CONFIG_DIR Wayland display Labwc Tweaks Version Licenses GPL-2.0-only; BSD-3-Clause Development Qt::Orientation::Vertical labwc-tweaks-0.1.0/src/appearance.cpp000066400000000000000000000104031513773473700175050ustar00rootroot00000000000000#include "appearance.h" #include "find-themes.h" #include "macros.h" #include "settings.h" #include "pair.h" #include "./ui_appearance.h" Appearance::Appearance(QWidget *parent) : QWidget(parent), ui(new Ui::pageAppearance) { ui->setupUi(this); } Appearance::~Appearance() { delete ui; } void Appearance::activate() { /* Labwc Theme */ settingsAddXmlStr("/labwc_config/theme/name", ""); QStringList labwcThemes = findLabwcThemes(); ui->openboxTheme->addItems(labwcThemes); ui->openboxTheme->setCurrentIndex(labwcThemes.indexOf(getStr("/labwc_config/theme/name"))); /* Corner Radius */ settingsAddXmlInt("/labwc_config/theme/cornerRadius", 8); ui->cornerRadius->setValue(getInt("/labwc_config/theme/cornerRadius")); ui->cornerRadius->setToolTip(tr("Radius of server side decoration top corners")); /* Drop Shadows */ settingsAddXmlBoo("/labwc_config/theme/dropShadows", false); ui->dropShadows->setChecked(getBool("/labwc_config/theme/dropShadows")); ui->dropShadows->setToolTip(tr("Render drop-shadows behind windows")); /* Drop Shadows On Tiled */ settingsAddXmlBoo("/labwc_config/theme/dropShadowsOnTiled", false); ui->dropShadowsOnTiled->setChecked(getBool("/labwc_config/theme/dropShadowsOnTiled")); ui->dropShadowsOnTiled->setToolTip(tr("Render drop-shadows behind tiled windows")); // Disable it when Drop Shadows is unchecked ui->dropShadowsOnTiled->setEnabled(ui->dropShadows->isChecked()); connect(ui->dropShadows, &QCheckBox::toggled, ui->dropShadowsOnTiled, &QWidget::setEnabled); /* Icon Theme */ settingsAddXmlStr("/labwc_config/theme/icon", ""); QStringList themes = findIconThemes(LAB_ICON_THEME_TYPE_ICON); ui->iconTheme->addItems(themes); ui->iconTheme->setCurrentIndex(themes.indexOf(getStr("/labwc_config/theme/icon"))); /* Decoration */ settingsAddXmlStr("/labwc_config/core/decoration", "server"); ui->decoration->setToolTip(tr("Specify decorations for xdg-shell windows")); QVector> decorations; decorations.append( QSharedPointer(new Pair("server", tr("Server Side Decoration (SSD)")))); decorations.append( QSharedPointer(new Pair("client", tr("Client Side Decoration (CSD)")))); QString current_decoration = getStr("/labwc_config/core/decoration"); int decoration_index = -1; foreach (auto decoration, decorations) { ui->decoration->addItem(decoration.get()->description(), QVariant(decoration.get()->value())); ++decoration_index; if (current_decoration == decoration.get()->value()) { ui->decoration->setCurrentIndex(decoration_index); } } /* Maximized Decoration */ settingsAddXmlStr("/labwc_config/theme/maximizedDecoration", "titlebar"); ui->maximizedDecoration->setToolTip(tr("Show server side decorations on maximized windows")); QVector> maximized_decorations; maximized_decorations.append(QSharedPointer(new Pair("titlebar", tr("Titlebar")))); maximized_decorations.append(QSharedPointer(new Pair("none", tr("None")))); QString current_maximized_decoration = getStr("/labwc_config/theme/maximizedDecoration"); int maximized_decoration_index = -1; foreach (auto maximized_decoration, maximized_decorations) { ui->maximizedDecoration->addItem(maximized_decoration.get()->description(), QVariant(maximized_decoration.get()->value())); ++maximized_decoration_index; if (current_maximized_decoration == maximized_decoration.get()->value()) { ui->maximizedDecoration->setCurrentIndex(maximized_decoration_index); } } } void Appearance::onApply() { setInt("/labwc_config/theme/cornerRadius", ui->cornerRadius->value()); setStr("/labwc_config/theme/name", TEXT(ui->openboxTheme)); setBool("/labwc_config/theme/dropShadows", ui->dropShadows->isChecked()); setBool("/labwc_config/theme/dropShadowsOnTiled", ui->dropShadowsOnTiled->isChecked()); setStr("/labwc_config/theme/icon", TEXT(ui->iconTheme)); setStr("/labwc_config/core/decoration", DATA(ui->decoration)); setStr("/labwc_config/theme/maximizedDecoration", DATA(ui->maximizedDecoration)); } labwc-tweaks-0.1.0/src/appearance.h000066400000000000000000000005541513773473700171600ustar00rootroot00000000000000#ifndef APPEARANCE_H #define APPEARANCE_H #include QT_BEGIN_NAMESPACE namespace Ui { class pageAppearance; } QT_END_NAMESPACE class Appearance : public QWidget { Q_OBJECT public: Appearance(QWidget *parent = nullptr); ~Appearance(); void activate(); void onApply(); private: Ui::pageAppearance *ui; }; #endif // APPEARANCE_H labwc-tweaks-0.1.0/src/appearance.ui000066400000000000000000000140441513773473700173450ustar00rootroot00000000000000 pageAppearance QFrame::Shape::NoFrame true 9 Theme 16 8 Labwc theme Qt::Orientation::Horizontal Icon theme Window Drop Shadows 16 8 Enable shadows Enable on tiled windows Qt::Orientation::Horizontal Titlebar 16 8 Corner radius 24 Qt::Orientation::Horizontal Maximized decoration Advanced 16 8 Decoration mode Qt::Orientation::Horizontal Qt::Orientation::Vertical labwc-tweaks-0.1.0/src/behaviour.cpp000066400000000000000000000255271513773473700174070ustar00rootroot00000000000000#include "behaviour.h" #include #include "find-themes.h" #include "macros.h" #include "pair.h" #include "settings.h" #include "./ui_behaviour.h" Behaviour::Behaviour(QWidget *parent) : QWidget(parent), ui(new Ui::pageBehaviour) { ui->setupUi(this); } Behaviour::~Behaviour() { delete ui; } void Behaviour::activate() { /* Placement Policy */ settingsAddXmlStr("/labwc_config/placement/policy", "cascade"); ui->placementPolicy->setToolTip(tr("Placement policy for new windows")); QVector> policies; policies.append(QSharedPointer(new Pair("automatic", tr("Automatic")))); policies.append(QSharedPointer(new Pair("cascade", tr("Cascade")))); policies.append(QSharedPointer(new Pair("center", tr("Center")))); policies.append(QSharedPointer(new Pair("cursor", tr("Cursor")))); QString current = getStr("/labwc_config/placement/policy"); int index = -1; foreach (auto policy, policies) { ui->placementPolicy->addItem(policy.get()->description(), QVariant(policy.get()->value())); ++index; if (current == policy.get()->value()) { ui->placementPolicy->setCurrentIndex(index); } } /* Focus Follow Mouse */ settingsAddXmlBoo("/labwc_config/focus/followMouse", false); ui->followMouse->setChecked(getBool("/labwc_config/focus/followMouse")); ui->followMouse->setToolTip(tr("Focus is given to window under mouse cursor")); /* Focus Requires Movement */ settingsAddXmlBoo("/labwc_config/focus/followMouseRequiresMovement", false); ui->followMouseRequiresMovement->setChecked( getBool("/labwc_config/focus/followMouseRequiresMovement")); ui->followMouseRequiresMovement->setToolTip( tr("Requires cursor movement if followMouse is enabled")); ui->followMouseRequiresMovement->setEnabled(ui->followMouse->isChecked()); connect(ui->followMouse, &QCheckBox::toggled, ui->followMouseRequiresMovement, &QWidget::setEnabled); /* Raise on Focus */ settingsAddXmlBoo("/labwc_config/focus/raiseOnFocus", false); ui->raiseOnFocus->setChecked(getBool("/labwc_config/focus/raiseOnFocus")); ui->raiseOnFocus->setToolTip(tr("Raise window to front when focused")); ui->raiseOnFocus->setEnabled(ui->followMouse->isChecked()); connect(ui->followMouse, &QCheckBox::toggled, ui->raiseOnFocus, &QWidget::setEnabled); /* Gap (Core) */ settingsAddXmlInt("/labwc_config/core/gap", 0); ui->gap->setValue(getInt("/labwc_config/core/gap")); ui->gap->setToolTip( tr("Distance between windows and output edges when using movement actions")); /* Snapping Corner Range */ settingsAddXmlInt("/labwc_config/snapping/cornerRange", 50); ui->snapCornerRange->setValue(getInt("/labwc_config/snapping/cornerRange")); ui->snapCornerRange->setToolTip(tr("")); /* Show Overlay */ settingsAddXmlBoo("/labwc_config/snapping/overlay/enabled", true); ui->showOverlay->setChecked(getBool("/labwc_config/snapping/overlay/enabled")); ui->showOverlay->setToolTip(tr("Show an overlay when snapping a window to an output edge")); /* Maximize On Top */ settingsAddXmlBoo("/labwc_config/snapping/topMaximize", true); ui->topMaximize->setChecked(getBool("/labwc_config/snapping/topMaximize")); ui->topMaximize->setToolTip(tr("Maximize instead of snapping on top edge")); /* Notify Clients */ settingsAddXmlStr("/labwc_config/snapping/notifyClient", "always"); ui->notifyClients->setToolTip(tr("Snapping windows can trigger corresponding\ntiling events " "for native Wayland applications")); QVector> notifyclients; notifyclients.append(QSharedPointer(new Pair("always", tr("Always")))); notifyclients.append(QSharedPointer(new Pair("region", tr("Only on regions")))); notifyclients.append(QSharedPointer(new Pair("edge", tr("Only on edges")))); notifyclients.append(QSharedPointer(new Pair("never", tr("Never")))); QString current_notifyclientvalue = getStr("/labwc_config/snapping/notifyClient"); int notifyclientvalue_index = -1; foreach (auto notifyclientvalue, notifyclients) { ui->notifyClients->addItem(notifyclientvalue.get()->description(), QVariant(notifyclientvalue.get()->value())); ++notifyclientvalue_index; if (current_notifyclientvalue == notifyclientvalue.get()->value()) { ui->notifyClients->setCurrentIndex(notifyclientvalue_index); } } // clang-format off /* Resistance: Screen Edge Strength */ settingsAddXmlInt("/labwc_config/resistance/screenEdgeStrength", 20); ui->screenEdgeStrength->setValue(getInt("/labwc_config/resistance/screenEdgeStrength")); ui->screenEdgeStrength->setToolTip(tr("Resist interactive moves and resizes of a window\n across screen edges")); /* Window Edge Strength */ settingsAddXmlInt("/labwc_config/resistance/windowEdgeStrength", 20); ui->windowEdgeStrength->setValue(getInt("/labwc_config/resistance/windowEdgeStrength")); ui->windowEdgeStrength->setToolTip(tr("Resist interactive moves and resizes of a window\n across the edges of any other window")); /* resistance UnSnap Treshold */ settingsAddXmlInt("/labwc_config/resistance/unSnapTreshold", 20); ui->unSnapTreshold->setValue(getInt("/labwc_config/resistance/unSnapTreshold")); ui->unSnapTreshold->setToolTip(tr("Movement of cursor required for a tiled or maximized window to be moved")); /* resistance UnMaximizeTreshold */ settingsAddXmlInt("/labwc_config/resistance/unMaximizeTreshold", 150); ui->unMaximizeTreshold->setValue(getInt("/labwc_config/resistance/unMaximizeTreshold")); ui->unMaximizeTreshold->setToolTip(tr("One-dimensional movement of cursor required for\na vertically or horizontally maximized window to be moved")); /* Resize: drawContents */ settingsAddXmlBoo("/labwc_config/resize/drawContents", true); ui->drawContents->setChecked(getBool("/labwc_config/resize/drawContents")); ui->drawContents->setToolTip(tr("Application redraws its contents while resizing.\nIf " "disabled, an outlined rectangle is shown")); /* Resize: Corner Range */ settingsAddXmlInt("/labwc_config/resize/cornerRange", 8); ui->resizeCornerRange->setValue(getInt("/labwc_config/resize/cornerRange")); ui->resizeCornerRange->setToolTip( tr("Size of corner regions to which all 'Corner' mousebinds contexts apply\n as well " "size of border region for which mouse resizing will apply in any direction.")); /* Resize: Minimum Area */ settingsAddXmlInt("/labwc_config/resize/minimumArea", 8); ui->resizeMinimumArea->setValue(getInt("/labwc_config/resize/minimumArea")); ui->resizeMinimumArea->setToolTip(tr("Specify the thickness of border grab areas for the\n" "purposes of resizing windows")); // clang-format on /* Show Popup */ settingsAddXmlStr("/labwc_config/resize/popupShow", "never"); ui->popupShow->setToolTip( tr("Show a small indicator on top of the window when resizing or moving")); QVector> resizeShowPopup; resizeShowPopup.append(QSharedPointer(new Pair("never", tr("Never")))); resizeShowPopup.append(QSharedPointer(new Pair("always", tr("Always")))); resizeShowPopup.append(QSharedPointer(new Pair("nonpixel", tr("Nonpixel")))); QString current_popupValue = getStr("/labwc_config/resize/popupShow"); int popupValue_index = -1; foreach (auto popupValue, resizeShowPopup) { ui->popupShow->addItem(popupValue.get()->description(), QVariant(popupValue.get()->value())); ++popupValue_index; if (current_popupValue == popupValue.get()->value()) { ui->popupShow->setCurrentIndex(popupValue_index); } } /* Magnifier */ settingsAddXmlInt("/labwc_config/magnifier/width", 400); ui->magnifierWidth->setValue(getInt("/labwc_config/magnifier/width")); ui->magnifierWidth->setToolTip(tr("For full screen magnifier set to -1")); settingsAddXmlInt("/labwc_config/magnifier/height", 400); ui->magnifierHeight->setValue(getInt("/labwc_config/magnifier/height")); ui->magnifierHeight->setToolTip(tr("For full screen magnifier set to -1")); settingsAddXmlFlt("/labwc_config/magnifier/initScale", 2.0f); ui->initScale->setValue(getFloat("/labwc_config/magnifier/initScale")); ui->initScale->setToolTip(tr("Initial number of times by which magnified image is scaled")); settingsAddXmlFlt("/labwc_config/magnifier/increment", 0.2f); ui->increment->setValue(getFloat("/labwc_config/magnifier/increment")); ui->increment->setToolTip(tr("Steps for changes on each call to 'ZoomIn' or 'ZoomOut'")); settingsAddXmlBoo("/labwc_config/magnifier/useFilter", true); ui->useFilter->setChecked(getBool("/labwc_config/magnifier/useFilter")); ui->useFilter->setToolTip(tr("Apply a bilinear filter to the magnified image")); } void Behaviour::onApply() { setStr("/labwc_config/placement/policy", DATA(ui->placementPolicy)); setBool("/labwc_config/focus/followMouse", ui->followMouse->isChecked()); setBool("/labwc_config/focus/followMouseRequiresMovement", ui->followMouseRequiresMovement->isChecked()); setBool("/labwc_config/focus/raiseOnFocus", ui->raiseOnFocus->isChecked()); setInt("/labwc_config/core/gap", ui->gap->value()); setInt("/labwc_config/snapping/cornerRange", ui->snapCornerRange->value()); setBool("/labwc_config/snapping/overlay/enabled", ui->showOverlay->isChecked()); setBool("/labwc_config/snapping/topMaximize", ui->topMaximize->isChecked()); setStr("/labwc_config/snapping/notifyClient", DATA(ui->notifyClients)); setInt("/labwc_config/resistance/screenEdgeStrength", ui->screenEdgeStrength->value()); setInt("/labwc_config/resistance/windowEdgeStrength", ui->windowEdgeStrength->value()); setInt("/labwc_config/resistance/unSnapTreshold", ui->unSnapTreshold->value()); setInt("/labwc_config/resistance/unMaximizeTreshold", ui->unMaximizeTreshold->value()); setBool("/labwc_config/resize/drawContents", ui->drawContents->isChecked()); setInt("/labwc_config/resize/cornerRange", ui->resizeCornerRange->value()); setInt("/labwc_config/resize/minimumArea", ui->resizeMinimumArea->value()); setStr("/labwc_config/resize/popupShow", DATA(ui->popupShow)); setInt("/labwc_config/magnifier/width", ui->magnifierWidth->value()); setInt("/labwc_config/magnifier/height", ui->magnifierHeight->value()); setFloat("/labwc_config/magnifier/initScale", ui->initScale->value()); setFloat("/labwc_config/magnifier/increment", ui->increment->value()); setBool("/labwc_config/magnifier/useFilter", ui->useFilter->isChecked()); } labwc-tweaks-0.1.0/src/behaviour.h000066400000000000000000000005441513773473700170440ustar00rootroot00000000000000#ifndef BEHAVIOUR_H #define BEHAVIOUR_H #include QT_BEGIN_NAMESPACE namespace Ui { class pageBehaviour; } QT_END_NAMESPACE class Behaviour : public QWidget { Q_OBJECT public: Behaviour(QWidget *parent = nullptr); ~Behaviour(); void activate(); void onApply(); private: Ui::pageBehaviour *ui; }; #endif // BEHAVIOUR_H labwc-tweaks-0.1.0/src/behaviour.ui000066400000000000000000000402141513773473700172300ustar00rootroot00000000000000 pageBehaviour QFrame::Shape::NoFrame true 9 Window Placement 16 8 Policy Qt::Orientation::Horizontal 40 20 Gap px 80 Qt::Orientation::Horizontal 40 20 Focus 16 8 Focus follows mouse Qt::Orientation::Horizontal Qt::Orientation::Horizontal 8 1 Requires movement Qt::Orientation::Horizontal 8 1 Raise on focus Window Snapping 16 8 Corner range px Qt::Orientation::Horizontal Notify applications of tiled state Maximize when snapping to top edge Show overlay Resistance 16 8 Screen edge strength px -99 Qt::Orientation::Horizontal Window edge strength px -99 Threshold to unsnap px Threshold to unmaximize px 600 10 Resize 16 8 Corner range px Qt::Orientation::Horizontal Grab thickness px Show popup Draw contents Magnifier 16 8 Width px -1 2000 50 Qt::Orientation::Horizontal Height px -1 2000 50 Initial scale 1 8.000000000000000 0.100000000000000 Increment 1.000000000000000 0.100000000000000 Use bilinear filter Qt::Orientation::Vertical labwc-tweaks-0.1.0/src/environment.cpp000066400000000000000000000057071513773473700177650ustar00rootroot00000000000000// SPDX-License-Identifier: GPL-2.0-only #define _POSIX_C_SOURCE 200809L #include #include #include #include #include #include #include #include #include #include "log.h" class Line { public: Line(); ~Line(); QString data; bool isKeyValuePair; QString key; QString value; }; static std::vector> lines; static std::string _filename; Line::Line(void) { isKeyValuePair = false; } Line::~Line(void) { }; QString environmentGet(QString key) { for (auto &line : lines) { if (!line->isKeyValuePair) continue; if (line->key == key) return line->value; } return nullptr; } int environmentGetInt(QString key) { for (auto &line : lines) { if (!line->isKeyValuePair) { continue; } if (line->key == key) { bool success = false; int ret = line->value.toInt(&success); return success ? ret : -1; } } return -1; } void environmentSet(QString key, QString value) { if (key.isEmpty() || value.isEmpty()) { return; } for (auto &line : lines) { if (!line->isKeyValuePair) { continue; } if (line->key == key) { // Modify existing key=value pair line->value = value; return; } } // Append lines.push_back(std::make_unique()); lines.back()->isKeyValuePair = true; lines.back()->key = key; lines.back()->value = value; } void environmentSetInt(QString key, int value) { char buffer[255]; snprintf(buffer, 255, "%d", value); environmentSet(key, QString(buffer)); } static void processLine(QString line) { lines.push_back(std::make_unique()); lines.back()->data = line; if (line.isEmpty() || line.startsWith("#") || !line.contains("=")) { return; } lines.back()->isKeyValuePair = true; QStringList elements = line.split('='); lines.back()->key = elements[0].trimmed(); lines.back()->value = elements[1].trimmed(); } void environmentInit(std::string filename) { // Store filename in this translation unit so that environmentSave() uses the same one with no // additional effort from the caller. _filename = filename; if (access(filename.c_str(), F_OK)) { info("environment file not found '{}'", filename); return; } std::string line; std::ifstream stream(filename); while (getline(stream, line)) { processLine(QString(line.c_str())); } stream.close(); } void environmentSave(void) { std::ofstream ofs(_filename); for (auto &line : lines) { if (!line->isKeyValuePair) { ofs << line->data.toStdString() << std::endl; } else { ofs << line->key.toStdString() << "=" << line->value.toStdString() << std::endl; } } ofs.close(); } labwc-tweaks-0.1.0/src/environment.h000066400000000000000000000005721513773473700174250ustar00rootroot00000000000000/* SPDX-License-Identifier: GPL-2.0-only */ #ifndef ENVIRONMENT_H #define ENVIRONMENT_H #include QString environmentGet(QString key); int environmentGetInt(QString key); void environmentSet(QString key, QString value); void environmentSetInt(QString key, int value); void environmentInit(std::string filename); void environmentSave(void); #endif /* ENVIRONMENT_H */ labwc-tweaks-0.1.0/src/evdev-lst-layouts.h000066400000000000000000000670431513773473700204760ustar00rootroot00000000000000#pragma once #include #include // Auto-generated based on "/usr/share/X11/xkb/rules/evdev.lst" struct layout { QString code; QString description; }; static std::vector evdev_lst_layouts = { { "custom", "A user-defined custom Layout" }, { "ru(ab)", "Abkhazian (Russia)" }, { "gh(akan)", "Akan" }, { "al", "Albanian" }, { "al(plisi)", "Albanian (Plisi)" }, { "al(veqilharxhi)", "Albanian (Veqilharxhi)" }, { "et", "Amharic" }, { "ara", "Arabic" }, { "ara(azerty)", "Arabic (AZERTY)" }, { "ara(azerty_digits)", "Arabic (AZERTY, Eastern Arabic numerals)" }, { "dz(ar)", "Arabic (Algeria)" }, { "ara(buckwalter)", "Arabic (Buckwalter)" }, { "ara(digits)", "Arabic (Eastern Arabic numerals)" }, { "eg", "Arabic (Egypt)" }, { "iq", "Arabic (Iraq)" }, { "ara(mac)", "Arabic (Macintosh)" }, { "ara(mac-phonetic)", "Arabic (Macintosh, phonetic)" }, { "ma", "Arabic (Morocco)" }, { "ara(olpc)", "Arabic (OLPC)" }, { "pk(ara)", "Arabic (Pakistan)" }, { "sy", "Arabic (Syria)" }, { "am", "Armenian" }, { "am(eastern-alt)", "Armenian (alt. eastern)" }, { "am(phonetic-alt)", "Armenian (alt. phonetic)" }, { "am(eastern)", "Armenian (eastern)" }, { "am(phonetic)", "Armenian (phonetic)" }, { "am(western)", "Armenian (western)" }, { "in(asm-kagapa)", "Assamese (KaGaPa, phonetic)" }, { "es(ast)", "Asturian (Spain, with bottom-dot H and L)" }, { "gh(avn)", "Avatime" }, { "az", "Azerbaijani" }, { "az(cyrillic)", "Azerbaijani (Cyrillic)" }, { "ir(azb)", "Azerbaijani (Iran)" }, { "ml", "Bambara" }, { "bd", "Bangla" }, { "in(ben)", "Bangla (India)" }, { "in(ben_inscript)", "Bangla (India, Baishakhi InScript)" }, { "in(ben_baishakhi)", "Bangla (India, Baishakhi)" }, { "in(ben_bornona)", "Bangla (India, Bornona)" }, { "in(ben_gitanjali)", "Bangla (India, Gitanjali)" }, { "in(ben-kagapa)", "Bangla (India, KaGaPa, phonetic)" }, { "in(ben_probhat)", "Bangla (India, Probhat)" }, { "bd(probhat)", "Bangla (Probhat)" }, { "ru(bak)", "Bashkirian" }, { "by", "Belarusian" }, { "by(latin)", "Belarusian (Latin)" }, { "by(intl)", "Belarusian (intl.)" }, { "by(legacy)", "Belarusian (legacy)" }, { "by(phonetic)", "Belarusian (phonetic)" }, { "be", "Belgian" }, { "be(iso-alternate)", "Belgian (ISO, alt.)" }, { "be(oss_latin9)", "Belgian (Latin-9 only, alt.)" }, { "be(wang)", "Belgian (Wang 724 AZERTY)" }, { "be(oss)", "Belgian (alt.)" }, { "be(nodeadkeys)", "Belgian (no dead keys)" }, { "dz", "Berber (Algeria, Latin)" }, { "dz(ber)", "Berber (Algeria, Tifinagh)" }, { "ma(tifinagh-alt)", "Berber (Morocco, Tifinagh alt.)" }, { "ma(tifinagh-extended-phonetic)", "Berber (Morocco, Tifinagh extended phonetic)" }, { "ma(tifinagh-extended)", "Berber (Morocco, Tifinagh extended)" }, { "ma(tifinagh-phonetic)", "Berber (Morocco, Tifinagh phonetic)" }, { "ma(tifinagh-alt-phonetic)", "Berber (Morocco, Tifinagh phonetic, alt.)" }, { "ma(tifinagh)", "Berber (Morocco, Tifinagh)" }, { "ba", "Bosnian" }, { "ba(us)", "Bosnian (US)" }, { "ba(unicodeus)", "Bosnian (US, with Bosnian digraphs)" }, { "ba(unicode)", "Bosnian (with Bosnian digraphs)" }, { "ba(alternatequotes)", "Bosnian (with guillemets)" }, { "brai", "Braille" }, { "brai(left_hand)", "Braille (one-handed, left)" }, { "brai(left_hand_invert)", "Braille (one-handed, left, inverted thumb)" }, { "brai(right_hand)", "Braille (one-handed, right)" }, { "brai(right_hand_invert)", "Braille (one-handed, right, inverted thumb)" }, { "fr(bre)", "Breton (France)" }, { "bg", "Bulgarian" }, { "bg(bekl)", "Bulgarian (enhanced)" }, { "bg(bas_phonetic)", "Bulgarian (new phonetic)" }, { "bg(phonetic)", "Bulgarian (traditional phonetic)" }, { "mm", "Burmese" }, { "mm(zawgyi)", "Burmese (Zawgyi)" }, { "cm(azerty)", "Cameroon (AZERTY, intl.)" }, { "cm(dvorak)", "Cameroon (Dvorak, intl.)" }, { "cm(qwerty)", "Cameroon Multilingual (QWERTY, intl.)" }, { "ca(multix)", "Canadian (CSA)" }, { "es(cat)", "Catalan (Spain, with middle-dot L)" }, { "us(chr)", "Cherokee" }, { "cn", "Chinese" }, { "ru(cv)", "Chuvash" }, { "ru(cv_latin)", "Chuvash (Latin)" }, { "ie(CloGaelach)", "CloGaelach" }, { "ua(crh_alt)", "Crimean Tatar (Turkish Alt-Q)" }, { "ua(crh_f)", "Crimean Tatar (Turkish F)" }, { "ua(crh)", "Crimean Tatar (Turkish Q)" }, { "hr", "Croatian" }, { "hr(us)", "Croatian (US)" }, { "hr(unicodeus)", "Croatian (US, with Croatian digraphs)" }, { "hr(unicode)", "Croatian (with Croatian digraphs)" }, { "hr(alternatequotes)", "Croatian (with guillemets)" }, { "cz", "Czech" }, { "cz(qwerty)", "Czech (QWERTY)" }, { "cz(qwerty-mac)", "Czech (QWERTY, Macintosh)" }, { "cz(winkeys-qwerty)", "Czech (QWERTY, Windows)" }, { "cz(qwerty_bksl)", "Czech (QWERTY, extra backslash)" }, { "cz(winkeys)", "Czech (QWERTZ, Windows)" }, { "cz(ucw)", "Czech (UCW, only accented letters)" }, { "cz(dvorak-ucw)", "Czech (US, Dvorak, UCW support)" }, { "cz(bksl)", "Czech (extra backslash)" }, { "dk", "Danish" }, { "dk(dvorak)", "Danish (Dvorak)" }, { "dk(mac)", "Danish (Macintosh)" }, { "dk(mac_nodeadkeys)", "Danish (Macintosh, no dead keys)" }, { "dk(winkeys)", "Danish (Windows)" }, { "dk(nodeadkeys)", "Danish (no dead keys)" }, { "af", "Dari" }, { "af(fa-olpc)", "Dari (Afghanistan, OLPC)" }, { "mv", "Dhivehi" }, { "nl", "Dutch" }, { "nl(mac)", "Dutch (Macintosh)" }, { "nl(us)", "Dutch (US)" }, { "nl(std)", "Dutch (standard)" }, { "bt", "Dzongkha" }, { "au", "English (Australia)" }, { "cm", "English (Cameroon)" }, { "ca(eng)", "English (Canada)" }, { "us(colemak)", "English (Colemak)" }, { "us(colemak_dh_iso)", "English (Colemak-DH ISO)" }, { "us(colemak_dh_ortho)", "English (Colemak-DH Ortholinear)" }, { "us(colemak_dh_wide_iso)", "English (Colemak-DH Wide ISO)" }, { "us(colemak_dh_wide)", "English (Colemak-DH Wide)" }, { "us(colemak_dh)", "English (Colemak-DH)" }, { "us(dvorak)", "English (Dvorak)" }, { "us(dvorak-mac)", "English (Dvorak, Macintosh, ANSI)" }, { "us(dvorak-mac-iso)", "English (Dvorak, Macintosh, ISO)" }, { "us(dvorak-alt-intl)", "English (Dvorak, alt. intl.)" }, { "us(dvorak-intl)", "English (Dvorak, intl., with dead keys)" }, { "us(dvorak-l)", "English (Dvorak, one-handed, left)" }, { "us(dvorak-r)", "English (Dvorak, one-handed, right)" }, { "gh", "English (Ghana)" }, { "gh(gillbt)", "English (Ghana, GILLBT)" }, { "gh(generic)", "English (Ghana, multilingual)" }, { "in(eng)", "English (India, with rupee)" }, { "us(mac)", "English (Macintosh, ABC, ANSI)" }, { "us(mac-iso)", "English (Macintosh, ABC, ISO)" }, { "ml(us-mac)", "English (Mali, US, Macintosh)" }, { "ml(us-intl)", "English (Mali, US, intl.)" }, { "nz", "English (New Zealand)" }, { "ng", "English (Nigeria)" }, { "us(norman)", "English (Norman)" }, { "za", "English (South Africa)" }, { "gb", "English (UK)" }, { "gb(colemak)", "English (UK, Colemak)" }, { "gb(colemak_dh)", "English (UK, Colemak-DH)" }, { "gb(dvorak)", "English (UK, Dvorak)" }, { "gb(dvorakukp)", "English (UK, Dvorak, with UK punctuation)" }, { "gb(mac)", "English (UK, Macintosh)" }, { "gb(mac_intl)", "English (UK, Macintosh, intl.)" }, { "gb(extd)", "English (UK, extended, Windows)" }, { "gb(intl)", "English (UK, intl., with dead keys)" }, { "us", "English (US)" }, { "us(symbolic)", "English (US, Symbolic)" }, { "us(alt-intl)", "English (US, alt. intl.)" }, { "us(euro)", "English (US, euro on 5)" }, { "us(intl)", "English (US, intl., with dead keys)" }, { "us(workman)", "English (Workman)" }, { "us(workman-intl)", "English (Workman, intl., with dead keys)" }, { "us(dvorak-classic)", "English (classic Dvorak)" }, { "us(altgr-intl)", "English (intl., with AltGr dead keys)" }, { "us(dvp)", "English (programmer Dvorak)" }, { "us(olpc2)", "English (the divide/multiply toggle the layout)" }, { "epo", "Esperanto" }, { "br(nativo-epo)", "Esperanto (Brazil, Nativo)" }, { "pt(nativo-epo)", "Esperanto (Portugal, Nativo)" }, { "epo(legacy)", "Esperanto (legacy)" }, { "ee", "Estonian" }, { "ee(dvorak)", "Estonian (Dvorak)" }, { "ee(us)", "Estonian (US)" }, { "ee(nodeadkeys)", "Estonian (no dead keys)" }, { "gh(ewe)", "Ewe" }, { "fo", "Faroese" }, { "fo(nodeadkeys)", "Faroese (no dead keys)" }, { "ph", "Filipino" }, { "ph(capewell-dvorak-bay)", "Filipino (Capewell-Dvorak, Baybayin)" }, { "ph(capewell-dvorak)", "Filipino (Capewell-Dvorak, Latin)" }, { "ph(capewell-qwerf2k6-bay)", "Filipino (Capewell-QWERF 2006, Baybayin)" }, { "ph(capewell-qwerf2k6)", "Filipino (Capewell-QWERF 2006, Latin)" }, { "ph(colemak-bay)", "Filipino (Colemak, Baybayin)" }, { "ph(colemak)", "Filipino (Colemak, Latin)" }, { "ph(dvorak-bay)", "Filipino (Dvorak, Baybayin)" }, { "ph(dvorak)", "Filipino (Dvorak, Latin)" }, { "ph(qwerty-bay)", "Filipino (QWERTY, Baybayin)" }, { "fi", "Finnish" }, { "fi(mac)", "Finnish (Macintosh)" }, { "fi(winkeys)", "Finnish (Windows)" }, { "fi(classic)", "Finnish (classic)" }, { "fi(nodeadkeys)", "Finnish (classic, no dead keys)" }, { "fr", "French" }, { "fr(azerty)", "French (AZERTY)" }, { "fr(afnor)", "French (AZERTY, AFNOR)" }, { "fr(bepo)", "French (BEPO)" }, { "fr(bepo_afnor)", "French (BEPO, AFNOR)" }, { "fr(bepo_latin9)", "French (BEPO, Latin-9 only)" }, { "cm(french)", "French (Cameroon)" }, { "ca", "French (Canada)" }, { "ca(fr-dvorak)", "French (Canada, Dvorak)" }, { "ca(fr-legacy)", "French (Canada, legacy)" }, { "cd", "French (Democratic Republic of the Congo)" }, { "fr(dvorak)", "French (Dvorak)" }, { "fr(ergol)", "French (Ergo‑L)" }, { "fr(ergol_iso)", "French (Ergo‑L, ISO variant)" }, { "fr(mac)", "French (Macintosh)" }, { "ml(fr-oss)", "French (Mali, alt.)" }, { "ma(french)", "French (Morocco)" }, { "ch(fr)", "French (Switzerland)" }, { "ch(fr_mac)", "French (Switzerland, Macintosh)" }, { "ch(fr_nodeadkeys)", "French (Switzerland, no dead keys)" }, { "tg", "French (Togo)" }, { "fr(us)", "French (US)" }, { "fr(oss)", "French (alt.)" }, { "fr(oss_latin9)", "French (alt., Latin-9 only)" }, { "fr(oss_nodeadkeys)", "French (alt., no dead keys)" }, { "fr(latin9)", "French (legacy, alt.)" }, { "fr(latin9_nodeadkeys)", "French (legacy, alt., no dead keys)" }, { "fr(nodeadkeys)", "French (no dead keys)" }, { "it(fur)", "Friulian (Italy)" }, { "gh(fula)", "Fula" }, { "gh(ga)", "Ga" }, { "md(gag)", "Gagauz (Moldova)" }, { "ge", "Georgian" }, { "fr(geo)", "Georgian (France, AZERTY Tskapo)" }, { "it(geo)", "Georgian (Italy)" }, { "ge(mess)", "Georgian (MESS)" }, { "ge(ergonomic)", "Georgian (ergonomic)" }, { "de", "German" }, { "at", "German (Austria)" }, { "at(mac)", "German (Austria, Macintosh)" }, { "at(nodeadkeys)", "German (Austria, no dead keys)" }, { "de(dvorak)", "German (Dvorak)" }, { "de(e1)", "German (E1)" }, { "de(e2)", "German (E2)" }, { "de(mac)", "German (Macintosh)" }, { "de(mac_nodeadkeys)", "German (Macintosh, no dead keys)" }, { "de(neo)", "German (Neo 2)" }, { "de(qwerty)", "German (QWERTY)" }, { "ch", "German (Switzerland)" }, { "ch(de_mac)", "German (Switzerland, Macintosh)" }, { "ch(legacy)", "German (Switzerland, legacy)" }, { "ch(de_nodeadkeys)", "German (Switzerland, no dead keys)" }, { "de(T3)", "German (T3)" }, { "de(us)", "German (US)" }, { "de(deadacute)", "German (dead acute)" }, { "de(deadgraveacute)", "German (dead grave acute)" }, { "de(deadtilde)", "German (dead tilde)" }, { "de(nodeadkeys)", "German (no dead keys)" }, { "gr", "Greek" }, { "gr(nodeadkeys)", "Greek (no dead keys)" }, { "gr(polytonic)", "Greek (polytonic)" }, { "gr(simple)", "Greek (simple)" }, { "in(guj)", "Gujarati" }, { "in(guj-kagapa)", "Gujarati (KaGaPa, phonetic)" }, { "cn(altgr-pinyin)", "Hanyu Pinyin Letters (with AltGr dead keys)" }, { "gh(hausa)", "Hausa (Ghana)" }, { "ng(hausa)", "Hausa (Nigeria)" }, { "us(haw)", "Hawaiian" }, { "il", "Hebrew" }, { "il(biblical)", "Hebrew (Biblical, Tiro)" }, { "il(si2)", "Hebrew (SI-1452-2)" }, { "il(lyx)", "Hebrew (lyx)" }, { "il(phonetic)", "Hebrew (phonetic)" }, { "in(bolnagri)", "Hindi (Bolnagri)" }, { "in(hin-kagapa)", "Hindi (KaGaPa, phonetic)" }, { "in(hin-wx)", "Hindi (Wx)" }, { "hu", "Hungarian" }, { "hu(qwerty)", "Hungarian (QWERTY)" }, { "hu(101_qwerty_comma_dead)", "Hungarian (QWERTY, 101-key, comma, dead keys)" }, { "hu(101_qwerty_comma_nodead)", "Hungarian (QWERTY, 101-key, comma, no dead keys)" }, { "hu(101_qwerty_dot_dead)", "Hungarian (QWERTY, 101-key, dot, dead keys)" }, { "hu(101_qwerty_dot_nodead)", "Hungarian (QWERTY, 101-key, dot, no dead keys)" }, { "hu(102_qwerty_comma_dead)", "Hungarian (QWERTY, 102-key, comma, dead keys)" }, { "hu(102_qwerty_comma_nodead)", "Hungarian (QWERTY, 102-key, comma, no dead keys)" }, { "hu(102_qwerty_dot_dead)", "Hungarian (QWERTY, 102-key, dot, dead keys)" }, { "hu(102_qwerty_dot_nodead)", "Hungarian (QWERTY, 102-key, dot, no dead keys)" }, { "hu(101_qwertz_comma_dead)", "Hungarian (QWERTZ, 101-key, comma, dead keys)" }, { "hu(101_qwertz_comma_nodead)", "Hungarian (QWERTZ, 101-key, comma, no dead keys)" }, { "hu(101_qwertz_dot_dead)", "Hungarian (QWERTZ, 101-key, dot, dead keys)" }, { "hu(101_qwertz_dot_nodead)", "Hungarian (QWERTZ, 101-key, dot, no dead keys)" }, { "hu(102_qwertz_comma_dead)", "Hungarian (QWERTZ, 102-key, comma, dead keys)" }, { "hu(102_qwertz_comma_nodead)", "Hungarian (QWERTZ, 102-key, comma, no dead keys)" }, { "hu(102_qwertz_dot_dead)", "Hungarian (QWERTZ, 102-key, dot, dead keys)" }, { "hu(102_qwertz_dot_nodead)", "Hungarian (QWERTZ, 102-key, dot, no dead keys)" }, { "hu(nodeadkeys)", "Hungarian (no dead keys)" }, { "hu(standard)", "Hungarian (standard)" }, { "is", "Icelandic" }, { "is(dvorak)", "Icelandic (Dvorak)" }, { "is(mac)", "Icelandic (Macintosh)" }, { "is(mac_legacy)", "Icelandic (Macintosh, legacy)" }, { "ng(igbo)", "Igbo" }, { "in", "Indian" }, { "in(iipa)", "Indic IPA" }, { "id(melayu-phoneticx)", "Indonesian (Arab Melayu, extended phonetic)" }, { "id(melayu-phonetic)", "Indonesian (Arab Melayu, phonetic)" }, { "id(pegon-phonetic)", "Indonesian (Arab Pegon, phonetic)" }, { "id", "Indonesian (Latin)" }, { "ca(ike)", "Inuktitut" }, { "ie", "Irish" }, { "ie(UnicodeExpert)", "Irish (UnicodeExpert)" }, { "it", "Italian" }, { "it(ibm)", "Italian (IBM 142)" }, { "it(mac)", "Italian (Macintosh)" }, { "it(us)", "Italian (US)" }, { "it(winkeys)", "Italian (Windows)" }, { "it(nodeadkeys)", "Italian (no dead keys)" }, { "jp", "Japanese" }, { "jp(dvorak)", "Japanese (Dvorak)" }, { "jp(kana)", "Japanese (Kana)" }, { "jp(mac)", "Japanese (Macintosh)" }, { "jp(OADG109A)", "Japanese (OADG 109A)" }, { "id(javanese)", "Javanese" }, { "dz(azerty-deadkeys)", "Kabyle (AZERTY, with dead keys)" }, { "dz(qwerty-gb-deadkeys)", "Kabyle (QWERTY, UK, with dead keys)" }, { "dz(qwerty-us-deadkeys)", "Kabyle (QWERTY, US, with dead keys)" }, { "ru(xal)", "Kalmyk" }, { "in(kan)", "Kannada" }, { "in(kan-kagapa)", "Kannada (KaGaPa, phonetic)" }, { "pl(csb)", "Kashubian" }, { "kz", "Kazakh" }, { "kz(latin)", "Kazakh (Latin)" }, { "kz(ext)", "Kazakh (extended)" }, { "kz(kazrus)", "Kazakh (with Russian)" }, { "kh", "Khmer (Cambodia)" }, { "ke(kik)", "Kikuyu" }, { "ru(kom)", "Komi" }, { "kr", "Korean" }, { "kr(kr104)", "Korean (101/104-key compatible)" }, { "ir(ku_ara)", "Kurdish (Iran, Arabic-Latin)" }, { "ir(ku_f)", "Kurdish (Iran, F)" }, { "ir(ku_alt)", "Kurdish (Iran, Latin Alt-Q)" }, { "ir(ku)", "Kurdish (Iran, Latin Q)" }, { "iq(ku_ara)", "Kurdish (Iraq, Arabic-Latin)" }, { "iq(ku_f)", "Kurdish (Iraq, F)" }, { "iq(ku_alt)", "Kurdish (Iraq, Latin Alt-Q)" }, { "iq(ku)", "Kurdish (Iraq, Latin Q)" }, { "sy(ku_f)", "Kurdish (Syria, F)" }, { "sy(ku_alt)", "Kurdish (Syria, Latin Alt-Q)" }, { "sy(ku)", "Kurdish (Syria, Latin Q)" }, { "tr(ku_f)", "Kurdish (Turkey, F)" }, { "tr(ku_alt)", "Kurdish (Turkey, Latin Alt-Q)" }, { "tr(ku)", "Kurdish (Turkey, Latin Q)" }, { "kg", "Kyrgyz" }, { "kg(phonetic)", "Kyrgyz (phonetic)" }, { "la", "Lao" }, { "la(stea)", "Lao (STEA)" }, { "lv", "Latvian" }, { "lv(fkey)", "Latvian (F)" }, { "lv(modern-cyr)", "Latvian (Modern Cyrillic)" }, { "lv(modern)", "Latvian (Modern Latin)" }, { "lv(adapted)", "Latvian (adapted)" }, { "lv(apostrophe)", "Latvian (apostrophe)" }, { "lv(ergonomic)", "Latvian (ergonomic, ŪGJRMV)" }, { "lv(tilde)", "Latvian (tilde)" }, { "lt", "Lithuanian" }, { "lt(ibm)", "Lithuanian (IBM)" }, { "lt(lekp)", "Lithuanian (LEKP)" }, { "lt(lekpa)", "Lithuanian (LEKPa)" }, { "lt(ratise)", "Lithuanian (Ratise)" }, { "lt(us)", "Lithuanian (US)" }, { "lt(std)", "Lithuanian (standard)" }, { "de(dsb)", "Lower Sorbian" }, { "de(dsb_qwertz)", "Lower Sorbian (QWERTZ)" }, { "mk", "Macedonian" }, { "mk(nodeadkeys)", "Macedonian (no dead keys)" }, { "my", "Malay (Jawi, Arabic Keyboard)" }, { "my(phonetic)", "Malay (Jawi, phonetic)" }, { "in(mal)", "Malayalam" }, { "in(mal_lalitha)", "Malayalam (Lalitha)" }, { "in(mal_poorna)", "Malayalam (Poorna, extended InScript)" }, { "in(mal_enhanced)", "Malayalam (enhanced InScript, with rupee)" }, { "mt", "Maltese" }, { "mt(alt-gb)", "Maltese (UK, with AltGr overrides)" }, { "mt(us)", "Maltese (US)" }, { "mt(alt-us)", "Maltese (US, with AltGr overrides)" }, { "in(mni)", "Manipuri (Meitei)" }, { "nz(mao)", "Maori" }, { "in(mar-kagapa)", "Marathi (KaGaPa, phonetic)" }, { "in(marathi)", "Marathi (enhanced InScript)" }, { "ru(chm)", "Mari" }, { "cm(mmuock)", "Mmuock" }, { "md", "Moldavian" }, { "mm(mnw)", "Mon" }, { "mm(mnw-a1)", "Mon (A1)" }, { "mn", "Mongolian" }, { "cn(mon_trad)", "Mongolian (Bichig)" }, { "cn(mon_trad_galik)", "Mongolian (Galik)" }, { "cn(mon_manchu_galik)", "Mongolian (Manchu Galik)" }, { "cn(mon_trad_manchu)", "Mongolian (Manchu)" }, { "cn(mon_todo_galik)", "Mongolian (Todo Galik)" }, { "cn(mon_trad_todo)", "Mongolian (Todo)" }, { "cn(mon_trad_xibe)", "Mongolian (Xibe)" }, { "me", "Montenegrin" }, { "me(cyrillic)", "Montenegrin (Cyrillic)" }, { "me(cyrillicyz)", "Montenegrin (Cyrillic, ZE and ZHE swapped)" }, { "me(cyrillicalternatequotes)", "Montenegrin (Cyrillic, with guillemets)" }, { "me(latinyz)", "Montenegrin (Latin, QWERTY)" }, { "me(latinunicode)", "Montenegrin (Latin, Unicode)" }, { "me(latinunicodeyz)", "Montenegrin (Latin, Unicode, QWERTY)" }, { "me(latinalternatequotes)", "Montenegrin (Latin, with guillemets)" }, { "gn", "N'Ko (AZERTY)" }, { "np", "Nepali" }, { "fi(smi)", "Northern Saami (Finland)" }, { "no(smi)", "Northern Saami (Norway)" }, { "no(smi_nodeadkeys)", "Northern Saami (Norway, no dead keys)" }, { "se(smi)", "Northern Saami (Sweden)" }, { "no", "Norwegian" }, { "no(colemak)", "Norwegian (Colemak)" }, { "no(colemak_dh_wide)", "Norwegian (Colemak-DH Wide)" }, { "no(colemak_dh)", "Norwegian (Colemak-DH)" }, { "no(dvorak)", "Norwegian (Dvorak)" }, { "no(mac)", "Norwegian (Macintosh)" }, { "no(mac_nodeadkeys)", "Norwegian (Macintosh, no dead keys)" }, { "no(winkeys)", "Norwegian (Windows)" }, { "no(nodeadkeys)", "Norwegian (no dead keys)" }, { "fr(oci)", "Occitan" }, { "ie(ogam)", "Ogham" }, { "ie(ogam_is434)", "Ogham (IS434)" }, { "in(ori)", "Oriya" }, { "in(ori-bolnagri)", "Oriya (Bolnagri)" }, { "in(ori-wx)", "Oriya (Wx)" }, { "ge(os)", "Ossetian (Georgia)" }, { "ru(os_winkeys)", "Ossetian (Windows)" }, { "ru(os_legacy)", "Ossetian (legacy)" }, { "rs(rue)", "Pannonian Rusyn" }, { "af(ps)", "Pashto" }, { "af(ps-olpc)", "Pashto (Afghanistan, OLPC)" }, { "ir", "Persian" }, { "ir(winkeys)", "Persian (Windows)" }, { "ir(pes_keypad)", "Persian (with Persian keypad)" }, { "pl", "Polish" }, { "gb(pl)", "Polish (British keyboard)" }, { "pl(dvorak)", "Polish (Dvorak)" }, { "pl(dvorak_altquotes)", "Polish (Dvorak, with Polish quotes on key 1)" }, { "pl(dvorak_quotes)", "Polish (Dvorak, with Polish quotes on quotemark key)" }, { "pl(qwertz)", "Polish (QWERTZ)" }, { "pl(legacy)", "Polish (legacy)" }, { "pl(dvp)", "Polish (programmer Dvorak)" }, { "pt", "Portuguese" }, { "br", "Portuguese (Brazil)" }, { "br(dvorak)", "Portuguese (Brazil, Dvorak)" }, { "br(thinkpad)", "Portuguese (Brazil, IBM/Lenovo ThinkPad)" }, { "br(nativo-us)", "Portuguese (Brazil, Nativo for US keyboards)" }, { "br(nativo)", "Portuguese (Brazil, Nativo)" }, { "br(nodeadkeys)", "Portuguese (Brazil, no dead keys)" }, { "pt(mac)", "Portuguese (Macintosh)" }, { "pt(mac_nodeadkeys)", "Portuguese (Macintosh, no dead keys)" }, { "pt(nativo-us)", "Portuguese (Nativo for US keyboards)" }, { "pt(nativo)", "Portuguese (Nativo)" }, { "pt(nodeadkeys)", "Portuguese (no dead keys)" }, { "in(jhelum)", "Punjabi (Gurmukhi Jhelum)" }, { "in(guru)", "Punjabi (Gurmukhi)" }, { "ro", "Romanian" }, { "de(ro)", "Romanian (Germany)" }, { "de(ro_nodeadkeys)", "Romanian (Germany, no dead keys)" }, { "ro(winkeys)", "Romanian (Windows)" }, { "ro(std)", "Romanian (standard)" }, { "ru", "Russian" }, { "by(ru)", "Russian (Belarus)" }, { "br(rus)", "Russian (Brazil, phonetic)" }, { "cz(rus)", "Russian (Czechia, phonetic)" }, { "ru(dos)", "Russian (DOS)" }, { "ge(ru)", "Russian (Georgia)" }, { "de(ru)", "Russian (Germany, phonetic)" }, { "kz(ruskaz)", "Russian (Kazakhstan, with Kazakh)" }, { "ru(mac)", "Russian (Macintosh)" }, { "pl(ru_phonetic_dvorak)", "Russian (Poland, phonetic Dvorak)" }, { "se(rus)", "Russian (Sweden, phonetic)" }, { "us(rus)", "Russian (US, phonetic)" }, { "ru(ruchey_en)", "Russian (engineering, EN)" }, { "ru(ruchey_ru)", "Russian (engineering, RU)" }, { "ru(legacy)", "Russian (legacy)" }, { "ru(phonetic)", "Russian (phonetic)" }, { "ru(phonetic_azerty)", "Russian (phonetic, AZERTY)" }, { "ru(phonetic_dvorak)", "Russian (phonetic, Dvorak)" }, { "ru(phonetic_winkeys)", "Russian (phonetic, Windows)" }, { "ru(phonetic_YAZHERTY)", "Russian (phonetic, YAZHERTY)" }, { "ru(typewriter)", "Russian (typewriter)" }, { "ru(typewriter-legacy)", "Russian (typewriter, legacy)" }, { "tw(saisiyat)", "Saisiyat (Taiwan)" }, { "lt(sgs)", "Samogitian" }, { "in(san-kagapa)", "Sanskrit (KaGaPa, phonetic)" }, { "in(sat)", "Santali (Ol Chiki)" }, { "gb(gla)", "Scottish Gaelic" }, { "rs", "Serbian" }, { "rs(yz)", "Serbian (Cyrillic, ZE and ZHE swapped)" }, { "rs(alternatequotes)", "Serbian (Cyrillic, with guillemets)" }, { "rs(latin)", "Serbian (Latin)" }, { "rs(latinyz)", "Serbian (Latin, QWERTY)" }, { "rs(latinunicode)", "Serbian (Latin, Unicode)" }, { "rs(latinunicodeyz)", "Serbian (Latin, Unicode, QWERTY)" }, { "rs(latinalternatequotes)", "Serbian (Latin, with guillemets)" }, { "ru(srp)", "Serbian (Russia)" }, { "us(hbs)", "Serbo-Croatian (US)" }, { "mm(shn)", "Shan" }, { "mm(zgt)", "Shan (Zawgyi)" }, { "it(scn)", "Sicilian" }, { "pl(szl)", "Silesian" }, { "pk(snd)", "Sindhi" }, { "lk(us)", "Sinhala (US)" }, { "lk", "Sinhala (phonetic)" }, { "sk", "Slovak" }, { "sk(qwerty)", "Slovak (QWERTY)" }, { "sk(qwerty_bksl)", "Slovak (QWERTY, extra backslash)" }, { "sk(bksl)", "Slovak (extra backslash)" }, { "si", "Slovenian" }, { "si(us)", "Slovenian (US)" }, { "si(alternatequotes)", "Slovenian (with guillemets)" }, { "es", "Spanish" }, { "es(dvorak)", "Spanish (Dvorak)" }, { "latam", "Spanish (Latin American)" }, { "latam(colemak)", "Spanish (Latin American, Colemak)" }, { "latam(dvorak)", "Spanish (Latin American, Dvorak)" }, { "latam(deadtilde)", "Spanish (Latin American, dead tilde)" }, { "latam(nodeadkeys)", "Spanish (Latin American, no dead keys)" }, { "es(winkeys)", "Spanish (Windows)" }, { "es(deadtilde)", "Spanish (dead tilde)" }, { "es(nodeadkeys)", "Spanish (no dead keys)" }, { "ke", "Swahili (Kenya)" }, { "tz", "Swahili (Tanzania)" }, { "se", "Swedish" }, { "se(colemak)", "Swedish (Colemak)" }, { "se(dvorak)", "Swedish (Dvorak)" }, { "se(us_dvorak)", "Swedish (Dvorak, intl.)" }, { "se(mac)", "Swedish (Macintosh)" }, { "se(svdvorak)", "Swedish (Svdvorak)" }, { "se(us)", "Swedish (US)" }, { "se(nodeadkeys)", "Swedish (no dead keys)" }, { "se(swl)", "Swedish Sign Language" }, { "sy(syc)", "Syriac" }, { "sy(syc_phonetic)", "Syriac (phonetic)" }, { "tw", "Taiwanese" }, { "tw(indigenous)", "Taiwanese (indigenous)" }, { "tj", "Tajik" }, { "tj(legacy)", "Tajik (legacy)" }, { "in(tam)", "Tamil (InScript, with Arabic numerals)" }, { "in(tam_tamilnumbers)", "Tamil (InScript, with Tamil numerals)" }, { "lk(tam_unicode)", "Tamil (Sri Lanka, TamilNet '99)" }, { "lk(tam_TAB)", "Tamil (Sri Lanka, TamilNet '99, TAB encoding)" }, { "in(tamilnet_tamilnumbers)", "Tamil (TamilNet '99 with Tamil numerals)" }, { "in(tamilnet)", "Tamil (TamilNet '99)" }, { "in(tamilnet_TAB)", "Tamil (TamilNet '99, TAB encoding)" }, { "in(tamilnet_TSCII)", "Tamil (TamilNet '99, TSCII encoding)" }, { "ma(rif)", "Tarifit" }, { "ru(tt)", "Tatar" }, { "in(tel)", "Telugu" }, { "in(tel-kagapa)", "Telugu (KaGaPa, phonetic)" }, { "in(tel-sarala)", "Telugu (Sarala)" }, { "th", "Thai" }, { "th(mnc)", "Thai (Manoonchai)" }, { "th(pat)", "Thai (Pattachote)" }, { "th(tis)", "Thai (TIS-820.2538)" }, { "cn(tib)", "Tibetan" }, { "cn(tib_asciinum)", "Tibetan (with ASCII numerals)" }, { "bw", "Tswana" }, { "tr", "Turkish" }, { "tr(alt)", "Turkish (Alt-Q)" }, { "tr(e)", "Turkish (E)" }, { "tr(f)", "Turkish (F)" }, { "de(tr)", "Turkish (Germany)" }, { "tr(intl)", "Turkish (intl., with dead keys)" }, { "tm", "Turkmen" }, { "tm(alt)", "Turkmen (Alt-Q)" }, { "ru(udm)", "Udmurt" }, { "ua", "Ukrainian" }, { "ua(winkeysenhanced)", "Ukrainian (Windows Enhanced)" }, { "ua(winkeys)", "Ukrainian (Windows)" }, { "ua(homophonic)", "Ukrainian (homophonic)" }, { "ua(legacy)", "Ukrainian (legacy)" }, { "ua(macOS)", "Ukrainian (macOS)" }, { "ua(phonetic)", "Ukrainian (phonetic)" }, { "ua(typewriter)", "Ukrainian (typewriter)" }, { "pk(pak_urdu_phonetic)", "Urdu (Pak Urdu Phonetic)" }, { "pk", "Urdu (Pakistan)" }, { "pk(urd-crulp)", "Urdu (Pakistan, CRULP)" }, { "pk(urd-nla)", "Urdu (Pakistan, NLA)" }, { "in(urd-winkeys)", "Urdu (Windows)" }, { "in(urd-phonetic3)", "Urdu (alt. phonetic)" }, { "in(urd-phonetic)", "Urdu (phonetic)" }, { "cn(ug)", "Uyghur" }, { "uz", "Uzbek" }, { "af(uz)", "Uzbek (Afghanistan)" }, { "af(uz-olpc)", "Uzbek (Afghanistan, OLPC)" }, { "uz(latin)", "Uzbek (Latin)" }, { "vn", "Vietnamese" }, { "vn(fr)", "Vietnamese (France)" }, { "vn(us)", "Vietnamese (US)" }, { "sn", "Wolof" }, { "ru(sah)", "Yakut" }, { "ng(yoruba)", "Yoruba" }, }; labwc-tweaks-0.1.0/src/find-themes.cpp000066400000000000000000000060631513773473700176200ustar00rootroot00000000000000#include #include #include #include "find-themes.h" #include "log.h" static bool hasOnlyCursorSubdir(QString path) { QStringList entries = QDir(path).entryList(QDir::Dirs | QDir::NoDotAndDotDot); return entries.contains("cursors") && entries.length() == 1; } static bool hasCursorSubdir(QString path) { QStringList entries = QDir(path).entryList(QDir::Dirs | QDir::NoDotAndDotDot); return entries.contains("cursors"); } QStringList findIconThemes(enum lab_icon_theme_type type) { QStringList paths; // Setup paths including // - $HOME/.icons // - $XDG_DATA_HOME/icons // - $XDG_DATA_DIRS/icons paths.push_back(QString(qgetenv("HOME") + "/.icons")); QStringList standardPaths = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation); for (const QString &path : std::as_const(standardPaths)) { paths.push_back(QString(path + "/icons")); } // Iterate over paths and use any icon-theme which has more than just a // "cursors" subdirectory (because that means it's for cursors only) QStringList themes; themes.push_front(""); themes.push_front("Adwaita"); for (const QString &path : std::as_const(paths)) { QDir dir(path); QStringList entries = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot); for (const QString &entry : std::as_const(entries)) { switch (type) { case LAB_ICON_THEME_TYPE_ICON: if (hasOnlyCursorSubdir(QString(path + "/" + entry))) { continue; } themes.push_back(entry); break; case LAB_ICON_THEME_TYPE_CURSOR: if (hasCursorSubdir(QString(path + "/" + entry))) { themes.push_back(entry); } break; default: break; } } } themes.removeDuplicates(); themes.sort(Qt::CaseInsensitive); return themes; } static bool hasOpenboxOrLabwcSubdir(QString path) { QStringList entries = QDir(path).entryList(QDir::Dirs | QDir::NoDotAndDotDot); return entries.contains("openbox-3") || entries.contains("labwc"); } QStringList findLabwcThemes(void) { QStringList paths; paths.push_back(QString(qgetenv("HOME") + "/.themes")); QStringList standardPaths = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation); for (const QString &path : std::as_const(standardPaths)) { paths.push_back(QString(path + "/themes")); } QStringList themes; themes.push_front("Adwaita"); for (const QString &path : std::as_const(paths)) { QDir dir(path); QStringList entries = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot); for (const QString &entry : std::as_const(entries)) { if (hasOpenboxOrLabwcSubdir(QString(path + "/" + entry))) { themes.push_back(entry); } } } themes.removeDuplicates(); themes.sort(Qt::CaseInsensitive); return themes; } labwc-tweaks-0.1.0/src/find-themes.h000066400000000000000000000004431513773473700172610ustar00rootroot00000000000000#ifndef FIND_THEMES_H #define FIND_THEMES_H enum lab_icon_theme_type { LAB_ICON_THEME_TYPE_NONE = 0, LAB_ICON_THEME_TYPE_ICON, LAB_ICON_THEME_TYPE_CURSOR, }; QStringList findIconThemes(enum lab_icon_theme_type type); QStringList findLabwcThemes(void); #endif // FIND_THEMES_H labwc-tweaks-0.1.0/src/keyboard.cpp000066400000000000000000000270301513773473700172120ustar00rootroot00000000000000#include #include #include #include #include #include #include "keyboard.h" #include "evdev-lst-layouts.h" #include "environment.h" #include "find-themes.h" #include "layoutmodel.h" #include "macros.h" #include "settings.h" #include "./ui_keyboard.h" Keyboard::Keyboard(QWidget *parent) : QWidget(parent), ui(new Ui::pageKeyboard) { ui->setupUi(this); } Keyboard::~Keyboard() { delete ui; } void Keyboard::getGrpToggleOptions(QVector> &combo) { // Generated based on XKEYBOARD-CONFIG(7) // clang-format off combo.append(QSharedPointer(new Pair("", ""))); combo.append(QSharedPointer(new Pair("grp:shift_caps_toggle", tr("Shift+Caps Lock")))); combo.append(QSharedPointer(new Pair("grp:alt_caps_toggle", tr("Alt+Caps Lock")))); combo.append(QSharedPointer(new Pair("grp:shifts_toggle", tr("Both Shifts together")))); combo.append(QSharedPointer(new Pair("grp:alts_toggle", tr("Both Alts together")))); combo.append(QSharedPointer(new Pair("grp:ctrls_toggle", tr("Both Ctrls together")))); combo.append(QSharedPointer(new Pair("grp:switch", tr("Right Alt (while pressed)")))); combo.append(QSharedPointer(new Pair("grp:lswitch", tr("Left Alt (while pressed)")))); combo.append(QSharedPointer(new Pair("grp:lwin_switch", tr("Left Win (while pressed)")))); combo.append(QSharedPointer(new Pair("grp:rwin_switch", tr("Right Win (while pressed)")))); combo.append(QSharedPointer(new Pair("grp:win_switch", tr("Any Win (while pressed)")))); combo.append(QSharedPointer(new Pair("grp:menu_switch", tr("Menu (while pressed), Shift+Menu for Menu")))); combo.append(QSharedPointer(new Pair("grp:caps_switch", tr("Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action")))); combo.append(QSharedPointer(new Pair("grp:rctrl_switch", tr("Right Ctrl (while pressed)")))); combo.append(QSharedPointer(new Pair("grp:toggle", tr("Right Alt")))); combo.append(QSharedPointer(new Pair("grp:lalt_toggle", tr("Left Alt")))); combo.append(QSharedPointer(new Pair("grp:caps_toggle", tr("Caps Lock")))); combo.append(QSharedPointer(new Pair("grp:caps_select", tr("Caps Lock to first layout; Shift+Caps Lock to second layout")))); combo.append(QSharedPointer(new Pair("grp:win_menu_select", tr("Left Win to first layout; Right Win/Menu to second layout")))); combo.append(QSharedPointer(new Pair("grp:ctrl_select", tr("Left Ctrl to first layout; Right Ctrl to second layout")))); combo.append(QSharedPointer(new Pair("grp:alt_altgr_toggle", tr("Both Alts together; AltGr alone chooses third level")))); combo.append(QSharedPointer(new Pair("grp:ctrl_shift_toggle", tr("Ctrl+Shift")))); combo.append(QSharedPointer(new Pair("grp:lctrl_lshift_toggle", tr("Left Ctrl+Left Shift")))); combo.append(QSharedPointer(new Pair("grp:rctrl_rshift_toggle", tr("Right Ctrl+Right Shift")))); combo.append(QSharedPointer(new Pair("grp:ctrl_shift_toggle_bidir", tr("Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout")))); combo.append(QSharedPointer(new Pair("grp:ctrl_alt_toggle", tr("Alt+Ctrl")))); combo.append(QSharedPointer(new Pair("grp:lctrl_lalt_toggle", tr("Left Alt+Left Ctrl")))); combo.append(QSharedPointer(new Pair("grp:rctrl_ralt_toggle", tr("Right Alt+Right Ctrl")))); combo.append(QSharedPointer(new Pair("grp:ctrl_alt_toggle_bidir", tr("Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout")))); combo.append(QSharedPointer(new Pair("grp:alt_shift_toggle", tr("Alt+Shift")))); combo.append(QSharedPointer(new Pair("grp:lalt_lshift_toggle", tr("Left Alt+Left Shift")))); combo.append(QSharedPointer(new Pair("grp:ralt_rshift_toggle", tr("Right Alt+Right Shift")))); combo.append(QSharedPointer(new Pair("grp:alt_shift_toggle_bidir", tr("Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout")))); combo.append(QSharedPointer(new Pair("grp:menu_toggle", tr("Menu")))); combo.append(QSharedPointer(new Pair("grp:lwin_toggle", tr("Left Win")))); combo.append(QSharedPointer(new Pair("grp:alt_space_toggle", tr("Alt+Space")))); combo.append(QSharedPointer(new Pair("grp:win_space_toggle", tr("Win+Space")))); combo.append(QSharedPointer(new Pair("grp:ctrl_space_toggle", tr("Ctrl+Space")))); combo.append(QSharedPointer(new Pair("grp:rwin_toggle", tr("Right Win")))); combo.append(QSharedPointer(new Pair("grp:lshift_toggle", tr("Left Shift")))); combo.append(QSharedPointer(new Pair("grp:rshift_toggle", tr("Right Shift")))); combo.append(QSharedPointer(new Pair("grp:lctrl_toggle", tr("Left Ctrl")))); combo.append(QSharedPointer(new Pair("grp:rctrl_toggle", tr("Right Ctrl")))); combo.append(QSharedPointer(new Pair("grp:sclk_toggle", tr("Scroll Lock")))); combo.append(QSharedPointer(new Pair("grp:lctrl_lwin_rctrl_menu", tr("Ctrl+Left Win to first layout; Ctrl+Menu to second layout")))); combo.append(QSharedPointer(new Pair("grp:lctrl_lwin_toggle", tr("Left Ctrl+Left Win")))); // clang-format on } void Keyboard::activate() { /* * Keyboard Layout * * We fallback on the environment variable if nothing has been set in the environment file */ QString xkb_default_layout = qgetenv("XKB_DEFAULT_LAYOUT"); settingsAddEnvStr("XKB_DEFAULT_LAYOUT", xkb_default_layout.isEmpty() ? "" : xkb_default_layout); m_model = new LayoutModel(this); ui->layoutView->setModel(m_model); connect(ui->layoutAdd, &QPushButton::pressed, this, &Keyboard::addSelectedLayout); connect(ui->layoutRemove, &QPushButton::pressed, this, &Keyboard::deleteSelectedLayout); ui->layoutCombo->addItem(tr("Select layout to add...")); for (auto layout : evdev_lst_layouts) { ui->layoutCombo->addItem(layout.description); } /* Repeat Rate */ settingsAddXmlInt("/labwc_config/keyboard/repeatRate", 25); ui->repeatRate->setValue(getInt("/labwc_config/keyboard/repeatRate")); ui->repeatRate->setToolTip(tr("Rate at which keypresses are repeated per second")); /* Repeat Delay */ settingsAddXmlInt("/labwc_config/keyboard/repeatDelay", 600); ui->repeatDelay->setValue(getInt("/labwc_config/keyboard/repeatDelay")); ui->repeatDelay->setToolTip(tr("Delay before keypresses are repeated")); /* Numlock */ settingsAddXmlBoo("/labwc_config/keyboard/numlock", false); ui->numlock->setChecked(getBool("/labwc_config/keyboard/numlock")); ui->numlock->setToolTip(tr("Enable Num Lock when recognizing a new keyboard")); // Keyboard Layout Group Switching settingsAddEnvStr("XKB_DEFAULT_OPTIONS", ""); ui->layoutGrpSwitcher->setToolTip(tr("Key combination to switch keyboard layout")); QVector> combo; getGrpToggleOptions(combo); QString current = getStr("XKB_DEFAULT_OPTIONS"); ui->layoutGrpSwitcher->setText(current); // QComboBoxes with longs strings are ellided with some themes (like Kvantum and Breeze) when // the drop down menu is opened. The elliding can be avoided, but then the text is just cut off // instead. We could of course just set the QComboBox width to the widest item, but that screws // up the layout quite badly. // // So, instead we use a QPushButton to open a QDialog with a QTableView. For this with need to // build a model with two columns: QStandardItemModel *model = new QStandardItemModel(this); model->setColumnCount(2); model->setHorizontalHeaderLabels({ tr("Key"), tr("Description") }); model->setHeaderData(0, Qt::Horizontal, Qt::AlignLeft, Qt::TextAlignmentRole); model->setHeaderData(1, Qt::Horizontal, Qt::AlignLeft, Qt::TextAlignmentRole); auto addItem = [&](const QString &key, const QString &text) { QStandardItem *keyItem = new QStandardItem(key); QStandardItem *textItem = new QStandardItem(text); keyItem->setData(key, Qt::UserRole); model->appendRow({ keyItem, textItem }); }; foreach (auto policy, combo) { addItem(policy.get()->value(), policy.get()->description()); } // The lambda parameters must match the signal: clicked(bool) vs [](bool) { ... } connect(ui->layoutGrpSwitcher, &QPushButton::clicked, this, [this, model, current](bool) { QDialog dialog(this); dialog.setWindowTitle(tr("Select key combination")); QVBoxLayout layout(&dialog); QTableView view; view.setModel(model); view.setSelectionBehavior(QAbstractItemView::SelectRows); view.setSelectionMode(QAbstractItemView::SingleSelection); view.setEditTriggers(QAbstractItemView::NoEditTriggers); view.setTextElideMode(Qt::ElideNone); view.resizeColumnsToContents(); view.horizontalHeader()->setStretchLastSection(true); view.verticalHeader()->hide(); view.horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch); // Restore selection when opening dialog for (int row = 0; row < model->rowCount(); ++row) { if (model->item(row, 0)->text() == current) { QModelIndex idx = model->index(row, 0); view.setCurrentIndex(idx); view.scrollTo(idx, QAbstractItemView::PositionAtCenter); } } layout.addWidget(&view); QDialogButtonBox buttons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); layout.addWidget(&buttons); // Set sensible dialog size dialog.setMinimumWidth(500); dialog.setMinimumHeight(400); dialog.adjustSize(); connect(&buttons, &QDialogButtonBox::accepted, &dialog, &QDialog::accept); connect(&buttons, &QDialogButtonBox::rejected, &dialog, &QDialog::reject); connect(&view, &QTableView::doubleClicked, &dialog, &QDialog::accept); if (dialog.exec() == QDialog::Accepted) { QModelIndex idx = view.currentIndex(); if (idx.isValid()) { const int row = idx.row(); const QString key = model->item(row, 0)->text(); ui->layoutGrpSwitcher->setText(key); } } }); } void Keyboard::addSelectedLayout(void) { QString description = ui->layoutCombo->currentText(); for (auto layout : evdev_lst_layouts) { if (description == layout.description) { m_model->addLayout(layout.code, layout.description); } } } void Keyboard::deleteSelectedLayout(void) { m_model->deleteLayout(ui->layoutView->currentIndex().row()); } void Keyboard::onApply() { /* * We include variants in XKB_DEFAULT_LAYOUT, for example * "latam(deadtilde),ru(phonetic),gr", so XKB_DEFAULT_VARIANT is set to * empty. */ QString layout = m_model->getXkbDefaultLayout(); if (!layout.isEmpty()) { setStr("XKB_DEFAULT_LAYOUT", layout); environmentSet("XKB_DEFAULT_VARIANT", ""); } setInt("/labwc_config/keyboard/repeatRate", ui->repeatRate->value()); setInt("/labwc_config/keyboard/repeatDelay", ui->repeatDelay->value()); setBool("/labwc_config/keyboard/numlock", ui->numlock->isChecked()); setStr("XKB_DEFAULT_OPTIONS", ui->layoutGrpSwitcher->text()); } labwc-tweaks-0.1.0/src/keyboard.h000066400000000000000000000010531513773473700166540ustar00rootroot00000000000000#ifndef KEYBOARD_H #define KEYBOARD_H #include #include "layoutmodel.h" QT_BEGIN_NAMESPACE namespace Ui { class pageKeyboard; } QT_END_NAMESPACE class Keyboard : public QWidget { Q_OBJECT public: Keyboard(QWidget *parent = nullptr); ~Keyboard(); void activate(); void onApply(); private slots: void addSelectedLayout(void); void deleteSelectedLayout(void); private: Ui::pageKeyboard *ui; LayoutModel *m_model; void getGrpToggleOptions(QVector> &combo); }; #endif // KEYBOARD_H labwc-tweaks-0.1.0/src/keyboard.ui000066400000000000000000000121351513773473700170450ustar00rootroot00000000000000 pageKeyboard QFrame::Shape::NoFrame true 9 General 16 8 Repeat rate Qt::Orientation::Horizontal Repeat delay true ms 999 Num lock Enable on startup Keyboard Layout 16 8 Qt::Orientation::Horizontal 3 Add Remove Layout switch Qt::Orientation::Vertical labwc-tweaks-0.1.0/src/layoutmodel.cpp000066400000000000000000000052351513773473700177530ustar00rootroot00000000000000#include #include "environment.h" #include "evdev-lst-layouts.h" #include "layoutmodel.h" #include "log.h" #include "settings.h" LayoutModel::LayoutModel(QObject *parent) : QAbstractListModel(parent) { QString xkb_default_layout = getStr("XKB_DEFAULT_LAYOUT"); QStringList layoutElements = xkb_default_layout.split(','); // We don't advise using XKB_DEFAULT_VARIANT, but handle it just in case by adding it to the // respective layouts, for example like "latam(deadtilde)" QString xkb_default_variant = environmentGet("XKB_DEFAULT_VARIANT"); QStringList variantElements = xkb_default_variant.split(',', Qt::KeepEmptyParts); int i = 0; foreach (QString element, variantElements) { if (layoutElements.size() <= i) { break; } // Let's not add another (variant) if one is already specified. if (layoutElements[i].contains("(")) { continue; } if (!element.isEmpty()) { layoutElements[i] += "(" + element + ")"; } ++i; } foreach (QString element, layoutElements) { for (auto layout : evdev_lst_layouts) { if (element == layout.code) { addLayout(layout.code, layout.description); } } } } LayoutModel::~LayoutModel() { } QString LayoutModel::getXkbDefaultLayout() { QString ret; QVectorIterator> iter(m_layouts); while (iter.hasNext()) { ret += iter.next().get()->value(); if (iter.hasNext()) { ret += ","; } } return ret; } int LayoutModel::rowCount(const QModelIndex &parent) const { return m_layouts.size(); } QVariant LayoutModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) { return {}; } const int row = index.row(); switch (role) { case Qt::DisplayRole: return m_layouts.at(row)->description() + " [" + m_layouts.at(row)->value() + "]"; } return {}; } void LayoutModel::update(void) { QModelIndex topLeft = createIndex(0, 0); emit dataChanged(topLeft, topLeft, { Qt::DisplayRole }); } void LayoutModel::addLayout(const QString &code, const QString &desc) { QVectorIterator> iter(m_layouts); while (iter.hasNext()) { if (iter.next().get()->value() == code) { warn("cannot add the same layout twice"); return; } } m_layouts.append(QSharedPointer(new Pair(code, desc))); update(); } void LayoutModel::deleteLayout(int index) { if (index < 0 || index >= m_layouts.size()) { return; } m_layouts.remove(index); update(); } labwc-tweaks-0.1.0/src/layoutmodel.h000066400000000000000000000011201513773473700174050ustar00rootroot00000000000000#pragma once #include #include #include "pair.h" class LayoutModel : public QAbstractListModel { Q_OBJECT public: LayoutModel(QObject *parent = nullptr); ~LayoutModel(); int rowCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; void addLayout(const QString &code, const QString &desc); void deleteLayout(int index); QString getXkbDefaultLayout(); private: void update(void); QVector> m_layouts; }; labwc-tweaks-0.1.0/src/log.h000066400000000000000000000047161513773473700156460ustar00rootroot00000000000000// SPDX-License-Identifier: GPL-2.0-only #pragma once #include #include enum LogLevel { FATAL, ERROR, WARN, INFO, }; constexpr const char *log_level_string(LogLevel level) { switch (level) { case LogLevel::FATAL: return "fatal"; case LogLevel::ERROR: return "error"; case LogLevel::WARN: return "warn"; case LogLevel::INFO: return "info"; default: return "unknown"; } } template static inline void _log(LogLevel level, std::format_string fmt, Args &&...args) { std::string msg = std::vformat(fmt.get(), std::make_format_args(args...)); switch (level) { case LogLevel::FATAL: case LogLevel::ERROR: msg = std::string("\033[1;31m") + log_level_string(level) + ": " + msg + "\033[0m"; break; case LogLevel::WARN: msg = std::string("\033[1;33m") + log_level_string(level) + ": " + msg + "\033[0m"; break; case LogLevel::INFO: msg = std::string("\033[1;32m") + log_level_string(level) + ": " + msg + "\033[0m"; break; default: break; } std::println(stderr, "{}", msg); } #define die(fmt, ...) \ { \ _log(LogLevel::FATAL, "[{}:{}] {}", __FILE__, __LINE__, std::format(fmt, ##__VA_ARGS__)); \ exit(EXIT_FAILURE); \ } #define err(fmt, ...) \ { \ _log(LogLevel::ERROR, "[{}:{}] {}", __FILE__, __LINE__, std::format(fmt, ##__VA_ARGS__)); \ } #define warn(fmt, ...) \ { \ _log(LogLevel::WARN, "[{}:{}] {}", __FILE__, __LINE__, std::format(fmt, ##__VA_ARGS__)); \ } #define info(fmt, ...) \ { \ _log(LogLevel::INFO, "[{}:{}] {}", __FILE__, __LINE__, std::format(fmt, ##__VA_ARGS__)); \ } labwc-tweaks-0.1.0/src/macros.h000066400000000000000000000006631513773473700163460ustar00rootroot00000000000000#ifndef MACROS_H #define MACROS_H #include #define LAB_INVALID SHRT_MAX #define TEXT(widget) widget->currentText().toLatin1().data() /* * Typically used when a widget like a QComboBox contains translated text * which obviously would not be very good to feed to rc.xml and we therefore * need the QVariant userdata instead. */ #define DATA(widget) widget->currentData().toString().toLatin1().data() #endif // MACROS_H labwc-tweaks-0.1.0/src/main.cpp000066400000000000000000000075011513773473700163370ustar00rootroot00000000000000/*~ * Welcome, dear reader. This is the main file of labwc-tweaks, and as such, a good starting point * for reading the code. Comments beginning with a tilde (~) are part of a thread running through * the source with the aim of shortening the route to familiarity. They are meant to be read in a * certain order. */ #include #include #include #include #include #include "environment.h" #include "log.h" #include "maindialog.h" #include "settings.h" #include "xml.h" static void initLocale(QTranslator *qtTranslator, QTranslator *translator) { QApplication *app = qApp; #if PROJECT_TRANSLATION_TEST_ENABLED QLocale locale(QLocale(PROJECT_TRANSLATION_TEST_LANGUAGE)); QLocale::setDefault(locale); #else QLocale locale = QLocale::system(); #endif // Qt translations (buttons text and the like) QString translationsPath = QLibraryInfo::path(QLibraryInfo::TranslationsPath); QString translationsFileName = QStringLiteral("qt_") + locale.name(); if (qtTranslator->load(translationsFileName, translationsPath)) app->installTranslator(qtTranslator); translationsFileName = QString(PROJECT_ID) + '_' + locale.name(); // E.g. "_en" // Try first in the same binary directory, in case we are building, // otherwise read from system data translationsPath = QCoreApplication::applicationDirPath(); bool isLoaded = translator->load(translationsFileName, translationsPath); if (!isLoaded) { // "/usr/share//translations isLoaded = translator->load(translationsFileName, QStringLiteral(PROJECT_DATA_DIR) + QStringLiteral("/translations")); } app->installTranslator(translator); } void initConfig(std::string &configFile) { bool success = xml_init(configFile.data()); if (!success) { QMessageBox msgBox; msgBox.setText(QObject::tr("Error loading ") + QString(configFile.data())); msgBox.setInformativeText( QObject::tr("Run labwc-tweaks from a terminal to view error messages")); msgBox.exec(); exit(EXIT_FAILURE); } } void mkdir_p(std::string path) { if (!std::filesystem::exists(path)) { info("Creating directory '{}'", path); std::filesystem::create_directories(path); } } int main(int argc, char *argv[]) { QApplication app(argc, argv); app.setApplicationName(PROJECT_ID); QTranslator qtTranslator, translator; initLocale(&qtTranslator, &translator); std::string config_home = std::getenv("HOME") + std::string("/.config/labwc"); std::string config_dir = std::getenv("LABWC_CONFIG_DIR") ?: config_home; mkdir_p(config_dir); std::string environment_file = config_dir + "/environment"; environmentInit(environment_file); std::string config_file = config_dir + "/rc.xml"; initConfig(config_file); /*~ * This settings vector contains the master state of all key=value type settings that can be * changed by labwc-tweaks. * * settings.h contains an API for working with these. */ std::vector> settings; settingsInit(&settings); MainDialog window; window.show(); // Make work the window icon also when the application is not (yet) installed QString iconSuffix = QString("%1%2%3").arg("/", PROJECT_APPSTREAM_ID, QStringLiteral(".svg")); QString icoLocalPath = QCoreApplication::applicationDirPath() + iconSuffix; QString icoSysPath = QStringLiteral(PROJECT_ICON_SYSTEM_PATH) + iconSuffix; // If icoLocalPath exists, set to icolocalPath; else set to icoSysPath QIcon appIcon = (QFileInfo(icoLocalPath).exists()) ? QIcon(icoLocalPath) : QIcon(icoSysPath); window.setWindowIcon(appIcon); return app.exec(); } labwc-tweaks-0.1.0/src/maindialog.cpp000066400000000000000000000121401513773473700175120ustar00rootroot00000000000000#include #include #include #include #include #include #include #include #include #include "appearance.h" #include "behaviour.h" #include "mouse.h" #include "keyboard.h" #include "touchscreen.h" #include "about.h" #include "template.h" #include #include #include #include #include #include #include #include "environment.h" #include "find-themes.h" #include "log.h" #include "macros.h" #include "maindialog.h" #include "xml.h" MainDialog::MainDialog(QWidget *parent) : QDialog(parent) { QVBoxLayout *verticalLayout = new QVBoxLayout(this); verticalLayout->setContentsMargins(6, 6, 6, 6); QWidget *widget = new QWidget(this); QHBoxLayout *horizontalLayout = new QHBoxLayout(widget); horizontalLayout->setContentsMargins(6, 6, 6, 6); // List Widget on the Left QListWidget *list = new QListWidget(widget); QListWidgetItem *item0 = new QListWidgetItem(list); item0->setIcon(QIcon::fromTheme("applications-graphics")); item0->setText(tr("Appearance")); QListWidgetItem *item1 = new QListWidgetItem(list); item1->setIcon(QIcon::fromTheme("preferences-desktop")); item1->setText(tr("Behaviour")); QListWidgetItem *item2 = new QListWidgetItem(list); item2->setIcon(QIcon::fromTheme("input-mouse")); item2->setText(tr("Mouse & Touchpad")); QListWidgetItem *item3 = new QListWidgetItem(list); item3->setIcon(QIcon::fromTheme("preferences-desktop-keyboard")); item3->setText(tr("Keyboard")); QListWidgetItem *item4 = new QListWidgetItem(list); item4->setIcon(QIcon::fromTheme("preferences-desktop-touchscreen")); item4->setText(tr("Touchscreen")); QListWidgetItem *item5 = new QListWidgetItem(list); item5->setIcon(QIcon::fromTheme("help-about")); item5->setText(tr("About")); if (!qgetenv("LABWC_TWEAKS_SHOW_TEMPLATE").isEmpty()) { QListWidgetItem *item99 = new QListWidgetItem(list); item99->setIcon(QIcon::fromTheme("preferences-system")); item99->setText("Template"); } QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); sizePolicy.setHorizontalStretch(0); sizePolicy.setVerticalStretch(0); sizePolicy.setHeightForWidth(list->sizePolicy().hasHeightForWidth()); list->setSizePolicy(sizePolicy); list->setSizeAdjustPolicy(QAbstractScrollArea::SizeAdjustPolicy::AdjustToContents); list->setCurrentRow(0); list->setFixedWidth(list->sizeHintForColumn(0) + 2 * list->frameWidth()); horizontalLayout->addWidget(list); // The stack containing all the pages QStackedWidget *stack = new QStackedWidget(widget); m_pageAppearance = new Appearance(); stack->addWidget(m_pageAppearance); m_pageBehaviour = new Behaviour(); stack->addWidget(m_pageBehaviour); m_pageMouse = new Mouse(); stack->addWidget(m_pageMouse); m_pageKeyboard = new Keyboard(); stack->addWidget(m_pageKeyboard); m_pageTouchscreen = new Touchscreen(); stack->addWidget(m_pageTouchscreen); m_pageAbout = new About(); stack->addWidget(m_pageAbout); if (!qgetenv("LABWC_TWEAKS_SHOW_TEMPLATE").isEmpty()) { m_pageTemplate = new Template(); stack->addWidget(m_pageTemplate); } horizontalLayout->addWidget(stack); verticalLayout->addWidget(widget); m_buttonBox = new QDialogButtonBox(this); m_buttonBox->setOrientation(Qt::Orientation::Horizontal); m_buttonBox->setStandardButtons(QDialogButtonBox::StandardButton::Apply | QDialogButtonBox::StandardButton::Close); m_buttonBox->setCenterButtons(false); verticalLayout->addWidget(m_buttonBox); // Change pages when list items are clicked QObject::connect(list, SIGNAL(currentRowChanged(int)), stack, SLOT(setCurrentIndex(int))); // Close Button QObject::connect(m_buttonBox, SIGNAL(rejected()), this, SLOT(reject())); // Apply Button QObject::connect(m_buttonBox, &QDialogButtonBox::clicked, [&](QAbstractButton *button) { if (m_buttonBox->standardButton(button) == QDialogButtonBox::Apply) { onApply(); } }); activate(); } MainDialog::~MainDialog() { xml_finish(); } // Init settings and setup UI widgets void MainDialog::activate() { m_pageAppearance->activate(); m_pageBehaviour->activate(); m_pageMouse->activate(); m_pageKeyboard->activate(); m_pageTouchscreen->activate(); m_pageAbout->loadInfo(); m_pageAbout->getEnv(); if (!qgetenv("LABWC_TWEAKS_SHOW_TEMPLATE").isEmpty()) { m_pageTemplate->activate(); } } void MainDialog::onApply() { m_pageAppearance->onApply(); m_pageBehaviour->onApply(); m_pageMouse->onApply(); m_pageKeyboard->onApply(); m_pageTouchscreen->onApply(); xml_save(); environmentSave(); /* reconfigure labwc */ if (!fork()) { execl("/bin/sh", "/bin/sh", "-c", "labwc -r", (void *)NULL); } } labwc-tweaks-0.1.0/src/maindialog.h000066400000000000000000000012341513773473700171610ustar00rootroot00000000000000#ifndef MAINDIALOG_H #define MAINDIALOG_H #include #include #include "settings.h" class Appearance; class Behaviour; class Mouse; class Keyboard; class Touchscreen; class About; class Template; class MainDialog : public QDialog { Q_OBJECT public: MainDialog(QWidget *parent = nullptr); ~MainDialog(); void activate(); private: void onApply(); QDialogButtonBox *m_buttonBox; Appearance *m_pageAppearance; Behaviour *m_pageBehaviour; Mouse *m_pageMouse; Keyboard *m_pageKeyboard; Touchscreen *m_pageTouchscreen; About *m_pageAbout; Template *m_pageTemplate; }; #endif // MAINDIALOG_H labwc-tweaks-0.1.0/src/mouse.cpp000066400000000000000000000223671513773473700165520ustar00rootroot00000000000000#include "mouse.h" #include "environment.h" #include "find-themes.h" #include "macros.h" #include "pair.h" #include "settings.h" #include "./ui_mouse.h" Mouse::Mouse(QWidget *parent) : QWidget(parent), ui(new Ui::pageMouse) { ui->setupUi(this); } Mouse::~Mouse() { delete ui; } void Mouse::activate() { /* Cursor Theme */ settingsAddEnvStr("XCURSOR_THEME", ""); QStringList cursorThemes = findIconThemes(LAB_ICON_THEME_TYPE_CURSOR); ui->cursorTheme->addItems(cursorThemes); ui->cursorTheme->setCurrentIndex(cursorThemes.indexOf(getStr("XCURSOR_THEME"))); /* Cursor Size */ settingsAddEnvInt("XCURSOR_SIZE", 24); ui->cursorSize->setValue(getInt("XCURSOR_SIZE")); /*~ * For libinput settings we pick the default described the libinput documents, although * recognise that this is not 100% consistent across all devices. We think that this approach * makes for the least amount of user-surprises and it seems consistent with how some big * established compositors handle this. * * The exception is tap-to-click, which labwc enables by default for historic reasons. * * Ref: * - https://wayland.freedesktop.org/libinput/doc/latest/configuration.html */ /* Natural Scroll */ settingsAddXmlBoo("/labwc_config/libinput/device/naturalScroll", false); ui->naturalScroll->setChecked(getBool("/labwc_config/libinput/device/naturalScroll")); /* Left Handed */ settingsAddXmlBoo("/labwc_config/libinput/device/leftHanded", false); ui->leftHanded->setChecked(getBool("/labwc_config/libinput/device/leftHanded")); /* Pointer Speed */ settingsAddXmlFlt("/labwc_config/libinput/device/pointerSpeed", 0.0f); ui->pointerSpeed->setValue(getFloat("/labwc_config/libinput/device/pointerSpeed")); /* Accel Profiles */ settingsAddXmlStr("/labwc_config/libinput/device/accelProfile", "adaptive"); QVector> profiles; profiles.append(QSharedPointer(new Pair("flat", tr("Flat")))); profiles.append(QSharedPointer(new Pair("adaptive", tr("Adaptive")))); QString current_profile = getStr("/labwc_config/libinput/device/accelProfile"); int profile_index = -1; foreach (auto profile, profiles) { ui->accelProfile->addItem(profile.get()->description(), QVariant(profile.get()->value())); ++profile_index; if (current_profile == profile.get()->value()) { ui->accelProfile->setCurrentIndex(profile_index); } } /* Tap to click */ settingsAddXmlBoo("/labwc_config/libinput/device/tap", true); ui->tap->setChecked(getBool("/labwc_config/libinput/device/tap")); /* Tap Button Map */ settingsAddXmlStr("/labwc_config/libinput/device/tapButtonMap", "lrm"); QVector> maps; maps.append(QSharedPointer(new Pair("lrm", tr("left-right-middle")))); maps.append(QSharedPointer(new Pair("lmr", tr("left-middle-right")))); QString current_map = getStr("/labwc_config/libinput/device/tapButtonMap"); int map_index = -1; foreach (auto map, maps) { ui->tapButtonMap->addItem(map.get()->description(), QVariant(map.get()->value())); ++map_index; if (current_map == map.get()->value()) { ui->tapButtonMap->setCurrentIndex(map_index); } } /* * Tap And Drag * * Most devices have tap-and-drag enabled by default. * * Ref: * - https://wayland.freedesktop.org/libinput/doc/latest/tapping.html#tapndrag */ settingsAddXmlBoo("/labwc_config/libinput/device/tapAndDrag", true); ui->tapAndDrag->setChecked(getBool("/labwc_config/libinput/device/tapAndDrag")); /* * Drag Lock * * We disable this when tapAndDrag is unchecked. */ settingsAddXmlBoo("/labwc_config/libinput/device/dragLock", false); ui->dragLock->setChecked(getBool("/labwc_config/libinput/device/dragLock")); ui->dragLock->setEnabled(ui->tapAndDrag->isChecked()); connect(ui->tapAndDrag, &QCheckBox::toggled, ui->dragLock, &QWidget::setEnabled); /* * Three Finger Drag * * Ref: * - https://wayland.freedesktop.org/libinput/doc/latest/drag-3fg.html#drag-3fg */ settingsAddXmlBoo("/labwc_config/libinput/device/threeFingerDrag", false); ui->threeFingerDrag->setChecked(getBool("/labwc_config/libinput/device/threeFingerDrag")); /* Middle Emulation */ settingsAddXmlBoo("/labwc_config/libinput/device/middleEmulation", false); ui->middleEmulation->setChecked(getBool("/labwc_config/libinput/device/middleEmulation")); /* Disable While Typing */ settingsAddXmlBoo("/labwc_config/libinput/device/disableWhileTyping", true); ui->disableWhileTyping->setChecked(getBool("/labwc_config/libinput/device/disableWhileTyping")); /* Click Method */ settingsAddXmlStr("/labwc_config/libinput/device/clickMethod", "none"); QVector> clickmethods; clickmethods.append(QSharedPointer(new Pair("none", tr("None")))); clickmethods.append(QSharedPointer(new Pair("buttonAreas", tr("Button Area")))); clickmethods.append(QSharedPointer(new Pair("clickFinger", tr("Clickfinger")))); QString current_clickmethod = getStr("/labwc_config/libinput/device/clickMethod"); int clickmethod_index = -1; foreach (auto clickmethod, clickmethods) { ui->clickMethod->addItem(clickmethod.get()->description(), QVariant(clickmethod.get()->value())); ++clickmethod_index; if (current_clickmethod == clickmethod.get()->value()) { ui->clickMethod->setCurrentIndex(clickmethod_index); } } /* Scroll Method */ settingsAddXmlStr("/labwc_config/libinput/device/scrollMethod", "twoFinger"); QVector> scrollmethods; scrollmethods.append(QSharedPointer(new Pair("twoFinger", tr("Two Finger")))); scrollmethods.append(QSharedPointer(new Pair("edge", tr("Edge")))); scrollmethods.append(QSharedPointer(new Pair("none", tr("None")))); QString current_scrollmethod = getStr("/labwc_config/libinput/device/scrollMethod"); int scrollmethod_index = -1; foreach (auto scrollmethod, scrollmethods) { ui->scrollMethod->addItem(scrollmethod.get()->description(), QVariant(scrollmethod.get()->value())); ++scrollmethod_index; if (current_scrollmethod == scrollmethod.get()->value()) { ui->scrollMethod->setCurrentIndex(scrollmethod_index); } } /* * Send Events Mode * * Note: We cannot support 'No' until the device="" option is supported because otherwise all * devices (including keyboard) will be disabled which is unlikely to be the desired outcome. */ settingsAddXmlStr("/labwc_config/libinput/device/sendEventsMode", "yes"); QVector> sendeventsmodes; sendeventsmodes.append(QSharedPointer(new Pair("yes", tr("Enabled")))); sendeventsmodes.append(QSharedPointer( new Pair("disabledOnExternalMouse", tr("Disable with external mouse")))); QString current_sendeventsmode = getStr("/labwc_config/libinput/device/sendEventsMode"); int sendeventsmode_index = -1; foreach (auto sendeventsmode, sendeventsmodes) { ui->sendEventsMode->addItem(sendeventsmode.get()->description(), QVariant(sendeventsmode.get()->value())); ++sendeventsmode_index; if (current_sendeventsmode == sendeventsmode.get()->value()) { ui->sendEventsMode->setCurrentIndex(sendeventsmode_index); } } /* Scroll Factor */ settingsAddXmlFlt("/labwc_config/libinput/device/scrollFactor", 1.0f); ui->scrollFactor->setValue(getFloat("/labwc_config/libinput/device/scrollFactor")); } void Mouse::onApply() { /* ~/.config/labwc/rc.xml */ setBool("/labwc_config/libinput/device/naturalScroll", ui->naturalScroll->isChecked()); setBool("/labwc_config/libinput/device/leftHanded", ui->leftHanded->isChecked()); setFloat("/labwc_config/libinput/device/pointerSpeed", ui->pointerSpeed->value() / 10.0); setStr("/labwc_config/libinput/device/accelProfile", DATA(ui->accelProfile)); setBool("/labwc_config/libinput/device/tap", ui->tap->isChecked()); setStr("/labwc_config/libinput/device/tapButtonMap", DATA(ui->tapButtonMap)); setBool("/labwc_config/libinput/device/tapAndDrag", ui->tapAndDrag->isChecked()); setBool("/labwc_config/libinput/device/dragLock", ui->dragLock->isChecked()); setBool("/labwc_config/libinput/device/threeFingerDrag", ui->threeFingerDrag->isChecked()); setBool("/labwc_config/libinput/device/middleEmulation", ui->middleEmulation->isChecked()); setBool("/labwc_config/libinput/device/disableWhileTyping", ui->disableWhileTyping->isChecked()); setStr("/labwc_config/libinput/device/clickMethod", DATA(ui->clickMethod)); setStr("/labwc_config/libinput/device/scrollMethod", DATA(ui->scrollMethod)); setStr("/labwc_config/libinput/device/sendEventsMode", DATA(ui->sendEventsMode)); setFloat("/labwc_config/libinput/device/scrollFactor", ui->scrollFactor->value()); /* ~/.config/labwc/environment */ setStr("XCURSOR_THEME", TEXT(ui->cursorTheme)); setInt("XCURSOR_SIZE", ui->cursorSize->value()); } labwc-tweaks-0.1.0/src/mouse.h000066400000000000000000000005041513773473700162040ustar00rootroot00000000000000#ifndef MOUSE_H #define MOUSE_H #include QT_BEGIN_NAMESPACE namespace Ui { class pageMouse; } QT_END_NAMESPACE class Mouse : public QWidget { Q_OBJECT public: Mouse(QWidget *parent = nullptr); ~Mouse(); void activate(); void onApply(); private: Ui::pageMouse *ui; }; #endif // MOUSE_H labwc-tweaks-0.1.0/src/mouse.ui000066400000000000000000000253171513773473700164030ustar00rootroot00000000000000 pageMouse QFrame::Shape::NoFrame true 9 Cursor 16 8 Theme Qt::Orientation::Horizontal Size Pointer General 16 8 Pointer speed -10 10 1 Qt::Orientation::Horizontal Qt::Orientation::Horizontal Acceleration profile Scroll factor 2 0.100000000000000 5.000000000000000 0.100000000000000 1.000000000000000 Natural scroll Left handed mode Touchpad 16 8 Status Qt::Orientation::Horizontal Tap button map Click method Scroll method 16 8 Tap to click true Tap and drag Qt::Orientation::Horizontal QSizePolicy::Policy::Fixed 8 1 Drag lock Qt::Orientation::Horizontal Three finger drag Middle button emulation Disable while typing Qt::Orientation::Vertical labwc-tweaks-0.1.0/src/nodename.cpp000066400000000000000000000015641513773473700172040ustar00rootroot00000000000000// SPDX-License-Identifier: GPL-2.0-only #include "nodename.h" #include #include #include #include #include #include static std::vector splitIgnoringEmptyParts(const std::string &s, char delim) { auto has_content = [](auto const &s) { return s.size() > 0; }; auto parts = s | std::views::split(delim) | std::views::filter(has_content) | std::ranges::to>(); return parts; } std::string nodenameFromXPath(std::string xpath) { auto parts = splitIgnoringEmptyParts(xpath, '/'); std::reverse(parts.begin(), parts.end()); std::string nodename; for (auto part : parts) { nodename.append(part); nodename.append("."); } if (!nodename.empty() && nodename.back() == '.') { nodename.pop_back(); } return nodename; } labwc-tweaks-0.1.0/src/nodename.h000066400000000000000000000002631513773473700166440ustar00rootroot00000000000000/* SPDX-License-Identifier: GPL-2.0-only */ #ifndef __NODENAME_H #define __NODENAME_H #include std::string nodenameFromXPath(std::string xpath); #endif // __NODENAME_H labwc-tweaks-0.1.0/src/pair.h000066400000000000000000000005551513773473700160150ustar00rootroot00000000000000#pragma once #include class Pair { public: Pair(QString value, QString description) { m_value = value; m_description = description; }; ~Pair() { }; private: QString m_value; QString m_description; public: QString value() const { return m_value; } QString description() const { return m_description; } }; labwc-tweaks-0.1.0/src/parse-bool.cpp000066400000000000000000000012611513773473700174530ustar00rootroot00000000000000#include #include "log.h" #include "parse-bool.h" int parseBool(const char *str, int defaultValue) { if (!str) goto error_not_a_boolean; else if (!strcasecmp(str, "yes")) return 1; else if (!strcasecmp(str, "true")) return 1; else if (!strcasecmp(str, "on")) return 1; else if (!strcmp(str, "1")) return 1; else if (!strcasecmp(str, "no")) return 0; else if (!strcasecmp(str, "false")) return 0; else if (!strcasecmp(str, "off")) return 0; else if (!strcmp(str, "0")) return 0; error_not_a_boolean: warn("{} is not a boolean value", str); return defaultValue; } labwc-tweaks-0.1.0/src/parse-bool.h000066400000000000000000000005771513773473700171310ustar00rootroot00000000000000 #pragma once /** * parseBool() - Parse boolean value of string. * @string: String to interpret. This check is case-insensitive. * @default_value: Default value to use if string is not a recognised boolean. * Use -1 to avoid setting a default value. * * Return: 0 for false; 1 for true; -1 for non-boolean */ int parseBool(const char *str, int defaultValue); labwc-tweaks-0.1.0/src/setting.cpp000066400000000000000000000074471513773473700171010ustar00rootroot00000000000000#include #include #include "log.h" #include "settings.h" #include "environment.h" #include "macros.h" #include "nodename.h" #include "xml.h" bool isValidBool(int value) { return value != -1; } Setting::Setting(QString name, enum settingFileType fileType, enum settingValueType valueType, QVariant defaultValue) : m_name(name), m_fileType(fileType), m_valueType(valueType), m_value(defaultValue) { m_valueOrigin = LAB_VALUE_ORIGIN_DEFAULT; std::string nodename, truncatedXPath; if (m_fileType == LAB_FILE_TYPE_RCXML) { nodename = nodenameFromXPath(name.toStdString()); truncatedXPath = name.replace("/labwc_config", "").toStdString(); } // Use values from rc.xml if different from default if (m_fileType == LAB_FILE_TYPE_RCXML) { switch (m_valueType) { case LAB_VALUE_TYPE_STRING: { const char *value = xml_get(nodename.c_str()); if (value && QString::compare(value, m_value.toString(), Qt::CaseInsensitive)) { m_valueOrigin = LAB_VALUE_ORIGIN_USER_OVERRIDE; m_value = QString(value); info("from rc.xml use {}={}", truncatedXPath, value); } break; } case LAB_VALUE_TYPE_INT: { int value = xml_get_int(nodename.c_str()); if (value != LAB_INVALID && value != m_value.toInt()) { m_valueOrigin = LAB_VALUE_ORIGIN_USER_OVERRIDE; m_value = value; info("from rc.xml use {}={}", truncatedXPath, value); } break; } case LAB_VALUE_TYPE_FLOAT: { float value = xml_get_float(nodename.c_str()); if (value != LAB_INVALID && value != m_value.toFloat()) { m_valueOrigin = LAB_VALUE_ORIGIN_USER_OVERRIDE; m_value = value; info("from rc.xml use {}={}", truncatedXPath, value); } break; } case LAB_VALUE_TYPE_BOOL: { int value = xml_get_bool_text(nodename.c_str()); if (isValidBool(value) && value != m_value.toInt()) { m_valueOrigin = LAB_VALUE_ORIGIN_USER_OVERRIDE; m_value = value; info("from rc.xml use {}={}", truncatedXPath, value ? "true" : "false"); } break; } default: break; } } // Use values from environment file if different from default if (m_fileType == LAB_FILE_TYPE_ENVIRONMENT) { switch (m_valueType) { case LAB_VALUE_TYPE_STRING: { QString value = QString(environmentGet(m_name)); if (!value.isNull() && QString::compare(value, m_value.toString(), Qt::CaseInsensitive)) { m_valueOrigin = LAB_VALUE_ORIGIN_USER_OVERRIDE; m_value = value; info("from environment file use {}={}", m_name.toStdString(), value.toStdString()); } break; } case LAB_VALUE_TYPE_INT: { int value = environmentGetInt(m_name); if (value == -1) { // There was no environment file - or it did not contain the key break; } if (value != m_value.toInt()) { m_valueOrigin = LAB_VALUE_ORIGIN_USER_OVERRIDE; m_value = value; info("from environment file use {}={}", m_name.toStdString(), value); } break; } case LAB_VALUE_TYPE_BOOL: { // do we need this? break; } default: break; } } } void Setting::setValue(QVariant value) { if (value != m_value) { m_valueOrigin = LAB_VALUE_ORIGIN_CHANGED_IN_THIS_SESSION; m_value = value; } } labwc-tweaks-0.1.0/src/setting.h000066400000000000000000000023471513773473700165400ustar00rootroot00000000000000#pragma once #include #include #include #include enum settingFileType { LAB_FILE_TYPE_UNKNOWN = 0, LAB_FILE_TYPE_RCXML, LAB_FILE_TYPE_ENVIRONMENT, }; enum settingValueOrigin { LAB_VALUE_ORIGIN_UNKNOWN = 0, LAB_VALUE_ORIGIN_DEFAULT, LAB_VALUE_ORIGIN_USER_OVERRIDE, LAB_VALUE_ORIGIN_CHANGED_IN_THIS_SESSION, }; enum settingValueType { LAB_VALUE_TYPE_UNKNOWN = 0, LAB_VALUE_TYPE_INT, LAB_VALUE_TYPE_BOOL, LAB_VALUE_TYPE_STRING, LAB_VALUE_TYPE_FLOAT }; class Setting { public: Setting(QString name, enum settingFileType fileType, enum settingValueType valueType, QVariant defaultValue); void setValue(QVariant value); private: QString m_name; // xpath-style like /foo/bar/baz enum settingFileType m_fileType; enum settingValueOrigin m_valueOrigin; enum settingValueType m_valueType; QVariant m_value; public: // Getters QString name() const { return m_name; } enum settingFileType fileType() const { return m_fileType; } enum settingValueOrigin valueOrigin() const { return m_valueOrigin; } enum settingValueType valueType() const { return m_valueType; } QVariant value() const { return m_value; } }; labwc-tweaks-0.1.0/src/settings.cpp000066400000000000000000000172511513773473700172560ustar00rootroot00000000000000#include "settings.h" #include #include #include #include "log.h" #include "environment.h" #include "macros.h" #include "xml.h" #include "nodename.h" /*~ * We try not to deal with raw pointers, but keeping *settings in this translation unit just helps * not trickle it through to lots of QWidget derived classes. */ static std::vector> *_settings; static void add(QString name, enum settingFileType fileType, enum settingValueType valueType, QVariant defaultValue) { _settings->push_back(std::make_shared(name, fileType, valueType, defaultValue)); } // rc.xml config file helpers void settingsAddXmlStr(QString name, QString defaultValue) { add(name, LAB_FILE_TYPE_RCXML, LAB_VALUE_TYPE_STRING, defaultValue); } void settingsAddXmlInt(QString name, int defaultValue) { add(name, LAB_FILE_TYPE_RCXML, LAB_VALUE_TYPE_INT, defaultValue); } void settingsAddXmlBoo(QString name, bool defaultValue) { add(name, LAB_FILE_TYPE_RCXML, LAB_VALUE_TYPE_BOOL, defaultValue); } void settingsAddXmlFlt(QString name, float defaultValue) { add(name, LAB_FILE_TYPE_RCXML, LAB_VALUE_TYPE_FLOAT, defaultValue); } // environment file helpers void settingsAddEnvStr(QString name, QString defaultValue) { add(name, LAB_FILE_TYPE_ENVIRONMENT, LAB_VALUE_TYPE_STRING, defaultValue); } void settingsAddEnvInt(QString name, int defaultValue) { add(name, LAB_FILE_TYPE_ENVIRONMENT, LAB_VALUE_TYPE_INT, defaultValue); } void settingsInit(std::vector> *settings) { _settings = settings; } static std::shared_ptr retrieve(QString name) { for (auto &setting : *_settings) { if (name == setting->name()) { return setting; } } return nullptr; } QString getStr(QString name) { std::shared_ptr setting = retrieve(name); if (setting == nullptr) { warn("no setting with name '{}'", name.toStdString()); return nullptr; } if (setting->valueType() != LAB_VALUE_TYPE_STRING) { warn("not a valid string setting '{}'", name.toStdString()); return nullptr; } QString ret = setting->value().toString(); return ret; } int getInt(QString name) { std::shared_ptr setting = retrieve(name); if (setting == nullptr) { warn("no setting with name '{}'", name.toStdString()); return LAB_INVALID; } if (setting->valueType() != LAB_VALUE_TYPE_INT) { warn("not a valid int setting '{}'", name.toStdString()); return LAB_INVALID; } int ret = setting->value().toInt(); return ret; } /* Return -1 for error because this works well with setCurrentIndex() */ int getBool(QString name) { std::shared_ptr setting = retrieve(name); if (setting == nullptr) { warn("no setting with name '{}'", name.toStdString()); return -1; } if (setting->valueType() != LAB_VALUE_TYPE_BOOL) { warn("not a valid boolean setting '{}'", name.toStdString()); return LAB_INVALID; } int ret = setting->value().toInt(); return ret; } float getFloat(QString name) { std::shared_ptr setting = retrieve(name); if (setting == nullptr) { warn("no setting with name '{}'", name.toStdString()); return LAB_INVALID; } if (setting->valueType() != LAB_VALUE_TYPE_FLOAT) { warn("not a valid float setting '{}'", name.toStdString()); return LAB_INVALID; } float ret = setting->value().toFloat(); return ret; } /*~ * The setters below are for key=value pairs in "rc.xml" and "environment". More complex * configuration involving objects like `` cannot be managed through these. */ void setStr(QString name, QString value) { std::shared_ptr setting = retrieve(name); if (setting == nullptr) { warn("no setting with name '{}'", name.toStdString()); return; } if (setting->valueType() != LAB_VALUE_TYPE_STRING) { warn("not a valid string setting '{}'", name.toStdString()); return; } if (value == setting->value().toString()) { return; } switch (setting->fileType()) { case LAB_FILE_TYPE_RCXML: { xpath_add_node(name.toStdString().c_str()); std::string nodename = nodenameFromXPath(name.toStdString()); xml_set(nodename.c_str(), value.toStdString().c_str()); break; } case LAB_FILE_TYPE_ENVIRONMENT: environmentSet(name, value); break; case LAB_FILE_TYPE_UNKNOWN: default: warn("cannot handle file type associated with '{}'", name.toStdString()); } setting->setValue(value); info("'{} has changed to '{}'", name.toStdString(), value.toStdString()); } void setInt(QString name, int value) { std::shared_ptr setting = retrieve(name); if (setting == nullptr) { warn("no setting with name '{}'", name.toStdString()); return; } if (setting->valueType() != LAB_VALUE_TYPE_INT) { warn("not a valid int setting '{}'", name.toStdString()); return; } if (value == setting->value().toInt()) { return; } switch (setting->fileType()) { case LAB_FILE_TYPE_RCXML: { xpath_add_node(name.toStdString().c_str()); std::string nodename = nodenameFromXPath(name.toStdString()); xml_set_num(nodename.c_str(), value); break; } case LAB_FILE_TYPE_ENVIRONMENT: environmentSetInt(name, value); break; case LAB_FILE_TYPE_UNKNOWN: default: warn("cannot handle file type associated with '{}'", name.toStdString()); } setting->setValue(value); info("'{} has changed to '{}'", name.toStdString(), value); } void setBool(QString name, int value) { std::shared_ptr setting = retrieve(name); if (setting == nullptr) { warn("no setting with name '{}'", name.toStdString()); return; } if (setting->valueType() != LAB_VALUE_TYPE_BOOL) { warn("not a valid boolean setting '{}'", name.toStdString()); return; } if (value == setting->value().toInt()) { return; } switch (setting->fileType()) { case LAB_FILE_TYPE_RCXML: { xpath_add_node(name.toStdString().c_str()); std::string nodename = nodenameFromXPath(name.toStdString()); xml_set(nodename.c_str(), value ? "yes" : "no"); break; } case LAB_FILE_TYPE_ENVIRONMENT: environmentSetInt(name, value); break; case LAB_FILE_TYPE_UNKNOWN: default: warn("cannot handle file type associated with '{}'", name.toStdString()); } setting->setValue(value); info("'{} has changed to '{}'", name.toStdString(), value); } void setFloat(QString name, float value) { std::shared_ptr setting = retrieve(name); if (setting == nullptr) { warn("no setting with name '{}'", name.toStdString()); return; } if (setting->valueType() != LAB_VALUE_TYPE_FLOAT) { warn("not a valid float setting '{}'", name.toStdString()); return; } if (value == setting->value().toFloat()) { return; } switch (setting->fileType()) { case LAB_FILE_TYPE_RCXML: { xpath_add_node(name.toStdString().c_str()); std::string nodename = nodenameFromXPath(name.toStdString()); xml_set_num(nodename.c_str(), value); break; } case LAB_FILE_TYPE_ENVIRONMENT: warn("do not yet support setting floats in environment file"); break; case LAB_FILE_TYPE_UNKNOWN: default: warn("cannot handle file type associated with '{}'", name.toStdString()); } setting->setValue(value); info("'{} has changed to '{}'", name.toStdString(), value); } labwc-tweaks-0.1.0/src/settings.h000066400000000000000000000015621513773473700167210ustar00rootroot00000000000000#pragma once #include "settings.h" #include #include #include #include "setting.h" void settingsInit(std::vector> *settings); // Add new entries void settingsAddXmlStr(QString name, QString defaultValue); void settingsAddXmlInt(QString name, int defaultValue); void settingsAddXmlBoo(QString name, bool defaultValue); void settingsAddXmlFlt(QString name, float defaultValue); void settingsAddEnvStr(QString name, QString defaultValue); void settingsAddEnvInt(QString name, int defaultValue); // Get values QString getStr(QString name); int getInt(QString name); int getBool(QString name); float getFloat(QString name); // Set values for entries that already exist void setStr(QString name, QString value); void setInt(QString name, int value); void setBool(QString name, int value); void setFloat(QString name, float value); labwc-tweaks-0.1.0/src/template.cpp000066400000000000000000000016471513773473700172330ustar00rootroot00000000000000/*~ * This is a page template. It will not show when running the application normally, but can be * invoked by settings LABWC_TWEAKS_SHOW_TEMPLATE=1. It is intended as a starting point for * developers who wish to create pages. * * By page we mean list-stack pair. * * In addition to the constructor/destructor we require two methods: activate() and onApply(). * That's it. */ #include "template.h" #include #include "./ui_template.h" Template::Template(QWidget *parent) : QWidget(parent), ui(new Ui::pageTemplate) { ui->setupUi(this); } Template::~Template() { delete ui; } void Template::activate() { QStringList items = { "Foo", "Bar", "Baz" }; ui->comboBox->addItems(items); for (int i = 0; i < 100; ++i) { QString text = QString("Label ") + QString::number(i); ui->groupBox2_gridLayout->addWidget(new QLabel(text)); } } void Template::onApply() { // No-op } labwc-tweaks-0.1.0/src/template.h000066400000000000000000000005341513773473700166720ustar00rootroot00000000000000#ifndef TEMPLATE_H #define TEMPLATE_H #include QT_BEGIN_NAMESPACE namespace Ui { class pageTemplate; } QT_END_NAMESPACE class Template : public QWidget { Q_OBJECT public: Template(QWidget *parent = nullptr); ~Template(); void activate(); void onApply(); private: Ui::pageTemplate *ui; }; #endif // TEMPLATE_H labwc-tweaks-0.1.0/src/template.ui000066400000000000000000000126441513773473700170650ustar00rootroot00000000000000 pageTemplate QFrame::Shape::NoFrame true 9 GroupBox0 16 8 ComboBox Test Qt::Orientation::Horizontal ComboBox Test2 GroupBox1 16 8 Enable something special Qt::Orientation::Horizontal Qt::Orientation::Horizontal 8 1 Indented checkbox (state depends on parent) QCheckBox3 QCheckBox4 GroupBox2 Qt::Orientation::Vertical labwc-tweaks-0.1.0/src/touchscreen.cpp000066400000000000000000000031531513773473700177340ustar00rootroot00000000000000#include "touchscreen.h" #include #include "macros.h" #include "pair.h" #include "settings.h" #include "./ui_touchscreen.h" Touchscreen::Touchscreen(QWidget *parent) : QWidget(parent), ui(new Ui::pageTouchscreen) { ui->setupUi(this); } Touchscreen::~Touchscreen() { delete ui; } void Touchscreen::activate() { /* Touchscreen Rotation */ settingsAddXmlStr("/labwc_config/libinput/device/calibrationMatrix", ""); QVector> calibrationmatrixes; calibrationmatrixes.append(QSharedPointer(new Pair("", tr("")))); calibrationmatrixes.append(QSharedPointer(new Pair("1 0 0 0 1 0", tr("Normal")))); calibrationmatrixes.append(QSharedPointer(new Pair("0 -1 1 1 0 0", tr("Left")))); calibrationmatrixes.append(QSharedPointer(new Pair("0 1 0 -1 0 1", tr("Right")))); calibrationmatrixes.append(QSharedPointer(new Pair("-1 0 1 0 -1 1", tr("Inverted")))); QString current_calibrationmatrix = getStr("/labwc_config/libinput/device/calibrationMatrix"); int calibrationmatrix_index = -1; foreach (auto calibrationmatrix, calibrationmatrixes) { ui->calibrationMatrix->addItem(calibrationmatrix.get()->description(), QVariant(calibrationmatrix.get()->value())); ++calibrationmatrix_index; if (current_calibrationmatrix == calibrationmatrix.get()->value()) { ui->calibrationMatrix->setCurrentIndex(calibrationmatrix_index); } } } void Touchscreen::onApply() { setStr("/labwc_config/libinput/device/calibrationMatrix", DATA(ui->calibrationMatrix)); } labwc-tweaks-0.1.0/src/touchscreen.h000066400000000000000000000005641513773473700174040ustar00rootroot00000000000000#ifndef TOUCHSCREEN_H #define TOUCHSCREEN_H #include QT_BEGIN_NAMESPACE namespace Ui { class pageTouchscreen; } QT_END_NAMESPACE class Touchscreen : public QWidget { Q_OBJECT public: Touchscreen(QWidget *parent = nullptr); ~Touchscreen(); void activate(); void onApply(); private: Ui::pageTouchscreen *ui; }; #endif // TOUCHSCREEN_H labwc-tweaks-0.1.0/src/touchscreen.ui000066400000000000000000000037671513773473700176020ustar00rootroot00000000000000 pageTouchscreen QFrame::Shape::NoFrame true 9 Touchscreen 16 8 Rotation Qt::Orientation::Horizontal Qt::Orientation::Vertical labwc-tweaks-0.1.0/src/xml.cpp000066400000000000000000000230211513773473700162060ustar00rootroot00000000000000// SPDX-License-Identifier: GPL-2.0-only #define _POSIX_C_SOURCE 200809L #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "macros.h" #include "nodename.h" #include "parse-bool.h" #include "xml.h" enum xml_mode { XML_MODE_SETTING = 0, XML_MODE_GETTING, }; static struct ctx { char *filename; xmlDoc *doc; xmlXPathContextPtr xpath_ctx_ptr; const char *nodename; const char *value; xmlNode *node; enum xml_mode mode; } ctx; static void entry(xmlNode *node, char *nodename, char *content) { if (!nodename) return; if (!strcasecmp(nodename, ctx.nodename)) { if (ctx.mode == XML_MODE_SETTING) { xmlNodeSetContent(node, (const xmlChar *)ctx.value); } else if (ctx.mode == XML_MODE_GETTING) { ctx.value = (char *)content; ctx.node = node; } } } /** * nodename - return simplistic xpath style nodename * For example: is represented by nodename /a/b/c */ static char *nodename_xpath_style(xmlNode *node, char *buf, int len) { if (!node || !node->name) { return NULL; } /* Ignore superflous '/text' in node name */ if (node->parent && !strcmp((char *)node->name, "text")) { node = node->parent; } buf += len; *--buf = 0; len--; for (;;) { const char *name = (char *)node->name; int i = strlen(name); while (--i >= 0) { unsigned char c = name[i]; *--buf = tolower(c); if (!--len) return buf; } node = node->parent; if (!node || !node->name) { *--buf = '/'; return buf; } *--buf = '/'; if (!--len) return buf; } } /** * nodename - give xml node an ascii name * @node: xml-node * @buf: buffer to receive the name * @len: size of buffer * * For example, the xml structure would return the * name c.b.a */ static char *nodename(xmlNode *node, char *buf, int len) { if (!node || !node->name) { return NULL; } /* Ignore superfluous 'text.' in node name */ if (node->parent && !strcmp((char *)node->name, "text")) { node = node->parent; } char *p = buf; p[--len] = 0; for (;;) { const char *name = (char *)node->name; char c; while ((c = *name++) != 0) { *p++ = tolower(c); if (!--len) { return buf; } } *p = 0; node = node->parent; if (!node || !node->name) { return buf; } *p++ = '.'; if (!--len) { return buf; } } } static void process_node(xmlNode *node) { char *content; static char buffer[256]; char *name; content = (char *)node->content; if (xmlIsBlankNode(node)) { return; } name = nodename(node, buffer, sizeof(buffer)); entry(node, name, content); } static void xml_tree_walk(xmlNode *node); static void traverse(xmlNode *n) { process_node(n); for (xmlAttr *attr = n->properties; attr; attr = attr->next) { xml_tree_walk(attr->children); } xml_tree_walk(n->children); } static void xml_tree_walk(xmlNode *node) { for (xmlNode *n = node; n && n->name; n = n->next) { if (!strcasecmp((char *)n->name, "comment")) { continue; } traverse(n); } } static const char rcxml_template[] = "\n" "\n" " \n" " \n" "\n"; static void create_basic_rcxml(const char *filename) { FILE *file = fopen(filename, "w"); if (!file) { fprintf(stderr, "warn: cannot create file '%s'\n", filename); return; } if (!fwrite(rcxml_template, sizeof(rcxml_template) - 1, 1, file)) { fprintf(stderr, "warn: error writing to %s", filename); } fclose(file); } bool xml_init(const char *filename) { LIBXML_TEST_VERSION bool success = true; if (access(filename, F_OK)) { create_basic_rcxml(filename); } /* Use XML_PARSE_NOBLANKS for xmlSaveFormatFile() to indent properly */ ctx.filename = strdup(filename); ctx.doc = xmlReadFile(filename, NULL, XML_PARSE_NOBLANKS); if (!ctx.doc) { fprintf(stderr, "warn: xmlReadFile('%s')\n", filename); success = false; } ctx.xpath_ctx_ptr = xmlXPathNewContext(ctx.doc); if (!ctx.xpath_ctx_ptr) { fprintf(stderr, "warn: xmlXPathNewContext()\n"); xmlFreeDoc(ctx.doc); success = false; } return success; } void xml_save(void) { xmlSaveFormatFile(ctx.filename, ctx.doc, 1); } void xml_save_as(const char *filename) { xmlSaveFormatFile(filename, ctx.doc, 1); } void xml_finish(void) { xmlXPathFreeContext(ctx.xpath_ctx_ptr); xmlFreeDoc(ctx.doc); xmlCleanupParser(); free(ctx.filename); } void xml_set(const char *nodename, const char *value) { ctx.nodename = nodename; ctx.value = value; ctx.mode = XML_MODE_SETTING; xml_tree_walk(xmlDocGetRootElement(ctx.doc)); } void xml_set_num(const char *nodename, double value) { char buf[64]; snprintf(buf, sizeof(buf), "%g", value); ctx.nodename = nodename; ctx.value = buf; ctx.mode = XML_MODE_SETTING; xml_tree_walk(xmlDocGetRootElement(ctx.doc)); } const char *xml_get(const char *nodename) { ctx.value = NULL; ctx.nodename = nodename; ctx.mode = XML_MODE_GETTING; xml_tree_walk(xmlDocGetRootElement(ctx.doc)); return ctx.value; } int xml_get_int(const char *nodename) { ctx.value = NULL; ctx.nodename = nodename; ctx.mode = XML_MODE_GETTING; xml_tree_walk(xmlDocGetRootElement(ctx.doc)); return ctx.value ? atoi(ctx.value) : LAB_INVALID; } float xml_get_float(const char *nodename) { ctx.value = NULL; ctx.nodename = nodename; ctx.mode = XML_MODE_GETTING; xml_tree_walk(xmlDocGetRootElement(ctx.doc)); return ctx.value ? atof(ctx.value) : LAB_INVALID; } int xml_get_bool_text(const char *nodename) { const char *value = xml_get(nodename); /* handle and where no value has been specified */ if (!value || !*value) { return -1; } /* Parse consistently with labwc */ return parseBool(value, -1); } /* case-insensitive */ static xmlNode *xml_get_node(const char *xpath) { std::string nodename = nodenameFromXPath(xpath); ctx.node = NULL; ctx.nodename = nodename.c_str(); ctx.mode = XML_MODE_GETTING; xml_tree_walk(xmlDocGetRootElement(ctx.doc)); return ctx.node; } char *xpath_get_content(const char *xpath_expr) { xmlChar *ret = NULL; xmlXPathObjectPtr object = xmlXPathEvalExpression((xmlChar *)xpath_expr, ctx.xpath_ctx_ptr); if (!object) { fprintf(stderr, "warn: xmlXPathEvalExpression()\n"); return NULL; } if (!object->nodesetval) { fprintf(stderr, "warn: no nodesetval\n"); goto out; } for (int i = 0; i < object->nodesetval->nodeNr; i++) { if (!object->nodesetval->nodeTab[i]) { continue; } /* Just grab the first node and go */ ret = xmlNodeGetContent(object->nodesetval->nodeTab[i]); goto out; /* * We could process the node here and do things like: * xmlNode *children = object->nodesetval->nodeTab[i]->children; * for (xmlNode *cur = children; cur; cur = cur->next) { } */ } out: xmlXPathFreeObject(object); return (char *)ret; } /* case-sensitive */ static xmlNode *xpath_get_node(xmlChar *expr) { xmlNode *ret = NULL; xmlXPathObjectPtr object = xmlXPathEvalExpression(expr, ctx.xpath_ctx_ptr); if (!object) { fprintf(stderr, "warn: xmlXPathEvalExpression()\n"); return NULL; } if (!object->nodesetval) { fprintf(stderr, "warn: no nodesetval\n"); goto out2; } for (int i = 0; i < object->nodesetval->nodeNr; i++) { if (!object->nodesetval->nodeTab[i]) { continue; } ret = object->nodesetval->nodeTab[i]; break; } out2: xmlXPathFreeObject(object); return ret; } void xpath_add_node(const char *xpath_expr) { // Do not add another entry if the only difference is capitalisation if (xml_get_node(xpath_expr)) { return; } /* find existing parent */ char *parent_expr = strdup(xpath_expr); xmlNode *parent_node = NULL; while (parent_expr && *parent_expr) { parent_node = xpath_get_node((xmlChar *)parent_expr); if (parent_node) { break; } char *p = strrchr(parent_expr, '/'); if (p && *p) { *p = '\0'; } else { break; } } assert(parent_expr); if (!*parent_expr) { /* the whole xpath expression is new, so add to root */ parent_node = xmlDocGetRootElement(ctx.doc); } /* add new nodes */ gchar **nodes = g_strsplit(xpath_expr + strlen(parent_expr), "/", -1); for (gchar **s = nodes; *s; s++) { if (*s && **s) { parent_node = xmlNewChild(parent_node, NULL, (xmlChar *)*s, NULL); } } g_free(parent_expr); g_strfreev(nodes); } labwc-tweaks-0.1.0/src/xml.h000066400000000000000000000016241513773473700156600ustar00rootroot00000000000000/* SPDX-License-Identifier: GPL-2.0-only */ #ifndef __XML_H #define __XML_H bool xml_init(const char *filename); void xml_save(void); void xml_save_as(const char *filename); void xml_finish(void); void xml_set(const char *nodename, const char *value); void xml_set_num(const char *nodename, double value); const char *xml_get(const char *nodename); int xml_get_int(const char *nodename); int xml_get_bool_text(const char *nodename); float xml_get_float(const char *nodename); /** * xpath_get_content() - Get content of node specified by xpath * @xpath_expr: xpath expression for node */ char *xpath_get_content(const char *xpath_expr); /** * xpath_add_node - add xml nodes from xpath * @xpath_expr: xpath expression for new node * For example xpath_expr="/labwc_config/a/b/c" creates * */ void xpath_add_node(const char *xpath_expr); #endif /* __XML_H */ labwc-tweaks-0.1.0/tests/000077500000000000000000000000001513773473700152575ustar00rootroot00000000000000labwc-tweaks-0.1.0/tests/t1000-add-xpath-node.cpp000066400000000000000000000052601513773473700213250ustar00rootroot00000000000000#define _POSIX_C_SOURCE 200809L #include #include #include #include #include "tap.h" #include "../src/xml.h" static char base_instance[] = "\n" "\n" " \n" " \n" " \n" "\n"; void show_diff(const char *filename, const char *buf, size_t size) { char cmd[1000]; snprintf(cmd, sizeof(cmd), "diff -u - %s >&2", filename); FILE *f = popen(cmd, "w"); fwrite(buf, size, 1, f); pclose(f); } void test(const char *filename, const char *expect) { gsize length; gchar *actual; g_file_get_contents(filename, &actual, &length, NULL); bool is_equal = strcmp(actual, expect) == 0; ok1(is_equal); if (!is_equal) show_diff(filename, expect, strlen(expect)); g_free(actual); } int main(int argc, char **argv) { char in[] = "/tmp/t1000-expect_XXXXXX"; char out[] = "/tmp/t1000-actual"; plan(4); int fd = mkstemp(in); if (fd < 0) exit(EXIT_FAILURE); (void)write(fd, base_instance, sizeof(base_instance) - 1); /* test 1 */ diag("add node using xpath (lowercase)"); xml_init(in); xpath_add_node("/labwc_config/theme/cornerradius"); xml_save_as(out); xml_finish(); test(out, "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" "\n"); /* test 2 */ diag("add node using xpath (camelCase)"); xml_init(in); xpath_add_node("/labwc_config/theme/cornerRadius"); xml_save_as(out); xml_finish(); test(out, "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" "\n"); /* test 3 */ diag("check xpath does not add duplicate entries - when identical"); xml_init(in); xpath_add_node("/labwc_config/theme/cornerradius"); xpath_add_node("/labwc_config/theme/cornerradius"); xml_save_as(out); xml_finish(); test(out, "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" "\n"); /* test 4 */ diag("check xpath does not add duplicate entries - even if they have differing capitalisation"); xml_init(in); xpath_add_node("/labwc_config/theme/cornerradius"); xpath_add_node("/labwc_config/theme/Cornerradius"); xml_save_as(out); xml_finish(); test(out, "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" "\n"); unlink(in); unlink(out); return exit_status(); } labwc-tweaks-0.1.0/tests/t1001-nodenames.cpp000066400000000000000000000017741513773473700205100ustar00rootroot00000000000000#define _POSIX_C_SOURCE 200809L #include #include #include #include #include "tap.h" #include "../src/xml.cpp" static char base_instance[] = "\n" "\n" " \n" " \n" " \n" "\n"; void test(const char *nodename, const char *expect) { bool is_equal = strcmp(nodename, expect) == 0; ok1(is_equal); if (!is_equal) fprintf(stderr, "%s\n%s\n", nodename, expect); } int main(int argc, char **argv) { char in[] = "/tmp/t1001-expect_XXXXXX"; static char buffer[256] = { 0 }; plan(1); int fd = mkstemp(in); if (fd < 0) exit(EXIT_FAILURE); (void)write(fd, base_instance, sizeof(base_instance) - 1); /* test 1 */ diag("generate simple xpath style nodename"); xml_init(in); xmlNode *node = xpath_get_node((xmlChar *)"/labwc_config/core/gap"); char *name = nodename(node, buffer, sizeof(buffer)); xml_finish(); test(name, "gap.core.labwc_config"); unlink(in); return exit_status(); } labwc-tweaks-0.1.0/tests/tap.cpp000066400000000000000000000024301513773473700165460ustar00rootroot00000000000000#include #include #include #include #include #include #include "tap.h" static int nr_tests_run; static int nr_tests_expected; static int nr_tests_failed; void plan(int nr_tests) { static bool run_once; if (run_once) return; run_once = true; printf("1..%d\n", nr_tests); nr_tests_expected = nr_tests; } void diag(const char *fmt, ...) { va_list params; fprintf(stdout, "# "); va_start(params, fmt); vfprintf(stdout, fmt, params); va_end(params); fprintf(stdout, "\n"); } int ok(int result, const char *testname, ...) { va_list params; ++nr_tests_run; if (!result) { printf("not "); nr_tests_failed++; } printf("ok %d", nr_tests_run); if (testname) { printf(" - "); va_start(params, testname); vfprintf(stdout, testname, params); va_end(params); } printf("\n"); if (!result) diag(" Failed test"); return result ? 1 : 0; } int exit_status(void) { int ret; if (nr_tests_expected != nr_tests_run) { diag("expected=%d; run=%d; failed=%d", nr_tests_expected, nr_tests_run, nr_tests_failed); } if (nr_tests_expected < nr_tests_run) ret = nr_tests_run - nr_tests_expected; else ret = nr_tests_failed + nr_tests_expected - nr_tests_run; if (ret > 255) ret = 255; return ret; } labwc-tweaks-0.1.0/tests/tap.h000066400000000000000000000004621513773473700162160ustar00rootroot00000000000000/* * Minimalist, partial TAP implementation * * Copyright Johan Malm 2020 */ #ifndef TAP_H #define TAP_H #define ok1(__x__) (ok(__x__, "%s", #__x__)) void plan(int nr_tests); void diag(const char *fmt, ...); int ok(int result, const char *test_name, ...); int exit_status(void); #endif /* TAP_H */