├── debian ├── compat ├── rules ├── changelog ├── control └── copyright ├── .gitignore ├── create_ppa_package.sh ├── create_debian_package.sh ├── glade ├── toolbar.png ├── checkbox_unchecked.svg ├── checkbox_checked.svg ├── help-contents.svg ├── quit-app.svg ├── maximize-checked-windows.svg ├── unmaximize-checked-windows.svg ├── tile-vertically.svg ├── tile-horizontally.svg ├── tile-triangle-left.svg ├── tile-triangle-up.svg └── tile-triangle-down.svg ├── locale ├── i18n_create_lang_file.sh ├── i18n_update_pot.sh ├── i18n_pot_to_updated_po.py ├── i18n_po_to_mo.py ├── x-tile.pot ├── zh_TW.po └── zh_CN.po ├── linux ├── x-tile.desktop └── x-tile.1 ├── license ├── create_sources_folder.py ├── x-tile ├── setup.py └── modules ├── globs.py └── tilings.py /debian/compat: -------------------------------------------------------------------------------- 1 | 9 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *.mo 3 | linux/x-tile.1.gz 4 | -------------------------------------------------------------------------------- /create_ppa_package.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | debuild -S -sa -i -I 4 | -------------------------------------------------------------------------------- /create_debian_package.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | dpkg-buildpackage -b -d -tc 4 | -------------------------------------------------------------------------------- /glade/toolbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giuspen/x-tile/HEAD/glade/toolbar.png -------------------------------------------------------------------------------- /debian/rules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | 3 | %: 4 | dh $@ --buildsystem=pybuild 5 | 6 | override_dh_clean: 7 | rm -rf build/ 8 | dh_clean 9 | -------------------------------------------------------------------------------- /locale/i18n_create_lang_file.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if [ $# -eq 1 ] 4 | then 5 | msginit --input=x-tile.pot --locale=$1 6 | else 7 | echo "Please provide the language code as one and only argument (e.g. 'es' for Spanish)" 8 | fi 9 | -------------------------------------------------------------------------------- /debian/changelog: -------------------------------------------------------------------------------- 1 | x-tile (3.3-0) focal; urgency=low 2 | 3 | * fixed tile grid crash after porting to Gtk3 4 | * added command line options to print version -V/--version (#8) 5 | 6 | -- Giuseppe Penone Sat, 14 Nov 2020 21:57:56 +0000 7 | -------------------------------------------------------------------------------- /locale/i18n_update_pot.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd .. 4 | 5 | intltool-extract --type=gettext/glade glade/x-tile.glade 6 | 7 | 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 8 | -------------------------------------------------------------------------------- /linux/x-tile.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=X Tile 3 | Comment=Tile the Windows Upon your X Desktop 4 | Exec=x-tile 5 | Icon=x-tile 6 | Terminal=false 7 | Type=Application 8 | StartupNotify=true 9 | Categories=GTK;Utility; 10 | Name[en_US]=x-tile 11 | Keywords=tile,tiling,sort,organize,windows 12 | -------------------------------------------------------------------------------- /glade/checkbox_unchecked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | -------------------------------------------------------------------------------- /locale/i18n_pot_to_updated_po.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import os, subprocess 4 | 5 | APP_NAME = "x-tile" 6 | LOCALE_DIR = os.getcwd() 7 | 8 | 9 | for dirpath, dirnames, filenames in os.walk(LOCALE_DIR): 10 | for filename in filenames: 11 | if dirpath == LOCALE_DIR: 12 | nation, ext = os.path.splitext(filename) 13 | if ext != ".po": continue 14 | bash_string = "msgmerge -U %s.po %s.pot" % (nation, APP_NAME) 15 | subprocess.call(bash_string, shell=True) 16 | subprocess.call("rm *.po~", shell=True) 17 | -------------------------------------------------------------------------------- /debian/control: -------------------------------------------------------------------------------- 1 | Source: x-tile 2 | Section: utils 3 | Priority: optional 4 | Maintainer: Giuseppe Penone 5 | Build-Depends: 6 | debhelper (>= 9), 7 | dh-python, 8 | gettext, 9 | python3 (>=3.0), 10 | python3-gi, 11 | python3-gi-cairo, 12 | gir1.2-gtk-3.0 13 | X-Python-Version: >= 3.0 14 | Standards-Version: 3.9.5 15 | Homepage: https://www.giuspen.net/x-tile/ 16 | Vcs-Git: https://github.com/giuspen/x-tile.git 17 | Vcs-Browser: https://github.com/giuspen/x-tile 18 | 19 | Package: x-tile 20 | Architecture: all 21 | Depends: 22 | python3-gi, 23 | python3-gi-cairo, 24 | gir1.2-gtk-3.0 25 | Conflicts: 26 | x-tile-ng 27 | Description: X Tile 28 | Allows you to select a number of windows and tile them in different ways 29 | -------------------------------------------------------------------------------- /glade/checkbox_checked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 15 | 17 | -------------------------------------------------------------------------------- /license: -------------------------------------------------------------------------------- 1 | 2 | This program is free software; you can redistribute it and/or modify 3 | it under the terms of the GNU General Public License as published by 4 | the Free Software Foundation; either version 2 of the License, or 5 | (at your option) any later version. 6 | 7 | This program is distributed in the hope that it will be useful, 8 | but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | GNU General Public License for more details. 11 | 12 | You should have received a copy of the GNU General Public License 13 | along with this program; if not, write to the Free Software 14 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 15 | MA 02110-1301, USA. 16 | 17 | -------------------------------------------------------------------------------- /locale/i18n_po_to_mo.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import os, subprocess 4 | 5 | APP_NAME = "x-tile" 6 | LOCALE_DIR = os.getcwd() 7 | 8 | 9 | for dirpath, dirnames, filenames in os.walk(LOCALE_DIR): 10 | for filename in filenames: 11 | if dirpath == LOCALE_DIR: 12 | nation, ext = os.path.splitext(filename) 13 | if ext != ".po": continue 14 | nation_dir = os.path.join(LOCALE_DIR, nation) 15 | if not os.path.isdir(nation_dir): os.mkdir(nation_dir) 16 | messages_dir = os.path.join(nation_dir, "LC_MESSAGES") 17 | if not os.path.isdir(messages_dir): os.mkdir(messages_dir) 18 | bash_string = "msgfmt --output-file=%s/LC_MESSAGES/%s.mo %s.po" % (nation, APP_NAME, nation) 19 | subprocess.call(bash_string, shell=True) 20 | -------------------------------------------------------------------------------- /create_sources_folder.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import os, sys, shutil, glob, builtins 4 | 5 | SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__)) 6 | MODULES_DIR = os.path.join(SCRIPT_DIR, "modules") 7 | sys.path.insert(0, MODULES_DIR) 8 | 9 | builtins.SHARE_PATH = SCRIPT_DIR 10 | import cons 11 | 12 | BLACKLIST = [".git", ".gitignore"] 13 | 14 | DEST_DIR = os.path.join(os.path.dirname(SCRIPT_DIR), "x-tile-"+cons.VERSION) 15 | if len(sys.argv) > 1: 16 | DEST_DIR += "+r" + sys.argv[1] 17 | #print DEST_DIR 18 | 19 | if not os.path.isdir(DEST_DIR): 20 | os.mkdir(DEST_DIR) 21 | 22 | for pycfilepath in glob.glob(os.path.join(MODULES_DIR, "*.pyc")): 23 | os.remove(pycfilepath) 24 | 25 | for element in os.listdir(SCRIPT_DIR): 26 | if not element in BLACKLIST: 27 | src_abspath = os.path.join(SCRIPT_DIR, element) 28 | dst_abspath = os.path.join(DEST_DIR, element) 29 | if os.path.isdir(src_abspath): 30 | shutil.copytree(src_abspath, dst_abspath) 31 | else: 32 | shutil.copy2(src_abspath, dst_abspath) 33 | -------------------------------------------------------------------------------- /debian/copyright: -------------------------------------------------------------------------------- 1 | Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ 2 | Upstream-Name: x-tile 3 | Source: https://www.giuspen.net/x-tile/ 4 | 5 | Files: * 6 | Copyright: 2009-2022 Giuseppe Penone 7 | License: GPL-2.0+ 8 | 9 | License: GPL-2.0+ 10 | This package is free software; you can redistribute it and/or modify 11 | it under the terms of the GNU General Public License as published by 12 | the Free Software Foundation; either version 2 of the License, or 13 | (at your option) any later version. 14 | . 15 | This package is distributed in the hope that it will be useful, 16 | but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | GNU General Public License for more details. 19 | . 20 | You should have received a copy of the GNU General Public License 21 | along with this program. If not, see 22 | . 23 | On Debian systems, the complete text of the GNU General 24 | Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". 25 | -------------------------------------------------------------------------------- /linux/x-tile.1: -------------------------------------------------------------------------------- 1 | .TH X-TILE "1" "July 2022" "x-tile 3.3" 2 | .SH NAME 3 | X-Tile \- an application that allows you to select a number of windows and tile them in different ways 4 | .SH SYNOPSIS 5 | \fBx-tile [option]\fP 6 | .SH DESCRIPTION 7 | X-Tile works on any X desktop (gnome, kde, xfce, lxde…). 8 | 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. 9 | .SH OPTIONS 10 | .IP \fBw\fP 11 | open the x-tile main window without using the panel 12 | .IP \fBz\fP 13 | undo the latest tiling operation 14 | .IP \fBf\fP 15 | tile all opened windows vertically 16 | .IP \fBh\fP 17 | tile all opened windows horizontally 18 | .IP \fBu\fP 19 | tile all opened windows triangle-up 20 | .IP \fBd\fP 21 | tile all opened windows triangle-down 22 | .IP \fBl\fP 23 | tile all opened windows triangle-left 24 | .IP \fBr\fP 25 | tile all opened windows triangle-right 26 | .IP \fBq\fP 27 | quad tile all opened windows 28 | .TP 29 | .B \fBg = g 0 = g 0 0\fP 30 | tile all opened windows in a grid with automatic rows and columns 31 | .TP 32 | .B \fBg rows = g rows 0\fP 33 | tile all opened windows in a grid with given rows and automatic columns 34 | .TP 35 | .B \fBg 0 cols\fP 36 | tile all opened windows in a grid with automatic rows and given columns 37 | .TP 38 | .B \fBg rows cols\fP 39 | tile all opened windows in a grid with given rows and columns 40 | .IP \fB1\fP 41 | custom tile 1 all opened windows 42 | .IP \fB2\fP 43 | custom tile 2 all opened windows 44 | .IP \fBi\fP 45 | invert the order of the latest tiling operation 46 | .IP \fBy\fP 47 | cycle the order of the latest tiling operation 48 | .IP \fBm\fP 49 | maximize all opened windows 50 | .IP \fBM\fP 51 | unmaximize all opened windows 52 | .IP \fBc\fP 53 | close all opened windows 54 | .IP \fB-V\fP 55 | print x-tile version 56 | .SH AUTHORS 57 | X-Tile was written by Giuseppe Penone and and Chris Camacho . 58 | .SH SEE ALSO 59 | https://www.giuspen.net/x-tile 60 | .PP 61 | This manual page was written by Giuseppe Penone , 62 | for the Debian project (and may be used by others). 63 | -------------------------------------------------------------------------------- /x-tile: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # 3 | # x-tile 4 | # 5 | # Copyright 2009-2020 6 | # Giuseppe Penone , 7 | # Chris Camacho (chris_c) . 8 | # 9 | # plus many thanks to http://tronche.com/gui/x/xlib/ 10 | # and http://tripie.sweb.cz/utils/wmctrl/ 11 | # 12 | # This program is free software; you can redistribute it and/or modify 13 | # it under the terms of the GNU General Public License as published by 14 | # the Free Software Foundation; either version 2 of the License, or 15 | # (at your option) any later version. 16 | # 17 | # This program is distributed in the hope that it will be useful, 18 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | # GNU General Public License for more details. 21 | # 22 | # You should have received a copy of the GNU General Public License 23 | # along with this program; if not, write to the Free Software 24 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 25 | # MA 02110-1301, USA. 26 | 27 | import sys 28 | import os 29 | import gettext 30 | import ctypes 31 | import ctypes.util 32 | import locale 33 | import gi 34 | gi.require_version('Gtk', '3.0') 35 | from gi.repository import Gtk 36 | import builtins 37 | 38 | if os.path.isfile('modules/globs.py'): MODULES_PATH = 'modules/' 39 | else: MODULES_PATH = '/usr/share/x-tile/modules/' 40 | sys.path.append(MODULES_PATH) 41 | import cons 42 | import core 43 | import globs 44 | 45 | # language installation 46 | gconf_client = core.MockingGConf() 47 | gconf_client.add_dir(cons.GCONF_DIR) 48 | lang_str = gconf_client.get_string(cons.GCONF_LANG) 49 | if lang_str == None: 50 | gconf_client.set_string(cons.GCONF_LANG, "default") 51 | lang_str = "default" 52 | if lang_str != "default": os.environ["LANGUAGE"] = lang_str 53 | try: 54 | locale.bindtextdomain(cons.APP_NAME, cons.LOCALE_PATH) 55 | gettext.translation(cons.APP_NAME, cons.LOCALE_PATH).install() 56 | except: 57 | def _(transl_str): 58 | return transl_str 59 | builtins._ = _ 60 | 61 | builtins.glob = globs.GlobalsObject() 62 | 63 | try: 64 | libc = ctypes.cdll.LoadLibrary(ctypes.util.find_library("libc")) 65 | libc.prctl(15, cons.APP_NAME, 0, 0, 0) 66 | except: print("libc.prctl not available, the process name will be python and not x-tile") 67 | 68 | if len(sys.argv) < 2: sys.argv.append("w") 69 | 70 | arg = sys.argv[1] 71 | if arg == "w": 72 | x = core.XTile(core.InfoModel()) 73 | x.launch_application() 74 | x.reload_windows_list() 75 | Gtk.main() 76 | elif arg in ("-V", "--version"): 77 | print("X Tile {}".format(cons.VERSION)) 78 | elif arg in cons.CMD_LINE_ACTIONS: 79 | x = core.XTile(core.InfoModel()) 80 | x.launch_application() 81 | x.cmd_line_only = True 82 | if arg not in ["z", "i", "y"]: 83 | x.reload_windows_list() 84 | x.flag_all_rows() 85 | if arg == "z": x.undo_tiling() 86 | elif arg == "i": x.invert_tiling() 87 | elif arg == "y": x.cycle_tiling() 88 | elif arg == "v": x.tile_vertically() 89 | elif arg == "h": x.tile_horizontally() 90 | elif arg == "u": x.tile_triangle_up() 91 | elif arg == "d": x.tile_triangle_down() 92 | elif arg == "l": x.tile_triangle_left() 93 | elif arg == "r": x.tile_triangle_right() 94 | elif arg == "q": x.tile_quad() 95 | elif arg == "g": 96 | wins = len(x.store.get_checked_windows_list(True)[0]) 97 | if wins == 1: 98 | x.maximize_checked_windows() 99 | elif wins: 100 | try: 101 | rows, cols = ([max(0, min(wins, int(a))) for a in sys.argv[2:4]] + [0, 0])[:2] 102 | except: 103 | print("bad arguments") 104 | exit(1) 105 | if not rows and not cols: 106 | for rows, cols in ((r, c) for r in range(1, 100) for c in [r, r + 1]): 107 | if rows * cols >= wins: 108 | break 109 | elif not rows: 110 | rows = (wins + cols - 1) // cols 111 | elif not cols: 112 | cols = (wins + rows - 1) // rows 113 | cons.GRID_ROWS, cons.GRID_COLS = rows, cols 114 | x.tile_grid() 115 | elif arg == "1": x.tile_custom_1_run() 116 | elif arg == "2": x.tile_custom_2_run() 117 | elif arg == "m": x.maximize_checked_windows() 118 | elif arg == "M": x.unmaximize_checked_windows() 119 | elif arg == "c": x.close_checked_windows() 120 | else: # -h 121 | print(cons.HELP_TEXT) 122 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | # for linux install: "python3 setup.py install --prefix=/usr --exec-prefix=/usr -f" 4 | 5 | from distutils.core import setup 6 | from distutils.dist import Distribution 7 | from distutils.cmd import Command 8 | from distutils.command.install_data import install_data 9 | from distutils.command.install import install 10 | from distutils.command.build import build 11 | from distutils.dep_util import newer 12 | from distutils.log import warn, info, error 13 | from distutils.errors import DistutilsFileError 14 | 15 | import os, glob, sys, subprocess 16 | import builtins 17 | def _(transl_str): 18 | return transl_str 19 | builtins._ = _ 20 | sys.path.append(os.path.join(os.getcwd(), "modules")) 21 | import cons 22 | 23 | PO_DIR = 'locale' 24 | MO_DIR = os.path.join('build', 'mo') 25 | 26 | 27 | class XTileDist(Distribution): 28 | global_options = Distribution.global_options + [ 29 | ("without-gettext", None, "Don't build/install gettext .mo files") ] 30 | 31 | def __init__ (self, *args): 32 | self.without_gettext = False 33 | Distribution.__init__(self, *args) 34 | 35 | 36 | class BuildData(build): 37 | def run(self): 38 | build.run(self) 39 | xtile_man_file = "linux/x-tile.1" 40 | xtile_man_file_gz = xtile_man_file + ".gz" 41 | if newer(xtile_man_file, xtile_man_file_gz): 42 | if os.path.isfile(xtile_man_file_gz): os.remove(xtile_man_file_gz) 43 | import gzip 44 | f_in = open(xtile_man_file, 'rb') 45 | f_out = gzip.open(xtile_man_file_gz, 'wb') 46 | f_out.writelines(f_in) 47 | f_out.close() 48 | f_in.close() 49 | if self.distribution.without_gettext: return 50 | for po in glob.glob(os.path.join (PO_DIR, '*.po')): 51 | lang = os.path.basename(po[:-3]) 52 | mo = os.path.join(MO_DIR, lang, 'x-tile.mo') 53 | directory = os.path.dirname(mo) 54 | if not os.path.exists(directory): 55 | info('creating %s' % directory) 56 | os.makedirs(directory) 57 | if newer(po, mo): 58 | info('compiling %s -> %s' % (po, mo)) 59 | try: 60 | rc = subprocess.call(['msgfmt', '-o', mo, po]) 61 | if rc != 0: raise Warning("msgfmt returned %d" % rc) 62 | except Exception as e: 63 | error("Building gettext files failed. Try setup.py --without-gettext [build|install]") 64 | error("Error: %s" % str(e)) 65 | sys.exit(1) 66 | 67 | 68 | class Uninstall(Command): 69 | description = "Attempt an uninstall from an install --record file" 70 | user_options = [('manifest=', None, 'Installation record filename')] 71 | 72 | def initialize_options(self): 73 | self.manifest = None 74 | 75 | def finalize_options(self): 76 | pass 77 | 78 | def get_command_name(self): 79 | return 'uninstall' 80 | 81 | def run(self): 82 | f = None 83 | self.ensure_filename('manifest') 84 | try: 85 | try: 86 | if not self.manifest: 87 | raise DistutilsFileError("Pass manifest with --manifest=file") 88 | f = open(self.manifest) 89 | files = [file.strip() for file in f] 90 | except IOError as e: 91 | raise DistutilsFileError("unable to open install manifest: %s", str(e)) 92 | finally: 93 | if f: f.close() 94 | for file in files: 95 | if os.path.isfile(file) or os.path.islink(file): 96 | info("removing %s" % repr(file)) 97 | if not self.dry_run: 98 | try: os.unlink(file) 99 | except OSError as e: 100 | warn("could not delete: %s" % repr(file)) 101 | elif not os.path.isdir(file): 102 | info("skipping %s" % repr(file)) 103 | dirs = set() 104 | for file in reversed(sorted(files)): 105 | dir = os.path.dirname(file) 106 | if dir not in dirs and os.path.isdir(dir) and len(os.listdir(dir)) == 0: 107 | dirs.add(dir) 108 | # Only nuke empty Python library directories, else we could destroy 109 | # e.g. locale directories we're the only app with a .mo installed for. 110 | if dir.find("site-packages/") > 0: 111 | info("removing %s" % repr(dir)) 112 | if not self.dry_run: 113 | try: os.rmdir(dir) 114 | except OSError as e: 115 | warn("could not remove directory: %s" % str(e)) 116 | else: info("skipping empty directory %s" % repr(dir)) 117 | 118 | 119 | class Install(install): 120 | def run(self): 121 | self.distribution.scripts=['x-tile'] 122 | install.run(self) 123 | 124 | 125 | class InstallData(install_data): 126 | def run(self): 127 | self.data_files.extend(self._find_mo_files()) 128 | self.data_files.extend(self._find_desktop_file()) 129 | install_data.run(self) 130 | 131 | def _find_desktop_file(self): 132 | return [("share/applications", ["linux/x-tile.desktop"] )] 133 | 134 | def _find_mo_files(self): 135 | data_files = [] 136 | if not self.distribution.without_gettext: 137 | for mo in glob.glob(os.path.join (MO_DIR, '*', 'x-tile.mo')): 138 | lang = os.path.basename(os.path.dirname(mo)) 139 | dest = os.path.join('share', 'locale', lang, 'LC_MESSAGES') 140 | data_files.append((dest, [mo])) 141 | return data_files 142 | 143 | 144 | setup( 145 | name = "X Tile", 146 | description = "Tile the Windows Upon Your X Desktop", 147 | long_description = "Allows you to select a number of windows and tile them in different ways", 148 | version = cons.VERSION, 149 | author = "Giuseppe Penone & Chris Camacho", 150 | author_email = "giuspen@gmail.com & codifies@gmail.com", 151 | packages=[], 152 | url = "http://www.giuspen.net/x-tile/", 153 | license = "GPL", 154 | data_files = [ 155 | ("share/icons/hicolor/scalable/apps", ["glade/x-tile.svg"] ), 156 | ("share/x-tile/glade", glob.glob("glade/*.*") ), 157 | ("share/x-tile/modules", glob.glob("modules/*.py") ), 158 | ("share/man/man1", ["linux/x-tile.1.gz"]) ], 159 | cmdclass={ 160 | 'build': BuildData, 161 | 'install_data': InstallData, 162 | 'install': Install, 163 | 'uninstall': Uninstall 164 | }, 165 | distclass=XTileDist 166 | ) 167 | -------------------------------------------------------------------------------- /glade/help-contents.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 13 | 15 | 19 | 23 | 24 | 26 | 30 | 34 | 35 | 37 | 41 | 45 | 49 | 53 | 54 | 56 | 60 | 64 | 65 | 74 | 84 | 93 | 103 | 104 | 108 | 112 | 116 | 120 | 124 | 125 | -------------------------------------------------------------------------------- /modules/globs.py: -------------------------------------------------------------------------------- 1 | # 2 | # globs.py 3 | # 4 | # Copyright 2009-2020 5 | # Giuseppe Penone , 6 | # Chris Camacho (chris_c) . 7 | # 8 | # plus many thanks to http://tronche.com/gui/x/xlib/ 9 | # and http://tripie.sweb.cz/utils/wmctrl/ 10 | # 11 | # This program is free software; you can redistribute it and/or modify 12 | # it under the terms of the GNU General Public License as published by 13 | # the Free Software Foundation; either version 2 of the License, or 14 | # (at your option) any later version. 15 | # 16 | # This program is distributed in the hope that it will be useful, 17 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | # GNU General Public License for more details. 20 | # 21 | # You should have received a copy of the GNU General Public License 22 | # along with this program; if not, write to the Free Software 23 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 24 | # MA 02110-1301, USA. 25 | 26 | from gi.repository import Gtk 27 | from gi.repository import Gdk 28 | import ctypes 29 | import ctypes.util 30 | import cons 31 | import support 32 | import core 33 | 34 | class XSizeHints(ctypes.Structure): 35 | """ XSizeHints structure (xlib) """ 36 | _fields_ = [("flags", ctypes.c_long), 37 | ("x", ctypes.c_int), # Obsolete 38 | ("y", ctypes.c_int), # Obsolete 39 | ("width", ctypes.c_int), # Obsolete 40 | ("height", ctypes.c_int), # Obsolete 41 | ("min_width", ctypes.c_int), 42 | ("min_height", ctypes.c_int), 43 | ("max_width", ctypes.c_int), 44 | ("max_height", ctypes.c_int), 45 | ("width_inc", ctypes.c_int), 46 | ("height_inc", ctypes.c_int), 47 | ("min_asp_width", ctypes.c_int), 48 | ("min_asp_height", ctypes.c_int), 49 | ("max_asp_width", ctypes.c_int), 50 | ("max_asp_height", ctypes.c_int), 51 | ("base_width", ctypes.c_int), 52 | ("base_height", ctypes.c_int), 53 | ("win_gravity", ctypes.c_int)] 54 | 55 | class XWindowAttributes(ctypes.Structure): 56 | """ XWindowAttributes structure (xlib) """ 57 | _fields_ = [("x", ctypes.c_int32), 58 | ("y", ctypes.c_int32), 59 | ("width", ctypes.c_int32), 60 | ("height", ctypes.c_int32), 61 | ("border_width", ctypes.c_int32), 62 | ("depth", ctypes.c_int32), 63 | ("visual", ctypes.c_ulong), 64 | ("root", ctypes.c_ulong), 65 | ("class", ctypes.c_int32), 66 | ("bit_gravity", ctypes.c_int32), 67 | ("win_gravity", ctypes.c_int32), 68 | ("backing_store", ctypes.c_int32), 69 | ("backing_planes", ctypes.c_ulong), 70 | ("backing_pixel", ctypes.c_ulong), 71 | ("save_under", ctypes.c_int32), 72 | ("colourmap", ctypes.c_ulong), 73 | ("mapinstalled", ctypes.c_uint32), 74 | ("map_state", ctypes.c_uint32), 75 | ("all_event_masks", ctypes.c_ulong), 76 | ("your_event_mask", ctypes.c_ulong), 77 | ("do_not_propagate_mask", ctypes.c_ulong), 78 | ("override_redirect", ctypes.c_int32), 79 | ("screen", ctypes.c_ulong)] 80 | 81 | class XClientMessageEvent(ctypes.Structure): 82 | """ XClientMessageEvent structure (xlib) """ 83 | _fields_ = [("type", ctypes.c_int), 84 | ("serial", ctypes.c_long), 85 | ("send", ctypes.c_byte), 86 | ("display", ctypes.c_long), 87 | ("window", ctypes.c_long), 88 | ("msgtype", ctypes.c_long), 89 | ("format", ctypes.c_int), 90 | ("data0", ctypes.c_long), 91 | ("data1", ctypes.c_long), 92 | ("data2", ctypes.c_long), 93 | ("data3", ctypes.c_long), 94 | ("data4", ctypes.c_long)] 95 | 96 | 97 | class GlobalsObject(object): 98 | """Global Variables""" 99 | 100 | def __init__(self): 101 | """Instantiate global vars""" 102 | support.glob = self 103 | # x11 reference to xlib library display and root window globals 104 | self.x11 = ctypes.CDLL(ctypes.util.find_library("X11")) 105 | self.x11.XOpenDisplay.restype = ctypes.c_void_p 106 | self.disp = ctypes.c_void_p(self.x11.XOpenDisplay(0)) 107 | self.root = self.x11.XDefaultRootWindow(self.disp) 108 | # property atoms for moveresize 109 | # assigned once here so they are not recreated 110 | # every time moveresize is called 111 | self.fscreen_atom = self.x11.XInternAtom(self.disp, b"_NET_WM_STATE_FULLSCREEN", False) 112 | self.maxv_atom = self.x11.XInternAtom(self.disp, b"_NET_WM_STATE_MAXIMIZED_VERT", False) 113 | self.maxh_atom = self.x11.XInternAtom(self.disp, b"_NET_WM_STATE_MAXIMIZED_HORZ", False) 114 | self.hidden_atom = self.x11.XInternAtom(self.disp, b"_NET_WM_STATE_HIDDEN", False) 115 | self.sticky_atom = self.x11.XInternAtom(self.disp, b"_NET_WM_STATE_STICKY", False) 116 | self.str_atom = self.x11.XInternAtom(self.disp, b"UTF8_STRING", False) 117 | # GLOBAL returns for getwindowproperty 118 | self.ret_type = ctypes.c_long() 119 | self.ret_format = ctypes.c_long() 120 | self.num_items = ctypes.c_long() 121 | self.bytes_after = ctypes.c_long() 122 | self.ret_pointer = ctypes.pointer(ctypes.c_long()) 123 | # xlib global "defines" for some standard atoms 124 | self.XA_CARDINAL = 6 125 | self.XA_WINDOW = 33 126 | self.XA_STRING = 31 127 | self.XA_ATOM = 4 128 | # GLOBAL size hints return 129 | self.size_hints_return = XSizeHints() 130 | self.screen_index = support.get_root_screen_index() 131 | self.str2_atom = self.x11.XInternAtom(self.disp, b"STRING", False) 132 | self.num_monitors = Gdk.Screen.get_default().get_n_monitors() 133 | self.is_compiz_running = support.is_compiz_running() 134 | self.desktop_width, self.desktop_height = support.get_desktop_width_n_height() 135 | 136 | def read_monitors_areas(self): 137 | """Read Monitor(s) Area(s)""" 138 | strut_windows = support.enumerate_strut_windows(self.disp, self.root) 139 | #print strut_windows 140 | screen = Gdk.Screen.get_default() 141 | self.num_monitors = screen.get_n_monitors() 142 | self.monitors_areas = [] 143 | drawing_area_size = [0, 0] 144 | for num_monitor in range(self.num_monitors): 145 | rect = screen.get_monitor_geometry(num_monitor) 146 | self.monitors_areas.append([rect.x, rect.y, rect.width, rect.height]) 147 | if rect.x + rect.width > drawing_area_size[0]: drawing_area_size[0] = rect.x + rect.width 148 | if rect.y + rect.height > drawing_area_size[1]: drawing_area_size[1] = rect.y + rect.height 149 | for strut_win in strut_windows: 150 | self.monitors_areas[-1] = support.subtract_areas(self.monitors_areas[-1], strut_win) 151 | #print self.monitors_areas 152 | self.drawing_rect = (0, 0, drawing_area_size[0]/cons.DRAW_SCALE, drawing_area_size[1]/cons.DRAW_SCALE) 153 | -------------------------------------------------------------------------------- /glade/quit-app.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 12 | 14 | 16 | 20 | 24 | 28 | 29 | 37 | 47 | 49 | 53 | 57 | 58 | 68 | 70 | 74 | 78 | 79 | 88 | 90 | 94 | 98 | 102 | 106 | 107 | 117 | 119 | 123 | 127 | 128 | 137 | 138 | 140 | 144 | 148 | 155 | 163 | 170 | 171 | 172 | 181 | 190 | 194 | 198 | 202 | 203 | 207 | 211 | 215 | 216 | 217 | 218 | -------------------------------------------------------------------------------- /modules/tilings.py: -------------------------------------------------------------------------------- 1 | # 2 | # core.py 3 | # 4 | # Copyright 2009-2020 5 | # Giuseppe Penone , 6 | # Chris Camacho (chris_c) . 7 | # 8 | # plus many thanks to http://tronche.com/gui/x/xlib/ 9 | # and http://tripie.sweb.cz/utils/wmctrl/ 10 | # 11 | # This program is free software; you can redistribute it and/or modify 12 | # it under the terms of the GNU General Public License as published by 13 | # the Free Software Foundation; either version 2 of the License, or 14 | # (at your option) any later version. 15 | # 16 | # This program is distributed in the hope that it will be useful, 17 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | # GNU General Public License for more details. 20 | # 21 | # You should have received a copy of the GNU General Public License 22 | # along with this program; if not, write to the Free Software 23 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 24 | # MA 02110-1301, USA. 25 | 26 | import support 27 | import cons 28 | 29 | def tile_vertically(windows_list, monitors_areas, dws): 30 | """Tile the Checked Windows Vertically""" 31 | number_of_windows = len(windows_list[0]) 32 | number_of_windows2 = len(windows_list[1]) 33 | if number_of_windows >= 2: 34 | tile_vertically_on_area(windows_list[0], 35 | monitors_areas[0][0], monitors_areas[0][1], 36 | monitors_areas[0][2], monitors_areas[0][3], 37 | dws) 38 | if number_of_windows2 >= 2: 39 | tile_vertically_on_area(windows_list[1], 40 | monitors_areas[1][0], monitors_areas[1][1], 41 | monitors_areas[1][2], monitors_areas[1][3], 42 | dws) 43 | 44 | def tile_horizontally(windows_list, monitors_areas, dws): 45 | """Tile the Checked Windows Horizontally""" 46 | number_of_windows = len(windows_list[0]) 47 | number_of_windows2 = len(windows_list[1]) 48 | if number_of_windows >= 2: 49 | tile_horizontally_on_area(windows_list[0], 50 | monitors_areas[0][0], monitors_areas[0][1], 51 | monitors_areas[0][2], monitors_areas[0][3], 52 | dws) 53 | if number_of_windows2 >= 2: 54 | tile_horizontally_on_area(windows_list[1], 55 | monitors_areas[1][0], monitors_areas[1][1], 56 | monitors_areas[1][2], monitors_areas[1][3], 57 | dws) 58 | 59 | def tile_quad(windows_list, monitors_areas, dws): 60 | """Tile the Given Windows Quad""" 61 | number_of_windows = len(windows_list[0]) 62 | number_of_windows2 = len(windows_list[1]) 63 | if number_of_windows >= 2: 64 | tile_quad_on_area(windows_list[0], 65 | monitors_areas[0][0], monitors_areas[0][1], 66 | monitors_areas[0][2], monitors_areas[0][3], 67 | dws) 68 | if number_of_windows2 >= 2: 69 | tile_quad_on_area(windows_list[1], 70 | monitors_areas[1][0], monitors_areas[1][1], 71 | monitors_areas[1][2], monitors_areas[1][3], 72 | dws) 73 | 74 | def tile_grid(rows, cols, windows_list, monitors_areas, dws): 75 | """Tile the Given Windows in a rows by cols grid""" 76 | number_of_windows = len(windows_list[0]) 77 | number_of_windows2 = len(windows_list[1]) 78 | if number_of_windows >= 2: 79 | tile_grid_on_area(rows, cols, windows_list[0], 80 | monitors_areas[0][0], monitors_areas[0][1], 81 | monitors_areas[0][2], monitors_areas[0][3], 82 | dws) 83 | if number_of_windows2 >= 2: 84 | tile_grid_on_area(rows, cols, windows_list[1], 85 | monitors_areas[1][0], monitors_areas[1][1], 86 | monitors_areas[1][2], monitors_areas[1][3], 87 | dws) 88 | 89 | def tile_triangle_up(windows_list, monitors_areas, dws): 90 | """Tile 3 Windows in Triangle Up Scheme""" 91 | number_of_windows = len(windows_list[0]) 92 | number_of_windows2 = len(windows_list[1]) 93 | if number_of_windows >= 2: 94 | tile_triangle_up_on_area(windows_list[0], 95 | monitors_areas[0][0], monitors_areas[0][1], 96 | monitors_areas[0][2], monitors_areas[0][3], 97 | dws) 98 | if number_of_windows2 >= 2: 99 | tile_triangle_up_on_area(windows_list[1], 100 | monitors_areas[1][0], monitors_areas[1][1], 101 | monitors_areas[1][2], monitors_areas[1][3], 102 | dws) 103 | 104 | def tile_triangle_down(windows_list, monitors_areas, dws): 105 | """Tile 3 Windows in Triangle Up Scheme""" 106 | number_of_windows = len(windows_list[0]) 107 | number_of_windows2 = len(windows_list[1]) 108 | if number_of_windows >= 2: 109 | tile_triangle_down_on_area(windows_list[0], 110 | monitors_areas[0][0], monitors_areas[0][1], 111 | monitors_areas[0][2], monitors_areas[0][3], 112 | dws) 113 | if number_of_windows2 >= 2: 114 | tile_triangle_down_on_area(windows_list[1], 115 | monitors_areas[1][0], monitors_areas[1][1], 116 | monitors_areas[1][2], monitors_areas[1][3], 117 | dws) 118 | 119 | def tile_triangle_left(windows_list, monitors_areas, dws): 120 | """Tile 3 Windows in Triangle Up Scheme""" 121 | number_of_windows = len(windows_list[0]) 122 | number_of_windows2 = len(windows_list[1]) 123 | if number_of_windows >= 2: 124 | tile_triangle_left_on_area(windows_list[0], 125 | monitors_areas[0][0], monitors_areas[0][1], 126 | monitors_areas[0][2], monitors_areas[0][3], 127 | dws) 128 | if number_of_windows2 >= 2: 129 | tile_triangle_left_on_area(windows_list[1], 130 | monitors_areas[1][0], monitors_areas[1][1], 131 | monitors_areas[1][2], monitors_areas[1][3], 132 | dws) 133 | 134 | def tile_triangle_right(windows_list, monitors_areas, dws): 135 | """Tile 3 Windows in Triangle Up Scheme""" 136 | number_of_windows = len(windows_list[0]) 137 | number_of_windows2 = len(windows_list[1]) 138 | if number_of_windows >= 2: 139 | tile_triangle_right_on_area(windows_list[0], 140 | monitors_areas[0][0], monitors_areas[0][1], 141 | monitors_areas[0][2], monitors_areas[0][3], 142 | dws) 143 | if number_of_windows2 >= 2: 144 | tile_triangle_right_on_area(windows_list[1], 145 | monitors_areas[1][0], monitors_areas[1][1], 146 | monitors_areas[1][2], monitors_areas[1][3], 147 | dws) 148 | 149 | def tile_vertically_on_area(windows_list, x, y, w, h, dws): 150 | """Tile the Given Windows Vertically on the Given Area""" 151 | step = (h / len(windows_list)) 152 | win_num = 0 153 | for checked_window in windows_list: 154 | support.moveresize(checked_window, x, y+win_num*step, w , step, dws) 155 | win_num += 1 156 | 157 | def tile_horizontally_on_area(windows_list, x, y, w, h, dws): 158 | """Tile the Given Windows Horizontally on the Given Area""" 159 | step = (w / len(windows_list)) 160 | win_num = 0 161 | for checked_window in windows_list: 162 | support.moveresize(checked_window, x + win_num*step, y, step, h, dws) 163 | win_num += 1 164 | 165 | def tile_quad_on_area(windows_list, x, y, w, h, dws): 166 | """Tile the Given Windows Quad on the Given Area""" 167 | if len(windows_list) > 4: windows_list = windows_list[0:4] 168 | for index,checked_window in enumerate(windows_list): 169 | if index in [1, 3]: xo = w/2 170 | else: xo = 0 171 | if index > 1: yo = h/2 172 | else: yo = 0 173 | support.moveresize(checked_window, (x + xo), (y + yo), w/2 , h/2, dws) 174 | 175 | def tile_grid_on_area(rows, cols, windows_list, x, y, w, h, dws): 176 | """Tile the Given Windows Grid on the Given Area""" 177 | if len(windows_list) > rows*cols: windows_list = windows_list[0:rows*cols] 178 | step_h = (h / rows) 179 | step_w = (w / cols) 180 | for index,checked_window in enumerate(windows_list): 181 | xo = step_w*(index%cols) 182 | yo = step_h*(index/cols) 183 | support.moveresize(checked_window, x+xo, y+yo, step_w , step_h, dws) 184 | 185 | def tile_triangle_up_on_area(windows_list, x, y, w, h, dws): 186 | """Tile 3 Windows in Triangle Up Scheme on the Given Area""" 187 | if len(windows_list) > 3: windows_list = windows_list[0:3] 188 | for index,checked_window in enumerate(windows_list): 189 | if index == 2: xo = w/2 190 | else: xo = 0 191 | if index > 0: yo = h/2 192 | else: yo = 0 193 | if index == 0: width = w 194 | else: width = w/2 195 | support.moveresize(checked_window, (x + xo), (y + yo), width, h/2, dws) 196 | 197 | def tile_triangle_down_on_area(windows_list, x, y, w, h, dws): 198 | """Tile 3 Windows in Triangle Down Scheme on the Given Area""" 199 | if len(windows_list) > 3: windows_list = windows_list[0:3] 200 | for index,checked_window in enumerate(windows_list): 201 | if index == 1: xo = w/2 202 | else: xo = 0 203 | if index == 2: yo = h/2 204 | else: yo = 0 205 | if index == 2: width = w 206 | else: width = w/2 207 | support.moveresize(checked_window, (x + xo), (y + yo), width, h/2, dws) 208 | 209 | def tile_triangle_left_on_area(windows_list, x, y, w, h, dws): 210 | """Tile 3 Windows in Triangle Left Scheme on the Given Area""" 211 | if len(windows_list) > 3: windows_list = windows_list[0:3] 212 | for index,checked_window in enumerate(windows_list): 213 | if index > 0: xo = w/2 214 | else: xo = 0 215 | if index == 2: yo = h/2 216 | else: yo = 0 217 | if index == 0: height = h 218 | else: height = h/2 219 | support.moveresize(checked_window, (x + xo), (y + yo), w/2 , height, dws) 220 | 221 | def tile_triangle_right_on_area(windows_list, x, y, w, h, dws): 222 | """Tile 3 Windows in Triangle Right Scheme on the Given Area""" 223 | if len(windows_list) > 3: windows_list = windows_list[0:3] 224 | for index,checked_window in enumerate(windows_list): 225 | if index == 1: xo = w/2 226 | else: xo = 0 227 | if index == 2: yo = h/2 228 | else: yo = 0 229 | if index == 1: height = h 230 | else: height = h/2 231 | support.moveresize(checked_window, (x + xo), (y + yo), w/2 , height, dws) 232 | -------------------------------------------------------------------------------- /glade/maximize-checked-windows.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 23 | 25 | 26 | 28 | image/svg+xml 29 | 31 | View Fullscreen 32 | 33 | 34 | 35 | 36 | 37 | 39 | http://jimmac.musichall.cz 40 | 41 | 42 | Jakub Steiner 43 | 44 | 45 | 46 | 47 | window 48 | maximize 49 | fullscreen 50 | view 51 | 52 | 53 | 54 | 56 | 58 | 60 | 62 | 64 | 66 | 68 | 69 | 70 | 71 | 88 | 90 | 101 | 104 | 108 | 112 | 113 | 124 | 126 | 130 | 134 | 138 | 139 | 149 | 151 | 155 | 159 | 160 | 162 | 166 | 170 | 171 | 181 | 191 | 192 | 196 | 203 | 208 | 213 | 214 | 223 | 232 | 241 | 246 | 251 | 256 | 261 | 262 | -------------------------------------------------------------------------------- /glade/unmaximize-checked-windows.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 23 | 25 | 26 | 28 | image/svg+xml 29 | 31 | View Fullscreen 32 | 33 | 34 | 35 | 36 | 37 | 39 | http://jimmac.musichall.cz 40 | 41 | 42 | Jakub Steiner 43 | 44 | 45 | 46 | 47 | window 48 | maximize 49 | fullscreen 50 | view 51 | 52 | 53 | 54 | 56 | 58 | 60 | 62 | 64 | 66 | 68 | 69 | 70 | 71 | 88 | 90 | 97 | 108 | 111 | 115 | 119 | 120 | 131 | 133 | 137 | 141 | 145 | 146 | 156 | 158 | 162 | 166 | 167 | 169 | 173 | 177 | 178 | 188 | 198 | 199 | 203 | 210 | 215 | 220 | 221 | 230 | 239 | 248 | 253 | 258 | 263 | 268 | 269 | -------------------------------------------------------------------------------- /glade/tile-vertically.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 24 | 45 | 59 | 60 | 62 | 69 | 71 | 75 | 79 | 80 | 82 | 86 | 90 | 91 | 93 | 97 | 101 | 102 | 112 | 122 | 132 | 142 | 152 | 162 | 172 | 182 | 192 | 202 | 212 | 222 | 232 | 242 | 252 | 253 | 278 | 282 | 286 | 298 | 299 | 301 | 302 | 304 | image/svg+xml 305 | 307 | 308 | 309 | Lapo Calamandrei 310 | 311 | 312 | Window Manager 313 | 314 | 315 | 316 | 318 | 319 | 321 | 323 | 325 | 327 | 329 | 331 | 333 | 334 | 335 | 336 | 341 | 343 | 346 | 355 | 360 | 369 | 370 | 373 | 382 | 387 | 396 | 397 | 398 | 399 | 400 | -------------------------------------------------------------------------------- /glade/tile-horizontally.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 24 | 46 | 60 | 61 | 63 | 70 | 72 | 76 | 80 | 81 | 83 | 87 | 91 | 92 | 94 | 98 | 102 | 103 | 113 | 123 | 133 | 143 | 153 | 163 | 173 | 183 | 193 | 203 | 213 | 223 | 233 | 243 | 253 | 254 | 279 | 283 | 287 | 299 | 300 | 302 | 303 | 305 | image/svg+xml 306 | 308 | 309 | 310 | Lapo Calamandrei 311 | 312 | 313 | Window Manager 314 | 315 | 316 | 317 | 319 | 320 | 322 | 324 | 326 | 328 | 330 | 332 | 334 | 335 | 336 | 337 | 342 | 345 | 348 | 357 | 362 | 371 | 372 | 375 | 384 | 389 | 398 | 399 | 400 | 401 | 402 | -------------------------------------------------------------------------------- /locale/x-tile.pot: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: PACKAGE VERSION\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2012-09-07 23:14+0200\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: \n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | 20 | #: modules/core.py:307 21 | msgid "Use Drag and Drop to Sort the Rows" 22 | msgstr "" 23 | 24 | #: modules/core.py:347 25 | msgid "The New Language will be Available Only After Restarting X Tile" 26 | msgstr "" 27 | 28 | #: modules/core.py:369 glade/x-tile.glade.h:5 29 | msgid "Tile the Windows Upon your X Desktop" 30 | msgstr "" 31 | 32 | #: modules/core.py:583 33 | msgid "The Size of the Toolbar Icons is already at the Maximum Value" 34 | msgstr "" 35 | 36 | #: modules/core.py:593 37 | msgid "The Size of the Toolbar Icons is already at the Minimum Value" 38 | msgstr "" 39 | 40 | #: modules/core.py:703 modules/core.py:711 modules/core.py:719 41 | msgid "No Row is Selected" 42 | msgstr "" 43 | 44 | #: modules/core.py:741 modules/core.py:775 45 | msgid "No Application Selected!" 46 | msgstr "" 47 | 48 | #: modules/core.py:855 49 | msgid "Grid Details" 50 | msgstr "" 51 | 52 | #: modules/core.py:863 53 | msgid "Rows" 54 | msgstr "" 55 | 56 | #: modules/core.py:870 57 | msgid "Columns" 58 | msgstr "" 59 | 60 | #: modules/core.py:956 modules/core.py:964 modules/core.py:974 61 | msgid "No Windows Checked" 62 | msgstr "" 63 | 64 | #: modules/core.py:1014 modules/core.py:1027 65 | msgid "Edit Custom Tile Settings" 66 | msgstr "" 67 | 68 | #: modules/core.py:1174 69 | msgid "" 70 | "The Custom Tile 1 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 1 " 71 | "Set'" 72 | msgstr "" 73 | 74 | #: modules/core.py:1192 75 | msgid "" 76 | "The Custom Tile 2 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 2 " 77 | "Set'" 78 | msgstr "" 79 | 80 | #: modules/cons.py:268 81 | msgid "_File" 82 | msgstr "" 83 | 84 | #: modules/cons.py:269 85 | msgid "_Edit" 86 | msgstr "" 87 | 88 | #: modules/cons.py:270 89 | msgid "_Row" 90 | msgstr "" 91 | 92 | #: modules/cons.py:271 93 | msgid "_Tile" 94 | msgstr "" 95 | 96 | #: modules/cons.py:272 97 | msgid "_View" 98 | msgstr "" 99 | 100 | #: modules/cons.py:273 modules/cons.py:308 101 | msgid "_Help" 102 | msgstr "" 103 | 104 | #: modules/cons.py:275 105 | msgid "_Filter" 106 | msgstr "" 107 | 108 | #: modules/cons.py:275 109 | msgid "Filter Rows" 110 | msgstr "" 111 | 112 | #: modules/cons.py:276 113 | msgid "Selected by _Default" 114 | msgstr "" 115 | 116 | #: modules/cons.py:276 glade/x-tile.glade.h:59 117 | msgid "Rows to be Selected by Default" 118 | msgstr "" 119 | 120 | #: modules/cons.py:277 121 | msgid "_Reload" 122 | msgstr "" 123 | 124 | #: modules/cons.py:277 125 | msgid "Reload the Windows List" 126 | msgstr "" 127 | 128 | #: modules/cons.py:278 129 | msgid "_Quit" 130 | msgstr "" 131 | 132 | #: modules/cons.py:278 133 | msgid "Quit the Application" 134 | msgstr "" 135 | 136 | #: modules/cons.py:279 137 | msgid "_Exit X Tile" 138 | msgstr "" 139 | 140 | #: modules/cons.py:279 141 | msgid "Exit from X Tile" 142 | msgstr "" 143 | 144 | #: modules/cons.py:280 145 | msgid "Show/Hide _X Tile" 146 | msgstr "" 147 | 148 | #: modules/cons.py:280 149 | msgid "Toggle Show/Hide X Tile" 150 | msgstr "" 151 | 152 | #: modules/cons.py:281 153 | msgid "_Preferences" 154 | msgstr "" 155 | 156 | #: modules/cons.py:281 157 | msgid "Open the Preferences Window" 158 | msgstr "" 159 | 160 | #: modules/cons.py:282 161 | msgid "Select _All" 162 | msgstr "" 163 | 164 | #: modules/cons.py:282 165 | msgid "Select All the Windows in the List" 166 | msgstr "" 167 | 168 | #: modules/cons.py:283 169 | msgid "Deselect A_ll" 170 | msgstr "" 171 | 172 | #: modules/cons.py:283 173 | msgid "Deselect All the Windows in the List" 174 | msgstr "" 175 | 176 | #: modules/cons.py:284 177 | msgid "Tile _Vertically" 178 | msgstr "" 179 | 180 | #: modules/cons.py:284 181 | msgid "Tile Vertically The Checked Windows" 182 | msgstr "" 183 | 184 | #: modules/cons.py:285 185 | msgid "Tile _Horizontally" 186 | msgstr "" 187 | 188 | #: modules/cons.py:285 189 | msgid "Tile Horizontally The Checked Windows" 190 | msgstr "" 191 | 192 | #: modules/cons.py:286 193 | msgid "_Triangle Up" 194 | msgstr "" 195 | 196 | #: modules/cons.py:286 197 | msgid "Tile Triangle Up The Checked Windows" 198 | msgstr "" 199 | 200 | #: modules/cons.py:287 201 | msgid "Triangle _Down" 202 | msgstr "" 203 | 204 | #: modules/cons.py:287 205 | msgid "Tile Triangle Down The Checked Windows" 206 | msgstr "" 207 | 208 | #: modules/cons.py:288 209 | msgid "Triangle _Left" 210 | msgstr "" 211 | 212 | #: modules/cons.py:288 213 | msgid "Tile Triangle Left The Checked Windows" 214 | msgstr "" 215 | 216 | #: modules/cons.py:289 217 | msgid "Triangle _Right" 218 | msgstr "" 219 | 220 | #: modules/cons.py:289 221 | msgid "Tile Triangle Right The Checked Windows" 222 | msgstr "" 223 | 224 | #: modules/cons.py:290 225 | msgid "Tile _Quad" 226 | msgstr "" 227 | 228 | #: modules/cons.py:290 229 | msgid "Tile into 4 quadrants The Checked Windows" 230 | msgstr "" 231 | 232 | #: modules/cons.py:291 233 | msgid "Tile _Grid" 234 | msgstr "" 235 | 236 | #: modules/cons.py:291 237 | msgid "Tile into an Arbitrary Grid The Checked Windows" 238 | msgstr "" 239 | 240 | #: modules/cons.py:292 241 | msgid "Custom Tile 1 _Set" 242 | msgstr "" 243 | 244 | #: modules/cons.py:292 245 | msgid "Edit Custom Tile 1 Settings" 246 | msgstr "" 247 | 248 | #: modules/cons.py:293 249 | msgid "Custom Tile _1 Run" 250 | msgstr "" 251 | 252 | #: modules/cons.py:293 253 | msgid "Execute Custom Tile 1" 254 | msgstr "" 255 | 256 | #: modules/cons.py:294 257 | msgid "Custom Tile 2 S_et" 258 | msgstr "" 259 | 260 | #: modules/cons.py:294 261 | msgid "Edit Custom Tile 2 Settings" 262 | msgstr "" 263 | 264 | #: modules/cons.py:295 265 | msgid "Custom Tile _2 Run" 266 | msgstr "" 267 | 268 | #: modules/cons.py:295 269 | msgid "Execute Custom Tile 2" 270 | msgstr "" 271 | 272 | #: modules/cons.py:296 modules/cons.py:325 273 | msgid "U_ndo Tiling" 274 | msgstr "" 275 | 276 | #: modules/cons.py:296 modules/cons.py:325 277 | msgid "Undo the Latest Tiling Operation" 278 | msgstr "" 279 | 280 | #: modules/cons.py:297 modules/cons.py:324 281 | msgid "_Invert Tiling Order" 282 | msgstr "" 283 | 284 | #: modules/cons.py:297 modules/cons.py:324 285 | msgid "Invert the Order of the Latest Tiling Operation" 286 | msgstr "" 287 | 288 | #: modules/cons.py:298 modules/cons.py:326 289 | msgid "C_ycle Tiling Order" 290 | msgstr "" 291 | 292 | #: modules/cons.py:298 modules/cons.py:326 293 | msgid "Cycle the Order of the Latest Tiling Operation" 294 | msgstr "" 295 | 296 | #: modules/cons.py:299 297 | msgid "_Maximize Windows" 298 | msgstr "" 299 | 300 | #: modules/cons.py:299 301 | msgid "Maximize The Checked Windows" 302 | msgstr "" 303 | 304 | #: modules/cons.py:300 305 | msgid "_Unmaximize Windows" 306 | msgstr "" 307 | 308 | #: modules/cons.py:300 309 | msgid "Unmaximize The Checked Windows" 310 | msgstr "" 311 | 312 | #: modules/cons.py:301 313 | msgid "_Close Windows" 314 | msgstr "" 315 | 316 | #: modules/cons.py:301 317 | msgid "Close The Checked Windows" 318 | msgstr "" 319 | 320 | #: modules/cons.py:302 321 | msgid "Move _Up" 322 | msgstr "" 323 | 324 | #: modules/cons.py:302 325 | msgid "Move the Selected Row Up" 326 | msgstr "" 327 | 328 | #: modules/cons.py:303 329 | msgid "Move _Down" 330 | msgstr "" 331 | 332 | #: modules/cons.py:303 333 | msgid "Move the Selected Row Down" 334 | msgstr "" 335 | 336 | #: modules/cons.py:304 337 | msgid "_Remove" 338 | msgstr "" 339 | 340 | #: modules/cons.py:304 341 | msgid "Remove the Selected Row" 342 | msgstr "" 343 | 344 | #: modules/cons.py:305 345 | msgid "Show/Hide _Toolbar" 346 | msgstr "" 347 | 348 | #: modules/cons.py:305 349 | msgid "Toggle Show/Hide Toolbar" 350 | msgstr "" 351 | 352 | #: modules/cons.py:306 353 | msgid "_Increase Toolbar Icons Size" 354 | msgstr "" 355 | 356 | #: modules/cons.py:306 357 | msgid "Increase the Size of the Toolbar Icons" 358 | msgstr "" 359 | 360 | #: modules/cons.py:307 361 | msgid "_Decrease Toolbar Icons Size" 362 | msgstr "" 363 | 364 | #: modules/cons.py:307 365 | msgid "Decrease the Size of the Toolbar Icons" 366 | msgstr "" 367 | 368 | #: modules/cons.py:308 369 | msgid "X Tile Project Home Page" 370 | msgstr "" 371 | 372 | #: modules/cons.py:309 modules/cons.py:310 373 | msgid "_About" 374 | msgstr "" 375 | 376 | #: modules/cons.py:309 modules/cons.py:310 glade/x-tile.glade.h:1 377 | msgid "About X Tile" 378 | msgstr "" 379 | 380 | #: modules/cons.py:311 381 | msgid "_Close All" 382 | msgstr "" 383 | 384 | #: modules/cons.py:311 385 | msgid "Close All Windows" 386 | msgstr "" 387 | 388 | #: modules/cons.py:312 389 | msgid "_Unmaximize All" 390 | msgstr "" 391 | 392 | #: modules/cons.py:312 393 | msgid "Unmaximize All Windows" 394 | msgstr "" 395 | 396 | #: modules/cons.py:313 397 | msgid "_Maximize All" 398 | msgstr "" 399 | 400 | #: modules/cons.py:313 401 | msgid "Maximize All Windows" 402 | msgstr "" 403 | 404 | #: modules/cons.py:314 405 | msgid "Tile All _Quad" 406 | msgstr "" 407 | 408 | #: modules/cons.py:314 409 | msgid "Tile All Windows Quad" 410 | msgstr "" 411 | 412 | #: modules/cons.py:315 413 | msgid "Tile All Triangle _Down" 414 | msgstr "" 415 | 416 | #: modules/cons.py:315 417 | msgid "Tile All Windows Triangle Down" 418 | msgstr "" 419 | 420 | #: modules/cons.py:316 421 | msgid "Tile All Triangle _Up" 422 | msgstr "" 423 | 424 | #: modules/cons.py:316 425 | msgid "Tile All Windows Triangle Up" 426 | msgstr "" 427 | 428 | #: modules/cons.py:317 429 | msgid "Tile All Triangle _Right" 430 | msgstr "" 431 | 432 | #: modules/cons.py:317 433 | msgid "Tile All Windows Triangle Right" 434 | msgstr "" 435 | 436 | #: modules/cons.py:318 437 | msgid "Tile All Triangle _Left" 438 | msgstr "" 439 | 440 | #: modules/cons.py:318 441 | msgid "Tile All Windows Triangle Left" 442 | msgstr "" 443 | 444 | #: modules/cons.py:319 445 | msgid "Tile All Custom _2" 446 | msgstr "" 447 | 448 | #: modules/cons.py:319 449 | msgid "Tile All Windows Custom 2" 450 | msgstr "" 451 | 452 | #: modules/cons.py:320 453 | msgid "Tile All Custom _1" 454 | msgstr "" 455 | 456 | #: modules/cons.py:320 457 | msgid "Tile All Windows Custom 1" 458 | msgstr "" 459 | 460 | #: modules/cons.py:321 461 | msgid "Tile All _Grid" 462 | msgstr "" 463 | 464 | #: modules/cons.py:321 465 | msgid "Tile All Windows Grid" 466 | msgstr "" 467 | 468 | #: modules/cons.py:322 469 | msgid "Tile All _Horizontally" 470 | msgstr "" 471 | 472 | #: modules/cons.py:322 473 | msgid "Tile All Windows Horizontally" 474 | msgstr "" 475 | 476 | #: modules/cons.py:323 477 | msgid "Tile All _Vertically" 478 | msgstr "" 479 | 480 | #: modules/cons.py:323 481 | msgid "Tile All Windows Vertically" 482 | msgstr "" 483 | 484 | #: glade/x-tile.glade.h:2 485 | msgid "" 486 | "Copyright © 2009-2012\n" 487 | "Giuseppe Penone \n" 488 | "Chris Camacho " 489 | msgstr "" 490 | 491 | #: glade/x-tile.glade.h:6 492 | msgid "http://www.giuspen.com/x-tile/" 493 | msgstr "" 494 | 495 | #: glade/x-tile.glade.h:7 496 | msgid "" 497 | "\n" 498 | "This program is free software; you can redistribute it and/or modify\n" 499 | "it under the terms of the GNU General Public License as published by\n" 500 | "the Free Software Foundation; either version 2 of the License, or\n" 501 | "(at your option) any later version.\n" 502 | "\n" 503 | "This program is distributed in the hope that it will be useful,\n" 504 | "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" 505 | "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" 506 | "GNU General Public License for more details.\n" 507 | "\n" 508 | "You should have received a copy of the GNU General Public License\n" 509 | "along with this program; if not, write to the Free Software\n" 510 | "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n" 511 | "MA 02110-1301, USA." 512 | msgstr "" 513 | 514 | #: glade/x-tile.glade.h:22 515 | msgid "" 516 | "Chinese Simplified (zh_CN) Khiyuan Fan \n" 517 | "Chinese Traditional (zh_TW) Yan-ren Tsai \n" 518 | "Czech (cs) Pavel Fric \n" 520 | "French (fr) Ludovic Troisi \n" 521 | "German (de) Jöran Zeller \n" 522 | "Italian (it) Giuseppe Penone \n" 523 | "Polish (pl) Dominik Wójt \n" 524 | "Russian (ru) Andriy Kovtun " 525 | msgstr "" 526 | 527 | #: glade/x-tile.glade.h:31 528 | msgid "Preferences" 529 | msgstr "" 530 | 531 | #: glade/x-tile.glade.h:32 532 | msgid "Do Not List Minimized Windows" 533 | msgstr "" 534 | 535 | #: glade/x-tile.glade.h:33 536 | msgid "Only Current Workspace" 537 | msgstr "" 538 | 539 | #: glade/x-tile.glade.h:34 540 | msgid "Enable System Tray Docking" 541 | msgstr "" 542 | 543 | #: glade/x-tile.glade.h:35 544 | msgid "Start Minimized in the System Tray" 545 | msgstr "" 546 | 547 | #: glade/x-tile.glade.h:36 548 | msgid "Use AppIndicator for Docking" 549 | msgstr "" 550 | 551 | #: glade/x-tile.glade.h:37 552 | msgid "Show Toolbar" 553 | msgstr "" 554 | 555 | #: glade/x-tile.glade.h:38 556 | msgid " Language " 557 | msgstr "" 558 | 559 | #: glade/x-tile.glade.h:39 560 | msgid "Override Monitor 1 Tiling Area" 561 | msgstr "" 562 | 563 | #: glade/x-tile.glade.h:40 564 | msgid "X" 565 | msgstr "" 566 | 567 | #: glade/x-tile.glade.h:41 568 | msgid "Y" 569 | msgstr "" 570 | 571 | #: glade/x-tile.glade.h:42 572 | msgid "Position" 573 | msgstr "" 574 | 575 | #: glade/x-tile.glade.h:43 576 | msgid "Width" 577 | msgstr "" 578 | 579 | #: glade/x-tile.glade.h:44 580 | msgid "Height" 581 | msgstr "" 582 | 583 | #: glade/x-tile.glade.h:45 584 | msgid "Size" 585 | msgstr "" 586 | 587 | #: glade/x-tile.glade.h:46 588 | msgid "Override Monitor 2 Tiling Area" 589 | msgstr "" 590 | 591 | #: glade/x-tile.glade.h:47 592 | msgid "Close" 593 | msgstr "" 594 | 595 | #: glade/x-tile.glade.h:48 596 | msgid "Cancel" 597 | msgstr "" 598 | 599 | #: glade/x-tile.glade.h:49 600 | msgid "OK" 601 | msgstr "" 602 | 603 | #: glade/x-tile.glade.h:50 604 | msgid "Custom Tiling Layout" 605 | msgstr "" 606 | 607 | #: glade/x-tile.glade.h:51 608 | msgid "1) Tile Some Windows Manually" 609 | msgstr "" 610 | 611 | #: glade/x-tile.glade.h:52 612 | msgid "2) Select Them in the X Tile Windows List" 613 | msgstr "" 614 | 615 | #: glade/x-tile.glade.h:53 616 | msgid "3) Click the Update Button" 617 | msgstr "" 618 | 619 | #: glade/x-tile.glade.h:54 620 | msgid "Update" 621 | msgstr "" 622 | 623 | #: glade/x-tile.glade.h:55 624 | msgid "Rows to Filter" 625 | msgstr "" 626 | 627 | #: glade/x-tile.glade.h:56 628 | msgid "Add an Application Filter" 629 | msgstr "" 630 | 631 | #: glade/x-tile.glade.h:57 632 | msgid "Remove an Application Filter" 633 | msgstr "" 634 | 635 | #: glade/x-tile.glade.h:58 636 | msgid "Add Row" 637 | msgstr "" 638 | 639 | #: glade/x-tile.glade.h:60 640 | msgid "X Tile" 641 | msgstr "" 642 | 643 | #: glade/x-tile.glade.h:61 644 | msgid "Set Destination Workspace" 645 | msgstr "" 646 | 647 | #: glade/x-tile.glade.h:62 648 | msgid "Exit After Tile" 649 | msgstr "" 650 | -------------------------------------------------------------------------------- /locale/zh_TW.po: -------------------------------------------------------------------------------- 1 | # Chinese translations for PACKAGE package 2 | # traditional Chinese translation for PACKAGE. 3 | # Copyright (C) 2010 THE PACKAGE'S COPYRIGHT HOLDER 4 | # This file is distributed under the same license as the PACKAGE package. 5 | # Automatically generated, 2010. 6 | # Yan-ren Tsai , 2010, 2011, 2012. 7 | # 8 | msgid "" 9 | msgstr "" 10 | "Project-Id-Version: 2.3\n" 11 | "Report-Msgid-Bugs-To: \n" 12 | "POT-Creation-Date: 2012-09-07 23:14+0200\n" 13 | "PO-Revision-Date: 2012-09-08 05:53+0800\n" 14 | "Last-Translator: Yan-ren Tsai \n" 15 | "Language-Team: 漢語 \n" 16 | "Language: \n" 17 | "MIME-Version: 1.0\n" 18 | "Content-Type: text/plain; charset=UTF-8\n" 19 | "Content-Transfer-Encoding: 8bits\n" 20 | "Plural-Forms: nplurals=2; plural=(n!=1);\n" 21 | 22 | #: modules/core.py:307 23 | msgid "Use Drag and Drop to Sort the Rows" 24 | msgstr "使用拖拉來排序列" 25 | 26 | #: modules/core.py:347 27 | msgid "The New Language will be Available Only After Restarting X Tile" 28 | msgstr "新的語言在重新啟動 X Tile 後才會生效。" 29 | 30 | #: modules/core.py:369 glade/x-tile.glade.h:5 31 | msgid "Tile the Windows Upon your X Desktop" 32 | msgstr "在你的X桌面上排列視窗" 33 | 34 | #: modules/core.py:583 35 | msgid "The Size of the Toolbar Icons is already at the Maximum Value" 36 | msgstr "工具列圖示的尺寸已經是最大的了。" 37 | 38 | #: modules/core.py:593 39 | msgid "The Size of the Toolbar Icons is already at the Minimum Value" 40 | msgstr "工具列圖示的尺寸已經是最小的了。" 41 | 42 | #: modules/core.py:703 modules/core.py:711 modules/core.py:719 43 | msgid "No Row is Selected" 44 | msgstr "沒有選定任何列" 45 | 46 | #: modules/core.py:741 modules/core.py:775 47 | msgid "No Application Selected!" 48 | msgstr "沒有選擇任何應用程式!" 49 | 50 | #: modules/core.py:855 51 | msgid "Grid Details" 52 | msgstr "格框詳情" 53 | 54 | #: modules/core.py:863 55 | msgid "Rows" 56 | msgstr "列" 57 | 58 | #: modules/core.py:870 59 | msgid "Columns" 60 | msgstr "欄" 61 | 62 | #: modules/core.py:956 modules/core.py:964 modules/core.py:974 63 | msgid "No Windows Checked" 64 | msgstr "沒選擇視窗" 65 | 66 | #: modules/core.py:1014 modules/core.py:1027 67 | msgid "Edit Custom Tile Settings" 68 | msgstr "編輯自訂排列設定" 69 | 70 | #: modules/core.py:1174 71 | msgid "" 72 | "The Custom Tile 1 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 1 " 73 | "Set'" 74 | msgstr "自訂排列1尚未設定:點擊選單項目 '排列->自訂排列1' 進行設定。" 75 | 76 | #: modules/core.py:1192 77 | msgid "" 78 | "The Custom Tile 2 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 2 " 79 | "Set'" 80 | msgstr "自訂排列2尚未設定:點擊選單項目 '排列->自訂排列2' 進行設定。" 81 | 82 | #: modules/cons.py:268 83 | msgid "_File" 84 | msgstr "檔案 (_F)" 85 | 86 | #: modules/cons.py:269 87 | msgid "_Edit" 88 | msgstr "編輯 (_E)" 89 | 90 | #: modules/cons.py:270 91 | msgid "_Row" 92 | msgstr "列(_R)" 93 | 94 | #: modules/cons.py:271 95 | msgid "_Tile" 96 | msgstr "排列 (_T)" 97 | 98 | #: modules/cons.py:272 99 | msgid "_View" 100 | msgstr "檢視 (_V)" 101 | 102 | #: modules/cons.py:273 modules/cons.py:308 103 | msgid "_Help" 104 | msgstr "求助 (_H)" 105 | 106 | #: modules/cons.py:275 107 | msgid "_Filter" 108 | msgstr "篩選 (_F)" 109 | 110 | #: modules/cons.py:275 111 | msgid "Filter Rows" 112 | msgstr "篩選列" 113 | 114 | #: modules/cons.py:276 115 | msgid "Selected by _Default" 116 | msgstr "預設選定的" 117 | 118 | #: modules/cons.py:276 glade/x-tile.glade.h:59 119 | msgid "Rows to be Selected by Default" 120 | msgstr "預設選定的列" 121 | 122 | #: modules/cons.py:277 123 | msgid "_Reload" 124 | msgstr "重新載入" 125 | 126 | #: modules/cons.py:277 127 | msgid "Reload the Windows List" 128 | msgstr "重新載入視窗列表" 129 | 130 | #: modules/cons.py:278 131 | msgid "_Quit" 132 | msgstr "離開 (_Q)" 133 | 134 | #: modules/cons.py:278 135 | msgid "Quit the Application" 136 | msgstr "離開應用程式" 137 | 138 | #: modules/cons.py:279 139 | msgid "_Exit X Tile" 140 | msgstr "離開X Tile(_E)" 141 | 142 | #: modules/cons.py:279 143 | msgid "Exit from X Tile" 144 | msgstr "從X Tile離開" 145 | 146 | #: modules/cons.py:280 147 | msgid "Show/Hide _X Tile" 148 | msgstr "顯示/隱藏 X Tile (_X)" 149 | 150 | #: modules/cons.py:280 151 | msgid "Toggle Show/Hide X Tile" 152 | msgstr "切換顯示/隱藏 X Tile" 153 | 154 | #: modules/cons.py:281 155 | msgid "_Preferences" 156 | msgstr "偏好設定 (_P)" 157 | 158 | #: modules/cons.py:281 159 | msgid "Open the Preferences Window" 160 | msgstr "開啟偏好設定視窗" 161 | 162 | #: modules/cons.py:282 163 | msgid "Select _All" 164 | msgstr "選擇全部 (_A)" 165 | 166 | #: modules/cons.py:282 167 | msgid "Select All the Windows in the List" 168 | msgstr "選擇列表內所有視窗" 169 | 170 | #: modules/cons.py:283 171 | msgid "Deselect A_ll" 172 | msgstr "取消選擇全部 (_l)" 173 | 174 | #: modules/cons.py:283 175 | msgid "Deselect All the Windows in the List" 176 | msgstr "取消選擇列表上所有視窗" 177 | 178 | #: modules/cons.py:284 179 | msgid "Tile _Vertically" 180 | msgstr "垂直鋪排 (_V)" 181 | 182 | #: modules/cons.py:284 183 | msgid "Tile Vertically The Checked Windows" 184 | msgstr "垂直鋪排選定的視窗" 185 | 186 | #: modules/cons.py:285 187 | msgid "Tile _Horizontally" 188 | msgstr "水平鋪排 (_H)" 189 | 190 | #: modules/cons.py:285 191 | msgid "Tile Horizontally The Checked Windows" 192 | msgstr "水平鋪排選定的視窗" 193 | 194 | #: modules/cons.py:286 195 | msgid "_Triangle Up" 196 | msgstr "三等份,最大的在上 (_T)" 197 | 198 | #: modules/cons.py:286 199 | msgid "Tile Triangle Up The Checked Windows" 200 | msgstr "平舖選定視窗為三等份,最大的在上" 201 | 202 | #: modules/cons.py:287 203 | msgid "Triangle _Down" 204 | msgstr "三等份,最大的在下 (_D)" 205 | 206 | #: modules/cons.py:287 207 | msgid "Tile Triangle Down The Checked Windows" 208 | msgstr "平舖選定視窗為三等份,最大的在下" 209 | 210 | #: modules/cons.py:288 211 | msgid "Triangle _Left" 212 | msgstr "三等份,最大的在左 (_L)" 213 | 214 | #: modules/cons.py:288 215 | msgid "Tile Triangle Left The Checked Windows" 216 | msgstr "平舖選定視窗為三等份,最大的在左" 217 | 218 | #: modules/cons.py:289 219 | msgid "Triangle _Right" 220 | msgstr "三等份,最大的在右 (_R)" 221 | 222 | #: modules/cons.py:289 223 | msgid "Tile Triangle Right The Checked Windows" 224 | msgstr "平舖選定視窗為三等份,最大的在右" 225 | 226 | #: modules/cons.py:290 227 | msgid "Tile _Quad" 228 | msgstr "平鋪為4個 (_Q)" 229 | 230 | #: modules/cons.py:290 231 | msgid "Tile into 4 quadrants The Checked Windows" 232 | msgstr "將選定的視窗平鋪到四個象限" 233 | 234 | #: modules/cons.py:291 235 | msgid "Tile _Grid" 236 | msgstr "平鋪為格框 (_G)" 237 | 238 | #: modules/cons.py:291 239 | msgid "Tile into an Arbitrary Grid The Checked Windows" 240 | msgstr "平鋪選定的視窗為一個任意格框" 241 | 242 | #: modules/cons.py:292 243 | msgid "Custom Tile 1 _Set" 244 | msgstr "自訂鋪排1設定 (_S)" 245 | 246 | #: modules/cons.py:292 247 | msgid "Edit Custom Tile 1 Settings" 248 | msgstr "編輯自訂鋪排1設定" 249 | 250 | #: modules/cons.py:293 251 | msgid "Custom Tile _1 Run" 252 | msgstr "執行自訂鋪排1 (_1)" 253 | 254 | #: modules/cons.py:293 255 | msgid "Execute Custom Tile 1" 256 | msgstr "執行自訂鋪排1" 257 | 258 | #: modules/cons.py:294 259 | msgid "Custom Tile 2 S_et" 260 | msgstr "自訂鋪排2設定 (_e)" 261 | 262 | #: modules/cons.py:294 263 | msgid "Edit Custom Tile 2 Settings" 264 | msgstr "編輯自訂鋪排2設定" 265 | 266 | #: modules/cons.py:295 267 | msgid "Custom Tile _2 Run" 268 | msgstr "執行自訂鋪排2 (_2)" 269 | 270 | #: modules/cons.py:295 271 | msgid "Execute Custom Tile 2" 272 | msgstr "執行自訂鋪排2" 273 | 274 | #: modules/cons.py:296 modules/cons.py:325 275 | msgid "U_ndo Tiling" 276 | msgstr "復原鋪排" 277 | 278 | #: modules/cons.py:296 modules/cons.py:325 279 | msgid "Undo the Latest Tiling Operation" 280 | msgstr "復原最後一次鋪排的動作" 281 | 282 | #: modules/cons.py:297 modules/cons.py:324 283 | msgid "_Invert Tiling Order" 284 | msgstr "將鋪排順序顛倒 (_I)" 285 | 286 | #: modules/cons.py:297 modules/cons.py:324 287 | msgid "Invert the Order of the Latest Tiling Operation" 288 | msgstr "將最後一次鋪排的動作顛倒" 289 | 290 | #: modules/cons.py:298 modules/cons.py:326 291 | msgid "C_ycle Tiling Order" 292 | msgstr "循環切換鋪排順序 (_C)" 293 | 294 | #: modules/cons.py:298 modules/cons.py:326 295 | msgid "Cycle the Order of the Latest Tiling Operation" 296 | msgstr "循環順序到最後一次鋪排的動作" 297 | 298 | #: modules/cons.py:299 299 | msgid "_Maximize Windows" 300 | msgstr "最大化視窗 (_M)" 301 | 302 | #: modules/cons.py:299 303 | msgid "Maximize The Checked Windows" 304 | msgstr "最大化選定的視窗" 305 | 306 | #: modules/cons.py:300 307 | msgid "_Unmaximize Windows" 308 | msgstr "不最大化視窗 (_U)" 309 | 310 | #: modules/cons.py:300 311 | msgid "Unmaximize The Checked Windows" 312 | msgstr "不最大化選定的視窗" 313 | 314 | #: modules/cons.py:301 315 | msgid "_Close Windows" 316 | msgstr "關閉視窗 (_C)" 317 | 318 | #: modules/cons.py:301 319 | msgid "Close The Checked Windows" 320 | msgstr "關閉選定視窗" 321 | 322 | #: modules/cons.py:302 323 | msgid "Move _Up" 324 | msgstr "往上移 (_U)" 325 | 326 | #: modules/cons.py:302 327 | msgid "Move the Selected Row Up" 328 | msgstr "將選定列移上去" 329 | 330 | #: modules/cons.py:303 331 | msgid "Move _Down" 332 | msgstr "往下移 (_D)" 333 | 334 | #: modules/cons.py:303 335 | msgid "Move the Selected Row Down" 336 | msgstr "將選定列移下來" 337 | 338 | #: modules/cons.py:304 339 | msgid "_Remove" 340 | msgstr "移除 (_R)" 341 | 342 | #: modules/cons.py:304 343 | msgid "Remove the Selected Row" 344 | msgstr "移除選定的列" 345 | 346 | #: modules/cons.py:305 347 | msgid "Show/Hide _Toolbar" 348 | msgstr "顯示/隱藏工具列 (_T)" 349 | 350 | #: modules/cons.py:305 351 | msgid "Toggle Show/Hide Toolbar" 352 | msgstr "切換顯示/隱藏工具列" 353 | 354 | #: modules/cons.py:306 355 | msgid "_Increase Toolbar Icons Size" 356 | msgstr "將工具列圖示變大 (_I)" 357 | 358 | #: modules/cons.py:306 359 | msgid "Increase the Size of the Toolbar Icons" 360 | msgstr "放大工具列圖示" 361 | 362 | #: modules/cons.py:307 363 | msgid "_Decrease Toolbar Icons Size" 364 | msgstr "將工具列圖示變小 (_D)" 365 | 366 | #: modules/cons.py:307 367 | msgid "Decrease the Size of the Toolbar Icons" 368 | msgstr "縮小工具列圖示" 369 | 370 | #: modules/cons.py:308 371 | msgid "X Tile Project Home Page" 372 | msgstr "X Tile 專案首頁" 373 | 374 | #: modules/cons.py:309 modules/cons.py:310 375 | msgid "_About" 376 | msgstr "關於 (_A)" 377 | 378 | #: modules/cons.py:309 modules/cons.py:310 glade/x-tile.glade.h:1 379 | msgid "About X Tile" 380 | msgstr "關於 X Tile" 381 | 382 | #: modules/cons.py:311 383 | msgid "_Close All" 384 | msgstr "關閉所有(_C)" 385 | 386 | #: modules/cons.py:311 387 | msgid "Close All Windows" 388 | msgstr "關閉所有視窗" 389 | 390 | #: modules/cons.py:312 391 | msgid "_Unmaximize All" 392 | msgstr "不最大化全部 (_U)" 393 | 394 | #: modules/cons.py:312 395 | msgid "Unmaximize All Windows" 396 | msgstr "不最大化所有視窗" 397 | 398 | #: modules/cons.py:313 399 | msgid "_Maximize All" 400 | msgstr "最大化全部 (_M)" 401 | 402 | #: modules/cons.py:313 403 | msgid "Maximize All Windows" 404 | msgstr "最大化所有視窗" 405 | 406 | #: modules/cons.py:314 407 | msgid "Tile All _Quad" 408 | msgstr "平鋪所有視窗為4個 (_Q)" 409 | 410 | #: modules/cons.py:314 411 | msgid "Tile All Windows Quad" 412 | msgstr "平鋪所有視窗為4個" 413 | 414 | #: modules/cons.py:315 415 | msgid "Tile All Triangle _Down" 416 | msgstr "平舖所有視窗為三等份,最大的在下 (_D)" 417 | 418 | #: modules/cons.py:315 419 | msgid "Tile All Windows Triangle Down" 420 | msgstr "平舖所有視窗為三等份,最大的在下" 421 | 422 | #: modules/cons.py:316 423 | msgid "Tile All Triangle _Up" 424 | msgstr "平舖所有視窗為三等份,最大的在上 (_U)" 425 | 426 | #: modules/cons.py:316 427 | msgid "Tile All Windows Triangle Up" 428 | msgstr "平舖所有視窗為三等份,最大的在上" 429 | 430 | #: modules/cons.py:317 431 | msgid "Tile All Triangle _Right" 432 | msgstr "平舖所有視窗為三等份,最大的在右 (_R)" 433 | 434 | #: modules/cons.py:317 435 | msgid "Tile All Windows Triangle Right" 436 | msgstr "平舖所有視窗為三等份,最大的在右" 437 | 438 | #: modules/cons.py:318 439 | msgid "Tile All Triangle _Left" 440 | msgstr "平舖所有視窗為三等份,最大的在左 (_L)" 441 | 442 | #: modules/cons.py:318 443 | msgid "Tile All Windows Triangle Left" 444 | msgstr "平舖所有視窗為三等份,最大的在左" 445 | 446 | #: modules/cons.py:319 447 | msgid "Tile All Custom _2" 448 | msgstr "平舖所有自訂2 (_2)" 449 | 450 | #: modules/cons.py:319 451 | msgid "Tile All Windows Custom 2" 452 | msgstr "平舖所有自訂2" 453 | 454 | #: modules/cons.py:320 455 | msgid "Tile All Custom _1" 456 | msgstr "平舖所有自訂1 (_1)" 457 | 458 | #: modules/cons.py:320 459 | msgid "Tile All Windows Custom 1" 460 | msgstr "平舖所有自訂1" 461 | 462 | #: modules/cons.py:321 463 | msgid "Tile All _Grid" 464 | msgstr "平鋪所有為格框 (_G)" 465 | 466 | #: modules/cons.py:321 467 | msgid "Tile All Windows Grid" 468 | msgstr "平鋪所有為格框" 469 | 470 | #: modules/cons.py:322 471 | msgid "Tile All _Horizontally" 472 | msgstr "水平鋪排所有視窗 (_H)" 473 | 474 | #: modules/cons.py:322 475 | msgid "Tile All Windows Horizontally" 476 | msgstr "水平鋪排所有視窗" 477 | 478 | #: modules/cons.py:323 479 | msgid "Tile All _Vertically" 480 | msgstr "垂直鋪排全部視窗 (_V)" 481 | 482 | #: modules/cons.py:323 483 | msgid "Tile All Windows Vertically" 484 | msgstr "垂直鋪排所有視窗" 485 | 486 | #: glade/x-tile.glade.h:2 487 | msgid "" 488 | "Copyright © 2009-2012\n" 489 | "Giuseppe Penone \n" 490 | "Chris Camacho " 491 | msgstr "" 492 | "Copyright © 2009-2012\n" 493 | "Giuseppe Penone \n" 494 | "Chris Camacho " 495 | 496 | #: glade/x-tile.glade.h:6 497 | msgid "http://www.giuspen.com/x-tile/" 498 | msgstr "http://www.giuspen.com/x-tile/" 499 | 500 | #: glade/x-tile.glade.h:7 501 | msgid "" 502 | "\n" 503 | "This program is free software; you can redistribute it and/or modify\n" 504 | "it under the terms of the GNU General Public License as published by\n" 505 | "the Free Software Foundation; either version 2 of the License, or\n" 506 | "(at your option) any later version.\n" 507 | "\n" 508 | "This program is distributed in the hope that it will be useful,\n" 509 | "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" 510 | "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" 511 | "GNU General Public License for more details.\n" 512 | "\n" 513 | "You should have received a copy of the GNU General Public License\n" 514 | "along with this program; if not, write to the Free Software\n" 515 | "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n" 516 | "MA 02110-1301, USA." 517 | msgstr "" 518 | "\n" 519 | "本程式為自由軟體;您可依據自由軟體基金會所發表的 GNU 通用公共授權條款規定,就" 520 | "本程式再為散布與/或修改;無論您依據的是本授權的第二版或(您自行選擇的)任一" 521 | "日後發行的版本。\n" 522 | "\n" 523 | "本程式係基於使用目的而加以散布,然而不負任何擔保責任;亦無對適售性或特定目的" 524 | "適用性所為的默示性擔保。詳情請參照 GNU 通用公共授權。\n" 525 | "\n" 526 | "您應已收到附隨於本程式的 GNU 通用公共授權的副本;如無,請寫信至自由軟體基金" 527 | "會:51 Franklin Street, Fifth Floor, Boston, Ma 02110-1301, USA。" 528 | 529 | #: glade/x-tile.glade.h:22 530 | msgid "" 531 | "Chinese Simplified (zh_CN) Khiyuan Fan \n" 532 | "Chinese Traditional (zh_TW) Yan-ren Tsai \n" 533 | "Czech (cs) Pavel Fric \n" 535 | "French (fr) Ludovic Troisi \n" 536 | "German (de) Jöran Zeller \n" 537 | "Italian (it) Giuseppe Penone \n" 538 | "Polish (pl) Dominik Wójt \n" 539 | "Russian (ru) Andriy Kovtun " 540 | msgstr "" 541 | "Chinese Simplified (zh_CN) Khiyuan Fan \n" 542 | "漢語(繁體中文) (zh_TW) Yan-ren Tsai \n" 543 | "Czech (cs) Pavel Fric \n" 545 | "法語 (fr) Ludovic Troisi \n" 546 | "德語 (de) Jöran Zeller \n" 547 | "義大利語 (it) Giuseppe Penone \n" 548 | "波蘭語 (pl) Dominik Wójt \n" 549 | "俄語 (ru) Andriy Kovtun " 550 | 551 | #: glade/x-tile.glade.h:31 552 | msgid "Preferences" 553 | msgstr "偏好設定" 554 | 555 | #: glade/x-tile.glade.h:32 556 | msgid "Do Not List Minimized Windows" 557 | msgstr "不要列出已經最小化的視窗" 558 | 559 | #: glade/x-tile.glade.h:33 560 | msgid "Only Current Workspace" 561 | msgstr "只有目前工作區" 562 | 563 | #: glade/x-tile.glade.h:34 564 | msgid "Enable System Tray Docking" 565 | msgstr "啟用系統匣停駐" 566 | 567 | #: glade/x-tile.glade.h:35 568 | msgid "Start Minimized in the System Tray" 569 | msgstr "啟動時最小化到系統匣" 570 | 571 | #: glade/x-tile.glade.h:36 572 | msgid "Use AppIndicator for Docking" 573 | msgstr "使用 AppIndicator 停駐" 574 | 575 | #: glade/x-tile.glade.h:37 576 | msgid "Show Toolbar" 577 | msgstr "顯示工具列" 578 | 579 | #: glade/x-tile.glade.h:38 580 | msgid " Language " 581 | msgstr "語言" 582 | 583 | #: glade/x-tile.glade.h:39 584 | msgid "Override Monitor 1 Tiling Area" 585 | msgstr "以下面設定取代第一個螢幕的鋪排區域" 586 | 587 | #: glade/x-tile.glade.h:40 588 | msgid "X" 589 | msgstr "X" 590 | 591 | #: glade/x-tile.glade.h:41 592 | msgid "Y" 593 | msgstr "Y" 594 | 595 | #: glade/x-tile.glade.h:42 596 | msgid "Position" 597 | msgstr "位置" 598 | 599 | #: glade/x-tile.glade.h:43 600 | msgid "Width" 601 | msgstr "寬" 602 | 603 | #: glade/x-tile.glade.h:44 604 | msgid "Height" 605 | msgstr "高" 606 | 607 | #: glade/x-tile.glade.h:45 608 | msgid "Size" 609 | msgstr "尺寸" 610 | 611 | #: glade/x-tile.glade.h:46 612 | msgid "Override Monitor 2 Tiling Area" 613 | msgstr "以下面設定取代第二個螢幕的鋪排區域" 614 | 615 | #: glade/x-tile.glade.h:47 616 | msgid "Close" 617 | msgstr "關閉" 618 | 619 | #: glade/x-tile.glade.h:48 620 | msgid "Cancel" 621 | msgstr "取消" 622 | 623 | #: glade/x-tile.glade.h:49 624 | msgid "OK" 625 | msgstr "OK" 626 | 627 | #: glade/x-tile.glade.h:50 628 | msgid "Custom Tiling Layout" 629 | msgstr "自訂鋪排版面" 630 | 631 | #: glade/x-tile.glade.h:51 632 | msgid "1) Tile Some Windows Manually" 633 | msgstr "1) 手動鋪排某些視窗" 634 | 635 | #: glade/x-tile.glade.h:52 636 | msgid "2) Select Them in the X Tile Windows List" 637 | msgstr "2) 在 X Tile 視窗列表裡選擇視窗" 638 | 639 | #: glade/x-tile.glade.h:53 640 | msgid "3) Click the Update Button" 641 | msgstr "3) 點擊更新按鈕" 642 | 643 | #: glade/x-tile.glade.h:54 644 | msgid "Update" 645 | msgstr "更新" 646 | 647 | #: glade/x-tile.glade.h:55 648 | msgid "Rows to Filter" 649 | msgstr "列轉篩選器" 650 | 651 | #: glade/x-tile.glade.h:56 652 | msgid "Add an Application Filter" 653 | msgstr "增加應用程式篩選器" 654 | 655 | #: glade/x-tile.glade.h:57 656 | msgid "Remove an Application Filter" 657 | msgstr "移除應用程式篩選器" 658 | 659 | #: glade/x-tile.glade.h:58 660 | msgid "Add Row" 661 | msgstr "增加列" 662 | 663 | #: glade/x-tile.glade.h:60 664 | msgid "X Tile" 665 | msgstr "X Tile" 666 | 667 | #: glade/x-tile.glade.h:61 668 | msgid "Set Destination Workspace" 669 | msgstr "設置目標工作區" 670 | 671 | #: glade/x-tile.glade.h:62 672 | msgid "Exit After Tile" 673 | msgstr "鋪排後離開" 674 | -------------------------------------------------------------------------------- /locale/zh_CN.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: 1.6\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2012-09-07 23:14+0200\n" 6 | "PO-Revision-Date: 2012-09-14 12:45+0800\n" 7 | "Last-Translator: Khiyuan.Fan \n" 8 | "Language-Team: Fan.khiyuan@gmail.com\n" 9 | "Language: \n" 10 | "MIME-Version: 1.0\n" 11 | "Content-Type: text/plain; charset=UTF-8\n" 12 | "Content-Transfer-Encoding: 8bit\n" 13 | "X-Poedit-Language: Chinese\n" 14 | 15 | #: modules/core.py:307 16 | msgid "Use Drag and Drop to Sort the Rows" 17 | msgstr "使用拖拉来排序行" 18 | 19 | #: modules/core.py:347 20 | msgid "The New Language will be Available Only After Restarting X Tile" 21 | msgstr "新语言将在重启 X Tile 后生效。" 22 | 23 | #: modules/core.py:369 24 | #: glade/x-tile.glade.h:5 25 | msgid "Tile the Windows Upon your X Desktop" 26 | msgstr "" 27 | "X Tile\n" 28 | "在你的X桌面排列窗口" 29 | 30 | #: modules/core.py:583 31 | msgid "The Size of the Toolbar Icons is already at the Maximum Value" 32 | msgstr "工具栏图标的尺寸已经是最大的了。" 33 | 34 | #: modules/core.py:593 35 | msgid "The Size of the Toolbar Icons is already at the Minimum Value" 36 | msgstr "工具栏图标的尺寸已经是最小的了。" 37 | 38 | #: modules/core.py:703 39 | #: modules/core.py:711 40 | #: modules/core.py:719 41 | msgid "No Row is Selected" 42 | msgstr "没有选定任何行" 43 | 44 | #: modules/core.py:741 45 | #: modules/core.py:775 46 | msgid "No Application Selected!" 47 | msgstr "没有选择应用程序!" 48 | 49 | #: modules/core.py:855 50 | msgid "Grid Details" 51 | msgstr "网格明细" 52 | 53 | #: modules/core.py:863 54 | msgid "Rows" 55 | msgstr "行" 56 | 57 | #: modules/core.py:870 58 | msgid "Columns" 59 | msgstr "列" 60 | 61 | #: modules/core.py:956 62 | #: modules/core.py:964 63 | #: modules/core.py:974 64 | msgid "No Windows Checked" 65 | msgstr "没有选择窗口" 66 | 67 | #: modules/core.py:1014 68 | #: modules/core.py:1027 69 | msgid "Edit Custom Tile Settings" 70 | msgstr "编辑自定排列设定" 71 | 72 | #: modules/core.py:1174 73 | msgid "The Custom Tile 1 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 1 Set'" 74 | msgstr "自定排列1尚未设置:点击菜单 '排列->自定排列1' 进行设置。" 75 | 76 | #: modules/core.py:1192 77 | msgid "The Custom Tile 2 was Not Set Yet: Click the Menu Item 'Tile->Custom Tile 2 Set'" 78 | msgstr "自定排列2尚未设置:点击菜单 '排列->自定排列2' 进行设置。" 79 | 80 | #: modules/cons.py:268 81 | msgid "_File" 82 | msgstr "文件 (_F)" 83 | 84 | #: modules/cons.py:269 85 | msgid "_Edit" 86 | msgstr "编辑 (_E)" 87 | 88 | #: modules/cons.py:270 89 | msgid "_Row" 90 | msgstr "行(_R)" 91 | 92 | #: modules/cons.py:271 93 | msgid "_Tile" 94 | msgstr "排列 (_T)" 95 | 96 | #: modules/cons.py:272 97 | msgid "_View" 98 | msgstr "查看 (_V)" 99 | 100 | #: modules/cons.py:273 101 | #: modules/cons.py:308 102 | msgid "_Help" 103 | msgstr "帮助 (_H)" 104 | 105 | #: modules/cons.py:275 106 | msgid "_Filter" 107 | msgstr "筛选 (_F)" 108 | 109 | #: modules/cons.py:275 110 | msgid "Filter Rows" 111 | msgstr "过滤行" 112 | 113 | #: modules/cons.py:276 114 | msgid "Selected by _Default" 115 | msgstr "预设选定 (_D)" 116 | 117 | #: modules/cons.py:276 118 | #: glade/x-tile.glade.h:59 119 | msgid "Rows to be Selected by Default" 120 | msgstr "预设选定的行" 121 | 122 | #: modules/cons.py:277 123 | msgid "_Reload" 124 | msgstr "重载" 125 | 126 | #: modules/cons.py:277 127 | msgid "Reload the Windows List" 128 | msgstr "重新载入窗口列表" 129 | 130 | #: modules/cons.py:278 131 | msgid "_Quit" 132 | msgstr "退出 (_Q)" 133 | 134 | #: modules/cons.py:278 135 | msgid "Quit the Application" 136 | msgstr "退出应用程序" 137 | 138 | #: modules/cons.py:279 139 | msgid "_Exit X Tile" 140 | msgstr "退出 X Tile(_E)" 141 | 142 | #: modules/cons.py:279 143 | msgid "Exit from X Tile" 144 | msgstr "自 X Tile 退出" 145 | 146 | #: modules/cons.py:280 147 | msgid "Show/Hide _X Tile" 148 | msgstr "显示/隐藏X Tile (_X)" 149 | 150 | #: modules/cons.py:280 151 | msgid "Toggle Show/Hide X Tile" 152 | msgstr "切换显示/隐藏 X Tile" 153 | 154 | #: modules/cons.py:281 155 | msgid "_Preferences" 156 | msgstr "首选项 (_P)" 157 | 158 | #: modules/cons.py:281 159 | msgid "Open the Preferences Window" 160 | msgstr "打开首选项设置窗口" 161 | 162 | #: modules/cons.py:282 163 | msgid "Select _All" 164 | msgstr "全选 (_A)" 165 | 166 | #: modules/cons.py:282 167 | msgid "Select All the Windows in the List" 168 | msgstr "全选列表內窗口" 169 | 170 | #: modules/cons.py:283 171 | msgid "Deselect A_ll" 172 | msgstr "取消全选 (_L)" 173 | 174 | #: modules/cons.py:283 175 | msgid "Deselect All the Windows in the List" 176 | msgstr "取消选择列表上所有窗口" 177 | 178 | #: modules/cons.py:284 179 | msgid "Tile _Vertically" 180 | msgstr "垂直排列 (_V)" 181 | 182 | #: modules/cons.py:284 183 | msgid "Tile Vertically The Checked Windows" 184 | msgstr "垂直排列选定的窗口" 185 | 186 | #: modules/cons.py:285 187 | msgid "Tile _Horizontally" 188 | msgstr "水平排列 (_H)" 189 | 190 | #: modules/cons.py:285 191 | msgid "Tile Horizontally The Checked Windows" 192 | msgstr "水平排列选定的窗口" 193 | 194 | #: modules/cons.py:286 195 | msgid "_Triangle Up" 196 | msgstr "三分,上边最大 (_T)" 197 | 198 | #: modules/cons.py:286 199 | msgid "Tile Triangle Up The Checked Windows" 200 | msgstr "平铺三个选定的窗口,上边最大" 201 | 202 | #: modules/cons.py:287 203 | msgid "Triangle _Down" 204 | msgstr "三分,下边最大 (_D)" 205 | 206 | #: modules/cons.py:287 207 | msgid "Tile Triangle Down The Checked Windows" 208 | msgstr "平铺三个选定的窗口,下边最大" 209 | 210 | #: modules/cons.py:288 211 | msgid "Triangle _Left" 212 | msgstr "三分,左边最大 (_L)" 213 | 214 | #: modules/cons.py:288 215 | msgid "Tile Triangle Left The Checked Windows" 216 | msgstr "平铺三个选定的窗口,左边最大" 217 | 218 | #: modules/cons.py:289 219 | msgid "Triangle _Right" 220 | msgstr "三分,右边最大 (_R)" 221 | 222 | #: modules/cons.py:289 223 | msgid "Tile Triangle Right The Checked Windows" 224 | msgstr "平铺三个选定的窗口,右边最大" 225 | 226 | #: modules/cons.py:290 227 | msgid "Tile _Quad" 228 | msgstr "四等分 (_Q)" 229 | 230 | #: modules/cons.py:290 231 | msgid "Tile into 4 quadrants The Checked Windows" 232 | msgstr "将选定窗口平铺到四个象限" 233 | 234 | #: modules/cons.py:291 235 | msgid "Tile _Grid" 236 | msgstr "平铺网格(_G)" 237 | 238 | #: modules/cons.py:291 239 | msgid "Tile into an Arbitrary Grid The Checked Windows" 240 | msgstr "平铺选定窗口到任意网格" 241 | 242 | #: modules/cons.py:292 243 | msgid "Custom Tile 1 _Set" 244 | msgstr "自定义排列1 (_S)" 245 | 246 | #: modules/cons.py:292 247 | msgid "Edit Custom Tile 1 Settings" 248 | msgstr "编辑自定排列1设定" 249 | 250 | #: modules/cons.py:293 251 | msgid "Custom Tile _1 Run" 252 | msgstr "运行自定排列1 (_1)" 253 | 254 | #: modules/cons.py:293 255 | msgid "Execute Custom Tile 1" 256 | msgstr "运行自定排列1" 257 | 258 | #: modules/cons.py:294 259 | msgid "Custom Tile 2 S_et" 260 | msgstr "自定义排列2 (_E)" 261 | 262 | #: modules/cons.py:294 263 | msgid "Edit Custom Tile 2 Settings" 264 | msgstr "编辑自定排列2设定" 265 | 266 | #: modules/cons.py:295 267 | msgid "Custom Tile _2 Run" 268 | msgstr "运行自定排列2 (_2)" 269 | 270 | #: modules/cons.py:295 271 | msgid "Execute Custom Tile 2" 272 | msgstr "运行自定排列2" 273 | 274 | #: modules/cons.py:296 275 | #: modules/cons.py:325 276 | msgid "U_ndo Tiling" 277 | msgstr "撤销排列 (_N)" 278 | 279 | #: modules/cons.py:296 280 | #: modules/cons.py:325 281 | msgid "Undo the Latest Tiling Operation" 282 | msgstr "撤消最后一次排列操作" 283 | 284 | #: modules/cons.py:297 285 | #: modules/cons.py:324 286 | msgid "_Invert Tiling Order" 287 | msgstr "倒置排列次序(_I)" 288 | 289 | #: modules/cons.py:297 290 | #: modules/cons.py:324 291 | msgid "Invert the Order of the Latest Tiling Operation" 292 | msgstr "倒置最后一次排列操作" 293 | 294 | #: modules/cons.py:298 295 | #: modules/cons.py:326 296 | msgid "C_ycle Tiling Order" 297 | msgstr "循环排列次序(_I)" 298 | 299 | #: modules/cons.py:298 300 | #: modules/cons.py:326 301 | msgid "Cycle the Order of the Latest Tiling Operation" 302 | msgstr "循环最后一次排列操作" 303 | 304 | #: modules/cons.py:299 305 | msgid "_Maximize Windows" 306 | msgstr "最大化窗口 (_M)" 307 | 308 | #: modules/cons.py:299 309 | msgid "Maximize The Checked Windows" 310 | msgstr "最大化选定窗口" 311 | 312 | #: modules/cons.py:300 313 | msgid "_Unmaximize Windows" 314 | msgstr "取消窗口最大化 (_U)" 315 | 316 | #: modules/cons.py:300 317 | msgid "Unmaximize The Checked Windows" 318 | msgstr "取消选定窗口最大化" 319 | 320 | #: modules/cons.py:301 321 | msgid "_Close Windows" 322 | msgstr "关闭窗口 (_C)" 323 | 324 | #: modules/cons.py:301 325 | msgid "Close The Checked Windows" 326 | msgstr "关闭选定窗口" 327 | 328 | #: modules/cons.py:302 329 | msgid "Move _Up" 330 | msgstr "上移 (_U)" 331 | 332 | #: modules/cons.py:302 333 | msgid "Move the Selected Row Up" 334 | msgstr "上移选定行" 335 | 336 | #: modules/cons.py:303 337 | msgid "Move _Down" 338 | msgstr "下移 (_D)" 339 | 340 | #: modules/cons.py:303 341 | msgid "Move the Selected Row Down" 342 | msgstr "下移选定行" 343 | 344 | #: modules/cons.py:304 345 | msgid "_Remove" 346 | msgstr "移除 (_R)" 347 | 348 | #: modules/cons.py:304 349 | msgid "Remove the Selected Row" 350 | msgstr "移除选定行" 351 | 352 | #: modules/cons.py:305 353 | msgid "Show/Hide _Toolbar" 354 | msgstr "显示/隐藏工具栏 (_T)" 355 | 356 | #: modules/cons.py:305 357 | msgid "Toggle Show/Hide Toolbar" 358 | msgstr "切换显示/隐藏工具栏" 359 | 360 | #: modules/cons.py:306 361 | msgid "_Increase Toolbar Icons Size" 362 | msgstr "放大工具栏图标 (_I)" 363 | 364 | #: modules/cons.py:306 365 | msgid "Increase the Size of the Toolbar Icons" 366 | msgstr "放大工具栏图标" 367 | 368 | #: modules/cons.py:307 369 | msgid "_Decrease Toolbar Icons Size" 370 | msgstr "缩小工具栏图标 (_D)" 371 | 372 | #: modules/cons.py:307 373 | msgid "Decrease the Size of the Toolbar Icons" 374 | msgstr "缩小工具栏图标" 375 | 376 | #: modules/cons.py:308 377 | msgid "X Tile Project Home Page" 378 | msgstr "X Tile 项目首页" 379 | 380 | #: modules/cons.py:309 381 | #: modules/cons.py:310 382 | msgid "_About" 383 | msgstr "关于 (_A)" 384 | 385 | #: modules/cons.py:309 386 | #: modules/cons.py:310 387 | #: glade/x-tile.glade.h:1 388 | msgid "About X Tile" 389 | msgstr "关于 X Tile" 390 | 391 | #: modules/cons.py:311 392 | msgid "_Close All" 393 | msgstr "关闭全部(_C)" 394 | 395 | #: modules/cons.py:311 396 | msgid "Close All Windows" 397 | msgstr "关闭所有窗口" 398 | 399 | #: modules/cons.py:312 400 | msgid "_Unmaximize All" 401 | msgstr "全部取消最大化 (_M)" 402 | 403 | #: modules/cons.py:312 404 | msgid "Unmaximize All Windows" 405 | msgstr "所有窗口取消最大化" 406 | 407 | #: modules/cons.py:313 408 | msgid "_Maximize All" 409 | msgstr "全部最大化 (_M)" 410 | 411 | #: modules/cons.py:313 412 | msgid "Maximize All Windows" 413 | msgstr "所有窗口最大化" 414 | 415 | #: modules/cons.py:314 416 | msgid "Tile All _Quad" 417 | msgstr "四分平铺全部 (_Q)" 418 | 419 | #: modules/cons.py:314 420 | msgid "Tile All Windows Quad" 421 | msgstr "四分平铺所有窗口" 422 | 423 | #: modules/cons.py:315 424 | msgid "Tile All Triangle _Down" 425 | msgstr "三分平铺全部,下边最大 (_D)" 426 | 427 | #: modules/cons.py:315 428 | msgid "Tile All Windows Triangle Down" 429 | msgstr "三分平铺全部窗口,下边最大 " 430 | 431 | #: modules/cons.py:316 432 | msgid "Tile All Triangle _Up" 433 | msgstr "三分平铺全部,上边最大 (_U)" 434 | 435 | #: modules/cons.py:316 436 | msgid "Tile All Windows Triangle Up" 437 | msgstr "三分平铺全部窗口,上边最大" 438 | 439 | #: modules/cons.py:317 440 | msgid "Tile All Triangle _Right" 441 | msgstr "三分平铺全部,右边最大 (_R)" 442 | 443 | #: modules/cons.py:317 444 | msgid "Tile All Windows Triangle Right" 445 | msgstr "三分平铺全部窗口,右边最大" 446 | 447 | #: modules/cons.py:318 448 | msgid "Tile All Triangle _Left" 449 | msgstr "三分平铺全部,左边最大 (_L)" 450 | 451 | #: modules/cons.py:318 452 | msgid "Tile All Windows Triangle Left" 453 | msgstr "三分平铺全部窗口,左边最大" 454 | 455 | #: modules/cons.py:319 456 | msgid "Tile All Custom _2" 457 | msgstr "全部按自定2平铺 (_2)" 458 | 459 | #: modules/cons.py:319 460 | msgid "Tile All Windows Custom 2" 461 | msgstr "全部窗口按自定2平铺" 462 | 463 | #: modules/cons.py:320 464 | msgid "Tile All Custom _1" 465 | msgstr "全部按照自定1平铺 (_1)" 466 | 467 | #: modules/cons.py:320 468 | msgid "Tile All Windows Custom 1" 469 | msgstr "全部窗口按自定1平铺" 470 | 471 | #: modules/cons.py:321 472 | msgid "Tile All _Grid" 473 | msgstr "平铺所有网格 (_G)" 474 | 475 | #: modules/cons.py:321 476 | msgid "Tile All Windows Grid" 477 | msgstr "平铺所有窗口至网格" 478 | 479 | #: modules/cons.py:322 480 | msgid "Tile All _Horizontally" 481 | msgstr "水平排列所有窗口 (_H)" 482 | 483 | #: modules/cons.py:322 484 | msgid "Tile All Windows Horizontally" 485 | msgstr "水平排列所有窗口" 486 | 487 | #: modules/cons.py:323 488 | msgid "Tile All _Vertically" 489 | msgstr "垂直排列全部窗口 (_V)" 490 | 491 | #: modules/cons.py:323 492 | msgid "Tile All Windows Vertically" 493 | msgstr "垂直排列全部窗口" 494 | 495 | #: glade/x-tile.glade.h:2 496 | msgid "" 497 | "Copyright © 2009-2012\n" 498 | "Giuseppe Penone \n" 499 | "Chris Camacho " 500 | msgstr "" 501 | "Copyright © 2009-2012\n" 502 | "Giuseppe Penone \n" 503 | "Chris Camacho " 504 | 505 | #: glade/x-tile.glade.h:6 506 | msgid "http://www.giuspen.com/x-tile/" 507 | msgstr "http://www.giuspen.com/x-tile/" 508 | 509 | #: glade/x-tile.glade.h:7 510 | msgid "" 511 | "\n" 512 | "This program is free software; you can redistribute it and/or modify\n" 513 | "it under the terms of the GNU General Public License as published by\n" 514 | "the Free Software Foundation; either version 2 of the License, or\n" 515 | "(at your option) any later version.\n" 516 | "\n" 517 | "This program is distributed in the hope that it will be useful,\n" 518 | "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" 519 | "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" 520 | "GNU General Public License for more details.\n" 521 | "\n" 522 | "You should have received a copy of the GNU General Public License\n" 523 | "along with this program; if not, write to the Free Software\n" 524 | "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n" 525 | "MA 02110-1301, USA." 526 | msgstr "" 527 | "\n" 528 | "This program is free software; you can redistribute it and/or modify\n" 529 | "it under the terms of the GNU General Public License as published by\n" 530 | "the Free Software Foundation; either version 2 of the License, or\n" 531 | "(at your option) any later version.\n" 532 | "\n" 533 | "This program is distributed in the hope that it will be useful,\n" 534 | "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" 535 | "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" 536 | "GNU General Public License for more details.\n" 537 | "\n" 538 | "You should have received a copy of the GNU General Public License\n" 539 | "along with this program; if not, write to the Free Software\n" 540 | "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n" 541 | "MA 02110-1301, USA." 542 | 543 | #: glade/x-tile.glade.h:22 544 | msgid "" 545 | "Chinese Simplified (zh_CN) Khiyuan Fan \n" 546 | "Chinese Traditional (zh_TW) Yan-ren Tsai \n" 547 | "Czech (cs) Pavel Fric \n" 549 | "French (fr) Ludovic Troisi \n" 550 | "German (de) Jöran Zeller \n" 551 | "Italian (it) Giuseppe Penone \n" 552 | "Polish (pl) Dominik Wójt \n" 553 | "Russian (ru) Andriy Kovtun " 554 | msgstr "" 555 | "汉语(简体中文) (zh_CN) Khi-yuan Fan \n" 556 | "汉语(繁体中文) (zh_TW) Yan-ren Tsai \n" 557 | "捷克语 (cs) Pavel Fric \n" 559 | "法语 (fr) Ludovic Troisi \n" 560 | "德语 (de) Jöran Zeller \n" 561 | "意大利语 (it) Giuseppe Penone \n" 562 | "俄语 (ru) Andriy Kovtun " 563 | 564 | #: glade/x-tile.glade.h:31 565 | msgid "Preferences" 566 | msgstr "首选项" 567 | 568 | #: glade/x-tile.glade.h:32 569 | msgid "Do Not List Minimized Windows" 570 | msgstr "不列出最小化的窗口" 571 | 572 | #: glade/x-tile.glade.h:33 573 | msgid "Only Current Workspace" 574 | msgstr "只对当前工作区" 575 | 576 | #: glade/x-tile.glade.h:34 577 | msgid "Enable System Tray Docking" 578 | msgstr "激活系统托盘区停靠" 579 | 580 | #: glade/x-tile.glade.h:35 581 | msgid "Start Minimized in the System Tray" 582 | msgstr "启动后最小化于系统托盘" 583 | 584 | #: glade/x-tile.glade.h:36 585 | msgid "Use AppIndicator for Docking" 586 | msgstr "使用任务栏进行排布" 587 | 588 | #: glade/x-tile.glade.h:37 589 | msgid "Show Toolbar" 590 | msgstr "显示工具栏" 591 | 592 | #: glade/x-tile.glade.h:38 593 | msgid " Language " 594 | msgstr "语言" 595 | 596 | #: glade/x-tile.glade.h:39 597 | msgid "Override Monitor 1 Tiling Area" 598 | msgstr "取代第一个屏幕的排列区域" 599 | 600 | #: glade/x-tile.glade.h:40 601 | msgid "X" 602 | msgstr "X" 603 | 604 | #: glade/x-tile.glade.h:41 605 | msgid "Y" 606 | msgstr "Y" 607 | 608 | #: glade/x-tile.glade.h:42 609 | msgid "Position" 610 | msgstr "位置" 611 | 612 | #: glade/x-tile.glade.h:43 613 | msgid "Width" 614 | msgstr "宽" 615 | 616 | #: glade/x-tile.glade.h:44 617 | msgid "Height" 618 | msgstr "高" 619 | 620 | #: glade/x-tile.glade.h:45 621 | msgid "Size" 622 | msgstr "尺寸" 623 | 624 | #: glade/x-tile.glade.h:46 625 | msgid "Override Monitor 2 Tiling Area" 626 | msgstr "取代第二个屏幕的排列区域" 627 | 628 | #: glade/x-tile.glade.h:47 629 | msgid "Close" 630 | msgstr "关闭" 631 | 632 | #: glade/x-tile.glade.h:48 633 | msgid "Cancel" 634 | msgstr "取消" 635 | 636 | #: glade/x-tile.glade.h:49 637 | msgid "OK" 638 | msgstr "OK" 639 | 640 | #: glade/x-tile.glade.h:50 641 | msgid "Custom Tiling Layout" 642 | msgstr "自定排列版面" 643 | 644 | #: glade/x-tile.glade.h:51 645 | msgid "1) Tile Some Windows Manually" 646 | msgstr "1) 手动排列窗口" 647 | 648 | #: glade/x-tile.glade.h:52 649 | msgid "2) Select Them in the X Tile Windows List" 650 | msgstr "2) 在 X Tile 窗口列表中选择窗口" 651 | 652 | #: glade/x-tile.glade.h:53 653 | msgid "3) Click the Update Button" 654 | msgstr "3) 点击更新按钮" 655 | 656 | #: glade/x-tile.glade.h:54 657 | msgid "Update" 658 | msgstr "更新" 659 | 660 | #: glade/x-tile.glade.h:55 661 | msgid "Rows to Filter" 662 | msgstr "过滤器列表" 663 | 664 | #: glade/x-tile.glade.h:56 665 | msgid "Add an Application Filter" 666 | msgstr "添加应用程序到过滤器" 667 | 668 | #: glade/x-tile.glade.h:57 669 | msgid "Remove an Application Filter" 670 | msgstr "移除过滤器中应用程序" 671 | 672 | #: glade/x-tile.glade.h:58 673 | msgid "Add Row" 674 | msgstr "添加行" 675 | 676 | #: glade/x-tile.glade.h:60 677 | msgid "X Tile" 678 | msgstr "X Tile" 679 | 680 | #: glade/x-tile.glade.h:61 681 | msgid "Set Destination Workspace" 682 | msgstr "设置目标工作区" 683 | 684 | #: glade/x-tile.glade.h:62 685 | msgid "Exit After Tile" 686 | msgstr "排列后退出" 687 | 688 | -------------------------------------------------------------------------------- /glade/tile-triangle-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 23 | 46 | 60 | 61 | 63 | 70 | 72 | 76 | 80 | 81 | 83 | 87 | 91 | 92 | 94 | 98 | 102 | 103 | 113 | 123 | 133 | 143 | 153 | 163 | 173 | 183 | 193 | 203 | 213 | 223 | 233 | 243 | 253 | 263 | 273 | 283 | 293 | 303 | 313 | 314 | 339 | 343 | 347 | 359 | 360 | 362 | 363 | 365 | image/svg+xml 366 | 368 | 369 | 370 | Lapo Calamandrei 371 | 372 | 373 | Window Manager 374 | 375 | 376 | 377 | 379 | 380 | 382 | 384 | 386 | 388 | 390 | 392 | 394 | 395 | 396 | 397 | 402 | 405 | 408 | 417 | 422 | 431 | 432 | 435 | 444 | 449 | 458 | 459 | 460 | 463 | 466 | 475 | 480 | 489 | 490 | 491 | 492 | 493 | -------------------------------------------------------------------------------- /glade/tile-triangle-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 23 | 46 | 60 | 61 | 63 | 70 | 72 | 76 | 80 | 81 | 83 | 87 | 91 | 92 | 94 | 98 | 102 | 103 | 113 | 123 | 133 | 143 | 153 | 163 | 173 | 183 | 193 | 203 | 213 | 223 | 233 | 243 | 253 | 263 | 273 | 283 | 293 | 303 | 313 | 314 | 339 | 343 | 347 | 359 | 360 | 362 | 363 | 365 | image/svg+xml 366 | 368 | 369 | 370 | Lapo Calamandrei 371 | 372 | 373 | Window Manager 374 | 375 | 376 | 377 | 379 | 380 | 382 | 384 | 386 | 388 | 390 | 392 | 394 | 395 | 396 | 397 | 402 | 405 | 408 | 417 | 422 | 431 | 432 | 433 | 436 | 439 | 448 | 453 | 462 | 463 | 466 | 475 | 480 | 489 | 490 | 491 | 492 | 493 | -------------------------------------------------------------------------------- /glade/tile-triangle-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 23 | 46 | 60 | 61 | 63 | 70 | 72 | 76 | 80 | 81 | 83 | 87 | 91 | 92 | 94 | 98 | 102 | 103 | 113 | 123 | 133 | 143 | 153 | 163 | 173 | 183 | 193 | 203 | 213 | 223 | 233 | 243 | 253 | 263 | 273 | 283 | 293 | 303 | 313 | 314 | 339 | 343 | 347 | 359 | 360 | 362 | 363 | 365 | image/svg+xml 366 | 368 | 369 | 370 | Lapo Calamandrei 371 | 372 | 373 | Window Manager 374 | 375 | 376 | 377 | 379 | 380 | 382 | 384 | 386 | 388 | 390 | 392 | 394 | 395 | 396 | 397 | 402 | 405 | 408 | 417 | 422 | 431 | 432 | 435 | 444 | 449 | 458 | 459 | 460 | 463 | 466 | 475 | 480 | 489 | 490 | 491 | 492 | 493 | --------------------------------------------------------------------------------