mc 4.8 und Terminalfarben: Lösung

Started by der_bud, 2012/02/22, 12:34:55

Previous topic - Next topic

der_bud

Wer aus siductions kdenext oder sonstwoher den Midnight Commander in der Version 4.8 installiert (Version mit mc -V auslesbar), wird ohne weitere Änderungen erstmal Probleme mit der Farbdarstellung von mc und mcedit in Terminals, Konsolen, Screens, whatever feststellen.

Hntergrund ist das der neue mc mit Themes für 256 Farben gebaut ist, $TERM aber in der Regel mit weniger (8/16) läuft. Es gibt jetzt zwei unterschiedliche Lösungsmöglichkeiten, bei mir nehme ich die zweite da bei der ersten hier Nebenerscheinungen auftraten:

A) Terminals auf 256 Farben umstellen  - oder -
B) In mc den klassischen 8-Farben-Skin wählen

A) (thx agaida) Um Terminal in den 256-Farben-modus zu setzen, wahlweise in Users und Roots jeweiliger ~/.bashrc oder global in /etc/bash.bashrc den Eintrag
# Termsettings
TERM="xterm-256color"
setzen. Mangels genauer Kenntnisse kann ich nur vermuten, dass "xterm" nur für unter X gestartete Konsolen gilt, wie man das auch für init 3 oder screen einstellt ist noch herauszufinden. Bei mir führt das seltsamerweise zu komischen Effekten bei der darstellung des Prompts, daher bevorzuge ich die zweite Variante.

B) Ohne Umstellung der Terminal-Farben:
In /usr/share/mc/skins liegen einige Themes für mc, dabei ist mc46.ini das Klassische, andere können gerne ausprobiert werden, die für 256 Farben sollte man hier meiden.
Der Eintrag für die Skins steckt in einer ini-Datei im $home von User bzw. Root. Achtung: Es gibt mehrere Möglichkeiten wo!

- 1.  Wer von älterem mc direkt updatet, sollte ein Verzeichnis $home/.mc/ haben, darin eine Datei "ini"
- 2.  Wer die alte Version purged, o.g. Verzeichnis löscht und 4.8 installiert, erhält nach einmal anstarten von mc ein Verzeichnis $home/.config/mc/, darin eine Datei "ini"

Die ini darf nicht aktiv sein beim editieren, also nicht mit mcedit beigehen sondern z.b. nano, oder vorher eine Kopie "newini" erstellen, diese Bearbeiten, dann wieder über ini kopieren. Ziemlich am Ende des ersten Abschnitts gibt es eine Zeile mit skin=default, diese ändern in skin=mc46 (oder gotar oder featured)
...
[Midnight-Commander]
...
...
skin=mc46
...

Danach sollten mc und mcedit wieder im gewohnten blauen Gewand starten.
Du lachst? Wieso lachst du? Das ist doch oft so, Leute lachen erst und dann sind sie tot.

agaida

screen habe ich gestern mit towo verhackstückt. Das Ganze gestaltet sich ein wenig schwieriger, da man screen erst beibringen muss, dass auch screen die Möglichkeiten hat, 256 Farben korrekt darzustellen. Ganz trivial gesagt, man muss die termcaps für screen ein wenig aufbohren.

Da mir bis gestern screen ein unbekanntes Wesen war, habe ich mir, nachdem ich von verschiedensten Seiten mehr oder weniger massiv dazu gedrängt wurde, (... man kann ohne screen eigentlich gar nicht leben ...) das mal näher angeschaut. Ich glaube, dieses Thema wird in den nächsten 2-3 Tagen im Wiki erscheinen, wenn ich das sortiert habe.
There's this special biologist word we use for "stable". It's "dead". ~ Jack Cohen

der_bud

Grundsätzlich und langfristig wäre bestimmt die Variante A sauberer, wenn in einem zukünftigen Release alle Terminals, Konsolen, Screens, CLIs (ich leide da immer etwas unter Begriffsverwirrung :roll: ) default und immer und auch via ssh 256 Farben könnten. Das ist zumindest moderner, als ein Programm per Skin auf 16 Farben zu biegen.
Aber das müsste dann auch sauber durchgetestet werden, auch welche configs dafür alle angefasst werden müssen.

