{"id":236,"date":"2008-07-25T16:33:08","date_gmt":"2008-07-25T15:33:08","guid":{"rendered":"http:\/\/albertomilone.com\/wordpress\/?p=236"},"modified":"2008-07-25T16:33:08","modified_gmt":"2008-07-25T15:33:08","slug":"blueprint-x-kit-and-xorg-options-editor","status":"publish","type":"post","link":"https:\/\/albertomilone.com\/blog\/blueprint-x-kit-and-xorg-options-editor\/","title":{"rendered":"Blueprint &#8211; X-Kit and Xorg Options Editor"},"content":{"rendered":"<p>As promised in my previous posts, in this blog post I will deal with a project I&#8217;m working on which implements <a href=\"https:\/\/blueprints.launchpad.net\/ubuntu\/+spec\/xorg-options-editor\">this blueprint<\/a>.<\/p>\n<p><strong>Bryce Harrington<\/strong> (the mentor of this blueprint), <strong>Colin Watson<\/strong> (the approver) and I talked about this at the UDS in Prague. The blueprint is based on Bryce&#8217;s original idea to improve the Screen Resolution panel. The work was divided into 2 phases:<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>Phase 1<\/strong><\/span> (which is a higher priority) is about providing the Screen Resolution panel with the capability to set the virtual resolution in the xorg.conf when, put simply, 2 or more screens don&#8217;t fit the framebuffer. Currently the Screen Resolution panel doesn&#8217;t succeed in such case since the drivers are not able to reallocate the framebuffer yet. A simple GUI should allow users to set the required virtual resolution and write the settings to the xorg.conf through PolicyKit.<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>Phase 2<\/strong><\/span> is about adding an &#8220;Advanced settings&#8221; button to the Screen Resolution panel so as to allow advanced users to edit the xorg.conf through a simple GUI. The aim of such program is not to set up multiple screens layouts but only to make it easier for users to add, edit and remove options without having to know which section an option, say, DontZap, belongs to, or to switch to a different driver. A more detailed explanation of the use cases is available <a href=\"https:\/\/wiki.ubuntu.com\/X\/OptionsEditor\">here<\/a>.<\/p>\n<p>In Prague we agreed that this project couldn&#8217;t become reality without an xorg.conf parser\/writer and some other tools. For this reason I started the <strong>X-Kit<\/strong> project:<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/albertomilone.com\/xkit2b.png\" alt=\"X-Kit\" \/><\/p>\n<p><em><strong>Components:<\/strong><\/em><\/p>\n<ol>\n<p>\t* <span style=\"text-decoration: underline;\"><i>XorgParser<\/i><\/span>: a simple, transparent and easy to extend xorg parser.<br \/>\n\t* <span style=\"text-decoration: underline;\"><i>XorgValidator<\/i><\/span>: a program which uses X-parser, tries to make sense of xorg.conf and operates accordingly.<br \/>\n\t* <span style=\"text-decoration: underline;\"><i>Xorg Options Data Store<\/i><\/span>: a program which translates the content of the manual of the xorg.conf into an XML file.<br \/>\n\t* <span style=\"text-decoration: underline;\"><i>Xorg Options Editor GTK<\/i><\/span>: a simple GTK GUI to the xorg.conf.<br \/>\n\t* <span style=\"text-decoration: underline;\"><i>Xorg Options Editor KDE<\/i><\/span>: a simple GTK GUI to the xorg.conf.<\/p>\n<\/ol>\n<p>NOTE: all the code is in Python<\/p>\n<p><em><strong>Aim:<\/strong><\/em><\/p>\n<ol>\n<p>* a desktop agnostic kit to manipulate the xorg.conf (and whatever will replace the xorg.conf in the future).\n<\/ol>\n<p><em><strong>Advantages of  XorgParser:<\/strong><\/em><\/p>\n<ol>\n<p>* Simple API.<br \/>\n* Easy to extend.<\/p>\n<\/ol>\n<p><em><strong>Current Status:<\/strong><\/em><\/p>\n<ol>\n<p>* <span style=\"text-decoration: underline;\">XorgParser<\/span>: version 0.3 is available. You can get the code from my <a href=\"https:\/\/code.launchpad.net\/~albertomilone\/xorgparser\/main\">bazaar branch<\/a> or from my <a href=\"https:\/\/launchpad.net\/~x-kit\/+archive\">PPA<\/a><br \/>\n* <span style=\"text-decoration: underline;\">XorgValidator<\/span>: there is already some code in place which I haven&#8217;t released yet.<br \/>\n* <span style=\"text-decoration: underline;\">Xorg Options Data Store<\/span>: the program is complete, works well and will be released soon.<br \/>\n* <span style=\"text-decoration: underline;\">Xorg Options Editor GTK (aka Phase 2)<\/span>: the program is almost complete and will be released soon. You can have a look at this <a href=\"http:\/\/www.albertomilone.com\/xorgoptionseditor.ogg\"><strong>screencast<\/strong><\/a> to see how it works.<br \/>\n* <span style=\"text-decoration: underline;\">Xorg Options Editor KDE<\/span>: not started yet<br \/>\n* <span style=\"text-decoration: underline;\">Phase1<\/span>: the Python part is complete and, as you can see in this <a href=\"http:\/\/www.albertomilone.com\/screen_resolution.ogg\"><strong>screencast<\/strong><\/a>, it works well. The screencast, however, doesn&#8217;t reflect the current status of phase 1 but still gives an idea of how this will work in practice.<\/p>\n<\/ol>\n<p>For further details on the project, please have a look at the <a href=\"https:\/\/wiki.ubuntu.com\/X\/OptionsEditor\">wiki<\/a>.<\/p>\n<p>A <strong>special thanks<\/strong> to <strong>Bryce Harrington<\/strong> and <strong>Martin Pitt<\/strong> whose feedback on the parser was extremely important.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As promised in my previous posts, in this blog post I will deal with a project I&#8217;m working on which implements this blueprint. Bryce Harrington (the mentor of this blueprint), Colin Watson (the approver) and I talked about this at the UDS in Prague. The blueprint is based on Bryce&#8217;s original idea to improve the <a class=\"read-more\" href=\"https:\/\/albertomilone.com\/blog\/blueprint-x-kit-and-xorg-options-editor\/\">[&hellip;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14,5,6,9,10],"tags":[],"class_list":["post-236","post","type-post","status-publish","format-standard","hentry","category-gnulinux","category-planet","category-python","category-ubuntu","category-uds"],"_links":{"self":[{"href":"https:\/\/albertomilone.com\/blog\/wp-json\/wp\/v2\/posts\/236","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/albertomilone.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/albertomilone.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/albertomilone.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/albertomilone.com\/blog\/wp-json\/wp\/v2\/comments?post=236"}],"version-history":[{"count":0,"href":"https:\/\/albertomilone.com\/blog\/wp-json\/wp\/v2\/posts\/236\/revisions"}],"wp:attachment":[{"href":"https:\/\/albertomilone.com\/blog\/wp-json\/wp\/v2\/media?parent=236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/albertomilone.com\/blog\/wp-json\/wp\/v2\/categories?post=236"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/albertomilone.com\/blog\/wp-json\/wp\/v2\/tags?post=236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}