Geany: 해당 작업공간에서 파일이 열릴 때 각 작업공간에 대한 새 인스턴스 열기

Geany: 해당 작업공간에서 파일이 열릴 때 각 작업공간에 대한 새 인스턴스 열기

저는 Linux Mint 13에서 Mate 1.2.0을 사용하고 있습니다. 제가 사용하는 두 가지 텍스트 편집기는 Gedit와 Geany(v0.25)입니다. 저는 구문 강조와 기타 인터페이스 기능을 선호하기 때문에 모든 코딩에 Geany를 사용합니다.

하지만 저를 짜증나게 하는 한 가지는 다음과 같은 행동입니다.

  • Geany의 작업공간 1에서 파일을 엽니다.
  • 작업공간 2로 이동
  • 파일을 두 번 클릭하여 엽니다(Geany에서).
  • 데스크탑을 작업 공간 1로 다시 전환하고 Geany에서 파일을 엽니다.

Gedit에서 이 작업을 수행하면 해당 작업 공간에 새 Gedit 인스턴스가 열립니다. 이는 내 작업 스타일에 완벽하게 적합하며 각 작업 공간에는 다른 프로젝트가 열려 있습니다.

할 수 있는프로그램 메뉴에서 다른 Geany 인스턴스를 시작하고 이를 다른 작업 공간으로 이동하지만 동작은 변경되지 않습니다. 그러면 다음이 표시됩니다.

  • Geany의 작업공간 1에서 파일을 엽니다.
  • 작업공간 2로 이동
  • 프로그램 메뉴에서 새 Geany 인스턴스를 시작합니다(이제 작업공간당 하나의 인스턴스가 있습니다).
  • 파일을 두 번 클릭하여 엽니다(Geany에서).
  • 데스크탑을 작업 공간 1로 다시 전환하고 첫 번째 Geany 인스턴스에서 파일을 엽니다.

따라서 이는 항상 "기본" Geany에서 파일을 연 다음 그 안에 있는 작업 공간으로 전환하는 것과 같습니다.

이 동작을 바꿀 수 있는 방법이 있나요? 나는 이것이 다음과 같기를 원합니다 :

  • 파일을 열 때: 이 작업 공간에 Geany가 실행되고 있나요?
    • 예: Geany에서 파일을 엽니다.
    • 아니요: 이 작업 공간에서 새 Geany를 열고 그 안에 있는 파일을 엽니다.

설정에 이에 대한 옵션이 표시되지 않습니다. 어떤 제안이라도 감사하겠습니다! 감사해요

답변1

이 배치를 사용하여 Geany를 엽니다. 그러면 각 작업 공간에 특정한 별도의 소켓이 열립니다.

예를 들어 Thunar에서는 다른 응용 프로그램에서 열기를 사용하고 이 배치 파일을 가리킵니다.

#!/bin/sh

socket=`xprop -root _NET_CURRENT_DESKTOP`
socket=${socket##* }

if [ "$socket" ]
then
    if [ "$DISPLAY" ]
    then
        socket="${DISPLAY%.*}-$socket"
        socket=${socket#*:}
    else
        socket="NODISPLAY-$socket"
    fi
    exec geany --socket-file "/tmp/geany_socket_$socket" "$@"
else
    exec geany "$@"
fi

답변2

터미널로 가서 geany -h이것을 입력하면 사용 가능한 모든 옵션이 표시됩니다. 바로 거기에 -i, --new-instance Don't open files in a running instance, force opening a new instance당신에게 꼭 필요한 것이 있습니다.

어떻게

  1. 클릭하고 있는 것을 찾으세요.

  2. 텍스트 편집기에서 열거나 실행 중인 명령을 변경하는 방법을 찾으세요. (예를 들어 트레이에 있는 실행기인 경우 까다로울 수 있습니다.)

  3. geany -some_options다음 과 같은 명령을 변경하십시오.geany -some_options -i

--

완벽한.

답변3

댓글로 달기에는 너무 길어서 답변으로 게시합니다. 나는 Olivier의 답변을 제대로 이해하는 데 어려움을 겪었기 때문에 다른 사람도 문제가 있는 경우를 대비해 그의 답변에 더 자세한 설명을 포함해야 한다고 생각했습니다. .

다음을 포함하는 배치 파일을 만듭니다.

#!/bin/sh

socket=`xprop -root _NET_CURRENT_DESKTOP`
socket=${socket##* }

if [ "$socket" ]
then
    if [ "$DISPLAY" ]
    then
        socket="${DISPLAY%.*}-$socket"
        socket=${socket#*:}
    else
        socket="NODISPLAY-$socket"
    fi
    exec geany --socket-file "/tmp/geany_socket_$socket" "$@"
else
    exec geany "$@"
fi

배치 파일을 PATH에 포함된 디렉터리에 배치합니다(참조:https://stackoverflow.com/questions/14650070/how-to-execute-bash-script-from-any-location). 배치 파일의 이름을 wgeany로 지정했다고 가정합니다. 그렇지 않으면 아래 지침의 이름을 원하는 이름으로 바꿉니다.

이제 이것을 텍스트 파일을 여는 기본 프로그램으로 설정하려고 합니다. 불행히도 적어도 내 버전에서는 목록에 없으며 불행히도 사용자 정의 선택을 할 수 없습니다.

~/.local/share/applications또는 /usr/share/applications(하나가 존재하지 않거나 작동하지 않는 경우/권한이 없으면 다른 하나를 시도) 로 이동하여 다음을 포함하는 wgeany.desktop이라는 텍스트 파일을 생성하여 이 문제를 해결할 수 있습니다 .

[Desktop Entry]
Name=wgeany
Comment=wgeany
Exec=wgeany %f
Type=Application
StartupNotify=false
Terminal=false
Categories=TextTools;
Name[en_US]=wgeany

또한 올바른 geany 아이콘( )을 가리키는 줄을 포함하고 싶을 수도 있지만 Icon=path/icon.png굳이 찾지는 않았습니다. 파일을 저장하면 배치 파일이 연결 프로그램 대화 상자에 나타납니다. (해당 형식의 파일 속성으로 이동한 다음 "연결 프로그램" 탭으로 이동하여 wgeany를 기본 응용 프로그램으로 설정하여 해당 파일 형식(예: .txt)에 대한 기본 응용 프로그램으로 설정할 수 있습니다.


또한 이 문제를 해결하는 데 도움을 준 MaxWilliams에게도 감사드립니다.

답변4

File 및 Open을 사용하면 Geany는 현재 "기본" 인스턴스(즉, 첫 번째 인스턴스가 아닌 현재 사용 중인 Geany 인스턴스)에서 파일을 엽니다.

관련 정보