%EC%9D%98%20%22%ED%8F%AC%EC%BB%A4%EC%8A%A4%20%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98%22%20%ED%82%A4%EB%B3%B4%EB%93%9C%20%EB%8B%A8%EC%B6%95%ED%82%A4.png)
Unity에서는 Super+를 눌러 애플리케이션을 시작하거나 포커스를 전환합니다 1. 9Lubuntu(예: LXDE)에서 유사한 속성을 가진 키보드 단축키를 할당할 수 있나요?
더 정확하게 말하면, 응용 프로그램이 이미 열려 있는 경우 포커스가 해당 응용 프로그램으로 전환되고 그에 따라 작업 공간이 변경되도록(예: Unity에서) 바로 가기를 설정할 수 있습니까? 지금까지는 응용 프로그램을 시작(새 인스턴스)하는 바로 가기만 할당했습니다.
답변1
Openbox(LXDE의 창 관리자)에는 이를 위한 내장 기능이 없지만 다음의 약간의 도움을 받습니다.xdotoolUnity의 동작을 복제하고 심지어 향상시킬 수 있는 스크립트를 작성할 수 있습니다.
먼저 xdotool이 설치되어 있는지 확인하세요.
sudo apt-get install xdotool
다음 스크립트를 다른 이름으로 저장 focus_or_launch
하고 실행 가능하게 만듭니다.
#!/bin/bash
# NAME: focus_or_launch
# VERSION: 0.4
# AUTHOR: (c) 2014 Glutanimate <https://github.com/Glutanimate/>
#
# DESCRIPTION: Focus existing app window or launch application if no
# window found
#
# Simplified version of a script by Henning Bekel
# (https://bbs.archlinux.org/viewtopic.php?pid=625009#p625009)
#
# DEPENDENCIES: xdotool
#
# LICENSE: GNU GPLv3 (http://www.gnu.de/documents/gpl-3.0.en.html)
#
# NOTICE: THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
# EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
# PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR
# IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
# PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE,
# YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
#
# IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY
# COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS
# PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
# INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
# THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
# INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE
# PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
# PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
#
# USAGE: focus_or_launch <command>
# EXAMPLE: focus_or_launch google-chrome
############# GLOBVAR/PREP ###############
Executable="$1"
ExecutableBase="$(basename "$Executable")"
Usage="\
Usage: $(basename $0) command
E.g.: $(basename $0) google-chrome\
"
############## USGCHECKS #################
if [[ $# -ne 1 || "$1" =~ ^(-h|--help)$ ]]; then
echo "$Usage"
exit 1
fi
################ MAIN ####################
MostRecentWID="$(xdotool search --class --name "$ExecutableBase" | tail -1 2> /dev/null)"
if [[ -z "$MostRecentWID" ]]; then
echo "$ExecutableBase not found. Launching new window."
"$Executable" > /dev/null 2>&1 &
disown
else
echo "Focusing existing instance of $ExecutableBase."
# use brute-force approach if activating most recent WID doesn't work
xdotool windowactivate "$MostRecentWID" 2>&1 | grep failed \
&& xdotool search --class --name "$ExecutableBase" windowactivate %@
fi
스크립트 작동 방식은 다음과 같습니다. focus_or_launch application
xdotool을 실행하면 애플리케이션의 기존 인스턴스를 찾아 그 중 하나에 집중합니다. 인스턴스가 발견되지 않으면 스크립트는 새 인스턴스를 시작합니다.
이 스크립트를 데스크탑 세션과 통합하려면 Openbox 구성 파일(예 ~/.config/openbox/lxde-rc.xml
: ../lubuntu-rc.xml
또는 ../rc.xml
)을 편집하고 제어하려는 각 애플리케이션에 대해 다음과 유사한 섹션을 추가하십시오.
<keybind key="W-g">
<action name="Execute">
<command>focus_or_launch gedit</command>
</action>
</keybind>
focus_or_launch
시스템의 스크립트 경로로 바꾸거나 스크립트를 $PATH
.
스크립트가 새 앱 인스턴스를 시작하지 않도록 하려면 다음 섹션을 제거하면 됩니다.
"$Executable" > /dev/null 2>&1 &
disown
추신: 이 스크립트는 모든 xdotool 호환 데스크탑 환경(예: Unity, GNOME, XFCE...)에서 작동해야 합니다.