Und ich habe erst in den letzten Tagen gelernt, das als quasi fallback der mc (und auch mcedit) mit dem Parameter -b in sauberem, klaren weiß-auf-schwarz gestartet werden können. :wink:
/OT (Und wozu 'screen' nun wirklich gut ist, ist mir auch noch nicht ganz klar) /OT
Du lachst? Wieso lachst du? Das ist doch oft so, Leute lachen erst und dann sind sie tot.

agaida

Konsole - dat Ding, was Du siehst, wenn Du einen Rechner ohne X startest. Ursprüngliche Form eines Geräts zur Texteingabe.
Terminal - dat Ding, was Du in X startest und was so aussieht wie eine Konsole
Screen - eine virtuelle Konsole, ist ein eigener Prozess, auf den zugegriffen werden kann.
CLI - Command Line Interface, halt eine Schnittstelle, die Textbasiert ist. Verwendung in Konsolen, Screens und Terminals :twisted:
GUI - Graphical User Interface (Fenster, X, Wayland)

Und jetzt fangen die Probleme an - oder auch deren Lösungen. Ich kann mich auf eine entfernte Station raufhacken - z.b. mit SSH. Damit kann ich Daten hin- und herschieben. Das geht auf Text- und Grafikbasiert. Die Ausgabe ist dann halt der eigene Schirm oder das Terminal. Die Geschichte hat einen kleinen Schönheitsfehler. Bricht die verbindung ab, dann stirbt auch der Prozess auf der Zielmaschine. Macht sich vor allem bei Sachen wie Updates oder Programmierung nicht gut, da Prozesse undefiniert sterben oder im Fall von Bearbeitungen die Änderungen einfach mal weg sind.

Und hier setzt im textbasierten Bereich Sreen an. Ich erzeuge einen Prozess, der auf dem entfernten System läuft und übertrage nur sein Bild nach irgendwo. bricht die Übertragung ab, dann lebt der Prozess weiter und ich kann mich wieder auf ihn verbinden, um wieder ein Bild davon zu bekommen. Im graphischen Bereich ist das dann ein Terminalserver wie NX oder ein Remote Desktop oder eins der Tools, mit denen ich mir direkt den aktuellen Schirm der Zielmaschine anschauen kann (Teamviewer, pcAnywhere, was weiss ich noch)

Und im Textbereich sollten diese unterschiedlichen Ausgaben halt gleich reagieren, weil es sonst Häckerle gibt. Das ist dann über die TermCaps geregelt, repräsentiert wird das durch $TERM. Und diese TERM-Variable gibt halt recht restriktiv an, was ein Gerät kann und was nicht - und auf welche Steuerungen es reagiert. Eine ordentiche, vollständige Kommunikation kann also nur dann passieren, wenn beide Seiten exakt die gleiche Sprache sprechen. Ansonsten gibt es Reibungsverluste. Und damit das alles möglichst problemlos geht, reizt kaum ein Gerät seine Möglichkeiten aus, es wird ein gemeinsamer definierter Nenner genommen.

Und genau diesen Nenner müssen wir irgendwie so durchgängig implementieren, damit am Ende des Tages kein gepflegter Schuss ins Knie dabei rausgekommen ist.

der_Bud: Nicht dass Du denkst, ich hab das alles nur für Dich geschrieben, ich werde wohl einige Teile dafür fürs Wiki verwenden.
There's this special biologist word we use for "stable". It's "dead". ~ Jack Cohen

der_bud

Quote from: "agaida"... Nicht dass Du denkst, ich hab das alles nur für Dich geschrieben,...
Och menno *schmoll+fußstampf*  :(

Quote from: "agaida"..., ich werde wohl einige Teile dafür fürs Wiki verwenden.
Ja, tu das unbedingt. Ich finde den Text gut verständlich und bin jetzt schlauer als vorher. :wink:
Du lachst? Wieso lachst du? Das ist doch oft so, Leute lachen erst und dann sind sie tot.