특정 프로필에서 Firefox의 URL을 원격으로 여는 방법은 무엇입니까? 어쨌든 “소프트웨어”프로필로 엽니

여러 개의 다른 프로파일이 실행되는 Firefox 인스턴스가 여러 개 있습니다. 그중에는 “software”및 “test”라는 이름의 프로파일이 있습니다.

bash 스크립트에서 URL을 열어서 다음과 같이 “test”프로파일에서 열려고합니다.

firefox -P "test" http://www.example.org/

그러나 그것은 어쨌든 “소프트웨어”프로필로 엽니 다. 어떤 아이디어?

Mozilla / 5.0 (X11; U; Linux x86_64; en-US; rv : 1.9.1.8) Gecko / 20100308 Iceweasel / 3.5.8 (Firefox / 3.5.8과 같은)

아니요, 권한 문제가 아닙니다. 모든 프로필 디렉토리가 완벽하게 권한 아래 있습니다.

root@przehyba:~/.mozilla# ls -ld firefox/
drwx------ 13 miernik miernik 4096 Mar 11 09:15 firefox/
root@przehyba:~/.mozilla# ls -ld firefox/*
drwxr-xr-x  9 miernik miernik 4096 Mar 12 11:29 firefox/info
-rw-r--r--  1 miernik miernik  560 Mar 11 09:15 firefox/profiles.ini
drwxr-xr-x 10 miernik miernik 4096 Mar 16 11:51 firefox/software
drwxr-xr-x  9 miernik miernik 4096 Mar 11 09:14 firefox/tech
drwxr-xr-x 11 miernik miernik 4096 Mar 15 22:48 firefox/test
root@przehyba:~/.mozilla#



답변

3 년 후반의 답변으로 죄송합니다. 지금이 주제에 관심을 갖게되어이 질문을 찾았습니다.

문서화 된 솔루션을 찾지 못했습니다. 소스 코드를 확인했으며 여기에 매우 관련이 있습니다 :
http://dxr.mozilla.org/mozilla-central/source/toolkit/xre/nsAppRunner.cpp#1537

여기서 줄 끝의 nullptr은 불행히도 프로필 인수가 SendCommandLine 함수에 전달되지 않음을 의미하므로 openurl 메시지를 보낼 올바른 firefox 창을 선택할 수 없습니다.

그러나 사용자 이름이 전달되고 있으며 사용자 이름이 LOGNAME 환경 변수에서 비롯된 것입니다. 이를 바탕으로 다음과 같은 해결책을 찾았습니다.

  • firefox.sh라는이 스크립트로 파이어 폭스를 포장합니다.
FOX_PROFILE = 페이스 북
LOGNAME = errge. $ FOX_PROFILE 내보내기
/ opt / firefox / firefox -profile ~ / .mozilla_profiles / $ FOX_PROFILES "$ @"
  • 처음 실행될 때 새 인스턴스를 시작하고 ~ / .mozilla_profiles / facebook 디렉토리가 존재해야합니다.

  • 페이스 북 프로필이 이미 실행중인 경우 두 번째로 실행될 때 올바르게 연결됩니다.

  • 여러 실행중인 프로파일로 명령을 올바르게 보낼 수 있습니다 (물론 다른 스크립트의 첫 번째 행에서 FOX_PROFILE 매개 변수를 변경해야합니다).

Linux에서 Firefox 26으로 이것을 테스트했으며 작동합니다.

또는 다음은 귀하가 원하거나 사용하지 않을 수있는 본격적인 솔루션입니다.

#! / bin / bash

세트 -e

FOX = / opt / firefox / firefox

메시지 = $ @

[-z "$ FOX_PROFILE"] 인 경우; 그때
  [-z "$ {MESSAGE}"] 인 경우; 그때
    FOX_PROFILE = 기본
  그밖에
    FOX_PROFILE = $ (kdialog --default default --menu "-$ {MESSAGE}-"기본 기본 Google Google 페이스 북 페이스 북 오류 이메일 오류 스팸)
  fi
fi
FOX_PROFILE 내보내기

#이 핵은 파이어 폭스 원격 명령 행 전송 때문에 필요합니다
#은 프로필 매개 변수를 무시합니다. nsAppRunner.cpp : 1505를 참조하십시오.
LOGNAME = errge. $ FOX_PROFILE 내보내기

# exec 대신 백그라운드 실행을 사용하므로 동작은
# 프로필이 이미 실행 중일 때와 일관성이있을 때 일관성
# 시작.
$ FOX -profile ~ / .mozilla_profiles / $ FOX_PROFILE "$ @"

# 큰 성공.
출구 0

