pax_global_header00006660000000000000000000000064137540537540014527gustar00rootroot0000000000000052 comment=b1b372fba379560c3bf0f9a6ac9c5933e3b0416d x-tile-3.3/000077500000000000000000000000001375405375400125765ustar00rootroot00000000000000x-tile-3.3/.gitignore000066400000000000000000000000351375405375400145640ustar00rootroot00000000000000*.pyc *.mo linux/x-tile.1.gz x-tile-3.3/create_debian_package.sh000077500000000000000000000000471375405375400173560ustar00rootroot00000000000000#!/bin/sh dpkg-buildpackage -b -d -tc x-tile-3.3/create_ppa_package.sh000077500000000000000000000000401375405375400167050ustar00rootroot00000000000000#!/bin/sh debuild -S -sa -i -I x-tile-3.3/create_sources_folder.py000077500000000000000000000016371375405375400175230ustar00rootroot00000000000000#!/usr/bin/env python3 import os, sys, shutil, glob, builtins SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__)) MODULES_DIR = os.path.join(SCRIPT_DIR, "modules") sys.path.insert(0, MODULES_DIR) builtins.SHARE_PATH = SCRIPT_DIR import cons BLACKLIST = [".git", ".gitignore"] DEST_DIR = os.path.join(os.path.dirname(SCRIPT_DIR), "x-tile-"+cons.VERSION) if len(sys.argv) > 1: DEST_DIR += "+r" + sys.argv[1] #print DEST_DIR if not os.path.isdir(DEST_DIR): os.mkdir(DEST_DIR) for pycfilepath in glob.glob(os.path.join(MODULES_DIR, "*.pyc")): os.remove(pycfilepath) for element in os.listdir(SCRIPT_DIR): if not element in BLACKLIST: src_abspath = os.path.join(SCRIPT_DIR, element) dst_abspath = os.path.join(DEST_DIR, element) if os.path.isdir(src_abspath): shutil.copytree(src_abspath, dst_abspath) else: shutil.copy2(src_abspath, dst_abspath) x-tile-3.3/debian/000077500000000000000000000000001375405375400140205ustar00rootroot00000000000000x-tile-3.3/debian/changelog000066400000000000000000000003371375405375400156750ustar00rootroot00000000000000x-tile (3.3-0) focal; urgency=low * fixed tile grid crash after porting to Gtk3 * added command line options to print version -V/--version (#8) -- Giuseppe Penone Sat, 14 Nov 2020 21:57:56 +0000 x-tile-3.3/debian/compat000066400000000000000000000000021375405375400152160ustar00rootroot000000000000009 x-tile-3.3/debian/control000066400000000000000000000011451375405375400154240ustar00rootroot00000000000000Source: x-tile Section: utils Priority: optional Maintainer: Giuseppe Penone Build-Depends: debhelper (>= 9), dh-python, gettext, python3 (>=3.0), python3-gi, python3-gi-cairo, gir1.2-gtk-3.0 X-Python-Version: >= 3.0 Standards-Version: 3.9.5 Homepage: https://www.giuspen.com/x-tile/ Vcs-Git: https://github.com/giuspen/x-tile.git Vcs-Browser: https://github.com/giuspen/x-tile Package: x-tile Architecture: all Depends: python3-gi, python3-gi-cairo, gir1.2-gtk-3.0 Conflicts: x-tile-ng Description: X Tile Allows you to select a number of windows and tile them in different ways x-tile-3.3/debian/copyright000066400000000000000000000017511375405375400157570ustar00rootroot00000000000000Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: x-tile Source: http://www.giuspen.com/x-tile/ Files: * Copyright: 2009-2020 Giuseppe Penone License: GPL-2.0+ License: GPL-2.0+ This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. . This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. . You should have received a copy of the GNU General Public License along with this program. If not, see . On Debian systems, the complete text of the GNU General Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". x-tile-3.3/debian/rules000077500000000000000000000001411375405375400150740ustar00rootroot00000000000000#!/usr/bin/make -f %: dh $@ --buildsystem=pybuild override_dh_clean: rm -rf build/ dh_clean x-tile-3.3/glade/000077500000000000000000000000001375405375400136525ustar00rootroot00000000000000x-tile-3.3/glade/checkbox_checked.svg000066400000000000000000000012501375405375400176250ustar00rootroot00000000000000 x-tile-3.3/glade/checkbox_unchecked.svg000066400000000000000000000005311375405375400201710ustar00rootroot00000000000000 x-tile-3.3/glade/close-checked-windows.svg000066400000000000000000000660001375405375400205560ustar00rootroot00000000000000 image/svg+xml Lapo Calamandrei Window Manager x-tile-3.3/glade/cycle-tiling.svg000066400000000000000000001236541375405375400167710ustar00rootroot00000000000000 image/svg+xml Lapo Calamandrei x-tile-3.3/glade/help-contents.svg000066400000000000000000000150301375405375400171550ustar00rootroot00000000000000 x-tile-3.3/glade/invert-tiling.svg000066400000000000000000006303341375405375400171770ustar00rootroot00000000000000 image/svg+xml Lapo Calamandrei Window Manager x-tile-3.3/glade/maximize-checked-windows.svg000066400000000000000000000263771375405375400213110ustar00rootroot00000000000000 image/svg+xml View Fullscreen http://jimmac.musichall.cz Jakub Steiner window maximize fullscreen view x-tile-3.3/glade/quit-app.svg000066400000000000000000000166041375405375400161420ustar00rootroot00000000000000 x-tile-3.3/glade/reload-windows-list.svg000066400000000000000000000437271375405375400203170ustar00rootroot00000000000000 image/svg+xml x-tile-3.3/glade/tile-custom-1-exe.svg000066400000000000000000000733661375405375400175740ustar00rootroot00000000000000 image/svg+xml Lapo Calamandrei Window Manager 1 x-tile-3.3/glade/tile-custom-1-set.svg000066400000000000000000003202451375405375400175750ustar00rootroot00000000000000 image/svg+xml Lapo Calamandrei Window Manager 1 x-tile-3.3/glade/tile-custom-2-exe.svg000066400000000000000000000671431375405375400175710ustar00rootroot00000000000000 image/svg+xml Lapo Calamandrei Window Manager 2 x-tile-3.3/glade/tile-custom-2-set.svg000066400000000000000000003202451375405375400175760ustar00rootroot00000000000000 image/svg+xml Lapo Calamandrei Window Manager 2 x-tile-3.3/glade/tile-grid.svg000066400000000000000000000561011375405375400162560ustar00rootroot00000000000000 image/svg+xml Lapo Calamandrei Window Manager x-tile-3.3/glade/tile-horizontally.svg000066400000000000000000000307651375405375400200770ustar00rootroot00000000000000 image/svg+xml Lapo Calamandrei Window Manager x-tile-3.3/glade/tile-quad.svg000066400000000000000000000415601375405375400162660ustar00rootroot00000000000000 image/svg+xml Lapo Calamandrei Window Manager x-tile-3.3/glade/tile-triangle-down.svg000066400000000000000000000370241375405375400201060ustar00rootroot00000000000000 image/svg+xml Lapo Calamandrei Window Manager x-tile-3.3/glade/tile-triangle-left.svg000066400000000000000000000366701375405375400200770ustar00rootroot00000000000000 image/svg+xml Lapo Calamandrei Window Manager x-tile-3.3/glade/tile-triangle-right.svg000066400000000000000000000371031375405375400202520ustar00rootroot00000000000000 image/svg+xml Lapo Calamandrei Window Manager x-tile-3.3/glade/tile-triangle-up.svg000066400000000000000000000370231375405375400175620ustar00rootroot00000000000000 image/svg+xml Lapo Calamandrei Window Manager x-tile-3.3/glade/tile-vertically.svg000066400000000000000000000304311375405375400175050ustar00rootroot00000000000000 image/svg+xml Lapo Calamandrei Window Manager x-tile-3.3/glade/toolbar.png000066400000000000000000000004341375405375400160230ustar00rootroot00000000000000‰PNG  IHDRóÿabKGDWWWïŒTÆ pHYs  šœtIMEÖ4>ˆCvtEXtCommentCreated with The GIMPïd%n€IDAT8ËÝ’Á Â@te…*ò þ©è>é ÔAºÙëaù!’â^Áß‘v-Û°{$õÀðë 9gZ0MÆñ>ƒf¢ëNU†¤p÷KÕØEçp÷HKK¥Üoرµ…•ƒOŸk,½‡bf« ¶ØÕn¯DKÍCú=<"b#2¹IEND®B`‚x-tile-3.3/glade/unmaximize-checked-windows.svg000066400000000000000000000266451375405375400216520ustar00rootroot00000000000000 image/svg+xml View Fullscreen http://jimmac.musichall.cz Jakub Steiner window maximize fullscreen view x-tile-3.3/glade/x-tile.glade000066400000000000000000002501471375405375400160630ustar00rootroot00000000000000 1 99 2 1 10 False X Tile 400 200 x-tile.svg True False True False 0 True True True True 2 True False Set Destination Workspace False True True False True False True 3 0 True True • False False adjustment_dest_workspace False True 1 Exit After Tile False True True False True True True False True 3 2 False True 3 False 5 About X Tile False True center-on-parent True x-tile.svg dialog window X Tile Copyright © 2009-2020 Giuseppe Penone <giuspen@gmail.com> Chris Camacho <codifies@gmail.com> Tile the Windows Upon your X Desktop http://www.giuspen.com/x-tile/ http://www.giuspen.com/x-tile/ 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. Giuseppe Penone <giuspen@gmail.com> Chris Camacho <codifies@gmail.com> Chinese Simplified (zh_CN) Khiyuan Fan <Fan.Khiyuan@gmail.com> Chinese Traditional (zh_TW) Yan-ren Tsai <elleryq@gmail.com> Czech (cs) Pavel Fric <fripohled@blogspot.com Spanish (es_AR) MeloPixel <melopixel@gmail.com> French (fr) Ludovic Troisi <axalis@cegetel.net> German (de) Jöran Zeller <joeran@zeller.ws> Italian (it) Giuseppe Penone <giuspen@gmail.com> Polish (pl) Dominik Wójt <domin144@o2.pl> Russian (ru) Andriy Kovtun <kovtunos@yandex.ru> x-tile.svg True False 2 True False end False True end 0 False 5 True True normal window True False 2 True False center False True True True True False True False gtk-cancel True True 0 True False Cancel True True 1 False False 0 False True True True True False True False gtk-apply True True 0 True False OK True True 1 False False 1 False True end 0 True False True False 0 True False True False <b>Custom Tiling Layout</b> True True True 0 True False True False False False 20 0 True False 1) Tile Some Windows Manually False False 1 True False 2) Select Them in the X Tile Windows List False False 3 2 True False 3) Click the Update Button False False 3 True False False False 20 4 False True True True True False True False gtk-edit True True 0 True False Update True True 1 False False 5 False False 5 1 True True 1 button7 button8 False 5 Rows to Filter True 300 300 True normal window True False 2 True False center False True True True True False True False gtk-close True True 0 True False Close True True 1 False False 0 False True end 0 True False True True True True 0 True False start False True True True Add an Application Filter True False gtk-add False False 0 False True True True Remove an Application Filter True False gtk-remove False False 1 False False 1 True True 1 button5 False 5 Add Row True 300 300 True normal window True False 2 True False center False True True True True False True False gtk-cancel True True 0 True False Cancel True True 1 False False 0 False True True True True False True False gtk-apply True True 0 True False OK True True 1 False False 1 False True end 0 True True True True 1 processadddialog_button_cancel processadddialog_button_ok False 5 Rows to be Selected by Default True 300 300 True normal window True False 2 True False center False True True True True False True False gtk-close True True 0 True False Close True True 1 False False 0 False True end 0 True False True True True True 0 True False start False True True True True False gtk-add False False 0 False True True True True False gtk-remove False False 1 False False 1 True True 1 button6 10 10000 10 1 10 10 10000 10 1 10 1000 2 1 10 1000 30 1 10 10 10000 10 1 10 10 10000 10 1 10 10000 1 1 10 10000 1 1 10 10000 1 1 10 10000 1 1 10 False Preferences True center-on-parent True window True False True False 4 True True False Do Not List Minimized Windows False True True False True True False True 2 0 Only Current Workspace False True True False True True False True 2 1 True False False True 3 2 Enable System Tray Docking False True True False True True False True 3 Start Minimized in the System Tray False True True False True False True 4 Use AppIndicator for Docking False True True False True False True 5 True False False True 3 6 Show Toolbar False True True False True True False True 2 7 True False True False Language False False 2 0 True False on True True 1 False False 4 8 False True 3 0 True False Override Monitor 1 Tiling Area False True True False True False False 0 True False True False 0 none True False 3 3 6 6 True False True True â— False False adjustment_x1 True True 0 True False X True True 1 True True â— False False adjustment_y1 True True 2 True False Y True True 3 True False Position True True True 0 True False 0 none True False 3 3 6 6 True False True True â— False False adjustment_w1 True True 0 True False Width True True 1 True True â— False False adjustment_h1 True True 2 True False Height True True 3 True False Size True True True 1 False True 1 True False False True 3 2 Override Monitor 2 Tiling Area False True True False True False False 3 True False True False 0 none True False 3 3 6 6 True False True True â— False False adjustment_x2 True True 0 True False X True True 1 True True â— False False adjustment_y2 True True 2 True False Y True True 3 True False Position True True True 0 True False 0 none True False 3 3 6 6 True False True True â— False False adjustment_w2 True True 0 True False Width True True 1 True True â— False False adjustment_h2 True True 2 True False Height True True 3 True False Size True True True 1 False True 4 False True 3 1 True False 4 0 True False spread False True True True True False True False gtk-close True True 0 True False Close True True 1 False False 0 False True 1 True False gtk-about True False Reload Windows List True False gtk-about x-tile-3.3/glade/x-tile.svg000066400000000000000000000456671375405375400156170ustar00rootroot00000000000000 image/svg+xml x x-tile-3.3/license000066400000000000000000000013171375405375400141450ustar00rootroot00000000000000 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. x-tile-3.3/linux/000077500000000000000000000000001375405375400137355ustar00rootroot00000000000000x-tile-3.3/linux/x-tile.1000066400000000000000000000037011375405375400152220ustar00rootroot00000000000000.TH X-TILE "1" "July 2012" "x-tile 3.3" .SH NAME X-Tile \- an application that allows you to select a number of windows and tile them in different ways .SH SYNOPSIS \fBx-tile [option]\fP .SH DESCRIPTION X-Tile works on any X desktop (gnome, kde, xfce, lxde…). The main features are: many tiling geometries, undo tiling, invert tiling order, cycle tiling order, optional system tray docking and menu, filter to avoid listing some windows, filter to check some windows by default, command line interface. .SH OPTIONS .IP \fBw\fP open the x-tile main window without using the panel .IP \fBz\fP undo the latest tiling operation .IP \fBf\fP tile all opened windows vertically .IP \fBh\fP tile all opened windows horizontally .IP \fBu\fP tile all opened windows triangle-up .IP \fBd\fP tile all opened windows triangle-down .IP \fBl\fP tile all opened windows triangle-left .IP \fBr\fP tile all opened windows triangle-right .IP \fBq\fP quad tile all opened windows .TP .B \fBg = g 0 = g 0 0\fP tile all opened windows in a grid with automatic rows and columns .TP .B \fBg rows = g rows 0\fP tile all opened windows in a grid with given rows and automatic columns .TP .B \fBg 0 cols\fP tile all opened windows in a grid with automatic rows and given columns .TP .B \fBg rows cols\fP tile all opened windows in a grid with given rows and columns .IP \fB1\fP custom tile 1 all opened windows .IP \fB2\fP custom tile 2 all opened windows .IP \fBi\fP invert the order of the latest tiling operation .IP \fBy\fP cycle the order of the latest tiling operation .IP \fBm\fP maximize all opened windows .IP \fBM\fP unmaximize all opened windows .IP \fBc\fP close all opened windows .IP \fB-V\fP print x-tile version .SH AUTHORS X-Tile was written by Giuseppe Penone and and Chris Camacho . .SH SEE ALSO http://www.giuspen.com/x-tile .PP This manual page was written by Giuseppe Penone , for the Debian project (and may be used by others). x-tile-3.3/linux/x-tile.desktop000066400000000000000000000003001375405375400165230ustar00rootroot00000000000000 [Desktop Entry] Name=X Tile Comment=Tile the Windows Upon your X Desktop Exec=x-tile Icon=x-tile Terminal=false Type=Application StartupNotify=true Categories=GTK;Utility; Name[en_US]=x-tile x-tile-3.3/locale/000077500000000000000000000000001375405375400140355ustar00rootroot00000000000000x-tile-3.3/locale/cs.po000066400000000000000000000433321375405375400150070ustar00rootroot00000000000000# Czech translations for x-tile package. # Copyright (C) 2010 THE x-tile'S COPYRIGHT HOLDER # This file is distributed under the same license as the x-tile package. # # maul , 2010. # Pavel Fric , 2012. msgid "" msgstr "" "Project-Id-Version: x-tile 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-09-07 23:14+0200\n" "PO-Revision-Date: 2012-09-07 23:52+0200\n" "Last-Translator: Pavel Fric \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 1.5\n" #: modules/core.py:307 msgid "Use Drag and Drop to Sort the Rows" msgstr "Pro roztřídÄ›ní řádků položku pÅ™etáhnÄ›te a upusÅ¥te" #: modules/core.py:347 msgid "The New Language will be Available Only After Restarting X Tile" msgstr "Nové jazykové nastavení bude dostupné až po novém spuÅ¡tÄ›ní X Tile" #: modules/core.py:369 glade/x-tile.glade.h:5 msgid "Tile the Windows Upon your X Desktop" msgstr "VydláždÄ›te okna na vaší ploÅ¡e X" #: modules/core.py:583 msgid "The Size of the Toolbar Icons is already at the Maximum Value" msgstr "Ikony v nástrojovém pruhu jsou již tak velké, jak jen je to možné" #: modules/core.py:593 msgid "The Size of the Toolbar Icons is already at the Minimum Value" msgstr "Ikony v nástrojovém pruhu jsou již tak malé, jak jen je to možné" #: modules/core.py:703 modules/core.py:711 modules/core.py:719 msgid "No Row is Selected" msgstr "Není vybrán žádný řádek" #: modules/core.py:741 modules/core.py:775 msgid "No Application Selected!" msgstr "Není vybrán žádný program!" #: modules/core.py:855 msgid "Grid Details" msgstr "Podrobnosti k mřížce" #: modules/core.py:863 msgid "Rows" msgstr "Řádky" #: modules/core.py:870 msgid "Columns" msgstr "Sloupce" #: modules/core.py:956 modules/core.py:964 modules/core.py:974 msgid "No Windows Checked" msgstr "Není vybráno žádné okno" #: modules/core.py:1014 modules/core.py:1027 msgid "Edit Custom Tile Settings" msgstr "Upravit vlastní nastavení dláždÄ›ní" #: modules/core.py:1174 msgid "" "The Custom Tile 1 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 1 " "Set'" msgstr "" "Vlastní nastavení dláždÄ›ní (1) jeÅ¡tÄ› nebylo pÅ™evzato: KlepnÄ›te v nabídce na " "'Dlaždice->Vlastní nastavení dláždÄ›ní (1)'" #: modules/core.py:1192 msgid "" "The Custom Tile 2 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 2 " "Set'" msgstr "" "Vlastní nastavení dláždÄ›ní (2) jeÅ¡tÄ› nebylo pÅ™evzato: KlepnÄ›te v nabídce na " "'Dlaždice->Vlastní nastavení dláždÄ›ní (2)'" #: modules/cons.py:268 msgid "_File" msgstr "_Soubor" #: modules/cons.py:269 msgid "_Edit" msgstr "Ú_pravy" #: modules/cons.py:270 msgid "_Row" msgstr "Řá_dek" #: modules/cons.py:271 msgid "_Tile" msgstr "_Dlaždice" #: modules/cons.py:272 msgid "_View" msgstr "_Pohled" #: modules/cons.py:273 modules/cons.py:308 msgid "_Help" msgstr "_NápovÄ›da" #: modules/cons.py:275 msgid "_Filter" msgstr "_Filtr" #: modules/cons.py:275 msgid "Filter Rows" msgstr "Filtrovat řádky" #: modules/cons.py:276 msgid "Selected by _Default" msgstr "Vybráno vždy" #: modules/cons.py:276 glade/x-tile.glade.h:59 msgid "Rows to be Selected by Default" msgstr "Řádky, které mají být vybrány vždy" #: modules/cons.py:277 msgid "_Reload" msgstr "_Nahrát znovu" #: modules/cons.py:277 msgid "Reload the Windows List" msgstr "Nahrát seznam oken znovu" #: modules/cons.py:278 msgid "_Quit" msgstr "_UkonÄit" #: modules/cons.py:278 msgid "Quit the Application" msgstr "UkonÄit program" #: modules/cons.py:279 msgid "_Exit X Tile" msgstr "_Opustit X Tile" #: modules/cons.py:279 msgid "Exit from X Tile" msgstr "Opustit X Tile" #: modules/cons.py:280 msgid "Show/Hide _X Tile" msgstr "Ukázat/Skrýt _X Tile" #: modules/cons.py:280 msgid "Toggle Show/Hide X Tile" msgstr "Ukázat/Skrýt X Tile" #: modules/cons.py:281 msgid "_Preferences" msgstr "_Nastavení" #: modules/cons.py:281 msgid "Open the Preferences Window" msgstr "Otevřít okno s nastavením" #: modules/cons.py:282 msgid "Select _All" msgstr "Vybrat vÅ¡_e" #: modules/cons.py:282 msgid "Select All the Windows in the List" msgstr "Vybrat vÅ¡echna okna v seznamu" #: modules/cons.py:283 msgid "Deselect A_ll" msgstr "ZruÅ¡it výbÄ›r u _vÅ¡eho" #: modules/cons.py:283 msgid "Deselect All the Windows in the List" msgstr "ZruÅ¡it výbÄ›r u vÅ¡ech oken v seznamu" #: modules/cons.py:284 msgid "Tile _Vertically" msgstr "Vydláždit _svisle" #: modules/cons.py:284 msgid "Tile Vertically The Checked Windows" msgstr "Vydláždit vybraná okna svisle" #: modules/cons.py:285 msgid "Tile _Horizontally" msgstr "Vydláždit _vodorovnÄ›" #: modules/cons.py:285 msgid "Tile Horizontally The Checked Windows" msgstr "Vydláždit vybraná okna vodorovnÄ›" #: modules/cons.py:286 msgid "_Triangle Up" msgstr "_Trojúhelník nahoru" #: modules/cons.py:286 msgid "Tile Triangle Up The Checked Windows" msgstr "Vydláždit vybraná okna trojúhelníkovÄ› nahoru" #: modules/cons.py:287 msgid "Triangle _Down" msgstr "Trojúhelník _dolů" #: modules/cons.py:287 msgid "Tile Triangle Down The Checked Windows" msgstr "Vydláždit vybraná okna trojúhelníkovÄ› dolů" #: modules/cons.py:288 msgid "Triangle _Left" msgstr "Trojúhelník _vlevo" #: modules/cons.py:288 msgid "Tile Triangle Left The Checked Windows" msgstr "Vydláždit vybraná okna trojúhelníkovÄ› vlevo" #: modules/cons.py:289 msgid "Triangle _Right" msgstr "Trojúhelník v_pravo" #: modules/cons.py:289 msgid "Tile Triangle Right The Checked Windows" msgstr "Vydláždit vybraná okna trojúhelníkovÄ› vpravo" #: modules/cons.py:290 msgid "Tile _Quad" msgstr "Vydláždit _ÄtvercovÄ›" #: modules/cons.py:290 msgid "Tile into 4 quadrants The Checked Windows" msgstr "Vydláždit vybraná okna do ÄtyÅ™ Ätverců" #: modules/cons.py:291 msgid "Tile _Grid" msgstr "Vydláždit v _mřížce" #: modules/cons.py:291 msgid "Tile into an Arbitrary Grid The Checked Windows" msgstr "Vydláždit vybraná okna do libovolné mřížky" #: modules/cons.py:292 msgid "Custom Tile 1 _Set" msgstr "Vlastní _nastavení dláždÄ›ní (1)" #: modules/cons.py:292 msgid "Edit Custom Tile 1 Settings" msgstr "Upravit vlastní nastavení dláždÄ›ní (1)" #: modules/cons.py:293 msgid "Custom Tile _1 Run" msgstr "Provedení vlastního nastavení dláždÄ›ní (_1)" #: modules/cons.py:293 msgid "Execute Custom Tile 1" msgstr "Provést vlastní nastavení dláždÄ›ní (1)" #: modules/cons.py:294 msgid "Custom Tile 2 S_et" msgstr "Vlastní na_stavení dláždÄ›ní (2)" #: modules/cons.py:294 msgid "Edit Custom Tile 2 Settings" msgstr "Upravit vlastní nastavení dláždÄ›ní (2)" #: modules/cons.py:295 msgid "Custom Tile _2 Run" msgstr "Provedení vlastního nastavení dláždÄ›ní (_2)" #: modules/cons.py:295 msgid "Execute Custom Tile 2" msgstr "Provést vlastní nastavení dláždÄ›ní (2)" #: modules/cons.py:296 modules/cons.py:325 msgid "U_ndo Tiling" msgstr "DláždÄ›ní _zpÄ›t" #: modules/cons.py:296 modules/cons.py:325 msgid "Undo the Latest Tiling Operation" msgstr "Vrátit poslední dláždicí operaci zpÄ›t" #: modules/cons.py:297 modules/cons.py:324 msgid "_Invert Tiling Order" msgstr "_Obrátit poÅ™adí dláždÄ›ní" #: modules/cons.py:297 modules/cons.py:324 msgid "Invert the Order of the Latest Tiling Operation" msgstr "Obrátit poÅ™adí poslední dláždicí operace" #: modules/cons.py:298 modules/cons.py:326 msgid "C_ycle Tiling Order" msgstr "_ToÄit poÅ™adí dláždÄ›ní" #: modules/cons.py:298 modules/cons.py:326 msgid "Cycle the Order of the Latest Tiling Operation" msgstr "ToÄit poÅ™adí poslední dláždicí operace" #: modules/cons.py:299 msgid "_Maximize Windows" msgstr "_ZvÄ›tÅ¡it okna" #: modules/cons.py:299 msgid "Maximize The Checked Windows" msgstr "ZvÄ›tÅ¡it oznaÄená okna" #: modules/cons.py:300 msgid "_Unmaximize Windows" msgstr "Z_ruÅ¡it zvÄ›tÅ¡ení oken" #: modules/cons.py:300 msgid "Unmaximize The Checked Windows" msgstr "ZruÅ¡it zvÄ›tÅ¡ení oznaÄených oken" #: modules/cons.py:301 msgid "_Close Windows" msgstr "_Zavřít okna" #: modules/cons.py:301 msgid "Close The Checked Windows" msgstr "Zavřít vÅ¡echna oznaÄená okna" #: modules/cons.py:302 msgid "Move _Up" msgstr "Posunout _nahoru" #: modules/cons.py:302 msgid "Move the Selected Row Up" msgstr "Posunout oznaÄený řádek nahoru" #: modules/cons.py:303 msgid "Move _Down" msgstr "Posunout _dolů" #: modules/cons.py:303 msgid "Move the Selected Row Down" msgstr "Posunout oznaÄený řádek dolů" #: modules/cons.py:304 msgid "_Remove" msgstr "_Odstranit" #: modules/cons.py:304 msgid "Remove the Selected Row" msgstr "Odstranit oznaÄený řádek" #: modules/cons.py:305 msgid "Show/Hide _Toolbar" msgstr "Ukázat/Skrýt _nástrojový pruh" #: modules/cons.py:305 msgid "Toggle Show/Hide Toolbar" msgstr "Ukázat/Skrýt nástrojový pruh" #: modules/cons.py:306 msgid "_Increase Toolbar Icons Size" msgstr "Z_vÄ›tÅ¡it velikost ikon v nástrojovém pruhu" #: modules/cons.py:306 msgid "Increase the Size of the Toolbar Icons" msgstr "ZvÄ›tÅ¡it velikost ikon v nástrojovém pruhu" #: modules/cons.py:307 msgid "_Decrease Toolbar Icons Size" msgstr "Z_menÅ¡it velikost ikon v nástrojovém pruhu" #: modules/cons.py:307 msgid "Decrease the Size of the Toolbar Icons" msgstr "ZmenÅ¡it velikost ikon v nástrojovém pruhu" #: modules/cons.py:308 msgid "X Tile Project Home Page" msgstr "Stránky projektu X Tile" #: modules/cons.py:309 modules/cons.py:310 msgid "_About" msgstr "_O programu" #: modules/cons.py:309 modules/cons.py:310 glade/x-tile.glade.h:1 msgid "About X Tile" msgstr "O X Tile" #: modules/cons.py:311 msgid "_Close All" msgstr "_Zavřít vÅ¡e" #: modules/cons.py:311 msgid "Close All Windows" msgstr "Zavřít vÅ¡echna okna" #: modules/cons.py:312 msgid "_Unmaximize All" msgstr "Z_ruÅ¡it zvÄ›tÅ¡ení u vÅ¡eho" #: modules/cons.py:312 msgid "Unmaximize All Windows" msgstr "ZruÅ¡it zvÄ›tÅ¡ení u vÅ¡ech oken" #: modules/cons.py:313 msgid "_Maximize All" msgstr "_ZvÄ›tÅ¡it vÅ¡e" #: modules/cons.py:313 msgid "Maximize All Windows" msgstr "ZvÄ›tÅ¡it vÅ¡echna okna" #: modules/cons.py:314 msgid "Tile All _Quad" msgstr "Vydláždit vÅ¡e _ÄtvercovÄ›" #: modules/cons.py:314 msgid "Tile All Windows Quad" msgstr "Vydláždit vÅ¡echna okna ÄtvercovÄ›" #: modules/cons.py:315 msgid "Tile All Triangle _Down" msgstr "Vydláždit vÅ¡e trojúhelníkovÄ› _dolů" #: modules/cons.py:315 msgid "Tile All Windows Triangle Down" msgstr "Vydláždit vÅ¡echna okna trojúhelníkovÄ› dolů" #: modules/cons.py:316 msgid "Tile All Triangle _Up" msgstr "Vydláždit vÅ¡e trojúhelníkovÄ› _nahoru" #: modules/cons.py:316 msgid "Tile All Windows Triangle Up" msgstr "Vydláždit vÅ¡echna okna trojúhelníkovÄ› nahoru" #: modules/cons.py:317 msgid "Tile All Triangle _Right" msgstr "Vydláždit vÅ¡e trojúhelníkovÄ› v_pravo" #: modules/cons.py:317 msgid "Tile All Windows Triangle Right" msgstr "Vydláždit vÅ¡echna okna trojúhelníkovÄ› vpravo" #: modules/cons.py:318 msgid "Tile All Triangle _Left" msgstr "Vydláždit vÅ¡e trojúhelníkovÄ› v_levo" #: modules/cons.py:318 msgid "Tile All Windows Triangle Left" msgstr "Vydláždit vÅ¡echna okna trojúhelníkovÄ› vlevo" #: modules/cons.py:319 msgid "Tile All Custom _2" msgstr "Vydláždit vÅ¡echno podle rozvržení _2" #: modules/cons.py:319 msgid "Tile All Windows Custom 2" msgstr "Vydláždit vÅ¡echna okna podle vlastního rozvržení 2" #: modules/cons.py:320 msgid "Tile All Custom _1" msgstr "Vydláždit vÅ¡echno podle rozvržení _1" #: modules/cons.py:320 msgid "Tile All Windows Custom 1" msgstr "Vydláždit vÅ¡echna okna podle vlastního rozvržení 1" #: modules/cons.py:321 msgid "Tile All _Grid" msgstr "Vydláždit vÅ¡e v _mřížce" #: modules/cons.py:321 msgid "Tile All Windows Grid" msgstr "Vydláždit vÅ¡echna okna v mřížce" #: modules/cons.py:322 msgid "Tile All _Horizontally" msgstr "Vydláždit vÅ¡e _vodorovnÄ›" #: modules/cons.py:322 msgid "Tile All Windows Horizontally" msgstr "Vydláždit vÅ¡echna okna vodorovnÄ›" #: modules/cons.py:323 msgid "Tile All _Vertically" msgstr "Vydláždit vÅ¡e _svisle" #: modules/cons.py:323 msgid "Tile All Windows Vertically" msgstr "Vydláždit vÅ¡echna okna svisle" #: glade/x-tile.glade.h:2 msgid "" "Copyright © 2009-2012\n" "Giuseppe Penone \n" "Chris Camacho " msgstr "" "Copyright © 2009-2012\n" "Giuseppe Penone \n" "Chris Camacho " #: glade/x-tile.glade.h:6 msgid "http://www.giuspen.com/x-tile/" msgstr "http://www.giuspen.com/x-tile/" #: glade/x-tile.glade.h:7 msgid "" "\n" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software\n" "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n" "MA 02110-1301, USA." msgstr "" "\n" "Tento program je svobodným softwarem; můžete jej rozdávat a/nebo upravovat " "za \n" "podmínek GNU General Public License (GPL), jak jsou zveÅ™ejnÄ›ny Free " "Software \n" "Foundation; buÄ ve verzi 2 licence, nebo (podle své volby) v kterékoli \n" "pozdÄ›jší verzi.\n" "\n" "Tento program je šířen v nadÄ›ji, že bude užiteÄný, ale BEZ JAKÉKOLI " "ZÃRUKY; \n" "také bez pÅ™edpokládané záruky PRODEJNOSTI nebo POUŽITELNOSTI PRO NÄšJAKà \n" "URÄŒITà ÚČEL: Více podrobností naleznete v GNU Library General Public \n" "License.\n" "\n" "Kopii GNU Library General Public License byste mÄ›l obdržet spoleÄnÄ› s " "tímto \n" "balíkem; a pokud ne, napiÅ¡te Free Software Foundation, Inc., 51 Franklin " "St, \n" "Fifth Floor, Boston, MA 02110-1301, USA." #: glade/x-tile.glade.h:22 msgid "" "Chinese Simplified (zh_CN) Khiyuan Fan \n" "Chinese Traditional (zh_TW) Yan-ren Tsai \n" "Czech (cs) Pavel Fric \n" "French (fr) Ludovic Troisi \n" "German (de) Jöran Zeller \n" "Italian (it) Giuseppe Penone \n" "Polish (pl) Dominik Wójt \n" "Russian (ru) Andriy Kovtun " msgstr "" "ZjednoduÅ¡ená ÄínÅ¡tina (zh_CN) Khiyuan Fan \n" "TradiÄní ÄínÅ¡tina (zh_TW) Yan-ren Tsai \n" "ÄŒeÅ¡tina (cs) Pavel Fric \n" "Å panÄ›lÅ¡tina (es_AR) MeloPixel \n" "FrancouzÅ¡tina (fr) Ludovic Troisi \n" "NÄ›mÄina (de) Jöran Zeller \n" "ItalÅ¡tina (it) Giuseppe Penone \n" "PolÅ¡tina (pl) Dominik Wójt \n" "RuÅ¡tina (ru) Andriy Kovtun " #: glade/x-tile.glade.h:31 msgid "Preferences" msgstr "Nastavení" #: glade/x-tile.glade.h:32 msgid "Do Not List Minimized Windows" msgstr "Neukazovat žádná zmenÅ¡ená okna" #: glade/x-tile.glade.h:33 msgid "Only Current Workspace" msgstr "Jen souÄasná pracovní oblast" #: glade/x-tile.glade.h:34 msgid "Enable System Tray Docking" msgstr "Povolit ikonu v oznamovací oblasti panelu" #: glade/x-tile.glade.h:35 msgid "Start Minimized in the System Tray" msgstr "Spustit zmenÅ¡ené v oznamovací oblasti panelu" #: glade/x-tile.glade.h:36 msgid "Use AppIndicator for Docking" msgstr "Použít ukazatel programu pro ukotvení v panelu" #: glade/x-tile.glade.h:37 msgid "Show Toolbar" msgstr "Ukázat nástrojový pruh" #: glade/x-tile.glade.h:38 msgid " Language " msgstr " Jazyk " #: glade/x-tile.glade.h:39 msgid "Override Monitor 1 Tiling Area" msgstr "PÅ™epsat oblast dláždÄ›ní obrazovka 1" #: glade/x-tile.glade.h:40 msgid "X" msgstr "X" #: glade/x-tile.glade.h:41 msgid "Y" msgstr "Y" #: glade/x-tile.glade.h:42 msgid "Position" msgstr "Poloha" #: glade/x-tile.glade.h:43 msgid "Width" msgstr "Šířka" #: glade/x-tile.glade.h:44 msgid "Height" msgstr "Výška" #: glade/x-tile.glade.h:45 msgid "Size" msgstr "Velikost" #: glade/x-tile.glade.h:46 msgid "Override Monitor 2 Tiling Area" msgstr "PÅ™epsat oblast dláždÄ›ní obrazovka 2" #: glade/x-tile.glade.h:47 msgid "Close" msgstr "Zavřít" #: glade/x-tile.glade.h:48 msgid "Cancel" msgstr "ZruÅ¡it" #: glade/x-tile.glade.h:49 msgid "OK" msgstr "OK" #: glade/x-tile.glade.h:50 msgid "Custom Tiling Layout" msgstr "Vlastní rozvržení dláždÄ›ní" #: glade/x-tile.glade.h:51 msgid "1) Tile Some Windows Manually" msgstr "1) VydláždÄ›te urÄitá okna ruÄnÄ›" #: glade/x-tile.glade.h:52 msgid "2) Select Them in the X Tile Windows List" msgstr "2) Vyberte je v seznamu oken X Tile" #: glade/x-tile.glade.h:53 msgid "3) Click the Update Button" msgstr "3) KlepnÄ›te na tlaÄítko Nahrát znovu" #: glade/x-tile.glade.h:54 msgid "Update" msgstr "Aktualizovat" #: glade/x-tile.glade.h:55 msgid "Rows to Filter" msgstr "PÅ™idat filtr" #: glade/x-tile.glade.h:56 msgid "Add an Application Filter" msgstr "PÅ™idat programový filtr" #: glade/x-tile.glade.h:57 msgid "Remove an Application Filter" msgstr "Odstranit programový filtr" #: glade/x-tile.glade.h:58 msgid "Add Row" msgstr "PÅ™idat řádek" #: glade/x-tile.glade.h:60 msgid "X Tile" msgstr "X Tile" #: glade/x-tile.glade.h:61 msgid "Set Destination Workspace" msgstr "Nastavit cílovou pracovní oblast" #: glade/x-tile.glade.h:62 msgid "Exit After Tile" msgstr "UkonÄit po vydláždÄ›ní" x-tile-3.3/locale/de.po000066400000000000000000000412711375405375400147720ustar00rootroot00000000000000# German translations for x-tile package. # Copyright (C) 2010 THE x-tile'S COPYRIGHT HOLDER # This file is distributed under the same license as the x-tile package. # maul , 2010. # msgid "" msgstr "" "Project-Id-Version: x-tile 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-09-07 23:14+0200\n" "PO-Revision-Date: 2012-09-09 17:26+0100\n" "Last-Translator: Jöran Zeller \n" "Language-Team: German\n" "Language: German (Deutsch)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: modules/core.py:307 msgid "Use Drag and Drop to Sort the Rows" msgstr "Benutze Drag and Drop um Zeilen zu sortieren" #: modules/core.py:347 msgid "The New Language will be Available Only After Restarting X Tile" msgstr "Neue Spracheinstellung erst nach Neustart von X Tile verfügbar" #: modules/core.py:369 glade/x-tile.glade.h:5 msgid "Tile the Windows Upon your X Desktop" msgstr "Tile Fenster auf deinem X Desktop" #: modules/core.py:583 msgid "The Size of the Toolbar Icons is already at the Maximum Value" msgstr "Werkzeugleisten Icons sind schon maximal" #: modules/core.py:593 msgid "The Size of the Toolbar Icons is already at the Minimum Value" msgstr "Werkzeugleisten Icons sind schon minimal" #: modules/core.py:703 modules/core.py:711 modules/core.py:719 msgid "No Row is Selected" msgstr "Keine Zeile ausgewählt" #: modules/core.py:741 modules/core.py:775 msgid "No Application Selected!" msgstr "Keine Anwendung ausgewählt!" #: modules/core.py:855 msgid "Grid Details" msgstr "Grid Details" #: modules/core.py:863 msgid "Rows" msgstr "_Zeile" #: modules/core.py:870 msgid "Columns" msgstr "Spalten" #: modules/core.py:956 modules/core.py:964 modules/core.py:974 msgid "No Windows Checked" msgstr "Keine Fenster ausgewählt" #: modules/core.py:1014 modules/core.py:1027 msgid "Edit Custom Tile Settings" msgstr "Persönliche Tiling Schema bearbeiten" #: modules/core.py:1174 msgid "" "The Custom Tile 1 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 1 " "Set'" msgstr "" "Das persönliche tiling Schema (1) wurde noch nicht übernommen: Im Menü 'Tile-" ">Eigenes Schema (1) setzen anklicken'" #: modules/core.py:1192 msgid "" "The Custom Tile 2 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 2 " "Set'" msgstr "" "Das persönliche tiling Schema wurde noch nicht übernommen: Im Menü 'Tile-" ">Eigenes Schema (2) setzen anklicken'" #: modules/cons.py:268 msgid "_File" msgstr "_Datei" #: modules/cons.py:269 msgid "_Edit" msgstr "_Bearbeiten" #: modules/cons.py:270 msgid "_Row" msgstr "_Zeile" #: modules/cons.py:271 msgid "_Tile" msgstr "_Tile" #: modules/cons.py:272 msgid "_View" msgstr "_Ansicht" #: modules/cons.py:273 modules/cons.py:308 msgid "_Help" msgstr "_Hilfe" #: modules/cons.py:275 msgid "_Filter" msgstr "_Filter" #: modules/cons.py:275 msgid "Filter Rows" msgstr "Filtere Zeilen" #: modules/cons.py:276 msgid "Selected by _Default" msgstr "Immer selektiert" #: modules/cons.py:276 glade/x-tile.glade.h:59 msgid "Rows to be Selected by Default" msgstr "Zeilen die immer selektiert sein sollen" #: modules/cons.py:277 msgid "_Reload" msgstr "_Neu Laden" #: modules/cons.py:277 msgid "Reload the Windows List" msgstr "Neu laden" #: modules/cons.py:278 msgid "_Quit" msgstr "_Beenden" #: modules/cons.py:278 msgid "Quit the Application" msgstr "_Beenden der Anwendung" #: modules/cons.py:279 msgid "_Exit X Tile" msgstr "_Verlasse X Tile" #: modules/cons.py:279 msgid "Exit from X Tile" msgstr "Verlasse X Tile" #: modules/cons.py:280 msgid "Show/Hide _X Tile" msgstr "Zeige/Verstecke X Tile" #: modules/cons.py:280 msgid "Toggle Show/Hide X Tile" msgstr "Schalte Zeige/Verstecke X Tile um" #: modules/cons.py:281 msgid "_Preferences" msgstr "_Voreinstellungen" #: modules/cons.py:281 msgid "Open the Preferences Window" msgstr "Öffnen der Voreinstellungen" #: modules/cons.py:282 msgid "Select _All" msgstr "_Alles auswählen" #: modules/cons.py:282 msgid "Select All the Windows in the List" msgstr "Alles markieren" #: modules/cons.py:283 msgid "Deselect A_ll" msgstr "A_lles abwählen" #: modules/cons.py:283 msgid "Deselect All the Windows in the List" msgstr "Alle Fenster in der Liste abwählen" #: modules/cons.py:284 msgid "Tile _Vertically" msgstr "_Vertikal Tilen" #: modules/cons.py:284 msgid "Tile Vertically The Checked Windows" msgstr "Tile vertikal" #: modules/cons.py:285 msgid "Tile _Horizontally" msgstr "_Horizontal Tilen" #: modules/cons.py:285 msgid "Tile Horizontally The Checked Windows" msgstr "Tile horizontal" #: modules/cons.py:286 msgid "_Triangle Up" msgstr "_Triangel oben" #: modules/cons.py:286 msgid "Tile Triangle Up The Checked Windows" msgstr "Tile Triangel oben" #: modules/cons.py:287 msgid "Triangle _Down" msgstr "Triangel _unten" #: modules/cons.py:287 msgid "Tile Triangle Down The Checked Windows" msgstr "Tile Triangel unten" #: modules/cons.py:288 msgid "Triangle _Left" msgstr "Triangel _links" #: modules/cons.py:288 msgid "Tile Triangle Left The Checked Windows" msgstr "Tile Triangel links" #: modules/cons.py:289 msgid "Triangle _Right" msgstr "Triangel _rechts" #: modules/cons.py:289 msgid "Tile Triangle Right The Checked Windows" msgstr "Tile Triangle rechts" #: modules/cons.py:290 msgid "Tile _Quad" msgstr "Tile _quadratisch" #: modules/cons.py:290 msgid "Tile into 4 quadrants The Checked Windows" msgstr "Tile quadratisch" #: modules/cons.py:291 msgid "Tile _Grid" msgstr "Tile _Raster" #: modules/cons.py:291 msgid "Tile into an Arbitrary Grid The Checked Windows" msgstr "Tile die markierten Fenster in ein beliebiges Raster" #: modules/cons.py:292 msgid "Custom Tile 1 _Set" msgstr "Eigenes _Schema (1) setzen" #: modules/cons.py:292 msgid "Edit Custom Tile 1 Settings" msgstr "Eigenes Schema (1) bearbeiten" #: modules/cons.py:293 msgid "Custom Tile _1 Run" msgstr "Eigenes Tiling Schema (_1) ausführen" #: modules/cons.py:293 msgid "Execute Custom Tile 1" msgstr "Eigenes Tiling Schema (1) ausführen" #: modules/cons.py:294 msgid "Custom Tile 2 S_et" msgstr "Eigenes Schema (2) s_etzen" #: modules/cons.py:294 msgid "Edit Custom Tile 2 Settings" msgstr "Eigenes Schema (2) bearbeiten" #: modules/cons.py:295 msgid "Custom Tile _2 Run" msgstr "Eigenes Tiling Schema (_2) ausführen" #: modules/cons.py:295 msgid "Execute Custom Tile 2" msgstr "Eigenes Tiling Schema (2) ausführen" #: modules/cons.py:296 modules/cons.py:325 msgid "U_ndo Tiling" msgstr "Tiling rückgä_ngig machen" #: modules/cons.py:296 modules/cons.py:325 msgid "Undo the Latest Tiling Operation" msgstr "Mache die letzte tiling Operation rückgängig" #: modules/cons.py:297 modules/cons.py:324 msgid "_Invert Tiling Order" msgstr "_Invertiere die tiling Reihenfolge" #: modules/cons.py:297 modules/cons.py:324 msgid "Invert the Order of the Latest Tiling Operation" msgstr "Invertiere die Reihenfolge der letzten tiling Operation" #: modules/cons.py:298 modules/cons.py:326 msgid "C_ycle Tiling Order" msgstr "_Durchlaufe Tiling Reihenfolge" #: modules/cons.py:298 modules/cons.py:326 msgid "Cycle the Order of the Latest Tiling Operation" msgstr "Durchlaufe die Reihenfolge der letzten tiling Aktion" #: modules/cons.py:299 msgid "_Maximize Windows" msgstr "Fenster maximieren" #: modules/cons.py:299 msgid "Maximize The Checked Windows" msgstr "Markierte Fenster maximieren" #: modules/cons.py:300 msgid "_Unmaximize Windows" msgstr "Maximierung der Fenster aufheben" #: modules/cons.py:300 msgid "Unmaximize The Checked Windows" msgstr "Maximierung markierter Fenster aufheben" #: modules/cons.py:301 msgid "_Close Windows" msgstr "Fenster schliessen" #: modules/cons.py:301 msgid "Close The Checked Windows" msgstr "Schliesse alle markierten Fenster" #: modules/cons.py:302 msgid "Move _Up" msgstr "Verschiebe nach _oben" #: modules/cons.py:302 msgid "Move the Selected Row Up" msgstr "Verschiebe die ausgewählte Zeile nach oben" #: modules/cons.py:303 msgid "Move _Down" msgstr "Verschiebe nach _unten" #: modules/cons.py:303 msgid "Move the Selected Row Down" msgstr "Verschiebe die ausgewählte Zeile nach unten" #: modules/cons.py:304 msgid "_Remove" msgstr "_Entferne" #: modules/cons.py:304 msgid "Remove the Selected Row" msgstr "Entferne die markierte Zeile" #: modules/cons.py:305 msgid "Show/Hide _Toolbar" msgstr "Zeige/Verstecke Werkzeugleiste" #: modules/cons.py:305 msgid "Toggle Show/Hide Toolbar" msgstr "Schalte Zeige/Verstecke Werkzeugleiste um" #: modules/cons.py:306 msgid "_Increase Toolbar Icons Size" msgstr "_Vergrössere Icons der Werkzeugleiste" #: modules/cons.py:306 msgid "Increase the Size of the Toolbar Icons" msgstr "Vergrössere Icons der Werkzeugleiste" #: modules/cons.py:307 msgid "_Decrease Toolbar Icons Size" msgstr "_Verkleinere Icons der Werkzeugleiste" #: modules/cons.py:307 msgid "Decrease the Size of the Toolbar Icons" msgstr "Verkleinere Icons der Werkzeugleiste" #: modules/cons.py:308 msgid "X Tile Project Home Page" msgstr "X Tile Projekt Home Page" #: modules/cons.py:309 modules/cons.py:310 msgid "_About" msgstr "_Über" #: modules/cons.py:309 modules/cons.py:310 glade/x-tile.glade.h:1 msgid "About X Tile" msgstr "Über X Tile" #: modules/cons.py:311 msgid "_Close All" msgstr "_Alle schliessen" #: modules/cons.py:311 msgid "Close All Windows" msgstr "Alle Fenster schliessen" #: modules/cons.py:312 msgid "_Unmaximize All" msgstr "Alles _demaximieren" #: modules/cons.py:312 msgid "Unmaximize All Windows" msgstr "Maximierung aller Fenster aufheben" #: modules/cons.py:313 msgid "_Maximize All" msgstr "_Maximiere Alles" #: modules/cons.py:313 msgid "Maximize All Windows" msgstr "Alle Fenster maximieren" #: modules/cons.py:314 msgid "Tile All _Quad" msgstr "Tile _Quadratisch" #: modules/cons.py:314 msgid "Tile All Windows Quad" msgstr "Tile alle Fenster Quadratisch" #: modules/cons.py:315 msgid "Tile All Triangle _Down" msgstr "Tile Triangel _unten" #: modules/cons.py:315 msgid "Tile All Windows Triangle Down" msgstr "Tile alle Fenster Triangel unten" #: modules/cons.py:316 msgid "Tile All Triangle _Up" msgstr "Tile Triangel _oben" #: modules/cons.py:316 msgid "Tile All Windows Triangle Up" msgstr "Tile alle Fenster Triangel oben" #: modules/cons.py:317 msgid "Tile All Triangle _Right" msgstr "Tile Triangel _rechts" #: modules/cons.py:317 msgid "Tile All Windows Triangle Right" msgstr "Tile alle Fenster Triangel rechts" #: modules/cons.py:318 msgid "Tile All Triangle _Left" msgstr "Tile Triangel _links" #: modules/cons.py:318 msgid "Tile All Windows Triangle Left" msgstr "Tile alle Fenster Triangel links" #: modules/cons.py:319 msgid "Tile All Custom _2" msgstr "Tile Schema _2" #: modules/cons.py:319 msgid "Tile All Windows Custom 2" msgstr "Tile alle Fenster Schema 2" #: modules/cons.py:320 msgid "Tile All Custom _1" msgstr "Tile Schema _1" #: modules/cons.py:320 msgid "Tile All Windows Custom 1" msgstr "Tile alle Fenster Schema 1" #: modules/cons.py:321 msgid "Tile All _Grid" msgstr "Tile alle in _Raster" #: modules/cons.py:321 msgid "Tile All Windows Grid" msgstr "Tile alle Fenster in Raster" #: modules/cons.py:322 msgid "Tile All _Horizontally" msgstr "Tile _horizontal" #: modules/cons.py:322 msgid "Tile All Windows Horizontally" msgstr "Tile alle Fenster horizontal" #: modules/cons.py:323 msgid "Tile All _Vertically" msgstr "Tile _vertikal" #: modules/cons.py:323 msgid "Tile All Windows Vertically" msgstr "Tile alle Fenster vertikal" #: glade/x-tile.glade.h:2 msgid "" "Copyright © 2009-2012\n" "Giuseppe Penone \n" "Chris Camacho " msgstr "" "Copyright © 2009-2012\n" "Giuseppe Penone \n" "Chris Camacho " #: glade/x-tile.glade.h:6 msgid "http://www.giuspen.com/x-tile/" msgstr "http://www.giuspen.com/x-tile/" #: glade/x-tile.glade.h:7 msgid "" "\n" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software\n" "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n" "MA 02110-1301, USA." msgstr "" "\n" "Dieses Programm ist freie Software. Sie können es unter den\n" "Bedingungen der GNU General Public License, wie von der Free Software\n" "Foundation veröffentlicht, weitergeben und/oder modifizieren,\n" "entweder gemäß Version 3 der Lizenz oder (nach Ihrer Option) jeder\n" "späteren Version.\n" "\n" "Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß\n" "es Ihnen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar\n" "ohne die implizite Garantie der MARKTREIFE oder der\n" "VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK. Details finden Sie in der\n" "GNU General Public License.\n" "Sie sollten ein Exemplar der GNU General Public License zusammen mit\n" "diesem Programm erhalten haben. Falls nicht, siehe\n" "." #: glade/x-tile.glade.h:22 msgid "" "Chinese Simplified (zh_CN) Khiyuan Fan \n" "Chinese Traditional (zh_TW) Yan-ren Tsai \n" "Czech (cs) Pavel Fric \n" "French (fr) Ludovic Troisi \n" "German (de) Jöran Zeller \n" "Italian (it) Giuseppe Penone \n" "Polish (pl) Dominik Wójt \n" "Russian (ru) Andriy Kovtun " msgstr "" "Chinesisch vereinfacht (zh_CN) Khiyuan Fan \n" "Chinesisch traditionell (zh_TW) Yan-ren Tsai \n" "Czech (cs) Pavel Fric \n" "French (fr) Ludovic Troisi \n" "German (de) Jöran Zeller \n" "Italian (it) Giuseppe Penone \n" "Russian (ru) Andriy Kovtun " #: glade/x-tile.glade.h:31 msgid "Preferences" msgstr "Einstellungen" #: glade/x-tile.glade.h:32 msgid "Do Not List Minimized Windows" msgstr "Zeige keine minimierten Fenster an" #: glade/x-tile.glade.h:33 msgid "Only Current Workspace" msgstr "Nur momentanen Arbeitsbereich" #: glade/x-tile.glade.h:34 msgid "Enable System Tray Docking" msgstr "Docken zu System Tray" #: glade/x-tile.glade.h:35 msgid "Start Minimized in the System Tray" msgstr "Starte minimiert im System Tray" #: glade/x-tile.glade.h:36 msgid "Use AppIndicator for Docking" msgstr "Benutze AppIndicator zum Andocken" #: glade/x-tile.glade.h:37 msgid "Show Toolbar" msgstr "Zeige Werkzeugleiste" #: glade/x-tile.glade.h:38 msgid " Language " msgstr " Sprache " #: glade/x-tile.glade.h:39 msgid "Override Monitor 1 Tiling Area" msgstr "Tiling Areal Monitor 1 überschreiben" #: glade/x-tile.glade.h:40 msgid "X" msgstr "X" #: glade/x-tile.glade.h:41 msgid "Y" msgstr "Y" #: glade/x-tile.glade.h:42 msgid "Position" msgstr "Position" #: glade/x-tile.glade.h:43 msgid "Width" msgstr "Breite" #: glade/x-tile.glade.h:44 msgid "Height" msgstr "Höhe" #: glade/x-tile.glade.h:45 msgid "Size" msgstr "Grösse" #: glade/x-tile.glade.h:46 msgid "Override Monitor 2 Tiling Area" msgstr "Tiling Areal Monitor 2 überschreiben" #: glade/x-tile.glade.h:47 msgid "Close" msgstr "Schliessen" #: glade/x-tile.glade.h:48 msgid "Cancel" msgstr "Abbrechen" #: glade/x-tile.glade.h:49 msgid "OK" msgstr "OK" #: glade/x-tile.glade.h:50 msgid "Custom Tiling Layout" msgstr "Persönliches Tiling Schema" #: glade/x-tile.glade.h:51 msgid "1) Tile Some Windows Manually" msgstr "1) Tile bestimmte Fenster manuell" #: glade/x-tile.glade.h:52 msgid "2) Select Them in the X Tile Windows List" msgstr "2) Wähle sie in der X Tile Fenster Liste aus" #: glade/x-tile.glade.h:53 msgid "3) Click the Update Button" msgstr "3) Klicke auf den neuladen Knopf" #: glade/x-tile.glade.h:54 msgid "Update" msgstr "Update" #: glade/x-tile.glade.h:55 msgid "Rows to Filter" msgstr "Filter hinzufügen" #: glade/x-tile.glade.h:56 msgid "Add an Application Filter" msgstr "Einen Anwendungsfilter hinzufügen" #: glade/x-tile.glade.h:57 msgid "Remove an Application Filter" msgstr "Einen Anwendungsfilter entfernen" #: glade/x-tile.glade.h:58 msgid "Add Row" msgstr "Zeile hinzufügen" #: glade/x-tile.glade.h:60 msgid "X Tile" msgstr "X Tile" #: glade/x-tile.glade.h:61 msgid "Set Destination Workspace" msgstr "Setze Ziel Arbeitsfläche" #: glade/x-tile.glade.h:62 msgid "Exit After Tile" msgstr "Schliessen nach tiling" x-tile-3.3/locale/es_AR.po000066400000000000000000000416021375405375400153710ustar00rootroot00000000000000# Spanish translations for PACKAGE package. # Copyright (C) 2011 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # giuspen , 2011. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-09-07 23:14+0200\n" "PO-Revision-Date: 2012-05-25 14:46-0300\n" "Last-Translator: melopixel \n" "Language-Team: Spanish \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-Language: Spanish\n" "X-Poedit-Country: ARGENTINA\n" "X-Poedit-SourceCharset: utf-8\n" #: modules/core.py:307 msgid "Use Drag and Drop to Sort the Rows" msgstr "Utilice Arrastrar y Soltar para ordenar las Filas" #: modules/core.py:347 msgid "The New Language will be Available Only After Restarting X Tile" msgstr "El nuevo idioma no estará disponible hasta que Reinicie X Tile" #: modules/core.py:369 glade/x-tile.glade.h:5 msgid "Tile the Windows Upon your X Desktop" msgstr "Mosaico de Windows Sobre su escritorio X" #: modules/core.py:583 msgid "The Size of the Toolbar Icons is already at the Maximum Value" msgstr "" "El tamaño de los Iconos de la Barra de Herramientas ya está en su Valor " "Máximo" #: modules/core.py:593 msgid "The Size of the Toolbar Icons is already at the Minimum Value" msgstr "" "El tamaño de los Iconos de la Barra de Herramientas ya está en su Valor " "Mínimo" #: modules/core.py:703 modules/core.py:711 modules/core.py:719 msgid "No Row is Selected" msgstr "No hay Filas Seleccionadas" #: modules/core.py:741 modules/core.py:775 msgid "No Application Selected!" msgstr "No hay ninguna Aplicación Seleccionada!" #: modules/core.py:855 msgid "Grid Details" msgstr "Detallar Cuadricula" #: modules/core.py:863 msgid "Rows" msgstr "Fila" #: modules/core.py:870 msgid "Columns" msgstr "Columnas" #: modules/core.py:956 modules/core.py:964 modules/core.py:974 msgid "No Windows Checked" msgstr "No hay Ventanas Seleccionadas" #: modules/core.py:1014 modules/core.py:1027 msgid "Edit Custom Tile Settings" msgstr "Editar configuración Personalizada de Mosaico" #: modules/core.py:1174 msgid "" "The Custom Tile 1 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 1 " "Set'" msgstr "" "El Mosaico Personalizado 1 No de ha establecido: Haz Clic en el Menú -> " "Mosaico Personalizado 1" #: modules/core.py:1192 msgid "" "The Custom Tile 2 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 2 " "Set'" msgstr "" "El Mosaico Personalizado 2 No de ha establecido: Haz Clic en el Menú -> " "Mosaico Personalizado 2" #: modules/cons.py:268 msgid "_File" msgstr "_Archivo" #: modules/cons.py:269 msgid "_Edit" msgstr "_Editar" #: modules/cons.py:270 msgid "_Row" msgstr "_Fila" #: modules/cons.py:271 msgid "_Tile" msgstr "_Mosaico" #: modules/cons.py:272 msgid "_View" msgstr "_Ver" #: modules/cons.py:273 modules/cons.py:308 msgid "_Help" msgstr "_Ayuda" #: modules/cons.py:275 msgid "_Filter" msgstr "_Filtro" #: modules/cons.py:275 msgid "Filter Rows" msgstr "Filtrar Filas" #: modules/cons.py:276 msgid "Selected by _Default" msgstr "Seleccionar por _Defecto" #: modules/cons.py:276 glade/x-tile.glade.h:59 msgid "Rows to be Selected by Default" msgstr "Filas para seleccionar por defecto" #: modules/cons.py:277 msgid "_Reload" msgstr "_Actualizar" #: modules/cons.py:277 msgid "Reload the Windows List" msgstr "Actualiza la Lista de Ventanas" #: modules/cons.py:278 msgid "_Quit" msgstr "_Salir" #: modules/cons.py:278 msgid "Quit the Application" msgstr "Salir de Aplicación" #: modules/cons.py:279 msgid "_Exit X Tile" msgstr "Salir D_espués de Mosaico" #: modules/cons.py:279 msgid "Exit from X Tile" msgstr "Salir Después del Mosaico" #: modules/cons.py:280 msgid "Show/Hide _X Tile" msgstr "Muestra y Oculta _X Tile" #: modules/cons.py:280 msgid "Toggle Show/Hide X Tile" msgstr "Muestra y Oculta X Tile" #: modules/cons.py:281 msgid "_Preferences" msgstr "_Preferencias" #: modules/cons.py:281 msgid "Open the Preferences Window" msgstr "Abre las Preferencias de Ventanas" #: modules/cons.py:282 msgid "Select _All" msgstr "M_arcar Todo" #: modules/cons.py:282 msgid "Select All the Windows in the List" msgstr "Tilda Todas las Ventanas de la Lista " #: modules/cons.py:283 msgid "Deselect A_ll" msgstr "Desmarcar _todo" #: modules/cons.py:283 msgid "Deselect All the Windows in the List" msgstr "Des-tilda Todas las Ventanas de la Lista " #: modules/cons.py:284 msgid "Tile _Vertically" msgstr "Mosaico _Vertical" #: modules/cons.py:284 msgid "Tile Vertically The Checked Windows" msgstr "Muestra las Ventanas en modo Mosaico Vertical" #: modules/cons.py:285 msgid "Tile _Horizontally" msgstr "Mosaico _Horizontal" #: modules/cons.py:285 msgid "Tile Horizontally The Checked Windows" msgstr "Muestra las Ventanas en modo Mosaico Horizontal" #: modules/cons.py:286 msgid "_Triangle Up" msgstr "_Triangulo Arriba" #: modules/cons.py:286 msgid "Tile Triangle Up The Checked Windows" msgstr "Muestra las Ventanas en Modo Triangular hacia Arriba" #: modules/cons.py:287 msgid "Triangle _Down" msgstr "Triangulo _Abajo" #: modules/cons.py:287 msgid "Tile Triangle Down The Checked Windows" msgstr "Muestra las Ventanas en Modo Triangular hacia Abajo" #: modules/cons.py:288 msgid "Triangle _Left" msgstr "Triangulo _Izquierda" #: modules/cons.py:288 msgid "Tile Triangle Left The Checked Windows" msgstr "Muestra las Ventanas en Modo Triangular hacia la Izquierda" #: modules/cons.py:289 msgid "Triangle _Right" msgstr "Triangulo _Derecha" #: modules/cons.py:289 msgid "Tile Triangle Right The Checked Windows" msgstr "Muestra las Ventanas en Modo Triangular hacia la Derecha" #: modules/cons.py:290 msgid "Tile _Quad" msgstr "Mosaico Cuadricula" #: modules/cons.py:290 msgid "Tile into 4 quadrants The Checked Windows" msgstr "Muestra las Ventanas en Modo Cuadricula" #: modules/cons.py:291 msgid "Tile _Grid" msgstr "Mosaico Cuadricula" #: modules/cons.py:291 msgid "Tile into an Arbitrary Grid The Checked Windows" msgstr "Muestra las Ventanas en Modo Cuadricula" #: modules/cons.py:292 msgid "Custom Tile 1 _Set" msgstr "Ajuste Per_sonalizado 1" #: modules/cons.py:292 msgid "Edit Custom Tile 1 Settings" msgstr "Edita la configuración de Mosaico Personalizado 1" #: modules/cons.py:293 msgid "Custom Tile _1 Run" msgstr "Personalizado _1" #: modules/cons.py:293 msgid "Execute Custom Tile 1" msgstr "Ejecuta el ajuste del Mosaico Personalizado 1" #: modules/cons.py:294 msgid "Custom Tile 2 S_et" msgstr "Ajuste P_ersonalizado 2" #: modules/cons.py:294 msgid "Edit Custom Tile 2 Settings" msgstr "Edita la configuración de Mosaico Personalizado 2" #: modules/cons.py:295 msgid "Custom Tile _2 Run" msgstr "Personalizado _2" #: modules/cons.py:295 msgid "Execute Custom Tile 2" msgstr "Ejecuta el ajuste del Mosaico Personalizado 2" #: modules/cons.py:296 modules/cons.py:325 msgid "U_ndo Tiling" msgstr "_Deshacer" #: modules/cons.py:296 modules/cons.py:325 msgid "Undo the Latest Tiling Operation" msgstr "Deshacer el Ultimo Mosaico Aplicado" #: modules/cons.py:297 modules/cons.py:324 msgid "_Invert Tiling Order" msgstr "_Invertir Orden" #: modules/cons.py:297 modules/cons.py:324 msgid "Invert the Order of the Latest Tiling Operation" msgstr "Invertir el orden de la última operación" #: modules/cons.py:298 modules/cons.py:326 #, fuzzy msgid "C_ycle Tiling Order" msgstr "_Invertir Orden" #: modules/cons.py:298 modules/cons.py:326 #, fuzzy msgid "Cycle the Order of the Latest Tiling Operation" msgstr "Invertir el orden de la última operación" #: modules/cons.py:299 msgid "_Maximize Windows" msgstr "_Maximizar Ventanas" #: modules/cons.py:299 msgid "Maximize The Checked Windows" msgstr "Maximiza las ventanas Seleccionadas" #: modules/cons.py:300 msgid "_Unmaximize Windows" msgstr "Resta_urar Ventanas" #: modules/cons.py:300 msgid "Unmaximize The Checked Windows" msgstr "Restaura las Ventanas Seleccionadas" #: modules/cons.py:301 msgid "_Close Windows" msgstr "_Cerrar Ventanas" #: modules/cons.py:301 msgid "Close The Checked Windows" msgstr "Cierra las Ventanas Seleccionada" #: modules/cons.py:302 msgid "Move _Up" msgstr "S_ubir" #: modules/cons.py:302 msgid "Move the Selected Row Up" msgstr "Mueve la Fila Seleccionada Arriba" #: modules/cons.py:303 msgid "Move _Down" msgstr "B_ajar" #: modules/cons.py:303 msgid "Move the Selected Row Down" msgstr "Mueve la Fila Seleccionada Abajo" #: modules/cons.py:304 msgid "_Remove" msgstr "_Eliminar" #: modules/cons.py:304 msgid "Remove the Selected Row" msgstr "Elimina la Fila Seleccionada" #: modules/cons.py:305 msgid "Show/Hide _Toolbar" msgstr "Barra de _Herramientas" #: modules/cons.py:305 msgid "Toggle Show/Hide Toolbar" msgstr "Muestra y Oculta la Barra de Herramientas" #: modules/cons.py:306 msgid "_Increase Toolbar Icons Size" msgstr "_Agrandar Iconos" #: modules/cons.py:306 msgid "Increase the Size of the Toolbar Icons" msgstr "Aumenta tamaño de los Iconos de la Barra de Herramientas" #: modules/cons.py:307 msgid "_Decrease Toolbar Icons Size" msgstr "A_chicar Iconos" #: modules/cons.py:307 msgid "Decrease the Size of the Toolbar Icons" msgstr "Disminuye tamaño de los Iconos de la Barra de Herramientas" #: modules/cons.py:308 msgid "X Tile Project Home Page" msgstr "Pagina del Proyecto X Tile" #: modules/cons.py:309 modules/cons.py:310 msgid "_About" msgstr "_Acerca de" #: modules/cons.py:309 modules/cons.py:310 glade/x-tile.glade.h:1 msgid "About X Tile" msgstr "Acerca de X Tile" #: modules/cons.py:311 msgid "_Close All" msgstr "_Cerrar Todo" #: modules/cons.py:311 msgid "Close All Windows" msgstr "Cerrar Ventanas" #: modules/cons.py:312 msgid "_Unmaximize All" msgstr "_Restaurar Todo" #: modules/cons.py:312 msgid "Unmaximize All Windows" msgstr "Restaurar Ventanas" #: modules/cons.py:313 msgid "_Maximize All" msgstr "_Maximizar Todo" #: modules/cons.py:313 msgid "Maximize All Windows" msgstr "Maximizar Ventanas" #: modules/cons.py:314 msgid "Tile All _Quad" msgstr "_Cuadricula" #: modules/cons.py:314 msgid "Tile All Windows Quad" msgstr "Cuadricula" #: modules/cons.py:315 msgid "Tile All Triangle _Down" msgstr "Triangular A_bajo" #: modules/cons.py:315 msgid "Tile All Windows Triangle Down" msgstr "Triangular Abajo" #: modules/cons.py:316 msgid "Tile All Triangle _Up" msgstr "Triangular _Arriba" #: modules/cons.py:316 msgid "Tile All Windows Triangle Up" msgstr "Triangular Arriba" #: modules/cons.py:317 msgid "Tile All Triangle _Right" msgstr "Triangular _Derecha" #: modules/cons.py:317 msgid "Tile All Windows Triangle Right" msgstr "Triangular Derecha" #: modules/cons.py:318 msgid "Tile All Triangle _Left" msgstr "Triangular _Izquierda" #: modules/cons.py:318 msgid "Tile All Windows Triangle Left" msgstr "Triangular Izquierda" #: modules/cons.py:319 msgid "Tile All Custom _2" msgstr "Personalizado _2" #: modules/cons.py:319 msgid "Tile All Windows Custom 2" msgstr "Personalizado 2" #: modules/cons.py:320 msgid "Tile All Custom _1" msgstr "Personalizado _1" #: modules/cons.py:320 msgid "Tile All Windows Custom 1" msgstr "Personalizado 1" #: modules/cons.py:321 msgid "Tile All _Grid" msgstr "_Cuadricula" #: modules/cons.py:321 msgid "Tile All Windows Grid" msgstr "Cuadricula" #: modules/cons.py:322 msgid "Tile All _Horizontally" msgstr "_Horizontal" #: modules/cons.py:322 msgid "Tile All Windows Horizontally" msgstr "Horizontal" #: modules/cons.py:323 msgid "Tile All _Vertically" msgstr "_Vertical" #: modules/cons.py:323 msgid "Tile All Windows Vertically" msgstr "Vertical" #: glade/x-tile.glade.h:2 #, fuzzy msgid "" "Copyright © 2009-2012\n" "Giuseppe Penone \n" "Chris Camacho " msgstr "" "Copyright © 2009-2011\n" "Giuseppe Penone \n" "Chris Camacho " #: glade/x-tile.glade.h:6 msgid "http://www.giuspen.com/x-tile/" msgstr "http://www.giuspen.com/x-tile/" #: glade/x-tile.glade.h:7 msgid "" "\n" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software\n" "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n" "MA 02110-1301, USA." msgstr "" "\n" "Este programa es software libre, puede redistribuirlo y/o modificarlo \n" "bajo los términos de la GNU General Public License publicada por \n" "la Free Software Foundation, bien de la versión 2 de la Licencia, o \n" "(a su elección) cualquier versión posterior. \n" "\n" "Este programa se distribuye con la esperanza de que sea útil, \n" "pero SIN NINGUNA GARANTÃA, incluso sin la garantía implícita de \n" "COMERCIALIZACIÓN o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Véase la \n" "Licencia Pública General GNU para más detalles. \n" "\n" "Debería haber recibido una copia de la Licencia Pública General GNU \n" "junto con este programa, si no, escriba a la Free Software \n" "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, \n" "MA 02110-1301, EE.UU." #: glade/x-tile.glade.h:22 #, fuzzy msgid "" "Chinese Simplified (zh_CN) Khiyuan Fan \n" "Chinese Traditional (zh_TW) Yan-ren Tsai \n" "Czech (cs) Pavel Fric \n" "French (fr) Ludovic Troisi \n" "German (de) Jöran Zeller \n" "Italian (it) Giuseppe Penone \n" "Polish (pl) Dominik Wójt \n" "Russian (ru) Andriy Kovtun " msgstr "" "Chinese Simplified (zh_CN) Khiyuan Fan \n" "Cinese Tradizionale (zh_TW) Yan-ren Tsai \n" "Czech (cs) Pavel Fric \n" "Francese (fr) Ludovic Troisi \n" "Tedesco (de) Jöran Zeller \n" "Italiano (it) Giuseppe Penone \n" "Russo (ru) Andriy Kovtun " #: glade/x-tile.glade.h:31 msgid "Preferences" msgstr "Preferencias" #: glade/x-tile.glade.h:32 msgid "Do Not List Minimized Windows" msgstr "No lista las ventanas Minimizadas" #: glade/x-tile.glade.h:33 msgid "Only Current Workspace" msgstr "Sólo en el actual Espacio de Trabajo" #: glade/x-tile.glade.h:34 msgid "Enable System Tray Docking" msgstr "Habilitar el Sistema de acoplamiento de bandeja" #: glade/x-tile.glade.h:35 msgid "Start Minimized in the System Tray" msgstr "Iniciar Minimizado en la Bandeja del Sistema" #: glade/x-tile.glade.h:36 msgid "Use AppIndicator for Docking" msgstr "" #: glade/x-tile.glade.h:37 msgid "Show Toolbar" msgstr "Barra de Herramientas" #: glade/x-tile.glade.h:38 msgid " Language " msgstr "Lenguaje" #: glade/x-tile.glade.h:39 msgid "Override Monitor 1 Tiling Area" msgstr "Ãrea de monitor 1 Mosaico Personalizado" #: glade/x-tile.glade.h:40 msgid "X" msgstr "X" #: glade/x-tile.glade.h:41 msgid "Y" msgstr "Y" #: glade/x-tile.glade.h:42 msgid "Position" msgstr "Posición" #: glade/x-tile.glade.h:43 msgid "Width" msgstr "Ancho" #: glade/x-tile.glade.h:44 msgid "Height" msgstr "Altura" #: glade/x-tile.glade.h:45 msgid "Size" msgstr "Tamaño" #: glade/x-tile.glade.h:46 msgid "Override Monitor 2 Tiling Area" msgstr "Ãrea de monitor 2 Mosaico Personalizado" #: glade/x-tile.glade.h:47 msgid "Close" msgstr "Cerrar" #: glade/x-tile.glade.h:48 msgid "Cancel" msgstr "Cancelar" #: glade/x-tile.glade.h:49 msgid "OK" msgstr "OK" #: glade/x-tile.glade.h:50 msgid "Custom Tiling Layout" msgstr "Diseño Personalizado de Mosaico" #: glade/x-tile.glade.h:51 msgid "1) Tile Some Windows Manually" msgstr "1) Dimensionar las Ventanas Manualmente" #: glade/x-tile.glade.h:52 msgid "2) Select Them in the X Tile Windows List" msgstr "2) Selecciona Las Ventanas Dimensionadas en X Tile" #: glade/x-tile.glade.h:53 msgid "3) Click the Update Button" msgstr "3) Haz Clic en Actualizar" #: glade/x-tile.glade.h:54 msgid "Update" msgstr "Actualizar" #: glade/x-tile.glade.h:55 msgid "Rows to Filter" msgstr "Filtrar Filas" #: glade/x-tile.glade.h:56 msgid "Add an Application Filter" msgstr "Agregar un Filtro de Aplicación" #: glade/x-tile.glade.h:57 msgid "Remove an Application Filter" msgstr "Quitar un Filtro aplicado" #: glade/x-tile.glade.h:58 msgid "Add Row" msgstr "Agregar Fila" #: glade/x-tile.glade.h:60 msgid "X Tile" msgstr "X Tile" #: glade/x-tile.glade.h:61 msgid "Set Destination Workspace" msgstr "Establecer el destino del Ãrea de Trabajo" #: glade/x-tile.glade.h:62 msgid "Exit After Tile" msgstr "Salir Después de Mosaico" x-tile-3.3/locale/fr.po000066400000000000000000000443061375405375400150130ustar00rootroot00000000000000# French translations for PACKAGE package. # Copyright (C) 2010 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # maul , 2010. # Ludovic Troisi 2010. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-09-07 23:14+0200\n" "PO-Revision-Date: 2011-03-03 11:05+0100\n" "Last-Translator: Ludovic Troisi \n" "Language-Team: X Tile\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: modules/core.py:307 msgid "Use Drag and Drop to Sort the Rows" msgstr "Utilisez le glisser-déposer pour trier les lignes" #: modules/core.py:347 msgid "The New Language will be Available Only After Restarting X Tile" msgstr "La nouvelle langue sera chargée une fois X Tile relancé" #: modules/core.py:369 glade/x-tile.glade.h:5 msgid "Tile the Windows Upon your X Desktop" msgstr "Répartit vos fenêtres sur votre Bureau X" #: modules/core.py:583 msgid "The Size of the Toolbar Icons is already at the Maximum Value" msgstr "La taille de la barre d'outils est déjà à sa valeur maximale" #: modules/core.py:593 msgid "The Size of the Toolbar Icons is already at the Minimum Value" msgstr "La taille de la barre d'outils est déjà à sa valeur minimale" #: modules/core.py:703 modules/core.py:711 modules/core.py:719 msgid "No Row is Selected" msgstr "Aucune ligne n'a été sélectionnée" #: modules/core.py:741 modules/core.py:775 msgid "No Application Selected!" msgstr "Aucune application sélectionnée !" #: modules/core.py:855 msgid "Grid Details" msgstr "Détails de la grille" #: modules/core.py:863 msgid "Rows" msgstr "Lignes" #: modules/core.py:870 msgid "Columns" msgstr "Colonnes" #: modules/core.py:956 modules/core.py:964 modules/core.py:974 msgid "No Windows Checked" msgstr "Aucune fenêtre n'a été sélectionnée" #: modules/core.py:1014 modules/core.py:1027 msgid "Edit Custom Tile Settings" msgstr "Éditer la répartition personnalisée" #: modules/core.py:1174 msgid "" "The Custom Tile 1 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 1 " "Set'" msgstr "" "La répartition personnalisée 1 n'est pas définie: Cliquez sur le menu 'Tile-" ">Configurer la répartition personnalisée 1'" #: modules/core.py:1192 msgid "" "The Custom Tile 2 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 2 " "Set'" msgstr "" "La répartition personnalisée 2 n'est pas définie: Cliquez sur le menu 'Tile-" ">Configurer la répartition personnalisée 2'" #: modules/cons.py:268 msgid "_File" msgstr "_Fichier" #: modules/cons.py:269 msgid "_Edit" msgstr "É_dition" #: modules/cons.py:270 msgid "_Row" msgstr "_Ligne" #: modules/cons.py:271 msgid "_Tile" msgstr "_Répartir" #: modules/cons.py:272 msgid "_View" msgstr "_Affichage" #: modules/cons.py:273 modules/cons.py:308 msgid "_Help" msgstr "Aid_e" #: modules/cons.py:275 msgid "_Filter" msgstr "_Filtrer" #: modules/cons.py:275 msgid "Filter Rows" msgstr "Filtre les lignes" #: modules/cons.py:276 msgid "Selected by _Default" msgstr "Sélectionnée par _défaut" #: modules/cons.py:276 glade/x-tile.glade.h:59 msgid "Rows to be Selected by Default" msgstr "Lignes à être sélectionné par défaut" #: modules/cons.py:277 msgid "_Reload" msgstr "_Recharger" #: modules/cons.py:277 msgid "Reload the Windows List" msgstr "Recharge la liste des fenêtres" #: modules/cons.py:278 msgid "_Quit" msgstr "_Quitter" #: modules/cons.py:278 msgid "Quit the Application" msgstr "Quitte l'application" #: modules/cons.py:279 msgid "_Exit X Tile" msgstr "_Quitter X Tile" #: modules/cons.py:279 msgid "Exit from X Tile" msgstr "Quitter X Tile" #: modules/cons.py:280 msgid "Show/Hide _X Tile" msgstr "Afficher/Masquer _X Tile" #: modules/cons.py:280 msgid "Toggle Show/Hide X Tile" msgstr "Affiche/Masque X Tile" #: modules/cons.py:281 msgid "_Preferences" msgstr "_Préférences" #: modules/cons.py:281 msgid "Open the Preferences Window" msgstr "Ouvre la fenêtre de préférences" #: modules/cons.py:282 msgid "Select _All" msgstr "_Tout sélectionner" #: modules/cons.py:282 msgid "Select All the Windows in the List" msgstr "Sélectionne toutes les fenêtres de la liste" #: modules/cons.py:283 msgid "Deselect A_ll" msgstr "Tout _désélectionner" #: modules/cons.py:283 msgid "Deselect All the Windows in the List" msgstr "Désélectionne toutes les fenêtres de la liste" #: modules/cons.py:284 msgid "Tile _Vertically" msgstr "Répartir _verticalement" #: modules/cons.py:284 msgid "Tile Vertically The Checked Windows" msgstr "Répartit verticalement les fenêtres sélectionnées" #: modules/cons.py:285 msgid "Tile _Horizontally" msgstr "Répartir _horizontalement" #: modules/cons.py:285 msgid "Tile Horizontally The Checked Windows" msgstr "Répartit horizontalement les fenêtres sélectionnées" #: modules/cons.py:286 msgid "_Triangle Up" msgstr "Répartir en triangle à partir du h_aut" #: modules/cons.py:286 msgid "Tile Triangle Up The Checked Windows" msgstr "Répartit selon un triangle les fenêtres sélectionnées à partir du haut" #: modules/cons.py:287 msgid "Triangle _Down" msgstr "Répartir en triangle à partir du _bas" #: modules/cons.py:287 msgid "Tile Triangle Down The Checked Windows" msgstr "Répartit selon un triangle les fenêtres sélectionnées à partir du bas" #: modules/cons.py:288 msgid "Triangle _Left" msgstr "Répartir en triangle à partir de la _gauche" #: modules/cons.py:288 msgid "Tile Triangle Left The Checked Windows" msgstr "" "Répartit selon un triangle les fenêtres sélectionnées à partir de la gauche" #: modules/cons.py:289 msgid "Triangle _Right" msgstr "Répartir en triangle à partir de la dr_oite" #: modules/cons.py:289 msgid "Tile Triangle Right The Checked Windows" msgstr "" "Répartit selon un triangle les fenêtres sélectionnées à partir de la droite" #: modules/cons.py:290 msgid "Tile _Quad" msgstr "Répartir en _quartiers" #: modules/cons.py:290 msgid "Tile into 4 quadrants The Checked Windows" msgstr "Répartit selon quatre quartiers les fenêtres sélectionnées" #: modules/cons.py:291 msgid "Tile _Grid" msgstr "Répartir en _Grille" #: modules/cons.py:291 msgid "Tile into an Arbitrary Grid The Checked Windows" msgstr "Répartit arbitrairement en grille les fenêtres sélectionnées" #: modules/cons.py:292 msgid "Custom Tile 1 _Set" msgstr "_Configurer la répartition personnalisée 1" #: modules/cons.py:292 msgid "Edit Custom Tile 1 Settings" msgstr "Paramétrages de la répartition personnalisée 1" #: modules/cons.py:293 msgid "Custom Tile _1 Run" msgstr "Lancer la répartition personnalisée 1" #: modules/cons.py:293 msgid "Execute Custom Tile 1" msgstr "Exécuter la répartition personnalisée 1" #: modules/cons.py:294 msgid "Custom Tile 2 S_et" msgstr "C_onfigurer la répartition personnalisée 2" #: modules/cons.py:294 msgid "Edit Custom Tile 2 Settings" msgstr "Paramétrages de la répartition personnalisée 1" #: modules/cons.py:295 msgid "Custom Tile _2 Run" msgstr "Lancer la répartition personnalisée 2" #: modules/cons.py:295 msgid "Execute Custom Tile 2" msgstr "Exécuter la répartition personnalisée 2" #: modules/cons.py:296 modules/cons.py:325 msgid "U_ndo Tiling" msgstr "A_nnuler la répartition" #: modules/cons.py:296 modules/cons.py:325 msgid "Undo the Latest Tiling Operation" msgstr "Annule la dernière opération de répartition" #: modules/cons.py:297 modules/cons.py:324 msgid "_Invert Tiling Order" msgstr "_Inverser l'ordre de répartition" #: modules/cons.py:297 modules/cons.py:324 msgid "Invert the Order of the Latest Tiling Operation" msgstr "Inverse l'ordre de la dernière opération de répartition" #: modules/cons.py:298 modules/cons.py:326 msgid "C_ycle Tiling Order" msgstr "_Alterner l'ordre de répartition" #: modules/cons.py:298 modules/cons.py:326 msgid "Cycle the Order of the Latest Tiling Operation" msgstr "Alterne l'ordre de la dernière opération de répartition" #: modules/cons.py:299 msgid "_Maximize Windows" msgstr "_Maximiser les fenêtres" #: modules/cons.py:299 msgid "Maximize The Checked Windows" msgstr "Maximise les fenêtres sélectionnées" #: modules/cons.py:300 msgid "_Unmaximize Windows" msgstr "_Restaurer les fenêtres" #: modules/cons.py:300 msgid "Unmaximize The Checked Windows" msgstr "Restaure les fenêtres sélectionnées" #: modules/cons.py:301 msgid "_Close Windows" msgstr "_Fermer les fenêtres" #: modules/cons.py:301 msgid "Close The Checked Windows" msgstr "Ferme les fenêtres sélectionnées" #: modules/cons.py:302 msgid "Move _Up" msgstr "Déplacer vers le _haut" #: modules/cons.py:302 msgid "Move the Selected Row Up" msgstr "Déplace la ligne sélectionnée vers le haut" #: modules/cons.py:303 msgid "Move _Down" msgstr "Déplacer vers le _bas" #: modules/cons.py:303 msgid "Move the Selected Row Down" msgstr "Déplace la ligne sélectionnée vers le bas" #: modules/cons.py:304 msgid "_Remove" msgstr "_Supprimer" #: modules/cons.py:304 msgid "Remove the Selected Row" msgstr "Supprime la ligne sélectionnée (Retour arrière)" #: modules/cons.py:305 msgid "Show/Hide _Toolbar" msgstr "Afficher/Masquer la barre d'_outils" #: modules/cons.py:305 msgid "Toggle Show/Hide Toolbar" msgstr "Affiche/Masque la barre d'outils" #: modules/cons.py:306 msgid "_Increase Toolbar Icons Size" msgstr "_Augmenter la taille de la barre d'outils" #: modules/cons.py:306 msgid "Increase the Size of the Toolbar Icons" msgstr "Augmente la taille de la barre d'outils" #: modules/cons.py:307 msgid "_Decrease Toolbar Icons Size" msgstr "_Diminuer la taille de la barre d'outils" #: modules/cons.py:307 msgid "Decrease the Size of the Toolbar Icons" msgstr "Diminue la taille de la barre d'outils" #: modules/cons.py:308 msgid "X Tile Project Home Page" msgstr "Page d'accueil de X Tile" #: modules/cons.py:309 modules/cons.py:310 msgid "_About" msgstr "À _propos" #: modules/cons.py:309 modules/cons.py:310 glade/x-tile.glade.h:1 msgid "About X Tile" msgstr "Informations à propos de X Tile" #: modules/cons.py:311 msgid "_Close All" msgstr "_Tout Fermer" #: modules/cons.py:311 msgid "Close All Windows" msgstr "Fermer toutes les fenêtres" #: modules/cons.py:312 msgid "_Unmaximize All" msgstr "Tout _Diminuer" #: modules/cons.py:312 msgid "Unmaximize All Windows" msgstr "Diminuer toutes les fenêtres" #: modules/cons.py:313 msgid "_Maximize All" msgstr "Tout _maximiser" #: modules/cons.py:313 msgid "Maximize All Windows" msgstr "_Maximiser toutes les fenêtres" #: modules/cons.py:314 msgid "Tile All _Quad" msgstr "Tout répartir en _quartiers" #: modules/cons.py:314 msgid "Tile All Windows Quad" msgstr "Répartir toutes les fenêtres en _quartiers" #: modules/cons.py:315 msgid "Tile All Triangle _Down" msgstr "Tout répartir en triangle à partir du _bas" #: modules/cons.py:315 msgid "Tile All Windows Triangle Down" msgstr "Répartir toutes les fenêtres en triangle à partir du _bas" #: modules/cons.py:316 msgid "Tile All Triangle _Up" msgstr "Tout répartir en triangle à partir du h_aut" #: modules/cons.py:316 msgid "Tile All Windows Triangle Up" msgstr "Répartir toutes les fenêtres en triangle à partir du h_aut" #: modules/cons.py:317 msgid "Tile All Triangle _Right" msgstr "Tout répartir en triangle à partir de la dr_oite" #: modules/cons.py:317 msgid "Tile All Windows Triangle Right" msgstr "Répartir toutes les fenêtres en triangle à partir de la dr_oite" #: modules/cons.py:318 msgid "Tile All Triangle _Left" msgstr "Tout répartir en triangle à partir de la _gauche" #: modules/cons.py:318 msgid "Tile All Windows Triangle Left" msgstr "Répartir toutes les fenêtres en triangle à partir de la _gauche" #: modules/cons.py:319 msgid "Tile All Custom _2" msgstr "Tout répartir en personnalisée _2" #: modules/cons.py:319 msgid "Tile All Windows Custom 2" msgstr "Répartir toutes les fenêtres en personnalisée _2" #: modules/cons.py:320 msgid "Tile All Custom _1" msgstr "Tout répartir en personnalisée _1" #: modules/cons.py:320 msgid "Tile All Windows Custom 1" msgstr "Répartir toutes les fenêtres en personnalisée _1" #: modules/cons.py:321 msgid "Tile All _Grid" msgstr "Tout répartir en _Grille" #: modules/cons.py:321 msgid "Tile All Windows Grid" msgstr "Répartir toutes les fenêtres en Grille" #: modules/cons.py:322 msgid "Tile All _Horizontally" msgstr "Tout répartir _horizontalement" #: modules/cons.py:322 msgid "Tile All Windows Horizontally" msgstr "Répartir toutes les fenêtres horizontalement" #: modules/cons.py:323 msgid "Tile All _Vertically" msgstr "Tout répartir ve_rticalement" #: modules/cons.py:323 msgid "Tile All Windows Vertically" msgstr "Répartir toutes les fenêtres verticalement" #: glade/x-tile.glade.h:2 msgid "" "Copyright © 2009-2012\n" "Giuseppe Penone \n" "Chris Camacho " msgstr "" "Copyright © 2009-2012\n" "Giuseppe Penone \n" "Chris Camacho " #: glade/x-tile.glade.h:6 msgid "http://www.giuspen.com/x-tile/" msgstr "http://www.giuspen.com/x-tile/" #: glade/x-tile.glade.h:7 msgid "" "\n" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software\n" "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n" "MA 02110-1301, USA." msgstr "" "\n" "Ce programme est un logiciel libre ; vous pouvez le redistribuer\n" "et/ou le modifier au titre des clauses de la Licence Publique\n" "Générale GNU, telle que publiée par la Free Software Foundation ;\n" "soit la version 2 de la Licence, ou (à votre discrétion) une version\n" "ultérieure quelconque.\n" "\n" "Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS\n" "AUCUNE GARANTIE ; sans même une garantie implicite de\n" "COMMERCIABILITE ou DE CONFORMITE A UNE UTILISATION\n" "PARTICULIERE. Voir la Licence Publique Générale GNU pour plus de\n" "détails.\n" "\n" "Vous devriez avoir reçu un exemplaire de la Licence Publique\n" "Générale GNU avec ce programme ; si ce n'est pas le cas, écrivez à\n" "la Free Software Foundation Inc., 51 Franklin Street, Fifth Floor,\n" "Boston, MA 02110-1301, USA." #: glade/x-tile.glade.h:22 msgid "" "Chinese Simplified (zh_CN) Khiyuan Fan \n" "Chinese Traditional (zh_TW) Yan-ren Tsai \n" "Czech (cs) Pavel Fric \n" "French (fr) Ludovic Troisi \n" "German (de) Jöran Zeller \n" "Italian (it) Giuseppe Penone \n" "Polish (pl) Dominik Wójt \n" "Russian (ru) Andriy Kovtun " msgstr "" "Chinese Simplified (zh_CN) Khiyuan Fan \n" "Chinois traditionnel (zh_TW) Yan-ren Tsai \n" "Czech (cs) Pavel Fric \n" "Français (fr) Ludovic Troisi \n" "Allemand (de) Jöran Zeller \n" "Italien (it) Giuseppe Penone \n" "Polish (pl) Dominik Wójt \n" "Russe (ru) Andriy Kovtun " #: glade/x-tile.glade.h:31 msgid "Preferences" msgstr "Préférences" #: glade/x-tile.glade.h:32 msgid "Do Not List Minimized Windows" msgstr "Ne pas lister les fenêtres minimisées" #: glade/x-tile.glade.h:33 msgid "Only Current Workspace" msgstr "Uniquement l'espace de travail courant" #: glade/x-tile.glade.h:34 msgid "Enable System Tray Docking" msgstr "Activer dans la zone de notification" #: glade/x-tile.glade.h:35 msgid "Start Minimized in the System Tray" msgstr "Lancer dans la zone de notification au démarrage" #: glade/x-tile.glade.h:36 msgid "Use AppIndicator for Docking" msgstr "" #: glade/x-tile.glade.h:37 msgid "Show Toolbar" msgstr "Afficher la barre d'outils" #: glade/x-tile.glade.h:38 msgid " Language " msgstr " Langue" #: glade/x-tile.glade.h:39 msgid "Override Monitor 1 Tiling Area" msgstr "Zone de répartition personnalisée pour l'écran 1" #: glade/x-tile.glade.h:40 msgid "X" msgstr "X" #: glade/x-tile.glade.h:41 msgid "Y" msgstr "Y" #: glade/x-tile.glade.h:42 msgid "Position" msgstr "Position" #: glade/x-tile.glade.h:43 msgid "Width" msgstr "Largeur" #: glade/x-tile.glade.h:44 msgid "Height" msgstr "Hauteur" #: glade/x-tile.glade.h:45 msgid "Size" msgstr "Taille" #: glade/x-tile.glade.h:46 msgid "Override Monitor 2 Tiling Area" msgstr "Zone de répartition personnalisée pour l'écran 2" #: glade/x-tile.glade.h:47 msgid "Close" msgstr "Fermer" #: glade/x-tile.glade.h:48 msgid "Cancel" msgstr "Annuler" #: glade/x-tile.glade.h:49 msgid "OK" msgstr "Valider" #: glade/x-tile.glade.h:50 msgid "Custom Tiling Layout" msgstr "Mise en page personnalisée" #: glade/x-tile.glade.h:51 msgid "1) Tile Some Windows Manually" msgstr "1) Disposez quelques fenêtres manuellement" #: glade/x-tile.glade.h:52 msgid "2) Select Them in the X Tile Windows List" msgstr "2) Cochez-les dans la liste de X Tile" #: glade/x-tile.glade.h:53 msgid "3) Click the Update Button" msgstr "3) Cliquez sur le bouton Mettre à jour" #: glade/x-tile.glade.h:54 msgid "Update" msgstr "Mettre à jour" #: glade/x-tile.glade.h:55 msgid "Rows to Filter" msgstr "Lignes à filtrer" #: glade/x-tile.glade.h:56 msgid "Add an Application Filter" msgstr "Ajoute une application au filtre" #: glade/x-tile.glade.h:57 msgid "Remove an Application Filter" msgstr "Retire une application du filtre" #: glade/x-tile.glade.h:58 msgid "Add Row" msgstr "Ajouter une ligne" #: glade/x-tile.glade.h:60 msgid "X Tile" msgstr "X Tile" #: glade/x-tile.glade.h:61 msgid "Set Destination Workspace" msgstr "Définir l'Espace de travail de destination" #: glade/x-tile.glade.h:62 msgid "Exit After Tile" msgstr "Fermer après répartition" x-tile-3.3/locale/i18n_create_lang_file.sh000077500000000000000000000002561375405375400205010ustar00rootroot00000000000000#!/bin/sh if [ $# -eq 1 ] then msginit --input=x-tile.pot --locale=$1 else echo "Please provide the language code as one and only argument (e.g. 'es' for Spanish)" fi x-tile-3.3/locale/i18n_po_to_mo.py000077500000000000000000000013301375405375400170610ustar00rootroot00000000000000#!/usr/bin/env python3 import os, subprocess APP_NAME = "x-tile" LOCALE_DIR = os.getcwd() for dirpath, dirnames, filenames in os.walk(LOCALE_DIR): for filename in filenames: if dirpath == LOCALE_DIR: nation, ext = os.path.splitext(filename) if ext != ".po": continue nation_dir = os.path.join(LOCALE_DIR, nation) if not os.path.isdir(nation_dir): os.mkdir(nation_dir) messages_dir = os.path.join(nation_dir, "LC_MESSAGES") if not os.path.isdir(messages_dir): os.mkdir(messages_dir) bash_string = "msgfmt --output-file=%s/LC_MESSAGES/%s.mo %s.po" % (nation, APP_NAME, nation) subprocess.call(bash_string, shell=True) x-tile-3.3/locale/i18n_pot_to_updated_po.py000077500000000000000000000007321375405375400207630ustar00rootroot00000000000000#!/usr/bin/env python3 import os, subprocess APP_NAME = "x-tile" LOCALE_DIR = os.getcwd() for dirpath, dirnames, filenames in os.walk(LOCALE_DIR): for filename in filenames: if dirpath == LOCALE_DIR: nation, ext = os.path.splitext(filename) if ext != ".po": continue bash_string = "msgmerge -U %s.po %s.pot" % (nation, APP_NAME) subprocess.call(bash_string, shell=True) subprocess.call("rm *.po~", shell=True) x-tile-3.3/locale/i18n_update_pot.sh000077500000000000000000000003741375405375400174030ustar00rootroot00000000000000#!/bin/sh cd .. intltool-extract --type=gettext/glade glade/x-tile.glade xgettext --language=Python --from-code=utf-8 --keyword=_ --keyword=N_ --output=locale/x-tile.pot x-tile modules/tilings.py modules/core.py modules/cons.py glade/x-tile.glade.h x-tile-3.3/locale/it.po000066400000000000000000000430031375405375400150110ustar00rootroot00000000000000# Italian translations for PACKAGE package. # Copyright (C) 2010 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # maul , 2010. # msgid "" msgstr "" "Project-Id-Version: x-tile 2.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-09-07 23:14+0200\n" "PO-Revision-Date: 2012-09-07 22:44+0100\n" "Last-Translator: Giuseppe Penone \n" "Language-Team: Italian\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: modules/core.py:307 msgid "Use Drag and Drop to Sort the Rows" msgstr "Usa il Drag and Drop per Ordinare le Righe" #: modules/core.py:347 msgid "The New Language will be Available Only After Restarting X Tile" msgstr "La Nuova Lingua Sara' Disponibile Solo Dopo Aver Riavviato X Tile" #: modules/core.py:369 glade/x-tile.glade.h:5 msgid "Tile the Windows Upon your X Desktop" msgstr "Piastrella le finestre sul tuo Desktop X" #: modules/core.py:583 msgid "The Size of the Toolbar Icons is already at the Maximum Value" msgstr "La Dimensione del Toolbar e' gia' al Massimo Valore" #: modules/core.py:593 msgid "The Size of the Toolbar Icons is already at the Minimum Value" msgstr "La Dimensione del Toolbar e' gia' al Minimo Valore" #: modules/core.py:703 modules/core.py:711 modules/core.py:719 msgid "No Row is Selected" msgstr "Nessuna Riga e' Selezionata" #: modules/core.py:741 modules/core.py:775 msgid "No Application Selected!" msgstr "Nessuna Applicazione e' Selezionata!" #: modules/core.py:855 msgid "Grid Details" msgstr "Dettagli Griglia" #: modules/core.py:863 msgid "Rows" msgstr "Righe" #: modules/core.py:870 msgid "Columns" msgstr "Colonne" #: modules/core.py:956 modules/core.py:964 modules/core.py:974 msgid "No Windows Checked" msgstr "Nessuna finestra e' Selezionata" #: modules/core.py:1014 modules/core.py:1027 msgid "Edit Custom Tile Settings" msgstr "Modifica Impostazioni Piastrellamento Personalizzato" #: modules/core.py:1174 msgid "" "The Custom Tile 1 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 1 " "Set'" msgstr "" "Il Piastrellamento Personalizzato 1 Non e' Ancora Stato Impostato: Clicca la " "Voce di Menu 'Piastrella->Imposta Piastrellamento Personalizzato 1'" #: modules/core.py:1192 msgid "" "The Custom Tile 2 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 2 " "Set'" msgstr "" "Il Piastrellamento Personalizzato 2 Non e' Ancora Stato Impostato: Clicca la " "Voce di Menu 'Piastrella->Imposta Piastrellamento Personalizzato 2'" #: modules/cons.py:268 msgid "_File" msgstr "_File" #: modules/cons.py:269 msgid "_Edit" msgstr "_Modifica" #: modules/cons.py:270 msgid "_Row" msgstr "_Riga" #: modules/cons.py:271 msgid "_Tile" msgstr "_Piastrella" #: modules/cons.py:272 msgid "_View" msgstr "_Visualizza" #: modules/cons.py:273 modules/cons.py:308 msgid "_Help" msgstr "_Aiuto" #: modules/cons.py:275 msgid "_Filter" msgstr "_Filtro" #: modules/cons.py:275 msgid "Filter Rows" msgstr "Filtra Righe" #: modules/cons.py:276 msgid "Selected by _Default" msgstr "Selezionate di _Default" #: modules/cons.py:276 glade/x-tile.glade.h:59 msgid "Rows to be Selected by Default" msgstr "Righe da Selezionare di Default" #: modules/cons.py:277 msgid "_Reload" msgstr "_Ricarica" #: modules/cons.py:277 msgid "Reload the Windows List" msgstr "Ricarica la Lista delle Finestre" #: modules/cons.py:278 msgid "_Quit" msgstr "_Esci" #: modules/cons.py:278 msgid "Quit the Application" msgstr "Esci dall'Applicazione" #: modules/cons.py:279 msgid "_Exit X Tile" msgstr "_Esci da X Tile" #: modules/cons.py:279 msgid "Exit from X Tile" msgstr "Esci da X Tile" #: modules/cons.py:280 msgid "Show/Hide _X Tile" msgstr "Mostra/Nascondi _X Tile" #: modules/cons.py:280 msgid "Toggle Show/Hide X Tile" msgstr "Mostra/Nascondi X Tile" #: modules/cons.py:281 msgid "_Preferences" msgstr "_Preferenze" #: modules/cons.py:281 msgid "Open the Preferences Window" msgstr "Apri la finestra delle Preferenze" #: modules/cons.py:282 msgid "Select _All" msgstr "Selezion_a Tutto" #: modules/cons.py:282 msgid "Select All the Windows in the List" msgstr "Seleziona Tutte le Finestre nella Lista" #: modules/cons.py:283 msgid "Deselect A_ll" msgstr "Dese_leziona Tutto" #: modules/cons.py:283 msgid "Deselect All the Windows in the List" msgstr "Deseleziona Tutte le Finestre nella Lista" #: modules/cons.py:284 msgid "Tile _Vertically" msgstr "Piastrella _Verticalmente" #: modules/cons.py:284 msgid "Tile Vertically The Checked Windows" msgstr "Piastrella Verticalmente le finestre Selezionate" #: modules/cons.py:285 msgid "Tile _Horizontally" msgstr "Piastrella _Orizzontalmente" #: modules/cons.py:285 msgid "Tile Horizontally The Checked Windows" msgstr "Piastrella Orizzontalmente le finestre Selezionate" #: modules/cons.py:286 msgid "_Triangle Up" msgstr "Triangolo S_u" #: modules/cons.py:286 msgid "Tile Triangle Up The Checked Windows" msgstr "Piastrella Triangolo Sopra le finestre Selezionate" #: modules/cons.py:287 msgid "Triangle _Down" msgstr "Triangolo _Giu'" #: modules/cons.py:287 msgid "Tile Triangle Down The Checked Windows" msgstr "Piastrella Triangolo Sotto le finestre Selezionate" #: modules/cons.py:288 msgid "Triangle _Left" msgstr "Triangolo _Sinistra" #: modules/cons.py:288 msgid "Tile Triangle Left The Checked Windows" msgstr "Piastrella Triangolo Sinistra le finestre Selezionate" #: modules/cons.py:289 msgid "Triangle _Right" msgstr "Triangolo _Destra" #: modules/cons.py:289 msgid "Tile Triangle Right The Checked Windows" msgstr "Piastrella Triangolo Destra le finestre Selezionate" #: modules/cons.py:290 msgid "Tile _Quad" msgstr "Piastrella Qua_d" #: modules/cons.py:290 msgid "Tile into 4 quadrants The Checked Windows" msgstr "Piastrella in 4 Quadranti le finestre Selezionate" #: modules/cons.py:291 msgid "Tile _Grid" msgstr "Piastrella _Griglia" #: modules/cons.py:291 msgid "Tile into an Arbitrary Grid The Checked Windows" msgstr "Piastrella in una Griglia arbitraria le finestre Selezionate" #: modules/cons.py:292 msgid "Custom Tile 1 _Set" msgstr "Imposta Piastrellamento Personali_zzato 1" #: modules/cons.py:292 msgid "Edit Custom Tile 1 Settings" msgstr "Modifica Impostazioni Piastrellamento Personalizzato 1" #: modules/cons.py:293 msgid "Custom Tile _1 Run" msgstr "Esegui Piastrellamento Personalizzato _1" #: modules/cons.py:293 msgid "Execute Custom Tile 1" msgstr "Esegui Piastrellamento Personalizzato 1" #: modules/cons.py:294 msgid "Custom Tile 2 S_et" msgstr "Impos_ta Piastrellamento Personalizzato 2" #: modules/cons.py:294 msgid "Edit Custom Tile 2 Settings" msgstr "Modifica Impostazioni Piastrellamento Personalizzato 2" #: modules/cons.py:295 msgid "Custom Tile _2 Run" msgstr "Esegui Piastrellamento Personalizzato _2" #: modules/cons.py:295 msgid "Execute Custom Tile 2" msgstr "Esegui Piastrellamento Personalizzato 2" #: modules/cons.py:296 modules/cons.py:325 msgid "U_ndo Tiling" msgstr "_Annulla Piastrellamento" #: modules/cons.py:296 modules/cons.py:325 msgid "Undo the Latest Tiling Operation" msgstr "Annulla l'Ultima Operazione di Piastrellamento" #: modules/cons.py:297 modules/cons.py:324 msgid "_Invert Tiling Order" msgstr "_Inverti Ordine Piastrellamento" #: modules/cons.py:297 modules/cons.py:324 msgid "Invert the Order of the Latest Tiling Operation" msgstr "Inverti l'Ordine dell' Ultima Operazione di Piastrellamento" #: modules/cons.py:298 modules/cons.py:326 msgid "C_ycle Tiling Order" msgstr "Cic_la Ordine Piastrellamento" #: modules/cons.py:298 modules/cons.py:326 msgid "Cycle the Order of the Latest Tiling Operation" msgstr "Cicla l'Ordine dell' Ultima Operazione di Piastrellamento" #: modules/cons.py:299 msgid "_Maximize Windows" msgstr "_Massimizza Finestre" #: modules/cons.py:299 msgid "Maximize The Checked Windows" msgstr "Massimizza le finestre Selezionate" #: modules/cons.py:300 msgid "_Unmaximize Windows" msgstr "D_emassimizza Finestre" #: modules/cons.py:300 msgid "Unmaximize The Checked Windows" msgstr "Demassimizza le Finestre Selezionate" #: modules/cons.py:301 msgid "_Close Windows" msgstr "_Chiudi Finestre" #: modules/cons.py:301 msgid "Close The Checked Windows" msgstr "Chiudi le Finestre Selezionate" #: modules/cons.py:302 msgid "Move _Up" msgstr "Muovi S_u" #: modules/cons.py:302 msgid "Move the Selected Row Up" msgstr "Muovi Su la Riga Selezionata" #: modules/cons.py:303 msgid "Move _Down" msgstr "Muovi _Giu'" #: modules/cons.py:303 msgid "Move the Selected Row Down" msgstr "Muovi Giu' la Riga Selezionata" #: modules/cons.py:304 msgid "_Remove" msgstr "_Rimuovi" #: modules/cons.py:304 msgid "Remove the Selected Row" msgstr "Rimuovi le Righe Selezionate" #: modules/cons.py:305 msgid "Show/Hide _Toolbar" msgstr "Mostra/Nascondi _Toolbar" #: modules/cons.py:305 msgid "Toggle Show/Hide Toolbar" msgstr "Mostra/Nascondi il Toolbar" #: modules/cons.py:306 msgid "_Increase Toolbar Icons Size" msgstr "_Aumenta la Dimensione delle Icone della Toolbar" #: modules/cons.py:306 msgid "Increase the Size of the Toolbar Icons" msgstr "Aumenta la Dimensione delle Icone della Toolbar" #: modules/cons.py:307 msgid "_Decrease Toolbar Icons Size" msgstr "_Diminuisci la Dimensione delle Icone del Toolbar" #: modules/cons.py:307 msgid "Decrease the Size of the Toolbar Icons" msgstr "Diminuisci la Dimensione delle Icone della Toolbar" #: modules/cons.py:308 msgid "X Tile Project Home Page" msgstr "Home Page del Progetto X Tile" #: modules/cons.py:309 modules/cons.py:310 msgid "_About" msgstr "_Informazioni" #: modules/cons.py:309 modules/cons.py:310 glade/x-tile.glade.h:1 msgid "About X Tile" msgstr "Informazioni su X Tile" #: modules/cons.py:311 msgid "_Close All" msgstr "Chiudi Tutte le Finestre" #: modules/cons.py:311 msgid "Close All Windows" msgstr "Chiudi Tutte le Finestre" #: modules/cons.py:312 msgid "_Unmaximize All" msgstr "_Demassimizza Tutte" #: modules/cons.py:312 msgid "Unmaximize All Windows" msgstr "Demassimizza Tutte le Finestre" #: modules/cons.py:313 msgid "_Maximize All" msgstr "_Massimizza Tutte" #: modules/cons.py:313 msgid "Maximize All Windows" msgstr "Massimizza Tutte le Finestre" #: modules/cons.py:314 msgid "Tile All _Quad" msgstr "Piastrella Tutte _Quad" #: modules/cons.py:314 msgid "Tile All Windows Quad" msgstr "Piastrella Tutte le Finestre Quad" #: modules/cons.py:315 msgid "Tile All Triangle _Down" msgstr "Piastrella Tutte Triangolo _Giu'" #: modules/cons.py:315 msgid "Tile All Windows Triangle Down" msgstr "Piastrella Tutte le Finestre Triangolo Giu'" #: modules/cons.py:316 msgid "Tile All Triangle _Up" msgstr "Piastrella Tutte Triangolo S_u" #: modules/cons.py:316 msgid "Tile All Windows Triangle Up" msgstr "Piastrella Tutte le Finestre Triangolo Su" #: modules/cons.py:317 msgid "Tile All Triangle _Right" msgstr "Piastrella Tutte Triangolo _Destra" #: modules/cons.py:317 msgid "Tile All Windows Triangle Right" msgstr "Piastrella le Finestre Tutte Triangolo Destra" #: modules/cons.py:318 msgid "Tile All Triangle _Left" msgstr "Piastrella Tutte Triangolo _Sinistra" #: modules/cons.py:318 msgid "Tile All Windows Triangle Left" msgstr "Piastrella Tutte le Finestre Triangolo Sinistra" #: modules/cons.py:319 msgid "Tile All Custom _2" msgstr "Piastrella Tutte Personalizzato _2" #: modules/cons.py:319 msgid "Tile All Windows Custom 2" msgstr "Piastrella Tutte le Finestre Personalizzato 2" #: modules/cons.py:320 msgid "Tile All Custom _1" msgstr "Piastrella Tutte Personalizzato _1" #: modules/cons.py:320 msgid "Tile All Windows Custom 1" msgstr "Piastrella Tutte le Finestre Personalizzato 1" #: modules/cons.py:321 msgid "Tile All _Grid" msgstr "Piastrella Tutte _Griglia" #: modules/cons.py:321 msgid "Tile All Windows Grid" msgstr "Piastrella Tutte le Finestre Griglia" #: modules/cons.py:322 msgid "Tile All _Horizontally" msgstr "Piastrella Tutte _Orizzontalmente" #: modules/cons.py:322 msgid "Tile All Windows Horizontally" msgstr "Piastrella Tutte le Finestre Orizzontalmente" #: modules/cons.py:323 msgid "Tile All _Vertically" msgstr "Piastrella Tutte _Verticalmente" #: modules/cons.py:323 msgid "Tile All Windows Vertically" msgstr "Piastrella Tutte le Finestre Verticalmente" #: glade/x-tile.glade.h:2 msgid "" "Copyright © 2009-2012\n" "Giuseppe Penone \n" "Chris Camacho " msgstr "" "Copyright © 2009-2012\n" "Giuseppe Penone \n" "Chris Camacho " #: glade/x-tile.glade.h:6 msgid "http://www.giuspen.com/x-tile/" msgstr "http://www.giuspen.com/x-tile/" #: glade/x-tile.glade.h:7 msgid "" "\n" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software\n" "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n" "MA 02110-1301, USA." msgstr "" "\n" "Questo programma e' software libero; puoi ridistribuirlo e/o modificarlo\n" "nei termini della GNU General Public License come pubblicato dalla\n" "Free Software Foundation; nella versione 2 della Licenza, o\n" "(a tua scelta) qualsiasi versione successiva.\n" " \n" "Questo programma e' distribuito nella speranza che sara' utile,\n" "ma SENZA ALCUNA GARANZIA; senza neppure la garanzia implicita di\n" "COMMERCIABILITA' o IDONEITA' PER UN PARTICOLARE SCOPO. Leggi la\n" "GNU General Public License per maggiori dettagli.\n" " \n" "Dovresti avere ricevuto una copia della GNU General Public License\n" "insieme a questo programma; in caso contrario, scrivi a Free Software\n" "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n" "MA 02110-1301, USA." #: glade/x-tile.glade.h:22 msgid "" "Chinese Simplified (zh_CN) Khiyuan Fan \n" "Chinese Traditional (zh_TW) Yan-ren Tsai \n" "Czech (cs) Pavel Fric \n" "French (fr) Ludovic Troisi \n" "German (de) Jöran Zeller \n" "Italian (it) Giuseppe Penone \n" "Polish (pl) Dominik Wójt \n" "Russian (ru) Andriy Kovtun " msgstr "" "Chinese Semplificato (zh_CN) Khiyuan Fan \n" "Cinese Tradizionale (zh_TW) Yan-ren Tsai \n" "Ceco (cs) Pavel Fric \n" "Francese (fr) Ludovic Troisi \n" "Tedesco (de) Jöran Zeller \n" "Italiano (it) Giuseppe Penone \n" "Polacco (pl) Dominik Wójt \n" "Russo (ru) Andriy Kovtun " #: glade/x-tile.glade.h:31 msgid "Preferences" msgstr "Preferenze" #: glade/x-tile.glade.h:32 msgid "Do Not List Minimized Windows" msgstr "Non Elencare Finestre Minimizzate" #: glade/x-tile.glade.h:33 msgid "Only Current Workspace" msgstr "Solo il Workspace Corrente" #: glade/x-tile.glade.h:34 msgid "Enable System Tray Docking" msgstr "Abilita l'Ancoraggio a System Tray" #: glade/x-tile.glade.h:35 msgid "Start Minimized in the System Tray" msgstr "Avvia Minimizzato su System Tray" #: glade/x-tile.glade.h:36 msgid "Use AppIndicator for Docking" msgstr "Usa AppIndicator per l'Ancoraggio" #: glade/x-tile.glade.h:37 msgid "Show Toolbar" msgstr "Mostra Toolbar" #: glade/x-tile.glade.h:38 msgid " Language " msgstr "Lingua" #: glade/x-tile.glade.h:39 msgid "Override Monitor 1 Tiling Area" msgstr "Area di Tiling del Monitor 1 Personalizzata" #: glade/x-tile.glade.h:40 msgid "X" msgstr "X" #: glade/x-tile.glade.h:41 msgid "Y" msgstr "Y" #: glade/x-tile.glade.h:42 msgid "Position" msgstr "Posizione" #: glade/x-tile.glade.h:43 msgid "Width" msgstr "Larghezza" #: glade/x-tile.glade.h:44 msgid "Height" msgstr "Altezza" #: glade/x-tile.glade.h:45 msgid "Size" msgstr "Dimensione" #: glade/x-tile.glade.h:46 msgid "Override Monitor 2 Tiling Area" msgstr "Area di Tiling del Monitor 2 Personalizzata" #: glade/x-tile.glade.h:47 msgid "Close" msgstr "Chiudi" #: glade/x-tile.glade.h:48 msgid "Cancel" msgstr "Annulla" #: glade/x-tile.glade.h:49 msgid "OK" msgstr "OK" #: glade/x-tile.glade.h:50 msgid "Custom Tiling Layout" msgstr "Disposizione Piastrellamento Personalizzato" #: glade/x-tile.glade.h:51 msgid "1) Tile Some Windows Manually" msgstr "1) Piastrella Alcune Finestre Manualmente" #: glade/x-tile.glade.h:52 msgid "2) Select Them in the X Tile Windows List" msgstr "2) Selezionale nella Lista di Finestre di X Tile" #: glade/x-tile.glade.h:53 msgid "3) Click the Update Button" msgstr "3) Clicca il il Bottone Aggiorna" #: glade/x-tile.glade.h:54 msgid "Update" msgstr "Aggiorna" #: glade/x-tile.glade.h:55 msgid "Rows to Filter" msgstr "Righe da Filtrare" #: glade/x-tile.glade.h:56 msgid "Add an Application Filter" msgstr "Aggiungi un Filtro ad Applicazione" #: glade/x-tile.glade.h:57 msgid "Remove an Application Filter" msgstr "Rimuovi un Filtro Applicazione" #: glade/x-tile.glade.h:58 msgid "Add Row" msgstr "Aggiungi Riga" #: glade/x-tile.glade.h:60 msgid "X Tile" msgstr "X Tile" #: glade/x-tile.glade.h:61 msgid "Set Destination Workspace" msgstr "Spazio di Lavoro Destinatario" #: glade/x-tile.glade.h:62 msgid "Exit After Tile" msgstr "Esci Dopo il Tiling" x-tile-3.3/locale/pl.po000066400000000000000000000426711375405375400150220ustar00rootroot00000000000000# Polish translations for PACKAGE package. # Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Dominik Wójt , 2012. # msgid "" msgstr "" "Project-Id-Version: X Tile\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-09-07 23:14+0200\n" "PO-Revision-Date: 2012-09-13 23:50+0100\n" "Last-Translator: Dominik Wójt \n" "Language-Team: Polish\n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2)\n" #: modules/core.py:307 msgid "Use Drag and Drop to Sort the Rows" msgstr "Użyj przeciÄ…gania, aby sortować rzÄ™dy" #: modules/core.py:347 msgid "The New Language will be Available Only After Restarting X Tile" msgstr "Nowy jÄ™zyk bÄ™dzie dostÄ™pny dopiero po ponownym uruchomieniu X Tile" #: modules/core.py:369 glade/x-tile.glade.h:5 msgid "Tile the Windows Upon your X Desktop" msgstr "Ułóż okna na twoim pulpicie X" #: modules/core.py:583 msgid "The Size of the Toolbar Icons is already at the Maximum Value" msgstr "Rozmiar paska narzÄ™dzi ma już maksymalnÄ… wartość" #: modules/core.py:593 msgid "The Size of the Toolbar Icons is already at the Minimum Value" msgstr "Rozmiar ikon paska narzÄ™dzi ma już maksymalnÄ… wartość" #: modules/core.py:703 modules/core.py:711 modules/core.py:719 msgid "No Row is Selected" msgstr "Å»aden rzÄ…d nie jest zaznaczony" #: modules/core.py:741 modules/core.py:775 msgid "No Application Selected!" msgstr "Å»adna aplikacja nie jest zaznaczona" #: modules/core.py:855 msgid "Grid Details" msgstr "Szczegóły siatki" #: modules/core.py:863 msgid "Rows" msgstr "RzÄ™dy" #: modules/core.py:870 msgid "Columns" msgstr "Kolumny" #: modules/core.py:956 modules/core.py:964 modules/core.py:974 msgid "No Windows Checked" msgstr "Å»adne okno nie jest zaznaczone" #: modules/core.py:1014 modules/core.py:1027 msgid "Edit Custom Tile Settings" msgstr "Ustaw niestandardowe ustawienia ukÅ‚adu" #: modules/core.py:1174 msgid "" "The Custom Tile 1 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 1 " "Set'" msgstr "" "Niestandardowy ukÅ‚ad 1 nie zostaÅ‚ jeszcze ustawiony: Kliknij element menu " "'UkÅ‚ad->Ustaw niestandardowy ukÅ‚ad 1'" #: modules/core.py:1192 msgid "" "The Custom Tile 2 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 2 " "Set'" msgstr "" "Niestandardowy ukÅ‚ad 2 nie zostaÅ‚ jeszcze ustawiony: Kliknij element menu " "'UkÅ‚ad->Ustaw niestandardowy ukÅ‚ad 2'" #: modules/cons.py:268 msgid "_File" msgstr "_Plik" #: modules/cons.py:269 msgid "_Edit" msgstr "_Edycja" #: modules/cons.py:270 msgid "_Row" msgstr "_RzÄ…d" #: modules/cons.py:271 msgid "_Tile" msgstr "_Ułóż" #: modules/cons.py:272 msgid "_View" msgstr "_Widok" #: modules/cons.py:273 modules/cons.py:308 msgid "_Help" msgstr "_Pomoc" #: modules/cons.py:275 msgid "_Filter" msgstr "_Filtruj" #: modules/cons.py:275 msgid "Filter Rows" msgstr "Filtruj RzÄ™dy" #: modules/cons.py:276 msgid "Selected by _Default" msgstr "Wybrane _domyÅ›lnie" #: modules/cons.py:276 glade/x-tile.glade.h:59 msgid "Rows to be Selected by Default" msgstr "RzÄ™dy, które majÄ… być wybrane domyÅ›lnie" #: modules/cons.py:277 msgid "_Reload" msgstr "_OdÅ›wież" #: modules/cons.py:277 msgid "Reload the Windows List" msgstr "OdÅ›wież listÄ™ okien" #: modules/cons.py:278 msgid "_Quit" msgstr "_Wyjdź" #: modules/cons.py:278 msgid "Quit the Application" msgstr "Wyjdź z aplikacji" #: modules/cons.py:279 msgid "_Exit X Tile" msgstr "_Zamknij X Tile" #: modules/cons.py:279 msgid "Exit from X Tile" msgstr "Zamknij X tile" #: modules/cons.py:280 msgid "Show/Hide _X Tile" msgstr "Pokaż/ukryj _X Tile" #: modules/cons.py:280 msgid "Toggle Show/Hide X Tile" msgstr "Przełącz pokaż/ukryj X Tile" #: modules/cons.py:281 msgid "_Preferences" msgstr "_Preferencje" #: modules/cons.py:281 msgid "Open the Preferences Window" msgstr "Otwórz okno preferencji" #: modules/cons.py:282 msgid "Select _All" msgstr "Zaznacz _wszystkie" #: modules/cons.py:282 msgid "Select All the Windows in the List" msgstr "Zaznacz wszystkie okna na liÅ›cie" #: modules/cons.py:283 msgid "Deselect A_ll" msgstr "_Odznacz wszystkie" #: modules/cons.py:283 msgid "Deselect All the Windows in the List" msgstr "Odznacz wszystkie okna na liÅ›cie" #: modules/cons.py:284 msgid "Tile _Vertically" msgstr "Ułóż _pionowo" #: modules/cons.py:284 msgid "Tile Vertically The Checked Windows" msgstr "Ułóż pionowo zaznaczone okna" #: modules/cons.py:285 msgid "Tile _Horizontally" msgstr "Ułóż po_ziomo" #: modules/cons.py:285 msgid "Tile Horizontally The Checked Windows" msgstr "Ułóż poziomo zaznaczone okna" #: modules/cons.py:286 msgid "_Triangle Up" msgstr "TrójkÄ…t _górny" #: modules/cons.py:286 msgid "Tile Triangle Up The Checked Windows" msgstr "Ułóż zaznaczone okna w trójkÄ…t górny" #: modules/cons.py:287 msgid "Triangle _Down" msgstr "TrójkÄ…t _dolny" #: modules/cons.py:287 msgid "Tile Triangle Down The Checked Windows" msgstr "Ułóż zaznaczone okna w trójkÄ…t dolny" #: modules/cons.py:288 msgid "Triangle _Left" msgstr "TrójkÄ…t _lewy" #: modules/cons.py:288 msgid "Tile Triangle Left The Checked Windows" msgstr "Ułóż zaznaczone okna w trójkÄ…t lewy" #: modules/cons.py:289 msgid "Triangle _Right" msgstr "TrójkÄ…t _prawy" #: modules/cons.py:289 msgid "Tile Triangle Right The Checked Windows" msgstr "Ułóż zaznaczone okna w trójkÄ…t prawy" #: modules/cons.py:290 msgid "Tile _Quad" msgstr "Ułóż w _kwadrat" #: modules/cons.py:290 msgid "Tile into 4 quadrants The Checked Windows" msgstr "Ułóż zaznaczone okna w kwadrat" #: modules/cons.py:291 msgid "Tile _Grid" msgstr "_Siatka" #: modules/cons.py:291 msgid "Tile into an Arbitrary Grid The Checked Windows" msgstr "Ułóż zaznaczone okna w siatkÄ™" #: modules/cons.py:292 msgid "Custom Tile 1 _Set" msgstr "Ustaw _niestandardowy ukÅ‚ad 1" #: modules/cons.py:292 msgid "Edit Custom Tile 1 Settings" msgstr "Edytuj ustawienia niestandardowego ukÅ‚adu 1" #: modules/cons.py:293 msgid "Custom Tile _1 Run" msgstr "Ułóż w niestandardowy ukÅ‚ad _1" #: modules/cons.py:293 msgid "Execute Custom Tile 1" msgstr "Ułóż w niestandardowy ukÅ‚ad 1" #: modules/cons.py:294 msgid "Custom Tile 2 S_et" msgstr "Ustaw n_iestandardowy ukÅ‚ad 2" #: modules/cons.py:294 msgid "Edit Custom Tile 2 Settings" msgstr "Edytuj ustawienia niestandardowego ukÅ‚adu 2" #: modules/cons.py:295 msgid "Custom Tile _2 Run" msgstr "Ułóż w niestandardowy ukÅ‚ad _2" #: modules/cons.py:295 msgid "Execute Custom Tile 2" msgstr "Ułóż w niestandardowy ukÅ‚ad 2" #: modules/cons.py:296 modules/cons.py:325 msgid "U_ndo Tiling" msgstr "Co_fnij ukÅ‚adanie" #: modules/cons.py:296 modules/cons.py:325 msgid "Undo the Latest Tiling Operation" msgstr "Cofnij ostatniÄ… operacjÄ™ ukÅ‚adania" #: modules/cons.py:297 modules/cons.py:324 msgid "_Invert Tiling Order" msgstr "_Odwróć kolejność ukÅ‚adania" #: modules/cons.py:297 modules/cons.py:324 msgid "Invert the Order of the Latest Tiling Operation" msgstr "Odwróć kolejność ostatniej operacji ukÅ‚adania" #: modules/cons.py:298 modules/cons.py:326 msgid "C_ycle Tiling Order" msgstr "PrzesuÅ„ c_yklicznie kolejność ukÅ‚adania" #: modules/cons.py:298 modules/cons.py:326 msgid "Cycle the Order of the Latest Tiling Operation" msgstr "PrzesuÅ„ cyklicznie kolejność ostatniej operacji ukÅ‚adania" #: modules/cons.py:299 msgid "_Maximize Windows" msgstr "Z_maksymalizuj okna" #: modules/cons.py:299 msgid "Maximize The Checked Windows" msgstr "Zmaksymalizuj okna" #: modules/cons.py:300 msgid "_Unmaximize Windows" msgstr "Prz_ywróć okna" #: modules/cons.py:300 msgid "Unmaximize The Checked Windows" msgstr "Przywróć rozmiar zaznaczonych okien" #: modules/cons.py:301 msgid "_Close Windows" msgstr "_Zamknij okna" #: modules/cons.py:301 msgid "Close The Checked Windows" msgstr "Zamknij zaznaczone okna" #: modules/cons.py:302 msgid "Move _Up" msgstr "PrzesuÅ„ do _góry" #: modules/cons.py:302 msgid "Move the Selected Row Up" msgstr "PrzesuÅ„ zaznaczony rzÄ…d do góry" #: modules/cons.py:303 msgid "Move _Down" msgstr "PrzesuÅ„ w _dół" #: modules/cons.py:303 msgid "Move the Selected Row Down" msgstr "PrzesuÅ„ zaznaczony rzÄ…d w dół" #: modules/cons.py:304 msgid "_Remove" msgstr "_UsuÅ„" #: modules/cons.py:304 msgid "Remove the Selected Row" msgstr "UsuÅ„ zaznaczony rzÄ…d" #: modules/cons.py:305 msgid "Show/Hide _Toolbar" msgstr "Pokaż/ukryj pasek _narzÄ™dzi" #: modules/cons.py:305 msgid "Toggle Show/Hide Toolbar" msgstr "Przełącz pokaż/ukryj pasek narzÄ™dzi" #: modules/cons.py:306 msgid "_Increase Toolbar Icons Size" msgstr "_ZwiÄ™ksz rozmiar ikon paska narzÄ™dzi" #: modules/cons.py:306 msgid "Increase the Size of the Toolbar Icons" msgstr "ZwiÄ™ksz rozmiar ikon paska narzÄ™dzi" #: modules/cons.py:307 msgid "_Decrease Toolbar Icons Size" msgstr "Z_mniejsz rozmiar ikon paska narzÄ™dzi" #: modules/cons.py:307 msgid "Decrease the Size of the Toolbar Icons" msgstr "Zmniejsz rozmiar ikon paska narzÄ™dzi" #: modules/cons.py:308 msgid "X Tile Project Home Page" msgstr "Strona domowa projektu X Tile" #: modules/cons.py:309 modules/cons.py:310 msgid "_About" msgstr "_O programie" #: modules/cons.py:309 modules/cons.py:310 glade/x-tile.glade.h:1 msgid "About X Tile" msgstr "O X Tile" #: modules/cons.py:311 msgid "_Close All" msgstr "_Zamknij wszystkie" #: modules/cons.py:311 msgid "Close All Windows" msgstr "Zamknij wszystkie okna" #: modules/cons.py:312 msgid "_Unmaximize All" msgstr "_Przywróć wszystkie" #: modules/cons.py:312 msgid "Unmaximize All Windows" msgstr "Przywróć rozmiar wszystkich okien" #: modules/cons.py:313 msgid "_Maximize All" msgstr "_Zmaksymalizuj wszystkie" #: modules/cons.py:313 msgid "Maximize All Windows" msgstr "Zmaksymalizuj wszystkie okna" #: modules/cons.py:314 msgid "Tile All _Quad" msgstr "Ułóż wszystkie w _kwadrat" #: modules/cons.py:314 msgid "Tile All Windows Quad" msgstr "Ułóż wszystkie okna w kwadrat" #: modules/cons.py:315 msgid "Tile All Triangle _Down" msgstr "Ułóż wszystkie w trójkÄ…t _dolny" #: modules/cons.py:315 msgid "Tile All Windows Triangle Down" msgstr "Ułóż wszystkie okna w trójkÄ…t dolny" #: modules/cons.py:316 msgid "Tile All Triangle _Up" msgstr "Ułóż wszystkie w trójkÄ…t _górny" #: modules/cons.py:316 msgid "Tile All Windows Triangle Up" msgstr "Ułóż wszystkie okna w trójkÄ…t górny" #: modules/cons.py:317 msgid "Tile All Triangle _Right" msgstr "Ułóż wszystkie w trójkÄ…t _prawy" #: modules/cons.py:317 msgid "Tile All Windows Triangle Right" msgstr "Ułóż wszystkie okna w trójkÄ…t prawy" #: modules/cons.py:318 msgid "Tile All Triangle _Left" msgstr "Ułóż wszystkie w trójkÄ…t _lewy" #: modules/cons.py:318 msgid "Tile All Windows Triangle Left" msgstr "Ułóż wszystkie okna w trójkÄ…t lewy" #: modules/cons.py:319 msgid "Tile All Custom _2" msgstr "Ułóż wszystkie w ukÅ‚ad niestandardowy _2" #: modules/cons.py:319 msgid "Tile All Windows Custom 2" msgstr "Ułóż wszystkie okna w ukÅ‚ad niestandardowy 2" #: modules/cons.py:320 msgid "Tile All Custom _1" msgstr "Ułóż wszystkie w ukÅ‚ad niestandardowy _1" #: modules/cons.py:320 msgid "Tile All Windows Custom 1" msgstr "Ułóż wszystkie okna w ukÅ‚ad niestandardowy 1" #: modules/cons.py:321 msgid "Tile All _Grid" msgstr "Ustaw wszystkie w _siatkÄ™" #: modules/cons.py:321 msgid "Tile All Windows Grid" msgstr "Ustaw wszystkie okna w siatkÄ™" #: modules/cons.py:322 msgid "Tile All _Horizontally" msgstr "Ustaw wszystkie po_ziomo" #: modules/cons.py:322 msgid "Tile All Windows Horizontally" msgstr "Ustaw wszystkie okna poziomo" #: modules/cons.py:323 msgid "Tile All _Vertically" msgstr "Ustaw wszystkie pio_nowo" #: modules/cons.py:323 msgid "Tile All Windows Vertically" msgstr "Ustaw wszystkie okna pionowo" #: glade/x-tile.glade.h:2 msgid "" "Copyright © 2009-2012\n" "Giuseppe Penone \n" "Chris Camacho " msgstr "" "Copyright © 2009-2012\n" "Giuseppe Penone \n" "Chris Camacho " #: glade/x-tile.glade.h:6 msgid "http://www.giuspen.com/x-tile/" msgstr "http://www.giuspen.com/x-tile/" #: glade/x-tile.glade.h:7 msgid "" "\n" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software\n" "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n" "MA 02110-1301, USA." msgstr "" "\n" "Niniejszy program jest wolnym oprogramowaniem; możesz go \n" "rozprowadzać dalej i/lub modyfikować na warunkach Powszechnej \n" "Licencji Publicznej GNU, wydanej przez FundacjÄ™ Wolnego \n" "Oprogramowania - wedÅ‚ug wersji 2 tej Licencji lub (wedÅ‚ug Twojego \n" "wyboru) którejÅ› z późniejszych wersji.\n" "\n" "Niniejszy program rozpowszechniany jest z nadziejÄ…, iż bÄ™dzie on \n" "użyteczny - jednak BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyÅ›lnej \n" "gwarancji PRZYDATNOÅšCI HANDLOWEJ albo PRZYDATNOÅšCI DO OKREÅšLONYCH \n" "ZASTOSOWAŃ. W celu uzyskania bliższych informacji siÄ™gnij do \n" "Powszechnej Licencji Publicznej GNU.\n" "\n" "Z pewnoÅ›ciÄ… wraz z niniejszym programem otrzymaÅ‚eÅ› też egzemplarz \n" "Powszechnej Licencji Publicznej GNU (GNU General Public License); \n" "jeÅ›li nie - napisz do Free Software Foundation, Inc., 59 Temple \n" "Place, Fifth Floor, Boston, MA 02110-1301 USA" #: glade/x-tile.glade.h:22 msgid "" "Chinese Simplified (zh_CN) Khiyuan Fan \n" "Chinese Traditional (zh_TW) Yan-ren Tsai \n" "Czech (cs) Pavel Fric \n" "French (fr) Ludovic Troisi \n" "German (de) Jöran Zeller \n" "Italian (it) Giuseppe Penone \n" "Polish (pl) Dominik Wójt \n" "Russian (ru) Andriy Kovtun " msgstr "" "ChiÅ„ski uproszczony (zh_CN) Khiyuan Fan \n" "ChiÅ„ski tradycyjny (zh_TW) Yan-ren Tsai \n" "Czeski (cs) Pavel Fric \n" "Francuski (fr) Ludovic Troisi \n" "Niemiecki (de) Jöran Zeller \n" "WÅ‚oski (it) Giuseppe Penone \n" "Polski (pl) Dominik Wójt \n" "Rosyjski (ru) Andriy Kovtun " #: glade/x-tile.glade.h:31 msgid "Preferences" msgstr "Preferencje" #: glade/x-tile.glade.h:32 msgid "Do Not List Minimized Windows" msgstr "Nie wypisuj zminimalizowanych okien" #: glade/x-tile.glade.h:33 msgid "Only Current Workspace" msgstr "Tylko aktywna przestrzeÅ„ robocza" #: glade/x-tile.glade.h:34 msgid "Enable System Tray Docking" msgstr "Włącz dokowanie na pasku systemowym" #: glade/x-tile.glade.h:35 msgid "Start Minimized in the System Tray" msgstr "Zaczynaj zminimalizowany w pasku systemowym" #: glade/x-tile.glade.h:36 msgid "Use AppIndicator for Docking" msgstr "Używaj obszaru wskaźników aplikacji do dokowania" #: glade/x-tile.glade.h:37 msgid "Show Toolbar" msgstr "Pokaż pasek narzÄ™dzi" #: glade/x-tile.glade.h:38 msgid " Language " msgstr "JÄ™zyk" #: glade/x-tile.glade.h:39 msgid "Override Monitor 1 Tiling Area" msgstr "Nadpisz obszar ukÅ‚adania na monitorze 1" #: glade/x-tile.glade.h:40 msgid "X" msgstr "X" #: glade/x-tile.glade.h:41 msgid "Y" msgstr "Y" #: glade/x-tile.glade.h:42 msgid "Position" msgstr "Pozycja" #: glade/x-tile.glade.h:43 msgid "Width" msgstr "Szerokość" #: glade/x-tile.glade.h:44 msgid "Height" msgstr "Wysokość" #: glade/x-tile.glade.h:45 msgid "Size" msgstr "Rozmiar" #: glade/x-tile.glade.h:46 msgid "Override Monitor 2 Tiling Area" msgstr "Nadpisz obszar ukÅ‚adania na monitorze 2" #: glade/x-tile.glade.h:47 msgid "Close" msgstr "Zamknij" #: glade/x-tile.glade.h:48 msgid "Cancel" msgstr "Anuluj" #: glade/x-tile.glade.h:49 msgid "OK" msgstr "OK" #: glade/x-tile.glade.h:50 msgid "Custom Tiling Layout" msgstr "Niestandardowy ukÅ‚ad" #: glade/x-tile.glade.h:51 msgid "1) Tile Some Windows Manually" msgstr "1) Ułóż jakieÅ› okna rÄ™cznie" #: glade/x-tile.glade.h:52 msgid "2) Select Them in the X Tile Windows List" msgstr "2) Zaznacz je na liÅ›cie okien X" #: glade/x-tile.glade.h:53 msgid "3) Click the Update Button" msgstr "3) Kliknij przycisk aktualizuj" #: glade/x-tile.glade.h:54 msgid "Update" msgstr "Aktualizuj" #: glade/x-tile.glade.h:55 msgid "Rows to Filter" msgstr "RzÄ™dy do przefiltrowania" #: glade/x-tile.glade.h:56 msgid "Add an Application Filter" msgstr "Dodaj filtr aplikacji" #: glade/x-tile.glade.h:57 msgid "Remove an Application Filter" msgstr "UsuÅ„ filtr aplikacji" #: glade/x-tile.glade.h:58 msgid "Add Row" msgstr "Dodaj rzÄ…d" #: glade/x-tile.glade.h:60 msgid "X Tile" msgstr "X Tile" #: glade/x-tile.glade.h:61 msgid "Set Destination Workspace" msgstr "Wyznacz docelowÄ… przestrzeÅ„ roboczÄ…" #: glade/x-tile.glade.h:62 msgid "Exit After Tile" msgstr "Wyjdź po uÅ‚ożeniu" #~ msgid "_Cycle Tiling Order" #~ msgstr "PrzesuÅ„ _cyklicznie kolejność ukÅ‚adania" x-tile-3.3/locale/ru.po000066400000000000000000000513101375405375400150230ustar00rootroot00000000000000# Russian translations for PACKAGE package. # Copyright (C) 2010 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # maul , 2010. # Andriy Kovtun , 2010. # msgid "" msgstr "" "Project-Id-Version: X Tile\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-09-07 23:14+0200\n" "PO-Revision-Date: 2011-07-03 10:59+0300\n" "Last-Translator: Andriy Kovtun \n" "Language-Team: Russian\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Language: ru_RU\n" "X-Source-Language: C\n" #: modules/core.py:307 msgid "Use Drag and Drop to Sort the Rows" msgstr "ИÑпользуйте перетаÑÐºÐ¸Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ñортировки" #: modules/core.py:347 msgid "The New Language will be Available Only After Restarting X Tile" msgstr "Ðовый Ñзык будет доÑтупен только поÑле перезапуÑка X-Tile" #: modules/core.py:369 glade/x-tile.glade.h:5 msgid "Tile the Windows Upon your X Desktop" msgstr "Разбить окна на рабочем Ñтоле" #: modules/core.py:583 msgid "The Size of the Toolbar Icons is already at the Maximum Value" msgstr "Размер иконок панели инÑтрументов макÑимальный" #: modules/core.py:593 msgid "The Size of the Toolbar Icons is already at the Minimum Value" msgstr "Размер иконок панели инÑтрументов минимальный" #: modules/core.py:703 modules/core.py:711 modules/core.py:719 msgid "No Row is Selected" msgstr "Строки не выбраны" #: modules/core.py:741 modules/core.py:775 msgid "No Application Selected!" msgstr "ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ выбраны!" #: modules/core.py:855 msgid "Grid Details" msgstr "ÐаÑтройки Ñетки" #: modules/core.py:863 msgid "Rows" msgstr "Строки" #: modules/core.py:870 msgid "Columns" msgstr "Столбцы" #: modules/core.py:956 modules/core.py:964 modules/core.py:974 msgid "No Windows Checked" msgstr "Окна не выбраны" #: modules/core.py:1014 modules/core.py:1027 msgid "Edit Custom Tile Settings" msgstr "ÐаÑтроить пользовательÑкую Ñхему" #: modules/core.py:1174 msgid "" "The Custom Tile 1 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 1 " "Set'" msgstr "" "ПользовательÑÐºÐ°Ñ Ñхема 1 не выÑтавлена: Выберите ее в меню " "'Разбиение->ПользовательÑÐºÐ°Ñ Ñхема 1'" #: modules/core.py:1192 msgid "" "The Custom Tile 2 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 2 " "Set'" msgstr "" "ПользовательÑÐºÐ°Ñ Ñхема2 не выÑтавлена: Выберите ее в меню " "'Разбиение->ПользовательÑÐºÐ°Ñ Ñхема 2'" #: modules/cons.py:268 msgid "_File" msgstr "Файл" #: modules/cons.py:269 msgid "_Edit" msgstr "Правка" #: modules/cons.py:270 msgid "_Row" msgstr "Строка" #: modules/cons.py:271 msgid "_Tile" msgstr "Разбиение" #: modules/cons.py:272 msgid "_View" msgstr "Вид" #: modules/cons.py:273 modules/cons.py:308 msgid "_Help" msgstr "Помощь" #: modules/cons.py:275 msgid "_Filter" msgstr "Фильтр" #: modules/cons.py:275 msgid "Filter Rows" msgstr "Фильтровать Ñтроки" #: modules/cons.py:276 msgid "Selected by _Default" msgstr "Выбраны по умолчанию" #: modules/cons.py:276 glade/x-tile.glade.h:59 msgid "Rows to be Selected by Default" msgstr "Строки выбраны по умолчанию" #: modules/cons.py:277 msgid "_Reload" msgstr "Обновить" #: modules/cons.py:277 msgid "Reload the Windows List" msgstr "Обновить ÑпиÑок окон" #: modules/cons.py:278 msgid "_Quit" msgstr "Выход" #: modules/cons.py:278 msgid "Quit the Application" msgstr "Выход из программы" #: modules/cons.py:279 msgid "_Exit X Tile" msgstr "Выйти из X Tile" #: modules/cons.py:279 msgid "Exit from X Tile" msgstr "Выйти из X Tile" #: modules/cons.py:280 msgid "Show/Hide _X Tile" msgstr "Показать/Ñкрыть X Tile" #: modules/cons.py:280 msgid "Toggle Show/Hide X Tile" msgstr "Показать/Скрыть X Tile" #: modules/cons.py:281 msgid "_Preferences" msgstr "Параметры" #: modules/cons.py:281 msgid "Open the Preferences Window" msgstr "Открыть окно параметров" #: modules/cons.py:282 msgid "Select _All" msgstr "Выделить вÑÑ‘" #: modules/cons.py:282 msgid "Select All the Windows in the List" msgstr "Выделить вÑе окна ÑпиÑка" #: modules/cons.py:283 msgid "Deselect A_ll" msgstr "СнÑть вÑе выделениÑ" #: modules/cons.py:283 msgid "Deselect All the Windows in the List" msgstr "СнÑть Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð²Ñех окон ÑпиÑка" #: modules/cons.py:284 msgid "Tile _Vertically" msgstr "Разбить по вертикали" #: modules/cons.py:284 msgid "Tile Vertically The Checked Windows" msgstr "Разбить по вертикали выбранные окна" #: modules/cons.py:285 msgid "Tile _Horizontally" msgstr "Разбить по горизонтали" #: modules/cons.py:285 msgid "Tile Horizontally The Checked Windows" msgstr "Разбить по горизонтали выбранные окна" #: modules/cons.py:286 msgid "_Triangle Up" msgstr "Верхний треугольник" #: modules/cons.py:286 msgid "Tile Triangle Up The Checked Windows" msgstr "Разбить выделенные окна верхним треугольником" #: modules/cons.py:287 msgid "Triangle _Down" msgstr "Ðижний треугольник" #: modules/cons.py:287 msgid "Tile Triangle Down The Checked Windows" msgstr "Разбить выделенные окна нижним треугольником" #: modules/cons.py:288 msgid "Triangle _Left" msgstr "Левый треугольник" #: modules/cons.py:288 msgid "Tile Triangle Left The Checked Windows" msgstr "Разбить выделенные окна левым треугольником" #: modules/cons.py:289 msgid "Triangle _Right" msgstr "Правый треугольник" #: modules/cons.py:289 msgid "Tile Triangle Right The Checked Windows" msgstr "Разбить выделенные окна правым треугольником" #: modules/cons.py:290 msgid "Tile _Quad" msgstr "Разбить на квадраты" #: modules/cons.py:290 msgid "Tile into 4 quadrants The Checked Windows" msgstr "Разбить выделенные окна на 4 квадрата" #: modules/cons.py:291 msgid "Tile _Grid" msgstr "Разбить по Ñетке" #: modules/cons.py:291 msgid "Tile into an Arbitrary Grid The Checked Windows" msgstr "Разбить выделенные окна по Ñетке" #: modules/cons.py:292 msgid "Custom Tile 1 _Set" msgstr "ПользовательÑÐºÐ°Ñ Ñхема 1" #: modules/cons.py:292 msgid "Edit Custom Tile 1 Settings" msgstr "ÐаÑтроить пользовательÑкую Ñхему 1" #: modules/cons.py:293 msgid "Custom Tile _1 Run" msgstr "ЗапуÑтить пользовательÑкую Ñхему 1" #: modules/cons.py:293 msgid "Execute Custom Tile 1" msgstr "ЗапуÑтить пользовательÑкую Ñхему 1" #: modules/cons.py:294 msgid "Custom Tile 2 S_et" msgstr "ПользовательÑÐºÐ°Ñ Ñхема 2" #: modules/cons.py:294 msgid "Edit Custom Tile 2 Settings" msgstr "ÐаÑтроить пользовательÑкую Ñхему 2" #: modules/cons.py:295 msgid "Custom Tile _2 Run" msgstr "ЗапуÑтить пользовательÑкую Ñхему 2" #: modules/cons.py:295 msgid "Execute Custom Tile 2" msgstr "ЗапуÑтить пользовательÑкую Ñхему 2" #: modules/cons.py:296 modules/cons.py:325 msgid "U_ndo Tiling" msgstr "Отменить тайлинг" #: modules/cons.py:296 modules/cons.py:325 msgid "Undo the Latest Tiling Operation" msgstr "Отменить поÑледнюю операцию тайлинга" #: modules/cons.py:297 modules/cons.py:324 msgid "_Invert Tiling Order" msgstr "Инвертировать порÑдок тайлинга" #: modules/cons.py:297 modules/cons.py:324 msgid "Invert the Order of the Latest Tiling Operation" msgstr "Инвертировать порÑдок поÑледней операции тайлинга" #: modules/cons.py:298 modules/cons.py:326 msgid "C_ycle Tiling Order" msgstr "ЦикличеÑкий порÑдок тайлинга" #: modules/cons.py:298 modules/cons.py:326 msgid "Cycle the Order of the Latest Tiling Operation" msgstr "ЦикличеÑкий порÑдок поÑледней операции тайлинга" #: modules/cons.py:299 msgid "_Maximize Windows" msgstr "Развернуть окна" #: modules/cons.py:299 msgid "Maximize The Checked Windows" msgstr "Развернуть вÑе выбранные окна" #: modules/cons.py:300 msgid "_Unmaximize Windows" msgstr "Убрать разворот окон" #: modules/cons.py:300 msgid "Unmaximize The Checked Windows" msgstr "Убрать разворот выделенных окон" #: modules/cons.py:301 msgid "_Close Windows" msgstr "Закрыть окна" #: modules/cons.py:301 msgid "Close The Checked Windows" msgstr "Закрыть отмеченные окна" #: modules/cons.py:302 msgid "Move _Up" msgstr "Передвинуть вверх" #: modules/cons.py:302 msgid "Move the Selected Row Up" msgstr "Выбранную Ñтроку вверх" #: modules/cons.py:303 msgid "Move _Down" msgstr "Передвинуть вниз" #: modules/cons.py:303 msgid "Move the Selected Row Down" msgstr "Выбранную Ñтроку вниз" #: modules/cons.py:304 msgid "_Remove" msgstr "Удалить" #: modules/cons.py:304 msgid "Remove the Selected Row" msgstr "Удалить выделенную Ñтроку" #: modules/cons.py:305 msgid "Show/Hide _Toolbar" msgstr "Показать/Ñкрыть панель инÑтрументов" #: modules/cons.py:305 msgid "Toggle Show/Hide Toolbar" msgstr "Показать/Скрыть панель инÑтрументов" #: modules/cons.py:306 msgid "_Increase Toolbar Icons Size" msgstr "Увеличить иконки панели инÑтрументов" #: modules/cons.py:306 msgid "Increase the Size of the Toolbar Icons" msgstr "Увеличить иконки панели инÑтрументов" #: modules/cons.py:307 msgid "_Decrease Toolbar Icons Size" msgstr "Уменьшить иконки панели инÑтрументов" #: modules/cons.py:307 msgid "Decrease the Size of the Toolbar Icons" msgstr "Уменьшить иконки панели инÑтрументов" #: modules/cons.py:308 msgid "X Tile Project Home Page" msgstr "ДомашнÑÑ Ñтраница проекта X Tile" #: modules/cons.py:309 modules/cons.py:310 msgid "_About" msgstr "О программе" #: modules/cons.py:309 modules/cons.py:310 glade/x-tile.glade.h:1 msgid "About X Tile" msgstr "О программе X Tile" #: modules/cons.py:311 msgid "_Close All" msgstr "Закрыть вÑе" #: modules/cons.py:311 msgid "Close All Windows" msgstr "Закрыть окна" #: modules/cons.py:312 msgid "_Unmaximize All" msgstr "Убрать разворот вÑех окон" #: modules/cons.py:312 msgid "Unmaximize All Windows" msgstr "Убрать разворот окон" #: modules/cons.py:313 msgid "_Maximize All" msgstr "Развернуть вÑе" #: modules/cons.py:313 msgid "Maximize All Windows" msgstr "Развернуть окна" #: modules/cons.py:314 msgid "Tile All _Quad" msgstr "Разбить на квадраты" #: modules/cons.py:314 msgid "Tile All Windows Quad" msgstr "Разбить на квадраты" #: modules/cons.py:315 msgid "Tile All Triangle _Down" msgstr "Разбить вÑе нижним треугольником" #: modules/cons.py:315 msgid "Tile All Windows Triangle Down" msgstr "Разбить нижним треугольником" #: modules/cons.py:316 msgid "Tile All Triangle _Up" msgstr "Разбить вÑе верхним треугольником" #: modules/cons.py:316 msgid "Tile All Windows Triangle Up" msgstr "Разбить верхним треугольником" #: modules/cons.py:317 msgid "Tile All Triangle _Right" msgstr "Разбить вÑе правым треугольником" #: modules/cons.py:317 msgid "Tile All Windows Triangle Right" msgstr "Разбить правым треугольником" #: modules/cons.py:318 msgid "Tile All Triangle _Left" msgstr "Разбить вÑе левым треугольником" #: modules/cons.py:318 msgid "Tile All Windows Triangle Left" msgstr "Разбить левым треугольником" #: modules/cons.py:319 msgid "Tile All Custom _2" msgstr "Разбить вÑе пользовательÑкой Ñхемой 2" #: modules/cons.py:319 msgid "Tile All Windows Custom 2" msgstr "Разбить пользовательÑкой Ñхемой 2" #: modules/cons.py:320 msgid "Tile All Custom _1" msgstr "Разбить вÑе пользовательÑкой Ñхемой 1" #: modules/cons.py:320 msgid "Tile All Windows Custom 1" msgstr "Разбить пользовательÑкой Ñхемой 1" #: modules/cons.py:321 msgid "Tile All _Grid" msgstr "Разбить по Ñетке" #: modules/cons.py:321 msgid "Tile All Windows Grid" msgstr "Разбить по Ñетке" #: modules/cons.py:322 msgid "Tile All _Horizontally" msgstr "Разбить вÑе по горизонтали" #: modules/cons.py:322 msgid "Tile All Windows Horizontally" msgstr "Разбить по горизонтали" #: modules/cons.py:323 msgid "Tile All _Vertically" msgstr "Разбить вÑе по вертикали" #: modules/cons.py:323 msgid "Tile All Windows Vertically" msgstr "Разбить по вертикали" #: glade/x-tile.glade.h:2 msgid "" "Copyright © 2009-2012\n" "Giuseppe Penone \n" "Chris Camacho " msgstr "" "Copyright © 2009-2012\n" "Giuseppe Penone \n" "Chris Camacho " #: glade/x-tile.glade.h:6 msgid "http://www.giuspen.com/x-tile/" msgstr "http://www.giuspen.com/x-tile/" #: glade/x-tile.glade.h:7 msgid "" "\n" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software\n" "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n" "MA 02110-1301, USA." msgstr "" "\n" "Эта программа ÑвлÑетÑÑ Ñвободным программным обеÑпечением;\n" "вы можете раÑпроÑтранÑть и/или изменÑть его ÑоглаÑно уÑловиÑм\n" "Стандартной ОбщеÑтвенной Лицензии GNU (GNU GPL),\n" "опубликованной Фондом Ñвободного программного обеÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ (FSF),\n" "либо Лицензии верÑии 3, либо (на ваше уÑмотрение) \n" "любой более поздней верÑии.\n" " \n" "Программа раÑпроÑтранÑетÑÑ Ð² надежде, что она будет полезной,\n" "но БЕЗ КÐКИХ БЫ ТО ÐИ БЫЛО ГÐРÐÐТИЙÐЫХ ОБЯЗÐТЕЛЬСТВ; \n" "даже без коÑвенных гарантийных обÑзательÑтв, ÑвÑзанных\n" "Ñ ÐŸÐžÐ¢Ð Ð•Ð‘Ð˜Ð¢Ð•Ð›Ð¬Ð¡ÐšÐ˜ÐœÐ˜ СВОЙСТВÐМИ и ПРИГОДÐОСТЬЮ\n" "ДЛЯ ОПРЕДЕЛЕÐÐЫХ ЦЕЛЕЙ. Ð”Ð»Ñ Ð¿Ð¾Ð´Ñ€Ð¾Ð±Ð½Ð¾Ñтей Ñмотрите\n" "Стандартную ОбщеÑтвенную Лицензию GNU.\n" "\n" "Ð’Ñ‹ должны были получить копию Стандартной ОбщеÑтвенной\n" "Лицензии GNU вмеÑте Ñ Ñтой программой. ЕÑли Ñто не так,\n" "напишите в Фонд Свободного ПО (Free Software Foundation, Inc., \n" "675 Mass Ave, Cambridge, MA 02139, USA." #: glade/x-tile.glade.h:22 msgid "" "Chinese Simplified (zh_CN) Khiyuan Fan \n" "Chinese Traditional (zh_TW) Yan-ren Tsai \n" "Czech (cs) Pavel Fric \n" "French (fr) Ludovic Troisi \n" "German (de) Jöran Zeller \n" "Italian (it) Giuseppe Penone \n" "Polish (pl) Dominik Wójt \n" "Russian (ru) Andriy Kovtun " msgstr "" "КитайÑкий Упрощённый (zh_CN) Khiyuan Fan \n" "КитайÑкий Традиционный (zh_TW) Yan-ren Tsai \n" "ЧешÑкий (cs) Pavel Fric \n" "ИÑпанÑкий (es_AR) MeloPixel \n" "ФранцузÑкий (fr) Ludovic Troisi \n" "Ðемецкий (de) Jöran Zeller \n" "ИтальÑнÑкий (it) Giuseppe Penone \n" "ПольÑкий (pl) Dominik Wójt \n" "РуÑÑкий (ru) Ðндрей Ковтун " #: glade/x-tile.glade.h:31 msgid "Preferences" msgstr "Параметры" #: glade/x-tile.glade.h:32 msgid "Do Not List Minimized Windows" msgstr "Ðе включать минимизированные окна в ÑпиÑок" #: glade/x-tile.glade.h:33 msgid "Only Current Workspace" msgstr "Только текущий рабочий Ñтол" #: glade/x-tile.glade.h:34 msgid "Enable System Tray Docking" msgstr "Сворачивать в ÑиÑтемный лоток" #: glade/x-tile.glade.h:35 msgid "Start Minimized in the System Tray" msgstr "Свернуть в ÑиÑтемный лоток при запуÑке" #: glade/x-tile.glade.h:36 msgid "Use AppIndicator for Docking" msgstr "ИÑпользовать Appindicator" #: glade/x-tile.glade.h:37 msgid "Show Toolbar" msgstr "Показывать панель инÑтрументов" #: glade/x-tile.glade.h:38 msgid " Language " msgstr "Язык" #: glade/x-tile.glade.h:39 msgid "Override Monitor 1 Tiling Area" msgstr "ОблаÑть тайлинга Монитора 1" #: glade/x-tile.glade.h:40 msgid "X" msgstr "X" #: glade/x-tile.glade.h:41 msgid "Y" msgstr "Y" #: glade/x-tile.glade.h:42 msgid "Position" msgstr "ПозициÑ" #: glade/x-tile.glade.h:43 msgid "Width" msgstr "Ширина" #: glade/x-tile.glade.h:44 msgid "Height" msgstr "Ð’Ñ‹Ñота" #: glade/x-tile.glade.h:45 msgid "Size" msgstr "Размер" #: glade/x-tile.glade.h:46 msgid "Override Monitor 2 Tiling Area" msgstr "ОблаÑть тайлинга Монитора 2" #: glade/x-tile.glade.h:47 msgid "Close" msgstr "Закрыть" #: glade/x-tile.glade.h:48 msgid "Cancel" msgstr "Отмена" #: glade/x-tile.glade.h:49 msgid "OK" msgstr "OK" #: glade/x-tile.glade.h:50 msgid "Custom Tiling Layout" msgstr "ПользовательÑÐºÐ°Ñ Ñхема тайлинга" #: glade/x-tile.glade.h:51 msgid "1) Tile Some Windows Manually" msgstr "1) Разбить окна вручную" #: glade/x-tile.glade.h:52 msgid "2) Select Them in the X Tile Windows List" msgstr "2) Выберите их из ÑпиÑка окон" #: glade/x-tile.glade.h:53 msgid "3) Click the Update Button" msgstr "3) Ðажмите кнопку 'Обновить'" #: glade/x-tile.glade.h:54 msgid "Update" msgstr "Обновить" #: glade/x-tile.glade.h:55 msgid "Rows to Filter" msgstr "Применение фильтра ко вÑем Ñтрокам" #: glade/x-tile.glade.h:56 msgid "Add an Application Filter" msgstr "Добавить фильтр приложений" #: glade/x-tile.glade.h:57 msgid "Remove an Application Filter" msgstr "Убрать фильтр приложений" #: glade/x-tile.glade.h:58 msgid "Add Row" msgstr "Добавить Ñтроку" #: glade/x-tile.glade.h:60 msgid "X Tile" msgstr "X Tile" #: glade/x-tile.glade.h:61 msgid "Set Destination Workspace" msgstr "Выбор рабочего Ñтола" #: glade/x-tile.glade.h:62 msgid "Exit After Tile" msgstr "Выйти поÑле тайлинга" x-tile-3.3/locale/x-tile.pot000066400000000000000000000274571375405375400160020ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-09-07 23:14+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: modules/core.py:307 msgid "Use Drag and Drop to Sort the Rows" msgstr "" #: modules/core.py:347 msgid "The New Language will be Available Only After Restarting X Tile" msgstr "" #: modules/core.py:369 glade/x-tile.glade.h:5 msgid "Tile the Windows Upon your X Desktop" msgstr "" #: modules/core.py:583 msgid "The Size of the Toolbar Icons is already at the Maximum Value" msgstr "" #: modules/core.py:593 msgid "The Size of the Toolbar Icons is already at the Minimum Value" msgstr "" #: modules/core.py:703 modules/core.py:711 modules/core.py:719 msgid "No Row is Selected" msgstr "" #: modules/core.py:741 modules/core.py:775 msgid "No Application Selected!" msgstr "" #: modules/core.py:855 msgid "Grid Details" msgstr "" #: modules/core.py:863 msgid "Rows" msgstr "" #: modules/core.py:870 msgid "Columns" msgstr "" #: modules/core.py:956 modules/core.py:964 modules/core.py:974 msgid "No Windows Checked" msgstr "" #: modules/core.py:1014 modules/core.py:1027 msgid "Edit Custom Tile Settings" msgstr "" #: modules/core.py:1174 msgid "" "The Custom Tile 1 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 1 " "Set'" msgstr "" #: modules/core.py:1192 msgid "" "The Custom Tile 2 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 2 " "Set'" msgstr "" #: modules/cons.py:268 msgid "_File" msgstr "" #: modules/cons.py:269 msgid "_Edit" msgstr "" #: modules/cons.py:270 msgid "_Row" msgstr "" #: modules/cons.py:271 msgid "_Tile" msgstr "" #: modules/cons.py:272 msgid "_View" msgstr "" #: modules/cons.py:273 modules/cons.py:308 msgid "_Help" msgstr "" #: modules/cons.py:275 msgid "_Filter" msgstr "" #: modules/cons.py:275 msgid "Filter Rows" msgstr "" #: modules/cons.py:276 msgid "Selected by _Default" msgstr "" #: modules/cons.py:276 glade/x-tile.glade.h:59 msgid "Rows to be Selected by Default" msgstr "" #: modules/cons.py:277 msgid "_Reload" msgstr "" #: modules/cons.py:277 msgid "Reload the Windows List" msgstr "" #: modules/cons.py:278 msgid "_Quit" msgstr "" #: modules/cons.py:278 msgid "Quit the Application" msgstr "" #: modules/cons.py:279 msgid "_Exit X Tile" msgstr "" #: modules/cons.py:279 msgid "Exit from X Tile" msgstr "" #: modules/cons.py:280 msgid "Show/Hide _X Tile" msgstr "" #: modules/cons.py:280 msgid "Toggle Show/Hide X Tile" msgstr "" #: modules/cons.py:281 msgid "_Preferences" msgstr "" #: modules/cons.py:281 msgid "Open the Preferences Window" msgstr "" #: modules/cons.py:282 msgid "Select _All" msgstr "" #: modules/cons.py:282 msgid "Select All the Windows in the List" msgstr "" #: modules/cons.py:283 msgid "Deselect A_ll" msgstr "" #: modules/cons.py:283 msgid "Deselect All the Windows in the List" msgstr "" #: modules/cons.py:284 msgid "Tile _Vertically" msgstr "" #: modules/cons.py:284 msgid "Tile Vertically The Checked Windows" msgstr "" #: modules/cons.py:285 msgid "Tile _Horizontally" msgstr "" #: modules/cons.py:285 msgid "Tile Horizontally The Checked Windows" msgstr "" #: modules/cons.py:286 msgid "_Triangle Up" msgstr "" #: modules/cons.py:286 msgid "Tile Triangle Up The Checked Windows" msgstr "" #: modules/cons.py:287 msgid "Triangle _Down" msgstr "" #: modules/cons.py:287 msgid "Tile Triangle Down The Checked Windows" msgstr "" #: modules/cons.py:288 msgid "Triangle _Left" msgstr "" #: modules/cons.py:288 msgid "Tile Triangle Left The Checked Windows" msgstr "" #: modules/cons.py:289 msgid "Triangle _Right" msgstr "" #: modules/cons.py:289 msgid "Tile Triangle Right The Checked Windows" msgstr "" #: modules/cons.py:290 msgid "Tile _Quad" msgstr "" #: modules/cons.py:290 msgid "Tile into 4 quadrants The Checked Windows" msgstr "" #: modules/cons.py:291 msgid "Tile _Grid" msgstr "" #: modules/cons.py:291 msgid "Tile into an Arbitrary Grid The Checked Windows" msgstr "" #: modules/cons.py:292 msgid "Custom Tile 1 _Set" msgstr "" #: modules/cons.py:292 msgid "Edit Custom Tile 1 Settings" msgstr "" #: modules/cons.py:293 msgid "Custom Tile _1 Run" msgstr "" #: modules/cons.py:293 msgid "Execute Custom Tile 1" msgstr "" #: modules/cons.py:294 msgid "Custom Tile 2 S_et" msgstr "" #: modules/cons.py:294 msgid "Edit Custom Tile 2 Settings" msgstr "" #: modules/cons.py:295 msgid "Custom Tile _2 Run" msgstr "" #: modules/cons.py:295 msgid "Execute Custom Tile 2" msgstr "" #: modules/cons.py:296 modules/cons.py:325 msgid "U_ndo Tiling" msgstr "" #: modules/cons.py:296 modules/cons.py:325 msgid "Undo the Latest Tiling Operation" msgstr "" #: modules/cons.py:297 modules/cons.py:324 msgid "_Invert Tiling Order" msgstr "" #: modules/cons.py:297 modules/cons.py:324 msgid "Invert the Order of the Latest Tiling Operation" msgstr "" #: modules/cons.py:298 modules/cons.py:326 msgid "C_ycle Tiling Order" msgstr "" #: modules/cons.py:298 modules/cons.py:326 msgid "Cycle the Order of the Latest Tiling Operation" msgstr "" #: modules/cons.py:299 msgid "_Maximize Windows" msgstr "" #: modules/cons.py:299 msgid "Maximize The Checked Windows" msgstr "" #: modules/cons.py:300 msgid "_Unmaximize Windows" msgstr "" #: modules/cons.py:300 msgid "Unmaximize The Checked Windows" msgstr "" #: modules/cons.py:301 msgid "_Close Windows" msgstr "" #: modules/cons.py:301 msgid "Close The Checked Windows" msgstr "" #: modules/cons.py:302 msgid "Move _Up" msgstr "" #: modules/cons.py:302 msgid "Move the Selected Row Up" msgstr "" #: modules/cons.py:303 msgid "Move _Down" msgstr "" #: modules/cons.py:303 msgid "Move the Selected Row Down" msgstr "" #: modules/cons.py:304 msgid "_Remove" msgstr "" #: modules/cons.py:304 msgid "Remove the Selected Row" msgstr "" #: modules/cons.py:305 msgid "Show/Hide _Toolbar" msgstr "" #: modules/cons.py:305 msgid "Toggle Show/Hide Toolbar" msgstr "" #: modules/cons.py:306 msgid "_Increase Toolbar Icons Size" msgstr "" #: modules/cons.py:306 msgid "Increase the Size of the Toolbar Icons" msgstr "" #: modules/cons.py:307 msgid "_Decrease Toolbar Icons Size" msgstr "" #: modules/cons.py:307 msgid "Decrease the Size of the Toolbar Icons" msgstr "" #: modules/cons.py:308 msgid "X Tile Project Home Page" msgstr "" #: modules/cons.py:309 modules/cons.py:310 msgid "_About" msgstr "" #: modules/cons.py:309 modules/cons.py:310 glade/x-tile.glade.h:1 msgid "About X Tile" msgstr "" #: modules/cons.py:311 msgid "_Close All" msgstr "" #: modules/cons.py:311 msgid "Close All Windows" msgstr "" #: modules/cons.py:312 msgid "_Unmaximize All" msgstr "" #: modules/cons.py:312 msgid "Unmaximize All Windows" msgstr "" #: modules/cons.py:313 msgid "_Maximize All" msgstr "" #: modules/cons.py:313 msgid "Maximize All Windows" msgstr "" #: modules/cons.py:314 msgid "Tile All _Quad" msgstr "" #: modules/cons.py:314 msgid "Tile All Windows Quad" msgstr "" #: modules/cons.py:315 msgid "Tile All Triangle _Down" msgstr "" #: modules/cons.py:315 msgid "Tile All Windows Triangle Down" msgstr "" #: modules/cons.py:316 msgid "Tile All Triangle _Up" msgstr "" #: modules/cons.py:316 msgid "Tile All Windows Triangle Up" msgstr "" #: modules/cons.py:317 msgid "Tile All Triangle _Right" msgstr "" #: modules/cons.py:317 msgid "Tile All Windows Triangle Right" msgstr "" #: modules/cons.py:318 msgid "Tile All Triangle _Left" msgstr "" #: modules/cons.py:318 msgid "Tile All Windows Triangle Left" msgstr "" #: modules/cons.py:319 msgid "Tile All Custom _2" msgstr "" #: modules/cons.py:319 msgid "Tile All Windows Custom 2" msgstr "" #: modules/cons.py:320 msgid "Tile All Custom _1" msgstr "" #: modules/cons.py:320 msgid "Tile All Windows Custom 1" msgstr "" #: modules/cons.py:321 msgid "Tile All _Grid" msgstr "" #: modules/cons.py:321 msgid "Tile All Windows Grid" msgstr "" #: modules/cons.py:322 msgid "Tile All _Horizontally" msgstr "" #: modules/cons.py:322 msgid "Tile All Windows Horizontally" msgstr "" #: modules/cons.py:323 msgid "Tile All _Vertically" msgstr "" #: modules/cons.py:323 msgid "Tile All Windows Vertically" msgstr "" #: glade/x-tile.glade.h:2 msgid "" "Copyright © 2009-2012\n" "Giuseppe Penone \n" "Chris Camacho " msgstr "" #: glade/x-tile.glade.h:6 msgid "http://www.giuspen.com/x-tile/" msgstr "" #: glade/x-tile.glade.h:7 msgid "" "\n" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software\n" "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n" "MA 02110-1301, USA." msgstr "" #: glade/x-tile.glade.h:22 msgid "" "Chinese Simplified (zh_CN) Khiyuan Fan \n" "Chinese Traditional (zh_TW) Yan-ren Tsai \n" "Czech (cs) Pavel Fric \n" "French (fr) Ludovic Troisi \n" "German (de) Jöran Zeller \n" "Italian (it) Giuseppe Penone \n" "Polish (pl) Dominik Wójt \n" "Russian (ru) Andriy Kovtun " msgstr "" #: glade/x-tile.glade.h:31 msgid "Preferences" msgstr "" #: glade/x-tile.glade.h:32 msgid "Do Not List Minimized Windows" msgstr "" #: glade/x-tile.glade.h:33 msgid "Only Current Workspace" msgstr "" #: glade/x-tile.glade.h:34 msgid "Enable System Tray Docking" msgstr "" #: glade/x-tile.glade.h:35 msgid "Start Minimized in the System Tray" msgstr "" #: glade/x-tile.glade.h:36 msgid "Use AppIndicator for Docking" msgstr "" #: glade/x-tile.glade.h:37 msgid "Show Toolbar" msgstr "" #: glade/x-tile.glade.h:38 msgid " Language " msgstr "" #: glade/x-tile.glade.h:39 msgid "Override Monitor 1 Tiling Area" msgstr "" #: glade/x-tile.glade.h:40 msgid "X" msgstr "" #: glade/x-tile.glade.h:41 msgid "Y" msgstr "" #: glade/x-tile.glade.h:42 msgid "Position" msgstr "" #: glade/x-tile.glade.h:43 msgid "Width" msgstr "" #: glade/x-tile.glade.h:44 msgid "Height" msgstr "" #: glade/x-tile.glade.h:45 msgid "Size" msgstr "" #: glade/x-tile.glade.h:46 msgid "Override Monitor 2 Tiling Area" msgstr "" #: glade/x-tile.glade.h:47 msgid "Close" msgstr "" #: glade/x-tile.glade.h:48 msgid "Cancel" msgstr "" #: glade/x-tile.glade.h:49 msgid "OK" msgstr "" #: glade/x-tile.glade.h:50 msgid "Custom Tiling Layout" msgstr "" #: glade/x-tile.glade.h:51 msgid "1) Tile Some Windows Manually" msgstr "" #: glade/x-tile.glade.h:52 msgid "2) Select Them in the X Tile Windows List" msgstr "" #: glade/x-tile.glade.h:53 msgid "3) Click the Update Button" msgstr "" #: glade/x-tile.glade.h:54 msgid "Update" msgstr "" #: glade/x-tile.glade.h:55 msgid "Rows to Filter" msgstr "" #: glade/x-tile.glade.h:56 msgid "Add an Application Filter" msgstr "" #: glade/x-tile.glade.h:57 msgid "Remove an Application Filter" msgstr "" #: glade/x-tile.glade.h:58 msgid "Add Row" msgstr "" #: glade/x-tile.glade.h:60 msgid "X Tile" msgstr "" #: glade/x-tile.glade.h:61 msgid "Set Destination Workspace" msgstr "" #: glade/x-tile.glade.h:62 msgid "Exit After Tile" msgstr "" x-tile-3.3/locale/zh_CN.po000066400000000000000000000403071375405375400154020ustar00rootroot00000000000000msgid "" msgstr "" "Project-Id-Version: 1.6\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-09-07 23:14+0200\n" "PO-Revision-Date: 2012-09-14 12:45+0800\n" "Last-Translator: Khiyuan.Fan \n" "Language-Team: Fan.khiyuan@gmail.com\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Chinese\n" #: modules/core.py:307 msgid "Use Drag and Drop to Sort the Rows" msgstr "ä½¿ç”¨æ‹–æ‹‰æ¥æŽ’åºè¡Œ" #: modules/core.py:347 msgid "The New Language will be Available Only After Restarting X Tile" msgstr "新语言将在é‡å¯ X Tile åŽç”Ÿæ•ˆã€‚" #: modules/core.py:369 #: glade/x-tile.glade.h:5 msgid "Tile the Windows Upon your X Desktop" msgstr "" "X Tile\n" "在你的Xæ¡Œé¢æŽ’åˆ—çª—å£" #: modules/core.py:583 msgid "The Size of the Toolbar Icons is already at the Maximum Value" msgstr "工具æ å›¾æ ‡çš„å°ºå¯¸å·²ç»æ˜¯æœ€å¤§çš„了。" #: modules/core.py:593 msgid "The Size of the Toolbar Icons is already at the Minimum Value" msgstr "工具æ å›¾æ ‡çš„å°ºå¯¸å·²ç»æ˜¯æœ€å°çš„了。" #: modules/core.py:703 #: modules/core.py:711 #: modules/core.py:719 msgid "No Row is Selected" msgstr "没有选定任何行" #: modules/core.py:741 #: modules/core.py:775 msgid "No Application Selected!" msgstr "没有选择应用程åº!" #: modules/core.py:855 msgid "Grid Details" msgstr "网格明细" #: modules/core.py:863 msgid "Rows" msgstr "行" #: modules/core.py:870 msgid "Columns" msgstr "列" #: modules/core.py:956 #: modules/core.py:964 #: modules/core.py:974 msgid "No Windows Checked" msgstr "没有选择窗å£" #: modules/core.py:1014 #: modules/core.py:1027 msgid "Edit Custom Tile Settings" msgstr "编辑自定排列设定" #: modules/core.py:1174 msgid "The Custom Tile 1 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 1 Set'" msgstr "自定排列1尚未设置:点击èœå• '排列->自定排列1' 进行设置。" #: modules/core.py:1192 msgid "The Custom Tile 2 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 2 Set'" msgstr "自定排列2尚未设置:点击èœå• '排列->自定排列2' 进行设置。" #: modules/cons.py:268 msgid "_File" msgstr "文件 (_F)" #: modules/cons.py:269 msgid "_Edit" msgstr "编辑 (_E)" #: modules/cons.py:270 msgid "_Row" msgstr "行(_R)" #: modules/cons.py:271 msgid "_Tile" msgstr "排列 (_T)" #: modules/cons.py:272 msgid "_View" msgstr "查看 (_V)" #: modules/cons.py:273 #: modules/cons.py:308 msgid "_Help" msgstr "帮助 (_H)" #: modules/cons.py:275 msgid "_Filter" msgstr "筛选 (_F)" #: modules/cons.py:275 msgid "Filter Rows" msgstr "过滤行" #: modules/cons.py:276 msgid "Selected by _Default" msgstr "预设选定 (_D)" #: modules/cons.py:276 #: glade/x-tile.glade.h:59 msgid "Rows to be Selected by Default" msgstr "预设选定的行" #: modules/cons.py:277 msgid "_Reload" msgstr "é‡è½½" #: modules/cons.py:277 msgid "Reload the Windows List" msgstr "釿–°è½½å…¥çª—å£åˆ—表" #: modules/cons.py:278 msgid "_Quit" msgstr "退出 (_Q)" #: modules/cons.py:278 msgid "Quit the Application" msgstr "退出应用程åº" #: modules/cons.py:279 msgid "_Exit X Tile" msgstr "退出 X Tile(_E)" #: modules/cons.py:279 msgid "Exit from X Tile" msgstr "自 X Tile 退出" #: modules/cons.py:280 msgid "Show/Hide _X Tile" msgstr "显示/éšè—X Tile (_X)" #: modules/cons.py:280 msgid "Toggle Show/Hide X Tile" msgstr "åˆ‡æ¢æ˜¾ç¤º/éšè— X Tile" #: modules/cons.py:281 msgid "_Preferences" msgstr "首选项 (_P)" #: modules/cons.py:281 msgid "Open the Preferences Window" msgstr "打开首选项设置窗å£" #: modules/cons.py:282 msgid "Select _All" msgstr "全选 (_A)" #: modules/cons.py:282 msgid "Select All the Windows in the List" msgstr "全选列表內窗å£" #: modules/cons.py:283 msgid "Deselect A_ll" msgstr "å–æ¶ˆå…¨é€‰ (_L)" #: modules/cons.py:283 msgid "Deselect All the Windows in the List" msgstr "å–æ¶ˆé€‰æ‹©åˆ—表上所有窗å£" #: modules/cons.py:284 msgid "Tile _Vertically" msgstr "垂直排列 (_V)" #: modules/cons.py:284 msgid "Tile Vertically The Checked Windows" msgstr "垂直排列选定的窗å£" #: modules/cons.py:285 msgid "Tile _Horizontally" msgstr "水平排列 (_H)" #: modules/cons.py:285 msgid "Tile Horizontally The Checked Windows" msgstr "水平排列选定的窗å£" #: modules/cons.py:286 msgid "_Triangle Up" msgstr "三分,上边最大 (_T)" #: modules/cons.py:286 msgid "Tile Triangle Up The Checked Windows" msgstr "平铺三个选定的窗å£ï¼Œä¸Šè¾¹æœ€å¤§" #: modules/cons.py:287 msgid "Triangle _Down" msgstr "三分,下边最大 (_D)" #: modules/cons.py:287 msgid "Tile Triangle Down The Checked Windows" msgstr "平铺三个选定的窗å£ï¼Œä¸‹è¾¹æœ€å¤§" #: modules/cons.py:288 msgid "Triangle _Left" msgstr "三分,左边最大 (_L)" #: modules/cons.py:288 msgid "Tile Triangle Left The Checked Windows" msgstr "平铺三个选定的窗å£ï¼Œå·¦è¾¹æœ€å¤§" #: modules/cons.py:289 msgid "Triangle _Right" msgstr "三分,å³è¾¹æœ€å¤§ (_R)" #: modules/cons.py:289 msgid "Tile Triangle Right The Checked Windows" msgstr "平铺三个选定的窗å£ï¼Œå³è¾¹æœ€å¤§" #: modules/cons.py:290 msgid "Tile _Quad" msgstr "四等分 (_Q)" #: modules/cons.py:290 msgid "Tile into 4 quadrants The Checked Windows" msgstr "将选定窗å£å¹³é“ºåˆ°å››ä¸ªè±¡é™" #: modules/cons.py:291 msgid "Tile _Grid" msgstr "平铺网格(_G)" #: modules/cons.py:291 msgid "Tile into an Arbitrary Grid The Checked Windows" msgstr "平铺选定窗å£åˆ°ä»»æ„网格" #: modules/cons.py:292 msgid "Custom Tile 1 _Set" msgstr "自定义排列1 (_S)" #: modules/cons.py:292 msgid "Edit Custom Tile 1 Settings" msgstr "编辑自定排列1设定" #: modules/cons.py:293 msgid "Custom Tile _1 Run" msgstr "è¿è¡Œè‡ªå®šæŽ’列1 (_1)" #: modules/cons.py:293 msgid "Execute Custom Tile 1" msgstr "è¿è¡Œè‡ªå®šæŽ’列1" #: modules/cons.py:294 msgid "Custom Tile 2 S_et" msgstr "自定义排列2 (_E)" #: modules/cons.py:294 msgid "Edit Custom Tile 2 Settings" msgstr "编辑自定排列2设定" #: modules/cons.py:295 msgid "Custom Tile _2 Run" msgstr "è¿è¡Œè‡ªå®šæŽ’列2 (_2)" #: modules/cons.py:295 msgid "Execute Custom Tile 2" msgstr "è¿è¡Œè‡ªå®šæŽ’列2" #: modules/cons.py:296 #: modules/cons.py:325 msgid "U_ndo Tiling" msgstr "撤销排列 (_N)" #: modules/cons.py:296 #: modules/cons.py:325 msgid "Undo the Latest Tiling Operation" msgstr "撤消最åŽä¸€æ¬¡æŽ’列æ“作" #: modules/cons.py:297 #: modules/cons.py:324 msgid "_Invert Tiling Order" msgstr "倒置排列次åº(_I)" #: modules/cons.py:297 #: modules/cons.py:324 msgid "Invert the Order of the Latest Tiling Operation" msgstr "倒置最åŽä¸€æ¬¡æŽ’列æ“作" #: modules/cons.py:298 #: modules/cons.py:326 msgid "C_ycle Tiling Order" msgstr "循环排列次åº(_I)" #: modules/cons.py:298 #: modules/cons.py:326 msgid "Cycle the Order of the Latest Tiling Operation" msgstr "循环最åŽä¸€æ¬¡æŽ’列æ“作" #: modules/cons.py:299 msgid "_Maximize Windows" msgstr "æœ€å¤§åŒ–çª—å£ (_M)" #: modules/cons.py:299 msgid "Maximize The Checked Windows" msgstr "最大化选定窗å£" #: modules/cons.py:300 msgid "_Unmaximize Windows" msgstr "å–æ¶ˆçª—壿œ€å¤§åŒ– (_U)" #: modules/cons.py:300 msgid "Unmaximize The Checked Windows" msgstr "å–æ¶ˆé€‰å®šçª—壿œ€å¤§åŒ–" #: modules/cons.py:301 msgid "_Close Windows" msgstr "å…³é—­çª—å£ (_C)" #: modules/cons.py:301 msgid "Close The Checked Windows" msgstr "关闭选定窗å£" #: modules/cons.py:302 msgid "Move _Up" msgstr "上移 (_U)" #: modules/cons.py:302 msgid "Move the Selected Row Up" msgstr "上移选定行" #: modules/cons.py:303 msgid "Move _Down" msgstr "下移 (_D)" #: modules/cons.py:303 msgid "Move the Selected Row Down" msgstr "下移选定行" #: modules/cons.py:304 msgid "_Remove" msgstr "移除 (_R)" #: modules/cons.py:304 msgid "Remove the Selected Row" msgstr "移除选定行" #: modules/cons.py:305 msgid "Show/Hide _Toolbar" msgstr "显示/éšè—å·¥å…·æ  (_T)" #: modules/cons.py:305 msgid "Toggle Show/Hide Toolbar" msgstr "åˆ‡æ¢æ˜¾ç¤º/éšè—工具æ " #: modules/cons.py:306 msgid "_Increase Toolbar Icons Size" msgstr "放大工具æ å›¾æ ‡ (_I)" #: modules/cons.py:306 msgid "Increase the Size of the Toolbar Icons" msgstr "放大工具æ å›¾æ ‡" #: modules/cons.py:307 msgid "_Decrease Toolbar Icons Size" msgstr "缩å°å·¥å…·æ å›¾æ ‡ (_D)" #: modules/cons.py:307 msgid "Decrease the Size of the Toolbar Icons" msgstr "缩å°å·¥å…·æ å›¾æ ‡" #: modules/cons.py:308 msgid "X Tile Project Home Page" msgstr "X Tile 项目首页" #: modules/cons.py:309 #: modules/cons.py:310 msgid "_About" msgstr "关于 (_A)" #: modules/cons.py:309 #: modules/cons.py:310 #: glade/x-tile.glade.h:1 msgid "About X Tile" msgstr "关于 X Tile" #: modules/cons.py:311 msgid "_Close All" msgstr "关闭全部(_C)" #: modules/cons.py:311 msgid "Close All Windows" msgstr "关闭所有窗å£" #: modules/cons.py:312 msgid "_Unmaximize All" msgstr "å…¨éƒ¨å–æ¶ˆæœ€å¤§åŒ– (_M)" #: modules/cons.py:312 msgid "Unmaximize All Windows" msgstr "所有窗å£å–消最大化" #: modules/cons.py:313 msgid "_Maximize All" msgstr "全部最大化 (_M)" #: modules/cons.py:313 msgid "Maximize All Windows" msgstr "æ‰€æœ‰çª—å£æœ€å¤§åŒ–" #: modules/cons.py:314 msgid "Tile All _Quad" msgstr "四分平铺全部 (_Q)" #: modules/cons.py:314 msgid "Tile All Windows Quad" msgstr "四分平铺所有窗å£" #: modules/cons.py:315 msgid "Tile All Triangle _Down" msgstr "三分平铺全部,下边最大 (_D)" #: modules/cons.py:315 msgid "Tile All Windows Triangle Down" msgstr "三分平铺全部窗å£ï¼Œä¸‹è¾¹æœ€å¤§ " #: modules/cons.py:316 msgid "Tile All Triangle _Up" msgstr "三分平铺全部,上边最大 (_U)" #: modules/cons.py:316 msgid "Tile All Windows Triangle Up" msgstr "三分平铺全部窗å£ï¼Œä¸Šè¾¹æœ€å¤§" #: modules/cons.py:317 msgid "Tile All Triangle _Right" msgstr "三分平铺全部,å³è¾¹æœ€å¤§ (_R)" #: modules/cons.py:317 msgid "Tile All Windows Triangle Right" msgstr "三分平铺全部窗å£ï¼Œå³è¾¹æœ€å¤§" #: modules/cons.py:318 msgid "Tile All Triangle _Left" msgstr "三分平铺全部,左边最大 (_L)" #: modules/cons.py:318 msgid "Tile All Windows Triangle Left" msgstr "三分平铺全部窗å£ï¼Œå·¦è¾¹æœ€å¤§" #: modules/cons.py:319 msgid "Tile All Custom _2" msgstr "全部按自定2平铺 (_2)" #: modules/cons.py:319 msgid "Tile All Windows Custom 2" msgstr "å…¨éƒ¨çª—å£æŒ‰è‡ªå®š2平铺" #: modules/cons.py:320 msgid "Tile All Custom _1" msgstr "全部按照自定1平铺 (_1)" #: modules/cons.py:320 msgid "Tile All Windows Custom 1" msgstr "å…¨éƒ¨çª—å£æŒ‰è‡ªå®š1平铺" #: modules/cons.py:321 msgid "Tile All _Grid" msgstr "平铺所有网格 (_G)" #: modules/cons.py:321 msgid "Tile All Windows Grid" msgstr "平铺所有窗å£è‡³ç½‘æ ¼" #: modules/cons.py:322 msgid "Tile All _Horizontally" msgstr "æ°´å¹³æŽ’åˆ—æ‰€æœ‰çª—å£ (_H)" #: modules/cons.py:322 msgid "Tile All Windows Horizontally" msgstr "水平排列所有窗å£" #: modules/cons.py:323 msgid "Tile All _Vertically" msgstr "åž‚ç›´æŽ’åˆ—å…¨éƒ¨çª—å£ (_V)" #: modules/cons.py:323 msgid "Tile All Windows Vertically" msgstr "垂直排列全部窗å£" #: glade/x-tile.glade.h:2 msgid "" "Copyright © 2009-2012\n" "Giuseppe Penone \n" "Chris Camacho " msgstr "" "Copyright © 2009-2012\n" "Giuseppe Penone \n" "Chris Camacho " #: glade/x-tile.glade.h:6 msgid "http://www.giuspen.com/x-tile/" msgstr "http://www.giuspen.com/x-tile/" #: glade/x-tile.glade.h:7 msgid "" "\n" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software\n" "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n" "MA 02110-1301, USA." msgstr "" "\n" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software\n" "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n" "MA 02110-1301, USA." #: glade/x-tile.glade.h:22 msgid "" "Chinese Simplified (zh_CN) Khiyuan Fan \n" "Chinese Traditional (zh_TW) Yan-ren Tsai \n" "Czech (cs) Pavel Fric \n" "French (fr) Ludovic Troisi \n" "German (de) Jöran Zeller \n" "Italian (it) Giuseppe Penone \n" "Polish (pl) Dominik Wójt \n" "Russian (ru) Andriy Kovtun " msgstr "" "汉语(简体中文) (zh_CN) Khi-yuan Fan \n" "汉语(ç¹ä½“中文) (zh_TW) Yan-ren Tsai \n" "æ·å…‹è¯­ (cs) Pavel Fric \n" "法语 (fr) Ludovic Troisi \n" "德语 (de) Jöran Zeller \n" "æ„大利语 (it) Giuseppe Penone \n" "俄语 (ru) Andriy Kovtun " #: glade/x-tile.glade.h:31 msgid "Preferences" msgstr "首选项" #: glade/x-tile.glade.h:32 msgid "Do Not List Minimized Windows" msgstr "ä¸åˆ—出最å°åŒ–的窗å£" #: glade/x-tile.glade.h:33 msgid "Only Current Workspace" msgstr "åªå¯¹å½“å‰å·¥ä½œåŒº" #: glade/x-tile.glade.h:34 msgid "Enable System Tray Docking" msgstr "激活系统托盘区åœé " #: glade/x-tile.glade.h:35 msgid "Start Minimized in the System Tray" msgstr "å¯åŠ¨åŽæœ€å°åŒ–于系统托盘" #: glade/x-tile.glade.h:36 msgid "Use AppIndicator for Docking" msgstr "使用任务æ è¿›è¡ŒæŽ’布" #: glade/x-tile.glade.h:37 msgid "Show Toolbar" msgstr "显示工具æ " #: glade/x-tile.glade.h:38 msgid " Language " msgstr "语言" #: glade/x-tile.glade.h:39 msgid "Override Monitor 1 Tiling Area" msgstr "å–代第一个å±å¹•的排列区域" #: glade/x-tile.glade.h:40 msgid "X" msgstr "X" #: glade/x-tile.glade.h:41 msgid "Y" msgstr "Y" #: glade/x-tile.glade.h:42 msgid "Position" msgstr "ä½ç½®" #: glade/x-tile.glade.h:43 msgid "Width" msgstr "宽" #: glade/x-tile.glade.h:44 msgid "Height" msgstr "高" #: glade/x-tile.glade.h:45 msgid "Size" msgstr "尺寸" #: glade/x-tile.glade.h:46 msgid "Override Monitor 2 Tiling Area" msgstr "å–代第二个å±å¹•的排列区域" #: glade/x-tile.glade.h:47 msgid "Close" msgstr "关闭" #: glade/x-tile.glade.h:48 msgid "Cancel" msgstr "å–æ¶ˆ" #: glade/x-tile.glade.h:49 msgid "OK" msgstr "OK" #: glade/x-tile.glade.h:50 msgid "Custom Tiling Layout" msgstr "自定排列版é¢" #: glade/x-tile.glade.h:51 msgid "1) Tile Some Windows Manually" msgstr "1) 手动排列窗å£" #: glade/x-tile.glade.h:52 msgid "2) Select Them in the X Tile Windows List" msgstr "2) 在 X Tile 窗å£åˆ—表中选择窗å£" #: glade/x-tile.glade.h:53 msgid "3) Click the Update Button" msgstr "3) 点击更新按钮" #: glade/x-tile.glade.h:54 msgid "Update" msgstr "æ›´æ–°" #: glade/x-tile.glade.h:55 msgid "Rows to Filter" msgstr "过滤器列表" #: glade/x-tile.glade.h:56 msgid "Add an Application Filter" msgstr "添加应用程åºåˆ°è¿‡æ»¤å™¨" #: glade/x-tile.glade.h:57 msgid "Remove an Application Filter" msgstr "移除过滤器中应用程åº" #: glade/x-tile.glade.h:58 msgid "Add Row" msgstr "添加行" #: glade/x-tile.glade.h:60 msgid "X Tile" msgstr "X Tile" #: glade/x-tile.glade.h:61 msgid "Set Destination Workspace" msgstr "设置目标工作区" #: glade/x-tile.glade.h:62 msgid "Exit After Tile" msgstr "排列åŽé€€å‡º" x-tile-3.3/locale/zh_TW.po000066400000000000000000000413141375405375400154330ustar00rootroot00000000000000# Chinese translations for PACKAGE package # traditional Chinese translation for PACKAGE. # Copyright (C) 2010 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2010. # Yan-ren Tsai , 2010, 2011, 2012. # msgid "" msgstr "" "Project-Id-Version: 2.3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-09-07 23:14+0200\n" "PO-Revision-Date: 2012-09-08 05:53+0800\n" "Last-Translator: Yan-ren Tsai \n" "Language-Team: 漢語 \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bits\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" #: modules/core.py:307 msgid "Use Drag and Drop to Sort the Rows" msgstr "使用拖拉來排åºåˆ—" #: modules/core.py:347 msgid "The New Language will be Available Only After Restarting X Tile" msgstr "æ–°çš„èªžè¨€åœ¨é‡æ–°å•Ÿå‹• X Tile å¾Œæ‰æœƒç”Ÿæ•ˆã€‚" #: modules/core.py:369 glade/x-tile.glade.h:5 msgid "Tile the Windows Upon your X Desktop" msgstr "在你的X桌é¢ä¸ŠæŽ’列視窗" #: modules/core.py:583 msgid "The Size of the Toolbar Icons is already at the Maximum Value" msgstr "工具列圖示的尺寸已經是最大的了。" #: modules/core.py:593 msgid "The Size of the Toolbar Icons is already at the Minimum Value" msgstr "工具列圖示的尺寸已經是最å°çš„了。" #: modules/core.py:703 modules/core.py:711 modules/core.py:719 msgid "No Row is Selected" msgstr "沒有é¸å®šä»»ä½•列" #: modules/core.py:741 modules/core.py:775 msgid "No Application Selected!" msgstr "æ²’æœ‰é¸æ“‡ä»»ä½•應用程å¼!" #: modules/core.py:855 msgid "Grid Details" msgstr "格框詳情" #: modules/core.py:863 msgid "Rows" msgstr "列" #: modules/core.py:870 msgid "Columns" msgstr "欄" #: modules/core.py:956 modules/core.py:964 modules/core.py:974 msgid "No Windows Checked" msgstr "æ²’é¸æ“‡è¦–窗" #: modules/core.py:1014 modules/core.py:1027 msgid "Edit Custom Tile Settings" msgstr "編輯自訂排列設定" #: modules/core.py:1174 msgid "" "The Custom Tile 1 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 1 " "Set'" msgstr "自訂排列1尚未設定:點擊é¸å–®é …ç›® '排列->自訂排列1' 進行設定。" #: modules/core.py:1192 msgid "" "The Custom Tile 2 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 2 " "Set'" msgstr "自訂排列2尚未設定:點擊é¸å–®é …ç›® '排列->自訂排列2' 進行設定。" #: modules/cons.py:268 msgid "_File" msgstr "檔案 (_F)" #: modules/cons.py:269 msgid "_Edit" msgstr "編輯 (_E)" #: modules/cons.py:270 msgid "_Row" msgstr "列(_R)" #: modules/cons.py:271 msgid "_Tile" msgstr "排列 (_T)" #: modules/cons.py:272 msgid "_View" msgstr "檢視 (_V)" #: modules/cons.py:273 modules/cons.py:308 msgid "_Help" msgstr "求助 (_H)" #: modules/cons.py:275 msgid "_Filter" msgstr "ç¯©é¸ (_F)" #: modules/cons.py:275 msgid "Filter Rows" msgstr "篩é¸åˆ—" #: modules/cons.py:276 msgid "Selected by _Default" msgstr "é è¨­é¸å®šçš„" #: modules/cons.py:276 glade/x-tile.glade.h:59 msgid "Rows to be Selected by Default" msgstr "é è¨­é¸å®šçš„列" #: modules/cons.py:277 msgid "_Reload" msgstr "釿–°è¼‰å…¥" #: modules/cons.py:277 msgid "Reload the Windows List" msgstr "釿–°è¼‰å…¥è¦–窗列表" #: modules/cons.py:278 msgid "_Quit" msgstr "離開 (_Q)" #: modules/cons.py:278 msgid "Quit the Application" msgstr "離開應用程å¼" #: modules/cons.py:279 msgid "_Exit X Tile" msgstr "離開X Tile(_E)" #: modules/cons.py:279 msgid "Exit from X Tile" msgstr "從X Tile離開" #: modules/cons.py:280 msgid "Show/Hide _X Tile" msgstr "顯示/éš±è— X Tile (_X)" #: modules/cons.py:280 msgid "Toggle Show/Hide X Tile" msgstr "切æ›é¡¯ç¤º/éš±è— X Tile" #: modules/cons.py:281 msgid "_Preferences" msgstr "å好設定 (_P)" #: modules/cons.py:281 msgid "Open the Preferences Window" msgstr "開啟å好設定視窗" #: modules/cons.py:282 msgid "Select _All" msgstr "鏿“‡å…¨éƒ¨ (_A)" #: modules/cons.py:282 msgid "Select All the Windows in the List" msgstr "鏿“‡åˆ—表內所有視窗" #: modules/cons.py:283 msgid "Deselect A_ll" msgstr "å–æ¶ˆé¸æ“‡å…¨éƒ¨ (_l)" #: modules/cons.py:283 msgid "Deselect All the Windows in the List" msgstr "å–æ¶ˆé¸æ“‡åˆ—表上所有視窗" #: modules/cons.py:284 msgid "Tile _Vertically" msgstr "垂直鋪排 (_V)" #: modules/cons.py:284 msgid "Tile Vertically The Checked Windows" msgstr "垂直鋪排é¸å®šçš„視窗" #: modules/cons.py:285 msgid "Tile _Horizontally" msgstr "水平鋪排 (_H)" #: modules/cons.py:285 msgid "Tile Horizontally The Checked Windows" msgstr "水平鋪排é¸å®šçš„視窗" #: modules/cons.py:286 msgid "_Triangle Up" msgstr "三等份,最大的在上 (_T)" #: modules/cons.py:286 msgid "Tile Triangle Up The Checked Windows" msgstr "平舖é¸å®šè¦–窗為三等份,最大的在上" #: modules/cons.py:287 msgid "Triangle _Down" msgstr "三等份,最大的在下 (_D)" #: modules/cons.py:287 msgid "Tile Triangle Down The Checked Windows" msgstr "平舖é¸å®šè¦–窗為三等份,最大的在下" #: modules/cons.py:288 msgid "Triangle _Left" msgstr "三等份,最大的在左 (_L)" #: modules/cons.py:288 msgid "Tile Triangle Left The Checked Windows" msgstr "平舖é¸å®šè¦–窗為三等份,最大的在左" #: modules/cons.py:289 msgid "Triangle _Right" msgstr "ä¸‰ç­‰ä»½ï¼Œæœ€å¤§çš„åœ¨å³ (_R)" #: modules/cons.py:289 msgid "Tile Triangle Right The Checked Windows" msgstr "平舖é¸å®šè¦–窗為三等份,最大的在å³" #: modules/cons.py:290 msgid "Tile _Quad" msgstr "平鋪為4個 (_Q)" #: modules/cons.py:290 msgid "Tile into 4 quadrants The Checked Windows" msgstr "å°‡é¸å®šçš„視窗平鋪到四個象é™" #: modules/cons.py:291 msgid "Tile _Grid" msgstr "平鋪為格框 (_G)" #: modules/cons.py:291 msgid "Tile into an Arbitrary Grid The Checked Windows" msgstr "平鋪é¸å®šçš„è¦–çª—ç‚ºä¸€å€‹ä»»æ„æ ¼æ¡†" #: modules/cons.py:292 msgid "Custom Tile 1 _Set" msgstr "自訂鋪排1設定 (_S)" #: modules/cons.py:292 msgid "Edit Custom Tile 1 Settings" msgstr "編輯自訂鋪排1設定" #: modules/cons.py:293 msgid "Custom Tile _1 Run" msgstr "執行自訂鋪排1 (_1)" #: modules/cons.py:293 msgid "Execute Custom Tile 1" msgstr "執行自訂鋪排1" #: modules/cons.py:294 msgid "Custom Tile 2 S_et" msgstr "自訂鋪排2設定 (_e)" #: modules/cons.py:294 msgid "Edit Custom Tile 2 Settings" msgstr "編輯自訂鋪排2設定" #: modules/cons.py:295 msgid "Custom Tile _2 Run" msgstr "執行自訂鋪排2 (_2)" #: modules/cons.py:295 msgid "Execute Custom Tile 2" msgstr "執行自訂鋪排2" #: modules/cons.py:296 modules/cons.py:325 msgid "U_ndo Tiling" msgstr "復原鋪排" #: modules/cons.py:296 modules/cons.py:325 msgid "Undo the Latest Tiling Operation" msgstr "復原最後一次鋪排的動作" #: modules/cons.py:297 modules/cons.py:324 msgid "_Invert Tiling Order" msgstr "將鋪排順åºé¡›å€’ (_I)" #: modules/cons.py:297 modules/cons.py:324 msgid "Invert the Order of the Latest Tiling Operation" msgstr "將最後一次鋪排的動作顛倒" #: modules/cons.py:298 modules/cons.py:326 msgid "C_ycle Tiling Order" msgstr "循環切æ›é‹ªæŽ’é †åº (_C)" #: modules/cons.py:298 modules/cons.py:326 msgid "Cycle the Order of the Latest Tiling Operation" msgstr "循環順åºåˆ°æœ€å¾Œä¸€æ¬¡é‹ªæŽ’的動作" #: modules/cons.py:299 msgid "_Maximize Windows" msgstr "最大化視窗 (_M)" #: modules/cons.py:299 msgid "Maximize The Checked Windows" msgstr "最大化é¸å®šçš„視窗" #: modules/cons.py:300 msgid "_Unmaximize Windows" msgstr "䏿œ€å¤§åŒ–視窗 (_U)" #: modules/cons.py:300 msgid "Unmaximize The Checked Windows" msgstr "䏿œ€å¤§åŒ–é¸å®šçš„視窗" #: modules/cons.py:301 msgid "_Close Windows" msgstr "關閉視窗 (_C)" #: modules/cons.py:301 msgid "Close The Checked Windows" msgstr "關閉é¸å®šè¦–窗" #: modules/cons.py:302 msgid "Move _Up" msgstr "往上移 (_U)" #: modules/cons.py:302 msgid "Move the Selected Row Up" msgstr "å°‡é¸å®šåˆ—移上去" #: modules/cons.py:303 msgid "Move _Down" msgstr "往下移 (_D)" #: modules/cons.py:303 msgid "Move the Selected Row Down" msgstr "å°‡é¸å®šåˆ—移下來" #: modules/cons.py:304 msgid "_Remove" msgstr "移除 (_R)" #: modules/cons.py:304 msgid "Remove the Selected Row" msgstr "移除é¸å®šçš„列" #: modules/cons.py:305 msgid "Show/Hide _Toolbar" msgstr "顯示/éš±è—工具列 (_T)" #: modules/cons.py:305 msgid "Toggle Show/Hide Toolbar" msgstr "切æ›é¡¯ç¤º/éš±è—工具列" #: modules/cons.py:306 msgid "_Increase Toolbar Icons Size" msgstr "將工具列圖示變大 (_I)" #: modules/cons.py:306 msgid "Increase the Size of the Toolbar Icons" msgstr "放大工具列圖示" #: modules/cons.py:307 msgid "_Decrease Toolbar Icons Size" msgstr "å°‡å·¥å…·åˆ—åœ–ç¤ºè®Šå° (_D)" #: modules/cons.py:307 msgid "Decrease the Size of the Toolbar Icons" msgstr "縮å°å·¥å…·åˆ—圖示" #: modules/cons.py:308 msgid "X Tile Project Home Page" msgstr "X Tile 專案首é " #: modules/cons.py:309 modules/cons.py:310 msgid "_About" msgstr "關於 (_A)" #: modules/cons.py:309 modules/cons.py:310 glade/x-tile.glade.h:1 msgid "About X Tile" msgstr "關於 X Tile" #: modules/cons.py:311 msgid "_Close All" msgstr "關閉所有(_C)" #: modules/cons.py:311 msgid "Close All Windows" msgstr "關閉所有視窗" #: modules/cons.py:312 msgid "_Unmaximize All" msgstr "䏿œ€å¤§åŒ–全部 (_U)" #: modules/cons.py:312 msgid "Unmaximize All Windows" msgstr "䏿œ€å¤§åŒ–所有視窗" #: modules/cons.py:313 msgid "_Maximize All" msgstr "最大化全部 (_M)" #: modules/cons.py:313 msgid "Maximize All Windows" msgstr "最大化所有視窗" #: modules/cons.py:314 msgid "Tile All _Quad" msgstr "平鋪所有視窗為4個 (_Q)" #: modules/cons.py:314 msgid "Tile All Windows Quad" msgstr "平鋪所有視窗為4個" #: modules/cons.py:315 msgid "Tile All Triangle _Down" msgstr "平舖所有視窗為三等份,最大的在下 (_D)" #: modules/cons.py:315 msgid "Tile All Windows Triangle Down" msgstr "平舖所有視窗為三等份,最大的在下" #: modules/cons.py:316 msgid "Tile All Triangle _Up" msgstr "平舖所有視窗為三等份,最大的在上 (_U)" #: modules/cons.py:316 msgid "Tile All Windows Triangle Up" msgstr "平舖所有視窗為三等份,最大的在上" #: modules/cons.py:317 msgid "Tile All Triangle _Right" msgstr "å¹³èˆ–æ‰€æœ‰è¦–çª—ç‚ºä¸‰ç­‰ä»½ï¼Œæœ€å¤§çš„åœ¨å³ (_R)" #: modules/cons.py:317 msgid "Tile All Windows Triangle Right" msgstr "平舖所有視窗為三等份,最大的在å³" #: modules/cons.py:318 msgid "Tile All Triangle _Left" msgstr "平舖所有視窗為三等份,最大的在左 (_L)" #: modules/cons.py:318 msgid "Tile All Windows Triangle Left" msgstr "平舖所有視窗為三等份,最大的在左" #: modules/cons.py:319 msgid "Tile All Custom _2" msgstr "平舖所有自訂2 (_2)" #: modules/cons.py:319 msgid "Tile All Windows Custom 2" msgstr "平舖所有自訂2" #: modules/cons.py:320 msgid "Tile All Custom _1" msgstr "平舖所有自訂1 (_1)" #: modules/cons.py:320 msgid "Tile All Windows Custom 1" msgstr "平舖所有自訂1" #: modules/cons.py:321 msgid "Tile All _Grid" msgstr "平鋪所有為格框 (_G)" #: modules/cons.py:321 msgid "Tile All Windows Grid" msgstr "平鋪所有為格框" #: modules/cons.py:322 msgid "Tile All _Horizontally" msgstr "水平鋪排所有視窗 (_H)" #: modules/cons.py:322 msgid "Tile All Windows Horizontally" msgstr "水平鋪排所有視窗" #: modules/cons.py:323 msgid "Tile All _Vertically" msgstr "垂直鋪排全部視窗 (_V)" #: modules/cons.py:323 msgid "Tile All Windows Vertically" msgstr "垂直鋪排所有視窗" #: glade/x-tile.glade.h:2 msgid "" "Copyright © 2009-2012\n" "Giuseppe Penone \n" "Chris Camacho " msgstr "" "Copyright © 2009-2012\n" "Giuseppe Penone \n" "Chris Camacho " #: glade/x-tile.glade.h:6 msgid "http://www.giuspen.com/x-tile/" msgstr "http://www.giuspen.com/x-tile/" #: glade/x-tile.glade.h:7 msgid "" "\n" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software\n" "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n" "MA 02110-1301, USA." msgstr "" "\n" "本程å¼ç‚ºè‡ªç”±è»Ÿé«”;您å¯ä¾æ“šè‡ªç”±è»Ÿé«”基金會所發表的 GNU é€šç”¨å…¬å…±æŽˆæ¬Šæ¢æ¬¾è¦å®šï¼Œå°±" "本程å¼å†ç‚ºæ•£å¸ƒèˆ‡ï¼æˆ–ä¿®æ”¹ï¼›ç„¡è«–æ‚¨ä¾æ“šçš„æ˜¯æœ¬æŽˆæ¬Šçš„ç¬¬äºŒç‰ˆæˆ–ï¼ˆæ‚¨è‡ªè¡Œé¸æ“‡çš„)任一" "日後發行的版本。\n" "\n" "本程å¼ä¿‚基於使用目的而加以散布,然而ä¸è² ä»»ä½•æ“”ä¿è²¬ä»»ï¼›äº¦ç„¡å°é©å”®æ€§æˆ–特定目的" "é©ç”¨æ€§æ‰€ç‚ºçš„默示性擔ä¿ã€‚詳情請åƒç…§ GNU 通用公共授權。\n" "\n" "您應已收到附隨於本程å¼çš„ GNU 通用公共授權的副本;如無,請寫信至自由軟體基金" "會:51 Franklin Street, Fifth Floor, Boston, Ma 02110-1301, USA。" #: glade/x-tile.glade.h:22 msgid "" "Chinese Simplified (zh_CN) Khiyuan Fan \n" "Chinese Traditional (zh_TW) Yan-ren Tsai \n" "Czech (cs) Pavel Fric \n" "French (fr) Ludovic Troisi \n" "German (de) Jöran Zeller \n" "Italian (it) Giuseppe Penone \n" "Polish (pl) Dominik Wójt \n" "Russian (ru) Andriy Kovtun " msgstr "" "Chinese Simplified (zh_CN) Khiyuan Fan \n" "漢語(ç¹é«”中文) (zh_TW) Yan-ren Tsai \n" "Czech (cs) Pavel Fric \n" "法語 (fr) Ludovic Troisi \n" "德語 (de) Jöran Zeller \n" "義大利語 (it) Giuseppe Penone \n" "波蘭語 (pl) Dominik Wójt \n" "俄語 (ru) Andriy Kovtun " #: glade/x-tile.glade.h:31 msgid "Preferences" msgstr "å好設定" #: glade/x-tile.glade.h:32 msgid "Do Not List Minimized Windows" msgstr "ä¸è¦åˆ—出已經最å°åŒ–的視窗" #: glade/x-tile.glade.h:33 msgid "Only Current Workspace" msgstr "åªæœ‰ç›®å‰å·¥ä½œå€" #: glade/x-tile.glade.h:34 msgid "Enable System Tray Docking" msgstr "啟用系統匣åœé§" #: glade/x-tile.glade.h:35 msgid "Start Minimized in the System Tray" msgstr "啟動時最å°åŒ–到系統匣" #: glade/x-tile.glade.h:36 msgid "Use AppIndicator for Docking" msgstr "使用 AppIndicator åœé§" #: glade/x-tile.glade.h:37 msgid "Show Toolbar" msgstr "顯示工具列" #: glade/x-tile.glade.h:38 msgid " Language " msgstr "語言" #: glade/x-tile.glade.h:39 msgid "Override Monitor 1 Tiling Area" msgstr "以下é¢è¨­å®šå–代第一個螢幕的鋪排å€åŸŸ" #: glade/x-tile.glade.h:40 msgid "X" msgstr "X" #: glade/x-tile.glade.h:41 msgid "Y" msgstr "Y" #: glade/x-tile.glade.h:42 msgid "Position" msgstr "ä½ç½®" #: glade/x-tile.glade.h:43 msgid "Width" msgstr "寬" #: glade/x-tile.glade.h:44 msgid "Height" msgstr "高" #: glade/x-tile.glade.h:45 msgid "Size" msgstr "尺寸" #: glade/x-tile.glade.h:46 msgid "Override Monitor 2 Tiling Area" msgstr "以下é¢è¨­å®šå–代第二個螢幕的鋪排å€åŸŸ" #: glade/x-tile.glade.h:47 msgid "Close" msgstr "關閉" #: glade/x-tile.glade.h:48 msgid "Cancel" msgstr "å–æ¶ˆ" #: glade/x-tile.glade.h:49 msgid "OK" msgstr "OK" #: glade/x-tile.glade.h:50 msgid "Custom Tiling Layout" msgstr "自訂鋪排版é¢" #: glade/x-tile.glade.h:51 msgid "1) Tile Some Windows Manually" msgstr "1) 手動鋪排æŸäº›è¦–窗" #: glade/x-tile.glade.h:52 msgid "2) Select Them in the X Tile Windows List" msgstr "2) 在 X Tile è¦–çª—åˆ—è¡¨è£¡é¸æ“‡è¦–窗" #: glade/x-tile.glade.h:53 msgid "3) Click the Update Button" msgstr "3) 點擊更新按鈕" #: glade/x-tile.glade.h:54 msgid "Update" msgstr "æ›´æ–°" #: glade/x-tile.glade.h:55 msgid "Rows to Filter" msgstr "列轉篩é¸å™¨" #: glade/x-tile.glade.h:56 msgid "Add an Application Filter" msgstr "增加應用程å¼ç¯©é¸å™¨" #: glade/x-tile.glade.h:57 msgid "Remove an Application Filter" msgstr "移除應用程å¼ç¯©é¸å™¨" #: glade/x-tile.glade.h:58 msgid "Add Row" msgstr "增加列" #: glade/x-tile.glade.h:60 msgid "X Tile" msgstr "X Tile" #: glade/x-tile.glade.h:61 msgid "Set Destination Workspace" msgstr "設置目標工作å€" #: glade/x-tile.glade.h:62 msgid "Exit After Tile" msgstr "鋪排後離開" x-tile-3.3/modules/000077500000000000000000000000001375405375400142465ustar00rootroot00000000000000x-tile-3.3/modules/cons.py000066400000000000000000000416611375405375400155720ustar00rootroot00000000000000# # cons.py # # Copyright 2009-2020 # Giuseppe Penone , # Chris Camacho (chris_c) . # # plus many thanks to http://tronche.com/gui/x/xlib/ # and http://tripie.sweb.cz/utils/wmctrl/ # # 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. import os APP_NAME = "x-tile" VERSION = "3.3" if os.path.isdir("glade"): GLADE_PATH = os.path.join(os.getcwd(), "glade/") LOCALE_PATH = "locale/" else: GLADE_PATH = "/usr/share/x-tile/glade/" LOCALE_PATH = "/usr/share/locale/" CONFIG_DIR = os.path.join(os.path.expanduser('~'), '.config', APP_NAME) AVAILABLE_LANGS = ['default', 'cs', 'de', 'en', 'es_AR', 'fr', 'it', 'pl', 'ru', 'zh_CN', 'zh_TW'] CMD_LINE_ACTIONS = ["z", "i", "y", "v", "h", "u", "d", "l", "r", "1", "2", "q", "g", "m", "M", "c"] OVERRIDE_1 = 0 OVERRIDE_2 = 0 X1 = 0 Y1 = 0 W1 = 10 H1 = 10 X2 = 0 Y2 = 0 W2 = 10 H2 = 10 GRID_ROWS = 2 GRID_COLS = 2 WINNAMES_BLACKLIST = [b"x-nautilus-desktop", b"pcmanfm"] PROCESSES_BLACKLIST = [b"lxpanel"] #PROCESSES_PARENT_BLACKLIST = ["gnome-session"] STR_TRUE = "True" STR_FALSE = "False" DRAW_SCALE = 4 DRAW_RGBS = ( (1, 0, 0), # red (0, 1, 0), # green (0, 0, 1), # blue (1, 1, 0), # yellow (0, 1, 1), # cyan (1, 0, 1), # red violet (0.5, 0.5, 0.5), # grey (1, 1, 1), # white #(0, 0, 0), # black (1, 0.65, 0), # orange yellow (0.25, 1, 0), # yellow green (1, 0, 0.25), # red wine ) ICONS_FILENAMES = ['tile-vertically.svg', 'tile-horizontally.svg', 'tile-quad.svg', 'tile-grid.svg', 'tile-custom-1-set.svg', 'tile-custom-1-exe.svg', 'tile-custom-2-set.svg', 'tile-custom-2-exe.svg', 'tile-triangle-up.svg', 'tile-triangle-down.svg', 'tile-triangle-left.svg', 'tile-triangle-right.svg', 'reload-windows-list.svg', 'maximize-checked-windows.svg', 'unmaximize-checked-windows.svg', 'close-checked-windows.svg', 'invert-tiling.svg', 'cycle-tiling.svg', 'toolbar.png', 'quit-app.svg', 'help-contents.svg', 'checkbox_checked.svg', 'checkbox_unchecked.svg'] GCONF_DIR = "/apps/x-tile" GCONF_LANG = "/apps/x-tile/language" GCONF_UNDO = "/apps/x-tile/%s/undo" GCONF_LATEST_TILING = "/apps/x-tile/%s/latest_tiling" GCONF_CUSTOM_1 = "/apps/x-tile/%s/custom" GCONF_CUSTOM_2 = "/apps/x-tile/%s/custom_2" GCONF_EXIT_AFTER_TILE = "/apps/x-tile/%s/exit_after_tile" GCONF_ONLY_CURR_DESK = "/apps/x-tile/%s/only_curr_desk" GCONF_NOT_MINIMIZED = "/apps/x-tile/%s/not_minimized" GCONF_TOOLBAR_ICON_SIZE = "/apps/x-tile/%s/toolbar_icon_size" GCONF_PROCESS_BLACKLIST = "/apps/x-tile/%s/process_blacklist" GCONF_PROCESS_WHITELIST = "/apps/x-tile/%s/process_whitelist" GCONF_WIN_SIZE_W = "/apps/x-tile/%s/win_size_w" GCONF_WIN_SIZE_H = "/apps/x-tile/%s/win_size_h" GCONF_WIN_POSITION_X = "/apps/x-tile/%s/win_position_x" GCONF_WIN_POSITION_Y = "/apps/x-tile/%s/win_position_y" GCONF_SHOW_TOOLBAR = "/apps/x-tile/%s/show_toolbar" GCONF_X1 = "/apps/x-tile/%s/x_1" GCONF_Y1 = "/apps/x-tile/%s/y_1" GCONF_W1 = "/apps/x-tile/%s/w_1" GCONF_H1 = "/apps/x-tile/%s/h_1" GCONF_X2 = "/apps/x-tile/%s/x_2" GCONF_Y2 = "/apps/x-tile/%s/y_2" GCONF_W2 = "/apps/x-tile/%s/w_2" GCONF_H2 = "/apps/x-tile/%s/h_2" GCONF_OVERRIDE_1 = "/apps/x-tile/%s/override_1" GCONF_OVERRIDE_2 = "/apps/x-tile/%s/override_2" GCONF_GRID_ROWS = "/apps/x-tile/%s/grid_rows" GCONF_GRID_COLS = "/apps/x-tile/%s/grid_cols" GCONF_SYSTRAY_ENABLE = "/apps/x-tile/%s/systray_enable" GCONF_USE_APPIND = "/apps/x-tile/%s/use_appind" GCONF_SYSTRAY_START = "/apps/x-tile/%s/systray_start" UI_INFO = """ """ def get_entries(inst): """Returns the Menu Entries Given the Class Instance""" return [ # name, stock id, label ( "FileMenu", None, _("_File") ), ( "EditMenu", None, _("_Edit") ), ( "RowMenu", None, _("_Row") ), ( "TileMenu", None, _("_Tile") ), ( "ViewMenu", None, _("_View") ), ( "HelpMenu", None, _("_Help") ), # name, stock id, label, accelerator, tooltip, callback ( "Filter", "gtk-properties", _("_Filter"), "F", _("Filter Rows"), inst.dialog_filter), ( "DefaultSel", "gtk-properties", _("Selected by _Default"), "D", _("Rows to be Selected by Default"), inst.dialog_selected_by_default), ( "Reload", "reload-windows-list", _("_Reload"), "F5", _("Reload the Windows List"), inst.reload_windows_list), ( "QuitApp", "quit-app", _("_Quit"), "Q", _("Quit the Application"), inst.quit_application), ( "ExitApp", "quit-app", _("_Exit X Tile"), "Q", _("Exit from X Tile"), inst.quit_application_totally), ( "ShowHideMainWin", "tile-quad", _("Show/Hide _X Tile"), None, _("Toggle Show/Hide X Tile"), inst.toggle_show_hide_main_window), ( "Preferences", "gtk-preferences", _("_Preferences"), "P", _("Open the Preferences Window"), inst.dialog_preferences), ( "SelectAll", "checkbox_checked", _("Select _All"), "A", _("Select All the Windows in the List"), inst.flag_all_rows), ( "DeselectAll", "checkbox_unchecked", _("Deselect A_ll"), "A", _("Deselect All the Windows in the List"), inst.unflag_all_rows), ( "Vertically", "tile-vertically", _("Tile _Vertically"), "V", _("Tile Vertically The Checked Windows"), inst.tile_vertically), ( "Horizontally", "tile-horizontally", _("Tile _Horizontally"), "H", _("Tile Horizontally The Checked Windows"), inst.tile_horizontally), ( "TriangleUp", "tile-triangle-up", _("_Triangle Up"), "Up", _("Tile Triangle Up The Checked Windows"), inst.tile_triangle_up), ( "TriangleDown", "tile-triangle-down", _("Triangle _Down"), "Down", _("Tile Triangle Down The Checked Windows"), inst.tile_triangle_down), ( "TriangleLeft", "tile-triangle-left", _("Triangle _Left"), "Left", _("Tile Triangle Left The Checked Windows"), inst.tile_triangle_left), ( "TriangleRight", "tile-triangle-right", _("Triangle _Right"), "Right", _("Tile Triangle Right The Checked Windows"), inst.tile_triangle_right), ( "Quad", "tile-quad", _("Tile _Quad"), "4", _("Tile into 4 quadrants The Checked Windows"), inst.tile_quad), ( "Grid", "tile-grid", _("Tile _Grid"), "G", _("Tile into an Arbitrary Grid The Checked Windows"), inst.dialog_grid), ( "Custom1Set", "tile-custom-1-set", _("Custom Tile 1 _Set"), "1", _("Edit Custom Tile 1 Settings"), inst.tile_custom_1_set), ( "Custom1Exe", "tile-custom-1-exe", _("Custom Tile _1 Run"), "1", _("Execute Custom Tile 1"), inst.tile_custom_1_run), ( "Custom2Set", "tile-custom-2-set", _("Custom Tile 2 S_et"), "2", _("Edit Custom Tile 2 Settings"), inst.tile_custom_2_set), ( "Custom2Exe", "tile-custom-2-exe", _("Custom Tile _2 Run"), "2", _("Execute Custom Tile 2"), inst.tile_custom_2_run), ( "UnTile", "gtk-undo", _("U_ndo Tiling"), "Z", _("Undo the Latest Tiling Operation"), inst.undo_tiling), ( "InverTile", "invert-tiling", _("_Invert Tiling Order"), "I", _("Invert the Order of the Latest Tiling Operation"), inst.invert_tiling), ( "CycleTile", "cycle-tiling", _("C_ycle Tiling Order"), "Y", _("Cycle the Order of the Latest Tiling Operation"), inst.cycle_tiling), ( "Maximize", "maximize-checked-windows", _("_Maximize Windows"), "M", _("Maximize The Checked Windows"), inst.maximize_checked_windows), ( "Unmaximize", "unmaximize-checked-windows", _("_Unmaximize Windows"), "U", _("Unmaximize The Checked Windows"), inst.unmaximize_checked_windows), ( "Close", "close-checked-windows", _("_Close Windows"), "C", _("Close The Checked Windows"), inst.close_checked_windows), ( "RowUp", "gtk-go-up", _("Move _Up"), "Up", _("Move the Selected Row Up"), inst.on_button_row_up_clicked), ( "RowDown", "gtk-go-down", _("Move _Down"), "Down", _("Move the Selected Row Down"), inst.on_button_row_down_clicked), ( "RowDelete", "gtk-remove", _("_Remove"), "Delete", _("Remove the Selected Row"), inst.on_button_row_delete_clicked), ( "ShowHideToolbar", "toolbar", _("Show/Hide _Toolbar"), None, _("Toggle Show/Hide Toolbar"), inst.show_hide_toolbar), ( "IncreaseToolbarIconsSize", "gtk-zoom-in", _("_Increase Toolbar Icons Size"), None, _("Increase the Size of the Toolbar Icons"), inst.toolbar_icons_size_increase), ( "DecreaseToolbarIconsSize", "gtk-zoom-out", _("_Decrease Toolbar Icons Size"), None, _("Decrease the Size of the Toolbar Icons"), inst.toolbar_icons_size_decrease), ( "Help", "help-contents", _("_Help"), None, _("X Tile Project Home Page"), inst.on_help_menu_item_activated), ( "About", "gtk-about", _("_About"), None, _("About X Tile"), inst.dialog_about), ( "All_About", "gtk-about", _("_About"), None, _("About X Tile"), inst.dialog_about_all), ( "All_C", "close-checked-windows", _("_Close All"), None, _("Close All Windows"), inst.close_all), ( "All_U", "unmaximize-checked-windows", _("_Unmaximize All"), None, _("Unmaximize All Windows"), inst.unmaximize_all), ( "All_M", "maximize-checked-windows", _("_Maximize All"), None, _("Maximize All Windows"), inst.maximize_all), ( "All_4", "tile-quad", _("Tile All _Quad"), None, _("Tile All Windows Quad"), inst.tile_all_quad), ( "All_TD", "tile-triangle-down", _("Tile All Triangle _Down"), None, _("Tile All Windows Triangle Down"), inst.tile_all_triangle_down), ( "All_TU", "tile-triangle-up", _("Tile All Triangle _Up"), None, _("Tile All Windows Triangle Up"), inst.tile_all_triangle_up), ( "All_TR", "tile-triangle-right", _("Tile All Triangle _Right"), None, _("Tile All Windows Triangle Right"), inst.tile_all_triangle_right), ( "All_TL", "tile-triangle-left", _("Tile All Triangle _Left"), None, _("Tile All Windows Triangle Left"), inst.tile_all_triangle_left), ( "All_C2", "tile-custom-2-exe", _("Tile All Custom _2"), None, _("Tile All Windows Custom 2"), inst.tile_all_custom_2), ( "All_C1", "tile-custom-1-exe", _("Tile All Custom _1"), None, _("Tile All Windows Custom 1"), inst.tile_all_custom_1), ( "All_G", "tile-grid", _("Tile All _Grid"), None, _("Tile All Windows Grid"), inst.tile_all_grid), ( "All_H", "tile-horizontally", _("Tile All _Horizontally"), None, _("Tile All Windows Horizontally"), inst.tile_all_horizontally), ( "All_V", "tile-vertically", _("Tile All _Vertically"), None, _("Tile All Windows Vertically"), inst.tile_all_vertically), ( "All_Invert", "invert-tiling", _("_Invert Tiling Order"), None, _("Invert the Order of the Latest Tiling Operation"), inst.invert_tiling_all), ( "All_Undo", "gtk-undo", _("U_ndo Tiling"), None, _("Undo the Latest Tiling Operation"), inst.undo_tiling_all), ( "All_Cycle", "cycle-tiling", _("C_ycle Tiling Order"), None, _("Cycle the Order of the Latest Tiling Operation"), inst.cycle_tiling_all), ] HELP_TEXT = """ NAME X Tile {} - Tile the Windows upon your Desktop SYNOPSIS x-tile OPTION DESCRIPTION This manual page briefly documents the command line arguments OPTIONS w => open the x-tile main window without using the panel z => undo the latest tiling operation v => tile all opened windows vertically h => tile all opened windows horizontally u => tile all opened windows triangle-up d => tile all opened windows triangle-down l => tile all opened windows triangle-left r => tile all opened windows triangle-right q => quad tile all opened windows g = g 0 = g 0 0 => tile all opened windows in a grid with automatic rows and columns g rows = g rows 0 => tile all opened windows in a grid with given rows and automatic columns g 0 cols => tile all opened windows in a grid with automatic rows and given columns g rows cols => tile all opened windows in a grid with given rows and columns 1 => custom tile 1 all opened windows 2 => custom tile 2 all opened windows i => invert the order of the latest tiling operation y => cycle the order of the latest tiling operation m => maximize all opened windows M => unmaximize all opened windows c => close all opened windows SEE ALSO http://www.giuspen.com/x-tile AUTHORS Giuseppe Penone (aka giuspen) and Chris Camacho (aka Chris_C) """.format(VERSION) x-tile-3.3/modules/core.py000066400000000000000000002147071375405375400155630ustar00rootroot00000000000000# # core.py # # Copyright 2009-2020 # Giuseppe Penone , # Chris Camacho (chris_c) . # # plus many thanks to http://tronche.com/gui/x/xlib/ # and http://tripie.sweb.cz/utils/wmctrl/ # # 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. from gi.repository import Gtk from gi.repository import Gdk from gi.repository import GdkPixbuf from gi.repository import GObject import os import sys import ctypes import webbrowser import time import subprocess try: gi.require_version('AppIndicator3', '0.1') from gi.repository import AppIndicator3 as appindicator HAS_APPINDICATOR = True except: HAS_APPINDICATOR = False import cons import support import tilings ICONS_SIZE = {1: Gtk.IconSize.MENU, 2: Gtk.IconSize.SMALL_TOOLBAR, 3: Gtk.IconSize.LARGE_TOOLBAR, 4: Gtk.IconSize.DND, 5: Gtk.IconSize.DIALOG} class MockingGConf: """Minimal GConf replacement""" def _get_filepath(self, key): key_clean = key.replace("/", "-") return os.path.join(cons.CONFIG_DIR, key_clean) def add_dir(self, dirpath): if not os.path.isdir(cons.CONFIG_DIR): os.makedirs(cons.CONFIG_DIR) def get_string(self, key): ret_val = None if os.path.isfile(self._get_filepath(key)): with open(self._get_filepath(key), "r") as fd: ret_val = fd.read() return ret_val def set_string(self, key, value): with open(self._get_filepath(key), "w") as fd: fd.write(value) def get_int(self, key): the_string = self.get_string(key) return int(the_string) if the_string is not None else 0 def set_int(self, key, value): self.set_string(key, str(value)) class InfoModel: """Holds the information""" def __init__(self): """Sets up and populates the Gtk.ListStore""" # 0:selected, 1:window ref, 2:title, 3:pixbuf of icon, 4:selected2, 5:cell_background self.gconf_client = MockingGConf() self.liststore = Gtk.ListStore(GObject.TYPE_BOOLEAN, GObject.TYPE_ULONG, GObject.TYPE_STRING, GObject.TYPE_PYOBJECT, GObject.TYPE_BOOLEAN, GObject.TYPE_STRING) self.process_picklist = set() self.process_blacklist = set() self.process_whitelist = set() def load_model(self, appletobj): """Populates the Gtk.ListStore""" self.liststore.clear() clients = [] support.get_property(b"_NET_CLIENT_LIST", glob.root, glob.XA_WINDOW) for i in range(0, glob.num_items.value): clients.append(glob.ret_pointer[i]) rows_num = 0 support.get_property(b"_NET_CURRENT_DESKTOP", glob.root, glob.XA_CARDINAL) if bool(glob.ret_pointer) == False: curr_workspace_num = -2 print("DEBUG warning _NET_CURRENT_DESKTOP improperly set") else: curr_workspace_num = glob.ret_pointer[0] # the number of the current workspace screen = Gdk.Screen.get_default() for client in clients: if support.is_window_sticky(client): continue support.get_property(b"_NET_WM_DESKTOP", client, glob.XA_CARDINAL) if bool(glob.ret_pointer): workspace_num = glob.ret_pointer[0] else: print("DEBUG warning _NET_WM_DESKTOP improperly set") workspace_num = curr_workspace_num if self.gconf_client.get_string(cons.GCONF_ONLY_CURR_DESK % glob.screen_index) == cons.STR_TRUE\ and (workspace_num != curr_workspace_num or not support.is_window_in_curr_viewport(glob.desktop_width, glob.desktop_height, client)): continue if self.gconf_client.get_string(cons.GCONF_NOT_MINIMIZED % glob.screen_index) == cons.STR_TRUE\ and support.is_window_hidden(client): continue support.get_property(b"_NET_WM_NAME", client, glob.str_atom) title=b"???" if bool(glob.ret_pointer)==False: print("DEBUG warning _NET_WM_NAME improperly set by application") support.get_property(b"WM_NAME", client, glob.str2_atom) if bool(glob.ret_pointer)==False: print("DEBUG warning WM_NAME not set by application") else: title = ctypes.string_at(glob.ret_pointer) else: title = ctypes.string_at(glob.ret_pointer) if title in cons.WINNAMES_BLACKLIST: continue pxb = support.get_icon(client) if pxb: pxb = pxb.scale_simple(24, 24, GdkPixbuf.InterpType.BILINEAR) support.get_property(b"_NET_WM_PID", client, glob.XA_CARDINAL) pid=0 process_name=b"UNKNOWN" if bool(glob.ret_pointer)==False: print("DEBUG warning can't get PID _NET_WM_PID failed") else: pid = glob.ret_pointer[0] process_name = support.get_process_name(pid) # filter based on process name - NB beppie I'd like something better for this but dont know what! if len(process_name) > 6 and process_name[-6:] == "x-tile": continue if process_name in cons.PROCESSES_BLACKLIST: continue #print "win", pid, process_name #if pid > 0: #ppid = os.popen("ps -p %d -oppid=" % pid).read().strip() #pp_name = support.get_process_name(ppid) #print "pwin", ppid, pp_name #if pp_name in cons.PROCESSES_PARENT_BLACKLIST: continue if support.is_candidate_compiz_desktop(client): continue self.process_picklist.add(process_name) if process_name not in self.process_blacklist: # user filter if glob.num_monitors > 1: win_geom = support.get_geom(client) win_curr_monitor = screen.get_monitor_at_point(win_geom[0]+win_geom[2]/2, win_geom[1]+win_geom[3]/2) else: win_curr_monitor = 0 if win_curr_monitor == 0: cell_background = None else: cell_background = 'gray' if process_name not in self.process_whitelist: flagged = False else: flagged = True if win_curr_monitor == 0: self.liststore.prepend([flagged, client, title.decode('utf-8'), pxb, False, cell_background]) else: self.liststore.append([flagged, client, title.decode('utf-8'), pxb, False, cell_background]) rows_num += 1 if rows_num == 2: iter = self.liststore.get_iter_first() while iter != None: self.liststore[iter][0] = True iter = self.liststore.iter_next(iter) def flag_all_rows(self): """Flags All Rows""" if glob.num_monitors > 1: all_rows_flagged_on_monitor_1 = True iter = self.liststore.get_iter_first() while iter != None: if self.liststore[iter][0] == False: all_rows_flagged_on_monitor_1 = False break iter = self.liststore.iter_next(iter) else: all_rows_flagged_on_monitor_1 = False iter = self.liststore.get_iter_first() while iter != None: if not all_rows_flagged_on_monitor_1: self.liststore[iter][0] = True self.liststore[iter][4] = False else: self.liststore[iter][0] = False self.liststore[iter][4] = True iter = self.liststore.iter_next(iter) def unflag_all_rows(self): """Unflags All Rows""" iter = self.liststore.get_iter_first() while iter != None: self.liststore[iter][0] = False self.liststore[iter][4] = False iter = self.liststore.iter_next(iter) def get_checked_windows_list(self, undo_ready=False): """Returns the list of the checked windows""" checked_windows_list = [[],[]] if undo_ready: # undo_snap_vec is 0:win_id 1:is_maximized 2:x 3:y 4:width 5:height undo_snap_vec = [] tree_iter = self.liststore.get_iter_first() while tree_iter != None: try: win_id = self.liststore[tree_iter][1] except: continue if self.liststore[tree_iter][0] == True: checked_windows_list[0].append(win_id) elif self.liststore[tree_iter][4] == True: checked_windows_list[1].append(win_id) if undo_ready and (self.liststore[tree_iter][0] or self.liststore[tree_iter][4]): if support.is_window_Vmax(win_id) or support.is_window_Hmax(win_id): is_maximized = 1 else: is_maximized = 0 win_geom = support.get_geom(win_id) undo_snap_vec.append([ str(win_id), str(is_maximized), str(win_geom[0]), str(win_geom[1]), str(win_geom[2]), str(win_geom[3]) ]) tree_iter = self.liststore.iter_next(tree_iter) if undo_ready and undo_snap_vec: support.undo_snap_write(self.gconf_client, undo_snap_vec) return checked_windows_list def close_checked_windows(self): """Closes the checked windows and removes the rows from the model""" iter = self.liststore.get_iter_first() while iter != None: next_iter = self.liststore.iter_next(iter) if self.liststore[iter][0] == True or self.liststore[iter][4] == True: support.client_msg(self.liststore[iter][1], b"_NET_CLOSE_WINDOW", 0, 0, 0, 0, 0) glob.x11.XSync(glob.disp, False) self.liststore.remove(iter) iter = next_iter def row_up(self, iter): """Row up one position""" prev_iter = self.get_tree_iter_prev_sibling(iter) if prev_iter != None: self.liststore.swap(iter, prev_iter) def row_down(self, iter): """Row down one position""" subseq_iter = self.liststore.iter_next(iter) if subseq_iter != None: self.liststore.swap(iter, subseq_iter) def row_delete(self, iter): """Row remove""" self.liststore.remove(iter) def get_tree_iter_prev_sibling(self, node_iter): """Returns the previous sibling iter or None if the given iter is the first""" node_path = self.liststore.get_path(node_iter) sibling_index = len(node_path)-1 prev_iter = None while prev_iter == None and node_path[sibling_index] > 0: node_path_list = list(node_path) node_path_list[sibling_index] -= 1 prev_path = tuple(node_path_list) prev_iter = self.liststore.get_iter(prev_path) return prev_iter def get_model(self): """Returns the model""" return self.liststore class GladeWidgetsWrapper: """Handles the retrieval of glade widgets""" def __init__(self, glade_file_path, gui_instance): try: self.glade_widgets = Gtk.Builder() self.glade_widgets.set_translation_domain(cons.APP_NAME) self.glade_widgets.add_from_file(glade_file_path) self.glade_widgets.connect_signals(gui_instance) except: print("Failed to load the glade file") def __getitem__(self, key): """Gives us the ability to do: wrapper['widget_name'].action()""" return self.glade_widgets.get_object(key) def __getattr__(self, attr): """Gives us the ability to do: wrapper.widget_name.action()""" new_widget = self.glade_widgets.get_object(attr) if new_widget is None: raise AttributeError('Widget %r not found' % attr) setattr(self, attr, new_widget) return new_widget class XTile: """The application's main window""" def __init__(self, store): """Instantiate the Glade Widgets Wrapper, create the view, retrieves and stores the information about the running desktop self.geometry""" # create a variable pointing to the instance of the InfoModel class self.store = store # icons generation factory = Gtk.IconFactory() for filename in cons.ICONS_FILENAMES: stock_name = filename[:-4] filepath = os.path.join(cons.GLADE_PATH, filename) pixbuf = GdkPixbuf.Pixbuf.new_from_file(filepath) iconset = Gtk.IconSet(pixbuf) factory.add(stock_name, iconset) factory.add_default() # system settings try: gtk_settings = Gtk.Settings.get_default() gtk_settings.set_property("gtk-button-images", True) gtk_settings.set_property("gtk-menu-images", True) except: pass # older gtk do not have the property "gtk-menu-images" os.environ['UBUNTU_MENUPROXY'] = '0' # x-tile has custom stock icons not visible in appmenu self.cmd_line_only = False # instantiate the Glade Widgets Wrapper self.glade = GladeWidgetsWrapper(cons.GLADE_PATH + 'x-tile.glade', self) # ui manager actions = Gtk.ActionGroup("Actions") actions.add_actions(cons.get_entries(self)) self.ui = Gtk.UIManager() self.ui.insert_action_group(actions, 0) self.glade.window.add_accel_group(self.ui.get_accel_group()) self.ui.add_ui_from_string(cons.UI_INFO) # menubar add self.glade.vbox_main.pack_start(self.ui.get_widget("/MenuBar"), False, False, 0) self.glade.vbox_main.reorder_child(self.ui.get_widget("/MenuBar"), 0) # toolbar add self.glade.vbox_main.pack_start(self.ui.get_widget("/ToolBar"), False, False, 0) self.glade.vbox_main.reorder_child(self.ui.get_widget("/ToolBar"), 1) self.ui.get_widget("/ToolBar").set_style(Gtk.ToolbarStyle.ICONS) # create the view self.view = Gtk.TreeView(store.get_model()) self.view.set_headers_visible(False) self.renderer_checkbox = Gtk.CellRendererToggle() self.renderer_checkbox.set_property('activatable', True) self.renderer_checkbox.connect('toggled', self.toggle_active, self.store.liststore) self.renderer_checkbox2 = Gtk.CellRendererToggle() self.renderer_checkbox2.set_property('activatable', True) self.renderer_checkbox2.connect('toggled', self.toggle_active2, self.store.liststore) self.renderer_pixbuf = Gtk.CellRendererPixbuf() self.renderer_text = Gtk.CellRendererText() self.columns = [None]*4 self.columns[0] = Gtk.TreeViewColumn("Tile", self.renderer_checkbox, active=0) # active=0 <> read from column 0 of model self.columns[0].add_attribute(self.renderer_checkbox, "cell-background", 5) self.columns[1] = Gtk.TreeViewColumn("Tile", self.renderer_checkbox2, active=4) # active=4 <> read from column 4 of model self.columns[1].add_attribute(self.renderer_checkbox2, "cell-background", 5) self.columns[2] = Gtk.TreeViewColumn("Logo", self.renderer_pixbuf) self.columns[2].set_cell_data_func(self.renderer_pixbuf, self.make_pixbuf) self.columns[2].add_attribute(self.renderer_pixbuf, "cell-background", 5) self.columns[3] = Gtk.TreeViewColumn("Window Description", self.renderer_text, text=2) # text=2 <> read from column 2 of model self.columns[3].add_attribute(self.renderer_text, "cell-background", 5) for n in range(4): self.view.append_column(self.columns[n]) if glob.num_monitors < 2: self.columns[1].set_visible(False) self.view.set_reorderable(True) # allow drag and drop reordering of rows self.view.set_tooltip_text(_("Use Drag and Drop to Sort the Rows")) self.view.connect('button-press-event', self.on_mouse_button_clicked_list) self.no_toggling_signals = False self.viewselection = self.view.get_selection() self.glade.scrolledwindow.add(self.view) self.glade.processadddialog.connect('key_press_event', self.on_key_press_processadddialog) self.glade.drawingarea.connect('draw', self.on_drawing_area_draw) self.glade.aboutdialog.set_version(cons.VERSION) self.glade.window.set_title(self.glade.window.get_title() + " " + cons.VERSION) self.gconf_client = MockingGConf() self.gconf_client.add_dir("/apps/x-tile/%s" % glob.screen_index) self.combobox_country_lang_init() def combobox_country_lang_init(self): """Init The Programming Languages Syntax Highlighting""" combobox = self.glade.combobox_country_language self.country_lang_liststore = Gtk.ListStore(str) combobox.set_model(self.country_lang_liststore) cell = Gtk.CellRendererText() combobox.pack_start(cell, True) combobox.add_attribute(cell, 'text', 0) for country_lang in cons.AVAILABLE_LANGS: self.country_lang_liststore.append([country_lang]) combobox.set_active_iter(self.get_combobox_country_lang_iter(self.gconf_client.get_string(cons.GCONF_LANG))) self.glade.combobox_country_language.connect('changed', self.on_combobox_country_language_changed) def get_combobox_country_lang_iter(self, country_language): """Returns the Language iter Given the Language Name""" curr_iter = self.country_lang_liststore.get_iter_first() while curr_iter != None: if self.country_lang_liststore[curr_iter][0] == country_language: break else: curr_iter = self.country_lang_liststore.iter_next(curr_iter) else: return self.country_lang_liststore.get_iter_first() return curr_iter def on_combobox_country_language_changed(self, combobox): """New Country Language Choosed""" new_iter = self.glade.combobox_country_language.get_active_iter() new_lang = self.country_lang_liststore[new_iter][0] if new_lang != self.gconf_client.get_string(cons.GCONF_LANG): self.country_lang = new_lang support.dialog_info(_("The New Language will be Available Only After Restarting X Tile"), self.glade.window) self.gconf_client.set_string(cons.GCONF_LANG, new_lang) def status_icon_enable(self): """Creates the Stats Icon""" if self.use_appindicator(): self.ind = appindicator.Indicator.new("x-tile", "indicator-messages", appindicator.IndicatorCategory.APPLICATION_STATUS) self.ind.set_status(appindicator.IndicatorStatus.ACTIVE) self.ind.set_attention_icon("indicator-messages-new") for icp in ["/usr/share/icons/hicolor/scalable/apps/x-tile.svg", "/usr/local/share/icons/hicolor/scalable/apps/x-tile.svg", "glade/x-tile.svg"]: if os.path.isfile(icp): icon_path = icp break else: icon_path = cons.APP_NAME self.ind.set_icon(icon_path) self.ind.set_menu(self.ui.get_widget("/SysTrayMenu")) else: self.status_icon = Gtk.StatusIcon() self.status_icon.set_from_stock("tile-quad") self.status_icon.connect('button-press-event', self.on_mouse_button_clicked_systray) self.status_icon.set_tooltip_text(_("Tile the Windows Upon your X Desktop")) def on_mouse_button_clicked_systray(self, widget, event): """Catches mouse buttons clicks upon the system tray icon""" if event.button == 1: self.toggle_show_hide_main_window() elif event.button == 3: self.ui.get_widget("/SysTrayMenu").popup(None, None, None, None, event.button, event.time) def toggle_show_hide_main_window(self, *args): if self.win_on_screen: self.window_hide() else: self.window_position_restore() self.glade.window.show() self.reload_windows_list() self.win_on_screen = True def on_checkbutton_use_appind_toggled(self, checkbutton): """Use AppIndicator Toggled Handling""" if self.glade.checkbutton_systray_docking.get_active(): former_active = True self.glade.checkbutton_systray_docking.set_active(False) else: former_active = False if checkbutton.get_active(): self.gconf_client.set_string(cons.GCONF_USE_APPIND % glob.screen_index, cons.STR_TRUE) else: self.gconf_client.set_string(cons.GCONF_USE_APPIND % glob.screen_index, cons.STR_FALSE) if former_active: self.glade.checkbutton_systray_docking.set_active(True) def on_checkbutton_systray_docking_toggled(self, checkbutton): """SysTray Toggled Handling""" self.systray_on = checkbutton.get_active() if self.systray_on: if not self.use_appindicator(): if "status_icon" in dir(self): self.status_icon.set_property('visible', True) else: self.status_icon_enable() else: if "ind" in dir(self): self.ind.set_status(appindicator.IndicatorStatus.ACTIVE) else: self.status_icon_enable() self.ui.get_widget("/MenuBar/FileMenu/ExitApp").set_property('visible', True) self.glade.checkbutton_start_minimized.set_sensitive(True) if self.gconf_client.get_string(cons.GCONF_SYSTRAY_ENABLE % glob.screen_index) != cons.STR_TRUE: self.gconf_client.set_string(cons.GCONF_SYSTRAY_ENABLE % glob.screen_index, cons.STR_TRUE) else: if not self.use_appindicator(): if not "status_icon" in dir(self): self.status_icon_enable() self.status_icon.set_property('visible', False) else: if not "ind" in dir(self): self.status_icon_enable() self.ind.set_status(appindicator.IndicatorStatus.PASSIVE) self.ui.get_widget("/MenuBar/FileMenu/ExitApp").set_property('visible', False) self.glade.checkbutton_start_minimized.set_sensitive(False) if self.gconf_client.get_string(cons.GCONF_SYSTRAY_ENABLE % glob.screen_index) != cons.STR_FALSE: self.gconf_client.set_string(cons.GCONF_SYSTRAY_ENABLE % glob.screen_index, cons.STR_FALSE) def on_checkbutton_start_minimized_toggled(self, checkbutton): """Start Minimized on SysTray Toggled Handling""" if checkbutton.get_active(): if self.gconf_client.get_string(cons.GCONF_SYSTRAY_START % glob.screen_index) != cons.STR_TRUE: self.gconf_client.set_string(cons.GCONF_SYSTRAY_START % glob.screen_index, cons.STR_TRUE) else: if self.gconf_client.get_string(cons.GCONF_SYSTRAY_START % glob.screen_index) != cons.STR_FALSE: self.gconf_client.set_string(cons.GCONF_SYSTRAY_START % glob.screen_index, cons.STR_FALSE) def on_checkbutton_override_monitor_1_area_toggled(self, checkbutton): """Override Area 1 Checkbox was Toggled""" if checkbutton.get_active(): cons.OVERRIDE_1 = 1 else: cons.OVERRIDE_1 = 0 glob.read_monitors_areas() cons.X1 = glob.monitors_areas[0][0] cons.Y1 = glob.monitors_areas[0][1] cons.W1 = glob.monitors_areas[0][2] cons.H1 = glob.monitors_areas[0][3] self.glade.spinbutton_x1.set_value(cons.X1) self.glade.spinbutton_y1.set_value(cons.Y1) self.glade.spinbutton_w1.set_value(cons.W1) self.glade.spinbutton_h1.set_value(cons.H1) self.gconf_client.set_int(cons.GCONF_OVERRIDE_1 % glob.screen_index, cons.OVERRIDE_1) self.glade.vbox_override_area_1.set_sensitive(cons.OVERRIDE_1 == 1) def on_checkbutton_override_monitor_2_area_toggled(self, checkbutton): """Override Area 1 Checkbox was Toggled""" if checkbutton.get_active(): cons.OVERRIDE_2 = 1 else: cons.OVERRIDE_2 = 0 glob.read_monitors_areas() cons.X2 = glob.monitors_areas[1][0] cons.Y2 = glob.monitors_areas[1][1] cons.W2 = glob.monitors_areas[1][2] cons.H2 = glob.monitors_areas[1][3] self.glade.spinbutton_x2.set_value(cons.X2) self.glade.spinbutton_y2.set_value(cons.Y2) self.glade.spinbutton_w2.set_value(cons.W2) self.glade.spinbutton_h2.set_value(cons.H2) self.gconf_client.set_int(cons.GCONF_OVERRIDE_2 % glob.screen_index, cons.OVERRIDE_2) self.glade.vbox_override_area_2.set_sensitive(cons.OVERRIDE_2 == 1) def init_from_gconf(self): """Init the geometry and the spinbuttons""" glob.read_monitors_areas() self.glade.drawingarea.set_property("width-request", glob.drawing_rect[2]) self.glade.drawingarea.set_property("height-request", glob.drawing_rect[3]) self.custom_geoms_1 = [] custom_geoms_str = self.gconf_client.get_string(cons.GCONF_CUSTOM_1 % glob.screen_index) if custom_geoms_str: custom_geoms_vec = custom_geoms_str.split(" ") for custom_geom in custom_geoms_vec: x, y, width, height = custom_geom.split(",") self.custom_geoms_1.append([int(x), int(y), int(width), int(height)]) self.custom_geoms_2 = [] custom_geoms_str = self.gconf_client.get_string(cons.GCONF_CUSTOM_2 % glob.screen_index) if custom_geoms_str: custom_geoms_vec = custom_geoms_str.split(" ") for custom_geom in custom_geoms_vec: x, y, width, height = custom_geom.split(",") self.custom_geoms_2.append([int(x), int(y), int(width), int(height)]) if self.gconf_client.get_string(cons.GCONF_EXIT_AFTER_TILE % glob.screen_index) == None: self.gconf_client.set_string(cons.GCONF_EXIT_AFTER_TILE % glob.screen_index, cons.STR_TRUE) if self.gconf_client.get_string(cons.GCONF_NOT_MINIMIZED % glob.screen_index) == None: self.gconf_client.set_string(cons.GCONF_NOT_MINIMIZED % glob.screen_index, cons.STR_FALSE) if self.gconf_client.get_string(cons.GCONF_ONLY_CURR_DESK % glob.screen_index) == None: self.gconf_client.set_string(cons.GCONF_ONLY_CURR_DESK % glob.screen_index, cons.STR_FALSE) # systray handling if not HAS_APPINDICATOR: self.gconf_client.set_string(cons.GCONF_USE_APPIND % glob.screen_index, cons.STR_FALSE) else: self.gconf_client.set_string(cons.GCONF_USE_APPIND % glob.screen_index, cons.STR_TRUE) if self.gconf_client.get_string(cons.GCONF_SYSTRAY_ENABLE % glob.screen_index) == None: self.gconf_client.set_string(cons.GCONF_SYSTRAY_ENABLE % glob.screen_index, cons.STR_FALSE) if self.gconf_client.get_string(cons.GCONF_SYSTRAY_START % glob.screen_index) == None: self.gconf_client.set_string(cons.GCONF_SYSTRAY_START % glob.screen_index, cons.STR_FALSE) if self.gconf_client.get_string(cons.GCONF_SYSTRAY_ENABLE % glob.screen_index) == cons.STR_TRUE: self.status_icon_enable() self.systray_on = True self.ui.get_widget("/MenuBar/FileMenu/ExitApp").set_property('visible', True) else: self.systray_on = False self.ui.get_widget("/MenuBar/FileMenu/ExitApp").set_property('visible', False) # exit after tile self.glade.exit_after_tile_checkbutton.set_active(self.gconf_client.get_string(cons.GCONF_EXIT_AFTER_TILE % glob.screen_index) == cons.STR_TRUE) # monitor 1 handling if self.gconf_client.get_int(cons.GCONF_OVERRIDE_1 % glob.screen_index) == 1: cons.OVERRIDE_1 = 1 cons.X1 = self.gconf_client.get_int(cons.GCONF_X1 % glob.screen_index) cons.Y1 = self.gconf_client.get_int(cons.GCONF_Y1 % glob.screen_index) cons.W1 = self.gconf_client.get_int(cons.GCONF_W1 % glob.screen_index) cons.H1 = self.gconf_client.get_int(cons.GCONF_H1 % glob.screen_index) glob.monitors_areas[0] = [cons.X1, cons.Y1, cons.W1, cons.H1] else: cons.X1 = glob.monitors_areas[0][0] cons.Y1 = glob.monitors_areas[0][1] cons.W1 = glob.monitors_areas[0][2] cons.H1 = glob.monitors_areas[0][3] # monitor 2 handling if glob.num_monitors > 1: if self.gconf_client.get_int(cons.GCONF_OVERRIDE_2 % glob.screen_index) == 1: cons.OVERRIDE_2 = 1 cons.X2 = self.gconf_client.get_int(cons.GCONF_X2 % glob.screen_index) cons.Y2 = self.gconf_client.get_int(cons.GCONF_Y2 % glob.screen_index) cons.W2 = self.gconf_client.get_int(cons.GCONF_W2 % glob.screen_index) cons.H2 = self.gconf_client.get_int(cons.GCONF_H2 % glob.screen_index) glob.monitors_areas[1] = [cons.X2, cons.Y2, cons.W2, cons.H2] else: cons.X2 = glob.monitors_areas[1][0] cons.Y2 = glob.monitors_areas[1][1] cons.W2 = glob.monitors_areas[1][2] cons.H2 = glob.monitors_areas[1][3] # grid parameters grid_rows = self.gconf_client.get_int(cons.GCONF_GRID_ROWS % glob.screen_index) if grid_rows: cons.GRID_ROWS = grid_rows grid_cols = self.gconf_client.get_int(cons.GCONF_GRID_COLS % glob.screen_index) if grid_cols: cons.GRID_COLS = grid_cols key = self.gconf_client.get_int(cons.GCONF_TOOLBAR_ICON_SIZE % glob.screen_index) if key not in ICONS_SIZE: self.gconf_client.set_int(cons.GCONF_TOOLBAR_ICON_SIZE % glob.screen_index, 3) self.ui.get_widget("/ToolBar").set_property("icon-size", ICONS_SIZE[self.gconf_client.get_int(cons.GCONF_TOOLBAR_ICON_SIZE % glob.screen_index)]) blacklist = self.gconf_client.get_string(cons.GCONF_PROCESS_BLACKLIST % glob.screen_index) if blacklist not in [None, ""]: for element in blacklist.split(): self.store.process_blacklist.add(element) whitelist = self.gconf_client.get_string(cons.GCONF_PROCESS_WHITELIST % glob.screen_index) if whitelist not in [None, ""]: for element in whitelist.split(): self.store.process_whitelist.add(element) self.glade.checkbutton_override_monitor_1_area.set_active(cons.OVERRIDE_1 == 1) self.glade.checkbutton_override_monitor_2_area.set_active(cons.OVERRIDE_2 == 1) self.glade.spinbutton_x1.set_value(cons.X1) self.glade.spinbutton_y1.set_value(cons.Y1) self.glade.spinbutton_w1.set_value(cons.W1) self.glade.spinbutton_h1.set_value(cons.H1) self.glade.spinbutton_x2.set_value(cons.X2) self.glade.spinbutton_y2.set_value(cons.Y2) self.glade.spinbutton_w2.set_value(cons.W2) self.glade.spinbutton_h2.set_value(cons.H2) self.glade.vbox_override_area_1.set_sensitive(cons.OVERRIDE_1 == 1) self.glade.vbox_override_area_2.set_sensitive(cons.OVERRIDE_2 == 1) self.glade.checkbutton_override_monitor_2_area.set_sensitive(glob.num_monitors > 1) self.win_size_n_pos = {} self.win_size_n_pos['win_size'] = [self.gconf_client.get_int(cons.GCONF_WIN_SIZE_W % glob.screen_index), self.gconf_client.get_int(cons.GCONF_WIN_SIZE_H % glob.screen_index)] if 0 not in self.win_size_n_pos['win_size']: self.glade.window.resize(self.win_size_n_pos['win_size'][0], self.win_size_n_pos['win_size'][1]) def window_position_restore(self): """Restore window size and position""" self.win_size_n_pos['win_position'] = [self.gconf_client.get_int(cons.GCONF_WIN_POSITION_X % glob.screen_index), self.gconf_client.get_int(cons.GCONF_WIN_POSITION_Y % glob.screen_index)] self.glade.window.move(self.win_size_n_pos['win_position'][0], self.win_size_n_pos['win_position'][1]) def toolbar_icons_size_increase(self, *args): """Increase the Size of the Toolbar Icons""" toolbar_icon_size = self.gconf_client.get_int(cons.GCONF_TOOLBAR_ICON_SIZE % glob.screen_index) if toolbar_icon_size == 5: support.dialog_info(_("The Size of the Toolbar Icons is already at the Maximum Value"), self.glade.window) return toolbar_icon_size += 1 self.gconf_client.set_int(cons.GCONF_TOOLBAR_ICON_SIZE % glob.screen_index, toolbar_icon_size) self.ui.get_widget("/ToolBar").set_property("icon-size", ICONS_SIZE[toolbar_icon_size]) def toolbar_icons_size_decrease(self, *args): """Decrease the Size of the Toolbar Icons""" toolbar_icon_size = self.gconf_client.get_int(cons.GCONF_TOOLBAR_ICON_SIZE % glob.screen_index) if toolbar_icon_size == 1: support.dialog_info(_("The Size of the Toolbar Icons is already at the Minimum Value"), self.glade.window) return toolbar_icon_size -= 1 self.gconf_client.set_int(cons.GCONF_TOOLBAR_ICON_SIZE % glob.screen_index, toolbar_icon_size) self.ui.get_widget("/ToolBar").set_property("icon-size", ICONS_SIZE[toolbar_icon_size]) def toggle_active(self, cell, path, model): """Toggles the Active state""" model[path][0] = not model[path][0] model[path][4] = False def toggle_active2(self, cell, path, model): """Toggles the Active state""" model[path][4] = not model[path][4] model[path][0] = False def toggle_exit_after_tile(self, *args): """Toggles the flag Exit After Tile""" if not self.no_toggling_signals: if self.gconf_client.get_string(cons.GCONF_EXIT_AFTER_TILE % glob.screen_index) == cons.STR_TRUE: self.gconf_client.set_string(cons.GCONF_EXIT_AFTER_TILE % glob.screen_index, cons.STR_FALSE) else: self.gconf_client.set_string(cons.GCONF_EXIT_AFTER_TILE % glob.screen_index, cons.STR_TRUE) def toggle_do_not_list_minimized(self, *args): """Toggles the flag Do Not List Minimized Windows in List""" if not self.no_toggling_signals: if self.gconf_client.get_string(cons.GCONF_NOT_MINIMIZED % glob.screen_index) == cons.STR_TRUE: self.gconf_client.set_string(cons.GCONF_NOT_MINIMIZED % glob.screen_index, cons.STR_FALSE) else: self.gconf_client.set_string(cons.GCONF_NOT_MINIMIZED % glob.screen_index, cons.STR_TRUE) self.store.load_model(self) def toggle_only_curr_workspace(self, *args): """Toggles the flag Only Current Workspace Windows in List""" if not self.no_toggling_signals: if self.gconf_client.get_string(cons.GCONF_ONLY_CURR_DESK % glob.screen_index) == cons.STR_TRUE: self.gconf_client.set_string(cons.GCONF_ONLY_CURR_DESK % glob.screen_index, cons.STR_FALSE) else: self.gconf_client.set_string(cons.GCONF_ONLY_CURR_DESK % glob.screen_index, cons.STR_TRUE) self.store.load_model(self) def is_window_visible(self): """Returns True if the window is visible, False otherwise""" return self.glade.window.get_property("visible") def flag_all_rows(self, *args): """Flags All Rows""" self.store.flag_all_rows() def unflag_all_rows(self, *args): """Unflags All Rows""" self.store.unflag_all_rows() def make_pixbuf(self, treeviewcolumn, cell, tree_model, tree_iter, data): """Function to associate the pixbuf to the cell renderer""" try: pixbuf = tree_model[tree_iter][3] cell.set_property('pixbuf', pixbuf) except: pass def on_window_delete_event(self, widget, event, data=None): """Before close the application: no checks needed""" self.quit_application() return True # do not propogate the delete event def on_configwindow_delete_event(self, widget, event, data=None): """Destroy the config window""" self.on_configwin_close_button_clicked() return True # do not propogate the delete event def dialog_preferences(self, *args): """Open the Config Window""" if self.glade.configwindow.get_property("visible") == True: return self.no_toggling_signals = True self.glade.current_workspace_checkbutton.set_active(self.gconf_client.get_string(cons.GCONF_ONLY_CURR_DESK % glob.screen_index) == cons.STR_TRUE) self.glade.do_not_list_minimized_checkbutton.set_active(self.gconf_client.get_string(cons.GCONF_NOT_MINIMIZED % glob.screen_index) == cons.STR_TRUE) self.glade.checkbutton_systray_docking.set_active(self.gconf_client.get_string(cons.GCONF_SYSTRAY_ENABLE % glob.screen_index) == cons.STR_TRUE) self.glade.checkbutton_start_minimized.set_active(self.gconf_client.get_string(cons.GCONF_SYSTRAY_START % glob.screen_index) == cons.STR_TRUE) self.glade.checkbutton_use_appind.set_active(self.gconf_client.get_string(cons.GCONF_USE_APPIND % glob.screen_index) == cons.STR_TRUE) if not HAS_APPINDICATOR: self.glade.checkbutton_use_appind.set_sensitive(False) self.glade.show_toolbar_checkbutton.set_active(self.gconf_client.get_string(cons.GCONF_SHOW_TOOLBAR % glob.screen_index) == cons.STR_TRUE) self.no_toggling_signals = False self.glade.configwindow.show_all() def on_configwin_close_button_clicked(self, *args): """Hide the Dialog""" self.glade.configwindow.hide() cons.X1 = int(self.glade.spinbutton_x1.get_value()) cons.Y1 = int(self.glade.spinbutton_y1.get_value()) cons.W1 = int(self.glade.spinbutton_w1.get_value()) cons.H1 = int(self.glade.spinbutton_h1.get_value()) if cons.OVERRIDE_1 == 1: glob.monitors_areas[0] = [cons.X1, cons.Y1, cons.W1, cons.H1] self.gconf_client.set_int(cons.GCONF_X1 % glob.screen_index, cons.X1) self.gconf_client.set_int(cons.GCONF_Y1 % glob.screen_index, cons.Y1) self.gconf_client.set_int(cons.GCONF_W1 % glob.screen_index, cons.W1) self.gconf_client.set_int(cons.GCONF_H1 % glob.screen_index, cons.H1) if glob.num_monitors > 1: cons.X2 = int(self.glade.spinbutton_x2.get_value()) cons.Y2 = int(self.glade.spinbutton_y2.get_value()) cons.W2 = int(self.glade.spinbutton_w2.get_value()) cons.H2 = int(self.glade.spinbutton_h2.get_value()) if cons.OVERRIDE_2 == 1: glob.monitors_areas[1] = [cons.X2, cons.Y2, cons.W2, cons.H2] self.gconf_client.set_int(cons.GCONF_X2 % glob.screen_index, cons.X2) self.gconf_client.set_int(cons.GCONF_Y2 % glob.screen_index, cons.Y2) self.gconf_client.set_int(cons.GCONF_W2 % glob.screen_index, cons.W2) self.gconf_client.set_int(cons.GCONF_H2 % glob.screen_index, cons.H2) def on_button_row_up_clicked(self, *args): """Move the selected row up of one position""" model, iter = self.viewselection.get_selected() if iter == None: support.dialog_warning(_("No Row is Selected"), self.glade.window) return self.store.row_up(iter) def on_button_row_down_clicked(self, *args): """Move the selected row up of one position""" model, iter = self.viewselection.get_selected() if iter == None: support.dialog_warning(_("No Row is Selected"), self.glade.window) return self.store.row_down(iter) def on_button_row_delete_clicked(self, *args): """Remove the selected row""" model, iter = self.viewselection.get_selected() if iter == None: support.dialog_warning(_("No Row is Selected"), self.glade.window) return self.store.row_delete(iter) def on_button_add_filter_clicked(self, *args): """Application Filter Add""" self.process_add_list_exist_or_create() self.process_add_liststore.clear() for element in self.store.process_picklist: self.process_add_liststore.append([element]) response = self.glade.processadddialog.run() self.glade.processadddialog.hide() if response != 1: return model, iter = self.process_add_treeviewselection.get_selected() if iter == None: return self.store.process_blacklist.add(model[iter][0]) self.filter_list_update() def on_button_remove_filter_clicked(self, *args): """Application Filter Remove""" model, iter = self.filter_treeviewselection.get_selected() if iter == None: support.dialog_warning(_("No Application Selected!"), self.glade.window) return self.store.process_blacklist.remove(model[iter][0]) self.filter_list_update() def dialog_filter(self, action): """Application's Filter Dialog""" self.filter_list_exist_or_create() self.filter_list_update() self.glade.filterdialog.run() self.glade.filterdialog.hide() if len(self.store.process_blacklist) > 0: self.gconf_client.set_string(cons.GCONF_PROCESS_BLACKLIST % glob.screen_index, " ".join(self.store.process_blacklist)) else: self.gconf_client.set_string(cons.GCONF_PROCESS_BLACKLIST % glob.screen_index, "") self.reload_windows_list() def on_button_add_white_clicked(self, *args): """Application Whitelist Add""" self.process_add_list_exist_or_create() self.process_add_liststore.clear() for element in self.store.process_picklist: self.process_add_liststore.append([element]) response = self.glade.processadddialog.run() self.glade.processadddialog.hide() if response != 1: return model, iter = self.process_add_treeviewselection.get_selected() if iter == None: return self.store.process_whitelist.add(model[iter][0]) self.white_list_update() def on_button_remove_white_clicked(self, *args): """Application Whitelist Remove""" model, iter = self.white_treeviewselection.get_selected() if iter == None: support.dialog_warning(_("No Application Selected!"), self.glade.window) return self.store.process_whitelist.remove(model[iter][0]) self.white_list_update() def dialog_selected_by_default(self, action): """Dialog to select a list of windows to be flagged by Default""" self.white_list_exist_or_create() self.white_list_update() self.glade.whitedialog.run() self.glade.whitedialog.hide() if len(self.store.process_whitelist) > 0: self.gconf_client.set_string(cons.GCONF_PROCESS_WHITELIST % glob.screen_index, " ".join(self.store.process_whitelist)) else: self.gconf_client.set_string(cons.GCONF_PROCESS_WHITELIST % glob.screen_index, "") self.reload_windows_list() def filter_list_update(self): """Updates the Process Filter List""" self.filter_liststore.clear() for element in self.store.process_blacklist: self.filter_liststore.append([element]) def white_list_update(self): """Updates the Process White List""" self.white_liststore.clear() for element in self.store.process_whitelist: self.white_liststore.append([element]) def filter_list_exist_or_create(self): """If The List Was Never Used, this will Create It""" if not "filter_liststore" in dir(self): self.filter_liststore = Gtk.ListStore(str) self.filter_treeview = Gtk.TreeView(self.filter_liststore) self.filter_treeview.set_headers_visible(False) self.filter_renderer_text = Gtk.CellRendererText() self.filter_column = Gtk.TreeViewColumn("Application", self.filter_renderer_text, text=0) self.filter_treeview.append_column(self.filter_column) self.filter_treeviewselection = self.filter_treeview.get_selection() self.glade.scrolledwindow_filter.add(self.filter_treeview) self.glade.scrolledwindow_filter.show_all() def white_list_exist_or_create(self): """If The List Was Never Used, this will Create It""" if not "white_liststore" in dir(self): self.white_liststore = Gtk.ListStore(str) self.white_treeview = Gtk.TreeView(self.white_liststore) self.white_treeview.set_headers_visible(False) self.white_renderer_text = Gtk.CellRendererText() self.white_column = Gtk.TreeViewColumn("Application", self.white_renderer_text, text=0) self.white_treeview.append_column(self.white_column) self.white_treeviewselection = self.white_treeview.get_selection() self.glade.scrolledwindow_white.add(self.white_treeview) self.glade.scrolledwindow_white.show_all() def process_add_list_exist_or_create(self): """If The List Was Never Used, this will Create It""" if not "process_add_liststore" in dir(self): self.process_add_liststore = Gtk.ListStore(str) self.process_add_treeview = Gtk.TreeView(self.process_add_liststore) self.process_add_treeview.set_headers_visible(False) self.process_add_renderer_text = Gtk.CellRendererText() self.process_add_column = Gtk.TreeViewColumn("Application", self.process_add_renderer_text, text=0) self.process_add_treeview.append_column(self.process_add_column) self.process_add_treeviewselection = self.process_add_treeview.get_selection() self.process_add_treeview.connect('button-press-event', self.on_mouse_button_clicked_process_add) self.glade.scrolledwindow_process_add.add(self.process_add_treeview) self.glade.scrolledwindow_process_add.show_all() def on_mouse_button_clicked_process_add(self, widget, event): """Catches mouse buttons clicks""" if event.button != 1: return if event.type == Gdk.EventType._2BUTTON_PRESS: self.glade.processadddialog_button_ok.clicked() def on_key_press_processadddialog(self, widget, event): """Catches AnchorHandle Dialog key presses""" keyname = Gdk.keyval_name(event.keyval) if keyname == "Return": self.glade.processadddialog_button_ok.clicked() def dialog_grid(self, *args): """Open the Grid Dialog""" dialog = Gtk.Dialog(title=_("Grid Details"), parent=self.glade.window, flags=Gtk.DialogFlags.MODAL|Gtk.DialogFlags.DESTROY_WITH_PARENT, buttons=(Gtk.STOCK_CANCEL, Gtk.ResponseType.REJECT, Gtk.STOCK_OK, Gtk.ResponseType.ACCEPT) ) dialog.set_position(Gtk.WindowPosition.CENTER_ON_PARENT) content_area = dialog.get_content_area() hbox_rows = Gtk.HBox() label_rows = Gtk.Label(label=_("Rows")) spinbutton_rows = Gtk.SpinButton() adj_rows = spinbutton_rows.get_adjustment() #adj_rows.set_all(cons.GRID_ROWS, 1, 100, 1, 0, 0) adj_rows = Gtk.Adjustment(value=1,lower=1,upper=100, step_increment=1, page_increment=0) spinbutton_rows.set_adjustment(adj_rows) hbox_rows.pack_start(label_rows, True, True, 0) hbox_rows.pack_start(spinbutton_rows, True, True, 0) hbox_cols = Gtk.HBox() label_cols = Gtk.Label(label=_("Columns")) spinbutton_cols = Gtk.SpinButton() #adj_cols = spinbutton_cols.get_adjustment() #adj_cols.set_all(cons.GRID_COLS, 1, 100, 1, 0, 0) adj_cols = Gtk.Adjustment(value=1, lower=1,upper=100, step_increment=1, page_increment=0) spinbutton_cols.set_adjustment(adj_cols) hbox_cols.pack_start(label_cols, True, True, 0) hbox_cols.pack_start(spinbutton_cols, True, True, 0) content_area.pack_start(hbox_rows, True, True, 0) content_area.pack_start(hbox_cols, True, True, 0) def on_key_press_enter_password_dialog(widget, event): if Gdk.keyval_name(event.keyval) == "Return": button_box = dialog.get_action_area() buttons = button_box.get_children() buttons[0].clicked() # first is the ok button dialog.connect("key_press_event", on_key_press_enter_password_dialog) dialog.show_all() response = dialog.run() cons.GRID_ROWS = int(spinbutton_rows.get_value()) cons.GRID_COLS = int(spinbutton_cols.get_value()) dialog.destroy() if response != Gtk.ResponseType.ACCEPT: return self.gconf_client.set_int(cons.GCONF_GRID_ROWS % glob.screen_index, cons.GRID_ROWS) self.gconf_client.set_int(cons.GCONF_GRID_COLS % glob.screen_index, cons.GRID_COLS) self.tile_grid() def use_appindicator(self): """Will we use AppIndicator?""" return self.gconf_client.get_string(cons.GCONF_USE_APPIND % glob.screen_index) == cons.STR_TRUE def quit_application_totally(self, *args): """The process is Shut Down""" if not self.use_appindicator() and "status_icon" in dir(self): self.status_icon.set_visible(False) self.save_win_pos_n_size() self.glade.window.destroy() Gtk.main_quit() def save_win_pos_n_size(self): """Destroy the window""" actual_win_size = list(self.glade.window.get_size()) actual_win_pos = list(self.glade.window.get_position()) if actual_win_size != self.win_size_n_pos['win_size']: self.win_size_n_pos['win_size'] = actual_win_size self.gconf_client.set_int(cons.GCONF_WIN_SIZE_W % glob.screen_index, self.win_size_n_pos['win_size'][0]) self.gconf_client.set_int(cons.GCONF_WIN_SIZE_H % glob.screen_index, self.win_size_n_pos['win_size'][1]) if actual_win_pos != self.win_size_n_pos['win_position']: self.win_size_n_pos['win_position'] = actual_win_pos self.gconf_client.set_int(cons.GCONF_WIN_POSITION_X % glob.screen_index, self.win_size_n_pos['win_position'][0]) self.gconf_client.set_int(cons.GCONF_WIN_POSITION_Y % glob.screen_index, self.win_size_n_pos['win_position'][1]) def window_hide(self): """Hide the Window""" self.save_win_pos_n_size() self.glade.window.hide() self.win_on_screen = False def quit_application(self, *args): """Hide the window""" if not self.systray_on: self.quit_application_totally() else: self.window_hide() def launch_application(self): """Show the main window and all child widgets""" self.init_from_gconf() self.window_position_restore() self.glade.window.show_all() if glob.is_compiz_running: self.glade.checkbutton_dest_workspace.set_active(False) self.glade.checkbutton_dest_workspace.hide() self.glade.spinbutton_dest_workspace.hide() show_toolbar = self.gconf_client.get_string(cons.GCONF_SHOW_TOOLBAR % glob.screen_index) if show_toolbar == None: self.gconf_client.set_string(cons.GCONF_SHOW_TOOLBAR % glob.screen_index, cons.STR_TRUE) elif show_toolbar == cons.STR_FALSE: self.ui.get_widget("/ToolBar").hide() self.win_on_screen = True if self.gconf_client.get_string(cons.GCONF_SYSTRAY_ENABLE % glob.screen_index) == cons.STR_FALSE: self.ui.get_widget("/MenuBar/FileMenu/ExitApp").set_property('visible', False) elif self.gconf_client.get_string(cons.GCONF_SYSTRAY_START % glob.screen_index) == cons.STR_TRUE: self.glade.window.hide() self.win_on_screen = False def reload_windows_list(self, *args): """Reloads the Windows List""" self.store.load_model(self) def close_checked_windows(self, *args): """Closes the Checked Windows""" number_of_windows = len(self.store.get_checked_windows_list()) if number_of_windows < 1: support.dialog_warning(_('No Windows Checked'), self.glade.window) else: self.store.close_checked_windows() def maximize_checked_windows(self, *args): """Maximizes the Checked Windows""" checked_windows_lists = self.store.get_checked_windows_list(True) checked_windows_list = checked_windows_lists[0] + checked_windows_lists[1] number_of_windows = len(checked_windows_list) if number_of_windows < 1: support.dialog_warning(_('No Windows Checked'), self.glade.window) else: for checked_window in checked_windows_list: support.maximize(checked_window) self.check_exit_after_tile() def unmaximize_checked_windows(self, *args): """Unmaximizes the Checked Windows""" checked_windows_lists = self.store.get_checked_windows_list(True) checked_windows_list = checked_windows_lists[0] + checked_windows_lists[1] number_of_windows = len(checked_windows_list) if number_of_windows < 1: support.dialog_warning(_('No Windows Checked'), self.glade.window) else: for checked_window in checked_windows_list: support.unmaximize(checked_window) self.check_exit_after_tile() def tile_vertically(self, *args): """Tile the Checked Windows Vertically""" self.gconf_client.set_string(cons.GCONF_LATEST_TILING % glob.screen_index, "v") checked_windows_list = self.store.get_checked_windows_list(True) tilings.tile_vertically(checked_windows_list, glob.monitors_areas, self.get_dest_ws()) self.check_exit_after_tile() def tile_horizontally(self, *args): """Tile the Checked Windows Horizontally""" self.gconf_client.set_string(cons.GCONF_LATEST_TILING % glob.screen_index, "h") checked_windows_list = self.store.get_checked_windows_list(True) tilings.tile_horizontally(checked_windows_list, glob.monitors_areas, self.get_dest_ws()) self.check_exit_after_tile() def tile_quad(self, *args): """Tile the Checked Windows Quad""" self.gconf_client.set_string(cons.GCONF_LATEST_TILING % glob.screen_index, "q") checked_windows_list = self.store.get_checked_windows_list(True) tilings.tile_quad(checked_windows_list, glob.monitors_areas, self.get_dest_ws()) self.check_exit_after_tile() def tile_grid(self): """Tile the Checked Windows in a rows by cols grid""" self.gconf_client.set_string(cons.GCONF_LATEST_TILING % glob.screen_index, "g") checked_windows_list = self.store.get_checked_windows_list(True) tilings.tile_grid(cons.GRID_ROWS, cons.GRID_COLS, checked_windows_list, glob.monitors_areas, self.get_dest_ws()) self.check_exit_after_tile() def tile_custom_1_set(self, *args): """The User Wants to Set/Update the Custom Tiling""" self.last_custom = 1 self.glade.customsetdialog.set_title(_("Edit Custom Tile Settings") + " 1") response = self.glade.customsetdialog.run() self.glade.customsetdialog.hide() if response != 1: return custom_geoms_str = "" for win_geom in self.custom_geoms_1: custom_geoms_str += " %s,%s,%s,%s" % (win_geom[0], win_geom[1], win_geom[2], win_geom[3]) if custom_geoms_str != "": custom_geoms_str = custom_geoms_str[1:] self.gconf_client.set_string(cons.GCONF_CUSTOM_1 % glob.screen_index, custom_geoms_str) def tile_custom_2_set(self, *args): """The User Wants to Set/Update the Custom Tiling""" self.last_custom = 2 self.glade.customsetdialog.set_title(_("Edit Custom Tile Settings") + " 2") response = self.glade.customsetdialog.run() self.glade.customsetdialog.hide() if response != 1: return custom_geoms_str = "" for win_geom in self.custom_geoms_2: custom_geoms_str += " %s,%s,%s,%s" % (win_geom[0], win_geom[1], win_geom[2], win_geom[3]) if custom_geoms_str != "": custom_geoms_str = custom_geoms_str[1:] self.gconf_client.set_string(cons.GCONF_CUSTOM_2 % glob.screen_index, custom_geoms_str) def on_drawing_area_draw(self, drawing_area, cairo_context): """Drawing Area was Exposed""" if self.last_custom == 1: if self.custom_geoms_1: self.custom_geoms_draw(self.custom_geoms_1, cairo_context) elif self.last_custom == 2: if self.custom_geoms_2: self.custom_geoms_draw(self.custom_geoms_2, cairo_context) def on_mouse_button_clicked_list(self, widget, event): """Catches mouse buttons clicks""" if event.button == 3: self.ui.get_widget("/ListMenu").popup(None, None, None, None, event.button, event.time) def on_button_update_custom_tiling_clicked(self, button): """Let's Get Positions and Size of the Flagged Windows""" checked_windows_list = self.store.get_checked_windows_list() if self.last_custom == 1: self.custom_geoms_1 = [] for win_id in checked_windows_list[0] + checked_windows_list[1]: win_geom = support.get_geom(win_id) self.custom_geoms_1.append([win_geom[0], win_geom[1], win_geom[2], win_geom[3]]) elif self.last_custom == 2: self.custom_geoms_2 = [] for win_id in checked_windows_list[0] + checked_windows_list[1]: win_geom = support.get_geom(win_id) self.custom_geoms_2.append([win_geom[0], win_geom[1], win_geom[2], win_geom[3]]) self.glade.drawingarea.queue_draw() def custom_geoms_draw(self, custom_geoms, cairo_context): """Draw Custom Geometries""" rgb_idx = 0 for i, win_geom in enumerate(custom_geoms): cairo_context.set_source_rgb(*cons.DRAW_RGBS[rgb_idx]) cairo_context.rectangle(win_geom[0]/cons.DRAW_SCALE, win_geom[1]/cons.DRAW_SCALE, win_geom[2]/cons.DRAW_SCALE, win_geom[3]/cons.DRAW_SCALE) cairo_context.fill() cairo_context.set_source_rgb(0, 0, 0) cairo_context.set_font_size(13) cairo_context.move_to(win_geom[0]/cons.DRAW_SCALE + win_geom[2]/(2*cons.DRAW_SCALE), win_geom[1]/cons.DRAW_SCALE + win_geom[3]/(2*cons.DRAW_SCALE)) cairo_context.show_text(str(i+1)) if rgb_idx + 1 < len(cons.DRAW_RGBS): rgb_idx += 1 else: rgb_idx = 0 def get_dest_ws(self): """Get Destination Desktop""" if self.glade.checkbutton_dest_workspace.get_active(): return int(self.glade.spinbutton_dest_workspace.get_value()-1) return -1 def invert_tiling(self, *args): """Invert the order of the latest tiling operation""" # get the win_id and win_geom of the latest tiled windows latest_tiling_geoms = [] undo_snap_str = self.gconf_client.get_string(cons.GCONF_UNDO % glob.screen_index) if not undo_snap_str: return undo_snap_vec = undo_snap_str.split(" ") doubleundo_snap_vec = [] for element in undo_snap_vec: win_id, is_maximized, x, y, width, height = element.split(",") win_geom = support.get_geom(int(win_id)) latest_tiling_geoms.append({'win_id': win_id, 'win_geom': win_geom}) #print "latest_tiling_geoms", latest_tiling_geoms # generate the win_id and win_geom of the next tiled windows next_tiling_geoms = [] for i, element in enumerate(latest_tiling_geoms): next_tiling_geoms.append({'win_id': element['win_id'], 'win_geom': latest_tiling_geoms[-1-i]['win_geom']}) #print "next_tiling_geoms", next_tiling_geoms # tile the windows for element in next_tiling_geoms: doubleundo_snap_vec.append(support.get_undo_element_from_win_id(int(element['win_id']))) support.moveresize(int(element['win_id']), int(element['win_geom'][0]), int(element['win_geom'][1]), int(element['win_geom'][2]), int(element['win_geom'][3]), self.get_dest_ws()) if doubleundo_snap_vec: support.undo_snap_write(self.gconf_client, doubleundo_snap_vec) self.check_exit_after_tile() def cycle_tiling(self, *args): """Cycle the order of the latest tiling operation""" # get the win_id and win_geom of the latest tiled windows latest_tiling_geoms = [] undo_snap_str = self.gconf_client.get_string(cons.GCONF_UNDO % glob.screen_index) if not undo_snap_str: return undo_snap_vec = undo_snap_str.split(" ") doubleundo_snap_vec = [] for element in undo_snap_vec: win_id, is_maximized, x, y, width, height = element.split(",") win_geom = support.get_geom(int(win_id)) latest_tiling_geoms.append({'win_id': win_id, 'win_geom': win_geom}) #print "latest_tiling_geoms", latest_tiling_geoms # generate the win_id and win_geom of the next tiled windows next_tiling_geoms = [] for i, element in enumerate(latest_tiling_geoms): next_tiling_geoms.append({'win_id': element['win_id'], 'win_geom': latest_tiling_geoms[(i+1)%len(latest_tiling_geoms)]['win_geom']}) #print "next_tiling_geoms", next_tiling_geoms # tile the windows for element in next_tiling_geoms: doubleundo_snap_vec.append(support.get_undo_element_from_win_id(int(element['win_id']))) support.moveresize(int(element['win_id']), int(element['win_geom'][0]), int(element['win_geom'][1]), int(element['win_geom'][2]), int(element['win_geom'][3]), self.get_dest_ws()) if doubleundo_snap_vec: support.undo_snap_write(self.gconf_client, doubleundo_snap_vec) self.check_exit_after_tile() def undo_tiling(self, *args): """Undo the Latest Tiling Operation""" undo_snap_str = self.gconf_client.get_string(cons.GCONF_UNDO % glob.screen_index) if not undo_snap_str: return undo_snap_vec = undo_snap_str.split(" ") doubleundo_snap_vec = [] for element in undo_snap_vec: win_id, is_maximized, x, y, width, height = element.split(",") # save current state for eventual undo of the undo win_id_int = int(win_id) doubleundo_snap_vec.append(support.get_undo_element_from_win_id(win_id_int)) # proceed with the undo if int(is_maximized) == 1: support.maximize(win_id_int) else: support.moveresize(win_id_int, int(x), int(y), int(width), int(height), self.get_dest_ws()) if doubleundo_snap_vec: support.undo_snap_write(self.gconf_client, doubleundo_snap_vec) self.check_exit_after_tile() def tile_custom_1_run(self, *args): """Tile N Windows According to the User Defined Tiling""" custom_geoms_str = self.gconf_client.get_string(cons.GCONF_CUSTOM_1 % glob.screen_index) if not custom_geoms_str: support.dialog_info(_("The Custom Tile 1 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 1 Set'"), self.glade.window) return self.gconf_client.set_string(cons.GCONF_LATEST_TILING % glob.screen_index, "1") custom_geoms_vec = custom_geoms_str.split(" ") windows_list = self.store.get_checked_windows_list(True) windows_list = windows_list[0] + windows_list[1] win_num = 0 for checked_window in windows_list: x, y, width, height = custom_geoms_vec[win_num].split(",") support.moveresize(checked_window, int(x), int(y), int(width), int(height), self.get_dest_ws()) if win_num + 1 < len(custom_geoms_vec): win_num += 1 else: break self.check_exit_after_tile() def tile_custom_2_run(self, *args): """Tile N Windows According to the User Defined Tiling""" custom_geoms_str = self.gconf_client.get_string(cons.GCONF_CUSTOM_2 % glob.screen_index) if not custom_geoms_str: support.dialog_info(_("The Custom Tile 2 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 2 Set'"), self.glade.window) return self.gconf_client.set_string(cons.GCONF_LATEST_TILING % glob.screen_index, "2") custom_geoms_vec = custom_geoms_str.split(" ") windows_list = self.store.get_checked_windows_list(True) windows_list = windows_list[0] + windows_list[1] win_num = 0 for checked_window in windows_list: x, y, width, height = custom_geoms_vec[win_num].split(",") support.moveresize(checked_window, int(x), int(y), int(width), int(height), self.get_dest_ws()) if win_num + 1 < len(custom_geoms_vec): win_num += 1 else: break self.check_exit_after_tile() def tile_triangle_up(self, *args): """Tile 3 Windows in Triangle Up Scheme""" self.gconf_client.set_string(cons.GCONF_LATEST_TILING % glob.screen_index, "u") checked_windows_list = self.store.get_checked_windows_list(True) tilings.tile_triangle_up(checked_windows_list, glob.monitors_areas, self.get_dest_ws()) self.check_exit_after_tile() def tile_triangle_down(self, *args): """Tile 3 Windows in Triangle Down Scheme""" self.gconf_client.set_string(cons.GCONF_LATEST_TILING % glob.screen_index, "d") checked_windows_list = self.store.get_checked_windows_list(True) tilings.tile_triangle_down(checked_windows_list, glob.monitors_areas, self.get_dest_ws()) self.check_exit_after_tile() def tile_triangle_left(self, *args): """Tile 3 Windows in Triangle Left Scheme""" self.gconf_client.set_string(cons.GCONF_LATEST_TILING % glob.screen_index, "l") checked_windows_list = self.store.get_checked_windows_list(True) tilings.tile_triangle_left(checked_windows_list, glob.monitors_areas, self.get_dest_ws()) self.check_exit_after_tile() def tile_triangle_right(self, *args): """Tile 3 Windows in Triangle Right Scheme""" self.gconf_client.set_string(cons.GCONF_LATEST_TILING % glob.screen_index, "r") checked_windows_list = self.store.get_checked_windows_list(True) tilings.tile_triangle_right(checked_windows_list, glob.monitors_areas, self.get_dest_ws()) self.check_exit_after_tile() def show_hide_toolbar(self, menuitem, data=None): """Show/Hide the Toolbar""" if not self.no_toggling_signals: if self.ui.get_widget("/ToolBar").get_property('visible') == True: self.ui.get_widget("/ToolBar").hide() self.gconf_client.set_string(cons.GCONF_SHOW_TOOLBAR % glob.screen_index, cons.STR_FALSE) else: self.ui.get_widget("/ToolBar").show() self.gconf_client.set_string(cons.GCONF_SHOW_TOOLBAR % glob.screen_index, cons.STR_TRUE) def check_exit_after_tile(self): """Check if the Exit After Tile is Active and Eventually Quit""" if self.cmd_line_only: return if self.gconf_client.get_string(cons.GCONF_EXIT_AFTER_TILE % glob.screen_index) == cons.STR_TRUE: self.quit_application() def dialog_about(self, menuitem, data=None): """Show the About Dialog and hide it when a button is pressed""" self.glade.aboutdialog.run() self.glade.aboutdialog.hide() def on_help_menu_item_activated(self, menuitem, data=None): """Show the application's Instructions""" webbrowser.open("http://www.giuspen.com/x-tile/") def hide_and_process(self, command_str): """Hide the X Tile Window if Visible, then Process the Command""" if self.win_on_screen: self.window_hide() subprocess.call(command_str, shell=True) def undo_tiling_all(self, *args): """Just Undo the Latest Tiling Operation""" self.hide_and_process("x-tile z &") def invert_tiling_all(self, *args): """Invert the Order of the Latest Tiling Operation""" self.hide_and_process("x-tile i &") def cycle_tiling_all(self, *args): """Cycle the Order of the Latest Tiling Operation""" self.hide_and_process("x-tile y &") def tile_all_vertically(self, *args): """Just tile Vertically all opened windows""" self.hide_and_process("x-tile v &") def tile_all_horizontally(self, *args): """Just tile Horizontally all opened windows""" self.hide_and_process("x-tile h &") def tile_all_triangle_up(self, *args): """Just tile Triangle Up all opened windows""" self.hide_and_process("x-tile u &") def tile_all_triangle_down(self, *args): """Just tile Triangle Down all opened windows""" self.hide_and_process("x-tile d &") def tile_all_triangle_left(self, *args): """Just tile Triangle Left all opened windows""" self.hide_and_process("x-tile l &") def tile_all_triangle_right(self, *args): """Just tile Triangle Right all opened windows""" self.hide_and_process("x-tile r &") def tile_all_quad(self, *args): """Just tile Quad all opened windows""" self.hide_and_process("x-tile q &") def tile_all_grid(self, *args): """Just tile Grid all opened windows""" self.hide_and_process("x-tile g &") def tile_all_custom_1(self, *args): """Just tile Custom 1 all opened windows""" self.hide_and_process("x-tile 1 &") def tile_all_custom_2(self, *args): """Just tile Custom 2 all opened windows""" self.hide_and_process("x-tile 2 &") def maximize_all(self, *args): """Maximize all opened windows""" self.hide_and_process("x-tile m &") def unmaximize_all(self, *args): """Unmaximize all opened windows""" self.hide_and_process("x-tile M &") def close_all(self, *args): """Close all opened windows""" self.hide_and_process("x-tile c &") def dialog_about_all(self, *args): """Show the About Dialog and hide it when a button is pressed""" glade = GladeWidgetsWrapper(cons.GLADE_PATH + 'x-tile.glade', self) glade.aboutdialog.set_version(cons.VERSION) glade.aboutdialog.run() glade.aboutdialog.destroy() del glade x-tile-3.3/modules/globs.py000066400000000000000000000164401375405375400157330ustar00rootroot00000000000000# # globs.py # # Copyright 2009-2020 # Giuseppe Penone , # Chris Camacho (chris_c) . # # plus many thanks to http://tronche.com/gui/x/xlib/ # and http://tripie.sweb.cz/utils/wmctrl/ # # 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. from gi.repository import Gtk from gi.repository import Gdk import ctypes import ctypes.util import cons import support import core class XSizeHints(ctypes.Structure): """ XSizeHints structure (xlib) """ _fields_ = [("flags", ctypes.c_long), ("x", ctypes.c_int), # Obsolete ("y", ctypes.c_int), # Obsolete ("width", ctypes.c_int), # Obsolete ("height", ctypes.c_int), # Obsolete ("min_width", ctypes.c_int), ("min_height", ctypes.c_int), ("max_width", ctypes.c_int), ("max_height", ctypes.c_int), ("width_inc", ctypes.c_int), ("height_inc", ctypes.c_int), ("min_asp_width", ctypes.c_int), ("min_asp_height", ctypes.c_int), ("max_asp_width", ctypes.c_int), ("max_asp_height", ctypes.c_int), ("base_width", ctypes.c_int), ("base_height", ctypes.c_int), ("win_gravity", ctypes.c_int)] class XWindowAttributes(ctypes.Structure): """ XWindowAttributes structure (xlib) """ _fields_ = [("x", ctypes.c_int32), ("y", ctypes.c_int32), ("width", ctypes.c_int32), ("height", ctypes.c_int32), ("border_width", ctypes.c_int32), ("depth", ctypes.c_int32), ("visual", ctypes.c_ulong), ("root", ctypes.c_ulong), ("class", ctypes.c_int32), ("bit_gravity", ctypes.c_int32), ("win_gravity", ctypes.c_int32), ("backing_store", ctypes.c_int32), ("backing_planes", ctypes.c_ulong), ("backing_pixel", ctypes.c_ulong), ("save_under", ctypes.c_int32), ("colourmap", ctypes.c_ulong), ("mapinstalled", ctypes.c_uint32), ("map_state", ctypes.c_uint32), ("all_event_masks", ctypes.c_ulong), ("your_event_mask", ctypes.c_ulong), ("do_not_propagate_mask", ctypes.c_ulong), ("override_redirect", ctypes.c_int32), ("screen", ctypes.c_ulong)] class XClientMessageEvent(ctypes.Structure): """ XClientMessageEvent structure (xlib) """ _fields_ = [("type", ctypes.c_int), ("serial", ctypes.c_long), ("send", ctypes.c_byte), ("display", ctypes.c_long), ("window", ctypes.c_long), ("msgtype", ctypes.c_long), ("format", ctypes.c_int), ("data0", ctypes.c_long), ("data1", ctypes.c_long), ("data2", ctypes.c_long), ("data3", ctypes.c_long), ("data4", ctypes.c_long)] class GlobalsObject(object): """Global Variables""" def __init__(self): """Instantiate global vars""" support.glob = self # x11 reference to xlib library display and root window globals self.x11 = ctypes.CDLL(ctypes.util.find_library("X11")) self.x11.XOpenDisplay.restype = ctypes.c_void_p self.disp = ctypes.c_void_p(self.x11.XOpenDisplay(0)) self.root = self.x11.XDefaultRootWindow(self.disp) # property atoms for moveresize # assigned once here so they are not recreated # every time moveresize is called self.fscreen_atom = self.x11.XInternAtom(self.disp, b"_NET_WM_STATE_FULLSCREEN", False) self.maxv_atom = self.x11.XInternAtom(self.disp, b"_NET_WM_STATE_MAXIMIZED_VERT", False) self.maxh_atom = self.x11.XInternAtom(self.disp, b"_NET_WM_STATE_MAXIMIZED_HORZ", False) self.hidden_atom = self.x11.XInternAtom(self.disp, b"_NET_WM_STATE_HIDDEN", False) self.sticky_atom = self.x11.XInternAtom(self.disp, b"_NET_WM_STATE_STICKY", False) self.str_atom = self.x11.XInternAtom(self.disp, b"UTF8_STRING", False) # GLOBAL returns for getwindowproperty self.ret_type = ctypes.c_long() self.ret_format = ctypes.c_long() self.num_items = ctypes.c_long() self.bytes_after = ctypes.c_long() self.ret_pointer = ctypes.pointer(ctypes.c_long()) # xlib global "defines" for some standard atoms self.XA_CARDINAL = 6 self.XA_WINDOW = 33 self.XA_STRING = 31 self.XA_ATOM = 4 # GLOBAL size hints return self.size_hints_return = XSizeHints() self.screen_index = support.get_root_screen_index() self.str2_atom = self.x11.XInternAtom(self.disp, b"STRING", False) self.num_monitors = Gdk.Screen.get_default().get_n_monitors() self.is_compiz_running = support.is_compiz_running() self.desktop_width, self.desktop_height = support.get_desktop_width_n_height() def read_monitors_areas(self): """Read Monitor(s) Area(s)""" strut_windows = support.enumerate_strut_windows(self.disp, self.root) #print strut_windows screen = Gdk.Screen.get_default() self.num_monitors = screen.get_n_monitors() self.monitors_areas = [] drawing_area_size = [0, 0] for num_monitor in range(self.num_monitors): rect = screen.get_monitor_geometry(num_monitor) self.monitors_areas.append([rect.x, rect.y, rect.width, rect.height]) if rect.x + rect.width > drawing_area_size[0]: drawing_area_size[0] = rect.x + rect.width if rect.y + rect.height > drawing_area_size[1]: drawing_area_size[1] = rect.y + rect.height for strut_win in strut_windows: self.monitors_areas[-1] = support.subtract_areas(self.monitors_areas[-1], strut_win) #print self.monitors_areas self.drawing_rect = (0, 0, drawing_area_size[0]/cons.DRAW_SCALE, drawing_area_size[1]/cons.DRAW_SCALE) x-tile-3.3/modules/support.py000066400000000000000000000406461375405375400163460ustar00rootroot00000000000000# # support.py # # Copyright 2009-2020 # Giuseppe Penone , # Chris Camacho (chris_c) . # # plus many thanks to http://tronche.com/gui/x/xlib/ # and http://tripie.sweb.cz/utils/wmctrl/ # # 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. from gi.repository import Gtk from gi.repository import Gdk from gi.repository import GdkPixbuf import os import subprocess import ctypes import re import globs import cons def get_desktop_width_n_height(): """Get Desktop Width and Height""" get_property(b"_NET_WORKAREA", glob.root, glob.XA_CARDINAL) if bool(glob.ret_pointer): return glob.ret_pointer[2], glob.ret_pointer[3] print("The WM does not set _NET_WORKAREA properly, x-tile may not work properly") screen = Gdk.Screen.get_default() rect = screen.get_monitor_geometry(0) return rect.width, rect.height def is_window_in_curr_viewport(desktop_width, desktop_height, win_id): """Check the Window to be in the Current Viewport assuming Compiz is Running""" x, y, width, height, root = get_geom(win_id) if x < 0 or x >= desktop_width or y < 0 or y >= desktop_height: return False else: return True def is_compiz_running(): """Return True if Compiz is running""" get_property(b"_NET_SUPPORTING_WM_CHECK", glob.root, glob.XA_WINDOW) if bool(glob.ret_pointer) == False: get_property(b"_NET_SUPPORTING_WM_CHECK", glob.root, glob.XA_CARDINAL) if bool(glob.ret_pointer) == False: print("no 1!") return False else: sup_window = glob.ret_pointer[0] else: sup_window = glob.ret_pointer[0] get_property(b"_NET_WM_NAME", sup_window, glob.str_atom) if bool(glob.ret_pointer) == False: get_property(b"_NET_WM_NAME", sup_window, glob.XA_STRING) if bool(glob.ret_pointer) == False: print("no 2!") return False buff = "" keep_going = True i = 0 while keep_going: eightchars = glob.ret_pointer[i] for j in range(8): curr_char = ((eightchars >> 8*j) & 0xff) if curr_char == 0: keep_going = False break buff += "%c" % curr_char i += 1 print("WM =", buff) if buff == "Compiz": return True return False def is_candidate_compiz_desktop(win): """Is this a candidate Compiz Desktop window""" if not glob.is_compiz_running: return False x, y, w, h, r = get_geom(win) if w > glob.monitors_areas[0][2] \ and h > glob.monitors_areas[0][3] \ and not is_window_Hmax(win) \ and not is_window_Vmax(win): return True return False def get_geom(win): """ Status XQueryTree(display, w, root_return, parent_return, children_return, nchildren_return) Display *display; Window w; Window *root_return; Window *parent_return; Window **children_return; unsigned int *nchildren_return; """ root_return = ctypes.c_ulong() parent_return = ctypes.c_ulong() children_return = ctypes.c_ulong() nchildren_return = ctypes.c_uint() glob.x11.XQueryTree(glob.disp,win,ctypes.byref(root_return),ctypes.byref(parent_return), ctypes.byref(children_return),ctypes.byref(nchildren_return)) # undecorated windows have root as parent... if (glob.root!=parent_return.value): win=parent_return xwa = globs.XWindowAttributes() glob.x11.XGetWindowAttributes(glob.disp, win,ctypes.byref(xwa)) get_property(b"_NET_FRAME_EXTENTS",win,glob.XA_CARDINAL) if bool(glob.ret_pointer)==False: l,r,t,b = (0,0,0,0) else: l,r,t,b = glob.ret_pointer[0], glob.ret_pointer[1], glob.ret_pointer[2], glob.ret_pointer[3] return xwa.x-l,xwa.y-t,xwa.width+(l+r),xwa.height+(t+b),xwa.root def get_property(prop_name, window, data_type): #128*256 longs (128kb) should be good enough... """ gets an x property puts in global return variables property name, window, return data type atom """ prop_atom = glob.x11.XInternAtom(glob.disp, prop_name, False) glob.x11.XGetWindowProperty(glob.disp, window, prop_atom, 0, 128*256, False, data_type, ctypes.byref(glob.ret_type), ctypes.byref(glob.ret_format), ctypes.byref(glob.num_items), ctypes.byref(glob.bytes_after), ctypes.byref(glob.ret_pointer)) def get_icon(win): """ this returns a Gdk.pixbuf of the windows icon converts argb into rgba in the process """ get_property(b"_NET_WM_ICON", win, glob.XA_CARDINAL) if not glob.ret_pointer: return None w = glob.ret_pointer[0] h = glob.ret_pointer[1] #print w,h if w > 48 or h > 48: return None s = w*h buff = b"" i = 0 while i> 16) & 0xff)) buff = buff + (b"%c" % ((argb >> 8) & 0xff)) buff = buff + (b"%c" % (argb & 0xff)) buff = buff + (b"%c" % ((argb >> 24) & 0xff)) pxbuf = GdkPixbuf.Pixbuf.new_from_data(buff, GdkPixbuf.Colorspace.RGB, True, 8, w, h, w*4) return pxbuf def get_min_size(win): """ returns the minimum window size and its resize increment """ supplied_return = ctypes.c_long(0) glob.x11.XGetWMNormalHints(glob.disp, win, ctypes.byref(glob.size_hints_return), ctypes.byref(supplied_return)) def client_msg(win, msg, d0, d1, d2, d3, d4): """ sends a client message event used to change window properties """ event = globs.XClientMessageEvent() event.type = 33 #ClientMessage event.serial = 0 event.send = True event.msgtype = glob.x11.XInternAtom(glob.disp, msg, False) event.window = win event.format = 32 event.data0 = d0 event.data1 = d1 event.data2 = d2 event.data3 = d3 event.data4 = d4 # mask is SubstructureRedirectMask | SubstructureNotifyMask (20&19) if not glob.x11.XSendEvent(glob.disp,glob.root,False, 1<<20 | 1<<19,ctypes.byref(event)): print("can't send message ", msg) # DEBUG def moveresize(win, x, y, w, h, dest_workspace): """ moves window to the users current desktop removes states like maximised and fullscreen activates the window, raises it then finally! moves and resizes it """ glob.x11.XSync(glob.disp, False) get_property(b"_NET_FRAME_EXTENTS", win, glob.XA_CARDINAL) if bool(glob.ret_pointer) == False: l,r,t,b = (0, 0, 0, 0) else: l,r,t,b = glob.ret_pointer[0], glob.ret_pointer[1], glob.ret_pointer[2], glob.ret_pointer[3] if dest_workspace < 0: get_property(b"_NET_CURRENT_DESKTOP", glob.root, glob.XA_CARDINAL) dest_workspace = glob.ret_pointer[0] ### # move myself to desktop client_msg(glob.root, b"_NET_CURRENT_DESKTOP", dest_workspace, 0, 0, 0, 0) # move window to desktop client_msg(win, b"_NET_WM_DESKTOP", dest_workspace, 0, 0, 0, 0) ### client_msg(win, b"_NET_WM_STATE", 0, glob.fscreen_atom, 0, 0, 0) client_msg(win, b"_NET_WM_STATE", 0, glob.maxv_atom,glob.maxh_atom, 0, 0) client_msg(win, b"_NET_ACTIVE_WINDOW", 0, 0, 0, 0, 0) glob.x11.XMapRaised(glob.disp, win) glob.x11.XSync(glob.disp, False) glob.x11.XMoveResizeWindow(glob.disp, win, int(x), int(y), int(w-(l+r)), int(h-(t+b))) # only interior size needs deco subtracting not position glob.x11.XSync(glob.disp, False) def maximize(win): """ moves a window to the current desktop and maximises it """ get_property(b"_NET_CURRENT_DESKTOP",glob.root,glob.XA_CARDINAL) cdt = glob.ret_pointer[0] client_msg(win, b"_NET_WM_DESKTOP", cdt, 0, 0, 0, 0) client_msg(win, b"_NET_WM_STATE", 1, glob.maxv_atom, glob.maxh_atom, 0, 0) # 1 = add glob.x11.XSync(glob.disp, False) def unmaximize(win): """ moves a window to the current desktop and 'unmaximises' it """ get_property(b"_NET_CURRENT_DESKTOP", glob.root, glob.XA_CARDINAL) cdt = glob.ret_pointer[0] client_msg(win, b"_NET_WM_DESKTOP", cdt, 0, 0, 0, 0) client_msg(win, b"_NET_WM_STATE", 0, glob.maxv_atom, glob.maxh_atom, 0, 0) # 0 = remove glob.x11.XSync(glob.disp, False) def desktop_size(): """ gets the "work area" usually space between panels """ get_property(b"_NET_WORKAREA", glob.root, glob.XA_CARDINAL) if glob.num_items.value: return glob.ret_pointer[0], glob.ret_pointer[1], glob.ret_pointer[2], glob.ret_pointer[3] return 0,0,0,0 def is_inside(p, pdim, a, adim): """Returns True if p <---> p+dim is between a <---> a+dim""" return ( (p+pdim/2 > a) and (p+pdim/2 < a+adim) ) def subtract_areas(white_area, black_area): """Returns the white_area without the black_area""" #print "white_area", white_area #print "black_area", black_area if not is_inside(black_area[0], black_area[2], white_area[0], white_area[2])\ or not is_inside(black_area[1], black_area[3], white_area[1], white_area[3]): #print "not is_inside" return white_area # ignore the desktop strut if black_area[2] > white_area[2]/2 and black_area[3] > white_area[3]/2: #print "strut ignored" return white_area # we have to understand whether the panel is top, bottom, left or right if black_area[2] < black_area[3]: # width < height => this is a left or right panel if black_area[0] == white_area[0]: #print "left panel" white_area[0] += black_area[2] white_area[2] -= black_area[2] else: #print "right panel" white_area[2] -= black_area[2] else: # width > height => this is a top or bottom panel if black_area[1] == white_area[1]: #print "top panel" white_area[1] += black_area[3] white_area[3] -= black_area[3] else: #print "bottom panel" white_area[3] -= black_area[3] return white_area def translate_coords(win, x, y): """ Bool XTranslateCoordinates(display, src_w, dest_w, src_x, src_y, dest_x_return, dest_y_return, child_return) Display *display; Window src_w, dest_w; int src_x, src_y; int *dest_x_return, *dest_y_return; Window *child_return; """ child_return = ctypes.c_ulong() dest_x_return = ctypes.c_int() dest_y_return = ctypes.c_int() glob.x11.XTranslateCoordinates(glob.disp, win, glob.root, x, y, ctypes.byref(dest_x_return), ctypes.byref(dest_y_return), ctypes.byref(child_return)) return dest_x_return.value, dest_y_return.value def enumerate_strut_windows(display, rootwindow): """Retrieve the Strut Windows (the panels)""" strut_windows = [] rootr = ctypes.c_ulong() parent = ctypes.c_ulong() children = ctypes.pointer(ctypes.c_ulong()) noOfChildren = ctypes.c_int() x_return = ctypes.c_int() y_return = ctypes.c_int() width_return = ctypes.c_int() height_return = ctypes.c_int() dummy = ctypes.c_int() get_property(b"_NET_WM_STRUT_PARTIAL", rootwindow, glob.XA_CARDINAL) if glob.num_items.value: glob.x11.XGetGeometry(display, rootwindow, ctypes.byref(dummy), ctypes.byref(x_return), ctypes.byref(y_return), ctypes.byref(width_return), ctypes.byref(height_return), ctypes.byref(dummy), ctypes.byref(dummy) ) struct_origin = translate_coords(rootwindow, x_return.value, y_return.value) strut_windows.append([struct_origin[0], struct_origin[1], width_return.value, height_return.value]) status = glob.x11.XQueryTree(display, rootwindow, ctypes.byref(rootr), ctypes.byref(parent), ctypes.byref(children), ctypes.byref(noOfChildren) ) if noOfChildren.value: for i in range(0, noOfChildren.value): ptr = ctypes.cast(children[i], ctypes.POINTER(ctypes.c_uint) ) strut_windows.extend(enumerate_strut_windows(display, children[i])) glob.x11.XFree(children) return strut_windows def get_root_screen_index(): """Get Screen Index""" xwa = globs.XWindowAttributes() glob.x11.XGetWindowAttributes(glob.disp, glob.root,ctypes.byref(xwa)) glob.x11.XScreenNumberOfScreen.argtypes = [ctypes.c_void_p] screen_index = glob.x11.XScreenNumberOfScreen(xwa.screen) return screen_index def get_process_name(p): # determine executable # we were only using just this routine from psutils so I # "borrowed" ahem it.... if p == 0: return "?" try: _exe = os.readlink("/proc/%s/exe" % p) except OSError: if not os.path.exists("/proc/%s/stat" % p): return "?" f = open("/proc/%s/stat" % p) try: _exe = f.read().split(' ')[1].replace('(', '').replace(')', '') finally: f.close() # determine name and path if os.path.isabs(_exe): path, name = os.path.split(_exe) else: path = '' name = _exe if name[0:6]=="python": f=open("/proc/%s/cmdline" % p) try: cmdp=f.read().split(chr(0)) finally: f.close() name=cmdp[1] return name # these could be replaced by one general purpose routine but make # code eleswhere easier to read... def is_window_hidden(win): """ is a window hidden ie "minimised" ? """ get_property(b"_NET_WM_STATE", win, glob.XA_ATOM) for i in range(0, glob.num_items.value): if glob.ret_pointer[i] == glob.hidden_atom: return True return False def is_window_sticky(win): """ is a window sticky ? """ get_property(b"_NET_WM_STATE", win, glob.XA_ATOM) for i in range(0, glob.num_items.value): if glob.ret_pointer[i] == glob.sticky_atom: return True return False def is_window_Vmax(win): """ is a window vertically maximised ? """ get_property(b"_NET_WM_STATE", win, glob.XA_ATOM) for i in range(0, glob.num_items.value): if glob.ret_pointer[i] == glob.maxv_atom: return True return False def is_window_Hmax(win): """ is a window horizontally maximised ? """ get_property(b"_NET_WM_STATE", win, glob.XA_ATOM) for i in range(0, glob.num_items.value): if glob.ret_pointer[i] == glob.maxh_atom: return True return False def get_undo_element_from_win_id(win_id): """From win_id to Undo Snap Element""" if is_window_Vmax(win_id) or is_window_Hmax(win_id): is_maximized = 1 else: is_maximized = 0 win_geom = get_geom(win_id) return [str(win_id), str(is_maximized), str(win_geom[0]), str(win_geom[1]), str(win_geom[2]), str(win_geom[3])] def undo_snap_write(gconf_client, undo_snap_vec): """Write Undo Snap to Disk""" undo_snap_str = "" for element in undo_snap_vec: undo_snap_str += ",".join(element) + " " undo_snap_str = undo_snap_str[:-1] gconf_client.set_string(cons.GCONF_UNDO % glob.screen_index, undo_snap_str) def dialog_info(message, parent=None): """The Info dialog""" dialog = Gtk.MessageDialog(flags=Gtk.DialogFlags.MODAL|Gtk.DialogFlags.DESTROY_WITH_PARENT, type=Gtk.MessageType.INFO, buttons=Gtk.ButtonsType.OK, message_format=message) if parent != None: dialog.set_transient_for(parent) dialog.set_title(_("Info")) dialog.run() dialog.destroy() def dialog_warning(message, parent=None): """The Warning dialog""" dialog = Gtk.MessageDialog(flags=Gtk.DialogFlags.MODAL|Gtk.DialogFlags.DESTROY_WITH_PARENT, type=Gtk.MessageType.WARNING, buttons=Gtk.ButtonsType.OK, message_format=message) if parent != None: dialog.set_transient_for(parent) dialog.set_title(_("Warning")) dialog.run() dialog.destroy() x-tile-3.3/modules/tilings.py000066400000000000000000000243451375405375400163010ustar00rootroot00000000000000# # core.py # # Copyright 2009-2020 # Giuseppe Penone , # Chris Camacho (chris_c) . # # plus many thanks to http://tronche.com/gui/x/xlib/ # and http://tripie.sweb.cz/utils/wmctrl/ # # 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. import support import cons def tile_vertically(windows_list, monitors_areas, dws): """Tile the Checked Windows Vertically""" number_of_windows = len(windows_list[0]) number_of_windows2 = len(windows_list[1]) if number_of_windows >= 2: tile_vertically_on_area(windows_list[0], monitors_areas[0][0], monitors_areas[0][1], monitors_areas[0][2], monitors_areas[0][3], dws) if number_of_windows2 >= 2: tile_vertically_on_area(windows_list[1], monitors_areas[1][0], monitors_areas[1][1], monitors_areas[1][2], monitors_areas[1][3], dws) def tile_horizontally(windows_list, monitors_areas, dws): """Tile the Checked Windows Horizontally""" number_of_windows = len(windows_list[0]) number_of_windows2 = len(windows_list[1]) if number_of_windows >= 2: tile_horizontally_on_area(windows_list[0], monitors_areas[0][0], monitors_areas[0][1], monitors_areas[0][2], monitors_areas[0][3], dws) if number_of_windows2 >= 2: tile_horizontally_on_area(windows_list[1], monitors_areas[1][0], monitors_areas[1][1], monitors_areas[1][2], monitors_areas[1][3], dws) def tile_quad(windows_list, monitors_areas, dws): """Tile the Given Windows Quad""" number_of_windows = len(windows_list[0]) number_of_windows2 = len(windows_list[1]) if number_of_windows >= 2: tile_quad_on_area(windows_list[0], monitors_areas[0][0], monitors_areas[0][1], monitors_areas[0][2], monitors_areas[0][3], dws) if number_of_windows2 >= 2: tile_quad_on_area(windows_list[1], monitors_areas[1][0], monitors_areas[1][1], monitors_areas[1][2], monitors_areas[1][3], dws) def tile_grid(rows, cols, windows_list, monitors_areas, dws): """Tile the Given Windows in a rows by cols grid""" number_of_windows = len(windows_list[0]) number_of_windows2 = len(windows_list[1]) if number_of_windows >= 2: tile_grid_on_area(rows, cols, windows_list[0], monitors_areas[0][0], monitors_areas[0][1], monitors_areas[0][2], monitors_areas[0][3], dws) if number_of_windows2 >= 2: tile_grid_on_area(rows, cols, windows_list[1], monitors_areas[1][0], monitors_areas[1][1], monitors_areas[1][2], monitors_areas[1][3], dws) def tile_triangle_up(windows_list, monitors_areas, dws): """Tile 3 Windows in Triangle Up Scheme""" number_of_windows = len(windows_list[0]) number_of_windows2 = len(windows_list[1]) if number_of_windows >= 2: tile_triangle_up_on_area(windows_list[0], monitors_areas[0][0], monitors_areas[0][1], monitors_areas[0][2], monitors_areas[0][3], dws) if number_of_windows2 >= 2: tile_triangle_up_on_area(windows_list[1], monitors_areas[1][0], monitors_areas[1][1], monitors_areas[1][2], monitors_areas[1][3], dws) def tile_triangle_down(windows_list, monitors_areas, dws): """Tile 3 Windows in Triangle Up Scheme""" number_of_windows = len(windows_list[0]) number_of_windows2 = len(windows_list[1]) if number_of_windows >= 2: tile_triangle_down_on_area(windows_list[0], monitors_areas[0][0], monitors_areas[0][1], monitors_areas[0][2], monitors_areas[0][3], dws) if number_of_windows2 >= 2: tile_triangle_down_on_area(windows_list[1], monitors_areas[1][0], monitors_areas[1][1], monitors_areas[1][2], monitors_areas[1][3], dws) def tile_triangle_left(windows_list, monitors_areas, dws): """Tile 3 Windows in Triangle Up Scheme""" number_of_windows = len(windows_list[0]) number_of_windows2 = len(windows_list[1]) if number_of_windows >= 2: tile_triangle_left_on_area(windows_list[0], monitors_areas[0][0], monitors_areas[0][1], monitors_areas[0][2], monitors_areas[0][3], dws) if number_of_windows2 >= 2: tile_triangle_left_on_area(windows_list[1], monitors_areas[1][0], monitors_areas[1][1], monitors_areas[1][2], monitors_areas[1][3], dws) def tile_triangle_right(windows_list, monitors_areas, dws): """Tile 3 Windows in Triangle Up Scheme""" number_of_windows = len(windows_list[0]) number_of_windows2 = len(windows_list[1]) if number_of_windows >= 2: tile_triangle_right_on_area(windows_list[0], monitors_areas[0][0], monitors_areas[0][1], monitors_areas[0][2], monitors_areas[0][3], dws) if number_of_windows2 >= 2: tile_triangle_right_on_area(windows_list[1], monitors_areas[1][0], monitors_areas[1][1], monitors_areas[1][2], monitors_areas[1][3], dws) def tile_vertically_on_area(windows_list, x, y, w, h, dws): """Tile the Given Windows Vertically on the Given Area""" step = (h / len(windows_list)) win_num = 0 for checked_window in windows_list: support.moveresize(checked_window, x, y+win_num*step, w , step, dws) win_num += 1 def tile_horizontally_on_area(windows_list, x, y, w, h, dws): """Tile the Given Windows Horizontally on the Given Area""" step = (w / len(windows_list)) win_num = 0 for checked_window in windows_list: support.moveresize(checked_window, x + win_num*step, y, step, h, dws) win_num += 1 def tile_quad_on_area(windows_list, x, y, w, h, dws): """Tile the Given Windows Quad on the Given Area""" if len(windows_list) > 4: windows_list = windows_list[0:4] for index,checked_window in enumerate(windows_list): if index in [1, 3]: xo = w/2 else: xo = 0 if index > 1: yo = h/2 else: yo = 0 support.moveresize(checked_window, (x + xo), (y + yo), w/2 , h/2, dws) def tile_grid_on_area(rows, cols, windows_list, x, y, w, h, dws): """Tile the Given Windows Grid on the Given Area""" if len(windows_list) > rows*cols: windows_list = windows_list[0:rows*cols] step_h = (h / rows) step_w = (w / cols) for index,checked_window in enumerate(windows_list): xo = step_w*(index%cols) yo = step_h*(index/cols) support.moveresize(checked_window, x+xo, y+yo, step_w , step_h, dws) def tile_triangle_up_on_area(windows_list, x, y, w, h, dws): """Tile 3 Windows in Triangle Up Scheme on the Given Area""" if len(windows_list) > 3: windows_list = windows_list[0:3] for index,checked_window in enumerate(windows_list): if index == 2: xo = w/2 else: xo = 0 if index > 0: yo = h/2 else: yo = 0 if index == 0: width = w else: width = w/2 support.moveresize(checked_window, (x + xo), (y + yo), width, h/2, dws) def tile_triangle_down_on_area(windows_list, x, y, w, h, dws): """Tile 3 Windows in Triangle Down Scheme on the Given Area""" if len(windows_list) > 3: windows_list = windows_list[0:3] for index,checked_window in enumerate(windows_list): if index == 1: xo = w/2 else: xo = 0 if index == 2: yo = h/2 else: yo = 0 if index == 2: width = w else: width = w/2 support.moveresize(checked_window, (x + xo), (y + yo), width, h/2, dws) def tile_triangle_left_on_area(windows_list, x, y, w, h, dws): """Tile 3 Windows in Triangle Left Scheme on the Given Area""" if len(windows_list) > 3: windows_list = windows_list[0:3] for index,checked_window in enumerate(windows_list): if index > 0: xo = w/2 else: xo = 0 if index == 2: yo = h/2 else: yo = 0 if index == 0: height = h else: height = h/2 support.moveresize(checked_window, (x + xo), (y + yo), w/2 , height, dws) def tile_triangle_right_on_area(windows_list, x, y, w, h, dws): """Tile 3 Windows in Triangle Right Scheme on the Given Area""" if len(windows_list) > 3: windows_list = windows_list[0:3] for index,checked_window in enumerate(windows_list): if index == 1: xo = w/2 else: xo = 0 if index == 2: yo = h/2 else: yo = 0 if index == 1: height = h else: height = h/2 support.moveresize(checked_window, (x + xo), (y + yo), w/2 , height, dws) x-tile-3.3/setup.py000066400000000000000000000136321375405375400143150ustar00rootroot00000000000000#!/usr/bin/env python3 # for linux install: "python3 setup.py install --prefix=/usr --exec-prefix=/usr -f" from distutils.core import setup from distutils.dist import Distribution from distutils.cmd import Command from distutils.command.install_data import install_data from distutils.command.install import install from distutils.command.build import build from distutils.dep_util import newer from distutils.log import warn, info, error from distutils.errors import DistutilsFileError import os, glob, sys, subprocess import builtins def _(transl_str): return transl_str builtins._ = _ sys.path.append(os.path.join(os.getcwd(), "modules")) import cons PO_DIR = 'locale' MO_DIR = os.path.join('build', 'mo') class XTileDist(Distribution): global_options = Distribution.global_options + [ ("without-gettext", None, "Don't build/install gettext .mo files") ] def __init__ (self, *args): self.without_gettext = False Distribution.__init__(self, *args) class BuildData(build): def run(self): build.run(self) xtile_man_file = "linux/x-tile.1" xtile_man_file_gz = xtile_man_file + ".gz" if newer(xtile_man_file, xtile_man_file_gz): if os.path.isfile(xtile_man_file_gz): os.remove(xtile_man_file_gz) import gzip f_in = open(xtile_man_file, 'rb') f_out = gzip.open(xtile_man_file_gz, 'wb') f_out.writelines(f_in) f_out.close() f_in.close() if self.distribution.without_gettext: return for po in glob.glob(os.path.join (PO_DIR, '*.po')): lang = os.path.basename(po[:-3]) mo = os.path.join(MO_DIR, lang, 'x-tile.mo') directory = os.path.dirname(mo) if not os.path.exists(directory): info('creating %s' % directory) os.makedirs(directory) if newer(po, mo): info('compiling %s -> %s' % (po, mo)) try: rc = subprocess.call(['msgfmt', '-o', mo, po]) if rc != 0: raise Warning("msgfmt returned %d" % rc) except Exception as e: error("Building gettext files failed. Try setup.py --without-gettext [build|install]") error("Error: %s" % str(e)) sys.exit(1) class Uninstall(Command): description = "Attempt an uninstall from an install --record file" user_options = [('manifest=', None, 'Installation record filename')] def initialize_options(self): self.manifest = None def finalize_options(self): pass def get_command_name(self): return 'uninstall' def run(self): f = None self.ensure_filename('manifest') try: try: if not self.manifest: raise DistutilsFileError("Pass manifest with --manifest=file") f = open(self.manifest) files = [file.strip() for file in f] except IOError as e: raise DistutilsFileError("unable to open install manifest: %s", str(e)) finally: if f: f.close() for file in files: if os.path.isfile(file) or os.path.islink(file): info("removing %s" % repr(file)) if not self.dry_run: try: os.unlink(file) except OSError as e: warn("could not delete: %s" % repr(file)) elif not os.path.isdir(file): info("skipping %s" % repr(file)) dirs = set() for file in reversed(sorted(files)): dir = os.path.dirname(file) if dir not in dirs and os.path.isdir(dir) and len(os.listdir(dir)) == 0: dirs.add(dir) # Only nuke empty Python library directories, else we could destroy # e.g. locale directories we're the only app with a .mo installed for. if dir.find("site-packages/") > 0: info("removing %s" % repr(dir)) if not self.dry_run: try: os.rmdir(dir) except OSError as e: warn("could not remove directory: %s" % str(e)) else: info("skipping empty directory %s" % repr(dir)) class Install(install): def run(self): self.distribution.scripts=['x-tile'] install.run(self) class InstallData(install_data): def run(self): self.data_files.extend(self._find_mo_files()) self.data_files.extend(self._find_desktop_file()) install_data.run(self) def _find_desktop_file(self): return [("share/applications", ["linux/x-tile.desktop"] )] def _find_mo_files(self): data_files = [] if not self.distribution.without_gettext: for mo in glob.glob(os.path.join (MO_DIR, '*', 'x-tile.mo')): lang = os.path.basename(os.path.dirname(mo)) dest = os.path.join('share', 'locale', lang, 'LC_MESSAGES') data_files.append((dest, [mo])) return data_files setup( name = "X Tile", description = "Tile the Windows Upon Your X Desktop", long_description = "Allows you to select a number of windows and tile them in different ways", version = cons.VERSION, author = "Giuseppe Penone & Chris Camacho", author_email = "giuspen@gmail.com & codifies@gmail.com", url = "http://www.giuspen.com/x-tile/", license = "GPL", data_files = [ ("share/icons/hicolor/scalable/apps", ["glade/x-tile.svg"] ), ("share/x-tile/glade", glob.glob("glade/*.*") ), ("share/x-tile/modules", glob.glob("modules/*.py") ), ("share/man/man1", ["linux/x-tile.1.gz"]) ], cmdclass={ 'build': BuildData, 'install_data': InstallData, 'install': Install, 'uninstall': Uninstall }, distclass=XTileDist ) x-tile-3.3/x-tile000077500000000000000000000100421375405375400137230ustar00rootroot00000000000000#!/usr/bin/env python3 # # x-tile # # Copyright 2009-2020 # Giuseppe Penone , # Chris Camacho (chris_c) . # # plus many thanks to http://tronche.com/gui/x/xlib/ # and http://tripie.sweb.cz/utils/wmctrl/ # # 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. import sys import os import gettext import ctypes import ctypes.util import locale import gi gi.require_version('Gtk', '3.0') from gi.repository import Gtk import builtins if os.path.isfile('modules/globs.py'): MODULES_PATH = 'modules/' else: MODULES_PATH = '/usr/share/x-tile/modules/' sys.path.append(MODULES_PATH) import cons import core import globs # language installation gconf_client = core.MockingGConf() gconf_client.add_dir(cons.GCONF_DIR) lang_str = gconf_client.get_string(cons.GCONF_LANG) if lang_str == None: gconf_client.set_string(cons.GCONF_LANG, "default") lang_str = "default" if lang_str != "default": os.environ["LANGUAGE"] = lang_str try: locale.bindtextdomain(cons.APP_NAME, cons.LOCALE_PATH) gettext.translation(cons.APP_NAME, cons.LOCALE_PATH).install() except: def _(transl_str): return transl_str builtins._ = _ builtins.glob = globs.GlobalsObject() try: libc = ctypes.cdll.LoadLibrary(ctypes.util.find_library("libc")) libc.prctl(15, cons.APP_NAME, 0, 0, 0) except: print("libc.prctl not available, the process name will be python and not x-tile") if len(sys.argv) < 2: sys.argv.append("w") arg = sys.argv[1] if arg == "w": x = core.XTile(core.InfoModel()) x.launch_application() x.reload_windows_list() Gtk.main() elif arg in ("-V", "--version"): print("X Tile {}".format(cons.VERSION)) elif arg in cons.CMD_LINE_ACTIONS: x = core.XTile(core.InfoModel()) x.launch_application() x.cmd_line_only = True if arg not in ["z", "i", "y"]: x.reload_windows_list() x.flag_all_rows() if arg == "z": x.undo_tiling() elif arg == "i": x.invert_tiling() elif arg == "y": x.cycle_tiling() elif arg == "v": x.tile_vertically() elif arg == "h": x.tile_horizontally() elif arg == "u": x.tile_triangle_up() elif arg == "d": x.tile_triangle_down() elif arg == "l": x.tile_triangle_left() elif arg == "r": x.tile_triangle_right() elif arg == "q": x.tile_quad() elif arg == "g": wins = len(x.store.get_checked_windows_list(True)[0]) if wins == 1: x.maximize_checked_windows() elif wins: try: rows, cols = ([max(0, min(wins, int(a))) for a in sys.argv[2:4]] + [0, 0])[:2] except: print("bad arguments") exit(1) if not rows and not cols: for rows, cols in ((r, c) for r in range(1, 100) for c in [r, r + 1]): if rows * cols >= wins: break elif not rows: rows = (wins + cols - 1) // cols elif not cols: cols = (wins + rows - 1) // rows cons.GRID_ROWS, cons.GRID_COLS = rows, cols x.tile_grid() elif arg == "1": x.tile_custom_1_run() elif arg == "2": x.tile_custom_2_run() elif arg == "m": x.maximize_checked_windows() elif arg == "M": x.unmaximize_checked_windows() elif arg == "c": x.close_checked_windows() else: # -h print(cons.HELP_TEXT)