作者 主題: [教學] 解決mozilla出現選擇profile的問題  (閱讀 6633 次)

0 會員 與 1 訪客 正在閱讀本文。

thyme

  • 老人組
  • 俺是博士!
  • *****
  • 文章數: 1281
    • 檢視個人資料
如果你常在 Linux 上跑 Mozilla,你會發覺 Mozilla 有一項設計不是頂
好用的,那就是你再執行一次 Mozilla 時,它會出現一個視窗,說已
經有人在使用,請你選擇另一個 profile ,可是另一個使用者,就是自
己呀!為何要再叫自己選擇呢?嗯,我們這就來談談如何解決這個問題。

Mozilla 這麼設計當然有其理由,理由是什麼,我也不清楚,也許是為
了多人多工吧!其時 Mozilla 本身也留有解決這問題的方法,只不過沒
有特別為了這個寫個簡單的 Script 來處理而已。

第一步,我們要先看 Mozilla 有沒有正在執行,有很多方法可以知道,
我這邊提供一個直接由 Mozilla 本身去判斷的方法,先假設我的 Mozilla
放在 /usr/local/mozilla/ ,而 Mozilla 執行檔是 /usr/local/mozilla/mozilla
代碼: [選擇]

#!/bin/bash
/usr/local/mozilla/mozilla -remote "ping()" &> /dev/null
if [ $? -eq 0] ; then
  echo "mozilla running"
else
  echo "no no no"
fi

就是呼叫 mozilla 去執行 ping 自己的動作,回傳 0 就是有在跑,
很簡單吧,不用使用 ps 什麼再去尋找。

再來就是,如果 mozilla 還在執行中時,我們要通知該 Mozilla ,
讓它開新視窗即可,方法如下:
代碼: [選擇]

#!/bin/bash
/usr/local/mozilla/mozilla -remote "ping()" &> /dev/null
if [ $? -eq 0] ; then
  echo "mozilla running"
  /usr/local/mozilla/mozilla -remote "xfeDoCommand(openBrowser)"
else
  /usr/local/mozilla/mozilla -splash
fi

這次也是用 remote 參數來通知 Mozilla 去呼叫執行中的程式。
而其中的 splash 參數可以不用加,這個參數是告訴 Mozilla ,在正式
視窗跑起來前,先來一個片頭視窗,這又有什麼用呢?就是讓使用者
知道 Mozilla 有在跑了,不要心急,也會讓使用者有一個錯覺,好像
開啟的速度比較快。

還沒結束唷!還有一個很類似的問題,明明 Mozilla 全都關了,甚至
才重開機,怎會也跑出叫我選擇 profile 的畫面呢?這次就錯在 Mozilla
了,因為種種原因,它的 lock 檔沒有砍掉,就會出現這種情形,解決
方法就是先找出 lock 檔,再砍除,但是要注意,如果已經在執行中時,
就不能亂砍唷!
代碼: [選擇]

#!/bin/bash
/usr/local/mozilla/mozilla -remote "ping()" &> /dev/null
if [ $? -eq 0] ; then
  echo "mozilla running"
  /usr/local/mozilla/mozilla -remote "xfeDoCommand(openBrowser)"
else
  ls ~/.mozilla/*/*/lock >/dev/null && rm ~/.mozilla/*/*/lock
  /usr/local/mozilla/mozilla -splash
fi


最後,或許有人會問,我是用 Firefox ,又不是古董的 Mozilla ,那
怎麼辦?我也不清楚 Firefox 在這方面有沒有做更貼心的設計,但是
解決方法都類似,範例如下,我就不再多說明了。
代碼: [選擇]

#!/bin/bash
/usr/local/firefox/firefox -remote "ping()" &> /dev/null
if [ $? -eq 0] ; then
  echo "firefox running"
  /usr/local/firefox/firefox -remote "xfeDoCommand(openBrowser)"
else
  ls ~/.mozilla/*/*/lock >/dev/null && rm ~/.mozilla/*/*/lock
  /usr/local/firefox/firefox
fi

上段程式砍除 lock 的並沒有寫錯,Firefox 的 lock 放的位置不太一樣,
但是,上面的砍 lock 檔的方法對兩者都適用。

這堂課到此為止,各位同學下課囉!
--
本文章自由轉載,需註明文章作者及來源。