it-swarm.com.de

Wie verwende ich X Windows mit Emacs unter Windows 10 Bash?

Ich verwende Bash unter Ubuntu unter Windows, um Emacs für C++ zu verwenden. Im Moment kann ich alles mit den Tastenkombinationen programmieren, jedoch möchte ich Text mit der Maus auswählen oder die Markierung mit der Maus anstelle von setzen Ich muss immer meine Tastatur benutzen. 

Um das X-Windows-System zu erhalten, habe ich Sudo apt-get install xserver -xorg bereits gemacht, aber emacs läuft immer noch in einem Terminal-Editor. 

Ich weiß nicht, welche anderen Befehle ich verwenden soll oder wie ich X Windows zum Ausführen bringen kann.

18
novice

Windows Bash unterstützt X Server nicht. Die Verwendung eines Windows X Server-Ports wie MobaXTerm, XMing oder vcXsrv in Verbindung mit Windows bash funktioniert jedoch. Einige Dinge funktionieren sofort (gvim tat), emacs erfordert mehr Aufwand.

So habe ich es gemacht:

  • Installieren Sie MobaXterm . Wahrscheinlich können Sie es auch mit XMing funktionieren lassen, aber ich habe es nur mit MobaXterm getestet. Update: Getestet mit vcXsrv und XMing (kostenpflichtige Version.) Funktioniert im Wesentlichen gleich, ich werde wahrscheinlich bei MobaXTerm bleiben.

  • Installieren Sie den emacs 25.1-Snapshot. Der Grund: Ubuntu 14.04 kommt mit emacs 24.3, was mit Windows bash und MobaXTerm X Server nicht funktioniert (keine Ahnung warum, und es ist sowieso zu alt.) 

Installieren Sie den Schnappschuss mit den folgenden Befehlen:

Sudo add-apt-repository ppa:ubuntu-elisp/ppa
Sudo apt-get update
Sudo apt-get install emacs-snapshot

Dann renne

Sudo update-alternatives --config emacs

und wähle emacs-snapshot

Stellen Sie sicher, dass Sie DISPLAY einstellen.

export DISPLAY=localhost:0.0

Führen Sie MobaXTerm aus (Sie brauchen nichts zu tun, starten Sie es einfach - es wird X Server gestartet, wenn dies erforderlich ist.)

Lass Emacs in Bash laufen und genieße.

Ein Problem bleibt bestehen und gilt für alle drei getesteten Pakete (MobaXTerm, XMing und vcXsrv). Emacs behält die ursprüngliche Bildgröße bei und ändert die Bildgröße nicht, wenn die Fenstergröße geändert wird. Gleiches Problem mit der Menüleiste: Wenn die Menüleiste deaktiviert ist, stellt emacs den Platz nicht wieder her, sondern bleibt als graues Rechteck erhalten. Dieses Problem scheint Emacs unter Windows bash eigen zu sein - gvim und andere GUI-Programme scheinen gut zu funktionieren. Das Ausführen von emacs 25.1 unter Linux mit einem X-Server unter Windows funktioniert ebenfalls einwandfrei. Ich habe versucht, Emacs mit verschiedenen GUI-Einstellungen (GTK 2.0 usw.) zu erstellen, aber Emacs auf Windows-bash machen bleibt hängen. Wenn ich eine Problemumgehung finde, werde ich ein Update posten.

Update 09/24/2017 Laut Jarett sollte Folgendes in Ihrem init.el das Größenänderungsproblem beheben:

(setq frame-resize-pixelwise t)

Ich habe kein Windows mit aktiver Bash mehr, deshalb kann ich es nicht testen.

31

Danke für @ Yuris Schöne Antwort, es funktioniert! Nach einigen weiteren Versuchen und Fehlern fand ich einen Weg, um das Problem mit den weißen Rändern zu beheben. Sie müssen den Quellcode von Emacs v24.5 neu erstellen (ich habe einige v25-Versionen im git-Repository ausprobiert, die aber alle fehlgeschlagen sind, wenn Sie git-Repository verwenden, checkout-Tag "emacs-24.5-rc3"). In der Konfigurationsphase müssen Sie anstelle des aktuellen "gtk3" x-toolkit "lucid" (oder "athena") wählen. Beachten Sie, dass das "Motiv" das gleiche Problem hat.

Laden Sie zunächst den Emacs-Quellcode herunter und installieren Sie das Paket "libxaw7-dev". Das "libncurses5-dev" ist nur für den Fall, dass Sie es nicht haben. Nehmen wir an, wir tun alles im Verzeichnis ~/build-emacs24:

mkdir ~/build-emacs24
cd ~/build-emacs24
wget https://ftp.gnu.org/gnu/emacs/emacs-24.5.tar.xz
Sudo apt-get install libxaw7-dev libncurses5-dev
tar xvf emacs-24.5.tar.xz

