Texts on Tiago Vignattihttps://vignatti.com/posts/Recent content in Texts on Tiago VignattiHugo -- gohugo.ioen© 2026 Tiago VignattiWed, 04 Mar 2026 10:00:00 -0300Accessibility and PDF documentshttps://vignatti.com/posts/accessibility-and-pdfs/Wed, 04 Mar 2026 10:00:00 -0300https://vignatti.com/posts/accessibility-and-pdfs/<div style="text-align:justify; strong{color:#00b1ff;}"> <h2 class="relative group">Accessibility <div id="accessibility" class="anchor"></div> <span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"> <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="proxy.php?url=#accessibility" aria-label="Anchor">#</a> </span> </h2> <p>When we think of <strong>accessibility</strong>, we tend to picture it as something designed for a small minority. The reality is much broader: <strong>16% of the world&rsquo;s population — 1.3 billion people — live with a significant disability</strong><a href="proxy.php?url=https://www.who.int/news-room/fact-sheets/detail/disability-and-health" target="_blank" rel="noreferrer">¹</a>. In <strong>Brazil</strong> alone, where I live, that means around <strong>14.4 million people report some form of disability</strong><a href="proxy.php?url=https://agenciadenoticias.ibge.gov.br/en/agencia-news/2184-news-agency/news/43477-2022-census-brazil-has-14-4-million-persons-with-disabilities" target="_blank" rel="noreferrer">²</a>. And those numbers capture only permanent disabilities.</p>From Chromium to Communityhttps://vignatti.com/posts/from-chromium-to-community/Fri, 15 Aug 2025 11:28:03 -0300https://vignatti.com/posts/from-chromium-to-community/Co-op principles for everyone.Organizações Sustentáveis: Lições da Igaliahttps://vignatti.com/posts/organizacoes-sustentaveis/Wed, 09 Apr 2025 11:05:16 -0300https://vignatti.com/posts/organizacoes-sustentaveis/Princípios para qualquer organização.Sustainable Organizations: Lessons from Igaliahttps://vignatti.com/posts/sustainable-organizations/Wed, 02 Apr 2025 14:52:37 -0300https://vignatti.com/posts/sustainable-organizations/Principles for any organization.Using Chromium for Building Appshttps://vignatti.com/posts/chromium-for-building-apps/Wed, 04 Dec 2024 10:36:37 -0300https://vignatti.com/posts/chromium-for-building-apps/Beyond the browser.Good fortune 복https://vignatti.com/posts/good-fortune/Tue, 19 Nov 2024 12:00:28 -0300https://vignatti.com/posts/good-fortune/Chromium and friends in Seoul.Short blog post from Madrid's bushttps://vignatti.com/posts/from-madrid-bus/Tue, 21 Jun 2022 00:34:34 +0200https://vignatti.com/posts/from-madrid-bus/Wildfires and Igalia&rsquo;s 20th.My Startup Dreamhttps://vignatti.com/posts/my-startup-dream/Fri, 06 Aug 2021 00:00:00 +0000https://vignatti.com/posts/my-startup-dream/Skateboards to VR.Stars Alignedhttps://vignatti.com/posts/stars-aligned/Mon, 08 Mar 2021 22:04:11 -0300https://vignatti.com/posts/stars-aligned/Wedding, baby, and grandma&rsquo;s birthday.Quilombohttps://vignatti.com/posts/quilombo/Tue, 23 Feb 2021 21:07:43 -0300https://vignatti.com/posts/quilombo/A beach.Oculus Questhttps://vignatti.com/posts/oculus-quest/Mon, 15 Oct 2018 17:21:23 +0000https://vignatti.com/posts/oculus-quest/It won&rsquo;t run Rift apps.Chromium Ozone-GBM explainedhttps://vignatti.com/posts/chromium-ozone-gbm-explained/Thu, 09 Oct 2014 16:46:29 +0000https://vignatti.com/posts/chromium-ozone-gbm-explained/<div style="text-align:justify; strong{color:#00b1ff;}"> <p>About a year ago <a href="proxy.php?url=https://chromium.googlesource.com/chromium/src/&#43;/HEAD/docs/ozone_overview.md" target="_blank" rel="noreferrer">Ozone platform abstraction layer</a> started to take its shape in Chromium and we were excited how easily we could s<a href="proxy.php?url=https://vignatti.com/posts/welcome-to-chromiums-ozone-wayland/" target="_blank" rel="noreferrer">upport Wayland platform</a> using it. Everything went great and we helped a few Chromium targets like <a href="proxy.php?url=https://en.wikipedia.org/wiki/Crosswalk_Project" target="_blank" rel="noreferrer">Crosswalk</a> to debut in the Tizen ecosystem for example. More recently, different Ozone platforms have been implemented and only now it&rsquo;s becoming evident the significance of Ozone for Chromium Linux, generally speaking.</p>[video] Chromium Browser on Waylandhttps://vignatti.com/posts/video-chromium-browser-on-wayland/Fri, 07 Feb 2014 09:00:33 +0000https://vignatti.com/posts/video-chromium-browser-on-wayland/<p>Some state-of-the-art progress of the project we&rsquo;re proudly working with:</p> <p><a href="proxy.php?url=https://www.youtube.com/watch?v=EJB2pznc6iY" target="_blank" rel="noreferrer">https://www.youtube.com/watch?v=EJB2pznc6iY</a></p>developing Chromium on Waylandhttps://vignatti.com/posts/developing-chromium-on-wayland/Mon, 07 Oct 2013 14:42:17 +0000https://vignatti.com/posts/developing-chromium-on-wayland/<p>A <a href="proxy.php?url=http://vignatti.com/2013/09/18/welcome-to-chromiums-ozone-wayland/" target="_blank" rel="noreferrer">few weeks ago</a> we released Ozone-Wayland and now we&rsquo;d like to detail for you the development process and strategy behind it&hellip; ah, and the title is not developing Chromium, the browser; it&rsquo;s developing Chromium,** the project**! You will understand why next.</p>Welcome to Chromium's Ozone-Waylandhttps://vignatti.com/posts/welcome-to-chromiums-ozone-wayland/Wed, 18 Sep 2013 13:34:24 +0000https://vignatti.com/posts/welcome-to-chromiums-ozone-wayland/<p>The following message was sent out this morning &ndash; I&rsquo;m copying it here and attaching a cute screenshot of my desktop :)</p> <hr> <p>Ozone is a set of C++ classes in Chromium for abstracting different window systems on Linux. It provides abstraction for the construction of accelerated surfaces underlying Aura UI framework, input devices assignment and event handling.</p>UI customization on Waylandhttps://vignatti.com/posts/ui-customization-on-wayland/Tue, 05 Mar 2013 15:00:00 +0000https://vignatti.com/posts/ui-customization-on-wayland/<p>Let&rsquo;s forget for a second about video drivers, whether it has acceleration or not, and all the related issues with hardware support on Wayland. This is <a href="proxy.php?url=http://ppaalanen.blogspot.com/2012/11/on-supporting-wayland-gl-clients-and.html" target="_blank" rel="noreferrer">all solved</a>. Let&rsquo;s talk about the user interface (UI) and ways to customize it all over the computing continuum &ndash; from phones, tablets and TV box to desktop PCs, Invehicle Infotainment (IVI), aeroplane systems, among others.</p>the damn small Wayland APIhttps://vignatti.com/posts/the-damn-small-wayland-api/Wed, 17 Oct 2012 13:15:38 +0000https://vignatti.com/posts/the-damn-small-wayland-api/<p><a href="proxy.php?url=http://lists.freedesktop.org/archives/wayland-devel/2012-October/005878.html" target="_blank" rel="noreferrer">Wayland 1.0 release is knocking the door</a> and people keep asking &ldquo;why Wayland if we got X already&rdquo;, or things like performance, memory consumption, power savings and other kind of advantages on having Wayland instead X. Those are very important points to consider, of course, but for one individual actually programming the graphics system the answer should be straightforward: Wayland API is damn small.</p>X on Waylandhttps://vignatti.com/posts/x-on-wayland/Wed, 13 Jun 2012 14:01:32 +0000https://vignatti.com/posts/x-on-wayland/<p>A rather cool feature on Weston compositor is xwayland, to support X11 native applications on Wayland. It&rsquo;s a quite important feature because gives the compatibility with the &ldquo;old&rdquo; windowing system, so say you have an application written on Motif/Xt or even something more &ldquo;fancy&rdquo; like a Web browser all tied with GTK2 and whatever dependency, then you better not bother yourself re-writing it to native Wayland or porting to a modern toolkit &ndash; it should just work seamlessly on it. Hence, X on Wayland fits pretty well with our overall transition plan.</p>starting on Wayland developmenthttps://vignatti.com/posts/starting-on-wayland-development/Wed, 18 Jan 2012 13:53:43 +0000https://vignatti.com/posts/starting-on-wayland-development/<p>Do you wanna contribute to a funky open-source project? Are you tired of your nerdy and boring community of developers? Are you the one that wants to get rid of X because it&rsquo;s a giant, old and fat dinosaur in your system? :) Cool, I have a project to solve your problems!</p>Qt on wayland: howtohttps://vignatti.com/posts/qt-on-wayland-howto/Mon, 19 Dec 2011 23:31:29 +0000https://vignatti.com/posts/qt-on-wayland-howto/<p>To run Qt applications on Wayland is fairly simple nowadays. Thank to Qt developers, they are following up quite well our last changes on Wayland protocol and updating accordingly on Qt5 code base &ndash; by the way, the fresh and just released Qt 4.8 <a href="proxy.php?url=https://qt.gitorious.org/qt/qt/blobs/4.8/src/plugins/platforms/wayland/wayland_sha1.txt" target="_blank" rel="noreferrer">does not ship the latest</a> protocol additions, so that&rsquo;s not the one I&rsquo;m referring.</p>... if I didn't sayhttps://vignatti.com/posts/if-i-didnt-say/Thu, 22 Sep 2011 15:55:54 +0000https://vignatti.com/posts/if-i-didnt-say/<p>Hello Intel Finland :) Here I am now; four months already at OTC big team.</p>X characterization for MeeGohttps://vignatti.com/posts/x-characterization-for-meego/Wed, 20 Apr 2011 13:35:44 +0000https://vignatti.com/posts/x-characterization-for-meego/<p>Actually this is not a big news but it&rsquo;s nice to see on practice X being used on the advanced age :) Here I&rsquo;ve played with some UI configuration settings, browsed for while, toyed with facebook, opened some photos in the viewer and etc, all for about 5 minutes:</p>X Census (for 1.10)https://vignatti.com/posts/x-census-for-1-10/Mon, 28 Feb 2011 20:31:05 +0000https://vignatti.com/posts/x-census-for-1-10/<p>Following is the census of 1.10 window for all X infrastructure - raw numbers <a href="proxy.php?url=http://people.freedesktop.org/~vignatti/xdevelopment/" target="_blank" rel="noreferrer">here</a>. I did it in a similar way as the <a href="proxy.php?url=http://vignatti.wordpress.com/2010/09/02/x-census-for-1-9/" target="_blank" rel="noreferrer">previous version</a>. Worth to mention that there&rsquo;s almost no relation between the cycles of development from each of the components listed below, which can lead to some misunderstanding. Anyway, still a nice indicative to see and evaluate how the free desktop community behaved.</p>X.Org Foundation electionshttps://vignatti.com/posts/x-org-foundation-elections/Fri, 18 Feb 2011 13:31:43 +0000https://vignatti.com/posts/x-org-foundation-elections/<p>I am a candidate for the elections 2011 of the board of directors :) Following are my answers based on the questionnaire formulated by the members. You can check other candidates answers <a href="proxy.php?url=http://www.x.org/wiki/BoardOfDirectors/Elections/2011/qa" target="_blank" rel="noreferrer">here</a>.</p>late Christmas gift: freedesktop's Xorg for MeeGohttps://vignatti.com/posts/late-christmas-gift-freedesktops-xorg-for-meego/Wed, 29 Dec 2010 19:46:07 +0000https://vignatti.com/posts/late-christmas-gift-freedesktops-xorg-for-meego/<p>Moikka.</p> <p>If you follow <a href="proxy.php?url=http://gitorious.org/meego-w40" target="_blank" rel="noreferrer">here</a> [0] you will see a set of Debian packages that Graphics team at Nokia are continuously working to deploy a X11 implementation for <a href="proxy.php?url=http://wiki.meego.com/Glossary#M" target="_blank" rel="noreferrer">MeeGo-Harmattan</a>, where we target embedded systems only. Feel free to use it!</p>X Census (for 1.9)https://vignatti.com/posts/x-census-for-1-9/Thu, 02 Sep 2010 13:41:11 +0000https://vignatti.com/posts/x-census-for-1-9/<p>Topic&rsquo;s name is a funny (and friendly) devotion to <a href="proxy.php?url=http://blogs.gnome.org/bolsh/2010/07/28/gnome-census/" target="_blank" rel="noreferrer">GNOME Census</a>. So let&rsquo;s take a look at some numbers from the time <a href="proxy.php?url=http://wiki.x.org/wiki/Server19Branch" target="_blank" rel="noreferrer">Xorg 1.9 was in development</a> - raw data is <a href="proxy.php?url=http://people.freedesktop.org/~vignatti/xdevelopment/" target="_blank" rel="noreferrer">here</a>.</p> <p>Would be unfair to measure only the work that happened e.g. in X server or in the drivers being developed and come up with the statistics about &ldquo;who developed X&rdquo;. X and X development community are quite extensive and don&rsquo;t concern only &ldquo;graphics&rdquo; related, i.e., pixel information that appears on your display screen. This is a very common mistake.</p>Xorg server 1.9 minimalhttps://vignatti.com/posts/xorg-server-1-9-minimal/Wed, 18 Aug 2010 15:22:26 +0000https://vignatti.com/posts/xorg-server-1-9-minimal/<p>That&rsquo;s what I&rsquo;m using for MeeGo now. Autoconf parameters, theeere we go:</p> <p>&ndash;disable-static &ndash;disable-aiglx &ndash;disable-config-dbus &ndash;disable-config-hal &ndash;disable-dbe &ndash;disable-dga &ndash;disable-dpms &ndash;disable-dri &ndash;disable-glx &ndash;disable-glx-tls &ndash;disable-int10-module &ndash;disable-ipv6 &ndash;disable-screensaver &ndash;disable-secure-rpc &ndash;disable-tcp-transport &ndash;disable-vbe &ndash;disable-vgahw &ndash;disable-xdm-auth-1 &ndash;disable-xinerama &ndash;disable-xwin &ndash;disable-xaa &ndash;disable-xace &ndash;disable-xdmcp &ndash;disable-xf86vidmode &ndash;disable-xfree86-utils &ndash;disable-xnest &ndash;disable-xvmc &ndash;disable-libdrm &ndash;enable-config-udev &ndash;enable-dri2 &ndash;enable-null-root-cursor &ndash;enable-record &ndash;enable-unit-tests &ndash;enable-visibility &ndash;enable-xorg &ndash;with-sha1=libsha1</p>Linux Graphics for Small Devices at FISLhttps://vignatti.com/posts/linux-graphics-for-small-devices-at-fisl/Fri, 30 Jul 2010 16:38:58 +0000https://vignatti.com/posts/linux-graphics-for-small-devices-at-fisl/<p>Last week I&rsquo;ve been in Brazil at 11th International Free Software Forum (FISL) talking about Linux Graphics for Small Devices*. I tried to cover a bit of everything that I learned in the world I&rsquo;ve been immersed in some near past - I guess there aren&rsquo;t many news for <em>freedesktopers</em> though. Anyway, everyone is very welcome to give any kind of feedback and comment on it. Just follow <a href="proxy.php?url=http://people.freedesktop.org/~vignatti/talks/FISL11-LinuxGraphicsForSmallDevices.pdf" target="_blank" rel="noreferrer">here</a>.</p>Attracting reviewers in your patch serieshttps://vignatti.com/posts/attracting-reviewers-in-your-patch-series/Mon, 12 Jul 2010 12:56:01 +0000https://vignatti.com/posts/attracting-reviewers-in-your-patch-series/<p>Usually faster the number of commits, faster the development process. But development without strict reviewing doesn&rsquo;t guarantee quality on the code. Unfortunately, rarely you will see people willing or even just being able to review the changes you are proposing. Attract reviewers is hard!</p>adopt a child and make multi-card work on Linuxhttps://vignatti.com/posts/adopt-a-child-and-make-multi-card-work-on-linux/Wed, 23 Jun 2010 15:12:11 +0000https://vignatti.com/posts/adopt-a-child-and-make-multi-card-work-on-linux/<p><em>Previously, the <a href="proxy.php?url=http://vignatti.wordpress.com/2010/06/15/toolkit-please-xlib-xcb/" target="_blank" rel="noreferrer">message was for toolkit</a>, now it targets new upcoming developers&hellip; okay, if I&rsquo;d be offensive I could say it targets vendor distributions which care for desktop on Linux :)</em></p>Toolkit, please: Xlib -> XCBhttps://vignatti.com/posts/toolkit-please-xlib-xcb/Tue, 15 Jun 2010 15:24:11 +0000https://vignatti.com/posts/toolkit-please-xlib-xcb/<p>We all know since 2006 (?) that the world is turning to use XCB instead Xlib as the interface between X clients and the server. The advantages of using XCB is <a href="proxy.php?url=http://xcb.freedesktop.org/Features/" target="_blank" rel="noreferrer">well know</a> but, even so, it&rsquo;s being adopted very slowly for some reason - for instance no toolkits yet ported it. If this serves as a motivation, <a href="proxy.php?url=http://blogs.sun.com/alanc/" target="_blank" rel="noreferrer">Alan</a> got a really <a href="proxy.php?url=http://lists.freedesktop.org/archives/xcb/2010-June/006111.html" target="_blank" rel="noreferrer">nice measurements</a> porting a simple X app.</p>Scrutinizing X memory, part 2: what's taking all that memory?https://vignatti.com/posts/scrutinizing-x-memory-part-2-whats-taking-all-that-memory/Thu, 25 Mar 2010 18:01:10 +0000https://vignatti.com/posts/scrutinizing-x-memory-part-2-whats-taking-all-that-memory/<p>So here goes some statistics of the Xorg process running. All the informations were fetch from /proc/<code>pidof Xorg</code>/{smaps, status}. I used also a <a href="proxy.php?url=http://wingolog.org/pub/mem_usage.py" target="_blank" rel="noreferrer">script</a> found on the <a href="proxy.php?url=http://wingolog.org/archives/2007/11/27/reducing-the-footprint-of-python-applications" target="_blank" rel="noreferrer">Web</a> to parse and organize these informations; Mikhail Gusarov has <a href="proxy.php?url=http://github.com/dottedmag/mem-usage" target="_blank" rel="noreferrer">extended</a> this script to show a very useful <a href="proxy.php?url=http://people.freedesktop.org/~vignatti/scrutinizing-x-mem/x-standalone-memory-per-libraries.txt" target="_blank" rel="noreferrer">output</a>.</p>Scrutinizing X Memory, part 1: overviewhttps://vignatti.com/posts/scrutinizing-x-memory-part-1-overview/Thu, 25 Mar 2010 17:58:47 +0000https://vignatti.com/posts/scrutinizing-x-memory-part-1-overview/<p>This series of documents explore how the memory is used by the Xorg server. They aim to eventually shrinks the memory footprint of the server and its related components, like X clients, modules being loaded and drivers. Embedded devices with constrained resources are the main focus here. All texts are mostly based on x86 and ARM architectures, under Linux 2.6.33 with Xorg from upstream.</p>Customization and true modularization of Xorghttps://vignatti.com/posts/xorg-customization-and-true-modularization/Sat, 23 Jan 2010 17:20:25 +0000https://vignatti.com/posts/xorg-customization-and-true-modularization/<p>For the first time in life, Xorg is being used in <a href="proxy.php?url=http://maemo.org/" target="_blank" rel="noreferrer">a single platform</a> and for <a href="proxy.php?url=http://maemo.nokia.com/n900/" target="_blank" rel="noreferrer">a given device</a> only (other devices have used an X11 implementation but using other non-canonical servers, such kdrive&rsquo;s based - Tiny-X).</p>New blog interfacehttps://vignatti.com/posts/new-blog-ui-2/Tue, 29 Dec 2009 01:42:19 +0000https://vignatti.com/posts/new-blog-ui-2/<p>I like UI and I&rsquo;m not gay.</p> <p>Some time ago someone posted a <a href="proxy.php?url=http://vignatti.wordpress.com/2009/01/14/cursors-update-inside-kernel-only/#comment-1614" target="_blank" rel="noreferrer">comment</a>, complaining about the white fonts over the dark background in my blog, which makes the read be difficult. The guy teased me, recommending an <a href="proxy.php?url=http://www.ironicsans.com/owmyeyes/" target="_blank" rel="noreferrer">ironic page</a> where shows how hard is to read texts like this. He was right&hellip;</p>Xorg: What is it, and what does it mean?https://vignatti.com/posts/xorg-what-is-it-and-what-does-it-mean/Sat, 26 Dec 2009 18:36:49 +0000https://vignatti.com/posts/xorg-what-is-it-and-what-does-it-mean/<p><a href="proxy.php?url=http://talk.maemo.org/showthread.php?p=440448#post440448" target="_blank" rel="noreferrer"> Just a thought is this something that should be deleted? This seems to be using about 7% of my RAM</a></p> <p>I don&rsquo;t have words for it.</p>my dear diary... (some not-so-old memories)https://vignatti.com/posts/my-dear-diary-some-not-so-old-memories/Mon, 09 Nov 2009 01:47:17 +0000https://vignatti.com/posts/my-dear-diary-some-not-so-old-memories/<p><strong><em>Portland, OR</em></strong></p> <p>I was so proud for the forth time be part of the X crew, this time in Portland. Really amazing the city. I had the opportunity to play tourist and visit <a href="proxy.php?url=http://www.flickr.com/photos/tiagovignatti/sets/72157622611218823/" target="_blank" rel="noreferrer">some nice places</a>.</p>multiseat with multiple X servers (or "the right way")https://vignatti.com/posts/multiseat-with-multiple-x-servers-or-the-right-way/Fri, 24 Jul 2009 13:56:33 +0000https://vignatti.com/posts/multiseat-with-multiple-x-servers-or-the-right-way/<p>So last week I <a href="proxy.php?url=http://lkml.org/lkml/2009/7/16/243" target="_blank" rel="noreferrer">posted</a> on lkml an old patch that we were carrying for a long time in the Linux community. It basically brings the multiple (old) video cards functionally again on Linux and X server (and this time doing on the right and beauty way). For the people that was following multiseat implementations, this is a HUGE step: we will finally be able to discard the old and ugly hack (a mix of Xorg, several Xephyr servers + evdev) and and go to a clean way, starting multiple X servers in parallel. Cool! Well, not that much, because it might take some time to be in your beloved distribution :)</p>Nokia, FI...https://vignatti.com/posts/nokia-fi/Fri, 12 Jun 2009 07:06:59 +0000https://vignatti.com/posts/nokia-fi/<p>&hellip; here I&rsquo;am :)</p>personal newshttps://vignatti.com/posts/personal-news/Sun, 17 May 2009 20:22:49 +0000https://vignatti.com/posts/personal-news/<p>Being quick about my last months: finished my Master course, moving to Helsinki tomorrow (!), got my first real job. Yessh, three great steps in my crazy life and I&rsquo;m very happy with it! Hope to stay closer with the desktop communities again ;)</p>Cursor's update inside kernel onlyhttps://vignatti.com/posts/cursors-update-inside-kernel-only/Wed, 14 Jan 2009 22:48:44 +0000https://vignatti.com/posts/cursors-update-inside-kernel-only/<p>One thing that I learned with open communities is when you send a proposal idea and no one replies. This seems to be odd at first but it <em>isn&rsquo;t</em>. If you did something strange or wrong then at least someone will reply. OTOH if you did something that can be promiser <em>and</em> no one objects, then great! 99% that you did something interesting :)</p>multiseat - documentation and referenceshttps://vignatti.com/posts/multiseat-documentation-and-references/Fri, 09 Jan 2009 04:25:51 +0000https://vignatti.com/posts/multiseat-documentation-and-references/<p>Trying to put some order with all the multiseat documentation found on Web, today I updated the following:</p> <p>Multiseat&rsquo;s article, in X.Org Foundation wiki: <a href="proxy.php?url=http://wiki.x.org/wiki/Development/Documentation/Multiseat" target="_blank" rel="noreferrer">http://wiki.x.org/wiki/Development/Documentation/Multiseat</a></p> <p>Multiseat&rsquo;s history, in Wikipedia: <a href="proxy.php?url=http://en.wikipedia.org/wiki/Multiseat#History" target="_blank" rel="noreferrer">http://en.wikipedia.org/wiki/Multiseat#History</a></p> <p>So if you are trying to setup or help in development, probably the foundation&rsquo;s wiki has the most up to date and centralized references. Also, please, if you have more helpful information, don&rsquo;t be afraid to update the wikis. Our future grandsons will be thankful  :)</p>multiseat - roadmaphttps://vignatti.com/posts/multiseat-roadmap/Tue, 23 Sep 2008 04:52:08 +0000https://vignatti.com/posts/multiseat-roadmap/<p>This week our laboratory at university <a href="proxy.php?url=http://lists.freedesktop.org/archives/xorg/2008-September/038674.html" target="_blank" rel="noreferrer">released</a> the <a href="proxy.php?url=http://cgit.freedesktop.org/xorg/app/mdm/" target="_blank" rel="noreferrer">MDM</a> utility to ease the process of installation and configuration of a multiseat box. The idea is that the end-user should not use some boring and hard howtos anymore to deploy it. Just installing a distro package must be enough now. Try it, use it, report the bugs and send the patches! :)</p>Parallel events (panic) with Xhttps://vignatti.com/posts/parallel-events-panic-with-x/Mon, 18 Aug 2008 22:02:16 +0000https://vignatti.com/posts/parallel-events-panic-with-x/<p>Unfortunately that model which I <a href="proxy.php?url=http://vignatti.wordpress.com/2008/08/07/keep-it-going/" target="_blank" rel="noreferrer">described some weeks ago</a> to put the input event delivery of the X server in a separate thread wouldn&rsquo;t be an advantage. I precipitated myself thinking that it could be feasible. Sorry :(</p>Priorities and scheduling hints for X server threadshttps://vignatti.com/posts/priorities-and-scheduling-hints-for-x-server-threads/Thu, 07 Aug 2008 23:33:57 +0000https://vignatti.com/posts/priorities-and-scheduling-hints-for-x-server-threads/<p>Input events routed through another thread/process can have bad effects on latency because we can&rsquo;t guarantee that it will get scheduled at the right moment. Although this is hard to see happening with the current X server threaded implementation, we must design something to avoid it. One way to improve the responsiveness is to give a high priority to the input thread and also adjust the CPU scheduling. (Note that this will not avoid problems related with <a href="proxy.php?url=http://vignatti.wordpress.com/2007/08/10/mlocking-adventure/" target="_blank" rel="noreferrer">page faults</a> which usually happen in the X input flow.)</p>keep it going...https://vignatti.com/posts/keep-it-going/Thu, 07 Aug 2008 23:22:27 +0000https://vignatti.com/posts/keep-it-going/<p>Given that GSoC &lsquo;08 is getting close to the end, <a href="proxy.php?url=http://vignatti.wordpress.com/2008/07/29/improving-input-latency/" target="_blank" rel="noreferrer">strategy number 2</a> showed more feasible to proceed my work. Strategy #3 would be a lot of fun but would imply a hell massive codification as well (also a little out of <a href="proxy.php?url=http://vignatti.wordpress.com/2008/04/29/google-summer-of-code-2008/" target="_blank" rel="noreferrer">our scope</a>). Unfortunately no-no for now.</p>Improving input latencyhttps://vignatti.com/posts/improving-input-latency/Wed, 30 Jul 2008 01:09:31 +0000https://vignatti.com/posts/improving-input-latency/<p>GSoC summary #1 - July 29</p> <p>The current implementation of X Window System relies in a signal scheme to manage the input event coming from hardware devices. This scheme frequently get blocked when lot of IO is occurring (for instance, when the process is swapping in/out). Get blocked means for instance a jumping cursor on the screen and in GUI is always desirable to prioritize the system responsiveness for end users. The human/computer interface should be smooth and this is the most user visible aspect of a system.</p>cursor handling and updates inside DRMhttps://vignatti.com/posts/cursor-handling-and-updates-inside-drm/Thu, 10 Jul 2008 07:03:49 +0000https://vignatti.com/posts/cursor-handling-and-updates-inside-drm/<p>The current DRM kernel modesetting tree is already taking care to update the cursor registers and paint it to the screen. Very cool [0].</p> <p>What I&rsquo;ve done today is a shortcut between the kernel input layer and DRM to update the cursor directly on screen without the X server be notified always. Of course, a lot of issues raised up together. So let&rsquo;s try to delegates the tasks again.</p>to thread the X server (?)https://vignatti.com/posts/to-thread-the-x-server/Tue, 17 Jun 2008 23:39:53 +0000https://vignatti.com/posts/to-thread-the-x-server/<p>I really don&rsquo;t like to read large blog posts. Anyway&hellip;</p> <p>What I did so far is a separated thread that takes care only the injection stage on the X server queue. Who is interested with the results, please read some past posts in my blog. It is currently in a very good shape (synced with post-mpx merge, all input devices are inside the thread and etc). The implementation looks like this: <code>thread #1 deals with - injection of input events from devices thread #2 deals with - processing of input events to clients - requests from known clients (rendering things) - new client that tries to connect (pretty easy to do)</code></p>fakemouse -- a driver that emulates a mousehttps://vignatti.com/posts/fakemouse-a-driver-that-emulates-a-mouse/Wed, 28 May 2008 02:36:09 +0000https://vignatti.com/posts/fakemouse-a-driver-that-emulates-a-mouse/<p>For my SoC <a href="proxy.php?url=http://vignatti.wordpress.com/2008/04/29/google-summer-of-code-2008/" target="_blank" rel="noreferrer">project</a> I need some mechanism to evaluate the improvement of the input thread inside X. So I wrote a simple kernel driver that emulates the mouse device moving and emitting bits of a simple pattern. I don&rsquo;t know if something like this already exists or if there are other ways to do it, but the fact is that the solution I thought took me only few hours between the moment that I imagined, collected some ideas on the Web and implemented it.</p>Google Summer of Code 2008https://vignatti.com/posts/google-summer-of-code-2008/Tue, 29 Apr 2008 21:31:27 +0000https://vignatti.com/posts/google-summer-of-code-2008/<p>I&rsquo;m very happy to say that I was selected <strong>again</strong> to work on Google Summer of Code with X.Org Foundation. <a href="proxy.php?url=http://www.fooishbar.org/blog" target="_blank" rel="noreferrer">Daniel</a> will be my mentor again. Thanks Google. Thanks X.Org!</p> <p>In the last year we did a nice work separating the input event generation code of the X server into a different thread. We saw some performance improvement there specially because the implementation is not using signals anymore to wake up the server when some device emits an event. The reason why is that when a process is in the uninterruptible sleep (D state) signals are delayed and the mouse cursor lags.</p>Traversing X11 clients behind NAT (or X11 end-to-end connectivity)https://vignatti.com/posts/traversing-x11-clients-behind-nat-or-x11-end-to-end-connectivity/Fri, 21 Mar 2008 20:29:33 +0000https://vignatti.com/posts/traversing-x11-clients-behind-nat-or-x11-end-to-end-connectivity/<p>I was thinking how we could make remotely X clients totally connective with the server when <strong>both</strong> are behind a NAT/firewall.</p> <p>We can imagine one big motivation to do this: a scenario where someone using his thin and poor machine wants to use the resources of some &ldquo;fat&rdquo; machines which he simply doesn&rsquo;t know where they are seated. Those fat machines could be arranged through a P2P network of &ldquo;X11 pool of resources&rdquo; and the list of machines displayed to the user select his desired one (e.g. with minor lag/load). Someone more capitalist than me could go further and imagine a provider selling X11 resources to mobile devices. Or just open your home machine&rsquo;s web browser in any place of the world. Well, the field of applications would be huge.</p>VgaArbiter wikihttps://vignatti.com/posts/vgaarbiter-wiki/Mon, 25 Feb 2008 21:59:17 +0000https://vignatti.com/posts/vgaarbiter-wiki/<p>Today, <a href="proxy.php?url=http://przanoni.blogspot.com/" target="_blank" rel="noreferrer">Paulo Zanoni</a> help me to put in a shape the VgaArbiter wiki page. The primary intention of that page is to bring more developers in that project and some users++ who could also help testing. Feedback is very welcome. <a href="proxy.php?url=http://wiki.x.org/wiki/VgaArbiter" target="_blank" rel="noreferrer">Here</a> is the link.</p>Benchmarking it allhttps://vignatti.com/posts/benchmarking-it-all/Thu, 21 Feb 2008 23:53:39 +0000https://vignatti.com/posts/benchmarking-it-all/<p>After a long journey I come back in this&hellip; So I did a set of benchmarks to evaluate the VGA arbitration versus the RAC usage. My goal is to evaluate the performance difference of a multi-head/multi-card environment, i.e., an Xorg using the RAC to another using the arbitration.</p>VGA arbiter: removing RAChttps://vignatti.com/posts/vga-arbiter-removing-rac/Thu, 20 Dec 2007 01:18:39 +0000https://vignatti.com/posts/vga-arbiter-removing-rac/<p>The Resource Access Control inside Xorg is the guy responsible to take care of the various resources of memory and to share them in a wise manner when two or more graphics devices are active (think multi-head). As an alternative from RAC we can rely on <a href="proxy.php?url=http://vignatti.wordpress.com/2007/11/23/the-vga-arbiter/" target="_blank" rel="noreferrer">VGA arbiter</a>. So me and Paulo Zanoni spent the last days implementing &ldquo;the glue&rdquo; of Xorg to use the arbiter code with this purpose.</p>The VGA arbiterhttps://vignatti.com/posts/the-vga-arbiter/Fri, 23 Nov 2007 15:26:39 +0000https://vignatti.com/posts/the-vga-arbiter/<p>So we finally have a working code to do the arbitration of the VGA legacy instructions. The code is separated in three pieces: vgaarb module [0], which is the arbiter itself inside Linux; the libvgaaccess [1], a set of user space functions to access the arbiter; and xf86VGAarbiter [2], the implementation of the library inside Xorg.</p>Realistic :(https://vignatti.com/posts/realistic/Fri, 09 Nov 2007 19:43:36 +0000https://vignatti.com/posts/realistic/<p><a href="proxy.php?url=http://vignatti.files.wordpress.com/2007/11/phd1029.gif" target="_blank" rel="noreferrer"><figure><img class="my-0 rounded-md" loading="lazy" decoding="async" fetchpriority="low" alt="whyarewedoingthis" src="proxy.php?url=http://vignatti.files.wordpress.com/2007/11/phd1029.gif" ></figure> </a></p>MacOSX -> GNU/Linuxhttps://vignatti.com/posts/macosx-gnulinux/Wed, 26 Sep 2007 04:06:33 +0000https://vignatti.com/posts/macosx-gnulinux/<p>I used a part of the money that I earned on the SoC 2007 to buy a laptop to me. My university friends found a good price of a MacBook and we went to the shop in a total of 6 people (!) to buy this laptop trying to get some discount. It cost R$ 3400 (about USD 1800), a very cheap value to the Brazil standards.</p>Xorg input thread - summary or something #3https://vignatti.com/posts/xorg-input-thread-summary-or-something-3/Tue, 28 Aug 2007 02:32:41 +0000https://vignatti.com/posts/xorg-input-thread-summary-or-something-3/<p>Not so much, but here are the news:</p> <pre><code> * For the final evaluation period on the Summer of Code, Daniel suggest me to start my [own X server tree](http://gitweb.freedesktop.org/?p=users/vignatti/xserver.git;a=summary). So I'm maintaining this one with the last bits of the X server input thread implementation and always trying to keep all the things up to date with the upstream tree. Everyone is very welcome to test it and report me the few - I expect - bugs. * The last new regarding the thread implementation is that we're unfortunately dealing with **critical sections** inside the X event queue (mi/mieq.c), so mutex is needed there (just to note: currently, mutex is only implemented using pthread (X11/Xthreads.h), so we also need implement something that is pthread-independent). Probably can exist other pieces of code that might be in an unpredictable way resulting some race conditions (didn't note anything strange yet!). * I finally managed how to implement the page fault notifier without any patch inside the kernel. The read_cr2() can be called directly since the page fault notifier runs with interrupts disabled. The implementation can be found [here](http://web.inf.ufpr.br/vignatti/code/page_fault_notifier.c). </code></pre>mlock()'ing adventurehttps://vignatti.com/posts/mlocking-adventure/Fri, 10 Aug 2007 22:30:07 +0000https://vignatti.com/posts/mlocking-adventure/<p>It&rsquo;s being a great adventure to lock the X input thread on the memory. I&rsquo;m touching a lot of things that I&rsquo;d never imagined before :)</p> <p>To trace the pages that are faulting when I move the device pointer I&rsquo;m using my own <a href="proxy.php?url=http://web.inf.ufpr.br/vignatti/code/page_fault_notifier.c" target="_blank" rel="noreferrer">ultra mega super kernel&rsquo;s page fault notifier</a>. It&rsquo;s very simple, but as the things are not always perfect, it needs a little <a href="proxy.php?url=http://lkml.org/lkml/diff/2007/7/26/512/1" target="_blank" rel="noreferrer">patch</a> in the kernel.</p>Page fault notifierhttps://vignatti.com/posts/page-fault-notifier/Fri, 27 Jul 2007 05:24:05 +0000https://vignatti.com/posts/page-fault-notifier/<p>This week I tried to lock in the physical memory the Xorg&rsquo;s input code using mlock(). To do this I traced the code minutely and locked all the text and data related to input. I didn&rsquo;t get success. The mouse still lags when the system is paging (you might remember that with mlockall() all worked wonderful <em>except</em> that it eats much memory). So what might be happening is that something is not locked yet. To guarantee it I searched for a user-space tool that traces page fault. I only found the &rsquo;truss&rsquo; command on Solaris. Linux (my OS) doesn&rsquo;t provide no one (&lsquo;strace&rsquo; don&rsquo;t do this).</p>Xorg input thread - summary or something #2https://vignatti.com/posts/xorg-input-thread-summary-or-something-2/Wed, 18 Jul 2007 02:14:13 +0000https://vignatti.com/posts/xorg-input-thread-summary-or-something-2/<p>In the last week, I did some cool experiments to see the effects of the D state acting on the X server process when I start it with and without the input thread and always mlock&rsquo;ing it.</p>Xorg input thread - summary or somethinghttps://vignatti.com/posts/xorg-input-thread-summary-or-something/Fri, 06 Jul 2007 03:13:09 +0000https://vignatti.com/posts/xorg-input-thread-summary-or-something/<p>This mail that I&rsquo;ve sent to xorg mailing list tells the current state of my project.</p> <ul> <li>cut here -</li> </ul> <p>Hi guys.</p> <p>As you might noted here [1], my GSoC&rsquo;s project is to do a separate mouse thread for the X server. Now, I&rsquo;m really stucked with it and I need some good ideas from you before go to the next steps.</p>Moving the mouse handling code into a separate threadhttps://vignatti.com/posts/moving-the-mouse-handling-code-into-a-separate-thread/Sat, 16 Jun 2007 19:12:23 +0000https://vignatti.com/posts/moving-the-mouse-handling-code-into-a-separate-thread/<p>(In a puny attempt to write my SoC project progress to my mentor, I decided to expand it and share my thoughts with you)</p> <p>Today, we have two methods to register the pointer devices on <strong>Xorg server</strong>: (1) under SIGIO and (2) put they fd on EnableDevices set. There is also the silken mouse concept, which means updates fired during sigio handler (in the case of hw cursor).</p>multiseat input hotplughttps://vignatti.com/posts/multiseat-input-hotplug/Sat, 02 Jun 2007 04:34:00 +0000https://vignatti.com/posts/multiseat-input-hotplug/<p>This week I spent a good time trying to understand the new input hotplug of devices on X and liked a lot. With this new subsystem the multiseat&rsquo;s life will becomes easier. I&rsquo;ll briefly explain here to you.</p>Google Summer of Code 2007https://vignatti.com/posts/google-summer-of-code-2007/Wed, 02 May 2007 04:11:17 +0000https://vignatti.com/posts/google-summer-of-code-2007/<p>Certainly, my great new is that I was accepted as a student of <a href="proxy.php?url=http://www.x.org/" target="_blank" rel="noreferrer">X.Org Foundation</a> sponsored by Google, on <a href="proxy.php?url=http://en.wikipedia.org/wiki/Google_Summer_of_Code" target="_blank" rel="noreferrer">Summer of Code</a> 2007. The project&rsquo;s name is <strong>Moving the mouse handling code into a separate thread</strong> and in this <a href="proxy.php?url=http://people.freedesktop.org/~vignatti/SoC_input-handling-proposal.html" target="_blank" rel="noreferrer">link </a>you can see what does this mean specifically.</p>FISL8https://vignatti.com/posts/fisl8/Wed, 02 May 2007 04:02:57 +0000https://vignatti.com/posts/fisl8/<p><a href="proxy.php?url=http://web.inf.ufpr.br/vignatti/talks/apresentacao-fisl2007.pdf" target="_blank" rel="noreferrer">Here</a> is the presentation I&rsquo;ve given on 8th International Free Software Forum, at Porto Alegre. My first (really) public talk was really cool and I&rsquo;ll show to you the video/photos when the organizers get it done.</p>The conception and the future of multiseat...https://vignatti.com/posts/the-conception-and-the-future-of-multiseat/Tue, 10 Apr 2007 03:27:36 +0000https://vignatti.com/posts/the-conception-and-the-future-of-multiseat/<p>&hellip;this is the subject of my talk which will be held at FISL (International Free Software Forum)  on this saturday, April 14th. I&rsquo;ll post the feedbacks here.</p>X server semantics - number of users per serverhttps://vignatti.com/posts/x-server-semantics-number-of-users-per-server/Thu, 29 Mar 2007 03:26:39 +0000https://vignatti.com/posts/x-server-semantics-number-of-users-per-server/<p>Here is mail that I sent to xorg list a week ago. No one replied it :(</p> <p>On IRC I talked with some developers and asked why they didn&rsquo;t said nothing about my comments and the answer summarized was that no one is really interested on multiseat (well, at least on first world countries). Strangely, it really give me a good perspective and motivation to keep the work :)</p>X Address Translationhttps://vignatti.com/posts/x-adress-translation/Sat, 24 Feb 2007 16:59:28 +0000https://vignatti.com/posts/x-adress-translation/<p><a href="proxy.php?url=http://wearables.unisa.edu.au/mpx/" target="_blank" rel="noreferrer">MPX</a> brought to us a new idea of multiseat system.</p> <p>Xat is an application that serves as an intermediary between the X clients and a multiheaded X server. Xat deceives its clients which have the impression that the server has only one head. The objective is that each head behaves like several distinct X servers. We can imagine a scenario where we have a xserver on display :1 with four screens (:1.0, :1.1, :1.2 and :1.3). After Xat being connected we have four displays (:2, :3, :4 and :5) and just one screen per display.</p>Multiseat state on Linuxhttps://vignatti.com/posts/multiseat-state-on-linux/Fri, 23 Feb 2007 03:50:18 +0000https://vignatti.com/posts/multiseat-state-on-linux/<p>For some reason <a href="proxy.php?url=http://en.wikipedia.org/wiki/Multiseat" target="_blank" rel="noreferrer">multiseat</a> doesn&rsquo;t call much attention in countries that are not of the third world. I can be radical, but in my humble opinion there is no reason to not apply this model of computation in certain types of environment (I&rsquo;m talking about kiosks, Internet cafe, office, schools, etc). The <strong>money saved</strong> is enormous, and this is only one of the advantages that I am enumerating here.</p>Hello world!https://vignatti.com/posts/hello-world/Sun, 11 Feb 2007 04:12:56 +0000https://vignatti.com/posts/hello-world/<p>This is my first post and even my first blog. Well, the blog&rsquo;s intention is to bring in evidence my interests about linux (and maybe music).</p>