AviGNU - Mot-clé - Pantheon ShellGroupe d'utilisateurs de logiciels libres du Grand Avignon2024-01-02T17:40:01+01:00Administrateururn:md5:8ed776652564792dba453bac492a5a6cDotclearL'aventure est en marcheurn:md5:f579de0c2f1eafd4245f90e35ae7290a2015-05-16T22:07:00+02:002015-05-16T21:33:32+02:00Olivier DuchateauFreeBSDPantheon ShellVala <p>Dans un <a href="http://avignu.tuxfamily.org/index.php?post/2015/05/14/Est-ce-volontaire-ou-non">précédent billlet</a>, j'expliquais que j'étais en train de « porter » le bureau (Pantheon Shell) sous <a href="http://www.freebsd.org/">FreeBSD</a>, et bien cette après je me suis attaqué à un des <em><a href="https://launchpad.net/switchboard-plug-about">plugins</a></em> du gestionnaire de paramètres (en fixant au passage quelques <em>bugs</em> au niveau de la prise en charge des traductions).</p>
<p><a href="http://avignu.tuxfamily.org/news-custom/public/screenshots/Switchboard-freebsd.png" title="Switchboard About plug"><img src="http://avignu.tuxfamily.org/news-custom/public/screenshots/.Switchboard-freebsd_m.png" alt="Switchboard About plug" style="display:block; margin:0 auto;" title="Switchboard About plug" /></a></p>
<p>La capture d'écran a été faite sous Xfce (mon bureau) avec les thèmes d'icônes et Gtk, Elementary pour un meilleur rendu.</p>
<p><em>Stay tuned!</em></p>Est-ce volontaire ou non ?urn:md5:63b240789c8009dec1ceea8c2445b9852015-05-14T20:59:00+02:002015-05-16T21:17:39+02:00Olivier DuchateauProgrammationGioGLibGObjectPantheon ShellVala <p>En ce moment, je travaille sur le portage de l'environnement de bureau <a href="https://www.assembla.com/code/pantheon/subversion/nodes">Pantheon</a> <sup>[<a href="http://avignu.tuxfamily.org/index.php?post/2015/05/14/Est-ce-volontaire-ou-non#wiki-footnote-1" id="rev-wiki-footnote-1">1</a>]</sup> pour <a href="http://www.freebsd.org/">FreeBSD</a>. C'est long, fastidieux, car il faut sans cesse lire le code (voir plusieurs fois) pour vérifier qu'il n'y a pas de « <em>linuxisme</em> », et trouver des parades pour les résoudre (si il y en a).</p>
<p>Récemment je suis tombé sur une portion de code, qui m'a laissé perplexe. Pour simplifier, elle consiste à calculer la taille du disque dur <sup>[<a href="http://avignu.tuxfamily.org/index.php?post/2015/05/14/Est-ce-volontaire-ou-non#wiki-footnote-2" id="rev-wiki-footnote-2">2</a>]</sup>.</p>
<p>En isolant cette partie (<em>Cf.</em> annexe, fichier <code>hdd.vala</code>), je fus surpris du résultat (au départ j'ai cru, que sous Linux le résultat serait différent, mais en fait non).</p>
<h3>Pour l'éxecuter</h3>
<pre>
valac --pkg=glib-2.0 --pkg=gio-2.0 hdd.vala
./hdd
33.2 GB
</pre>
<p>Le résultat sera sans doute différent chez vous, en fait, le calcul se fait uniquement pour la racine (<code>/</code>). Il crée un <em>File object</em> juste pour <code>/</code>, grâce à la méthode <a href="http://valadoc.org/#!api=gio-2.0/GLib.File.new_for_path">GLib.File.new_for_path</a>.</p>
<p>Mais dans mon cas, mon disque dur est partitionné, je dois pouvoir retrouver la (quasi) totalité du disque, en faisant la somme de toutes mes partitions.</p>
<h3>Mais comment fait-on ?</h3>
<p>Ce bout de code s'inspire en fait, de ce que fait GNOME (via le paquet gnome-control-center). En parcourant le fichier <code>panels/info/cc-info-panel.c</code>, on constate, que c'est la fonction <a href="https://developer.gnome.org/gio/stable/gio-Unix-Mounts.html#g-unix-mount-points-get">g_unix_mount_points_get</a> qui est utilisée <sup>[<a href="http://avignu.tuxfamily.org/index.php?post/2015/05/14/Est-ce-volontaire-ou-non#wiki-footnote-3" id="rev-wiki-footnote-3">3</a>]</sup>.</p>
<p>Avec le langage Vala, il faut utiliser la classe <a href="http://valadoc.org/#!api=gio-unix-2.0/GLib.UnixMountEntry.@get">UnixMountEntry</a>, et faire une boucle sur l'ensemble des points de montage.</p>
<p>Dans mon exemple (<em>Cf.</em> annexe), je stocke la taille de chacune des partitions dans une liste, et ensuite je fais la somme de toutes les tailles.</p>
<pre>valac --pkg=glib-2.0 --pkg=gio-2.0 --pkg=gio-unix-2.0 hdd-02.vala
./hdd-02
266.5 GB
</pre>
<p>C'est déjà plus cohérent.</p>
<p>Il ne reste plus qu'à envoyer un patch aux développeurs.</p>
<div class="footnotes"><h4>Notes</h4>
<p>[<a href="http://avignu.tuxfamily.org/index.php?post/2015/05/14/Est-ce-volontaire-ou-non#rev-wiki-footnote-1" id="wiki-footnote-1">1</a>] Issue du projet <a href="https://elementary.io/">elementary OS</a>.</p>
<p>[<a href="http://avignu.tuxfamily.org/index.php?post/2015/05/14/Est-ce-volontaire-ou-non#rev-wiki-footnote-2" id="wiki-footnote-2">2</a>] À partir de la ligne <a href="http://bazaar.launchpad.net/~elementary-pantheon/switchboard-plug-about/freya/view/head:/src/Plug.vala">234</a> du fichier <code>src/Plug.vala</code> (<a href="https://launchpad.net/switchboard-plug-about">Switchboard-about-plug</a>).</p>
<p>[<a href="http://avignu.tuxfamily.org/index.php?post/2015/05/14/Est-ce-volontaire-ou-non#rev-wiki-footnote-3" id="wiki-footnote-3">3</a>] Elle lit le fichier <code>/etc/fstab</code> ou <code>/etc/mtab</code>.</p></div>