Merge pull request 'develop' (#6) from develop into master

Reviewed-on: YanTheKaller/ubl-settings-video#6
pull/9/head
commit 596174b7ee

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg
fill="#000000"
width="64"
height="64"
viewBox="0 0 1.92 1.92"
role="img"
version="1.1"
id="svg6"
sodipodi:docname="amd-logo.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs10" />
<sodipodi:namedview
id="namedview8"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="8"
inkscape:cx="66"
inkscape:cy="24.5625"
inkscape:window-width="1920"
inkscape:window-height="1027"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg6" />
<title
id="title2">AMD icon</title>
<path
d="M 1.4659411,0.73095052 1.5906662,0.85575569 H 1.7951548 V 1.0603242 L 1.9200399,1.1851294 V 0.73095052 Z M 0.15996675,0.76159182 -3.99e-5,1.1584083 h 0.10472436 l 0.0296013,-0.078563 h 0.17768738 l 0.0326414,0.078563 H 0.45165888 L 0.27453152,0.76159182 Z m 0.336734,0 V 1.1580082 h 0.0990441 V 0.91063797 L 0.70278929,1.0356032 h 0.0150402 L 0.82487441,0.911118 v 0.2472903 h 0.0990442 V 0.76159182 H 0.83759494 L 0.7102296,0.90919797 0.58294434,0.76159182 Z m 0.50266086,0 V 1.1584083 H 1.1639285 c 0.1583266,0 0.2304095,-0.083684 0.2304095,-0.19776823 0,-0.1088045 -0.074963,-0.19904825 -0.219769,-0.19904825 z m 0.0989642,0.072803 h 0.063363 c 0.093604,0 0.1304054,0.0568823 0.1304054,0.1256052 0,0.0582426 -0.029761,0.12576518 -0.1292854,0.12576518 H 1.0983258 Z M 0.21948924,0.85623592 0.28277194,1.0108023 H 0.16060678 Z M 1.5905062,0.88079674 1.4621808,1.0090421 V 1.1890495 H 1.6418683 L 1.7701936,1.0604842 H 1.5905062 Z"
id="path4"
style="stroke-width:0.080003" />
<metadata
id="metadata827">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:title>AMD icon</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg
aria-label="Intel"
role="img"
viewBox="0 0 64 64"
version="1.1"
id="svg6"
sodipodi:docname="intel-logo.svg"
width="64"
height="64"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs10" />
<sodipodi:namedview
id="namedview8"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="7.8555144"
inkscape:cx="0.12729911"
inkscape:cy="21.195302"
inkscape:window-width="1920"
inkscape:window-height="1027"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg6" />
<path
fill="#0071c5"
d="M 18.904146,28.836478 V 39.116883 H 15.587887 V 26.183472 h 6.798331 c 2.81882,0 3.813697,1.98976 3.813697,3.8137 v 9.119711 h -3.150446 v -9.119711 c 0,-0.663247 -0.497438,-1.160694 -1.492315,-1.160694 z M 40.95727,28.670669 c -1.823941,0 -2.487197,1.160694 -2.487197,2.818826 h 5.140202 C 43.444467,29.997172 42.94703,28.670669 40.95727,28.670669 Z m -2.487197,4.974384 c 0,1.658131 1.160694,2.818825 2.984634,2.818825 1.492323,0 2.155568,-0.331628 2.984634,-1.160694 l 1.98976,1.989759 c -1.326503,1.160695 -2.653016,1.98976 -4.974394,1.98976 -3.150443,0 -6.135078,-1.658131 -6.135078,-6.632525 0,-4.311138 1.326504,-6.632515 5.969269,-6.632515 4.642755,0 5.471821,3.316262 5.471821,7.62739 z m -5.969265,5.47183 c -2.653007,0 -3.813697,-1.82394 -3.813697,-3.813699 V 22.7014 h 3.316258 v 3.482072 h 2.487195 v 2.653006 h -2.487195 v 6.300897 c 0,0.829065 0.331627,1.160694 1.160691,1.160694 h 1.326504 v 2.818814 z M 12.769066,24.359531 H 9.4528071 v -3.150442 h 3.3162589 z m 0,14.923172 C 10.281872,38.951075 9.4528071,37.458753 9.4528071,35.800622 v -9.61715 h 3.3162589 z m 39.297675,-0.331628 c -2.487197,-0.16582 -3.316262,-1.658132 -3.316262,-3.482071 V 20.87746 h 3.316262 z M 63.507831,22.86722 C 60.523196,8.2756772 32.334996,7.4466119 14.095569,18.556083 v 1.160684 c 18.239427,-9.285521 43.940431,-9.285521 46.427627,4.145328 0.663257,4.476945 -1.82394,9.119711 -6.300887,11.772717 v 3.482071 C 59.69413,37.127135 65.165962,30.660428 63.507831,22.86722 Z M 30.34524,48.402415 C 17.909268,49.563099 4.6442313,47.739158 2.820288,37.95619 1.9912233,33.147616 4.1467919,28.007412 7.1314252,24.69116 V 23.033028 C 1.8254102,27.675794 -0.99340985,33.479244 0.66472042,40.443386 2.6544759,49.231481 13.929757,54.371673 31.174304,52.713552 37.972636,52.050295 46.926538,49.728918 53.061616,46.412655 v -4.808574 c -5.63764,3.316262 -14.923172,6.135077 -22.716376,6.798334 z"
id="path4"
style="stroke-width:0.165814" />
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg
width="64"
height="64"
viewBox="35.188 -14.828 28.1168 28.1168"
version="1.1"
id="svg8"
sodipodi:docname="nvidia-logo.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs12" />
<sodipodi:namedview
id="namedview10"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="7.11"
inkscape:cx="30.2391"
inkscape:cy="23.136428"
inkscape:window-width="1920"
inkscape:window-height="1027"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg8" />
<title
id="title2">generated by pstoedit version:3.44 from NVBadge_2D.eps</title>
<g
id="g833"
transform="matrix(0.08000809,0,0,0.08000809,32.371254,-9.9356868)">
<path
d="m 384.195,235.769 c 0,3.771 -2.769,6.302 -6.047,6.302 v -0.023 c -3.371,0.023 -6.089,-2.508 -6.089,-6.278 0,-3.769 2.718,-6.293 6.089,-6.293 3.279,-0.001 6.047,2.523 6.047,6.292 z m 2.453,0 c 0,-5.176 -4.02,-8.18 -8.5,-8.18 -4.511,0 -8.531,3.004 -8.531,8.18 0,5.172 4.021,8.188 8.531,8.188 4.48,0 8.5,-3.016 8.5,-8.188 m -9.91,0.692 h 0.91 l 2.109,3.703 h 2.315 l -2.336,-3.859 c 1.207,-0.086 2.2,-0.66 2.2,-2.285 0,-2.02 -1.393,-2.668 -3.75,-2.668 h -3.411 v 8.812 h 1.961 l 0.002,-3.703 m 0,-1.492 v -2.121 h 1.364 c 0.742,0 1.753,0.06 1.753,0.965 0,0.984 -0.523,1.156 -1.398,1.156 h -1.719 m -47.332,-44.282 10.598,28.992 H 318.48 Z m -11.35,-11.289 -24.423,61.88 h 17.245 l 3.863,-10.935 h 28.903 l 3.656,10.935 h 18.722 L 341.417,179.39 Z m -49.033,61.903 h 17.497 v -61.922 l -17.5,-0.004 z m -121.467,-61.926 -14.598,49.078 -13.984,-49.074 -18.879,-0.004 19.972,61.926 h 25.207 l 20.133,-61.926 z m 70.725,13.484 h 7.521 c 10.909,0 17.966,4.898 17.966,17.609 0,12.713 -7.057,17.612 -17.966,17.612 h -7.521 z m -17.35,-13.484 v 61.926 h 28.365 c 15.113,0 20.049,-2.512 25.385,-8.147 3.769,-3.957 6.207,-12.642 6.207,-22.134 0,-8.707 -2.063,-16.469 -5.66,-21.305 -6.48,-8.648 -15.816,-10.34 -29.75,-10.34 z M 35.188,179.289 v 62.012 h 17.645 v -47.086 l 13.672,0.004 c 4.527,0 7.754,1.129 9.934,3.457 2.765,2.945 3.894,7.699 3.894,16.396 v 27.229 h 17.098 v -34.262 c 0,-24.453 -15.586,-27.75 -30.836,-27.75 z m 137.583,0.086 0.007,61.926 h 17.489 v -61.926 z"
id="path4" />
<path
d="m 82.211,56.074 c 0,0 22.504,-33.203 67.437,-36.638 V 7.39 c -49.769,3.997 -92.867,46.149 -92.867,46.149 0,0 24.41,70.564 92.867,77.026 V 117.761 C 99.411,111.441 82.211,56.074 82.211,56.074 Z m 67.437,36.223 v 11.727 c -37.968,-6.77 -48.507,-46.237 -48.507,-46.237 0,0 18.23,-20.195 48.507,-23.47 v 12.867 c -0.023,0 -0.039,-0.007 -0.058,-0.007 -15.891,-1.907 -28.305,12.938 -28.305,12.938 0,0 6.958,24.99 28.363,32.182 m 0,-107.125 V 7.39 c 1.461,-0.112 2.922,-0.207 4.391,-0.257 56.582,-1.907 93.449,46.406 93.449,46.406 0,0 -42.343,51.488 -86.457,51.488 -4.043,0 -7.828,-0.375 -11.383,-1.005 v 13.739 a 75.04,75.04 0 0 0 9.481,0.612 c 41.051,0 70.738,-20.965 99.484,-45.778 4.766,3.817 24.278,13.103 28.289,17.167 -27.332,22.884 -91.031,41.33 -127.144,41.33 -3.481,0 -6.824,-0.211 -10.11,-0.528 V 149.87 H 305.68 V -14.828 Z m 0,49.144 V 19.437 c 1.446,-0.101 2.903,-0.179 4.391,-0.226 40.688,-1.278 67.382,34.965 67.382,34.965 0,0 -28.832,40.042 -59.746,40.042 -4.449,0 -8.438,-0.715 -12.028,-1.922 V 47.183 c 15.84,1.914 19.028,8.911 28.551,24.786 L 199.379,54.11 c 0,0 -15.461,-20.277 -41.524,-20.277 -2.834,-10e-4 -5.545,0.198 -8.207,0.483"
fill="#77b900"
id="path6" />
</g>
<metadata
id="metadata829">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:title>generated by pstoedit version:3.44 from NVBadge_2D.eps</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

@ -0,0 +1,194 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg
version="1.1"
id="Capa_1"
viewBox="0 0 128 128"
xml:space="preserve"
sodipodi:docname="video-card.svg"
width="128"
height="128"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs63" /><sodipodi:namedview
id="namedview61"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="6.0254237"
inkscape:cx="64.227848"
inkscape:cy="53.523207"
inkscape:window-width="1920"
inkscape:window-height="1027"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="Capa_1" />
<g
id="g909"
transform="matrix(2.1698808,0,0,2.1698808,-0.0114836,-0.0114836)"><rect
x="4"
y="12.5"
style="fill:#38454f"
width="55"
height="32"
id="rect2" /><circle
style="fill:#546a79"
cx="7"
cy="15.5"
r="1"
id="circle4" /><circle
style="fill:#546a79"
cx="7"
cy="41.5"
r="1"
id="circle6" /><circle
style="fill:#546a79"
cx="56"
cy="15.5"
r="1"
id="circle8" /><circle
style="fill:#546a79"
cx="56"
cy="41.5"
r="1"
id="circle10" /><rect
y="27.5"
style="fill:#839594"
width="3"
height="13"
id="rect12"
x="0" /><path
style="fill:#f3cc6d"
d="M 3,26.5 H 1 c -0.553,0 -1,-0.447 -1,-1 0,-0.553 0.447,-1 1,-1 h 2 c 0.553,0 1,0.447 1,1 0,0.553 -0.447,1 -1,1 z"
id="path14" /><path
style="fill:#f3cc6d"
d="M 3,43.5 H 1 c -0.553,0 -1,-0.447 -1,-1 0,-0.553 0.447,-1 1,-1 h 2 c 0.553,0 1,0.447 1,1 0,0.553 -0.447,1 -1,1 z"
id="path16" /><rect
y="15.5"
style="fill:#839594"
width="3"
height="4"
id="rect18"
x="0" /><g
id="g22">
<rect
x="12"
y="44.5"
style="fill:#28812f"
width="24"
height="4"
id="rect20" />
</g><path
style="fill:#6c797a"
d="M 24.389,38.655 C 22.629,36.623 21.415,33.659 21.094,30.279 21.091,30.254 21.089,30.229 21.086,30.204 21.035,29.645 21,29.079 21,28.5 c 0,-0.579 0.035,-1.145 0.086,-1.704 0.003,-0.025 0.005,-0.05 0.008,-0.075 0.321,-3.38 1.535,-6.344 3.295,-8.376 0.781,-1.046 1.67,-2.005 2.667,-2.845 H 17 c -4.971,0 -9,5.82 -9,13 0,7.18 4.029,13 9,13 h 10.057 c -0.998,-0.84 -1.886,-1.8 -2.668,-2.845 z"
id="path24" /><path
style="fill:#283238"
d="M 34.846,41.5 C 29.534,39.394 26,34.23 26,28.5 c 0,-5.73 3.534,-10.894 8.846,-13 h 10.309 c 5.311,2.106 8.845,7.27 8.845,13 0,5.73 -3.534,10.894 -8.846,13 z"
id="path26" /><circle
style="fill:#cbd4d8"
cx="40"
cy="28.5"
r="3"
id="circle28" /><path
style="fill:#546a79"
d="m 49.903,29.739 c 0.119,-0.499 -0.359,-0.91 -0.848,-0.753 -1.66,0.535 -4.09,0.448 -6.093,-0.863 0.016,0.125 0.038,0.248 0.038,0.377 0,1.304 -0.837,2.403 -2,2.816 0,0 3.823,2.809 7,3.184 0.896,-1.041 1.557,-3.317 1.903,-4.761 z"
id="path30" /><path
style="fill:#546a79"
d="m 30.019,27.261 c -0.119,0.499 0.359,0.91 0.848,0.753 1.66,-0.535 4.09,-0.448 6.093,0.863 -0.016,-0.125 -0.038,-0.248 -0.038,-0.376 0,-1.304 0.837,-2.403 2,-2.816 0,0 -3.823,-2.809 -7,-3.184 -0.897,1.04 -1.558,3.316 -1.903,4.76 z"
id="path32" /><path
style="fill:#546a79"
d="m 34.343,36.796 c 0.391,0.333 0.974,0.093 1.056,-0.414 0.277,-1.722 1.457,-3.848 3.535,-5.037 -0.118,-0.043 -0.238,-0.079 -0.353,-0.137 -1.162,-0.592 -1.761,-1.837 -1.601,-3.061 0,0 -4.238,2.131 -6.015,4.792 0.52,1.271 2.248,2.894 3.378,3.857 z"
id="path34" /><path
style="fill:#546a79"
d="m 45.578,20.204 c -0.391,-0.333 -0.974,-0.093 -1.056,0.414 -0.277,1.722 -1.457,3.848 -3.535,5.037 0.118,0.043 0.238,0.079 0.353,0.137 1.162,0.592 1.761,1.837 1.601,3.061 0,0 4.238,-2.131 6.015,-4.792 -0.52,-1.271 -2.248,-2.894 -3.378,-3.857 z"
id="path36" /><path
style="fill:#546a79"
d="m 44.179,37.588 c 0.487,-0.163 0.582,-0.787 0.189,-1.118 -1.334,-1.124 -2.548,-3.231 -2.497,-5.624 -0.097,0.079 -0.19,0.163 -0.299,0.232 -1.106,0.691 -2.482,0.563 -3.448,-0.204 0,0 -0.356,4.73 1.009,7.623 1.357,0.209 3.638,-0.437 5.046,-0.909 z"
id="path38" /><path
style="fill:#546a79"
d="m 35.743,19.412 c -0.487,0.163 -0.582,0.787 -0.189,1.118 1.334,1.124 2.548,3.231 2.497,5.624 0.097,-0.079 0.19,-0.163 0.299,-0.232 1.106,-0.691 2.482,-0.563 3.448,0.204 0,0 0.356,-4.73 -1.009,-7.623 -1.358,-0.209 -3.638,0.437 -5.046,0.909 z"
id="path40" /><g
id="g56">
<rect
x="14"
y="46.5"
style="fill:#f3cc6d"
width="2"
height="2"
id="rect42" />
<rect
x="17"
y="46.5"
style="fill:#f3cc6d"
width="2"
height="2"
id="rect44" />
<rect
x="20"
y="46.5"
style="fill:#f3cc6d"
width="2"
height="2"
id="rect46" />
<rect
x="23"
y="46.5"
style="fill:#f3cc6d"
width="2"
height="2"
id="rect48" />
<rect
x="26"
y="46.5"
style="fill:#f3cc6d"
width="2"
height="2"
id="rect50" />
<rect
x="29"
y="46.5"
style="fill:#f3cc6d"
width="2"
height="2"
id="rect52" />
<rect
x="32"
y="46.5"
style="fill:#f3cc6d"
width="2"
height="2"
id="rect54" />
</g><path
style="fill:#cbd4d8"
d="M 4,7.5 H 1 c -0.553,0 -1,0.447 -1,1 0,0.553 0.447,1 1,1 h 2 v 41 c 0,0.553 0.447,1 1,1 0.553,0 1,-0.447 1,-1 V 8.5 C 5,7.947 4.553,7.5 4,7.5 Z"
id="path58" /></g>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

@ -24,7 +24,7 @@ set(SOURCE_FILES
set(LIBRARIES set(LIBRARIES
${GTK_LIBRARIES} ${GTK_LIBRARIES}
pthread pthread
vte) vte-2.91)
add_executable(ubl-settings-video ${SOURCE_FILES}) add_executable(ubl-settings-video ${SOURCE_FILES})

@ -25,19 +25,58 @@
#define MONITOR_SAVE_LABEL _("Save") #define MONITOR_SAVE_LABEL _("Save")
#define MONITOR_CANCEL_LABEL _("Cancel") #define MONITOR_CANCEL_LABEL _("Cancel")
#define MONITOR_CHOOSE_PORT_LABEL _("Choose port to configure") #define MONITOR_CHOOSE_PORT_LABEL _("Choose port to configure")
#define GAP_FIX_1_LABEL _("1st variant. May cause perfomance drops in video games")
#define GAP_FIX_2_LABEL _("2nd variant. May not work on specific video cards")
#define HEADER_LABEL _("Video output configuration")
#define FAILSAFE_NVIDIA_LABEL _("Failsafe driver nVidia: ")
#define FAILSAFE_ATI_LABEL _("Failsafe driver AMD/ATI: ")
#define DRIVER_LABEL _("Driver")
#define MONITOR_CONFIGURATION_LABEL _("Monitor configuration")
#define HYBRID_GRAPHICS_LABEL _("Hybrid graphics")
#define FIX_GAP_LABEL _("Fix frame gap (nVidia)")
#define EXTRA_LABEL _("Extra")
#define TITLE_LABEL _("UBlinux Video Configuration")
#define LOAD_LABEL _("Load")
#define SAVE_LABEL _("Save")
#define ON_LABEL _("On")
#define OFF_LABEL _("Off")
#define FBDEV_LABEL _("fbdev")
#define AUTO_CHOOSE_DRIVERS_LABEL _("Automatically choose and use driver")
#define LAUNCH_OPTIRUN_LABEL _("Launch programms through optirun (nVidia): ")
#define LAUNCH_PRIMUSRUN_LABEL _("Launch programs through primusrun (nVidia): ")
#define DISCRETE_ONLY_LABEL _("discrete video only (AMD/ATI)")
#define LOAD_GLOBAL_LABEL _("Load from global configuration")
#define LOAD_LOCAL_LABEL _("Load from local configuration")
#define SAVE_GLOBAL_LOCAL_LABEL _("Save to global an local configuration")
#define SAVE_GLOBAL_LABEL _("Save to global configuration")
#define SAVE_LOCAL_LABEL _("Save to local configuration")
#define DOCUMENTATION_LABEL _("Documentation")
#define ABOUT_LABEL _("About")
#define INSTALLED_LABEL _("Installed")
#define PACKAGE_LABEL _("Package")
#define SUPPORTED_LABEL _("Supported Devices")
#define CANCEL_LABEL _("Cancel")
#define ACCEPT_LABEL _("Accept")
#define DONT_USE_LABEL _("Don't use")
#define INFORMATION_LABEL _("Information")
#define DRIVERS_LABEL _("Drivers")
#define MAIN_SETTINGS_LABEL _("Main settings")
#define DEVICES_DRIVERS_LABEL _("Devices and drivers")
#define DRIVER_MODULES_LABEL _("Driver modules")
#define MONITOR_POSITION_LEFT_PARAMETER _("lo:")
#define MONITOR_POSITION_RIGHT_PARAMETER _("ro:")
#define MONITOR_POSITION_ABOVE_PARAMETER _("ab:")
#define MONITOR_POSITION_BELOW_PARAMETER _("be:")
#define MONITOR_POSITION_LEFT_PARAMETER "lo:"
#define MONITOR_POSITION_RIGHT_PARAMETER "ro:"
#define MONITOR_POSITION_ABOVE_PARAMETER "ab:"
#define MONITOR_POSITION_BELOW_PARAMETER "be:"
#define MONITOR_ROTATE_PARAMETER _("rotate:")
#define MONITOR_ROTATE_NORMAL_PARAMETER _("normal") #define MONITOR_ROTATE_PARAMETER "rotate:"
#define MONITOR_ROTATE_LEFT_PARAMETER _("left") #define MONITOR_ROTATE_NORMAL_PARAMETER "normal"
#define MONITOR_ROTATE_RIGHT_PARAMETER _("right") #define MONITOR_ROTATE_LEFT_PARAMETER "left"
#define MONITOR_ROTATE_INVERTED_PARAMETER _("invert") #define MONITOR_ROTATE_RIGHT_PARAMETER "right"
#define MONITOR_ROTATE_INVERTED_PARAMETER "invert"
#define MONITOR_PORT_ERROR_LABEL _("Error: Port must be chosen to save") #define MONITOR_PORT_ERROR_LABEL _("Error: Port must be chosen to save")
#define MONITOR_PORT_SUCCESS_LABEL _("Monitor configuration succeedeed") #define MONITOR_PORT_SUCCESS_LABEL _("Monitor configuration succeedeed")
@ -48,3 +87,12 @@
#define GLOBAL_LOCAL_SAVE_SUCCESS _("Local and global configuration saving succseeded.") #define GLOBAL_LOCAL_SAVE_SUCCESS _("Local and global configuration saving succseeded.")
#define GLOBAL_SAVE_SUCCESS _("Global configuration saving succseeded.") #define GLOBAL_SAVE_SUCCESS _("Global configuration saving succseeded.")
#define LOCAL_SAVE_SUCCESS _("Local configuration saving succseeded.") #define LOCAL_SAVE_SUCCESS _("Local configuration saving succseeded.")
#define YES_LABEL _("Yes")
#define NO_LABEL _("No")
#define DESCRIPTION_LABEL _("Description")
#define VENDOR_LABEL _("Vendor")
#define MODEL_LABEL _("Model")
#define USED_KERNEL_DRIVER_LABEL _("Kernel driver in use")
#define AVALIABLE_KERNEL_DRIVERS_LABEL _("Kernel modules")

@ -52,14 +52,13 @@ void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){
config->position_port = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationPositionPortCombo)); config->position_port = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationPositionPortCombo));
} }
config->resolution=yon_char_divide_search(gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationResolutionCombo))," ",-1); if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationResolutionCombo))!=0) {
config->resolution = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationResolutionCombo));
int rotation = gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationRotationCombo)); int rotation = gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationRotationCombo));
if (rotation==1) config->rotation=rotation; if (rotation==1) config->rotation=rotation;
else if (rotation==2) config->rotation=rotation; else if (rotation==2) config->rotation=rotation;
else if (rotation==3) config->rotation=rotation; else if (rotation==3) config->rotation=rotation;
else config->rotation=0; else config->rotation=0;
if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationResolutionCombo))!=0) {
char *resolution = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationResolutionCombo));
} }
if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationResolutionCombo))!=0) { if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationResolutionCombo))!=0) {
char *frequency = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationFrequencyCombo)); char *frequency = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationFrequencyCombo));
@ -72,6 +71,99 @@ void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){
on_subwindow_close(self); on_subwindow_close(self);
} }
void on_terminal_done(GtkWidget *terminal, int size, widgets_dict *widgets){
char *text=vte_terminal_get_text_range(VTE_TERMINAL(terminal),0,0,0,10,NULL,NULL,NULL);
printf("\"%s\"\n",text);
gtk_widget_destroy(terminal);
}
void on_terminal_more(GtkWidget *self, widgets_dict *widgets){
int active = gtk_revealer_get_child_revealed(GTK_REVEALER(widgets->TerminalMoreRevieler));
if (active ==1) active = 0;
else active=1;
gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalMoreRevieler),active);
}
void on_terminal_destroy(GtkWidget *self, widgets_dict *widgets){
gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalRevealer),0);
gtk_widget_destroy(widgets->TerminalRevealer);
yon_proprieary_get();
yon_gtk_list_store_fill_with_proprietaries(videoconfig.list);
}
static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer user_data)
{
if (!terminal) return;
if (pid == -1) printf("Error\n\n\n");
else vte_terminal_feed_child(VTE_TERMINAL(terminal),(char*)user_data,strlen((char*)user_data));
}
void on_terminal_check_progress(VteTerminal *terminal, widgets_dict *widgets){
char *text = vte_terminal_get_text(terminal,NULL,NULL,NULL);
// printf("%d - %s\n",rows, text);
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->TerminalInfoLabel),(double)yon_char_find_count(text,"::")/4);
}
void yon_terminal_start(widgets_dict *widgets, char *usr_command){
char **command=new_arr(char*,2);
gchar **envp = g_get_environ();
command[0]=(gchar *)g_strdup(g_environ_getenv(envp, "SHELL"));
command[1]=NULL;
char **env=new_arr(char*,2);
env[0]="";
env[1]=NULL;
GtkBuilder *builder=gtk_builder_new_from_file(glade_path);
widgets->TerminalBox = yon_gtk_builder_get_widget(builder, "TerminalBox");
widgets->TerminalRevealer = yon_gtk_builder_get_widget(builder, "TerminalRevealer");
widgets->TerminalMoreRevieler = yon_gtk_builder_get_widget(builder, "TerminalMoreRevieler");
widgets->TerminalMoreButton = yon_gtk_builder_get_widget(builder, "TerminalMoreButton");
widgets->TerminalScroll = yon_gtk_builder_get_widget(builder, "TerminalScroll");
widgets->TerminalInfoLabel = yon_gtk_builder_get_widget(builder, "TerminalInfoLabel");
GtkWidget *terminal = yon_gtk_builder_get_widget(builder, "TerminalTerminal");
vte_terminal_set_size(VTE_TERMINAL(terminal),10,15);
gtk_widget_set_app_paintable(terminal,1);
gtk_style_context_add_class(gtk_widget_get_style_context(terminal),"opacited");
gtk_style_context_add_class(gtk_widget_get_style_context(terminal),"workingbg");
gtk_overlay_add_overlay(GTK_OVERLAY(widgets->TerminalOverlay),widgets->TerminalRevealer);
g_signal_connect(G_OBJECT(terminal), "child-exited", G_CALLBACK(on_terminal_done), widgets);
g_signal_connect(G_OBJECT(terminal), "contents-changed", G_CALLBACK(on_terminal_check_progress), widgets);
g_signal_connect(G_OBJECT(widgets->TerminalMoreButton), "clicked", G_CALLBACK(on_terminal_more), widgets);
g_signal_connect(G_OBJECT(terminal), "destroy", G_CALLBACK(on_terminal_destroy), widgets);
gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalRevealer),1);
VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL);
vte_terminal_set_pty(VTE_TERMINAL(terminal),pty);
char *install_command=yon_char_unite("tput cup 0 0 && tput ed; ",usr_command," ; sleep 5;exit 0","\n",NULL);
vte_terminal_spawn_async(VTE_TERMINAL(terminal),
VTE_PTY_DEFAULT,
NULL,
command,
NULL,
0,
NULL, NULL,
NULL,
-1,
NULL,
child_ready,
install_command);
vte_pty_spawn_async(pty,
NULL,
command,
NULL,
0,
NULL, NULL,
NULL,
-1,
NULL,
NULL,
NULL);
vte_terminal_set_scrollback_lines(VTE_TERMINAL(terminal), 100);
vte_terminal_set_scroll_on_output(VTE_TERMINAL(terminal), TRUE);
vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(terminal), TRUE);
gtk_widget_show_all(widgets->TerminalRevealer);
}
void on_driver_pack_install(GtkWidget *self,widgets_dict *widgets){ void on_driver_pack_install(GtkWidget *self,widgets_dict *widgets){
GtkTreeIter iter; GtkTreeIter iter;
char *name; char *name;
@ -79,8 +171,8 @@ void on_driver_pack_install(GtkWidget *self,widgets_dict *widgets){
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView)); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView));
gtk_tree_selection_get_selected(selection,&list_s,&iter); gtk_tree_selection_get_selected(selection,&list_s,&iter);
gtk_tree_model_get(list_s,&iter,1,&name,-1); gtk_tree_model_get(list_s,&iter,1,&name,-1);
pthread_t tid; yon_terminal_start(widgets,yon_char_get_augumented(install_proprietary_command,name));
pthread_create(&tid,NULL,(void*)yon_launch_with_output,(void*)yon_char_get_augumented(install_proprietary_command,name));
} }
@ -92,9 +184,7 @@ void on_driver_install(GtkWidget *self,widgets_dict *widgets){
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView)); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView));
gtk_tree_selection_get_selected(selection,&list_s,&iter); gtk_tree_selection_get_selected(selection,&list_s,&iter);
gtk_tree_model_get(list_s,&iter,1,&name,-1); gtk_tree_model_get(list_s,&iter,1,&name,-1);
pthread_t tid; yon_terminal_start(widgets,yon_char_get_augumented(install_proprietary_command,name));
pthread_create(&tid,NULL,(void*)yon_launch_with_output,(void*)yon_char_get_augumented(install_proprietary_command,name));
} }
void on_driver_pack_delete(GtkWidget *self,widgets_dict *widgets){ void on_driver_pack_delete(GtkWidget *self,widgets_dict *widgets){
@ -105,9 +195,7 @@ void on_driver_pack_delete(GtkWidget *self,widgets_dict *widgets){
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView)); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView));
gtk_tree_selection_get_selected(selection,&list_s,&iter); gtk_tree_selection_get_selected(selection,&list_s,&iter);
gtk_tree_model_get(list_s,&iter,1,&name,-1); gtk_tree_model_get(list_s,&iter,1,&name,-1);
pthread_t tid; yon_terminal_start(widgets,yon_char_get_augumented(delete_proprietary_command,name));
pthread_create(&tid,NULL,(void*)yon_launch_with_output,(void*)yon_char_get_augumented(delete_proprietary_command,name));
} }
void on_driver_delete(GtkWidget *self,widgets_dict *widgets){ void on_driver_delete(GtkWidget *self,widgets_dict *widgets){
@ -118,9 +206,7 @@ void on_driver_delete(GtkWidget *self,widgets_dict *widgets){
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView)); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView));
gtk_tree_selection_get_selected(selection,&list_s,&iter); gtk_tree_selection_get_selected(selection,&list_s,&iter);
gtk_tree_model_get(list_s,&iter,1,&name,-1); gtk_tree_model_get(list_s,&iter,1,&name,-1);
pthread_t tid; yon_terminal_start(widgets,yon_char_get_augumented(delete_proprietary_command,name));
pthread_create(&tid,NULL,(void*)yon_launch_with_output,(void*)yon_char_get_augumented(delete_proprietary_command,name));
} }
void on_driver_pack_info(GtkWidget *self, widgets_dict *widgets){ void on_driver_pack_info(GtkWidget *self, widgets_dict *widgets){
@ -185,20 +271,6 @@ void on_port_chosen_changed(GtkWidget *self, monitor_edit_window *window){
} }
} }
void on_save_driver_configuration(GtkWidget *self,combo_tree *widgets){
GtkTreeIter iter;
char *name;
GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list);
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->tree));
gtk_tree_selection_get_selected(selection,&list_s,&iter);
gtk_tree_model_get(list_s,&iter,0,&name,-1);
int ret = yon_gtk_combo_box_text_find(widgets->combo,name);
if (ret!=-1)
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->combo),ret);
on_subwindow_close(self);
}
void on_sensitive_change(GtkWidget *self, GtkWidget *toggle) void on_sensitive_change(GtkWidget *self, GtkWidget *toggle)
{ {
int state = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); int state = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self));
@ -216,18 +288,13 @@ void on_sensitive_change_reversed(GtkWidget *self, GtkWidget *toggle)
void on_auto_choose_drivers(GtkWidget *self, widgets_dict *widgets) void on_auto_choose_drivers(GtkWidget *self, widgets_dict *widgets)
{ {
int state = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); int state = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self));
videoconfig.autoChooseDrivers=state;
gtk_widget_set_sensitive(widgets->mainDriverFailsafeNvidiaLabel, !state); gtk_widget_set_sensitive(widgets->mainDriverFailsafeNvidiaLabel, !state);
gtk_widget_set_sensitive(widgets->mainDriverFailsafeAMDCombo, !state); gtk_widget_set_sensitive(widgets->mainDriverFailsafeAMDCombo, !state);
gtk_widget_set_sensitive(widgets->mainDriverFailsafeAMDLabel, !state); gtk_widget_set_sensitive(widgets->mainDriverFailsafeAMDLabel, !state);
gtk_widget_set_sensitive(widgets->mainDriverFailsafeNvidiaCombo, !state); gtk_widget_set_sensitive(widgets->mainDriverFailsafeNvidiaCombo, !state);
} }
// void on_closed_configuration(GtkWidget *self, MonitorSettings *monitors)
// {
// gtk_widget_destroy(monitors->templateMonitorConfigurationWindow);
// }
char *yon_configuration_get_save_command(char *command){ char *yon_configuration_get_save_command(char *command){
char *str = NULL; char *str = NULL;
char *dntus = NULL; char *dntus = NULL;
@ -236,20 +303,33 @@ char *yon_configuration_get_save_command(char *command){
if (videoconfig.autoChooseDrivers==0){ if (videoconfig.autoChooseDrivers==0){
if (strcmp(videoconfig.failsafenVidia, dntus)!=0) if (strcmp(videoconfig.failsafenVidia, dntus)!=0)
str = yon_char_get_augumented(str, yon_char_get_augumented(" FAILSAFENVIDIA=", videoconfig.failsafenVidia)); str = yon_char_get_augumented(str, yon_char_get_augumented(" FAILSAFENVIDIA=", videoconfig.failsafenVidia));
else
str = yon_char_get_augumented(str," FAILSAFENVIDIA=\"\"");
if (strcmp(videoconfig.failsafeATI, dntus)!=0) if (strcmp(videoconfig.failsafeATI, dntus)!=0)
str = yon_char_get_augumented(str, yon_char_get_augumented(" FAILSAFEATI=", videoconfig.failsafeATI)); str = yon_char_get_augumented(str, yon_char_get_augumented(" FAILSAFEATI=", videoconfig.failsafeATI));
else
str = yon_char_get_augumented(str," FAILSAFEATI=\"\"");
str=yon_char_get_augumented(str," VGADRV_AUTO=NO");
} else {
str = yon_char_unite(str, " FAILSAFENVIDIA=\"\" FAILSAFEATI=\"\" VGADRV_AUTO=YES", NULL);
} }
if (strcmp(videoconfig.optirun, dntus)!=0&&strcmp(videoconfig.optirun, "")!=0) if (strcmp(videoconfig.optirun, dntus)!=0&&strcmp(videoconfig.optirun, "")!=0)
str = yon_char_get_augumented(str, yon_char_get_augumented(" OPTIRUN=", videoconfig.optirun)); str = yon_char_get_augumented(str, yon_char_unite(" OPTIRUN=","\"",videoconfig.optirun,"\"",NULL));
else
str = yon_char_get_augumented(str, yon_char_unite(" OPTIRUN=\"\"",NULL));
if (strcmp(videoconfig.primusrun, dntus)!=0&&strcmp(videoconfig.primusrun, "")!=0) if (strcmp(videoconfig.primusrun, dntus)!=0&&strcmp(videoconfig.primusrun, "")!=0)
str = yon_char_get_augumented(str, yon_char_get_augumented(" PRIMUSRUN=", videoconfig.primusrun)); str = yon_char_get_augumented(str, yon_char_unite(" PRIMUSRUN=","\"", videoconfig.primusrun,"\"",NULL));
else
str = yon_char_get_augumented(str, yon_char_unite(" PRIMUSRUN=\"\"",NULL));
dictionary *dict=NULL; dictionary *dict=NULL;
for (int i=0;i<videoconfig.portssize;i++)
str=yon_char_unite(str," XORG_MONITOR[",videoconfig.ports[i],"]=\"\"", NULL);
if(videoconfig.monitors)
for_dictionaries(dict,videoconfig.monitors){ for_dictionaries(dict,videoconfig.monitors){
if (yon_dictionary_get_data(dict,monitorconfig*)->stringparameters){ if (yon_dictionary_get_data(dict,monitorconfig*)->stringparameters){
str=yon_char_unite(str," XORG_MONITOR[",dict->key,"]=\"",yon_dictionary_get_data(dict,monitorconfig*)->stringparameters,"\"", NULL);
str=yon_char_get_augumented(str, yon_config_make_save_parameter_with_multiple_arguments(yon_dictionary_get_data(dict,monitorconfig*)->stringparameters,XORG_MONITOR(dict->key),","));
} }
} }
@ -281,8 +361,8 @@ char *yon_configuration_get_remove_command(char *command){
str = yon_char_get_augumented(str, " OPTIRUN"); str = yon_char_get_augumented(str, " OPTIRUN");
str = yon_char_get_augumented(str, " PRIMUSRUN"); str = yon_char_get_augumented(str, " PRIMUSRUN");
dictionary *dict=NULL; dictionary *dict=NULL;
for_dictionaries(dict,videoconfig.monitors){ for(int i=0;i<videoconfig.portssize;i++){
str = yon_char_get_augumented(str, yon_char_get_augumented(" XORG_MONITOR[", yon_char_get_augumented(dict->key, "]"))); str = yon_char_get_augumented(str, yon_char_get_augumented(" ",XORG_MONITOR(videoconfig.ports[i])));
} }
if (strcmp(str,command)!=0) if (strcmp(str,command)!=0)
return str; return str;
@ -297,10 +377,11 @@ void on_configuration_save_local(GtkWidget *self, widgets_dict *widgets)
str=yon_configuration_get_save_command(save_drivers_local_command); str=yon_configuration_get_save_command(save_drivers_local_command);
delstr=yon_configuration_get_remove_command(remove_drivers_local_command); delstr=yon_configuration_get_remove_command(remove_drivers_local_command);
if (delstr){ if (delstr){
printf("%s\n\n",delstr);
yon_config_save(delstr); yon_config_save(delstr);
} }
if (str){ if (str){
printf(str); printf("%s\n\n",str);
yon_config_save(str); yon_config_save(str);
videoconfig.status_render.text_to_render=LOCAL_SAVE_SUCCESS; videoconfig.status_render.text_to_render=LOCAL_SAVE_SUCCESS;
@ -335,7 +416,7 @@ void on_configuration_save_global(GtkWidget *self, widgets_dict *widgets)
str = yon_char_get_augumented(str, yon_char_get_augumented(" ", videoconfig.optirun)); str = yon_char_get_augumented(str, yon_char_get_augumented(" ", videoconfig.optirun));
if (videoconfig.primusrun) if (videoconfig.primusrun)
str = yon_char_get_augumented(str, yon_char_get_augumented(" ", videoconfig.primusrun)); str = yon_char_get_augumented(str, yon_char_get_augumented(" ", videoconfig.primusrun));
printf(str); // printf(str);
yon_config_save(str); yon_config_save(str);
} }
@ -390,9 +471,9 @@ void on_monitor_delete(GtkWidget *self,monitor_view windowd){
monitor_window *window = yon_dictionary_get_data(windowd,monitor_window*); monitor_window *window = yon_dictionary_get_data(windowd,monitor_window*);
if(window&&window->config){ if(window&&window->config){
gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(window->templateMonitorscreenOverlay)),window->templateMonitorscreenOverlay); gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(window->templateMonitorscreenOverlay)),window->templateMonitorscreenOverlay);
yon_dictionary_rip(windowd); videoconfig.monitor_visuals = yon_dictionary_rip(windowd);
gtk_widget_destroy(window->templateMonitorscreenOverlay); gtk_widget_destroy(window->templateMonitorscreenOverlay);
yon_dictionary_rip(window->config); videoconfig.monitors = yon_dictionary_rip(window->config);
free(window); free(window);
} }
} }
@ -419,6 +500,22 @@ void on_monitor_add(GtkWidget *self,monitor_window *window){
} }
} }
// void on_monitor_string_edit(GtkWidget *self,monitor_edit_window *monitor){
// int size=0;
// config_str rtn = yon_char_parse((char*)gtk_entry_get_text(GTK_ENTRY(monitor->templateMonitorConfigurationParameterLineEntry)),&size,",");
// if (yon_char_parsed_check_exist(rtn,size,"enable")!=-1) GTK_CHECK_BUTTON(monitor->templateMonitorConfigurationEnableCheck));
// if (yon_char_parsed_check_exist(rtn,size,"")!=-1) GTK_COMBO_BOX_TEXT(monitor->templateMonitorConfigurationResolutionCombo));
// if (yon_char_parsed_check_exist(rtn,size,"")!=-1) GTK_COMBO_BOX_TEXT(monitor->templateMonitorConfigurationFrequencyCombo));
// if (yon_char_parsed_check_exist(rtn,size,"rotate")!=-1) GTK_COMBO_BOX_TEXT(monitor->templateMonitorConfigurationRotationCombo));
// if (yon_char_parsed_check_exist(rtn,size,"")!=-1) GTK_COMBO_BOX_TEXT(monitor->templateMonitorConfigurationPositionPosCombo));
// if (yon_char_parsed_check_exist(rtn,size,"")!=-1) GTK_COMBO_BOX_TEXT(monitor->templateMonitorConfigurationPositionPortCombo));
// if (yon_char_parsed_check_exist(rtn,size,"")!=-1) GTK_CHECK_BUTTON(monitor->templateMonitorConfigurationDoNotSwitchOffCheck));
// if (yon_char_parsed_check_exist(rtn,size,"")!=-1) GTK_CHECK_BUTTON(monitor->templateMonitorConfigurationModelineCVTCheck));
// if (yon_char_parsed_check_exist(rtn,size,"")!=-1) GTK_CHECK_BUTTON(monitor->templateMonitorConfigurationUseCVTReducedCheck));
// if (yon_char_parsed_check_exist(rtn,size,"")!=-1) GTK_CHECK_BUTTON(monitor->templateMonitorConfigurationModelineGTFCheck));
// if (yon_char_parsed_check_exist(rtn,size,"")!=-1) GTK_CHECK_BUTTON(monitor->templateMonitorConfigurationMainCheck));
// }
void on_monitor_configure(GtkWidget *self,monitor_window *window){ void on_monitor_configure(GtkWidget *self,monitor_window *window){
if(window&&window->config){ if(window&&window->config){
monitor_edit_window *monitors = new(monitor_edit_window); monitor_edit_window *monitors = new(monitor_edit_window);
@ -436,7 +533,6 @@ void on_monitor_configure(GtkWidget *self,monitor_window *window){
monitors->templateMonitorConfigurationFrequencyLabel = GTK_WIDGET(gtk_builder_get_object(builder, "templateMonitorConfigurationFrequencyLabel")); monitors->templateMonitorConfigurationFrequencyLabel = GTK_WIDGET(gtk_builder_get_object(builder, "templateMonitorConfigurationFrequencyLabel"));
monitors->templateMonitorConfigurationFrequencyCombo = GTK_WIDGET(gtk_builder_get_object(builder, "templateMonitorConfigurationFrequencyCombo")); monitors->templateMonitorConfigurationFrequencyCombo = GTK_WIDGET(gtk_builder_get_object(builder, "templateMonitorConfigurationFrequencyCombo"));
monitors->templateMonitorConfigurationRotationLabel = GTK_WIDGET(gtk_builder_get_object(builder, "templateMonitorConfigurationRotationLabel")); monitors->templateMonitorConfigurationRotationLabel = GTK_WIDGET(gtk_builder_get_object(builder, "templateMonitorConfigurationRotationLabel"));
// monitors->templateMonitorConfigurationDoNotSwitchOffLabel = GTK_WIDGET(gtk_builder_get_object(builder, "templateMonitorConfigurationDoNotSwitchOffLabel"));
monitors->templateMonitorConfigurationRotationCombo = GTK_WIDGET(gtk_builder_get_object(builder, "templateMonitorConfigurationRotationCombo")); monitors->templateMonitorConfigurationRotationCombo = GTK_WIDGET(gtk_builder_get_object(builder, "templateMonitorConfigurationRotationCombo"));
monitors->templateMonitorConfigurationPositionLabel = GTK_WIDGET(gtk_builder_get_object(builder, "templateMonitorConfigurationPositionLabel")); monitors->templateMonitorConfigurationPositionLabel = GTK_WIDGET(gtk_builder_get_object(builder, "templateMonitorConfigurationPositionLabel"));
monitors->templateMonitorConfigurationPositionPosCombo = GTK_WIDGET(gtk_builder_get_object(builder, "templateMonitorConfigurationPositionPosCombo")); monitors->templateMonitorConfigurationPositionPosCombo = GTK_WIDGET(gtk_builder_get_object(builder, "templateMonitorConfigurationPositionPosCombo"));
@ -484,7 +580,7 @@ void on_monitor_configure(GtkWidget *self,monitor_window *window){
dictionary *dict=NULL; dictionary *dict=NULL;
for (int i=0;i<videoconfig.portssize;i++){ for (int i=0;i<videoconfig.portssize;i++){
dictionary *check_if_exists = yon_dictionary_find(&videoconfig.monitors,videoconfig.ports[i]); dictionary *check_if_exists = yon_dictionary_find(&videoconfig.monitors,videoconfig.ports[i]);
if (!yon_dictionary_get_data(check_if_exists,monitorconfig*)->stringparameters) if (!check_if_exists||!yon_dictionary_get_data(check_if_exists,monitorconfig*)->stringparameters||check_if_exists==monitors->config)
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(monitors->templateMonitorConfigurationPortCombo),videoconfig.ports[i]); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(monitors->templateMonitorConfigurationPortCombo),videoconfig.ports[i]);
} }
@ -558,33 +654,6 @@ void yon_monitor_window_update(monitor_edit_window *window){
} }
void yon_popen(thread_input *input){
*(FILE**)input->data=popen(input->command,"r");
}
void yon_launch_with_output(char *command){
pthread_t tid;
FILE *output =NULL;
FILE **output_file=&output;
thread_input input;
input.command=command;
input.data=output_file;
pthread_create(&tid,NULL,(void*)yon_popen,&input);
// char **output_strings = NULL;
// output_strings = malloc(sizeof(char));
// int i = 0;
// char str[1000];
// memset(str, 0, 1000);
// while (1){
// if (output){
// if (fgets(str, 1000, output)){
// videoconfig.status_render.text_to_render=str;
// videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE;
// _yon_ubl_status_box_render(&videoconfig.status_render);
// }
// }
// }
}
/**void yon_monitor_view_draw_all(GtkWidget *cnt) /**void yon_monitor_view_draw_all(GtkWidget *cnt)
* [EN] * [EN]
@ -606,7 +675,9 @@ void yon_monitor_view_draw_all(GtkWidget *cnt){
for_dictionaries(dict,videoconfig.monitor_visuals){ for_dictionaries(dict,videoconfig.monitor_visuals){
monitor_window *window = yon_dictionary_get_data(dict,monitor_window*); monitor_window *window = yon_dictionary_get_data(dict,monitor_window*);
if(dict->first==dict) {} if(dict->first==dict) {}
else gtk_box_pack_start(GTK_BOX(container),window->templateMonitorscreenOverlay,0,0,0); else {
gtk_box_pack_start(GTK_BOX(container),window->templateMonitorscreenOverlay,0,0,0);
}
} }
monitor_window *window = yon_dictionary_get_data(videoconfig.monitor_visuals->first,monitor_window*); monitor_window *window = yon_dictionary_get_data(videoconfig.monitor_visuals->first,monitor_window*);
gtk_box_pack_start(GTK_BOX(container),window->templateMonitorscreenOverlay,0,0,0); gtk_box_pack_start(GTK_BOX(container),window->templateMonitorscreenOverlay,0,0,0);
@ -644,8 +715,20 @@ void yon_monitor_view_update(){
gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoNameLabel),yon_char_get_augumented(MONITOR_LABEL,monitor->config->key)); gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoNameLabel),yon_char_get_augumented(MONITOR_LABEL,monitor->config->key));
else else
gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoNameLabel),yon_char_get_augumented(MONITOR_LABEL,"")); gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoNameLabel),yon_char_get_augumented(MONITOR_LABEL,""));
monitorconfig *params=yon_dictionary_get_data(yon_dictionary_get_data(dict,monitor_window*)->config,monitorconfig*);
gtk_widget_set_sensitive(yon_dictionary_get_data(dict,monitor_window*)->templateMonitorImage,params->enable);
if (config->resolution) if (config->resolution)
gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoResolutionLabel),config->resolution); gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoResolutionLabel),config->resolution);
else if (params->stringparameters){
int size=0;
config_str rtn=yon_char_parse(params->stringparameters,&size,",");
char *res=yon_char_parsed_get_resolution(rtn,size);
if (res&&strcmp(res,"")!=0)
gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoResolutionLabel),res);
else
gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoResolutionLabel),PARAMETER_DEFAULT_LABEL);
}
else else
gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoResolutionLabel),PARAMETER_DEFAULT_LABEL); gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoResolutionLabel),PARAMETER_DEFAULT_LABEL);
} }
@ -828,9 +911,9 @@ void on_config_fill_interface(widgets_dict *widgets)
gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo)); gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo));
str = videoconfig.failsafenVidia; str = videoconfig.failsafenVidia;
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo), _("Don't use")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo), DONT_USE_LABEL);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo), _("fbdev")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo), FBDEV_LABEL);
if (str) if (str&&videoconfig.autoChooseDrivers==0)
{ {
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->mainDriverFailsafeNvidiaCombo), 1); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->mainDriverFailsafeNvidiaCombo), 1);
} }
@ -839,14 +922,17 @@ void on_config_fill_interface(widgets_dict *widgets)
gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo)); gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo));
str = videoconfig.failsafeATI; str = videoconfig.failsafeATI;
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo), _("Don't use")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo), DONT_USE_LABEL);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo), _("fbdev")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo), FBDEV_LABEL);
if (str) if (str&&videoconfig.autoChooseDrivers==0)
{ {
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->mainDriverFailsafeAMDCombo), 1); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->mainDriverFailsafeAMDCombo), 1);
} }
else else
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->mainDriverFailsafeAMDCombo), 0); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->mainDriverFailsafeAMDCombo), 0);
if (videoconfig.autoChooseDrivers==1){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->mainDriverAutomaticallyChooseCheck),1);
}
dictionary *dict = NULL; dictionary *dict = NULL;
} }
@ -854,32 +940,53 @@ void on_config_fill_interface(widgets_dict *widgets)
* [EN] * [EN]
*/ */
dictionary *yon_proprieary_get(){ dictionary *yon_proprieary_get(){
videoconfig.proprietary=NULL;
int drivers_size=0;
config_str drivers=yon_config_load(get_proprietary_drivers_command,&drivers_size);
int size=0; int size=0;
char **rtn = yon_config_load(get_proprietary_drivers_command,&size); char **rtn = yon_config_load(get_proprietary_drivers_info_command,&size);
for (int drivers_found=0;drivers_found<drivers_size;drivers_found++){
drivers[drivers_found]=yon_char_divide_search(drivers[drivers_found],"\n",-1);
for (int i=0;i<size;i++){ for (int i=0;i<size;i++){
rtn[i] = yon_char_divide_search(rtn[i],"\n",-1); rtn[i] = yon_char_divide_search(rtn[i],"\n",-1);
char *key=yon_char_new(rtn[i]); char *key=yon_char_new(rtn[i]);
if (key[0]==':') if (key[0]==':')
yon_char_divide_search(key,":",-1); yon_char_divide_search(key,":",-1);
key = yon_char_divide_search(key,":",-1); key = yon_char_divide_search(key,":",-1);
if (i==0) videoconfig.proprietary=yon_dictionary_create_with_data(key,rtn[i]); char *driver_name=yon_char_divide_search(yon_char_new(drivers[drivers_found])," ",-1);
else videoconfig.proprietary=yon_dictionary_create_with_data_connected(videoconfig.proprietary,key,rtn[i]); if (strcmp(key,driver_name)==0)
if (i==0) videoconfig.proprietary=yon_dictionary_create_with_data(drivers[drivers_found],rtn[i]);
else videoconfig.proprietary=yon_dictionary_create_with_data_connected(videoconfig.proprietary,drivers[drivers_found],rtn[i]);
}
} }
} }
/**void yon_gtk_list_store_fill_with_proprietaries(GtkListStore *list) /**void yon_gtk_list_store_fill_with_proprietaries(GtkListStore *list)
* [EN] * [EN]
*/ */
void yon_gtk_list_store_fill_with_proprietaries(GtkListStore *list){ void yon_gtk_list_store_fill_with_proprietaries(GtkListStore *list){
dictionary *dict=NULL; dictionary *dict=NULL;
gtk_list_store_clear(list);
for_dictionaries(dict,videoconfig.proprietary){ for_dictionaries(dict,videoconfig.proprietary){
GtkTreeIter iter; GtkTreeIter iter;
int size=0; int size=0;
config_str str = yon_char_parse((char*)dict->data,&size,":"); config_str str = yon_char_parse((char*)dict->data,&size,":");
gtk_list_store_append(list,&iter); gtk_list_store_append(list,&iter);
gtk_list_store_set(list,&iter,1,str[1],2,str[2],3,str[3],4,str[4],-1); gtk_list_store_set(list,&iter,1,str[0],2,str[1],3,str[2],4,str[3],-1);
if (strstr(dict->key," installed"))
gtk_list_store_set(list,&iter,0,1,-1);
}
}
char *yon_char_remove_brackets(char* source){
if (source){
char *src=yon_char_new(source);
if (src[0]=='\"') yon_char_divide_search(src,"\"",-1);
if (src[strlen(src)-1]=='\"') src=yon_char_divide_search(src,"\"",-1);
return src;
} }
return NULL;
} }
/**void yon_setup_config(char *configcommand) /**void yon_setup_config(char *configcommand)
@ -901,35 +1008,48 @@ void yon_setup_config(char *configcommand)
videoconfig.configsize=0; videoconfig.configsize=0;
videoconfig.loaded_config = yon_ubl_load_global_config(command, &videoconfig.configsize); videoconfig.loaded_config = yon_ubl_load_global_config(command, &videoconfig.configsize);
char *param = NULL; char *param = NULL;
param=yon_config_get_parameter(videoconfig.loaded_config,videoconfig.configsize,"VGADRV_AUTO");
if (param){
yon_char_divide_search(param,"=",-1);
if (strcmp(param,"")!=0)
videoconfig.autoChooseDrivers=1;
}
param=yon_config_get_parameter(videoconfig.loaded_config,videoconfig.configsize,"FAILSAFENVIDIA"); param=yon_config_get_parameter(videoconfig.loaded_config,videoconfig.configsize,"FAILSAFENVIDIA");
if (param){ if (param){
yon_char_divide_search(param,"=",-1); yon_char_divide_search(param,"=",-1);
if (strcmp(param,"")!=0)
videoconfig.failsafenVidia=yon_char_new(param); videoconfig.failsafenVidia=yon_char_new(param);
} }
param=yon_config_get_parameter(videoconfig.loaded_config,videoconfig.configsize,"FAILSAFEATI"); param=yon_config_get_parameter(videoconfig.loaded_config,videoconfig.configsize,"FAILSAFEATI");
if (param){ if (param){
yon_char_divide_search(param,"=",-1); yon_char_divide_search(param,"=",-1);
if (strcmp(param,"")!=0)
videoconfig.failsafeATI=yon_char_new(param); videoconfig.failsafeATI=yon_char_new(param);
} }
param=yon_config_get_parameter(videoconfig.loaded_config,videoconfig.configsize,"OPTIRUN"); param=yon_config_get_parameter(videoconfig.loaded_config,videoconfig.configsize,"OPTIRUN");
if (param){ if (param){
yon_char_divide_search(param,"=",-1); yon_char_divide_search(param,"=",-1);
videoconfig.optirun=yon_char_new(param); videoconfig.optirun=yon_char_remove_brackets(yon_char_new(param));
if (strcmp(videoconfig.optirun,"")==0) videoconfig.optirun=NULL;
} }
param=yon_config_get_parameter(videoconfig.loaded_config,videoconfig.configsize,"PRIMUSRUN"); param=yon_config_get_parameter(videoconfig.loaded_config,videoconfig.configsize,"PRIMUSRUN");
if (param){ if (param){
yon_char_divide_search(param,"=",-1); yon_char_divide_search(param,"=",-1);
videoconfig.primusrun=yon_char_new(param); videoconfig.primusrun=yon_char_remove_brackets(yon_char_new(param));
if (strcmp(videoconfig.primusrun,"")==0) videoconfig.primusrun=NULL;
} }
for (int i=0;i<videoconfig.portssize;i++){ for (int i=0;i<videoconfig.portssize;i++){
videoconfig.ports[i] = yon_char_divide_search(videoconfig.ports[i],"\n",-1); videoconfig.ports[i] = yon_char_divide_search(videoconfig.ports[i],"\n",-1);
param=yon_config_get_parameter(videoconfig.loaded_config,videoconfig.configsize,XORG_MONITOR(videoconfig.ports[i])); param=yon_config_get_parameter(videoconfig.loaded_config,videoconfig.configsize,XORG_MONITOR(videoconfig.ports[i]));
char *leftover=yon_char_new(param);
yon_char_divide_search(leftover,"=",-1);
if (param&&strcmp(leftover,"")!=0){
videoconfig.monitors = yon_monitor_config_new(videoconfig.ports[i]); videoconfig.monitors = yon_monitor_config_new(videoconfig.ports[i]);
if (param){
yon_char_divide_search(param,"=",-1); yon_char_divide_search(param,"=",-1);
yon_monitor_config_update(yon_dictionary_get_data(videoconfig.monitors,monitorconfig*),videoconfig.ports[i],param); yon_monitor_config_update(yon_dictionary_get_data(videoconfig.monitors,monitorconfig*),videoconfig.ports[i],param);
} }
@ -942,40 +1062,6 @@ void yon_setup_config(char *configcommand)
yon_proprieary_get(); yon_proprieary_get();
} }
driver_window *on_driver_window_open(GtkWidget *self, GtkWidget *comboe)
{
GtkBuilder *builder = gtk_builder_new_from_file(glade_path);
driver_window *widgets = NULL;
widgets = malloc(sizeof(driver_window));
widgets->window = yon_gtk_builder_get_widget(builder, "ProprietaryDriverChooseWindow");
widgets->propriearyTreeView = yon_gtk_builder_get_widget(builder, "propriearyTreeView");
widgets->ProprietaryDriverColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder, "ProprietaryDriverColumn"));
widgets->ProprietaryDescriptionColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder, "ProprietaryDescriptionColumn"));
widgets->ProprietaryCloseButton = yon_gtk_builder_get_widget(builder, "ProprietaryCloseButton");
widgets->ProprietaryAcceptButton = yon_gtk_builder_get_widget(builder, "ProprietaryAcceptButton");
if(!videoconfig.list)
videoconfig.list = GTK_LIST_STORE(gtk_builder_get_object(builder, "liststore6"));
gtk_list_store_clear(videoconfig.list);
yon_gtk_list_store_fill_with_proprietaries(videoconfig.list);
gtk_button_set_label(GTK_BUTTON(widgets->ProprietaryCloseButton), _("Cancel"));
gtk_button_set_label(GTK_BUTTON(widgets->ProprietaryAcceptButton), _("Accept"));
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->propriearyTreeView),GTK_TREE_MODEL(videoconfig.list));
gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), _("Installed"));
gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), _("Package"));
gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), _("Supported Devices"));
gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), _("Driver"));
gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDescriptionColumn), _("Description"));
gtk_widget_show(widgets->window);
g_signal_connect(G_OBJECT(widgets->ProprietaryCloseButton), "clicked", G_CALLBACK(on_subwindow_close), NULL);
combo_tree *trcm=NULL;
trcm=malloc(sizeof(combo_tree));
trcm->combo=comboe;
trcm->tree=widgets->propriearyTreeView;
g_signal_connect(G_OBJECT(widgets->ProprietaryAcceptButton), "clicked", G_CALLBACK(on_save_driver_configuration), trcm);
}
/** monitor_config yon_monitor_config_new(char *port) /** monitor_config yon_monitor_config_new(char *port)
* [EN] * [EN]
*/ */
@ -1037,8 +1123,12 @@ void yon_monitor_config_update(monitorconfig* monitor, char *port, char *config_
monitor->position=3; monitor->position=3;
if (yon_char_parsed_check_exist(cnf,size,"ab:")!=-1) if (yon_char_parsed_check_exist(cnf,size,"ab:")!=-1)
monitor->position=3; monitor->position=3;
if (yon_char_parsed_check_exist(cnf,size,"rotate:")!=-1) if (yon_char_parsed_check_exist(cnf,size,"rotate:left")!=-1)
monitor->rotation=0; monitor->rotation=1;
if (yon_char_parsed_check_exist(cnf,size,"rotate:right")!=-1)
monitor->rotation=2;
if (yon_char_parsed_check_exist(cnf,size,"rotate:invert")!=-1)
monitor->rotation=3;
if (yon_char_parsed_check_exist(cnf,size,"dpms")!=-1) if (yon_char_parsed_check_exist(cnf,size,"dpms")!=-1)
monitor->dpms=1; monitor->dpms=1;
if (yon_char_parsed_check_exist(cnf,size,"nodpms")!=-1) if (yon_char_parsed_check_exist(cnf,size,"nodpms")!=-1)
@ -1047,21 +1137,25 @@ void yon_monitor_config_update(monitorconfig* monitor, char *port, char *config_
monitor->cvt=1; monitor->cvt=1;
if (yon_char_parsed_check_exist(cnf,size,"reduced")!=-1) if (yon_char_parsed_check_exist(cnf,size,"reduced")!=-1)
monitor->reduced=1; monitor->reduced=1;
if (yon_char_parsed_check_exist(cnf,size,"r")!=-1) if (yon_char_parsed_check_exist(cnf,size,"r,")!=-1)
monitor->reduced=1; monitor->reduced=1;
if (yon_char_parsed_check_exist(cnf,size,"gtf")!=-1) if (yon_char_parsed_check_exist(cnf,size,"gtf")!=-1)
monitor->gtf=1; monitor->gtf=1;
} }
} }
int yon_char_get_if_resolution(char *parsed_string){ char *yon_char_parsed_get_resolution(config_str parsed_string, int size){
char *left=NULL, *right=NULL; char *left=NULL, *right=NULL, *freq=NULL;
right=yon_char_new(parsed_string); for (int i=0;i<size;i++){
right=yon_char_new(parsed_string[i]);
left=yon_char_divide_search(right,"x",1); left=yon_char_divide_search(right,"x",1);
if (freq=strstr(left,"x"))
left=yon_char_divide_search(left,"x",-1);
if (left&&right) if (left&&right)
if (atoi(left)&&atoi(right)) if (atoi(left)&&atoi(right))
return 1; return parsed_string[i];
return 0; }
return NULL;
} }
void yon_monitor_view_new(monitor_config monitor){ void yon_monitor_view_new(monitor_config monitor){
@ -1142,6 +1236,42 @@ void yon_monitor_set_resolutions(){
} }
void yon_adapter_window_setup(widgets_dict *widgets){
int size=0;
gtk_overlay_add_overlay(GTK_OVERLAY(widgets->InformationOverlay),widgets->InformationCompanyLogoImage);
config_str rtn=yon_config_load(get_adapter_info,&size);
char *desc = yon_config_get_parameter(rtn,size,"description");
yon_char_divide_search(desc,"=",-1);
char *product = yon_config_get_parameter(rtn,size,"product");
yon_char_divide_search(product,"=",-1);
char *vendor = yon_config_get_parameter(rtn,size,"vendor");
yon_char_divide_search(vendor,"=",-1);
char *driver_use = yon_config_get_parameter(rtn,size,"Kernel_driver_in_use");
yon_char_divide_search(driver_use,"=",-1);
char *driver_all = yon_config_get_parameter(rtn,size,"Kernel_modules");
yon_char_divide_search(driver_all,"=",-1);
char *final_text = yon_char_unite("<span size=\"12pt\"><span weight='bold' color='#1a5fb4'>",DESCRIPTION_LABEL,":</span> ",_(desc),
"\n<span weight='bold' color='#1a5fb4'>",VENDOR_LABEL,":</span> ",vendor,
"\n<span weight='bold' color='#1a5fb4'>",MODEL_LABEL,":</span> ",product,
"\n<span weight='bold' color='#1a5fb4'>",USED_KERNEL_DRIVER_LABEL,":</span> ",driver_use,
"\n<span weight='bold' color='#1a5fb4'>",AVALIABLE_KERNEL_DRIVERS_LABEL,":</span> ",driver_all,"</span>",NULL);
gtk_label_set_markup(GTK_LABEL(gtk_builder_get_object(widgets->builder,"InformationLabel")),final_text);
if (strcmp(vendor,"Intel Corporation")==0){
GtkIconTheme *icthm=gtk_icon_theme_get_default();
gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->InformationCompanyLogoImage),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, "com.ublinux.ubl-settings-video.intel-logo",64,1,GTK_ICON_LOOKUP_FORCE_SVG),NULL));
}
else if (strcmp(vendor,"NVidia Corporation")==0){
GtkIconTheme *icthm=gtk_icon_theme_get_default();
gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->InformationCompanyLogoImage),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, "com.ublinux.ubl-settings-video.nvidia-logo",64,1,GTK_ICON_LOOKUP_FORCE_SVG),NULL));
}
else if (strcmp(vendor,"AMD Corporation")==0){
GtkIconTheme *icthm=gtk_icon_theme_get_default();
gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->InformationCompanyLogoImage),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, "com.ublinux.ubl-settings-video.amd-logo",64,1,GTK_ICON_LOOKUP_FORCE_SVG),NULL));
}
else {
gtk_widget_destroy(widgets->InformationCompanyLogoImage);
}
}
/** void yon_setup_widgets(widgets_dict *widgets) /** void yon_setup_widgets(widgets_dict *widgets)
* [EN] * [EN]
* Sets up every element on main window * Sets up every element on main window
@ -1224,6 +1354,7 @@ void yon_setup_widgets(widgets_dict *widgets)
widgets->driversInfoButton = yon_gtk_builder_get_widget(widgets->builder, "driversInfoButton"); widgets->driversInfoButton = yon_gtk_builder_get_widget(widgets->builder, "driversInfoButton");
widgets->driversDeleteButton = yon_gtk_builder_get_widget(widgets->builder, "driversDeleteButton"); widgets->driversDeleteButton = yon_gtk_builder_get_widget(widgets->builder, "driversDeleteButton");
widgets->driversInstallButton = yon_gtk_builder_get_widget(widgets->builder, "driversInstallButton"); widgets->driversInstallButton = yon_gtk_builder_get_widget(widgets->builder, "driversInstallButton");
widgets->TerminalOverlay = yon_gtk_builder_get_widget(widgets->builder, "TerminalOverlay");
widgets->driversTreeSelection = GTK_TREE_SELECTION(gtk_builder_get_object(widgets->builder, "driversTreeSelection")); widgets->driversTreeSelection = GTK_TREE_SELECTION(gtk_builder_get_object(widgets->builder, "driversTreeSelection"));
widgets->proprietartInstalledColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "proprietartInstalledColumn")); widgets->proprietartInstalledColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "proprietartInstalledColumn"));
@ -1232,6 +1363,15 @@ void yon_setup_widgets(widgets_dict *widgets)
widgets->ProprietaryDescriptionColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "ProprietaryDescriptionColumn")); widgets->ProprietaryDescriptionColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "ProprietaryDescriptionColumn"));
widgets->ProprietarySupportedColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "ProprietarySupportedColumn")); widgets->ProprietarySupportedColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "ProprietarySupportedColumn"));
widgets->DriverModulesTab = GTK_WIDGET(gtk_builder_get_object(widgets->builder, "DriverModulesTab"));
widgets->DriversTab = GTK_WIDGET(gtk_builder_get_object(widgets->builder, "DriversTab"));
widgets->MainTabLabel = GTK_WIDGET(gtk_builder_get_object(widgets->builder, "MainTabLabel"));
widgets->DriversTabLabel = GTK_WIDGET(gtk_builder_get_object(widgets->builder, "DriversTabLabel"));
widgets->InformationTabLabel = GTK_WIDGET(gtk_builder_get_object(widgets->builder, "InformationTabLabel"));
widgets->InformationFrameLabel = GTK_WIDGET(gtk_builder_get_object(widgets->builder, "InformationFrameLabel"));
widgets->InformationOverlay = GTK_WIDGET(gtk_builder_get_object(widgets->builder, "InformationOverlay"));
widgets->InformationCompanyLogoImage = GTK_WIDGET(gtk_builder_get_object(widgets->builder, "InformationCompanyLogoImage"));
widgets->driverInstalledColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "driverInstalledColumn")); widgets->driverInstalledColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "driverInstalledColumn"));
widgets->driverPackageColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "driverPackageColumn")); widgets->driverPackageColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "driverPackageColumn"));
widgets->driverDriverColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "driverDriverColumn")); widgets->driverDriverColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "driverDriverColumn"));
@ -1273,60 +1413,59 @@ void yon_setup_widgets(widgets_dict *widgets)
g_signal_connect(G_OBJECT(widgets->mainHeaderSaveGlobalMenuItem), "activate", G_CALLBACK(on_configuration_save_global), widgets); g_signal_connect(G_OBJECT(widgets->mainHeaderSaveGlobalMenuItem), "activate", G_CALLBACK(on_configuration_save_global), widgets);
g_signal_connect(G_OBJECT(widgets->mainHeaderSaveLocalMenuItem), "activate", G_CALLBACK(on_configuration_save_local), widgets); g_signal_connect(G_OBJECT(widgets->mainHeaderSaveLocalMenuItem), "activate", G_CALLBACK(on_configuration_save_local), widgets);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo), _("Off")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo), OFF_LABEL);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo), _("fbdev")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo), FBDEV_LABEL);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo), _("Off")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo), OFF_LABEL);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo), _("fbdev")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo), FBDEV_LABEL);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainExtraFixGapCombo), _("1st variant. May cause perfomance drops in video games")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainExtraFixGapCombo), GAP_FIX_1_LABEL);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainExtraFixGapCombo), _("2nd variant. May not work on specific video cards")); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainExtraFixGapCombo), GAP_FIX_2_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->headInfoLabel), _("Video output configuration")); gtk_label_set_text(GTK_LABEL(widgets->headInfoLabel), HEADER_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->mainDriverFailsafeNvidiaLabel), _("Failsafe driver nVidia: ")); gtk_label_set_text(GTK_LABEL(widgets->mainDriverFailsafeNvidiaLabel), FAILSAFE_NVIDIA_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->mainDriverFailsafeAMDLabel), _("Failsafe driver AMD/ATI: ")); gtk_label_set_text(GTK_LABEL(widgets->mainDriverFailsafeAMDLabel), FAILSAFE_ATI_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->mainDriverFrameLabel), _("Driver")); gtk_label_set_text(GTK_LABEL(widgets->mainDriverFrameLabel), DRIVER_LABEL);
// gtk_label_set_text(GTK_LABEL(widgets->monitorConfigurationMethodLabel),_("Configuration method")); gtk_label_set_text(GTK_LABEL(widgets->mainMonitorConfigurationFrameLabel), MONITOR_CONFIGURATION_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->mainMonitorConfigurationFrameLabel), _("Monitor configuration")); gtk_label_set_text(GTK_LABEL(widgets->mainHybridGraphicsFrameLabel), HYBRID_GRAPHICS_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->mainHybridGraphicsFrameLabel), _("Hybrid graphics")); gtk_label_set_text(GTK_LABEL(widgets->mainExtraFixGapLabel), FIX_GAP_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->mainExtraFixGapLabel), _("Fix frame gap (nVidia)")); gtk_label_set_text(GTK_LABEL(widgets->mainExtraFrameLabel), EXTRA_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->mainExtraFrameLabel), _("Extra")); gtk_label_set_text(GTK_LABEL(widgets->mainHeaderTitleLabel), TITLE_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->mainHeaderTitleLabel), _("UBlinux Video Configuration")); gtk_label_set_text(GTK_LABEL(widgets->mainHeaderConfigLoadLabel), LOAD_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->mainHeaderConfigLoadLabel), _("Load")); gtk_label_set_text(GTK_LABEL(widgets->mainHeaderSaveConfigurationLabel), SAVE_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->mainHeaderSaveConfigurationLabel), _("Save"));
gtk_button_set_label(GTK_BUTTON(widgets->mainHybridGraphicsDiscreteCheck), ON_LABEL);
gtk_button_set_label(GTK_BUTTON(widgets->mainHybridGraphicsDiscreteCheck), _("On")); gtk_button_set_label(GTK_BUTTON(widgets->mainDriverAutomaticallyChooseCheck), AUTO_CHOOSE_DRIVERS_LABEL);
gtk_button_set_label(GTK_BUTTON(widgets->mainDriverAutomaticallyChooseCheck), _("Automatically choose and use driver")); gtk_button_set_label(GTK_BUTTON(widgets->mainExtraLaunchOptirunCheck), LAUNCH_OPTIRUN_LABEL);
gtk_button_set_label(GTK_BUTTON(widgets->mainExtraLaunchOptirunCheck), _("Launch programms through optirun (nVidia): ")); gtk_button_set_label(GTK_BUTTON(widgets->mainExtraLaunchPrismusunCheck), LAUNCH_PRIMUSRUN_LABEL);
gtk_button_set_label(GTK_BUTTON(widgets->mainExtraLaunchPrismusunCheck), _("Launch programs through primusun (nVidia): ")); gtk_button_set_label(GTK_BUTTON(widgets->mainHybridGraphicsDiscreteCheck), DISCRETE_ONLY_LABEL);
gtk_button_set_label(GTK_BUTTON(widgets->mainHybridGraphicsDiscreteCheck), _("discrete video only (AMD/ATI)"));
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderLoadGlobalMenuItem), LOAD_GLOBAL_LABEL);
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderLoadGlobalMenuItem), _("Load from global configuration")); gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderLoadLocalMenuItem), LOAD_LOCAL_LABEL);
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderLoadLocalMenuItem), _("Load from local configuration")); gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSaveGlobalLocalMenuItem), SAVE_GLOBAL_LOCAL_LABEL);
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSaveGlobalLocalMenuItem), _("Save to global an local configuration")); gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSaveGlobalMenuItem), SAVE_GLOBAL_LABEL);
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSaveGlobalMenuItem), _("Save to global configuration")); gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSaveLocalMenuItem), SAVE_LOCAL_LABEL);
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSaveLocalMenuItem), _("Save to local configuration")); gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSettingsDocumentationMenuItem), DOCUMENTATION_LABEL);
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSettingsDocumentationMenuItem), _("Documentation")); gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSettingsAboutMenuItem), ABOUT_LABEL);
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSettingsAboutMenuItem), _("About"));
gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), _("Installed")); gtk_label_set_text(GTK_LABEL(widgets->DriverModulesTab), DRIVER_MODULES_LABEL);
gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), _("Package")); gtk_label_set_text(GTK_LABEL(widgets->DriversTab), DRIVERS_LABEL);
gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), _("Supported Devices")); gtk_label_set_text(GTK_LABEL(widgets->MainTabLabel), MAIN_SETTINGS_LABEL);
gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), _("Driver")); gtk_label_set_text(GTK_LABEL(widgets->DriversTabLabel), DRIVERS_LABEL);
gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDescriptionColumn), _("Description")); gtk_label_set_text(GTK_LABEL(widgets->InformationTabLabel), INFORMATION_LABEL);
// gtk_button_set_label(GTK_BUTTON(widgets->mainExtraLaunchThroughButton),_("Change")); gtk_label_set_text(GTK_LABEL(widgets->InformationFrameLabel), DEVICES_DRIVERS_LABEL);
gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), INSTALLED_LABEL);
gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), PACKAGE_LABEL);
gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), SUPPORTED_LABEL);
gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), DRIVER_LABEL);
gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDescriptionColumn), DESCRIPTION_LABEL);
yon_ubl_header_setup(widgets->mainHeadOverlay, widgets->headBox, widgets->mainHeadBackgroundImage, banner_path); yon_ubl_header_setup(widgets->mainHeadOverlay, widgets->headBox, widgets->mainHeadBackgroundImage, banner_path);
// gtk_overlay_add_overlay(GTK_OVERLAY(widgets->mainHeadOverlay),widgets->headBox);
yon_monitor_view_setup(widgets->mainMonitorVisualConfigurationBox); yon_monitor_view_setup(widgets->mainMonitorVisualConfigurationBox);
yon_monitor_view_update();
videoconfig.status_render.icon=widgets->mainStatusIcon; videoconfig.status_render.icon=widgets->mainStatusIcon;
videoconfig.status_render.label=widgets->mainStatusLabel; videoconfig.status_render.label=widgets->mainStatusLabel;
videoconfig.status_render.box=widgets->mainStatusBox; videoconfig.status_render.box=widgets->mainStatusBox;
// gtk_image_set_from_file(GTK_IMAGE(widgets->mainHeadBackgroundImage),banner_path);
// MonitorSettings *monitors = yon_setup_monitor_settings();
// videoconfig.monitors=yon_dictionary_pack_monitors(monitors,yon_check_for_monitors());
// widgets->overlays = yon_dictionary_pack_overlays(monitors);
// yon_dictionary_gtk_pack_start_multiple_widgets(widgets->overlays, widgets->mainMonitorVisualConfigurationBox, 0, 0, 0);
// yon_dictionary_gtk_pack_start_multiple_widgets(widgets->monitors,widgets->mainMonitorConfigurationBox,0,0,0);
} }
int main(int argc, char *argv[]) int main(int argc, char *argv[])
@ -1341,6 +1480,7 @@ int main(int argc, char *argv[])
widgets_dict widgets; widgets_dict widgets;
yon_setup_widgets(&widgets); yon_setup_widgets(&widgets);
yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); yon_gtk_list_store_fill_with_proprietaries(videoconfig.list);
yon_gtk_list_store_fill_with_proprietaries(videoconfig.modulelist);
gtk_widget_show(widgets.MainWindow); gtk_widget_show(widgets.MainWindow);
// yon_fill_ui(&widgets); // yon_fill_ui(&widgets);
videoconfig.status_render.text_to_render=LOCAL_LOAD_SUCCESS; videoconfig.status_render.text_to_render=LOCAL_LOAD_SUCCESS;
@ -1348,11 +1488,13 @@ int main(int argc, char *argv[])
yon_ubl_status_box_render(&videoconfig.status_render); yon_ubl_status_box_render(&videoconfig.status_render);
on_config_fill_interface(&widgets); on_config_fill_interface(&widgets);
yon_monitor_set_resolutions(); yon_monitor_set_resolutions();
yon_adapter_window_setup(&widgets);
GtkCssProvider *css = gtk_css_provider_new(); GtkCssProvider *css = gtk_css_provider_new();
gtk_css_provider_load_from_path(css, CssPath, NULL); gtk_css_provider_load_from_path(css, CssPath, NULL);
gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), gtk_style_context_add_provider_for_screen(gdk_screen_get_default(),
GTK_STYLE_PROVIDER(css), GTK_STYLE_PROVIDER(css),
-1); -1);
yon_monitor_view_update();
gtk_main(); gtk_main();
return 0; return 0;
} }

@ -1,7 +1,9 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <gtk/gtkx.h> #include <gtk/gtkx.h>
#include <vte-2.91/vte/vte.h>
#include <locale.h> #include <locale.h>
#include <stdio.h> #include <stdio.h>
#include <time.h>
#include <unistd.h> #include <unistd.h>
#include <stdlib.h> #include <stdlib.h>
#include <libintl.h> #include <libintl.h>
@ -31,7 +33,7 @@
#define get_resolutions_command "xrandr |grep -noP \"\\d+x+\\d+\"" #define get_resolutions_command "xrandr |grep -noP \"\\d+x+\\d+\""
#define get_resolution_ports_command "xrandr |grep -nwP \"connected\" |grep -oE \"[0-9a-zA-Z:]{1,10} connected\" |grep -oE \"[0-9a-zA-Z:]{1,10} \"" #define get_resolution_ports_command "xrandr |grep -nwP \"connected\" |grep -oE \"[0-9a-zA-Z:]{1,10} connected\" |grep -oE \"[0-9a-zA-Z:]{1,10} \""
#define get_proprietary_drivers_command "cut -d, -f1- /usr/share/ubl-settings-video/csv/video-drivers.csv | grep -E \"-\"" #define get_proprietary_drivers_info_command "cut -d: -f2- /usr/share/ubl-settings-video/csv/video-drivers.csv | grep -E \"-\""
#define get_resolutions_supportable_command "cut -d, -f1- /usr/share/ubl-settings-video/csv/resolutions.csv |sed 's/,/ /g'" #define get_resolutions_supportable_command "cut -d, -f1- /usr/share/ubl-settings-video/csv/resolutions.csv |sed 's/,/ /g'"
@ -39,19 +41,19 @@
#define load_drivers_command "/usr/bin/ubconfig --default --source " #define load_drivers_command "/usr/bin/ubconfig --default --source "
#define load_drivers_global_command "/usr/bin/ubconfig --default --source global get video FAILSAFENVIDIA FAILSAFEATI OPTIRUN PRIMUSRUN " #define load_drivers_global_command "/usr/bin/ubconfig --default --source global get video FAILSAFENVIDIA FAILSAFEATI OPTIRUN PRIMUSRUN VGADRV_AUTO "
#define save_drivers_global_command "/usr/bin/ubconfig --target global set video " #define save_drivers_global_command "/usr/bin/ubconfig --target global set video "
#define load_drivers_local_command "/usr/bin/ubconfig --default --source system get video FAILSAFENVIDIA FAILSAFEATI OPTIRUN PRIMUSRUN " #define load_drivers_local_command "/usr/bin/ubconfig --default --source system get video FAILSAFENVIDIA FAILSAFEATI OPTIRUN PRIMUSRUN VGADRV_AUTO "
#define save_drivers_local_command "pkexec /usr/bin/ubconfig --target system set video " #define save_drivers_local_command "pkexec /usr/bin/ubconfig --target system set video "
#define remove_drivers_global_command "/usr/bin/ubconfig --target system remove video " #define remove_drivers_global_command "/usr/bin/ubconfig --target system remove video "
#define remove_drivers_local_command "/usr/bin/ubconfig --target global remove video " #define remove_drivers_local_command "/usr/bin/ubconfig --target system remove video "
#define install_proprietary_command "pkexec pacman -Sy --noconfirm " #define install_proprietary_command "pkexec pacman --quiet --needed --noconfirm -Sy "
#define delete_proprietary_command "pkexec pacman -R --noconfirm " #define delete_proprietary_command "pkexec pacman -R --noconfirm "
@ -59,6 +61,12 @@
#define get_version_proprietary_command "grep \"VERSION_ID=\" /etc/os-release | cut -d= -f2" #define get_version_proprietary_command "grep \"VERSION_ID=\" /etc/os-release | cut -d= -f2"
#define get_proprietary_drivers_command "LC_ALL=C pacman -Ss ubm-nvidia-.* |grep -oE \"[a-zA-Z-]{1,}-nvidia-[a-zA-Z0-9-]{1,}|installed\"|sed ':a;N;$!ba;s/\\ninstalled/ installed/g'"
#define get_proprietary_drivers_command "LC_ALL=C pacman -Ss ubm-nvidia-.* |grep -oE \"[a-zA-Z-]{1,}nvidia-[a-zA-Z0-9-]{1,}|installed\"|sed ':a;N;$!ba;s/\\ninstalled/ installed/g'"
#define get_adapter_info "lshw -c display -quiet |grep -oE \"vendor:[0-9a-zA-Z ]{1,}|description:[0-9a-zA-Z ]{1,}|product:[]0-9a-zA-Z [-]{1,}\"|sed 's/: /=/g';lspci | grep -E ' VGA | Display ' | cut -d\" \" -f 1 | xargs -i lspci -v -s {} |grep -oE \"Kernel[:a-zA-Z0-9: ]{1,}\"|sed 's/: /=/g'|sed 's/ /_/g'"
#define XORG_MONITOR(port) yon_char_get_augumented(" XORG_MONITOR[",yon_char_get_augumented(port,"] ")) #define XORG_MONITOR(port) yon_char_get_augumented(" XORG_MONITOR[",yon_char_get_augumented(port,"] "))
@ -97,6 +105,7 @@ typedef struct
proprietary_config proprietary; proprietary_config proprietary;
dictionary *supported_resolutions; dictionary *supported_resolutions;
GtkListStore *list; GtkListStore *list;
GtkListStore *modulelist;
char *failsafenVidia; char *failsafenVidia;
char *failsafeATI; char *failsafeATI;
int descreteOnly; int descreteOnly;
@ -230,6 +239,23 @@ typedef struct
GtkTreeViewColumn *driverDriverColumn; GtkTreeViewColumn *driverDriverColumn;
GtkTreeViewColumn *driverDescriptionColumn; GtkTreeViewColumn *driverDescriptionColumn;
GtkTreeViewColumn *driverSupportedColumn; GtkTreeViewColumn *driverSupportedColumn;
GtkWidget *DriverModulesTab;
GtkWidget *DriversTab;
GtkWidget *MainTabLabel;
GtkWidget *DriversTabLabel;
GtkWidget *InformationTabLabel;
GtkWidget *InformationFrameLabel;
GtkWidget *InformationOverlay;
GtkWidget *InformationCompanyLogoImage;
GtkWidget *TerminalOverlay;
GtkWidget *TerminalBox;
GtkWidget *TerminalRevealer;
GtkWidget *TerminalInfoLabel;
GtkWidget *TerminalMoreButton;
GtkWidget *TerminalScroll;
GtkWidget *TerminalMoreRevieler;
} widgets_dict; } widgets_dict;
typedef struct typedef struct
@ -299,7 +325,7 @@ void on_configuration_save_global(GtkWidget *self, widgets_dict *widgets);
void on_configuration_save__local_global(GtkWidget *self, widgets_dict *widgets); void on_configuration_save__local_global(GtkWidget *self, widgets_dict *widgets);
void on_configuration_save__local(GtkWidget *self, widgets_dict *widgets); void on_configuration_save__local(GtkWidget *self, widgets_dict *widgets);
void yon_config_monitor_string_parse(char *parameters, int *size); void yon_config_monitor_string_parse(char *parameters, int *size);
int yon_char_get_if_resolution(char *parsed_string); char *yon_char_parsed_get_resolution(config_str parsed_string, int size);
void yon_monitor_set_resolutions(); void yon_monitor_set_resolutions();
monitor_config yon_monitor_config_new(char *port); monitor_config yon_monitor_config_new(char *port);
void yon_monitor_config_update(monitorconfig* monitor, char *port, char *config_string); void yon_monitor_config_update(monitorconfig* monitor, char *port, char *config_string);
@ -314,4 +340,6 @@ void yon_monitor_view_update();
void yon_monitor_window_update(monitor_edit_window *window); void yon_monitor_window_update(monitor_edit_window *window);
char *yon_monitor_make_string(monitorconfig* config); char *yon_monitor_make_string(monitorconfig* config);
void yon_launch_with_output(char *command); void yon_launch_with_output(char *command);
dictionary *yon_proprieary_get();
void yon_gtk_list_store_fill_with_proprietaries(GtkListStore *list);
#endif #endif

@ -266,7 +266,8 @@ dictionary *yon_dictionary_find(dictionary **dict, char *key)
dictionary *yon_dictionary_rip(dictionary *dict) dictionary *yon_dictionary_rip(dictionary *dict)
{ {
if (!dict->next) if (!dict->next&&!dict->prev) return NULL;
else if (!dict->next)
{ {
dictionary *prev = dict->prev; dictionary *prev = dict->prev;
if (prev) if (prev)
@ -401,6 +402,20 @@ char *yon_char_divide(char *source, int dividepos)
return cut; return cut;
} }
int yon_char_find_count(char *source, char *find){
char *working_string=yon_char_new(source);
int i=0;
int size=0;
int pos=0;
config_str rtn = yon_char_parse(working_string,&size,"\n");
for (int j=0;j<size;j++){
if(strstr(rtn[j],find))
i++;
}
printf("%d\n",i);
return i;
}
/**[EN] /**[EN]
* char *yon_char_divide_search(char *source, char *dividepos, int delete_divider) * char *yon_char_divide_search(char *source, char *dividepos, int delete_divider)
* searches string [dividepos] in [source] string and divides it, * searches string [dividepos] in [source] string and divides it,
@ -474,7 +489,7 @@ char **yon_char_parse(char *parameters, int *size, char *divider){
string=realloc(string,sizeof(char*)*i); string=realloc(string,sizeof(char*)*i);
string[i-1]=yon_char_new(paramline); string[i-1]=yon_char_new(paramline);
i++; i++;
printf("%d\n",i); // printf("%d\n",i);
*size=i-1; *size=i-1;
return string; return string;
@ -504,7 +519,7 @@ int yon_char_parsed_check_exist(char **parameters, int size, char *param){
for (int i=0;i<size;i++){ for (int i=0;i<size;i++){
if (parameters[i]){ if (parameters[i]){
if (strcmp(parameters[i],param)==0) if (strstr(parameters[i],param))
return i; return i;
} else return -1; } else return -1;
} }
@ -512,6 +527,7 @@ int yon_char_parsed_check_exist(char **parameters, int size, char *param){
return -1; return -1;
} }
// parsing functions // parsing functions
apps *yon_apps_scan_and_parse_desktops(int *sizef) apps *yon_apps_scan_and_parse_desktops(int *sizef)
@ -642,7 +658,7 @@ config_str yon_config_load(char *command, int *str_len)
if (strcmp(str, "") != 0) if (strcmp(str, "") != 0)
{ {
output_strings = realloc(output_strings, sizeof(char *) * (i + 1)); output_strings = realloc(output_strings, sizeof(char *) * (i + 1));
printf("%s\n", str); // printf("%s\n", str);
output_strings[i] = NULL; output_strings[i] = NULL;
output_strings[i] = yon_char_new(str); output_strings[i] = yon_char_new(str);
memset(str, 0, 1000); memset(str, 0, 1000);

@ -116,6 +116,8 @@ char **yon_char_parsed_shrink(char **char_string, int *size, int item_to_delete)
int yon_char_parsed_check_exist(char **parameters, int size, char *param); int yon_char_parsed_check_exist(char **parameters, int size, char *param);
int yon_char_find_count(char *source, char *find);
// parsing functions // parsing functions

@ -5,7 +5,14 @@
margin:0px; margin:0px;
padding:0px; padding:0px;
} }
.opacited {
opacity:0.98;
}
.borders {
border-radius: 2px;
border-width: 1px;
border-color: @theme_text_color;
}
.workingbg { .workingbg {
background:@theme_base_color; background:@theme_base_color;
} }

@ -12,4 +12,4 @@ Icon=com.ublinux.ubl-settings-video
Terminal=false Terminal=false
X-XfcePluggable=true X-XfcePluggable=true
X-UBLPluggable=true X-UBLPluggable=true
Categories=XFCE;GTK;Settings;DesktopSettings;X-XFCE-SettingsDialog;X-XFCE-SystemSettings; Categories=XFCE;GTK;Settings;DesktopSettings;X-XFCE-SettingsDialog;X-XFCE-SystemSettings;X-UBL-SettingsManager;X-UBL-HardwareSettings;

@ -2,10 +2,18 @@
<!-- Generated with glade 3.38.2 --> <!-- Generated with glade 3.38.2 -->
<interface> <interface>
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<requires lib="vte-2.91" version="0.68"/>
<!-- interface-css-provider-path ubl-settings-video.css --> <!-- interface-css-provider-path ubl-settings-video.css -->
<object class="GtkSizeGroup" id="ConfigWindowFirst"/> <object class="GtkSizeGroup" id="ConfigWindowFirst"/>
<object class="GtkSizeGroup" id="ConfigWindowSecond"/> <object class="GtkSizeGroup" id="ConfigWindowSecond"/>
<object class="GtkSizeGroup" id="ConfigWindowThird"/> <object class="GtkSizeGroup" id="ConfigWindowThird"/>
<object class="GtkImage" id="InformationCompanyLogoImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">end</property>
<property name="valign">start</property>
<property name="pixel-size">64</property>
</object>
<object class="GtkMenu" id="LoadConfigurationMenu"> <object class="GtkMenu" id="LoadConfigurationMenu">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
@ -100,6 +108,59 @@
</child> </child>
</object> </object>
<object class="GtkSizeGroup" id="ThirdColumnSizeGroup"/> <object class="GtkSizeGroup" id="ThirdColumnSizeGroup"/>
<object class="GtkWindow">
<property name="width-request">800</property>
<property name="height-request">400</property>
<property name="can-focus">False</property>
<property name="default-width">800</property>
<property name="default-height">400</property>
<property name="icon-name">com.ublinux.ubl-settings-video</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
</object>
</child>
<child type="titlebar">
<object class="GtkHeaderBar" id="TerminalHeaderBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="show-close-button">True</property>
<child type="title">
<object class="GtkLabel" id="TerminalHeaderTitleLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="hexpand">False</property>
<property name="label" translatable="yes">UBlinux Video Configuration</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="pixel-size">32</property>
<property name="icon-name">com.ublinux.ubl-settings-video</property>
</object>
</child>
</object>
</child>
</object>
<object class="GtkAboutDialog" id="aboutWindow"> <object class="GtkAboutDialog" id="aboutWindow">
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="title" translatable="yes">О Программе</property> <property name="title" translatable="yes">О Программе</property>
@ -113,7 +174,7 @@
<property name="version">1.2</property> <property name="version">1.2</property>
<property name="copyright" translatable="yes">Copyright © 2023 - UBSoft Software LLC</property> <property name="copyright" translatable="yes">Copyright © 2023 - UBSoft Software LLC</property>
<property name="comments" translatable="yes">Settings for video output</property> <property name="comments" translatable="yes">Settings for video output</property>
<property name="website">https://ublinux.ru/</property> <property name="website">https://wiki.ublinux.ru/ru/Программное_обеспечениерограммы_и_утилиты/Все/ubl-settings-video</property>
<property name="website-label" translatable="yes">Project Home Page</property> <property name="website-label" translatable="yes">Project Home Page</property>
<property name="license" translatable="yes">Это приложение распространяется без каких-либо гарантий. <property name="license" translatable="yes">Это приложение распространяется без каких-либо гарантий.
Подробнее в &lt;a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"&gt;GNU General Public License, версии 2 или позднее&lt;/a&gt;.</property> Подробнее в &lt;a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"&gt;GNU General Public License, версии 2 или позднее&lt;/a&gt;.</property>
@ -146,6 +207,166 @@
</object> </object>
</child> </child>
</object> </object>
<object class="GtkAdjustment" id="adjustment1">
<property name="upper">300</property>
<property name="value">0.7299999937415127</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkRevealer" id="TerminalRevealer">
<property name="visible">True</property>
<property name="app-paintable">True</property>
<property name="can-focus">False</property>
<property name="valign">end</property>
<property name="reveal-child">True</property>
<child>
<object class="GtkFrame" id="TerminalFrame">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label-xalign">0</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-bottom">5</property>
<property name="spacing">5</property>
<child>
<object class="GtkProgressBar" id="TerminalInfoLabel">
<property name="visible">True</property>
<property name="app-paintable">True</property>
<property name="can-focus">False</property>
<property name="valign">center</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="TerminalMoreButton">
<property name="label" translatable="yes">More</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="can-default">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkRevealer" id="TerminalMoreRevieler">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkBox" id="TerminalBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="VteTerminal" id="TerminalTerminal">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="hscroll-policy">natural</property>
<property name="vadjustment">adjustment1</property>
<property name="vscroll-policy">natural</property>
<property name="encoding">UTF-8</property>
<property name="scroll-on-keystroke">True</property>
<property name="scroll-on-output">False</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrollbar" id="TerminalScroll">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="adjustment">adjustment1</property>
<property name="show-fill-level">True</property>
<property name="restrict-to-fill-level">False</property>
<property name="fill-level">1</property>
<property name="round-digits">2</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
</child>
<style>
<class name="workingbg"/>
</style>
</object>
</child>
<style>
<class name="opacited"/>
<class name="workingbg"/>
<class name="borders"/>
</style>
</object>
<object class="GtkBox" id="headBox"> <object class="GtkBox" id="headBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
@ -296,7 +517,7 @@
<object class="GtkLabel" id="templateMonitorInfoNameLabel"> <object class="GtkLabel" id="templateMonitorInfoNameLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="wrap">True</property> <property name="single-line-mode">True</property>
<attributes> <attributes>
<attribute name="weight" value="bold"/> <attribute name="weight" value="bold"/>
</attributes> </attributes>
@ -316,6 +537,7 @@
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="margin-start">5</property> <property name="margin-start">5</property>
<property name="margin-end">5</property> <property name="margin-end">5</property>
<property name="single-line-mode">True</property>
<attributes> <attributes>
<attribute name="weight" value="bold"/> <attribute name="weight" value="bold"/>
</attributes> </attributes>
@ -988,6 +1210,14 @@
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child> <child>
<object class="GtkLabel" id="mainStatusLabel"> <object class="GtkLabel" id="mainStatusLabel">
<property name="visible">True</property> <property name="visible">True</property>
@ -1004,6 +1234,16 @@
<attribute name="foreground" value="#000000000000"/> <attribute name="foreground" value="#000000000000"/>
</attributes> </attributes>
</object> </object>
</child>
<style>
<class name="thin"/>
</style>
</object>
</child>
<style>
<class name="thin"/>
</style>
</object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
@ -1055,7 +1295,6 @@
<object class="GtkNotebook"> <object class="GtkNotebook">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="margin-bottom">5</property>
<child> <child>
<object class="GtkScrolledWindow"> <object class="GtkScrolledWindow">
<property name="height-request">165</property> <property name="height-request">165</property>
@ -1065,6 +1304,7 @@
<property name="margin-right">5</property> <property name="margin-right">5</property>
<property name="margin-start">5</property> <property name="margin-start">5</property>
<property name="margin-end">5</property> <property name="margin-end">5</property>
<property name="margin-bottom">5</property>
<property name="hscrollbar-policy">external</property> <property name="hscrollbar-policy">external</property>
<child> <child>
<object class="GtkViewport"> <object class="GtkViewport">
@ -1292,7 +1532,7 @@
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="top-padding">5</property> <property name="top-padding">5</property>
<property name="bottom-padding">5</property> <property name="bottom-padding">5</property>
<property name="left-padding">12</property> <property name="left-padding">5</property>
<property name="right-padding">5</property> <property name="right-padding">5</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
@ -1305,7 +1545,6 @@
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">False</property> <property name="receives-default">False</property>
<property name="margin-left">5</property> <property name="margin-left">5</property>
<property name="margin-start">5</property>
<property name="draw-indicator">True</property> <property name="draw-indicator">True</property>
</object> </object>
<packing> <packing>
@ -1346,7 +1585,7 @@
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="top-padding">5</property> <property name="top-padding">5</property>
<property name="bottom-padding">5</property> <property name="bottom-padding">5</property>
<property name="left-padding">12</property> <property name="left-padding">5</property>
<property name="right-padding">5</property> <property name="right-padding">5</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
@ -1446,7 +1685,6 @@
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkButton" id="extraOptirunChooseAppsButton"> <object class="GtkButton" id="extraOptirunChooseAppsButton">
<property name="visible">True</property>
<property name="sensitive">False</property> <property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
@ -1460,7 +1698,6 @@
</child> </child>
<child> <child>
<object class="GtkButton" id="extraPrimusunChooseAppsButton"> <object class="GtkButton" id="extraPrimusunChooseAppsButton">
<property name="visible">True</property>
<property name="sensitive">False</property> <property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
@ -1548,7 +1785,7 @@
</object> </object>
</child> </child>
<child type="tab"> <child type="tab">
<object class="GtkLabel"> <object class="GtkLabel" id="MainTabLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Main Settings</property> <property name="label" translatable="yes">Main Settings</property>
@ -1558,7 +1795,11 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkNotebook"> <object class="GtkOverlay" id="TerminalOverlay">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkNotebook" id="notebook1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="margin-left">5</property> <property name="margin-left">5</property>
@ -1582,6 +1823,7 @@
<object class="GtkScrolledWindow"> <object class="GtkScrolledWindow">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="hscrollbar-policy">external</property>
<child> <child>
<object class="GtkTreeView" id="proprietaryTreeView"> <object class="GtkTreeView" id="proprietaryTreeView">
<property name="visible">True</property> <property name="visible">True</property>
@ -1589,9 +1831,10 @@
<property name="margin-top">5</property> <property name="margin-top">5</property>
<property name="model">liststore6</property> <property name="model">liststore6</property>
<property name="search-column">1</property> <property name="search-column">1</property>
<property name="enable-grid-lines">vertical</property>
<property name="enable-tree-lines">True</property> <property name="enable-tree-lines">True</property>
<child internal-child="selection"> <child internal-child="selection">
<object class="GtkTreeSelection" id="proprietaryTreeSelection"/> <object class="GtkTreeSelection"/>
</child> </child>
<child> <child>
<object class="GtkTreeViewColumn" id="proprietartInstalledColumn"> <object class="GtkTreeViewColumn" id="proprietartInstalledColumn">
@ -1628,9 +1871,13 @@
</child> </child>
<child> <child>
<object class="GtkTreeViewColumn" id="ProprietaryDescriptionColumn"> <object class="GtkTreeViewColumn" id="ProprietaryDescriptionColumn">
<property name="sizing">autosize</property>
<property name="title" translatable="yes">Description</property> <property name="title" translatable="yes">Description</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText">
<property name="wrap-mode">word</property>
<property name="wrap-width">150</property>
</object>
<attributes> <attributes>
<attribute name="text">3</attribute> <attribute name="text">3</attribute>
</attributes> </attributes>
@ -1639,9 +1886,13 @@
</child> </child>
<child> <child>
<object class="GtkTreeViewColumn" id="ProprietarySupportedColumn"> <object class="GtkTreeViewColumn" id="ProprietarySupportedColumn">
<property name="sizing">autosize</property>
<property name="title" translatable="yes">Supported Devices</property> <property name="title" translatable="yes">Supported Devices</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText">
<property name="wrap-mode">word</property>
<property name="wrap-width">220</property>
</object>
<attributes> <attributes>
<attribute name="text">4</attribute> <attribute name="text">4</attribute>
</attributes> </attributes>
@ -1718,7 +1969,7 @@
</object> </object>
</child> </child>
<child type="tab"> <child type="tab">
<object class="GtkLabel"> <object class="GtkLabel" id="DriverModulesTab">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Driver Modules</property> <property name="label" translatable="yes">Driver Modules</property>
@ -1742,6 +1993,7 @@
<object class="GtkScrolledWindow"> <object class="GtkScrolledWindow">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="hscrollbar-policy">external</property>
<child> <child>
<object class="GtkTreeView" id="driversTreeView"> <object class="GtkTreeView" id="driversTreeView">
<property name="visible">True</property> <property name="visible">True</property>
@ -1753,7 +2005,7 @@
<property name="enable-tree-lines">True</property> <property name="enable-tree-lines">True</property>
<property name="tooltip-column">2</property> <property name="tooltip-column">2</property>
<child internal-child="selection"> <child internal-child="selection">
<object class="GtkTreeSelection" id="driversTreeSelection"/> <object class="GtkTreeSelection"/>
</child> </child>
<child> <child>
<object class="GtkTreeViewColumn" id="driverInstalledColumn"> <object class="GtkTreeViewColumn" id="driverInstalledColumn">
@ -1790,9 +2042,13 @@
</child> </child>
<child> <child>
<object class="GtkTreeViewColumn" id="driverDescriptionColumn"> <object class="GtkTreeViewColumn" id="driverDescriptionColumn">
<property name="sizing">autosize</property>
<property name="title" translatable="yes">Description</property> <property name="title" translatable="yes">Description</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText">
<property name="wrap-mode">word</property>
<property name="wrap-width">150</property>
</object>
<attributes> <attributes>
<attribute name="text">3</attribute> <attribute name="text">3</attribute>
</attributes> </attributes>
@ -1801,9 +2057,13 @@
</child> </child>
<child> <child>
<object class="GtkTreeViewColumn" id="driverSupportedColumn"> <object class="GtkTreeViewColumn" id="driverSupportedColumn">
<property name="sizing">autosize</property>
<property name="title" translatable="yes">Supported Devices</property> <property name="title" translatable="yes">Supported Devices</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText">
<property name="wrap-mode">word</property>
<property name="wrap-width">220</property>
</object>
<attributes> <attributes>
<attribute name="text">4</attribute> <attribute name="text">4</attribute>
</attributes> </attributes>
@ -1883,7 +2143,7 @@
</packing> </packing>
</child> </child>
<child type="tab"> <child type="tab">
<object class="GtkLabel"> <object class="GtkLabel" id="DriversTab">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Drivers</property> <property name="label" translatable="yes">Drivers</property>
@ -1900,12 +2160,17 @@
<placeholder/> <placeholder/>
</child> </child>
</object> </object>
<packing>
<property name="index">-1</property>
</packing>
</child>
</object>
<packing> <packing>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child type="tab"> <child type="tab">
<object class="GtkLabel"> <object class="GtkLabel" id="DriversTabLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Drivers</property> <property name="label" translatable="yes">Drivers</property>
@ -1936,18 +2201,59 @@
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="margin-top">15</property>
<property name="margin-bottom">15</property>
<property name="spacing">20</property>
<child> <child>
<placeholder/> <object class="GtkOverlay" id="InformationOverlay">
<property name="width-request">177</property>
<property name="height-request">159</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="valign">start</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="valign">end</property>
<property name="pixel-size">128</property>
<property name="icon-name">com.ublinux.ubl-settings-video.video-card</property>
</object>
<packing>
<property name="index">-1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<placeholder/> <object class="GtkLabel" id="InformationLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="valign">start</property>
<property name="label" translatable="yes">&lt;span size='15pt'&gt;&lt;span color='#1a5fb4'&gt;sdrtjhsrtjh:&lt;/span&gt; dfuykdftytdykkdfty&lt;/span&gt;</property>
<property name="use-markup">True</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child> </child>
</object> </object>
</child> </child>
</object> </object>
</child> </child>
<child type="label"> <child type="label">
<object class="GtkLabel"> <object class="GtkLabel" id="InformationFrameLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="margin-left">5</property> <property name="margin-left">5</property>
@ -1961,7 +2267,7 @@
</packing> </packing>
</child> </child>
<child type="tab"> <child type="tab">
<object class="GtkLabel"> <object class="GtkLabel" id="InformationTabLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Information</property> <property name="label" translatable="yes">Information</property>
@ -2185,6 +2491,9 @@
<widget name="mainExtraLaunchOptirunCheck"/> <widget name="mainExtraLaunchOptirunCheck"/>
</widgets> </widgets>
</object> </object>
<object class="GtkSizeGroup" id="sgroup">
<property name="mode">both</property>
</object>
<object class="GtkOverlay" id="templateMonitorscreenOverlay"> <object class="GtkOverlay" id="templateMonitorscreenOverlay">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>

@ -11,194 +11,348 @@ msgstr ""
"POT-Creation-Date: 2023-04-21 12:33+0000\n" "POT-Creation-Date: 2023-04-21 12:33+0000\n"
"PO-Revision-Date: 2023-01-01 00:00+0600\n" "PO-Revision-Date: 2023-01-01 00:00+0600\n"
"Last-Translator: UBLinux Team <info@ublinux.com>\n" "Last-Translator: UBLinux Team <info@ublinux.com>\n"
"Language-Team: Russian - UBLinux Team <info@ublinux.com>\n" "Language-Team: UBLinux Team <info@ublinux.com>\n"
"Language: Russian\n" "Language: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: source/ubl-settings-video.c:26 source/ubl-settings-video.c:223 #: source/ubl-settings-video.c:323 source/ubl-settings-video.c:366
msgid "Cancel" #: source/ubl-settings-video.c:923 source/ubl-settings-video.c:934
msgid "Don't use"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:27 #: source/ubl-settings-video.c:615 source/ubl-settings-video-strings.h:38
msgid "Accept" msgid "UBlinux Video Configuration"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:28 source/ubl-settings-video.c:386 #: source/ubl-settings-video.c:617
msgid "Driver" msgid "Progect Home Page"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:29 #: source/ubl-settings-video.c:618
msgid "Description" msgid "Videocard and monitor configuration manager"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:87 source/ubl-settings-video.c:392 #: source/ubl-settings-video.c:924 source/ubl-settings-video.c:935
msgid "UBlinux Video Configuration" #: source/ubl-settings-video-strings.h:43
msgid "fbdev"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:89 #: source/ubl-settings-video-strings.h:1
msgid "Progect Home Page" msgid "Default settings"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:90 #: source/ubl-settings-video-strings.h:2
msgid "Videocard and monitor configuration manager" msgid "Monitor "
msgstr ""
#: source/ubl-settings-video-strings.h:3
msgid "Video adapter and display settings"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:215 #: source/ubl-settings-video-strings.h:4
msgid "Monitor: " msgid "Port: "
msgstr "" msgstr ""
#: source/ubl-settings-video.c:216 #: source/ubl-settings-video-strings.h:5
msgid "Resolution (px): " msgid "Resolution (px): "
msgstr "" msgstr ""
#: source/ubl-settings-video.c:217 #: source/ubl-settings-video-strings.h:6
msgid "Frequency (Hz): " msgid "Frequency (Hz): "
msgstr "" msgstr ""
#: source/ubl-settings-video.c:218 #: source/ubl-settings-video-strings.h:7
msgid "Rotation: " msgid "Rotation: "
msgstr "" msgstr ""
#: source/ubl-settings-video.c:220 #: source/ubl-settings-video-strings.h:8
msgid "Main monitor" msgid "Position: "
msgstr "" msgstr ""
#: source/ubl-settings-video.c:221 #: source/ubl-settings-video-strings.h:9
msgid "through parameter line:" msgid "Do not switch off display"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:226 source/ubl-settings-video.c:231 #: source/ubl-settings-video-strings.h:10
#: source/ubl-settings-video.c:233 source/ubl-settings-video.c:236 msgid "Create modeline for current resolution with CVT"
#: source/ubl-settings-video.c:238 source/ubl-settings-video.c:258
msgid "Default settings"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:374 #: source/ubl-settings-video-strings.h:11
msgid "Don't use" msgid "Use \"CVT Reduced Blanking\""
msgstr "" msgstr ""
#: source/ubl-settings-video.c:375 source/ubl-settings-video.c:377 #: source/ubl-settings-video-strings.h:12
msgid "Off" msgid "Create modeline for current resolution with GTF"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:376 source/ubl-settings-video.c:378 #: source/ubl-settings-video-strings.h:13
msgid "fbdev" msgid "Configure manually through parameter line: "
msgstr ""
#: source/ubl-settings-video-strings.h:14
msgid "Main display"
msgstr ""
#: source/ubl-settings-video-strings.h:15
msgid "Show unsupported"
msgstr ""
#: source/ubl-settings-video-strings.h:16
msgid "Enabled"
msgstr ""
#: source/ubl-settings-video-strings.h:17
msgid "Left"
msgstr ""
#: source/ubl-settings-video-strings.h:18
msgid "Right"
msgstr ""
#: source/ubl-settings-video-strings.h:19
msgid "Inverted"
msgstr ""
#: source/ubl-settings-video-strings.h:20
msgid "Left of"
msgstr ""
#: source/ubl-settings-video-strings.h:21
msgid "Right of"
msgstr ""
#: source/ubl-settings-video-strings.h:22
msgid "Above"
msgstr ""
#: source/ubl-settings-video-strings.h:23
msgid "Below "
msgstr ""
#: source/ubl-settings-video-strings.h:24
msgid "No rotation"
msgstr ""
#: source/ubl-settings-video-strings.h:25
#: source/ubl-settings-video-strings.h:40
msgid "Save"
msgstr ""
#: source/ubl-settings-video-strings.h:26
#: source/ubl-settings-video-strings.h:58
msgid "Cancel"
msgstr ""
#: source/ubl-settings-video-strings.h:27
msgid "Choose port to configure"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:380 #: source/ubl-settings-video-strings.h:28
msgid "1st variant. May cause perfomance drops in video games" msgid "1st variant. May cause perfomance drops in video games"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:381 #: source/ubl-settings-video-strings.h:29
msgid "2nd variant. May not work on specific video cards" msgid "2nd variant. May not work on specific video cards"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:382 #: source/ubl-settings-video-strings.h:30
msgid "Video output configuration" msgid "Video output configuration"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:383 #: source/ubl-settings-video-strings.h:31
msgid "Proprietary driver: "
msgstr ""
#: source/ubl-settings-video.c:384
msgid "Failsafe driver nVidia: " msgid "Failsafe driver nVidia: "
msgstr "" msgstr ""
#: source/ubl-settings-video.c:385 #: source/ubl-settings-video-strings.h:32
msgid "Failsafe driver AMD/ATI: " msgid "Failsafe driver AMD/ATI: "
msgstr "" msgstr ""
#: source/ubl-settings-video.c:388 #: source/ubl-settings-video-strings.h:33
msgid "Driver"
msgstr ""
#: source/ubl-settings-video-strings.h:34
msgid "Monitor configuration" msgid "Monitor configuration"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:389 #: source/ubl-settings-video-strings.h:35
msgid "Hybrid graphics" msgid "Hybrid graphics"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:390 #: source/ubl-settings-video-strings.h:36
msgid "Fix frame gap (nVidia)" msgid "Fix frame gap (nVidia)"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:391 #: source/ubl-settings-video-strings.h:37
msgid "Extra" msgid "Extra"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:393 #: source/ubl-settings-video-strings.h:39
msgid "Load" msgid "Load"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:394 #: source/ubl-settings-video-strings.h:41
msgid "Save" msgid "On"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:396 #: source/ubl-settings-video-strings.h:42
msgid "On" msgid "Off"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:397 #: source/ubl-settings-video-strings.h:44
msgid "Automatically choose and use driver" msgid "Automatically choose and use driver"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:398 #: source/ubl-settings-video-strings.h:45
msgid "Launch programms through optirun (nVidia): " msgid "Launch programms through optirun (nVidia): "
msgstr "" msgstr ""
#: source/ubl-settings-video.c:399 #: source/ubl-settings-video-strings.h:46
msgid "Launch programs through primusun (nVidia): " msgid "Launch programs through primusrun (nVidia): "
msgstr "" msgstr ""
#: source/ubl-settings-video.c:400 #: source/ubl-settings-video-strings.h:47
msgid "discrete video only (AMD/ATI)" msgid "discrete video only (AMD/ATI)"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:402 #: source/ubl-settings-video-strings.h:48
msgid "Load from global configuration" msgid "Load from global configuration"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:403 #: source/ubl-settings-video-strings.h:49
msgid "Load from local configuration" msgid "Load from local configuration"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:404 #: source/ubl-settings-video-strings.h:50
msgid "Save to global an local configuration" msgid "Save to global an local configuration"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:405 #: source/ubl-settings-video-strings.h:51
msgid "Save to global configuration" msgid "Save to global configuration"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:406 #: source/ubl-settings-video-strings.h:52
msgid "Save to local configuration" msgid "Save to local configuration"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:407 #: source/ubl-settings-video-strings.h:53
msgid "Documentation" msgid "Documentation"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:408 #: source/ubl-settings-video-strings.h:54
msgid "About" msgid "About"
msgstr "" msgstr ""
#: source/ubl-settings-video.c:438 #: source/ubl-settings-video-strings.h:55
msgid "Configuration has been loaded" msgid "Installed"
msgstr ""
#: source/ubl-settings-video-strings.h:56
msgid "Package"
msgstr ""
#: source/ubl-settings-video-strings.h:57
msgid "Supported Devices"
msgstr ""
#: source/ubl-settings-video-strings.h:59
msgid "Accept"
msgstr ""
#: source/ubl-settings-video-strings.h:61
msgid "Information"
msgstr ""
#: source/ubl-settings-video-strings.h:62
msgid "Drivers"
msgstr ""
#: source/ubl-settings-video-strings.h:63
msgid "Main settings"
msgstr ""
#: source/ubl-settings-video-strings.h:64
msgid "Devices and drivers"
msgstr ""
#: source/ubl-settings-video-strings.h:65
msgid "Driver modules"
msgstr ""
#: source/ubl-settings-video-strings.h:80
msgid "Error: Port must be chosen to save"
msgstr "" msgstr ""
#: source/ubl-settings-video.h:22 #: source/ubl-settings-video-strings.h:81
msgid "Monitor configuration succeedeed"
msgstr ""
#: source/ubl-settings-video-strings.h:83
msgid "Global configuration loading succseeded."
msgstr ""
#: source/ubl-settings-video-strings.h:84
msgid "Local configuration loading succseeded."
msgstr ""
#: source/ubl-settings-video-strings.h:86
msgid "Local and global configuration saving succseeded."
msgstr ""
#: source/ubl-settings-video-strings.h:87
msgid "Global configuration saving succseeded."
msgstr ""
#: source/ubl-settings-video-strings.h:88
msgid "Local configuration saving succseeded."
msgstr ""
#: source/ubl-settings-video-strings.h:90
msgid "Yes"
msgstr ""
#: source/ubl-settings-video-strings.h:91
msgid "No"
msgstr ""
#: source/ubl-settings-video-strings.h:93
msgid "Description"
msgstr ""
#: source/ubl-settings-video-strings.h:94
msgid "Vendor"
msgstr ""
#: source/ubl-settings-video-strings.h:95
msgid "Model"
msgstr ""
#: source/ubl-settings-video-strings.h:96
msgid "Kernel driver in use"
msgstr ""
#: source/ubl-settings-video-strings.h:97
msgid "Kernel modules"
msgstr ""
#: source/ubl-settings-video.h:25
msgid "Failed to load global configuration" msgid "Failed to load global configuration"
msgstr "" msgstr ""
#: source/ubl-settings-video.h:23 #: source/ubl-settings-video.h:26
msgid "Failed to load local configuration" msgid "Failed to load local configuration"
msgstr "" msgstr ""
#: source/ubl-settings-video.h:25 #: source/ubl-settings-video.h:28
msgid "Saving to global configuration Succeeded" msgid "Saving to global configuration Succeeded"
msgstr "" msgstr ""
#: source/ubl-settings-video.h:26 #: source/ubl-settings-video.h:29
msgid "Saving to local configuration Succeeded" msgid "Saving to local configuration Succeeded"
msgstr "" msgstr ""
msgid "VGA compitable controller"
msgstr ""

@ -17,208 +17,357 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: source/ubl-settings-video.c:26 source/ubl-settings-video.c:223 #: source/ubl-settings-video.c:323 source/ubl-settings-video.c:366
msgid "Cancel" #: source/ubl-settings-video.c:923 source/ubl-settings-video.c:934
msgstr "Отмена" msgid "Don't use"
msgstr "Не использовать"
#: source/ubl-settings-video.c:27
msgid "Accept"
msgstr "Принять"
#: source/ubl-settings-video.c:28 source/ubl-settings-video.c:386
msgid "Driver"
msgstr "Драйвер"
#: source/ubl-settings-video.c:29
msgid "Description"
msgstr "Описание"
#: source/ubl-settings-video.c:87 source/ubl-settings-video.c:392 #: source/ubl-settings-video.c:615 source/ubl-settings-video-strings.h:38
msgid "UBlinux Video Configuration" msgid "UBlinux Video Configuration"
msgstr "Видеокарта/Экран" msgstr "Видеокарта/Экран"
#: source/ubl-settings-video.c:89 #: source/ubl-settings-video.c:617
msgid "Progect Home Page" msgid "Progect Home Page"
msgstr "Домашняя страница проекта" msgstr "Домашняя страница проекта"
#: source/ubl-settings-video.c:90 #: source/ubl-settings-video.c:618
#, fuzzy
msgid "Videocard and monitor configuration manager" msgid "Videocard and monitor configuration manager"
msgstr "Настройка вывода изображения" msgstr "Настройка вывода изображения"
#: source/ubl-settings-video.c:215 #: source/ubl-settings-video.c:924 source/ubl-settings-video.c:935
msgid "Monitor: " #: source/ubl-settings-video-strings.h:43
msgid "fbdev"
msgstr "fbdev"
#: source/ubl-settings-video-strings.h:1
msgid "Default settings"
msgstr "По умолчанию"
#: source/ubl-settings-video-strings.h:2
msgid "Monitor "
msgstr "Монитор: " msgstr "Монитор: "
#: source/ubl-settings-video.c:216 #: source/ubl-settings-video-strings.h:3
msgid "Video adapter and display settings"
msgstr "Настройка вывода изображения и установка драйвера видеокарты"
#: source/ubl-settings-video-strings.h:4
msgid "Port: "
msgstr "Порт: "
#: source/ubl-settings-video-strings.h:5
msgid "Resolution (px): " msgid "Resolution (px): "
msgstr "Разрешение (px): " msgstr "Разрешение (px): "
#: source/ubl-settings-video.c:217 #: source/ubl-settings-video-strings.h:6
msgid "Frequency (Hz): " msgid "Frequency (Hz): "
msgstr "Обновления (Hz): " msgstr "Обновления (Hz): "
#: source/ubl-settings-video.c:218 #: source/ubl-settings-video-strings.h:7
msgid "Rotation: " msgid "Rotation: "
msgstr "Вращение: " msgstr "Вращение: "
#: source/ubl-settings-video.c:220 #: source/ubl-settings-video-strings.h:8
#, fuzzy msgid "Position: "
msgid "Main monitor" msgstr "Положение: "
msgstr "Основной"
#: source/ubl-settings-video.c:221 #: source/ubl-settings-video-strings.h:9
msgid "through parameter line:" msgid "Do not switch off display"
msgstr "Через строку параметра: " msgstr "Не выключать дисплей"
#: source/ubl-settings-video.c:226 source/ubl-settings-video.c:231 #: source/ubl-settings-video-strings.h:10
#: source/ubl-settings-video.c:233 source/ubl-settings-video.c:236 msgid "Create modeline for current resolution with CVT"
#: source/ubl-settings-video.c:238 source/ubl-settings-video.c:258 msgstr "Создать modeline для укащанного разрешения с помощью CVT"
msgid "Default settings"
msgstr "По умолчанию"
#: source/ubl-settings-video.c:374 #: source/ubl-settings-video-strings.h:11
msgid "Don't use" msgid "Use \"CVT Reduced Blanking\""
msgstr "Не использовать" msgstr ""
"Использовать \"CVT Reduced Blanking\" уменьшения пропускной способности\n"
"для дисплеев с высоким разрешением"
#: source/ubl-settings-video.c:375 source/ubl-settings-video.c:377 #: source/ubl-settings-video-strings.h:12
msgid "Off" msgid "Create modeline for current resolution with GTF"
msgstr "Выключить" msgstr "Создать modeline для указанного разрешения с помощью GTF"
#: source/ubl-settings-video.c:376 source/ubl-settings-video.c:378 #: source/ubl-settings-video-strings.h:13
msgid "fbdev" msgid "Configure manually through parameter line: "
msgstr "fbdev" msgstr "Настроить вручную через строку параметра: "
#: source/ubl-settings-video-strings.h:14
msgid "Main display"
msgstr "Основной дисплей"
#: source/ubl-settings-video-strings.h:15
msgid "Show unsupported"
msgstr "Все видеорежимы"
#: source/ubl-settings-video-strings.h:16
msgid "Enabled"
msgstr "Включён"
#: source/ubl-settings-video-strings.h:17
msgid "Left"
msgstr "Влево"
#: source/ubl-settings-video-strings.h:18
msgid "Right"
msgstr "Вправо"
#: source/ubl-settings-video-strings.h:19
msgid "Inverted"
msgstr "Инвертирован"
#: source/ubl-settings-video-strings.h:20
msgid "Left of"
msgstr "Слева от"
#: source/ubl-settings-video-strings.h:21
msgid "Right of"
msgstr "Справа от"
#: source/ubl-settings-video-strings.h:22
msgid "Above"
msgstr "Над"
#: source/ubl-settings-video-strings.h:23
msgid "Below "
msgstr "Под "
#: source/ubl-settings-video.c:380 #: source/ubl-settings-video-strings.h:24
msgid "No rotation"
msgstr "Не поворачивать"
#: source/ubl-settings-video-strings.h:25
#: source/ubl-settings-video-strings.h:40
msgid "Save"
msgstr "Сохранить"
#: source/ubl-settings-video-strings.h:26
#: source/ubl-settings-video-strings.h:58
msgid "Cancel"
msgstr "Отмена"
#: source/ubl-settings-video-strings.h:27
msgid "Choose port to configure"
msgstr "Выбрать порт для настройки"
#: source/ubl-settings-video-strings.h:28
msgid "1st variant. May cause perfomance drops in video games" msgid "1st variant. May cause perfomance drops in video games"
msgstr "1 вариант. Может снизить производительность в играх" msgstr "1 вариант. Может снизить производительность в играх"
#: source/ubl-settings-video.c:381 #: source/ubl-settings-video-strings.h:29
msgid "2nd variant. May not work on specific video cards" msgid "2nd variant. May not work on specific video cards"
msgstr "2 вариант. Не на каждой карте может сработать" msgstr "2 вариант. Не на каждой карте может сработать"
#: source/ubl-settings-video.c:382 #: source/ubl-settings-video-strings.h:30
msgid "Video output configuration" msgid "Video output configuration"
msgstr "Настройка вывода изображения" msgstr "Настройка вывода изображения"
#: source/ubl-settings-video.c:383 #: source/ubl-settings-video-strings.h:31
#, fuzzy
msgid "Proprietary driver: "
msgstr "Проприетарный драйвер: "
#: source/ubl-settings-video.c:384
#, fuzzy
msgid "Failsafe driver nVidia: " msgid "Failsafe driver nVidia: "
msgstr "Отказоучтойчивый драйвер nVidia: " msgstr "Отказоучтойчивый драйвер nVidia: "
#: source/ubl-settings-video.c:385 #: source/ubl-settings-video-strings.h:32
#, fuzzy
msgid "Failsafe driver AMD/ATI: " msgid "Failsafe driver AMD/ATI: "
msgstr "Отказоустойчивый драйвер AMD/ATI: " msgstr "Отказоустойчивый драйвер AMD/ATI: "
#: source/ubl-settings-video.c:388 #: source/ubl-settings-video-strings.h:33
msgid "Driver"
msgstr "Драйвер"
#: source/ubl-settings-video-strings.h:34
msgid "Monitor configuration" msgid "Monitor configuration"
msgstr "Настройка экрана" msgstr "Настройка экрана"
#: source/ubl-settings-video.c:389 #: source/ubl-settings-video-strings.h:35
msgid "Hybrid graphics" msgid "Hybrid graphics"
msgstr "Гибридная графика" msgstr "Гибридная графика"
#: source/ubl-settings-video.c:390 #: source/ubl-settings-video-strings.h:36
msgid "Fix frame gap (nVidia)" msgid "Fix frame gap (nVidia)"
msgstr "Исправить разрыв кадров (nVidia)" msgstr "Исправить разрыв кадров (nVidia)"
#: source/ubl-settings-video.c:391 #: source/ubl-settings-video-strings.h:37
msgid "Extra" msgid "Extra"
msgstr "Дополнительно" msgstr "Дополнительно"
#: source/ubl-settings-video.c:393 #: source/ubl-settings-video-strings.h:39
msgid "Load" msgid "Load"
msgstr "Загрузить" msgstr "Загрузить"
#: source/ubl-settings-video.c:394 #: source/ubl-settings-video-strings.h:41
msgid "Save"
msgstr "Сохранить"
#: source/ubl-settings-video.c:396
msgid "On" msgid "On"
msgstr "Включить" msgstr "Включить"
#: source/ubl-settings-video.c:397 #: source/ubl-settings-video-strings.h:42
msgid "Off"
msgstr "Выключить"
#: source/ubl-settings-video-strings.h:44
msgid "Automatically choose and use driver" msgid "Automatically choose and use driver"
msgstr "Автоматический выбор и использование драйвера" msgstr "Автоматический выбор и использование драйвера"
#: source/ubl-settings-video.c:398 #: source/ubl-settings-video-strings.h:45
#, fuzzy
msgid "Launch programms through optirun (nVidia): " msgid "Launch programms through optirun (nVidia): "
msgstr "Запуск программ через (nVidia)" msgstr "Запуск программ через optirun (nVidia)"
#: source/ubl-settings-video.c:399 #: source/ubl-settings-video-strings.h:46
#, fuzzy msgid "Launch programs through primusrun (nVidia): "
msgid "Launch programs through primusun (nVidia): " msgstr "Запуск программ через primusrun (nVidia)"
msgstr "Запуск программ через (nVidia)"
#: source/ubl-settings-video.c:400 #: source/ubl-settings-video-strings.h:47
msgid "discrete video only (AMD/ATI)" msgid "discrete video only (AMD/ATI)"
msgstr "Только дискретное видео (AMD/ATI)" msgstr "Только дискретное видео (AMD/ATI)"
#: source/ubl-settings-video.c:402 #: source/ubl-settings-video-strings.h:48
#, fuzzy
msgid "Load from global configuration" msgid "Load from global configuration"
msgstr "Загрузить глобальную конфигурацию" msgstr "Загрузить глобальную конфигурацию"
#: source/ubl-settings-video.c:403 #: source/ubl-settings-video-strings.h:49
#, fuzzy
msgid "Load from local configuration" msgid "Load from local configuration"
msgstr "Загрузить локальную конфигуруцию" msgstr "Загрузить локальную конфигуруцию"
#: source/ubl-settings-video.c:404 #: source/ubl-settings-video-strings.h:50
#, fuzzy
msgid "Save to global an local configuration" msgid "Save to global an local configuration"
msgstr "Сохранить в глобальную и локальную конфигурацию" msgstr "Сохранить в глобальную и локальную конфигурацию"
#: source/ubl-settings-video.c:405 #: source/ubl-settings-video-strings.h:51
#, fuzzy
msgid "Save to global configuration" msgid "Save to global configuration"
msgstr "Сохранить в глобальную конфигурацию" msgstr "Сохранить в глобальную конфигурацию"
#: source/ubl-settings-video.c:406 #: source/ubl-settings-video-strings.h:52
#, fuzzy
msgid "Save to local configuration" msgid "Save to local configuration"
msgstr "Схоранить в локальную конфигурацию" msgstr "Схоранить в локальную конфигурацию"
#: source/ubl-settings-video.c:407 #: source/ubl-settings-video-strings.h:53
#, fuzzy
msgid "Documentation" msgid "Documentation"
msgstr "Справка" msgstr "Справка"
#: source/ubl-settings-video.c:408 #: source/ubl-settings-video-strings.h:54
msgid "About" msgid "About"
msgstr "О программе" msgstr "О программе"
#: source/ubl-settings-video.c:438 #: source/ubl-settings-video-strings.h:55
msgid "Configuration has been loaded" msgid "Installed"
msgstr "Конфигурация была загружена" msgstr "Установлено"
#: source/ubl-settings-video.h:22 #: source/ubl-settings-video-strings.h:56
#, fuzzy msgid "Package"
msgstr "Пакет"
#: source/ubl-settings-video-strings.h:57
msgid "Supported Devices"
msgstr "Устройства"
#: source/ubl-settings-video-strings.h:59
msgid "Accept"
msgstr "Принять"
#: source/ubl-settings-video-strings.h:61
msgid "Information"
msgstr "Информация"
#: source/ubl-settings-video-strings.h:62
msgid "Drivers"
msgstr "Драйвера"
#: source/ubl-settings-video-strings.h:63
msgid "Main settings"
msgstr "Основные настройки"
#: source/ubl-settings-video-strings.h:64
msgid "Devices and drivers"
msgstr "Устройства и драйвера"
#: source/ubl-settings-video-strings.h:65
msgid "Driver modules"
msgstr "Модули ядра"
#: source/ubl-settings-video-strings.h:80
msgid "Error: Port must be chosen to save"
msgstr "Ошибка: Выберите порт для сохранения"
#: source/ubl-settings-video-strings.h:81
msgid "Monitor configuration succeedeed"
msgstr "Настройки экрана сохранены"
#: source/ubl-settings-video-strings.h:83
msgid "Global configuration loading succseeded."
msgstr "Успешная загрузка глобальной конфигурации"
#: source/ubl-settings-video-strings.h:84
msgid "Local configuration loading succseeded."
msgstr "Успешная загрузка локальной конфигурации"
#: source/ubl-settings-video-strings.h:86
msgid "Local and global configuration saving succseeded."
msgstr "Успешное сохранение глобальной и локальной конфигурации"
#: source/ubl-settings-video-strings.h:87
msgid "Global configuration saving succseeded."
msgstr "Успешное сохранение глобальной конфигурации"
#: source/ubl-settings-video-strings.h:88
msgid "Local configuration saving succseeded."
msgstr "Успешная загрузка локальной конфигурации"
#: source/ubl-settings-video-strings.h:90
msgid "Yes"
msgstr "Да"
#: source/ubl-settings-video-strings.h:91
msgid "No"
msgstr "Нет"
#: source/ubl-settings-video-strings.h:93
msgid "Description"
msgstr "Описание"
#: source/ubl-settings-video-strings.h:94
msgid "Vendor"
msgstr "Производитель"
#: source/ubl-settings-video-strings.h:95
msgid "Model"
msgstr "Модель"
#: source/ubl-settings-video-strings.h:96
msgid "Kernel driver in use"
msgstr "Используемый драйвер ядра"
#: source/ubl-settings-video-strings.h:97
msgid "Kernel modules"
msgstr "Модули ядра"
#: source/ubl-settings-video.h:25
msgid "Failed to load global configuration" msgid "Failed to load global configuration"
msgstr "Ошибка загрузки глобальной конфигурации" msgstr "Ошибка загрузки глобальной конфигурации"
#: source/ubl-settings-video.h:23 #: source/ubl-settings-video.h:26
#, fuzzy
msgid "Failed to load local configuration" msgid "Failed to load local configuration"
msgstr "Ошибка загрузки локальной конфигурации" msgstr "Ошибка загрузки локальной конфигурации"
#: source/ubl-settings-video.h:25 #: source/ubl-settings-video.h:28
#, fuzzy
msgid "Saving to global configuration Succeeded" msgid "Saving to global configuration Succeeded"
msgstr "Успешное сохранение глобальной конфигурации" msgstr "Успешное сохранение глобальной конфигурации"
#: source/ubl-settings-video.h:26 #: source/ubl-settings-video.h:29
#, fuzzy
msgid "Saving to local configuration Succeeded" msgid "Saving to local configuration Succeeded"
msgstr "Успешное сохранение локальной конфигурации" msgstr "Успешное сохранение локальной конфигурации"
msgid "VGA compitable controller"
msgstr "VGA-совместимый адаптер"
#~ msgid "Configuration has been loaded"
#~ msgstr "Конфигурация была загружена"
#, fuzzy
#~ msgid "Main monitor"
#~ msgstr "Основной"
#, fuzzy
#~ msgid "Proprietary driver: "
#~ msgstr "Проприетарный драйвер: "
#~ msgid "DPMS off" #~ msgid "DPMS off"
#~ msgstr "DMPS выключен" #~ msgstr "DMPS выключен"

@ -1,8 +1,8 @@
VERSION_ID:DRV_PAСKAGE:DRV_NAME:DRV_DESCRIPTION:DRV_SUPPORT VERSION_ID:DRV_PAСKAGE:DRV_NAME:DRV_DESCRIPTION:DRV_SUPPORT
:ubm-nvidia-340:nvidia-340:Пакет с модулем драйвера и утилиты NVIDIA 340xx:Драйвер видеокарт nVidia серий 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX 2204:ubm-nvidia-340:nvidia-340:Пакет с модулем драйвера и утилиты NVIDIA 340xx:Драйвер видеокарт nVidia серий 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX
:ubm-nvidia-390:nvidia-390:Пакет с модулем драйвера и утилиты NVIDIA 390xx:Драйвер видеокарт nVidia серий 4XX, 5XX, 6XX, 7XX, 9XX, 10XX 2204:ubm-nvidia-390:nvidia-390:Пакет с модулем драйвера и утилиты NVIDIA 390xx:Драйвер видеокарт nVidia серий 4XX, 5XX, 6XX, 7XX, 9XX, 10XX
:ubm-nvidia-430:nvidia-430:Пакет с модулем включает в себя драйвер NVIDIA 430xx и утилиты:Драйвер видеокарт nVidia серий 6XX, 7XX, 9XX, 10XX, 16XX 2204:ubm-nvidia-430:nvidia-430:Пакет с модулем включает в себя драйвер NVIDIA 430xx и утилиты:Драйвер видеокарт nVidia серий 6XX, 7XX, 9XX, 10XX, 16XX
:ubm-nvidia-470:nvidia-470:Пакет с модулем драйвера и утилиты NVIDIA 470xx:Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX 2204:ubm-nvidia-470:nvidia-470:Пакет с модулем драйвера и утилиты NVIDIA 470xx:Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
:ubm-nvidia-510:nvidia-510:Пакет с модулем драйвера и утилиты NVIDIA 510xx:Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX 2204:ubm-nvidia-510:nvidia-510:Пакет с модулем драйвера и утилиты NVIDIA 510xx:Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
:ubm-nvidia-515:nvidia-515:Пакет с модулем драйвера и утилиты NVIDIA 515xx:Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX 2204:ubm-nvidia-515:nvidia-515:Пакет с модулем драйвера и утилиты NVIDIA 515xx:Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
:ubm-nvidia-optimus:nvidia-optimus:Пакет с модулем включает в себя NVIDIA Optimus: 2204:ubm-nvidia-optimus:nvidia-optimus:Пакет с модулем включает в себя NVIDIA Optimus:

1 VERSION_ID:DRV_PAСKAGE:DRV_NAME:DRV_DESCRIPTION:DRV_SUPPORT
2 :ubm-nvidia-340:nvidia-340:Пакет с модулем драйвера и утилиты NVIDIA 340xx:Драйвер видеокарт nVidia серий 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX 2204:ubm-nvidia-340:nvidia-340:Пакет с модулем драйвера и утилиты NVIDIA 340xx:Драйвер видеокарт nVidia серий 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX
3 :ubm-nvidia-390:nvidia-390:Пакет с модулем драйвера и утилиты NVIDIA 390xx:Драйвер видеокарт nVidia серий 4XX, 5XX, 6XX, 7XX, 9XX, 10XX 2204:ubm-nvidia-390:nvidia-390:Пакет с модулем драйвера и утилиты NVIDIA 390xx:Драйвер видеокарт nVidia серий 4XX, 5XX, 6XX, 7XX, 9XX, 10XX
4 :ubm-nvidia-430:nvidia-430:Пакет с модулем включает в себя драйвер NVIDIA 430xx и утилиты:Драйвер видеокарт nVidia серий 6XX, 7XX, 9XX, 10XX, 16XX 2204:ubm-nvidia-430:nvidia-430:Пакет с модулем включает в себя драйвер NVIDIA 430xx и утилиты:Драйвер видеокарт nVidia серий 6XX, 7XX, 9XX, 10XX, 16XX
5 :ubm-nvidia-470:nvidia-470:Пакет с модулем драйвера и утилиты NVIDIA 470xx:Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX 2204:ubm-nvidia-470:nvidia-470:Пакет с модулем драйвера и утилиты NVIDIA 470xx:Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
6 :ubm-nvidia-510:nvidia-510:Пакет с модулем драйвера и утилиты NVIDIA 510xx:Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX 2204:ubm-nvidia-510:nvidia-510:Пакет с модулем драйвера и утилиты NVIDIA 510xx:Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
7 :ubm-nvidia-515:nvidia-515:Пакет с модулем драйвера и утилиты NVIDIA 515xx:Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX 2204:ubm-nvidia-515:nvidia-515:Пакет с модулем драйвера и утилиты NVIDIA 515xx:Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
8 :ubm-nvidia-optimus:nvidia-optimus:Пакет с модулем включает в себя NVIDIA Optimus: 2204:ubm-nvidia-optimus:nvidia-optimus:Пакет с модулем включает в себя NVIDIA Optimus:
Loading…
Cancel
Save