{"type":"rich","html":"<div style=\"width: 640; height: 426; font-family: sans-serif,arial,freesans;\" ><div id=\"shared_container_540962359\" class=\"shared_container\"><div id=\"shared_header_540962359\" class=\"shared_header\"><a href=\"https:\/\/hub.hubzilla.hu\/channel\/pcw\"><img src=\"https:\/\/klacker.org\/images\/default_profile_photos\/rainbow_man\/48.png\" alt=\"PepeCyBs Welt\" height=\"32\" width=\"32\" loading=\"lazy\" \/><\/a><span><a href=\"https:\/\/hub.hubzilla.hu\/channel\/pcw\">PepeCyBs Welt<\/a>  wrote the following  <a href=\"https:\/\/klacker.org\/item\/1041a5ad-4aab-4edd-bef7-a11c2982807e\">post <\/a><span class=\"autotime\" title=\"2025-02-25T16:53:08+01:00\">Tue, 25 Feb 2025 16:53:08 +0100<\/span><\/span><\/div><div id=\"reshared-content-540962359\" class=\"reshared-content\"><strong>Andere Mupfel<\/strong><br \/><a class=\"zrl\" href=\"https:\/\/klacker.org\/photos\/pcw\/image\/226e3651-cf34-425f-9a10-c3ae4d397254\" target=\"_blank\" rel=\"nofollow noopener\"><img class=\"zrl\" loading=\"eager\" style=\"width: 1024px; max-width: 100%;\" alt=\"Image\/photo\" title=\"\" class=\"\" src=\"https:\/\/klacker.org\/photo\/226e3651-cf34-425f-9a10-c3ae4d397254-2.png\" \/><\/a><br \/><br \/><strong><em>Dieser Artikel wurde erstmals am 20. Februar 2025 ver\u00f6ffentlicht.<\/em><\/strong><br \/><br \/>Mit der <a href=\"https:\/\/www.gnu.org\/software\/bash\/\" target=\"_blank\" rel=\"nofollow noopener\">Bash<\/a> kenn' ich mich aus. Bin ja auch schon seit 1996 nahezu ausschlie\u00dflich mit Linux unterwegs... da lernt man \u00fcber die Jahre die Shell halt kennen.<br \/><br \/>Dann bin ich auf die <a href=\"https:\/\/fishshell.com\/\" target=\"_blank\" rel=\"nofollow noopener\">Fish-Shell<\/a> gesto\u00dfen (<a href=\"https:\/\/klacker.org\/articles\/pcw\/hmitf\" target=\"_blank\" rel=\"nofollow noopener\">2016<\/a>) und seit dem war sie die Shell meiner Wahl. K\u00fcrzlich habe ich dann einmal auf die <a href=\"https:\/\/www.nushell.sh\/\" target=\"_blank\" rel=\"nofollow noopener\">Nushell<\/a> umgestellt, wobei ich damit irgendwie nicht warm geworden bin.<br \/><br \/><a href=\"https:\/\/elv.sh\/\" target=\"_blank\" rel=\"nofollow noopener\">Elvish<\/a> habe ich auch einmal ausprobiert, aber das war mir gar nix. Und irgendwann hatte ich dann auch mal einen Blick auf die <a href=\"https:\/\/xon.sh\/\" target=\"_blank\" rel=\"nofollow noopener\">Xonsh-Shell<\/a> geworfen.<br \/><br \/>Vor ein paar Tagen bin ich dann beim Surfen wieder \u00fcber die Webseite von Xonsh gestolpert... und ich dachte mir: &quot;<em>Wieso habe ich die eigentlich nicht l\u00e4nger ausprobiert? Mit der sollte ich doch gut klar kommen, denn <a href=\"https:\/\/www.python.org\/\" target=\"_blank\" rel=\"nofollow noopener\">Python<\/a> geh\u00f6rt neben <a href=\"https:\/\/go.dev\/\" target=\"_blank\" rel=\"nofollow noopener\">Golang<\/a> und <a href=\"https:\/\/www.freepascal.org\/\" target=\"_blank\" rel=\"nofollow noopener\">Pascal<\/a> zu meinen bevorzugten Programmiersprachen, mit denen ich fit bin.<\/em>&quot;<br \/><br \/>Also hab ich die Webseite des Projekts genauer angeschaut, intensiver gelesen und auch mal die Dokumentation studiert... und die Shell installiert.<br \/><br \/>Hey... nicht schlecht! Xonsh verh\u00e4lt sich erstmal ganz normal wie eine &quot;\u00fcbliche&quot; Shell. Man merkt keinen wirklichen Unterschied. Und dann bietet sie, ohne irgendwas umzustellen oder extra Konfiguration, auch Python-Code auszuf\u00fchren. Xonsh ist tats\u00e4chlich eine Art Python-Interpreter und gleichzeitig eine Shell, die sich zumindest nach <a href=\"https:\/\/pubs.opengroup.org\/onlinepubs\/9699919799\/\" target=\"_blank\" rel=\"nofollow noopener\">Posix<\/a> &quot;anf\u00fchlt&quot;.<br \/><br \/><a class=\"zrl\" href=\"https:\/\/klacker.org\/photos\/pcw\/image\/96dabaa4-4d8f-45b3-b350-01581a5fb137\" target=\"_blank\" rel=\"nofollow noopener\"><img class=\"zrl\" loading=\"eager\" style=\"width: 911px; max-width: 100%;\" alt=\"Image\/photo\" title=\"\" class=\"\" src=\"https:\/\/klacker.org\/photo\/96dabaa4-4d8f-45b3-b350-01581a5fb137-2.png\" \/><\/a><br \/><br \/><a class=\"zrl\" href=\"https:\/\/klacker.org\/photos\/pcw\/image\/d00d08b9-d1b1-4d41-93f0-7c5a349c768e\" target=\"_blank\" rel=\"nofollow noopener\"><img class=\"zrl\" loading=\"eager\" style=\"width: 911px; max-width: 100%;\" alt=\"Image\/photo\" title=\"\" class=\"\" src=\"https:\/\/klacker.org\/photo\/d00d08b9-d1b1-4d41-93f0-7c5a349c768e-2.png\" \/><\/a><br \/><br \/>Eine Sache, die mir wichtig ist, ist der mc-Wrapper. Das ist ein Shell-Script, das mit dem <a href=\"https:\/\/midnight-commander.org\/\" target=\"_blank\" rel=\"nofollow noopener\">MidnightCommander<\/a> (mein bevorzugter Dateimanager) ausgeliefert wird, und daf\u00fcr sorgt, dass man sich nach dem Verlassen des mc in dem letzten dort aktuell ausgew\u00e4hlten Verzeichnis befindet.<br \/><br \/><a class=\"zrl\" href=\"https:\/\/klacker.org\/photos\/pcw\/image\/8b1cd53a-6121-4d28-a250-e04cd774086f\" target=\"_blank\" rel=\"nofollow noopener\"><img class=\"zrl\" loading=\"eager\" style=\"width: 911px; max-width: 100%;\" alt=\"Image\/photo\" title=\"\" class=\"\" src=\"https:\/\/klacker.org\/photo\/8b1cd53a-6121-4d28-a250-e04cd774086f-2.png\" \/><\/a><br \/><br \/>MidnightCommander liefert dieses Wrapper-Script f\u00fcr bash\/sh und csh mit.<br \/><br \/>Schon f\u00fcr die Fish-Shell musste ich mir da ein eigenes Script basteln, weil die mitgelieferten, auch nach Anpassungen, nicht funktionieren wollten. War auch gar nicht so kompliziert.<br \/><br \/>Bei der Nushell musste ich aber wieder ein eigenes Script bauen, was schon etwas komplizierter wurde. Lag an der Philosophie von nu und den beschr\u00e4nkten G\u00fcltigkeitsbereichen f\u00fcr Variablen. \u00dcber die Community (via Discord) wurde ich dann aber in die richtige Richtung geschubst und konnte auch f\u00fcr nu das passende Script basteln.<br \/><br \/>Also... ran an den Speck und den Wrapper jetzt mal f\u00fcr Xonsh erstellen.<br \/><br \/>Boah war das simpel! Mit wirklich grundlegenden Python-Kenntnissen lie\u00df es sich quasi aus dem \u00c4rmel sch\u00fctteln. Die <a href=\"https:\/\/xon.sh\/contents.html\" target=\"_blank\" rel=\"nofollow noopener\">Dokumentation von Xonsh<\/a> hat geholfen.<br \/><br \/><pre><code>def m():<br \/>\u00a0 \u00a0 \u00a0 \u00a0 \/usr\/bin\/mc -P ~\/.temp\/mcwd<br \/>\u00a0 \u00a0 \u00a0 \u00a0 with open('\/home\/derpepe\/.temp\/mcwd', 'r') as datei:<br \/>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 wdir = datei.read()<br \/>\u00a0 \u00a0 \u00a0 \u00a0 os.chdir(wdir)<br \/>\u00a0 \u00a0 \u00a0 \u00a0 os.remove('\/home\/derpepe\/.temp\/mcwd')<\/code><\/pre><br \/>Dieses Script einfach in die Datei<br \/><br \/><code class=\"inline-code\">~\/.xonshrc<\/code><br \/><br \/>gepackt... und schon steht es dauerhaft zur Verf\u00fcgung.<br \/><br \/>Leider muss man das Script wie eine Python-Funktion aufrufen, also mit den leeren Klammern hintendran. Nicht sch\u00f6n. Ruft man statt<br \/><br \/><code class=\"inline-code\">m()<\/code><br \/><br \/>nur<br \/><br \/><code class=\"inline-code\">m<\/code><br \/><br \/>auf, wird das Script nicht gefunden.<br \/><br \/>Aber auch kein Problem, denn Xonsh erlaubt es, Aliase zu erstellen (war eh geplant, damit ich den MidnightCommander, wie gewohnt mit<br \/><br \/><code class=\"inline-code\">mc<\/code><br \/><br \/>aufrufen kann). Und die erlauben es, als Argument f\u00fcr ein Alias auch eine Python-Funktion zu verwenden und dabei die Parameter-Klammern wegzulassen.<br \/><br \/>Also in der .xonsrc hinter der Definition der Funktion das Alias definiert:<br \/><br \/><code class=\"inline-code\">aliases['mc'] = m<\/code><br \/><br \/>Nach einem Neustart zeigt nun der MidnightCommander nach Aufruf von<br \/><br \/><code class=\"inline-code\">mc<\/code><br \/><br \/>das gew\u00fcnschte Verhalten.<br \/><br \/>Seit ein paar Tagen nutze ich nun Xonsh exklusiv... und die Shell hat mir bisher keine Probleme bereitet. Das Arbeiten mit Git erfordert keine Umstellung... und auch ssh ist damit unproblematisch.<br \/><br \/>Die Konfiguration wichtiger Elemente ist bei Xonsh genauso komfortabel, wie bei der Fish-Shell \u00fcber ein Web-Interface m\u00f6glich.<br \/><br \/><code class=\"inline-code\">xonfig web<\/code><br \/><br \/><a class=\"zrl\" href=\"https:\/\/klacker.org\/photos\/pcw\/image\/166d6f8c-9c21-4b1d-a18b-7e9c4a705195\" target=\"_blank\" rel=\"nofollow noopener\"><img class=\"zrl\" loading=\"eager\" style=\"width: 911px; max-width: 100%;\" alt=\"Image\/photo\" title=\"\" class=\"\" src=\"https:\/\/klacker.org\/photo\/166d6f8c-9c21-4b1d-a18b-7e9c4a705195-2.png\" \/><\/a><br \/><br \/>startet das Webinterface und dort kann man ganz komfortabel Einstellungen zum Farbschema, zum Prompt f\u00fcr Variablen und f\u00fcr Aliase vornehmen. Au\u00dferdem ist es damit m\u00f6glich, Addons, sogenannte &quot;<a href=\"https:\/\/github.com\/topics\/xontrib\" target=\"_blank\" rel=\"nofollow noopener\">Xontribs<\/a>&quot; zu installieren.<br \/><br \/><a class=\"zrl\" href=\"https:\/\/klacker.org\/photos\/pcw\/image\/42f206ba-b905-4397-a90f-eb05cf2d5ca3\" target=\"_blank\" rel=\"nofollow noopener\"><img class=\"zrl\" loading=\"eager\" style=\"width: 1374px; max-width: 100%;\" alt=\"Image\/photo\" title=\"\" class=\"\" src=\"https:\/\/klacker.org\/photo\/42f206ba-b905-4397-a90f-eb05cf2d5ca3-2.png\" \/><\/a><br \/><br \/>Wer es puristisch mag, kann auch die Konfigurationsdatei mit einem Texteditor bearbeiten... oder man nutzt beide M\u00f6glichkeiten kombiniert. Die Eintragungen aus dem Webinterface sind in der Datei n\u00e4mlich durch Kommentierungen deutlich markiert, und damit leicht erkennbar.<br \/>Irgendwie bin ich gerade &quot;schockverliebt&quot;... aber ich habe auch das Gef\u00fchl, dass ich auf Dauer mit Xonsh zufrieden sein werde (es sei denn, es ergeben sich irgendwo noch unerwartete Probleme).<br \/><br \/>Wer Python mag und sich damit auskennt, sollte durchaus mal einen Blick auf Xonsh werfen. Es lohnt sich!<\/div><\/div><br \/><\/div>","width":640,"height":426}