Atajo de Fluxbox para abrir un xterm, o cambiar a uno existente

¿Es posible usar fluxbox para configurar una shortkey para decir winkey + r que abre una terminal (digamos xterm o lo que sea) con estas properties?

  1. Si ya hay un terminal que el directory de trabajo es = ~ y no está ejecutando actualmente un command (es decir, está en el indicador), entonces muéstrelo.
  2. O si no, crea una nueva terminal

Solutions Collecting From Web of "Atajo de Fluxbox para abrir un xterm, o cambiar a uno existente"

Así es como lo haría:

  1. haga que su caparazón establezca el título para "bash" cuando esté en el prompt, y el nombre del command cuando ejecuta un command, o cualquier cosa para que pueda distinguirlos
  2. crea un script que llame a wmctrl para wmctrl windows abiertas, luego:
    • si wmctrl encuentra una window con un título de "bash", wmctrl
    • de lo contrario, inicie un xterm
  3. use xbindkeys para llamar a ese script cuando presione su atajo

hacer que tu shell establezca el título de la window cuando ejecutas un command

Aquí hay una versión simplificada de cómo lo hago en bash. No he verificado el código dos veces, pero funciona en mi máquina.

 # set the title when we run a command setcommandhook() { if $has_debug_trap then trap 'command=$BASH_COMMAND; eval settitle "\"${title}\""; trap - DEBUG' DEBUG fi } # set the xterm title settitle() { printf "\033]0;$*\007" } promptstring='$(hostname):$(pwd)$ ' title='$(hostname) "${command:-$0}"' # prompt and window title if test -n "${title}" then PROMPT_COMMAND='command=; eval settitle "\"${title}\""' if $has_debug_trap then PROMPT_COMMAND="$PROMPT_COMMAND; setcommandhook" fi fi if test -n "${promptstring}" then PS1='$(eval echo -n "\"${promptstring}\"")' fi 

Hacerlo en zsh es más fácil, porque tiene el gancho preexec .

Puedes ver mis configuraciones de shell para más detalles, por ejemplo, la function getcommand que maneja commands como fg de una manera más agradable.


elevar el xterm que tiene un post bash de lo contrario comenzando uno nuevo

Escriba un script que use wmctrl -l para wmctrl -l windows, buscando uno con bash en el título. Si se encuentra uno, ejecute wmctrl -i -a <id returned by wmctrl -l> para uploadlo, de lo contrario solo llame a xterm .

Aquí hay un script que lo hace:

 #!/bin/bash # # bashprompt # # if there is an xterm open at a bash prompt, raise/focus that window # if there isn't start a new xterm # # requires that your xterm window title has "bash" at the end # when there is no command running and doesn't have "bash" at the end # when a command is running # # see <http://unix.stackexchange.com/questions/6842> for more details # # Mikel Ward <mikel@mikelward.com> # change this to whatever is unique about your window title # (ie a string that appears in the title when the shell is at a prompt # but does not appear when running a command) prompttitle="bash$" terminalprog="xterm" if ! type wmctrl >/dev/null 2>&1; then echo "wmctrl can't be found, please install it" 1>&2 exit 1 fi if ! output="$(wmctrl -l)"; then echo "Error running wmctrl -l" 1>&2 exit 1 fi while IFS=$'\n' read -r line; do if [[ $line =~ $prompttitle ]]; then id=${line%% *} break fi done <<EOF $output EOF if test -n "$id"; then wmctrl -i -a "$id" else "$terminalprog"& fi 

O descárguelo de mi repository de scripts .


ejecutar el script cuando presiona Win + R

Suponiendo que su script se llama /usr/local/bin/bashprompt , ~/.xbindkeysrc un file ~/.xbindkeysrc contenga:

 "/usr/local/bin/bashprompt" Mod4 + r 

luego ejecuta xbindkeys . .Xclients a su file .Xclients o similar para que se inicie automáticamente.

fluxbox puede igualar windows según ciertos patrones por sí mismo. Con al less fluxbox-1.1.1 esto es posible:

  Mod4 r :If {Some Matches (title=.*bash) (class=XTerm)} {NextWindow (xterm)} {Exec xterm} 

(se traduce en: on press windows-key + r: check, if there is a xterm with its title ending in 'bash'. if there is, go to that window; if not, open a new one . Con una versión de borde sangrante (git) incluso puede ir a Windows en un espacio de trabajo diferente.

Lo único que tienes que hacer es modificar el título (o cualquier otra propiedad de la window que contenga el bash) según lo que hagas. si mira el post que debe establecer una propiedad, si inicia un command, debe quitar esa propiedad. fluxbox no puede mirar dentro de las aplicaciones, solo conoce las windows.