emacs windows-subsystem-for-linux

¿Cómo usar X Windows con Emacs en Windows 10 Bash?



windows-subsystem-for-linux (3)

Estoy usando el programa Bash on Ubuntu en Windows para usar Emacs para C ++. En este momento, puedo codificar todo usando los métodos abreviados del teclado, sin embargo, quiero seleccionar texto con mi mouse o establecer la marca con mi mouse en lugar de tener que usar siempre mi teclado.

Para obtener el sistema X Windows, ya hice sudo apt-get install xserver -xorg pero emacs todavía se ejecuta en un editor de terminal.

No sé qué otros comandos usar o cómo hacer que X Windows comience a ejecutarse.


El emacs predeterminado funcionará con Xming y otras opciones. El problema es que la alternativa predeterminada apunta al comando emacs24-nox. Debe instalar ''emacs24'' en su lugar, lo que elimina emacs24-nox.

$ 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

Asegúrese de que $ DISPLAY esté configurado correctamente.

export DISPLAY=localhost:0.0


Gracias por la buena respuesta de @ Yuri, ¡funciona! Después de algunos intentos y errores, encontré una manera de solucionar el problema del borde blanco. Necesitará reconstruir desde el código fuente de Emacs v24.5 (probé algunas versiones v25 en el repositorio git pero todas fallaron, si está usando el repositorio git, etiqueta de pago "emacs-24.5-rc3"). Durante la etapa de configuración, deberá elegir "lucid" (o "athena", lo mismo) x-toolkit en lugar del actual "gtk3". Observe que el "motivo" tiene el mismo problema.

Primero, descargue el código fuente de Emacs e instale el paquete "libxaw7-dev". El "libncurses5-dev" es solo en caso de que no lo tenga. Supongamos que hacemos todo en el directorio ~ / 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

Ahora tenemos el directorio "emacs-24.5" extraído. Para evitar el problema del D-BUS reportado en otra parte, configurémoslo sin él y lo instalemos en / usr / local / bin (por defecto):

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

Ahora, estamos casi listos para construir Emacs. Pero antes de eso, necesitamos ajustar un poco el kernel o la compilación pronto fallará. (Vamos a omitir los detalles, si está interesado, se explica en "etc / PROBLEMS" en su código fuente de emacs). Solo lo necesita durante la etapa de compilación. Una vez que haya instalado su nuevo emacs, no necesita volver a hacerlo.

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

Ahora vamos al largo proceso de compilación, es posible que experimente una ralentización general del sistema durante la compilación, puede reducir la cantidad de subprocesos utilizados en la compilación (aquí uso "4" para una CPU Intel de 2 núcleos y 4 subprocesos, don '' t use un número mayor que los hilos soportados (cat / proc / cpuinfo) o se volverá aún más lento.)

time nice make -j 4

¿Toma solo unos minutos? Más por venir, ahora instálalo (recuerda el "sudo" aquí):

sudo make install

Toda la compilación e instalación lleva menos de 10 minutos en mi máquina, no está mal. Ahora tenemos un Emacs 24.5 en funcionamiento ubicado en "/ usr / local / bin / emacs". Si tiene todo configurado como la respuesta de @ Yuri, debería poder iniciarlo ahora:

/usr/local/bin/emacs &

Ahora puedes maximizarlo y hacer las cosas que quieras. Aquí hay una captura de pantalla, notada en la esquina superior derecha, está maximizada:

No te preocupes por los colores, es mi propia selección de temas.

Todavía hay un problema más. Vamos a solucionarlo de nuevo. ¡Algunas veces seleccionó un elemento del menú y el "borde blanco" ataca de nuevo!

Ahora es más pequeño pero aún molesto.

Afortunadamente esta vez podemos dejar que se vaya. Maximiza / restaura la ventana y desaparecerá. Después de algunas rondas, algunas veces deja de suceder, pero no siempre. Esto sigue siendo molesto. Ya que cambiar el tamaño de la ventana puede solucionar este problema, ¿por qué no lo hacemos automáticamente? Tal vez una solución no muy mala?

Ahora edite su archivo "~ / .emacs" y agregue el siguiente código (: use su nuevo Emacs, por supuesto;):

(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)

El código no es perfecto, pero funciona. Cambiará el tamaño de su marco un poco y lo restaurará de inmediato cuando use el menú. También evita el cambio de tamaño frecuente.


Windows bash no es compatible con X Server. Sin embargo, usar un puerto de Windows X Server como MobaXTerm, XMing o vcXsrv junto con Windows bash funciona. Algunas cosas funcionan fuera de la caja (gvim hizo,) emacs requiere más esfuerzo.

Así es como lo he hecho funcionar:

  • Instalar MobaXterm . Lo más probable es que también puedas hacer que funcione con XMing, pero solo he probado con MobaXterm. Actualización: Probado con vcXsrv y XMing (versión de pago). Funciona esencialmente de la misma manera, probablemente me quedo con MobaXTerm.

  • Instalar la instantánea 25.1 de Emacs. La razón: Ubuntu 14.04 viene con emacs 24.3, que no funciona con Windows bash y el servidor MobaXTerm X (no tengo idea de por qué, y es demasiado viejo de todos modos).

Instala la instantánea usando los siguientes comandos:

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

Entonces corre

sudo update-alternatives --config emacs

y seleccione emacs-snapshot

Asegúrate de configurar la DISPLAY

export DISPLAY=localhost:0.0

Ejecute MobaXTerm (no necesita hacer nada en él, solo inicie, se iniciará X Server cuando sea necesario).

Ejecutar emacs en bash y disfrutar.

Queda un problema, y ​​persiste en los tres paquetes que he probado (MobaXTerm, XMing y vcXsrv). Emacs se adhiere al tamaño del marco inicial y no cambia su tamaño cuando se cambia el tamaño de la ventana. El mismo problema con la barra de menús: cuando la barra de menús está desactivada, emacs no recupera su espacio, permanece como un rectángulo gris. Este problema parece ser peculiar a emacs en Windows bash - gvim y otros programas GUI parecen funcionar bien. Además, ejecutar emacs 25.1 en Linux usando cualquier servidor X en Windows funciona bien. He intentado compilar emacs con diferentes configuraciones de GUI (GTK 2.0, etc.) pero emacs make en Windows bash se atasca. Si encuentro una solución para esto, publicaré una actualización.

Actualización 09/24/2017 De acuerdo con Jarett lo siguiente en su init.el debería solucionar el problema de cambio de tamaño del marco:

(setq frame-resize-pixelwise t)

Ya no tengo Windows con bash activo, así que no puedo probarlo.