Fluxbox를 사용하여 다음 속성을 사용하여 터미널(말하자면 무엇이든)을 열 수 있는 winkey+ 라는 단축키를 설정할 수 있습니까 ?rxterm
- 작업 디렉터리 = ~인 터미널이 이미 존재하고 현재 실행 중인 명령이 없는 경우(예: 프롬프트에서) 이 터미널이 표시됩니다.
- 또는 새 터미널을 만들지 않는 경우
답변1
이것이 내가 하는 방법이다:
- 프롬프트가 표시되면 쉘 제목을 "bash"로 설정하고, 명령을 실행할 때 명령 이름은 "bash"로 설정하거나 구별되는 항목을 설정하십시오.
- 열려 있는 창 목록을 호출하는 스크립트를 만든
wmctrl
후 다음을 수행합니다.wmctrl
"bash"라는 제목의 창이 발견되면 이를 상승시킵니다 .- 그렇지 않으면 시작
xterm
xbindkeys
단축키를 눌렀을 때 스크립트를 호출하는데 사용됩니다 .
명령을 실행할 때 쉘에서 창 제목을 설정하도록 하세요.
bash에서 이 작업을 수행하는 방법의 단순화된 버전은 다음과 같습니다. 코드를 주의 깊게 확인하지는 않았지만 내 컴퓨터에서는 작동합니다.
# 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
후크가 있어서 작업하기가 zsh
더 쉽습니다 .preexec
너는 볼 수있어내 쉘 구성getcommand
더 나은 방법으로 명령을 처리하는 기능 과 같은 자세한 내용을 확인하세요 .fg
bash 프롬프트로 xterm을 시작하고, 그렇지 않으면 새 프롬프트를 시작하십시오.
제목이 있는 창을 wmctrl -l
찾아 windows 를 나열하는 스크립트를 작성하세요 . bash
발견되면 실행 wmctrl -i -a <id returned by wmctrl -l>
하여 발생시키고, 그렇지 않으면 을 호출하세요 xterm
.
이 작업을 수행하는 스크립트는 다음과 같습니다.
#!/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 <[email protected]>
# change this to whatever is unique about your window title
# (i.e. 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
Win+R을 누르면 스크립트 실행
스크립트가 호출된다고 가정하고 다음 내용으로 파일을 /usr/local/bin/bashprompt
만듭니다 .~/.xbindkeysrc
"/usr/local/bin/bashprompt"
Mod4 + r
그런 다음 xbindkeys
. 이것을 .Xclients
파일이나 유사한 항목에 추가하면 자동으로 시작됩니다.
답변2
fluxbox
Windows는 특정 패턴에 따라 자체적으로 일치될 수 있습니다. 적어도 fluxbox-1.1.1
이것은 가능합니다:
Mod4 r :If {Some Matches (title=.*bash) (class=XTerm)} {NextWindow (xterm)} {Exec xterm}
(번역: 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
. 최첨단 버전(git)을 사용하면 다른 작업 공간의 창으로 이동할 수도 있습니다.
당신이 해야 할 유일한 일은 작업에 따라 제목(또는 bash가 있는 창의 다른 속성)을 수정하는 것입니다. 프롬프트를 보면 반드시 설정해야 할 속성이 있는데, 명령이 실행되면 해당 속성을 제거해야 합니다. fluxbox
애플리케이션 내부를 볼 수 있는 방법은 없으며 Windows에 대해서만 알고 있습니다.