Jetzt haben wir das Verzeichnis "emacs-24.5" extrahiert. Um zu verhindern, dass das D-BUS-Problem an anderer Stelle gemeldet wird, konfigurieren Sie es ohne, und installieren Sie es in/usr/local/bin (standardmäßig):

cd emacs-24.5
./configure --without-dbus --without-gconf --without-gsettings --with-x-toolkit=athena 

Jetzt sind wir fast bereit, Emacs zu bauen. Aber vorher müssen wir den Kernel etwas anpassen, sonst wird der Build bald scheitern. (Lassen Sie uns die Details überspringen, wenn Sie interessiert sind, wird dies in "etc/PROBLEMS" in Ihrem emacs-Quellcode erläutert.) Sie benötigen dies nur während der Buildphase. Sobald Ihre neuen Emacs installiert sind, müssen Sie dies nicht noch einmal tun.

Sudo sh -c "echo 0 > /proc/sys/kernel/randomize_va_space"

Lassen Sie uns nun auf den langen Build-Prozess eingehen. Es kann zu einer Verlangsamung des Gesamtsystems während des Builds kommen. Sie können die Anzahl der im Build verwendeten Threads verringern (hier verwende ich "4" für eine 2-Cores-4-Threads-Intel-CPU, don ' t Verwenden Sie eine größere Anzahl als die unterstützten Threads (cat/proc/cpuinfo), sonst wird es noch langsamer.)

time Nice make -j 4

Dauert nur ein paar Minuten? Weitere folgen jetzt, installieren Sie es (erinnern Sie sich an das "Sudo" hier):

Sudo make install 

Die gesamte Erstellung und Installation dauert auf meinem Rechner weniger als 10 Minuten, nicht zu schlecht. Jetzt haben wir einen funktionierenden Emacs 24.5 unter "/ usr/local/bin/emacs". Wenn Sie alles als @ Yuris Antwort eingerichtet haben, sollten Sie es jetzt starten können:

/usr/local/bin/emacs &

Jetzt können Sie es maximieren und die gewünschten Dinge tun. Hier ist ein Screenshot, der in der oberen rechten Ecke festgestellt wurde, und zwar maximiert:

 enter image description here

Mach dir keine Sorgen über die Farben, es ist meine eigene Themenauswahl. 

Es gibt noch ein Problem. Lassen Sie uns noch einmal umgehen. Manchmal haben Sie einen Menüpunkt ausgewählt und der "weiße Rand" greift wieder an!

 enter image description here

Es ist jetzt kleiner, aber immer noch nervig. 

 enter image description here

Zum Glück können wir es diesmal gehen lassen. Maximieren/Wiederherstellen des Fensters und es wird verschwinden. Nach ein paar Runden hört es manchmal wieder auf, aber nicht immer. Das ist immer noch nervig. Da das Fenster durch die Größenänderung dieses Problem beheben kann, machen wir es nicht automatisch. Vielleicht ein nicht zu schlechter Workaround?

Bearbeiten Sie nun Ihre "~/.emacs" -Datei und fügen Sie den folgenden Code hinzu (: verwenden Sie Ihren neuen Emacs natürlich;):

(defvar fix-frame-white-border-last-check 0)

(defun current-sec ()
  (let ((currtime (current-time)))
    (logior (lsh (car currtime) 16) (cadr currtime))))

(defun fix-frame-white-border-uow (&optional frame)
  (when (> (- (current-sec) fix-frame-white-border-last-check) 2)
    (setf frame (or frame (selected-frame)))
    (let ((width  (frame-width frame))
          (height (frame-height frame)))
      (set-frame-size frame (1- width) height)
      (set-frame-size frame width height))
    (setq fix-frame-white-border-last-check (current-sec))))

(advice-add 'menu-bar-open :after #'fix-frame-white-border-uow)
(add-hook 'menu-bar-update-hook #'fix-frame-white-border-uow)

Der Code ist nicht perfekt, aber es funktioniert. Wenn Sie das Menü verwenden, wird die Größe des Frames etwas geändert und sofort wiederhergestellt. Es verhindert auch die häufige Größenänderung.

6
Luke Lee

Die Standard-Emacs funktionieren mit Xming und anderen Optionen. Das Problem ist, dass die Standardalternative auf den Befehl emacs24-nox verweist. Sie müssen stattdessen 'emacs24' installieren, wodurch emacs24-nox entfernt wird. 

$ Sudo update-alternatives --query emacs
Name: emacs
Link: /usr/bin/emacs
....
Status: auto
Best: /usr/bin/emacs24-nox
Value: /usr/bin/emacs24-nox

$ Sudo apt install emacs24

$ Sudo update-alternatives --query emacs
Name: emacs
Link: /usr/bin/emacs
...
Status: auto
Best: /usr/bin/emacs24-x
Value: /usr/bin/emacs24-x

Stellen Sie sicher, dass $ DISPLAY richtig eingestellt ist.

export DISPLAY=localhost:0.0
1
Brian Whitehead