노틸러스에서 파일을 열 때 gedit가 계속 새 인스턴스를 열어야하는 이유는 무엇입니까?


32

아, 우분투와 그 기능을 모두 좋아하지만,이 "버그"는 오랫동안 화가 났고 마침내 도움을 청하기로 결정했습니다.

.php노틸러스에서 파일을 두 번 클릭 할 때마다 gedit로 열 파일을 모두 할당 했습니다. 이제 행동이 이상합니다.

  1. 나는 달리기 운동이 없다
  2. 열 파일을 두 번 클릭합니다
  3. gedit 창이 열리고 파일이로드됩니다
  4. 다른 파일을 두 번 클릭하면 열립니다

이제 두 가지 가능한 결과가 있습니다.

5A) 파일이 새 탭의 동일한 gedit 창에서 열립니다

5B) 파일이 새로운 gedit 창에서 열리고 2 개의 gedits가 실행됩니다.

A 또는 B의 발생 여부는 완전히 임의적 인 것으로 보이며 무한히 계속됩니다. 즉, 100 개의 파일을 두 번 클릭하면 60 개의 편집이 끝날 수 있습니다. 일부는 1 탭이 있고 일부는 2 탭이 있고 일부는 3 탭이 있습니다 ...

이것은 매우 성가 시며 이에 대한 해결책은 매우 감사하겠습니다. 누구 든지이 문제를 해결하려고 했습니까?

우분투 10.04, 10.10 및 11.10에서 발생했습니다. 내가 테스트 한 모든 우분투 버전.

답변:


39

왜...

gedit 새 인스턴스를 열지 또는 기존 인스턴스의 탭에서 열지 여부를 결정하는 흥미로운 알고리즘이 있습니다.

gedit-app.c함수 의 소스 파일 에 static boolean is_in_viewport있는 알고리즘은 현재 gedit 인스턴스가

  1. 같은 화면 번호와 표시 이름으로
  2. 같은 작업 공간에서
  3. 뷰 포트 가장자리의 25 % 이상

모두 참이면 gedit는 동일한 인스턴스에서 새 탭으로 열리고 그렇지 않으면 새 창에서 열립니다.

요약하면 동작을 변경하는 유일한 현실적인 방법은 알고리즘을 변경하는 것입니다 ...

방법...

다음은 gedit를 일관된 방식으로 여는 빠른 방법입니다. 항상 새 인스턴스를 엽니 다.

기본 개발 도구를 설치하십시오

sudo apt-get install devscripts build-essential fakeroot 

소스를 얻다

cd ~/Downloads
mkdir build
cd build
apt-get source gedit
cd gedit-3.2*

변경하다

gedit-app.c를 엽니 다

gedit gedit/gedit-app.c

여기에 이미지 설명을 입력하십시오

return FALSE;표시된대로 추가 하고 저장하십시오.

이것이하는 일은 항상 "뷰포트에서 실행 중이 아니므로 항상 새 인스턴스를 엽니 다" 라는 루틴을 종료하는 것입니다.

return TRUE;이것을 사용 하면 항상 새 탭의 기존 gedit 인스턴스에서 열립니다 ...

고유 한 패키지 이름을 지정하십시오

저장소 업데이트로 변경된 패키지를 덮어 쓰지 않도록 패키지에 고유 한 이름을 지정해야합니다.

gedit debian/changelog

이제 +yourname최상위 버전에 추가 하고 파일을 저장하십시오.

참고-아래의 수정 된 패키지를 설치 한 후 아래 링크 된 질문에 따라 버전을 잠그십시오.

여기에 이미지 설명을 입력하십시오

패키지를 구축

sudo apt-get build-dep gedit
debuild -i -us -uc -b

커피 한잔 ...

cd ..
sudo dpkg -i gedit*.deb

연결된 질문 :

  1. 특정 패키지의 업데이트를 방지하는 방법은 무엇입니까?

1
선생님, 이건 아파요! 고마워요, 이것이 효과가 있기를 바랍니다 ...
Richard Rodriguez

... 확실히 테스트하는 동안 ... NB-gedit를 드래그하여 가장자리를 겹치면 새 인스턴스가 열리지 만 데스크탑 내에 gedit가 있으면 새 인스턴스가 열린다는 다른 답변을 사용했습니다. 탭. 위의 컴파일에서- "return FALSE"또는 "return TRUE"로 컴파일 된 경우에 따라 항상 새 인스턴스 또는 탭에서 열립니다.
fossfreedom

