{"id":157,"date":"2008-09-29T21:19:47","date_gmt":"2008-09-29T19:19:47","guid":{"rendered":"http:\/\/linux.leunen.com\/?p=157"},"modified":"2008-09-29T21:19:47","modified_gmt":"2008-09-29T19:19:47","slug":"ecrire-ses-propres-scripts-nautilus","status":"publish","type":"post","link":"https:\/\/www.leunen.com\/linux\/2008\/09\/ecrire-ses-propres-scripts-nautilus\/","title":{"rendered":"Ecrire ses propres scripts Nautilus"},"content":{"rendered":"<p>Il est possible dans le gestionnaire de fichiers Nautilus de cr\u00e9er des scripts qui pourront \u00eatre lanc\u00e9s via le menu <em>Fichier\/Scripts<\/em> ou via le menu contextuel apparaissant lors d&rsquo;un clic droit sur un fichier.<br \/>\nA quoi peuvent bien servir ces scripts?<br \/>\nA ex\u00e9cuter des t\u00e2ches r\u00e9p\u00e9titives. Par exemple si vous devez toujours redimensionner des images avec les m\u00eames caract\u00e9ristiques, il peut \u00eatre int\u00e9ressant de cr\u00e9er un script.<br \/>\nOu bien pour effectuer une t\u00e2che que Nautilus ne permet pas. Par exemple afficher une image en fond d&rsquo;\u00e9cran directement sans passer par l&rsquo;outil <em>Pr\u00e9f\u00e9rences de l&rsquo;apparence<\/em> dans la configuration de Gnome. <\/p>\n<p>L&rsquo;\u00e9l\u00e9ment <em>Scripts<\/em> du menu <em>Fichier<\/em> ou du menu contextuel n&rsquo;appara\u00eet que si vous avez plac\u00e9 un script (fichier) ex\u00e9cutable dans le r\u00e9pertoire <em>~\/.gnome2\/nautilus-scripts<\/em>. Ne vous \u00e9tonnez donc pas si dans votre Nautilus, il n&rsquo;y a pas (encore) de menu Scripts qui apparaisse. Les scripts peuvent \u00eatre \u00e9crits dans le language que vous d\u00e9sirez. Dans l&rsquo;exemple ci-dessous, je vous donnerai une version du script \u00e9crite avec <em>bash<\/em> et une version \u00e9crite avec <em>python<\/em> .<br \/>\nLe nom du fichier script est le nom qui appara\u00eet dans le menu <em>Scripts<\/em>. Donnez donc un nom significatif \u00e0 vos scripts.<\/p>\n<p>Voici comment proc\u00e9der pour cr\u00e9er un script qui va afficher une image en fond d&rsquo;\u00e9cran (wallpaper). <\/p>\n<p>Cr\u00e9er dans le r\u00e9pertoire <em>~\/.gnome2\/nautilus-scripts<\/em>, un fichier appel\u00e9 fond&rsquo;\u00e9cran. Ouvrez ce fichier avec <em>gedit<\/em> par exemple et copiez le code ci-dessous dans votre fichier:<\/p>\n<pre class=\"codesource\">\r\n#!\/bin\/sh\r\n\r\narg=$(printf %s \"$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS\"  | sed '2,$d' )\r\ngconftool-2 --set --type string  \/desktop\/gnome\/background\/picture_filename \"$arg\"\r\ngconftool-2 --set --type string \/desktop\/gnome\/background\/picture_options \"scaled\"\r\n<\/pre>\n<p>La premi\u00e8re ligne indique qu&rsquo;il s&rsquo;agit d&rsquo;un script shell. Ensuite, on r\u00e9cup\u00e8re dans la variable <em>arg<\/em> le nom du fichier pass\u00e9 en argument par Nautilus. Lorsque vous s\u00e9lectionnez un fichier ou plusieurs dans Nautilus, ce dernier les passent au script via la variable d&rsquo;environnement <em>NAUTILUS_SCRIPT_SELECTED_FILE_PATHS<\/em> qui contient tous les noms de fichiers s\u00e9lectionn\u00e9s, s\u00e9par\u00e9s par des &lsquo;\\n&rsquo; (newline). Autrement dit chaque ligne est un nom de fichier. D&rsquo;autres param\u00e8tres sont transmis aux scripts par des variables d&rsquo;environnement dont nous n&rsquo;avons pas besoin ici.<br \/>\nLa commande sed &lsquo;2,$d&rsquo; permet de ne prendre que le premier fichier si plusieurs ont \u00e9t\u00e9 s\u00e9lectionn\u00e9s.<br \/>\nEnsuite, gconftool-2 \u00e9crit dans les fichiers de configuration de Gnome, le nom du fichier choisi comme fond d&rsquo;\u00e9cran et choisit le mode d&rsquo;affichage &lsquo;scaled&rsquo;.<br \/>\nSauvez ce fichier et rendez-le ex\u00e9cutable:<\/p>\n<pre class=\"codesource\">\r\n$ chmod o+x le_nom_du_fichier\r\n<\/pre>\n<p>Vous pouvez le faire aussi directement dans Nautilus via les propri\u00e9t\u00e9s du fichier.<\/p>\n<p>Le m\u00eame script \u00e9crit en python pour ceux qui pr\u00e9f\u00e8rent ce langage:<\/p>\n<pre class=\"codesource\">\r\n#!\/usr\/bin\/env python\r\n\r\nimport os\r\n\r\nfile = os.environ['NAUTILUS_SCRIPT_SELECTED_FILE_PATHS'].splitlines()[0]\r\nos.system('gconftool-2 --set --type string  \/desktop\/gnome\/background\/picture_filename ' + '\"'+ file +'\"')\r\nos.system('gconftool-2 --set --type string \/desktop\/gnome\/background\/picture_options \"scaled\" ')\r\n<\/pre>\n<p>A nouveau, n&rsquo;oubliez pas de rendre votre script ex\u00e9cutable sinon il n&rsquo;appara\u00eetra pas dans le meu Scripts.<\/p>\n<p>Notez que rien ne vous emp\u00eache de cr\u00e9er dans vos scripts des bo\u00eetes de dialogue que vous auriez cr\u00e9\u00e9es avec <em>glade<\/em> pour python ou en utilisant <em>zenity<\/em> pour vos scripts shell. De m\u00eame, les scripts peuvent \u00eatre \u00e9crits avec n&rsquo;importe quel langage.<br \/>\nJe vous renvoie \u00e0 <a href=\"http:\/\/doc.ubuntu-fr.org\/nautilus_scripts\">la page d&rsquo;ubuntu-fr<\/a> concernant les scripts nautilus pour plus d&rsquo;infos sur le sujet et bien s\u00fbr \u00e0 la documentation de Gnome.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il est possible dans le gestionnaire de fichiers Nautilus de cr\u00e9er des scripts qui pourront \u00eatre lanc\u00e9s via le menu Fichier\/Scripts ou via le menu contextuel apparaissant lors d&rsquo;un clic droit sur un fichier. A quoi peuvent bien servir ces scripts? A ex\u00e9cuter des t\u00e2ches r\u00e9p\u00e9titives. Par exemple si vous devez toujours redimensionner des images [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[15,5],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/157"}],"collection":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/comments?post=157"}],"version-history":[{"count":18,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/157\/revisions"}],"predecessor-version":[{"id":176,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/157\/revisions\/176"}],"wp:attachment":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/media?parent=157"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/categories?post=157"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/tags?post=157"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}