Xmonad abre terminal en el mismo directorio

6

¿Es posible que Xmonad abra un nuevo terminal en el mismo directorio que el terminal activo (si la ventana activa es un terminal o un programa como vim que se ejecuta en uno)? Como está, todos mis terminales se abren en $HOME. No me importa si esto sucede si abro una nueva terminal en un espacio de trabajo diferente. Esto sería una gran ganancia de productividad porque de lo contrario tendría que cd Hasta el directorio en el que estoy trabajando.

Si esto no es posible hacerlo directamente usando Xmonad, estoy interesado en soluciones alternativas a esto. Lo único que se me ocurre es sobrecargar PROMPT_COMMAND para escribir el directorio actual en un archivo y tener mi .bashrc mira este archivo para determinar dónde ir. Pero esta es una solución muy imperfecta que funcionaría para muchos casos, pero dejará a una buena mayoría incorrecta.

Thomas Eding
fuente
¿Depende de qué terminal estés usando?
Robert Massaioli
Urxvt es un poco complicado, pero esta función está incorporada directamente en el terminal gnome.
Robert Massaioli

Respuestas:

2

No me he metido mucho con los valores predeterminados y ctrl+shift+n lo hace por mi

chevett
fuente
Nunca pensé en usar los controles de mi terminal para hacerlo (a diferencia de los controles de X-Monad). Esto funciona para mi
Thomas Eding
2

Eso realmente no responde a su pregunta, pero tengo una alternativa que puede ahorrarle tiempo y resolver su problema: autojump

Este es un software que guarda sus hábitos al navegar entre carpetas en el terminal. Cada vez que usted cd en una carpeta, aumenta la probabilidad asociada. Por ejemplo en mi sistema ahora tiene algo como:

343368.3820292514   /home/fb
66.1004508305352    /home/fb/documents
65.2439790325514    /home/fb/workspace/MyProject
55.78935025659235   /very/long/path/boring/to/join/Folder
51.78935025659235   /home/fb/master-thesis
49.150383518340945  /usr/share/opencv
43.1282216187962    /home/fb/.dotvim
...

Luego, cuando quiera ir a una carpeta, puede dar solo una parte del nombre y se irá a la carpeta más probable que corresponda. Generalmente el comando j Se asocia con autojump. Por ejemplo, en su caso, el uso será el siguiente.

  1. Abrir una terminal
  2. (Primera vez solamente) Ir con cd a la carpeta /very/long/path/boring/to/join/Folder
  3. Haz algo de trabajo
  4. Más tarde, cuando necesites otro terminal, abre uno nuevo.
  5. Entrando j fol<ENTER> traerá su directamente a /home/fb/very/long/path/boring/to/join/Folder

Por supuesto, esto solo funciona si la carpeta a la que desea unirse es una carpeta a la que va a menudo.

StreakyCobra
fuente
Eso suena como una utilidad genial. Me gustaría ver si hay una utilidad que empuja un directorio que pueda volver a abrir más tarde ... o, si no, crear uno: pwd > ~/poo - & gt; cd `cat ~/poo`
Thomas Eding
2
Solo pregunta: pushd y popd ;-)
StreakyCobra
También para cambiar rápidamente entre dos carpetas: cd -. Un flujo de trabajo común es cd my/directory/one, luego trabaje en él hasta que se necesite otra carpeta: cd /etc/httpd/. Luego, para volver a la anterior: cd -, lo que marca el directorio actual como anterior, haciendo otro cd - para volver a ello.
StreakyCobra
1

Establecí mi directorio por espacio de trabajo. Luego todos los terminales que abro en ese espacio de trabajo se abren en ese directorio. Esto se hace usando la extensión workspacedir: http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Layout-WorkspaceDir.html

Básicamente he enlazado una tecla a changeDir. Cuando presiono esa tecla, aparece un mensaje que le permite configurar el directorio (con la pestaña de trabajo completada).

user236456
fuente
0

Si puede hacer que el PID del shell se ejecute en la ventana actual, puede hacer algo como ejecutar urxvt -cd $(readlink /proc/$PID/cwd) (o algo similar para diferentes terminales). No sé cómo obtener pid de la ventana actual en XMonad sin embargo.

Vladimir Still
fuente
-1

Podrías usar el ID de la ventana X desde withWindowSet y consulta xprop para PID, de la cual extraer CWD.

He estado usando Este enfoque desde hace algún tiempo (con éxito), en una máquina Linux. Debería funcionar en la mayoría de los sistemas operativos similares a Unix que le permiten modificar su lógica para extraer CWD de PID.

mewa
fuente