이 솔루션을 공식적으로 확인하고 있습니다.
Richard Rodriguez

3
거룩한 @ * fossfreedom, 나는 당신에게 인사, 당신은이 시간을 수행,이 답변의 품질과 솔루션은 imba입니다. 내가 하루 종일 투표 버튼을 누르면 보냈을 것입니다! j
Bruno Pereira

2
구성 변수를 갖고 풀 (pseudo 코드) "$ $ config-variable이면 FALSE를 반환"하도록 pull 요청을하는 것이 더 좋을 것 같습니다. 제안 된 방법은 업데이트를 무기한으로 잠급니다.
pbhj

13

모든 파일을 하나의 gedit 창에서만 열기를 원했습니다. 다른 곳에서는이 정보를 찾지 못했지만 다음과 같이 변경하면 모든 텍스트 파일을 하나의 창에서만 새 탭으로 열 수 있었으며 (어떻게하면 실행기, 노틸러스, Gnome DO를 통해) 열지 않아도됩니다.

  1. echo $DISPLAY명령 행에 표시 번호를 입력 하십시오. 예를 들어 :0표시 번호 를 얻습니다 .

  2. /usr/share/applications/gedit.desktop텍스트 편집기로 수퍼 유저로 엽니 다 .

  3. 다음과 같이 행을 변경하십시오.

    Exec=gedit %U
    

    Exec=gedit --display=:0 %U
    

    :0표시 번호는 어디에 있습니까 ?


2
gedit를 다시 컴파일하고 이상한 패키지 해킹을 수행하는 것보다 훨씬 낫습니다. 감사!
rcrogers 2016 년

1
명령 행에서이 옵션으로 실행해도 gedit새 인스턴스 (윈도우)를 열 수 없습니다 . 적어도 현재 버전 3.18 이상.
alfC

버전 3.28.1에서는 명령 줄과 GUI에서 모두 작동합니다. 다시 시작하지만 필요
efie

2

이것은 무작위로 발생하지 않습니다

기본적으로 Gedit는 많은 인스턴스를 열지 않지만 각 디스플레이마다 하나씩 열립니다. 아직 열려 있지 않은 디스플레이에서 U를 열면 Gedit은 Gedit에서 파일을 엽니 다.

따라서 gedit의 첫 번째 인스턴스를 모든 작업 공간에 배치하여 활성 디스플레이를 따릅니다. 또는 각 프로젝트마다 작업 공간에서 작업하고 각각 열린 Gedit을 사용하여 작업하십시오. 키보드 단축키에서 u는 모든 작업 공간에서 창 꿀벌을 토글하기위한 새로운 단축키를 만들 수 있습니다.

또는 연결 프로그램에서 바로 가기 명령을 사용하여 새 인스턴스에서 항상 열 수 있습니다. gedit --new-window

그래서 리셋으로 PHP 속성을 열어보고 Gedit로 새로운 오프닝을 시도 할 수 있습니다.

gedit --help-allull을 사용 하면 gedit으로 여는 다른 옵션을 참조하십시오.

또한 모든 구성 파일로 gedit를 제거하고 다음을 사용하여 새로 설치하십시오. sudo apt-get purge gedit && sudo apt-get clean && sudo apt-get update && sudo apt-get install gedit

업데이트 : 창을 약간 벗어난 다음 일부 파일을 열면 새 창에서 열립니다. 그것은 다른 디스플레이에 있다고 생각합니다.


예, 무작위로 발생합니다. 그게 요점입니다. 구현은 버그가 많거나 강력하지 않습니다. 예를 들어, 나는 내가 잃어
버렸지

1

이것은 나에게 일어나기 시작했다. 관련 conf 파일을 찾을 수 없으며 purge + clean을 시도했습니다. 마침내 그것이 무엇인지 발견했습니다. 최대화 창처럼 보이지만 Gedit 창이 열리지 않았습니다. 창에서 최대화 버튼을 눌렀을 때 문제가 해결되었습니다! 창의 크기는 변경되지 않았으며 모서리 만 원형에서 정사각형으로 바뀌 었습니다. 이것은 위에서 설명한 알고리즘 @fossfreedom 의 버그 여야합니다 .

참고 : 창을 닫을 때 최대화 / 최소화 상태는 일부 사용자 구성에 저장해야합니다. 이 상태는 제거 + 정리 상태로 유지되며 사용자 별 Gedit confs에도 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.