{"id":5125,"date":"2011-12-10T20:41:33","date_gmt":"2011-12-10T19:41:33","guid":{"rendered":"https:\/\/www.gambaru.de\/blog\/?p=5125"},"modified":"2019-10-15T01:40:23","modified_gmt":"2019-10-14T23:40:23","slug":"ein-individuelles-dmenu-erstellen","status":"publish","type":"post","link":"https:\/\/gambaru.de\/blog\/2011\/12\/10\/ein-individuelles-dmenu-erstellen\/","title":{"rendered":"Ein individuelles dmenu erstellen"},"content":{"rendered":"<p>Das gute <a href=\"http:\/\/tools.suckless.org\/dmenu\/\">dmenu<\/a> wurde zwar prim\u00e4r f\u00fcr die Verwendung mit dem Fenstermanager <a href=\"http:\/\/dwm.suckless.org\/\">dwm<\/a> entwickelt, es l\u00e4sst sich aber auch mit anderen kombinieren. Zum ersten Mal habe ich das dieses Jahr bei <a href=\"https:\/\/www.gambaru.de\/blog\/2011\/05\/21\/debian-und-openbox-in-schick-crunchbang-linux\/\">Crunchbang<\/a> beobachtet, das auf Debian Squeeze und den Openbox-Fenstermanager setzt.<br \/>\nDoch zuerst einmal, so sieht dmenu f\u00fcr gew\u00f6hnlich aus.<\/p>\n<p><a href=\"https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2011\/12\/20111210_dmenu1-1-1.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-5133\" title=\"20111210_dmenu\" src=\"https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2011\/12\/20111210_dmenu1-1-1.png\" alt=\"\" width=\"628\" height=\"24\" \/><\/a><br \/>\nIndem man die Anfangsbuchstaben des gesuchten Programms eintippt und das Ganze mit Tab vervollst\u00e4ndigt, bewegt man sich in rasender Geschwindigkeit durch alle installierten Anwendungen, die im eigenen $PATH installiert sind. Programme werden danach durch Enter gestartet, fertig. Kein Warten, sehr effizient, <a href=\"http:\/\/do.davebsd.com\/\">Gnome-Do<\/a> oder gar Unity und die Gnome-Shell werden dadurch zum Ausf\u00fchren von Programmen \u00fcberfl\u00fcssig.<br \/>\nNormalerweise ben\u00f6tige ich bei Openbox und vergleichbaren Fenstermanagern nur das Rechtsklickmen\u00fc und ein paar Tastenk\u00fcrzel. Mit dem Skript dmenu-bind.sh von Gatti Paolo l\u00e4sst sich aus dmenu aber ganz leicht eine \u00fcbersichtliche Men\u00fcstruktur erstellen.<br \/>\nDer Aufbau ist einfach und leicht nachzuvollziehen. Unter die Men\u00fcpunkte wie z.B. web werden der Name des Men\u00fcpunkts und der auszuf\u00fchrende Befehl geschrieben.<\/p>\n<p><code>chromium \"chromium\" <\/code><\/p>\n<p><code><\/code>oder<\/p>\n<p><code>vim \"urxvtcd -e vim\" <\/code><br \/>\nIn dem Men\u00fc kann man danach wie gehabt mit den Pfeiltasten und der Enter-Taste navigieren. Das Skript l\u00e4sst sich z.B. in <em>~\/.config\/dmenu\/dmenu-bind.sh<\/em> abspeichern und in <em>~\/.config\/openbox\/rc.xml<\/em> oder mit Hilfe von <a href=\"http:\/\/packages.debian.org\/obmenu\">obmenu<\/a> an eine Taste binden.<\/p>\n<pre class=\"brush:xml\">&lt;keybind key=\"A-F3\"&gt;\n  &lt;action name=\"Execute\"&gt;\n    &lt;startupnotify&gt;\n      &lt;enabled&gt;true&lt;\/enabled&gt;\n        &lt;name&gt;dmenu-bind&lt;\/name&gt;\n    &lt;\/startupnotify&gt;\n        &lt;command&gt;~\/.config\/dmenu\/dmenu-bind.sh&lt;\/command&gt;\n  &lt;\/action&gt;\n&lt;\/keybind&gt;<\/pre>\n<p>Das angepasste dmenu kann nun mit Alt+F3 aufgerufen werden.<\/p>\n<p><a href=\"https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2011\/12\/20111210_dmenu-bind1-1-1.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-5135\" title=\"20111210_dmenu-bind\" src=\"https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2011\/12\/20111210_dmenu-bind1-1-1.png\" alt=\"\" width=\"406\" height=\"28\" \/><\/a><br \/>\nDas gesamte dmenu-bind.sh Skript sieht so aus.<\/p>\n<pre class=\"brush:shell\">#!\/bin\/bash\n#       Custom dmenu-bind.sh\n#\n#       Copyright 2009, Gatti Paolo (lordkrandel at gmail dot com)\n#       Distributed as public domain.\n#       09.28.2009 -- First release\n#       09.29.2009 -- Submenu support added\nif [ \"$1\" == \"\" ]; then\n    title=\"MainMenu\"\n    menu=(\n#               labels            commands\n#           Main =========================================\n                web               \"$0 web\"\n                system            \"$0 system\"\n                tools             \"$0 tools\"\n                settings          \"$0 settings\"\n    )\nelse\n    case $1 in\n    web)\n        title=\"web\"\n        menu=(\n#           Web ==========================================\n                firefox           \"firefox\"\n                lostirc           \"lostirc\"\n         )\n    ;;\n    tools)\n        title=\"tools\"\n        menu=(\n#           Tools ========================================\n                gedit             \"gedit\"\n                geditsudo         \"gksudo gedit\"\n         )\n    ;;\n    system)\n        title=\"system\"\n        menu=(\n#           System =======================================\n                home              \"pcmanfm\"\n                tilda             \"tilda\"\n                synaptic          \"gksudo synaptic\"\n         )\n    ;;\n    settings)\n        title=\"settings\"\n        menu=(\n#           Settings =====================================\n                volume            \"$0 volume\"\n                dmenu             \"gedit $0\"\n                obconf            \"obconf\"\n         )\n    ;;\n    volume)\n        title=\"Volume\"\n        menu=(\n#           Volume controls ==============================\n                0%                \"amixer sset Master 0\"\n                50%               \"amixer sset Master 50\"\n                70%               \"amixer sset Master 70\"\n                100%              \"amixer sset Master 100\"\n         )\n    ;;\n    esac\nfi\nfor (( count = 0 ; count &lt; ${#menu[*]}; count++ )); do\n#   build two arrays, one for labels, the other for commands\n    temp=${menu[$count]}\n    if (( $count &lt; ${#menu[*]}-2 )); then\n        temp+=\"n\"\n    fi\n    if (( \"$count\" % 2 == \"0\" )); then\n        menu_labels+=$temp\n    else\n        menu_commands+=$temp\n    fi\ndone\nselect=`echo -e $menu_labels | dmenu -p $title -nb black -nf white -sb darkblue -sf white`\nif [ \"$select\" != \"\" ]; then\n#   fetch and clean the index of the selected label\n    index=`echo -e \"${menu_labels[*]}\" | grep -xnm1 $select | sed 's\/:.*\/\/'`\n#   get the command which has the same index\n    part=`echo -e ${menu_commands[*]} | head -$index`\n    exe=`echo -e \"$part\" | tail -1`\n#   execute\n    $exe &amp;\nfi<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Das gute dmenu wurde zwar prim\u00e4r f\u00fcr die Verwendung mit dem Fenstermanager dwm entwickelt, es l\u00e4sst sich aber auch mit anderen kombinieren. Zum ersten Mal habe ich das dieses Jahr bei Crunchbang beobachtet, das auf Debian Squeeze und den Openbox-Fenstermanager setzt. Doch zuerst einmal, so sieht dmenu f\u00fcr gew\u00f6hnlich aus. Indem man die Anfangsbuchstaben des &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/gambaru.de\/blog\/2011\/12\/10\/ein-individuelles-dmenu-erstellen\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eEin individuelles dmenu erstellen\u201c<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[6],"tags":[30,50,53,61,65,145],"_links":{"self":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/5125"}],"collection":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/comments?post=5125"}],"version-history":[{"count":2,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/5125\/revisions"}],"predecessor-version":[{"id":10922,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/5125\/revisions\/10922"}],"wp:attachment":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/media?parent=5125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/categories?post=5125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/tags?post=5125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}