merge in trunk and port dnd-tabs code accordingly
|
@ -0,0 +1 @@
|
||||||
|
*.pyc
|
|
@ -2,7 +2,9 @@ terminator 0.9:
|
||||||
* Added support for ~/.terminatorrc
|
* Added support for ~/.terminatorrc
|
||||||
* Added kwybindings for terms size and scrollbar manipulation. Thanks
|
* Added kwybindings for terms size and scrollbar manipulation. Thanks
|
||||||
Emmanuel Bretelle.
|
Emmanuel Bretelle.
|
||||||
|
* Completely revamped config system which now transparently makes use
|
||||||
|
of gconf settings if they are available, falls back to sensible
|
||||||
|
defaults if not, and can be overridden entirely by ~/.terminatorrc
|
||||||
|
|
||||||
terminator 0.8.1:
|
terminator 0.8.1:
|
||||||
* Fixed ChangeLog
|
* Fixed ChangeLog
|
||||||
|
|
5
README
|
@ -1,4 +1,4 @@
|
||||||
Terminator 0.8.1
|
Terminator 0.9
|
||||||
by Chris Jones <cmsj@tenshu.net>
|
by Chris Jones <cmsj@tenshu.net>
|
||||||
|
|
||||||
This is a little python script to give me lots of terminals in a single window, saving me valuable laptop screen space otherwise wasted on window decorations and not quite being able to fill the screen with terminals.
|
This is a little python script to give me lots of terminals in a single window, saving me valuable laptop screen space otherwise wasted on window decorations and not quite being able to fill the screen with terminals.
|
||||||
|
@ -20,4 +20,5 @@ the gedit terminal plugin is part of the gedit-plugins package, which is licence
|
||||||
|
|
||||||
I am thus licensing Terminator as GPL v2 only.
|
I am thus licensing Terminator as GPL v2 only.
|
||||||
|
|
||||||
Cristian Grada provided the icon under the same licence.
|
Cristian Grada provided the old icon under the same licence.
|
||||||
|
Cory Kontros provided the new icon under the CC-by-SA licence.
|
||||||
|
|
3
TODO
|
@ -1,4 +1 @@
|
||||||
* Edit doc/terminatorrc.5 manpage to contain the information about the options
|
* Edit doc/terminatorrc.5 manpage to contain the information about the options
|
||||||
* Write a Tab feature for terminator
|
|
||||||
|
|
||||||
* Drag and Drop terms
|
|
||||||
|
|
Before Width: | Height: | Size: 845 B After Width: | Height: | Size: 779 B |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 2.5 KiB |
|
@ -2,551 +2,524 @@
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
<svg
|
<svg
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
xmlns:cc="http://web.resource.org/cc/"
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
width="172"
|
width="48px"
|
||||||
height="172"
|
height="48px"
|
||||||
id="svg2"
|
id="svg1306"
|
||||||
sodipodi:version="0.32"
|
sodipodi:version="0.32"
|
||||||
inkscape:version="0.45.1"
|
inkscape:version="0.46"
|
||||||
version="1.0"
|
sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/apps"
|
||||||
sodipodi:docbase="/home/cris/Scrivania"
|
sodipodi:docname="utilities-terminal.svg"
|
||||||
sodipodi:docname="terminator_krig_proposal_02a.svg"
|
inkscape:export-filename="/home/andreas/projekt/bild/tango/terminal4.png"
|
||||||
|
inkscape:export-xdpi="240.00000"
|
||||||
|
inkscape:export-ydpi="240.00000"
|
||||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||||
<defs
|
<defs
|
||||||
id="defs4">
|
id="defs1308">
|
||||||
<linearGradient
|
<inkscape:perspective
|
||||||
id="linearGradient15900">
|
sodipodi:type="inkscape:persp3d"
|
||||||
<stop
|
inkscape:vp_x="0 : 24 : 1"
|
||||||
id="stop15902"
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
offset="0"
|
inkscape:vp_z="48 : 24 : 1"
|
||||||
style="stop-color:#1a1a1a;stop-opacity:0.556701;" />
|
inkscape:persp3d-origin="24 : 16 : 1"
|
||||||
<stop
|
id="perspective79" />
|
||||||
id="stop15904"
|
<radialGradient
|
||||||
offset="1"
|
inkscape:collect="always"
|
||||||
style="stop-color:#1a1a1a;stop-opacity:0;" />
|
xlink:href="#linearGradient5060"
|
||||||
</linearGradient>
|
id="radialGradient5031"
|
||||||
<linearGradient
|
gradientUnits="userSpaceOnUse"
|
||||||
id="linearGradient12950">
|
gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
|
||||||
<stop
|
cx="605.71429"
|
||||||
style="stop-color:#d75c25;stop-opacity:1;"
|
cy="486.64789"
|
||||||
offset="0"
|
fx="605.71429"
|
||||||
id="stop12952" />
|
fy="486.64789"
|
||||||
<stop
|
r="117.14286" />
|
||||||
style="stop-color:#681e06;stop-opacity:1;"
|
|
||||||
offset="1"
|
|
||||||
id="stop12954" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
<linearGradient
|
||||||
inkscape:collect="always"
|
inkscape:collect="always"
|
||||||
id="linearGradient5138">
|
id="linearGradient5060">
|
||||||
<stop
|
<stop
|
||||||
style="stop-color:#1a1a1a;stop-opacity:1;"
|
style="stop-color:black;stop-opacity:1;"
|
||||||
offset="0"
|
offset="0"
|
||||||
id="stop5140" />
|
id="stop5062" />
|
||||||
<stop
|
<stop
|
||||||
style="stop-color:#1a1a1a;stop-opacity:0;"
|
style="stop-color:black;stop-opacity:0;"
|
||||||
offset="1"
|
offset="1"
|
||||||
id="stop5142" />
|
id="stop5064" />
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient5060"
|
||||||
|
id="radialGradient5029"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
|
||||||
|
cx="605.71429"
|
||||||
|
cy="486.64789"
|
||||||
|
fx="605.71429"
|
||||||
|
fy="486.64789"
|
||||||
|
r="117.14286" />
|
||||||
<linearGradient
|
<linearGradient
|
||||||
id="linearGradient7104">
|
id="linearGradient5048">
|
||||||
<stop
|
<stop
|
||||||
id="stop7106"
|
style="stop-color:black;stop-opacity:0;"
|
||||||
offset="0"
|
offset="0"
|
||||||
style="stop-color:#171717;stop-opacity:1;" />
|
id="stop5050" />
|
||||||
<stop
|
<stop
|
||||||
style="stop-color:#3b3b3b;stop-opacity:1;"
|
id="stop5056"
|
||||||
offset="0.66666669"
|
|
||||||
id="stop7110" />
|
|
||||||
<stop
|
|
||||||
id="stop7108"
|
|
||||||
offset="1"
|
|
||||||
style="stop-color:#5f5f5f;stop-opacity:1;" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient7096">
|
|
||||||
<stop
|
|
||||||
id="stop7098"
|
|
||||||
offset="0"
|
|
||||||
style="stop-color:#272727;stop-opacity:1;" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#151515;stop-opacity:1;"
|
|
||||||
offset="0.5"
|
offset="0.5"
|
||||||
id="stop7100" />
|
style="stop-color:black;stop-opacity:1;" />
|
||||||
<stop
|
<stop
|
||||||
id="stop7102"
|
style="stop-color:black;stop-opacity:0;"
|
||||||
offset="1"
|
offset="1"
|
||||||
style="stop-color:#575757;stop-opacity:1;" />
|
id="stop5052" />
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient4183">
|
|
||||||
<stop
|
|
||||||
id="stop4185"
|
|
||||||
offset="0"
|
|
||||||
style="stop-color:#474747;stop-opacity:1;" />
|
|
||||||
<stop
|
|
||||||
id="stop4187"
|
|
||||||
offset="1"
|
|
||||||
style="stop-color:#2f2f2f;stop-opacity:1;" />
|
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient
|
<linearGradient
|
||||||
inkscape:collect="always"
|
inkscape:collect="always"
|
||||||
id="linearGradient10966">
|
xlink:href="#linearGradient5048"
|
||||||
|
id="linearGradient5027"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
|
||||||
|
x1="302.85715"
|
||||||
|
y1="366.64789"
|
||||||
|
x2="302.85715"
|
||||||
|
y2="609.50507" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="linearGradient6447">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#777973;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop6449" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#777973;stop-opacity:0;"
|
||||||
|
offset="1"
|
||||||
|
id="stop6451" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient4254">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#616161;stop-opacity:1.0000000;"
|
||||||
|
offset="0.0000000"
|
||||||
|
id="stop4256" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#a0a0a0;stop-opacity:1.0000000;"
|
||||||
|
offset="1.0000000"
|
||||||
|
id="stop4258" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient5176">
|
||||||
|
<stop
|
||||||
|
id="stop5178"
|
||||||
|
offset="0.0000000"
|
||||||
|
style="stop-color:#a2a59c;stop-opacity:1.0000000;" />
|
||||||
|
<stop
|
||||||
|
id="stop5180"
|
||||||
|
offset="1.0000000"
|
||||||
|
style="stop-color:#535750;stop-opacity:1.0000000;" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient2667">
|
||||||
|
<stop
|
||||||
|
id="stop2669"
|
||||||
|
offset="0.0000000"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
|
||||||
|
<stop
|
||||||
|
id="stop2671"
|
||||||
|
offset="1.0000000"
|
||||||
|
style="stop-color:#fcfcff;stop-opacity:0.0000000;" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
y2="26.729263"
|
||||||
|
x2="17.199417"
|
||||||
|
y1="1.6537577"
|
||||||
|
x1="11.492236"
|
||||||
|
gradientTransform="matrix(1.236157,0.000000,0.000000,0.896051,-1.081820,2.830699)"
|
||||||
|
id="linearGradient2673"
|
||||||
|
xlink:href="#linearGradient2667"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="linearGradient2238">
|
||||||
<stop
|
<stop
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
style="stop-color:#ffffff;stop-opacity:1;"
|
||||||
offset="0"
|
offset="0"
|
||||||
id="stop10968" />
|
id="stop2240" />
|
||||||
<stop
|
<stop
|
||||||
style="stop-color:#ffffff;stop-opacity:0;"
|
style="stop-color:#ffffff;stop-opacity:0;"
|
||||||
offset="1"
|
offset="1"
|
||||||
id="stop10970" />
|
id="stop2242" />
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient
|
<linearGradient
|
||||||
id="linearGradient10956">
|
id="linearGradient2224">
|
||||||
<stop
|
<stop
|
||||||
style="stop-color:#ffbf82;stop-opacity:1;"
|
style="stop-color:#32342f;stop-opacity:0.54639173;"
|
||||||
offset="0"
|
offset="0.0000000"
|
||||||
id="stop10958" />
|
id="stop2226" />
|
||||||
<stop
|
<stop
|
||||||
style="stop-color:#c21e0f;stop-opacity:1;"
|
style="stop-color:#32342f;stop-opacity:0;"
|
||||||
offset="1"
|
offset="1"
|
||||||
id="stop10960" />
|
id="stop2228" />
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient
|
<linearGradient
|
||||||
id="linearGradient7040">
|
id="linearGradient2214">
|
||||||
<stop
|
<stop
|
||||||
style="stop-color:#666666;stop-opacity:1;"
|
style="stop-color:#a9aaa7;stop-opacity:1.0000000;"
|
||||||
offset="0"
|
offset="0.0000000"
|
||||||
id="stop7042" />
|
id="stop2216" />
|
||||||
<stop
|
<stop
|
||||||
id="stop7048"
|
style="stop-color:#676964;stop-opacity:1.0000000;"
|
||||||
offset="0.5"
|
offset="1.0000000"
|
||||||
style="stop-color:#494949;stop-opacity:1;" />
|
id="stop2218" />
|
||||||
<stop
|
|
||||||
style="stop-color:#222222;stop-opacity:1;"
|
|
||||||
offset="1"
|
|
||||||
id="stop7044" />
|
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient
|
<linearGradient
|
||||||
id="linearGradient3134">
|
id="linearGradient2206">
|
||||||
<stop
|
<stop
|
||||||
style="stop-color:#1f1f1f;stop-opacity:1;"
|
style="stop-color:#777973;stop-opacity:1.0000000;"
|
||||||
|
offset="0.0000000"
|
||||||
|
id="stop2208" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#cbccca;stop-opacity:1.0000000;"
|
||||||
|
offset="1.0000000"
|
||||||
|
id="stop2210" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient2198">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff0000;stop-opacity:1;"
|
||||||
offset="0"
|
offset="0"
|
||||||
id="stop3136" />
|
id="stop2200" />
|
||||||
<stop
|
<stop
|
||||||
style="stop-color:#474747;stop-opacity:1;"
|
style="stop-color:#5a0000;stop-opacity:1;"
|
||||||
offset="1"
|
offset="1"
|
||||||
id="stop3138" />
|
id="stop2202" />
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient
|
<linearGradient
|
||||||
inkscape:collect="always"
|
inkscape:collect="always"
|
||||||
xlink:href="#linearGradient3134"
|
xlink:href="#linearGradient2198"
|
||||||
id="linearGradient3140"
|
id="linearGradient2204"
|
||||||
x1="135.12076"
|
x1="23.118565"
|
||||||
y1="169.61938"
|
y1="9.5830288"
|
||||||
x2="134.29579"
|
x2="22.440805"
|
||||||
y2="46.619389"
|
y2="34.225887"
|
||||||
gradientUnits="userSpaceOnUse"
|
gradientUnits="userSpaceOnUse"
|
||||||
gradientTransform="translate(-45.57938,-36.629579)" />
|
gradientTransform="matrix(0.9500924,0,0,0.9650936,1.1833929,0.2767092)" />
|
||||||
<linearGradient
|
<linearGradient
|
||||||
inkscape:collect="always"
|
inkscape:collect="always"
|
||||||
xlink:href="#linearGradient7040"
|
xlink:href="#linearGradient2206"
|
||||||
id="linearGradient7046"
|
id="linearGradient2212"
|
||||||
x1="112.87043"
|
x1="29.870447"
|
||||||
y1="169.61938"
|
y1="32.285740"
|
||||||
x2="112.43217"
|
x2="24.841814"
|
||||||
y2="46.619389"
|
y2="14.157946"
|
||||||
gradientUnits="userSpaceOnUse"
|
gradientUnits="userSpaceOnUse"
|
||||||
gradientTransform="translate(-45.57938,-36.629579)" />
|
gradientTransform="matrix(0.957412,0.000000,0.000000,0.952331,1.022766,0.133307)" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient5176"
|
||||||
|
id="linearGradient2220"
|
||||||
|
x1="8.6529236"
|
||||||
|
y1="9.5865316"
|
||||||
|
x2="21.305075"
|
||||||
|
y2="32.497993"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.957412,0.000000,0.000000,0.952331,1.022766,0.133307)" />
|
||||||
<radialGradient
|
<radialGradient
|
||||||
inkscape:collect="always"
|
inkscape:collect="always"
|
||||||
xlink:href="#linearGradient10956"
|
xlink:href="#linearGradient2224"
|
||||||
id="radialGradient15848"
|
id="radialGradient2230"
|
||||||
|
cx="24.041630"
|
||||||
|
cy="42.242130"
|
||||||
|
fx="24.041630"
|
||||||
|
fy="42.242130"
|
||||||
|
r="17.576654"
|
||||||
|
gradientTransform="matrix(1.000000,0.000000,0.000000,0.304598,-1.841788e-16,29.37527)"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient2238"
|
||||||
|
id="linearGradient2244"
|
||||||
|
x1="20.338758"
|
||||||
|
y1="19.636894"
|
||||||
|
x2="48.845253"
|
||||||
|
y2="49.730762"
|
||||||
gradientUnits="userSpaceOnUse"
|
gradientUnits="userSpaceOnUse"
|
||||||
cx="119.6635"
|
gradientTransform="matrix(0.953506,0.000000,0.000000,0.947873,1.141528,1.205591)" />
|
||||||
cy="85.430122"
|
|
||||||
fx="119.6635"
|
|
||||||
fy="85.430122"
|
|
||||||
r="33.477612" />
|
|
||||||
<linearGradient
|
<linearGradient
|
||||||
inkscape:collect="always"
|
inkscape:collect="always"
|
||||||
xlink:href="#linearGradient10966"
|
xlink:href="#linearGradient4254"
|
||||||
id="linearGradient15850"
|
id="linearGradient4260"
|
||||||
|
x1="11.048059"
|
||||||
|
y1="9.1463490"
|
||||||
|
x2="26.178129"
|
||||||
|
y2="30.343304"
|
||||||
gradientUnits="userSpaceOnUse"
|
gradientUnits="userSpaceOnUse"
|
||||||
x1="118.10041"
|
gradientTransform="matrix(0.9975908,0,0,0.9893614,4.354704e-2,9.1764254e-2)" />
|
||||||
y1="49.383987"
|
|
||||||
x2="117.75305"
|
|
||||||
y2="79.951157" />
|
|
||||||
<linearGradient
|
<linearGradient
|
||||||
inkscape:collect="always"
|
inkscape:collect="always"
|
||||||
xlink:href="#linearGradient7104"
|
xlink:href="#linearGradient2214"
|
||||||
id="linearGradient3173"
|
id="linearGradient5719"
|
||||||
x1="113.9577"
|
x1="40.253334"
|
||||||
y1="150.68437"
|
y1="42.318577"
|
||||||
x2="114.0788"
|
x2="36.451904"
|
||||||
y2="164.55688"
|
y2="37.999615"
|
||||||
gradientUnits="userSpaceOnUse" />
|
gradientUnits="userSpaceOnUse"
|
||||||
<linearGradient
|
gradientTransform="matrix(1.000000,0.000000,0.000000,0.744756,0.000000,9.569132)" />
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient7096"
|
|
||||||
id="linearGradient3181"
|
|
||||||
x1="113.9577"
|
|
||||||
y1="150.68437"
|
|
||||||
x2="114.0788"
|
|
||||||
y2="164.55688"
|
|
||||||
gradientUnits="userSpaceOnUse" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient3134"
|
|
||||||
id="linearGradient4176"
|
|
||||||
x1="85.828339"
|
|
||||||
y1="160.75204"
|
|
||||||
x2="86.765663"
|
|
||||||
y2="113.1199"
|
|
||||||
gradientUnits="userSpaceOnUse" />
|
|
||||||
<radialGradient
|
<radialGradient
|
||||||
inkscape:collect="always"
|
inkscape:collect="always"
|
||||||
xlink:href="#linearGradient4183"
|
xlink:href="#linearGradient6447"
|
||||||
id="radialGradient4181"
|
id="radialGradient6453"
|
||||||
cx="79.321526"
|
cx="37.495606"
|
||||||
cy="145.48856"
|
cy="39.510023"
|
||||||
fx="79.321526"
|
fx="37.495606"
|
||||||
fy="145.48856"
|
fy="39.510023"
|
||||||
r="19.395096"
|
r="2.5100370"
|
||||||
gradientTransform="matrix(1,0,0,1.2960101,0,-40.925212)"
|
gradientTransform="matrix(1.000000,0.000000,0.000000,0.737790,0.000000,9.844321)"
|
||||||
gradientUnits="userSpaceOnUse" />
|
gradientUnits="userSpaceOnUse" />
|
||||||
<radialGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient10966"
|
|
||||||
id="radialGradient3184"
|
|
||||||
cx="79.321526"
|
|
||||||
cy="148.53423"
|
|
||||||
fx="79.321526"
|
|
||||||
fy="148.53423"
|
|
||||||
r="18.395096"
|
|
||||||
gradientTransform="matrix(1,0,0,1.3121019,0,-43.150001)"
|
|
||||||
gradientUnits="userSpaceOnUse" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient10966"
|
|
||||||
id="linearGradient4165"
|
|
||||||
x1="91.741142"
|
|
||||||
y1="165.71468"
|
|
||||||
x2="91.741142"
|
|
||||||
y2="154.92818"
|
|
||||||
gradientUnits="userSpaceOnUse" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient5138"
|
|
||||||
id="linearGradient5144"
|
|
||||||
x1="79.321526"
|
|
||||||
y1="162.39238"
|
|
||||||
x2="79.321526"
|
|
||||||
y2="129.05859"
|
|
||||||
gradientUnits="userSpaceOnUse" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient5138"
|
|
||||||
id="linearGradient5148"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
x1="79.321526"
|
|
||||||
y1="162.39238"
|
|
||||||
x2="79.321526"
|
|
||||||
y2="129.05859" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient12950"
|
|
||||||
id="linearGradient12956"
|
|
||||||
x1="137.27036"
|
|
||||||
y1="112.90773"
|
|
||||||
x2="137.67517"
|
|
||||||
y2="45.952511"
|
|
||||||
gradientUnits="userSpaceOnUse" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient10966"
|
|
||||||
id="linearGradient13954"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="translate(-45.57938,-36.629579)"
|
|
||||||
x1="112.87043"
|
|
||||||
y1="169.61938"
|
|
||||||
x2="112.43217"
|
|
||||||
y2="46.619389" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient15900"
|
|
||||||
id="linearGradient14929"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="translate(-45.57938,-36.629579)"
|
|
||||||
x1="118.31248"
|
|
||||||
y1="48.612362"
|
|
||||||
x2="118.65166"
|
|
||||||
y2="131.94485" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient15900"
|
|
||||||
id="linearGradient16878"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="translate(-45.57938,-36.629579)"
|
|
||||||
x1="118.31248"
|
|
||||||
y1="48.612362"
|
|
||||||
x2="118.65166"
|
|
||||||
y2="131.94485" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient15900"
|
|
||||||
id="linearGradient16882"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="translate(-45.57938,-36.629579)"
|
|
||||||
x1="84.463188"
|
|
||||||
y1="45.379578"
|
|
||||||
x2="120.99507"
|
|
||||||
y2="140.86775" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient10966"
|
|
||||||
id="linearGradient16885"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
x1="118.10041"
|
|
||||||
y1="49.383987"
|
|
||||||
x2="117.75305"
|
|
||||||
y2="79.951157" />
|
|
||||||
</defs>
|
</defs>
|
||||||
<sodipodi:namedview
|
<sodipodi:namedview
|
||||||
id="base"
|
id="base"
|
||||||
pagecolor="#ffffff"
|
pagecolor="#ffffff"
|
||||||
bordercolor="#666666"
|
bordercolor="#666666"
|
||||||
borderopacity="1.0"
|
borderopacity="0.19607843"
|
||||||
gridtolerance="10000"
|
|
||||||
guidetolerance="10"
|
|
||||||
objecttolerance="10"
|
|
||||||
inkscape:pageopacity="0.0"
|
inkscape:pageopacity="0.0"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:zoom="4.2674419"
|
inkscape:zoom="1"
|
||||||
inkscape:cx="86.000001"
|
inkscape:cx="24.250101"
|
||||||
inkscape:cy="84.853412"
|
inkscape:cy="27.349621"
|
||||||
inkscape:document-units="px"
|
|
||||||
inkscape:current-layer="layer1"
|
inkscape:current-layer="layer1"
|
||||||
width="172px"
|
showgrid="false"
|
||||||
height="172px"
|
inkscape:grid-bbox="true"
|
||||||
inkscape:window-width="1272"
|
inkscape:document-units="px"
|
||||||
inkscape:window-height="946"
|
inkscape:window-width="1460"
|
||||||
inkscape:window-x="0"
|
inkscape:window-height="1129"
|
||||||
inkscape:window-y="25" />
|
inkscape:window-x="321"
|
||||||
|
inkscape:window-y="50"
|
||||||
|
showguides="true"
|
||||||
|
inkscape:guide-bbox="true"
|
||||||
|
inkscape:showpageshadow="false" />
|
||||||
<metadata
|
<metadata
|
||||||
id="metadata7">
|
id="metadata1311">
|
||||||
<rdf:RDF>
|
<rdf:RDF>
|
||||||
<cc:Work
|
<cc:Work
|
||||||
rdf:about="">
|
rdf:about="">
|
||||||
<dc:format>image/svg+xml</dc:format>
|
<dc:format>image/svg+xml</dc:format>
|
||||||
<dc:type
|
<dc:type
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title>Terminal</dc:title>
|
||||||
|
<dc:date>2005-10-15</dc:date>
|
||||||
|
<dc:creator>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Andreas Nilsson</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:creator>
|
||||||
|
<dc:subject>
|
||||||
|
<rdf:Bag>
|
||||||
|
<rdf:li>terminal</rdf:li>
|
||||||
|
<rdf:li>emulator</rdf:li>
|
||||||
|
<rdf:li>term</rdf:li>
|
||||||
|
<rdf:li>command line</rdf:li>
|
||||||
|
</rdf:Bag>
|
||||||
|
</dc:subject>
|
||||||
|
<cc:license
|
||||||
|
rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
|
||||||
|
<dc:contributor>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Jakub Steiner</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:contributor>
|
||||||
</cc:Work>
|
</cc:Work>
|
||||||
|
<cc:License
|
||||||
|
rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
|
||||||
|
<cc:permits
|
||||||
|
rdf:resource="http://web.resource.org/cc/Reproduction" />
|
||||||
|
<cc:permits
|
||||||
|
rdf:resource="http://web.resource.org/cc/Distribution" />
|
||||||
|
<cc:requires
|
||||||
|
rdf:resource="http://web.resource.org/cc/Notice" />
|
||||||
|
<cc:requires
|
||||||
|
rdf:resource="http://web.resource.org/cc/Attribution" />
|
||||||
|
<cc:permits
|
||||||
|
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
|
||||||
|
<cc:requires
|
||||||
|
rdf:resource="http://web.resource.org/cc/ShareAlike" />
|
||||||
|
</cc:License>
|
||||||
</rdf:RDF>
|
</rdf:RDF>
|
||||||
</metadata>
|
</metadata>
|
||||||
<g
|
<g
|
||||||
|
id="layer1"
|
||||||
inkscape:label="Layer 1"
|
inkscape:label="Layer 1"
|
||||||
inkscape:groupmode="layer"
|
inkscape:groupmode="layer">
|
||||||
id="layer1">
|
<g
|
||||||
<path
|
id="g5022"
|
||||||
sodipodi:type="arc"
|
transform="matrix(2.454499e-2,0,0,2.086758e-2,46.14369,39.34109)">
|
||||||
style="opacity:0.77348066;fill:#1a1a1a;fill-opacity:0.47953216;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
<rect
|
||||||
id="path5150"
|
y="-150.69685"
|
||||||
sodipodi:cx="86.468666"
|
x="-1559.2523"
|
||||||
sodipodi:cy="151.84741"
|
height="478.35718"
|
||||||
sodipodi:rx="77.564034"
|
width="1339.6335"
|
||||||
sodipodi:ry="7.9673023"
|
id="rect4173"
|
||||||
d="M 164.0327 151.84741 A 77.564034 7.9673023 0 1 1 8.9046326,151.84741 A 77.564034 7.9673023 0 1 1 164.0327 151.84741 z"
|
style="opacity:0.40206185;color:black;fill:url(#linearGradient5027);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||||
transform="matrix(0.9712991,0,0,1,3.1184969,0)" />
|
<path
|
||||||
<path
|
sodipodi:nodetypes="cccc"
|
||||||
sodipodi:type="arc"
|
id="path5058"
|
||||||
style="opacity:1;fill:url(#linearGradient3173);fill-opacity:1;stroke:url(#linearGradient3181);stroke-width:2.34342261;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
|
||||||
id="path2194"
|
style="opacity:0.40206185;color:black;fill:url(#radialGradient5029);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||||
sodipodi:cx="91.741142"
|
<path
|
||||||
sodipodi:cy="158.76022"
|
style="opacity:0.40206185;color:black;fill:url(#radialGradient5031);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||||
sodipodi:rx="56.825615"
|
d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
|
||||||
sodipodi:ry="6.9128065"
|
id="path5018"
|
||||||
d="M 148.56676 158.76022 A 56.825615 6.9128065 0 1 1 34.915527,158.76022 A 56.825615 6.9128065 0 1 1 148.56676 158.76022 z"
|
sodipodi:nodetypes="cccc" />
|
||||||
transform="matrix(0.9926042,0,0,1.6510688,-4.191546,-110.28481)" />
|
</g>
|
||||||
<path
|
|
||||||
sodipodi:type="arc"
|
|
||||||
style="opacity:1;fill:url(#radialGradient4181);fill-opacity:1;stroke:url(#linearGradient4176);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
id="path3191"
|
|
||||||
sodipodi:cx="79.321526"
|
|
||||||
sodipodi:cy="138.25613"
|
|
||||||
sodipodi:rx="18.395096"
|
|
||||||
sodipodi:ry="24.13624"
|
|
||||||
d="M 97.716621 138.25613 A 18.395096 24.13624 0 1 1 60.92643,138.25613 A 18.395096 24.13624 0 1 1 97.716621 138.25613 z"
|
|
||||||
transform="translate(7.5495758,-5.5149864)" />
|
|
||||||
<path
|
|
||||||
transform="matrix(1.0127389,0,0,-0.7959,6.5391103,245.19359)"
|
|
||||||
d="M 97.716621 138.25613 A 18.395096 24.13624 0 1 1 60.92643,138.25613 A 18.395096 24.13624 0 1 1 97.716621 138.25613 z"
|
|
||||||
sodipodi:ry="24.13624"
|
|
||||||
sodipodi:rx="18.395096"
|
|
||||||
sodipodi:cy="138.25613"
|
|
||||||
sodipodi:cx="79.321526"
|
|
||||||
id="path5146"
|
|
||||||
style="opacity:1;fill:url(#linearGradient5148);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
sodipodi:type="arc" />
|
|
||||||
<rect
|
<rect
|
||||||
style="opacity:1;fill:url(#linearGradient7046);fill-opacity:1;stroke:url(#linearGradient3140);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
style="opacity:1.0000000;fill:url(#linearGradient2212);fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2220);stroke-width:0.99999946;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
|
||||||
id="rect2160"
|
id="rect1316"
|
||||||
width="160"
|
width="44.996037"
|
||||||
height="120"
|
height="38.998734"
|
||||||
x="6.8711014"
|
x="1.5026338"
|
||||||
y="11.489811"
|
y="3.5015533"
|
||||||
ry="16.325644"
|
rx="4.8517075"
|
||||||
rx="16.325644" />
|
ry="4.8517079" />
|
||||||
<rect
|
<rect
|
||||||
ry="7.273283"
|
style="opacity:1;fill:url(#linearGradient2204);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4260);stroke-width:0.99467027;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
rx="7.273283"
|
id="rect1314"
|
||||||
y="68.21653"
|
width="37.088291"
|
||||||
x="19.041515"
|
height="29.005329"
|
||||||
height="14.546566"
|
x="5.4357266"
|
||||||
width="52.06081"
|
y="7.4998446"
|
||||||
id="rect4138"
|
rx="1.6452278"
|
||||||
style="opacity:1;fill:#333333;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
ry="1.6442512" />
|
||||||
|
<g
|
||||||
|
id="g2286"
|
||||||
|
style="opacity:0.25568182">
|
||||||
|
<path
|
||||||
|
id="path1345"
|
||||||
|
d="M 8.0152033,11.500361 L 39.994145,11.500361"
|
||||||
|
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#181f10;stroke-width:1.00072134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#181f10;stroke-width:1.00072134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M 8.0152033,13.500361 L 39.994145,13.500361"
|
||||||
|
id="path2264" />
|
||||||
|
<path
|
||||||
|
id="path2266"
|
||||||
|
d="M 8.0152033,15.500361 L 39.994145,15.500361"
|
||||||
|
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#181f10;stroke-width:1.00072134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#181f10;stroke-width:1.00072134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M 8.0152033,17.500361 L 39.994145,17.500361"
|
||||||
|
id="path2268" />
|
||||||
|
<path
|
||||||
|
id="path2270"
|
||||||
|
d="M 8.0152033,19.500361 L 39.994145,19.500361"
|
||||||
|
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#181f10;stroke-width:1.00072134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#181f10;stroke-width:1.00072134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M 8.0152033,21.500361 L 39.994145,21.500361"
|
||||||
|
id="path2272" />
|
||||||
|
<path
|
||||||
|
id="path2274"
|
||||||
|
d="M 8.0152033,23.500361 L 39.994145,23.500361"
|
||||||
|
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#181f10;stroke-width:1.00072134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#181f10;stroke-width:1.00072134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M 8.0152033,25.500361 L 39.994145,25.500361"
|
||||||
|
id="path2276" />
|
||||||
|
<path
|
||||||
|
id="path2278"
|
||||||
|
d="M 8.0152033,27.500361 L 39.994145,27.500361"
|
||||||
|
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#181f10;stroke-width:1.00072134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#181f10;stroke-width:1.00072134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M 8.0152033,29.500361 L 39.994145,29.500361"
|
||||||
|
id="path2280" />
|
||||||
|
<path
|
||||||
|
id="path2282"
|
||||||
|
d="M 8.0152033,31.500361 L 39.994145,31.500361"
|
||||||
|
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#181f10;stroke-width:1.00072134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#181f10;stroke-width:1.00072134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M 8.0152033,33.500361 L 39.994145,33.500361"
|
||||||
|
id="path2284" />
|
||||||
|
</g>
|
||||||
<rect
|
<rect
|
||||||
style="opacity:1;fill:#ff7f2a;fill-opacity:1;stroke:#ffca3a;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
style="opacity:0.76373626;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2244);stroke-width:0.99999946;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
id="rect5080"
|
id="rect2232"
|
||||||
width="52.06081"
|
width="42.945141"
|
||||||
height="14.546566"
|
height="37.000587"
|
||||||
x="19.041515"
|
x="2.5542557"
|
||||||
y="64.685196"
|
y="4.5007114"
|
||||||
rx="7.273283"
|
rx="3.7910469"
|
||||||
ry="7.273283" />
|
ry="3.7910469" />
|
||||||
<text
|
|
||||||
id="text4130"
|
|
||||||
y="51.997284"
|
|
||||||
x="17.630936"
|
|
||||||
style="font-size:40px;font-style:normal;font-weight:bold;fill:#333333;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.51764706;font-family:Bitstream Vera Sans"
|
|
||||||
xml:space="preserve"><tspan
|
|
||||||
y="51.997284"
|
|
||||||
x="17.630936"
|
|
||||||
id="tspan4132"
|
|
||||||
sodipodi:role="line">> |</tspan></text>
|
|
||||||
<text
|
|
||||||
xml:space="preserve"
|
|
||||||
style="font-size:40px;font-style:normal;font-weight:bold;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.51764706;font-family:Bitstream Vera Sans"
|
|
||||||
x="17.630936"
|
|
||||||
y="49.997284"
|
|
||||||
id="text6051"><tspan
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan6053"
|
|
||||||
x="17.630936"
|
|
||||||
y="49.997284">> |</tspan></text>
|
|
||||||
<text
|
|
||||||
xml:space="preserve"
|
|
||||||
style="font-size:40px;font-style:normal;font-weight:bold;fill:#333333;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.51764706;font-family:Bitstream Vera Sans"
|
|
||||||
x="17.630936"
|
|
||||||
y="117.99728"
|
|
||||||
id="text4134"><tspan
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan4136"
|
|
||||||
x="17.630936"
|
|
||||||
y="117.99728">> |</tspan></text>
|
|
||||||
<path
|
<path
|
||||||
sodipodi:type="inkscape:offset"
|
style="font-size:18.58501053px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#ff0000;stroke-width:0.36798642pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.2786885;font-family:Bitstream Vera Sans Mono"
|
||||||
inkscape:radius="0.65598136"
|
d="M 8.5171086,12.191731 L 8.5171086,11.067756 L 11.823403,12.562073 L 11.823403,13.245026 L 8.5171086,14.749146 L 8.5171086,13.628511 L 11.079912,12.946316 L 8.5171086,12.191731 z M 15.469341,15.881295 L 15.469341,16.607773 L 11.457036,16.607773 L 11.457036,15.881295 L 15.469341,15.881295"
|
||||||
inkscape:original="M 20.84375 9.40625 C 10.681044 9.40625 4.78125 17.649794 4.78125 27.8125 L 4.78125 98.84375 C 4.7896543 99.835787 5.4950627 100.68489 6.46875 100.875 C 44.954336 108.72507 78.917733 98.505116 106.4375 82.28125 C 133.95727 66.057384 155.12315 43.857132 168.40625 27.5625 C 168.74075 27.137983 168.89758 26.600282 168.84375 26.0625 C 167.95384 16.717116 160.09734 9.40625 150.53125 9.40625 L 20.84375 9.40625 z "
|
id="text1340"
|
||||||
style="fill:url(#linearGradient16882);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
|
sodipodi:nodetypes="ccccccccccccc" />
|
||||||
id="path16880"
|
|
||||||
d="M 20.84375,8.75 C 15.585029,8.75 11.360503,10.903968 8.5,14.375 C 5.6394968,17.846032 4.125,22.604207 4.125,27.8125 L 4.125,98.84375 C 4.1360116,100.14355 5.0679936,101.28216 6.34375,101.53125 C 45.012631,109.41871 79.161901,99.126323 106.78125,82.84375 C 134.39979,66.561659 155.59189,44.301732 168.90625,27.96875 C 169.34572,27.411017 169.57072,26.70654 169.5,26 C 168.57861,16.324052 160.43156,8.75 150.53125,8.75 L 20.84375,8.75 z "
|
|
||||||
transform="matrix(-0.8999662,0,0,-0.604194,165.62654,131.26936)" />
|
|
||||||
<text
|
|
||||||
id="text6055"
|
|
||||||
y="115.99728"
|
|
||||||
x="17.630936"
|
|
||||||
style="font-size:40px;font-style:normal;font-weight:bold;fill:#ff7f2a;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
|
|
||||||
xml:space="preserve"><tspan
|
|
||||||
y="115.99728"
|
|
||||||
x="17.630936"
|
|
||||||
id="tspan6057"
|
|
||||||
sodipodi:role="line">> |</tspan></text>
|
|
||||||
<path
|
<path
|
||||||
d="M 152.14111 79.430122 A 32.477612 32.477612 0 1 1 87.185886,79.430122 A 32.477612 32.477612 0 1 1 152.14111 79.430122 z"
|
style="opacity:0.72413791;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.2786885"
|
||||||
sodipodi:ry="32.477612"
|
d="M 23 9.9375 L 23 21 L 7.96875 21 L 7.96875 23 L 23 23 L 23 34.09375 L 25 34.09375 L 25 23 L 40.03125 23 L 40.03125 21 L 25 21 L 25 9.9375 L 23 9.9375 z "
|
||||||
sodipodi:rx="32.477612"
|
id="rect3228" />
|
||||||
sodipodi:cy="79.430122"
|
|
||||||
sodipodi:cx="119.6635"
|
|
||||||
id="path11947"
|
|
||||||
style="opacity:0.41436462;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
sodipodi:type="arc"
|
|
||||||
transform="matrix(1.0828472,0,0,1.0972776,-10.035093,-15.897808)" />
|
|
||||||
<path
|
<path
|
||||||
sodipodi:type="arc"
|
sodipodi:nodetypes="ccccccc"
|
||||||
style="fill:url(#radialGradient15848);fill-opacity:1;stroke:url(#linearGradient12956);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
style="opacity:0.53142856;fill:url(#linearGradient2673);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.25pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
id="path9985"
|
d="M 7.625388,8 C 7.102102,8 6.05153,8.190188 6.05153,9.0259761 L 6.16958,25.542519 C 23.841567,24.579133 20.294433,17.286426 42,13.633318 L 41.937264,9.2913791 C 41.859002,8.1662868 41.397947,8.0594548 40.327115,8.066071 L 7.625388,8 z "
|
||||||
sodipodi:cx="119.6635"
|
id="path2443" />
|
||||||
sodipodi:cy="79.430122"
|
|
||||||
sodipodi:rx="32.477612"
|
|
||||||
sodipodi:ry="32.477612"
|
|
||||||
d="M 152.14111 79.430122 A 32.477612 32.477612 0 1 1 87.185886,79.430122 A 32.477612 32.477612 0 1 1 152.14111 79.430122 z"
|
|
||||||
transform="translate(0,-8.5719268)" />
|
|
||||||
<text
|
|
||||||
xml:space="preserve"
|
|
||||||
style="font-size:72px;font-style:normal;font-weight:bold;opacity:0.91160221;fill:#ffffff;fill-opacity:1;stroke:#9f3021;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans"
|
|
||||||
x="89.270012"
|
|
||||||
y="93.694023"
|
|
||||||
id="text10974"><tspan
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan10976"
|
|
||||||
x="89.270012"
|
|
||||||
y="93.694023">+</tspan></text>
|
|
||||||
<path
|
|
||||||
transform="matrix(0.9391661,0,0,1.3304334,1.0624274,-59.614986)"
|
|
||||||
d="M 148.56676 158.76022 A 56.825615 6.9128065 0 1 1 34.915527,158.76022 A 56.825615 6.9128065 0 1 1 148.56676 158.76022 z"
|
|
||||||
sodipodi:ry="6.9128065"
|
|
||||||
sodipodi:rx="56.825615"
|
|
||||||
sodipodi:cy="158.76022"
|
|
||||||
sodipodi:cx="91.741142"
|
|
||||||
id="path3186"
|
|
||||||
style="opacity:0.75138122;fill:none;fill-opacity:1;stroke:url(#linearGradient4165);stroke-width:1.78921373;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
sodipodi:type="arc" />
|
|
||||||
<path
|
|
||||||
sodipodi:type="arc"
|
|
||||||
style="opacity:0.45856353;fill:url(#linearGradient5144);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
id="path4167"
|
|
||||||
sodipodi:cx="79.321526"
|
|
||||||
sodipodi:cy="138.25613"
|
|
||||||
sodipodi:rx="18.395096"
|
|
||||||
sodipodi:ry="24.13624"
|
|
||||||
d="M 97.716621 138.25613 A 18.395096 24.13624 0 1 1 60.92643,138.25613 A 18.395096 24.13624 0 1 1 97.716621 138.25613 z"
|
|
||||||
transform="matrix(1.3248408,0,0,0.3784243,-18.334455,96.351039)" />
|
|
||||||
<path
|
|
||||||
transform="matrix(0.6942675,0,0,0.6357059,31.800743,51.524158)"
|
|
||||||
d="M 97.716621 138.25613 A 18.395096 24.13624 0 1 1 60.92643,138.25613 A 18.395096 24.13624 0 1 1 97.716621 138.25613 z"
|
|
||||||
sodipodi:ry="24.13624"
|
|
||||||
sodipodi:rx="18.395096"
|
|
||||||
sodipodi:cy="138.25613"
|
|
||||||
sodipodi:cx="79.321526"
|
|
||||||
id="path2209"
|
|
||||||
style="opacity:0.31491713;fill:url(#radialGradient3184);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
sodipodi:type="arc" />
|
|
||||||
<rect
|
<rect
|
||||||
rx="13.949388"
|
style="opacity:0.71428572999999995;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
ry="13.822799"
|
id="rect1340"
|
||||||
y="13.79904"
|
width="34.026031"
|
||||||
x="9.479969"
|
height="26.057468"
|
||||||
height="115.38154"
|
x="6.9894562"
|
||||||
width="155.25093"
|
y="8.9805145"
|
||||||
id="rect9072"
|
rx="0.11773217"
|
||||||
style="opacity:1;fill:none;fill-opacity:1;stroke:#c2c2c2;stroke-width:1.93181098;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
ry="0.11773217" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:url(#radialGradient6453);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5719);stroke-width:1.00000119;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
id="rect5025"
|
||||||
|
width="4.0200734"
|
||||||
|
height="2.9590063"
|
||||||
|
x="35.485569"
|
||||||
|
y="37.514935"
|
||||||
|
rx="0.35819405"
|
||||||
|
ry="0.56022596" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
id="rect6458"
|
||||||
|
width="2"
|
||||||
|
height="2"
|
||||||
|
x="32"
|
||||||
|
y="38"
|
||||||
|
rx="0.56022543"
|
||||||
|
ry="0.56022543" />
|
||||||
<path
|
<path
|
||||||
sodipodi:type="arc"
|
sodipodi:type="arc"
|
||||||
style="fill:url(#linearGradient16885);fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||||
id="path10964"
|
id="path2300"
|
||||||
sodipodi:cx="117.75305"
|
sodipodi:cx="28.3125"
|
||||||
sodipodi:cy="65.362282"
|
sodipodi:cy="38.75"
|
||||||
sodipodi:rx="16.672998"
|
sodipodi:rx="0.5625"
|
||||||
sodipodi:ry="16.672998"
|
sodipodi:ry="0.5625"
|
||||||
d="M 134.42605 65.362282 A 16.672998 16.672998 0 1 1 101.08005,65.362282 A 16.672998 16.672998 0 1 1 134.42605 65.362282 z"
|
d="M 28.875 38.75 A 0.5625 0.5625 0 1 1 27.75,38.75 A 0.5625 0.5625 0 1 1 28.875 38.75 z"
|
||||||
transform="translate(2.2251497,-9.1225036)" />
|
transform="translate(4.375000,-6.250000e-2)" />
|
||||||
|
<path
|
||||||
|
style="font-size:18.58501053px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#ff0000;stroke-width:0.36798642pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.2786885;font-family:Bitstream Vera Sans Mono"
|
||||||
|
d="M 25.694705,12.191731 L 25.694705,11.067756 L 29.001001,12.562073 L 29.001001,13.245026 L 25.694705,14.749146 L 25.694705,13.628511 L 28.257509,12.946316 L 25.694705,12.191731 z M 32.646939,15.881295 L 32.646939,16.607773 L 28.634633,16.607773 L 28.634633,15.881295 L 32.646939,15.881295"
|
||||||
|
id="path3221"
|
||||||
|
sodipodi:nodetypes="ccccccccccccc" />
|
||||||
|
<path
|
||||||
|
style="font-size:18.58501053px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#ff0000;stroke-width:0.36798642pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.2786885;font-family:Bitstream Vera Sans Mono"
|
||||||
|
d="M 8.5171086,26.538666 L 8.5171086,25.414691 L 11.823408,26.909008 L 11.823408,27.591961 L 8.5171086,29.096081 L 8.5171086,27.975446 L 11.079916,27.293251 L 8.5171086,26.538666 z M 15.469346,30.22823 L 15.469346,30.954708 L 11.457041,30.954708 L 11.457041,30.22823 L 15.469346,30.22823"
|
||||||
|
id="path3223"
|
||||||
|
sodipodi:nodetypes="ccccccccccccc" />
|
||||||
|
<path
|
||||||
|
style="font-size:18.58501053px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#ff0000;stroke-width:0.36798642pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.2786885;font-family:Bitstream Vera Sans Mono"
|
||||||
|
d="M 25.694704,26.606311 L 25.694704,25.482336 L 29.001002,26.976653 L 29.001002,27.659606 L 25.694704,29.163726 L 25.694704,28.043091 L 28.257511,27.360896 L 25.694704,26.606311 z M 32.64694,30.295875 L 32.64694,31.022353 L 28.634636,31.022353 L 28.634636,30.295875 L 32.64694,30.295875"
|
||||||
|
id="path3226"
|
||||||
|
sodipodi:nodetypes="ccccccccccccc" />
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 23 KiB |
|
@ -1,3 +1,9 @@
|
||||||
|
terminator (0.9-0ubuntu1) hardy; urgency=low
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
|
||||||
|
-- Chris Jones <cmsj@tenshu.net> Wed, 19 Mar 2008 17:16:25 +0000
|
||||||
|
|
||||||
terminator (0.8.1-0ubuntu1) hardy; urgency=low
|
terminator (0.8.1-0ubuntu1) hardy; urgency=low
|
||||||
|
|
||||||
* New upstream release
|
* New upstream release
|
||||||
|
|
|
@ -9,9 +9,13 @@ Upstream Authors:
|
||||||
Huang He
|
Huang He
|
||||||
Kees Cook
|
Kees Cook
|
||||||
Thomas Meire
|
Thomas Meire
|
||||||
|
Nicolas Valcarcel
|
||||||
|
Emmanuel Bretelle
|
||||||
|
Chris Oattes
|
||||||
|
|
||||||
Artwork:
|
Artwork:
|
||||||
Cristian Grada - Drew our icon and licenced it to us under this licence
|
Cory Kontros - Produced our current icon under the CC-by-SA licence
|
||||||
|
Cristian Grada - Drew our original icon and licenced it to us under this licence
|
||||||
|
|
||||||
Translations:
|
Translations:
|
||||||
Thomas Meire
|
Thomas Meire
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
version=3
|
version=3
|
||||||
https://launchpad.net/terminator/+download .*/terminator_(.+)\.tar\.gz
|
https://launchpad.net/terminator/+download http://launchpad.net/terminator/.*/terminator_(.+)\.tar\.gz
|
||||||
|
|
|
@ -85,7 +85,7 @@ Toggle fullscreen
|
||||||
.SH "SEE ALSO"
|
.SH "SEE ALSO"
|
||||||
.BR gnome\-terminal(1),terminatorrc(5)
|
.BR gnome\-terminal(1),terminatorrc(5)
|
||||||
.SH "AUTHOR"
|
.SH "AUTHOR"
|
||||||
Terminator was written by Chris Jones <cmsj@tenshu.net>
|
Terminator was written by Chris Jones <cmsj@tenshu.net> and others.
|
||||||
.PP
|
.PP
|
||||||
This manual page was written by Chris Jones <cmsj@tenshu.net>
|
This manual page was written by Chris Jones <cmsj@tenshu.net>
|
||||||
for the Ubuntu project (but may be used by others).
|
for the Ubuntu project (but may be used by others).
|
||||||
|
|
69
setup.py
|
@ -2,12 +2,49 @@
|
||||||
|
|
||||||
from distutils.core import setup
|
from distutils.core import setup
|
||||||
from distutils.command.install_data import install_data
|
from distutils.command.install_data import install_data
|
||||||
|
from distutils.command.build import build
|
||||||
from distutils.dep_util import newer
|
from distutils.dep_util import newer
|
||||||
from distutils.log import info
|
from distutils.log import info
|
||||||
import glob
|
import glob
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
def import_terminator():
|
||||||
|
from types import ModuleType
|
||||||
|
module = ModuleType('terminator')
|
||||||
|
module_file = open('terminator', 'r')
|
||||||
|
exec module_file in module.__dict__
|
||||||
|
return module
|
||||||
|
|
||||||
|
APP_VERSION = import_terminator().APP_VERSION
|
||||||
|
|
||||||
|
PO_DIR = 'po'
|
||||||
|
MO_DIR = os.path.join('build', 'mo')
|
||||||
|
WITHOUT_NLS = sys.platform == 'win32' or os.environ.has_key("WITHOUT_NLS")
|
||||||
|
|
||||||
|
class BuildData(build):
|
||||||
|
def run (self):
|
||||||
|
build.run (self)
|
||||||
|
|
||||||
|
if WITHOUT_NLS:
|
||||||
|
return
|
||||||
|
|
||||||
|
for po in glob.glob (os.path.join (PO_DIR, '*.po')):
|
||||||
|
lang = os.path.basename(po[:-3])
|
||||||
|
mo = os.path.join(MO_DIR, lang + '.mo')
|
||||||
|
|
||||||
|
directory = os.path.dirname(mo)
|
||||||
|
if not os.path.exists(directory):
|
||||||
|
info('creating %s' % directory)
|
||||||
|
os.makedirs(directory)
|
||||||
|
|
||||||
|
if newer(po, mo):
|
||||||
|
cmd = 'msgfmt -o %s %s' % (mo, po)
|
||||||
|
info('compiling %s -> %s' % (po, mo))
|
||||||
|
if os.system(cmd) != 0:
|
||||||
|
raise SystemExit('Error while running msgfmt')
|
||||||
|
|
||||||
|
|
||||||
class InstallData(install_data):
|
class InstallData(install_data):
|
||||||
def run (self):
|
def run (self):
|
||||||
self.data_files.extend (self._compile_po_files ())
|
self.data_files.extend (self._compile_po_files ())
|
||||||
|
@ -17,39 +54,24 @@ class InstallData(install_data):
|
||||||
data_files = []
|
data_files = []
|
||||||
|
|
||||||
# Don't install language files on win32
|
# Don't install language files on win32
|
||||||
if sys.platform == 'win32':
|
if WITHOUT_NLS:
|
||||||
return data_files
|
return data_files
|
||||||
|
|
||||||
PO_DIR = 'po'
|
for mo in glob.glob (os.path.join (MO_DIR, '*.mo')):
|
||||||
for po in glob.glob (os.path.join (PO_DIR,'*.po')):
|
lang = os.path.basename(mo[:-3])
|
||||||
lang = os.path.basename(po[:-3])
|
dest = os.path.dirname(os.path.join('share', 'locale', lang, 'LC_MESSAGES', 'terminator.mo'))
|
||||||
mo = os.path.join('build', 'mo', lang, 'terminator.mo')
|
data_files.append((dest, [mo]))
|
||||||
|
|
||||||
directory = os.path.dirname(mo)
|
|
||||||
if not os.path.exists(directory):
|
|
||||||
info('creating %s' % directory)
|
|
||||||
os.makedirs(directory)
|
|
||||||
|
|
||||||
if newer(po, mo):
|
|
||||||
# True if mo doesn't exist
|
|
||||||
cmd = 'msgfmt -o %s %s' % (mo, po)
|
|
||||||
info('compiling %s -> %s' % (po, mo))
|
|
||||||
if os.system(cmd) != 0:
|
|
||||||
raise SystemExit('Error while running msgfmt')
|
|
||||||
|
|
||||||
dest = os.path.dirname(os.path.join('share', 'locale', lang, 'LC_MESSAGES', 'terminator.mo'))
|
|
||||||
data_files.append((dest, [mo]))
|
|
||||||
|
|
||||||
return data_files
|
return data_files
|
||||||
|
|
||||||
|
|
||||||
setup(name='Terminator',
|
setup(name='Terminator',
|
||||||
version='0.8.1',
|
version=APP_VERSION,
|
||||||
description='Terminator, the robot future of terminals',
|
description='Terminator, the robot future of terminals',
|
||||||
author='Chris Jones',
|
author='Chris Jones',
|
||||||
author_email='cmsj@tenshu.net',
|
author_email='cmsj@tenshu.net',
|
||||||
url='http://www.tenshu.net/terminator/',
|
url='http://www.tenshu.net/terminator/',
|
||||||
license='GPL v2',
|
license='GNU GPL v2',
|
||||||
scripts=['terminator'],
|
scripts=['terminator'],
|
||||||
data_files=[
|
data_files=[
|
||||||
('share/applications', ['data/terminator.desktop']),
|
('share/applications', ['data/terminator.desktop']),
|
||||||
|
@ -62,6 +84,7 @@ setup(name='Terminator',
|
||||||
('share/icons/hicolor/24x24/apps', glob.glob('data/icons/24x24/apps/*.png')),
|
('share/icons/hicolor/24x24/apps', glob.glob('data/icons/24x24/apps/*.png')),
|
||||||
('share/icons/hicolor/48x48/apps', glob.glob('data/icons/48x48/apps/*.png')),
|
('share/icons/hicolor/48x48/apps', glob.glob('data/icons/48x48/apps/*.png')),
|
||||||
],
|
],
|
||||||
cmdclass={'install_data': InstallData}
|
packages=['terminatorlib'],
|
||||||
|
cmdclass={'build': BuildData, 'install_data': InstallData}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
647
terminator
|
@ -58,21 +58,17 @@ class TerminatorConfig:
|
||||||
self.sources.append (source)
|
self.sources.append (source)
|
||||||
|
|
||||||
def __getattr__ (self, keyname):
|
def __getattr__ (self, keyname):
|
||||||
dbg ("Config: Looking for: %s"%keyname)
|
dbg ("TConfig: Looking for: '%s'"%keyname)
|
||||||
for source in self.sources:
|
for source in self.sources:
|
||||||
try:
|
try:
|
||||||
val = getattr (source, keyname)
|
val = getattr (source, keyname)
|
||||||
dbg ("Config: got: %s from a %s"%(val, source.type))
|
dbg (" TConfig: got: '%s' from a '%s'"%(val, source.type))
|
||||||
return (val)
|
return (val)
|
||||||
except:
|
except:
|
||||||
dbg ("Config: no value found in %s."%source.type)
|
|
||||||
pass
|
pass
|
||||||
dbg ("Config: Out of sources")
|
|
||||||
raise (AttributeError)
|
|
||||||
|
|
||||||
def set_reconfigure_callback (self, function):
|
dbg (" TConfig: Out of sources")
|
||||||
self.reconfigure_callback = function
|
raise (AttributeError)
|
||||||
return (True)
|
|
||||||
|
|
||||||
class TerminatorConfValuestore:
|
class TerminatorConfValuestore:
|
||||||
type = "Base"
|
type = "Base"
|
||||||
|
@ -80,39 +76,48 @@ class TerminatorConfValuestore:
|
||||||
reconfigure_callback = None
|
reconfigure_callback = None
|
||||||
|
|
||||||
# Our settings
|
# Our settings
|
||||||
# FIXME: Is it acceptable to not explicitly store the type, but
|
|
||||||
# instead infer it from defaults[key].__class__.__name__
|
|
||||||
defaults = {
|
defaults = {
|
||||||
'gt_dir' : [str, '/apps/gnome-terminal'],
|
'gt_dir' : '/apps/gnome-terminal',
|
||||||
'profile_dir' : [str, '/apps/gnome-terminal/profiles'],
|
'profile_dir' : '/apps/gnome-terminal/profiles',
|
||||||
'titlebars' : [bool, True],
|
'titlebars' : True,
|
||||||
'titletips' : [bool, False],
|
'titletips' : False,
|
||||||
'allow_bold' : [bool, False],
|
'allow_bold' : False,
|
||||||
'silent_bell' : [bool, True],
|
'silent_bell' : True,
|
||||||
'background_color' : [str, '#000000'],
|
'background_color' : '#000000',
|
||||||
'background_darkness' : [float, 0.5],
|
'background_darkness' : 0.5,
|
||||||
'background_type' : [str, 'solid'],
|
'background_type' : 'solid',
|
||||||
'backspace_binding' : [str, 'ascii-del'],
|
'backspace_binding' : 'ascii-del',
|
||||||
'delete_binding' : [str, 'delete-sequence'],
|
'delete_binding' : 'delete-sequence',
|
||||||
'cursor_blink' : [bool, False],
|
'cursor_blink' : False,
|
||||||
'emulation' : [str, 'xterm'],
|
'emulation' : 'xterm',
|
||||||
'font' : [str, 'Serif 10'],
|
'font' : 'Serif 10',
|
||||||
'foreground_color' : [str, '#AAAAAA'],
|
'foreground_color' : '#AAAAAA',
|
||||||
'scrollbar_position' : [str, "right"],
|
'scrollbar_position' : "right",
|
||||||
'scroll_background' : [bool, True],
|
'scroll_background' : True,
|
||||||
'scroll_on_keystroke' : [bool, False],
|
'scroll_on_keystroke' : False,
|
||||||
'scroll_on_output' : [bool, False],
|
'scroll_on_output' : False,
|
||||||
'scrollback_lines' : [int, 100],
|
'scrollback_lines' : 100,
|
||||||
'focus' : [str, 'sloppy'],
|
'focus' : 'sloppy',
|
||||||
'exit_action' : [str, 'close'],
|
'exit_action' : 'close',
|
||||||
'palette' : [str, '#000000000000:#CDCD00000000:#0000CDCD0000:#CDCDCDCD0000:#30BF30BFA38E:#A53C212FA53C:#0000CDCDCDCD:#FAFAEBEBD7D7:#404040404040:#FFFF00000000:#0000FFFF0000:#FFFFFFFF0000:#00000000FFFF:#FFFF0000FFFF:#0000FFFFFFFF:#FFFFFFFFFFFF'],
|
'palette' : '#000000000000:#CDCD00000000:#0000CDCD0000:#CDCDCDCD0000:#30BF30BFA38E:#A53C212FA53C:#0000CDCDCDCD:#FAFAEBEBD7D7:#404040404040:#FFFF00000000:#0000FFFF0000:#FFFFFFFF0000:#00000000FFFF:#FFFF0000FFFF:#0000FFFFFFFF:#FFFFFFFFFFFF',
|
||||||
'word_chars' : [str, '-A-Za-z0-9,./?%&#:_'],
|
'word_chars' : '-A-Za-z0-9,./?%&#:_',
|
||||||
'mouse_autohide' : [bool, True],
|
'mouse_autohide' : True,
|
||||||
|
'update_records' : True,
|
||||||
|
'login_shell' : False,
|
||||||
|
'use_custom_command' : False,
|
||||||
|
'custom_command' : '',
|
||||||
|
'use_system_font' : True,
|
||||||
|
'use_theme_colors' : True,
|
||||||
|
'http_proxy' : '',
|
||||||
|
'ignore_hosts' : ['localhost','127.0.0.0/8','*.local'],
|
||||||
|
'encoding' : 'UTF-8',
|
||||||
|
'active_encodings' : ['UTF-8', 'ISO-8859-1'],
|
||||||
|
'overlay_type' : 'rectangle',
|
||||||
}
|
}
|
||||||
|
|
||||||
def __getattr__ (self, keyname):
|
def __getattr__ (self, keyname):
|
||||||
if self.values.has_key (keyname):
|
if self.values.has_key (keyname):
|
||||||
return self.values[keyname][1]
|
return self.values[keyname]
|
||||||
else:
|
else:
|
||||||
raise (AttributeError)
|
raise (AttributeError)
|
||||||
|
|
||||||
|
@ -127,7 +132,7 @@ class TerminatorConfValuestoreRC (TerminatorConfValuestore):
|
||||||
# that can be re-used when rc changes.
|
# that can be re-used when rc changes.
|
||||||
def __init__ (self):
|
def __init__ (self):
|
||||||
self.type = "RCFile"
|
self.type = "RCFile"
|
||||||
self.rcfilename = pwd.getpwuid (os.getuid ())[5] + "/.terminatorrc"
|
self.rcfilename = os.path.join(os.path.expanduser("~"), ".terminatorrc")
|
||||||
if os.path.exists (self.rcfilename):
|
if os.path.exists (self.rcfilename):
|
||||||
rcfile = open (self.rcfilename)
|
rcfile = open (self.rcfilename)
|
||||||
rc = rcfile.readlines ()
|
rc = rcfile.readlines ()
|
||||||
|
@ -138,33 +143,44 @@ class TerminatorConfValuestoreRC (TerminatorConfValuestore):
|
||||||
item = item.strip ()
|
item = item.strip ()
|
||||||
if item and item[0] != '#':
|
if item and item[0] != '#':
|
||||||
(key, value) = item.split ("=")
|
(key, value) = item.split ("=")
|
||||||
dbg ("VS_RCFile: Setting value %s to %s"%(key, value))
|
dbg (" VS_RCFile: Setting value %s to %s"%(key, value))
|
||||||
self.values[key] = [self.defaults[key][0], self.defaults[key][0](value)]
|
if value == 'True':
|
||||||
|
self.values[key] = True
|
||||||
|
elif value == 'False':
|
||||||
|
self.values[key] = False
|
||||||
except:
|
except:
|
||||||
|
dbg (" VS_RCFile: Exception handling: %s"%item)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class TerminatorConfValuestoreGConf (TerminatorConfValuestore):
|
class TerminatorConfValuestoreGConf (TerminatorConfValuestore):
|
||||||
profile = ""
|
profile = ""
|
||||||
client = None
|
client = None
|
||||||
|
cache = {}
|
||||||
|
|
||||||
def __init__ (self, profile = None):
|
def __init__ (self, profile = None):
|
||||||
self.type = "GConf"
|
self.type = "GConf"
|
||||||
|
|
||||||
|
import gconf
|
||||||
|
|
||||||
self.client = gconf.client_get_default ()
|
self.client = gconf.client_get_default ()
|
||||||
|
|
||||||
# Grab a couple of values from base class to avoid recursing with our __getattr__
|
# Grab a couple of values from base class to avoid recursing with our __getattr__
|
||||||
self._gt_dir = self.defaults['gt_dir'][1]
|
self._gt_dir = self.defaults['gt_dir']
|
||||||
self._profile_dir = self.defaults['profile_dir'][1]
|
self._profile_dir = self.defaults['profile_dir']
|
||||||
|
|
||||||
if not profile:
|
if not profile:
|
||||||
profile = self.client.get_string (self._gt_dir + '/global/default_profile')
|
profile = self.client.get_string (self._gt_dir + '/global/default_profile')
|
||||||
profiles = self.client.get_list (self._gt_dir + '/global/profile_list','string')
|
profiles = self.client.get_list (self._gt_dir + '/global/profile_list','string')
|
||||||
|
|
||||||
|
#set up the active encoding list
|
||||||
|
self.active_encodings = self.client.get_list (self._gt_dir + '/global/active_encodings', 'string')
|
||||||
|
|
||||||
|
#need to handle the list of Gconf.value
|
||||||
if profile in profiles:
|
if profile in profiles:
|
||||||
dbg ("VSGConf: Found profile '%s' in profile_list"%profile)
|
dbg (" VSGConf: Found profile '%s' in profile_list"%profile)
|
||||||
self.profile = '%s/%s'%(self._profile_dir, profile)
|
self.profile = '%s/%s'%(self._profile_dir, profile)
|
||||||
elif "Default" in profiles:
|
elif "Default" in profiles:
|
||||||
dbg ("VSGConf: profile '%s' not found, but 'Default' exists"%profile)
|
dbg (" VSGConf: profile '%s' not found, but 'Default' exists"%profile)
|
||||||
self.profile = '%s/%s'%(self._profile_dir, "Default")
|
self.profile = '%s/%s'%(self._profile_dir, "Default")
|
||||||
else:
|
else:
|
||||||
# We're a bit stuck, there is no profile in the list
|
# We're a bit stuck, there is no profile in the list
|
||||||
|
@ -178,25 +194,69 @@ class TerminatorConfValuestoreGConf (TerminatorConfValuestore):
|
||||||
|
|
||||||
self.client.add_dir ('/apps/metacity/general', gconf.CLIENT_PRELOAD_RECURSIVE)
|
self.client.add_dir ('/apps/metacity/general', gconf.CLIENT_PRELOAD_RECURSIVE)
|
||||||
self.client.notify_add ('/apps/metacity/general/focus_mode', self.on_gconf_notify)
|
self.client.notify_add ('/apps/metacity/general/focus_mode', self.on_gconf_notify)
|
||||||
|
self.client.add_dir ('/desktop/gnome/interface', gconf.CLIENT_PRELOAD_RECURSIVE)
|
||||||
|
self.client.notify_add ('/desktop/gnome/interface/monospace_font_name', self.on_gconf_notify)
|
||||||
|
# FIXME: Do we need to watch more non-profile stuff here?
|
||||||
|
|
||||||
|
def set_reconfigure_callback (self, function):
|
||||||
|
dbg (" VSConf: setting callback to: %s"%function)
|
||||||
|
self.reconfigure_callback = function
|
||||||
|
return (True)
|
||||||
|
|
||||||
def on_gconf_notify (self, client, cnxn_id, entry, what):
|
def on_gconf_notify (self, client, cnxn_id, entry, what):
|
||||||
|
dbg (" VSGConf: invalidating cache")
|
||||||
|
self.cache = {}
|
||||||
|
dbg (" VSGConf: gconf changed, callback is: %s"%self.reconfigure_callback)
|
||||||
if self.reconfigure_callback:
|
if self.reconfigure_callback:
|
||||||
self.reconfigure_callback ()
|
self.reconfigure_callback ()
|
||||||
|
|
||||||
def __getattr__ (self, key = ""):
|
def __getattr__ (self, key = ""):
|
||||||
ret = None
|
if self.cache.has_key (key):
|
||||||
|
dbg (" VSGConf: returning cached value: %s"%self.cache[key])
|
||||||
|
return (self.cache[key])
|
||||||
|
|
||||||
|
ret = None
|
||||||
|
value = None
|
||||||
|
|
||||||
|
dbg (' VSGConf: preparing: %s/%s'%(self.profile, key))
|
||||||
|
|
||||||
|
# FIXME: Ugly special cases we should look to fix in some other way.
|
||||||
|
if key == 'font' and self.use_system_font:
|
||||||
|
value = self.client.get ('/desktop/gnome/interface/monospace_font_name')
|
||||||
|
elif key == 'focus':
|
||||||
|
value = self.client.get ('/apps/metacity/general/focus_mode')
|
||||||
|
elif key == 'http_proxy':
|
||||||
|
if self.client.get_bool ('/system/http_proxy/use_http_proxy'):
|
||||||
|
dbg ('HACK: Mangling http_proxy')
|
||||||
|
|
||||||
|
if self.client.get_bool ('use_authentication'):
|
||||||
|
dbg ('HACK: Using proxy authentication')
|
||||||
|
value = 'http://%s:%s@%s:%s/'%(
|
||||||
|
self.client.get_string ('/system/http_proxy/authentication_user'),
|
||||||
|
self.client.get_string ('/system/http_proxy/authentication_password'),
|
||||||
|
self.client.get_string ('/system/http_proxy/host'),
|
||||||
|
self.client.get_int ('/system/http_proxy/port'))
|
||||||
|
else:
|
||||||
|
dbg ('HACK: Not using proxy authentication')
|
||||||
|
value = 'http://%s:%s/'%(
|
||||||
|
self.client.get_string ('/system/http_proxy/host'),
|
||||||
|
self.client.get_int ('/system/http_proxy/port'))
|
||||||
|
else:
|
||||||
|
value = self.client.get ('%s/%s'%(self.profile, key))
|
||||||
|
|
||||||
dbg ('VSGConf: preparing: %s/%s'%(self.profile, key))
|
|
||||||
value = self.client.get ('%s/%s'%(self.profile, key))
|
|
||||||
dbg ('VSGConf: getting: %s'%value)
|
|
||||||
if value:
|
if value:
|
||||||
funcname = "get_" + self.defaults[key][0].__name__
|
funcname = "get_" + self.defaults[key].__class__.__name__
|
||||||
|
dbg (' GConf: picked function: %s'%funcname)
|
||||||
# Special case for str
|
# Special case for str
|
||||||
if funcname == "get_str":
|
if funcname == "get_str":
|
||||||
funcname = "get_string"
|
funcname = "get_string"
|
||||||
|
# Special case for strlist
|
||||||
|
if funcname == "get_strlist":
|
||||||
|
funcname = "get_list"
|
||||||
typefunc = getattr (value, funcname)
|
typefunc = getattr (value, funcname)
|
||||||
ret = typefunc ()
|
ret = typefunc ()
|
||||||
|
|
||||||
|
self.cache[key] = ret
|
||||||
return (ret)
|
return (ret)
|
||||||
else:
|
else:
|
||||||
raise (AttributeError)
|
raise (AttributeError)
|
||||||
|
@ -230,4 +290,7 @@ if __name__ == '__main__':
|
||||||
print foo.titletips
|
print foo.titletips
|
||||||
|
|
||||||
# This should raise AttributeError
|
# This should raise AttributeError
|
||||||
print foo.blimnle
|
#print foo.blimnle
|
||||||
|
|
||||||
|
# http_proxy is a value that is allowed to not exist
|
||||||
|
print "final proxy: %s"%foo.http_proxy
|
|
@ -0,0 +1,108 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
# TerminatorEncoding - charset encoding classes
|
||||||
|
# Copyright (C) 2006-2008 chantra@debuntu.org
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, version 2 only.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
"""TerminatorEncoding by Emmanuel Bretelle <chantra@debuntu.org>
|
||||||
|
|
||||||
|
TerminatorEncoding supplies a list of possible encoding
|
||||||
|
values.
|
||||||
|
This list is taken from gnome-terminal's src/encoding.h
|
||||||
|
and src/encoding.c
|
||||||
|
"""
|
||||||
|
|
||||||
|
class TerminatorEncoding:
|
||||||
|
|
||||||
|
encodings = [
|
||||||
|
[True, None, _("Current Locale")],
|
||||||
|
[False, "ISO-8859-1", _("Western")],
|
||||||
|
[False, "ISO-8859-2", _("Central European")],
|
||||||
|
[False, "ISO-8859-3", _("South European") ],
|
||||||
|
[False, "ISO-8859-4", _("Baltic") ],
|
||||||
|
[False,"ISO-8859-5", _("Cyrillic") ],
|
||||||
|
[False, "ISO-8859-6", _("Arabic") ],
|
||||||
|
[False, "ISO-8859-7", _("Greek") ],
|
||||||
|
[False, "ISO-8859-8", _("Hebrew Visual") ],
|
||||||
|
[False, "ISO-8859-8-I", _("Hebrew") ],
|
||||||
|
[False, "ISO-8859-9", _("Turkish") ],
|
||||||
|
[False, "ISO-8859-10", _("Nordic") ],
|
||||||
|
[False, "ISO-8859-13", _("Baltic") ],
|
||||||
|
[False, "ISO-8859-14", _("Celtic") ],
|
||||||
|
[False, "ISO-8859-15", _("Western") ],
|
||||||
|
[False, "ISO-8859-16", _("Romanian") ],
|
||||||
|
[False, "UTF-7", _("Unicode") ],
|
||||||
|
[False, "UTF-8", _("Unicode") ],
|
||||||
|
[False, "UTF-16", _("Unicode") ],
|
||||||
|
[False, "UCS-2", _("Unicode") ],
|
||||||
|
[False, "UCS-4", _("Unicode") ],
|
||||||
|
[False, "ARMSCII-8", _("Armenian") ],
|
||||||
|
[False, "BIG5", _("Chinese Traditional") ],
|
||||||
|
[False, "BIG5-HKSCS", _("Chinese Traditional") ],
|
||||||
|
[False, "CP866", _("Cyrillic/Russian") ],
|
||||||
|
[False, "EUC-JP", _("Japanese") ],
|
||||||
|
[False, "EUC-KR", _("Korean") ],
|
||||||
|
[False, "EUC-TW", _("Chinese Traditional") ],
|
||||||
|
[False, "GB18030", _("Chinese Simplified") ],
|
||||||
|
[False, "GB2312", _("Chinese Simplified") ],
|
||||||
|
[False, "GBK", _("Chinese Simplified") ],
|
||||||
|
[False, "GEORGIAN-PS", _("Georgian") ],
|
||||||
|
[False, "HZ", _("Chinese Simplified") ],
|
||||||
|
[False, "IBM850", _("Western") ],
|
||||||
|
[False, "IBM852", _("Central European") ],
|
||||||
|
[False, "IBM855", _("Cyrillic") ],
|
||||||
|
[False, "IBM857", _("Turkish") ],
|
||||||
|
[False, "IBM862", _("Hebrew") ],
|
||||||
|
[False, "IBM864", _("Arabic") ],
|
||||||
|
[False, "ISO2022JP", _("Japanese") ],
|
||||||
|
[False, "ISO2022KR", _("Korean") ],
|
||||||
|
[False, "ISO-IR-111", _("Cyrillic") ],
|
||||||
|
[False, "JOHAB", _("Korean") ],
|
||||||
|
[False, "KOI8-R", _("Cyrillic") ],
|
||||||
|
[False, "KOI8-U", _("Cyrillic/Ukrainian") ],
|
||||||
|
[False, "MAC_ARABIC", _("Arabic") ],
|
||||||
|
[False, "MAC_CE", _("Central European") ],
|
||||||
|
[False, "MAC_CROATIAN", _("Croatian") ],
|
||||||
|
[False, "MAC-CYRILLIC", _("Cyrillic") ],
|
||||||
|
[False, "MAC_DEVANAGARI", _("Hindi") ],
|
||||||
|
[False, "MAC_FARSI", _("Persian") ],
|
||||||
|
[False, "MAC_GREEK", _("Greek") ],
|
||||||
|
[False, "MAC_GUJARATI", _("Gujarati") ],
|
||||||
|
[False, "MAC_GURMUKHI", _("Gurmukhi") ],
|
||||||
|
[False, "MAC_HEBREW", _("Hebrew") ],
|
||||||
|
[False, "MAC_ICELANDIC", _("Icelandic") ],
|
||||||
|
[False, "MAC_ROMAN", _("Western") ],
|
||||||
|
[False, "MAC_ROMANIAN", _("Romanian") ],
|
||||||
|
[False, "MAC_TURKISH", _("Turkish") ],
|
||||||
|
[False, "MAC_UKRAINIAN", _("Cyrillic/Ukrainian") ],
|
||||||
|
[False, "SHIFT-JIS", _("Japanese") ],
|
||||||
|
[False, "TCVN", _("Vietnamese") ],
|
||||||
|
[False, "TIS-620", _("Thai") ],
|
||||||
|
[False, "UHC", _("Korean") ],
|
||||||
|
[False, "VISCII", _("Vietnamese") ],
|
||||||
|
[False, "WINDOWS-1250", _("Central European") ],
|
||||||
|
[False, "WINDOWS-1251", _("Cyrillic") ],
|
||||||
|
[False, "WINDOWS-1252", _("Western") ],
|
||||||
|
[False, "WINDOWS-1253", _("Greek") ],
|
||||||
|
[False, "WINDOWS-1254", _("Turkish") ],
|
||||||
|
[False, "WINDOWS-1255", _("Hebrew") ],
|
||||||
|
[False, "WINDOWS-1256", _("Arabic") ],
|
||||||
|
[False, "WINDOWS-1257", _("Baltic") ],
|
||||||
|
[False, "WINDOWS-1258", _("Vietnamese") ]
|
||||||
|
]
|
||||||
|
|
||||||
|
def get_list():
|
||||||
|
return TerminatorEncoding.encodings
|
||||||
|
get_list = staticmethod(get_list)
|
||||||
|
|
|
@ -0,0 +1,83 @@
|
||||||
|
#!/usr/local/bin/python
|
||||||
|
#
|
||||||
|
# Use sysctl() to retrieve the cwd of an arbitrary process on FreeBSD.
|
||||||
|
# Tested on FreeBSD 7-STABLE/amd64 from April 11 2008.
|
||||||
|
#
|
||||||
|
# Be prepared for excitement if the structs are changed.
|
||||||
|
#
|
||||||
|
# Blame: Thomas Hurst <tom@hur.st>
|
||||||
|
#
|
||||||
|
|
||||||
|
from ctypes import *
|
||||||
|
|
||||||
|
# This is padded awkwardly, see /usr/include/sys/socket.h
|
||||||
|
class sockaddr_storage(Structure):
|
||||||
|
_fields_ = [
|
||||||
|
('ss_len', c_char),
|
||||||
|
('ss_family', c_char), # /usr/include/sys/_types.h; _uint8_t
|
||||||
|
('__ss_pad1', c_char * 6), # (sizeof(int64) - sizeof(char) - sizeof(ss_family_t))
|
||||||
|
('__ss_align', c_longlong),
|
||||||
|
('__ss_pad2', c_char * 112), # (128(maxsize) - sizeof(char) - sizeof(ss_family_t) -
|
||||||
|
# sizeof(ss_pad1) - sizeof(int64))
|
||||||
|
]
|
||||||
|
|
||||||
|
# struct kinfo_file, defined in /usr/include/sys/user.h
|
||||||
|
class kinfo_file(Structure):
|
||||||
|
_fields_ = [
|
||||||
|
('kf_structsize', c_int),
|
||||||
|
('kf_type', c_int),
|
||||||
|
('kf_fd', c_int),
|
||||||
|
('kf_ref_count', c_int),
|
||||||
|
('kf_flags', c_int),
|
||||||
|
('kf_offset', c_long), # this is a off_t, a pointer
|
||||||
|
('kf_vnode_type', c_int),
|
||||||
|
('kf_sock_domain', c_int),
|
||||||
|
('kf_sock_type', c_int),
|
||||||
|
('kf_sock_protocol', c_int),
|
||||||
|
('kf_path', c_char * 1024), # PATH_MAX
|
||||||
|
('kf_sa_local', sockaddr_storage),
|
||||||
|
('kf_sa_peer', sockaddr_storage),
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def get_process_cwd(pid):
|
||||||
|
libc = CDLL('libc.so')
|
||||||
|
|
||||||
|
len = c_uint(sizeof(c_uint))
|
||||||
|
ver = c_uint(0)
|
||||||
|
|
||||||
|
if (libc.sysctlbyname('kern.osreldate', byref(ver), byref(len), None, 0) < 0):
|
||||||
|
return None
|
||||||
|
|
||||||
|
# kern.proc.filedesc added for procstat(1) after these __FreeBSD_versions
|
||||||
|
if ver.value < 700104 and ver.value < 800019:
|
||||||
|
return None
|
||||||
|
|
||||||
|
# /usr/include/sys/sysctl.h
|
||||||
|
# CTL_KERN, KERN_PROC, KERN_PROC_FILEDESC
|
||||||
|
oid = (c_uint * 4)(1, 14, 14, pid)
|
||||||
|
|
||||||
|
if libc.sysctl(oid, 4, None, byref(len), None, 0) < 0:
|
||||||
|
return None
|
||||||
|
|
||||||
|
buf = c_char_p(" " * len.value)
|
||||||
|
if libc.sysctl(oid, 4, buf, byref(len), None, 0) < 0:
|
||||||
|
return None
|
||||||
|
|
||||||
|
kifs = cast(buf, POINTER(kinfo_file))
|
||||||
|
for i in range(0, len.value / sizeof(kinfo_file)):
|
||||||
|
kif = kifs[i]
|
||||||
|
if kif.kf_fd == -1: # KF_FD_TYPE_CWD
|
||||||
|
return kif.kf_path
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
import os, sys
|
||||||
|
print " => %d cwd = %s" % (os.getpid(), get_process_cwd(os.getpid()))
|
||||||
|
for pid in sys.argv:
|
||||||
|
try:
|
||||||
|
pid = int(pid)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
print " => %d cwd = %s" % (pid, get_process_cwd(pid))
|
||||||
|
|