매개 변수없이 스크립트를 실행하면 기본 프로필이 자동 선택되지만 셸에서 FOX_PROFILE을 수동으로 설정하여 재정의 할 수 있습니다. 명령 행에 URL이 전달되면 항상 URL을 열 프로파일을 요청합니다. 주로 채팅 및 이메일 프로그램에서 클릭하여 클릭하기 때문에 항상 프로파일 (달력 용 Google)을 선택하고 싶기 때문입니다. 스팸, 생일 스팸 용 페이스 북 등). 물론 사용 스타일에 맞게 로직을 변경할 수 있습니다. 이것은 단지 예일뿐입니다. 중요한 지식은 LOGNAME 트릭입니다.

물론이 래퍼 스크립트가 컴퓨터에서 브라우저를 시작하는 유일한 방법인지 확인해야합니다. 올바른 LOGNAME을 설정하지 않고 프로필을 열면 더 이상 해당 프로필과 통신 할 수 없습니다. x-www-browser, firefox, sensible-browser와 같은 여러 심볼릭 이름을 통해이 스크립트를 경로에 가장 먼저 넣고 BROWSER 환경 변수에도 넣었습니다. 이 작업을 수행하는 방법은 GNU / Linux 배포판에 따라 다릅니다.


답변

인스턴스가 이미 실행중인 경우 Firefox에서이를 재사용합니다. 시도하십시오 firefox -no-remote.


답변

mie

“하지만 인스턴스를 재사용하고 싶습니다! 특정 인스턴스 만 마음에 드는 임의의 인스턴스가 아닙니다. 명령에”-no-remote “를 추가하려고하면”Iceweasel이 이미 실행 중이지만 응답하지 않습니다. 새 창을 열려면 먼저 기존 Iceweasel 프로세스를 닫거나 시스템을 다시 시작해야합니다. “

당신은이 프로필 디렉토리에 권한 문제를 … 권한을 확인합니다. 다른 장소 (파티션 .. 디스크 ..)에서 복사 또는 이동 했습니까?

해결책:

루트가되어 맨 위로 실행하여 루트로 실행 중인지 확인하십시오. 그런 다음 프로필 디렉토리의 ls -ld (이것은 앞에 홈 (.)이 있어야합니다.)는 “ls -al”을 사용해야한다는 것을 의미합니다.

해당 디렉토리의 다른 권한을 확인하고 적절히 변경하십시오.

건배!


답변

작동하지 않습니다. 두 개의 Mozilla 앱 인스턴스를 실행하는 유일한 방법은 두 번째 인스턴스 (일반적으로 MOZ_NO_REMOTE = 1)에 대한 원격 연결을 비활성화하는 것입니다. 즉, 새 페이지를 여는 것과 같이 다른 인스턴스와 통신 할 수있는 기능을 비활성화합니다.

따라서 no remote활성화 된 상태에서 새 앱을 열거 나 원격 액세스를 허용하는 인스턴스를 재사용 할 수 있습니다.


답변

다음 -no-remote과 같이 테스트 프로파일 호출에만 소프트웨어 프로파일 을 추가 할 수 있어야합니다 (소프트웨어 프로파일이 이미 열린 후).

firefox -P "test" -no-remote http://www.example.org/

그러면 다른 모든 링크가 다른 프로파일에서 원격으로 계속 열릴 수 있습니다.

이 솔루션이 작동하지 않으면을 사용하여 항상 테스트를 위해 별도의 사용자로 Firefox를 실행할 수 sudo -u있습니다. Firefox는 실제로 프로파일로이를 올바르게 처리 할 수 ​​있어야합니다.


답변

기본 프로파일 또는 다른 프로파일로 Mozilla Firefox를 이미 연 경우 다음을 시도하십시오.

Path-To/firefox -remote openurl("http://www.example.org")

2.x에서 12.x까지 Mozilla Firefox에서 테스트 및 작업했습니다.


답변

주어진 프로파일로 Firefox 인스턴스를 처음 시작할 때 다음 명령을 사용하십시오.

firefox -P foo -new-instance

위 명령 끝에 URL을 추가하여 열 수 있습니다. 나중에 해당 인스턴스에서 URL을 열려면 다음을 사용할 수 있습니다.

firefox -P foo -remote 'openurl(http://www.example.org)'

스크립트를 작성 중이고 위의 명령 중 어떤 명령을 호출하기 위해 해당 프로파일을 실행중인 인스턴스가 있는지 확인하려는 경우 다음을 사용할 수 있습니다.

firefox -P foo -remote 'ping()'

Linux에서 Firefox 34로 테스트했습니다.

Firefox에 현재 버그가있어서 메시지와 함께 오류가 발생합니다.

Error: Failed to send command: 500 command not parseable

-remote openurl()제어 tty없이 명령이 수행 된 경우 (예 : 데몬이 시작한 스크립트에서).

KDE의 .desktop 파일 (예 : 패널의 실행기)에서 스크립트를 시작할 때이 버그가 발생하여 “터미널에서 실행”옵션을 선택해야했습니다.