顯示具有 linux 標籤的文章。 顯示所有文章
顯示具有 linux 標籤的文章。 顯示所有文章

2010-03-12

解決按 Ctrl + Alt + Backspace 無法離開 X Window 的問題


不知從什麼時候開始,我的 debian testing 就已經無法用傳統的 Ctrl+Alt+Backspace 離開 X Window 了,今天 google 了一下,發現似乎 Ubuntu 9.10 也是如此,據說是有人覺得會誤按,所以把它改成預設不啟用了。



Howto Enable Ctrl + Alt + BackSpace in Ubuntu Jaunty 這篇文章說只要在 /etc/X11/xorg.conf 加入 DontZap 的設定就可以重新啟用這組快捷鍵



 Section "ServerFlags"

    # DontZap on for disabling Ctrl+Alt+Backspace killing X

    # DontZap off for enabling Ctrl+Alt+Backspace killing X

    Option "DontZap" "off"

EndSection


不過我在 Debian 上測試無效。



又 google 到 How to enable/disable Ctrl+Alt+Backspace in Ubuntu 9.10 (Karmic) 可在 hal 的設定中修改:



先找到下面的檔案:



/usr/share/hal/fdi/policy/10osvendor/10-x11-input.fdi (inside the
<match key=”info.capabilities” contains=”input.keys”> section):


再修改設定:



<merge key="input.xkb.options" type="string">terminate:ctrl_alt_bksp</merge>


不過 Debian testing (Squeeze) 找不到這個設定



於是只好靠指令



setxkbmap -option terminate:ctrl_alt_bksp


成功了。但是,難道要把它加到 ~/.xinitrc 這麼暴力?再找找看。



後來找到 #bug567808



在 /etc/default/keyboard 中



XKBOPTIONS="terminate:ctrl_alt_bksp" 


YES!解決了。



不記下來肯定等一下就忘記。 :D

2010-03-08

解決 mplayer 雙螢幕播放時外接螢幕無法顯示的問題

使用雙螢幕(顯示同樣內容)時,在預設狀態下,若使用 xv 輸出,mplayer 在外接螢幕上只會出現黑色區塊,要讓影片可以同時在兩個螢幕上顯示,要在 -vo xv 加上一個選項 adaptor=1 才可。

$ mplayer -vo xv:adaptor=1 video.flv

要知道 adaptor 設多少,可用 xvinfo 看,xvinfo 在 Debian 中是包在 x11-utils 中。

我的電腦中,0 代表 Adaptor #0: "ATI Radeon Video Overlay",1 代表 Adaptor #1: "Radeon Textured Video"。如果用 0 播放,就像原本的情況,如果用 1 播放,就正常。

延伸閱讀:

在 Linux 上安裝 flashplugin for firefox 與簡單測試記錄

由於 Linux 上 firefox 在用的 flashplugin (flashplayer-mozilla 10.0.42) 效能太差,今天看到 flashplayer 10.1beta3 釋出的消息,就衝了。


Adobe Labs 下載給 Linux 用的 tarball。


$ tar zxvf flashplayer10_1_p3_linux_022310.tar.gz


什麼?竟然只有 libflashplayer.so 一個檔案!只好手動安裝。


$ sudo mkdir -p /usr/local/lib/mozilla/flashplayer-10.1b3-mozilla


$ cp ./libflashplayer.so /usr/local/lib/flashplayer-10.1b3-mozilla/


$ sudo chmod 644 /usr/local/lib/flashplayer-10.1b3-mozilla/libflashplayer.so


$ sudo update-alternatives --install /usr/lib/mozilla/plugins/flash-mozilla.so flash-mozilla.so /usr/local/lib/flashplayer-10.1.b3-mozilla/libflashplayer.so 60


這邊稍微解說一下。Debian 的 /etc/alternatives 裡頭是一堆 links,這些 links 可能是某種類型的程式,或者有許多衍生版本的程式,比如說:x-window-manager、x-terminal-emulator、x-www-browser 就是前者,vim、awk 是後者。用 ls -l 去看,可以發現它們指向真正的程式所在。聰明的人可能已經猜到了,沒錯, 這是 Debian 管理同類型程式的一個系統,例如:當系統要呼叫終端機時,到底要呼叫 mlterm 還是 lilyterm?寫系統 script 的人怎麼知道使用者習慣用那一種 terminal 呢?在 Debian,只要寫 x-terminal-emulator 就可以了,我們可以用 update-alternatives 指定 x-terminal-emulator 會指向那一個程式。


所以上面的命令的意思,就是:iceweasel 需要 flashplugin 時,會讀取 /usr/lib/mozilla/plugins/flash-mozilla.so ,這個 link 會指向 /etc/alternatives/flash-mozilla.so,這個 flash-mozilla.so 要指向先前拷貝好的 /usr/local/lib/flashplayer-10.1.b3-mozilla/libflashplayer.so ,並指定優先權為 60。我的系統中另外還有 flashplayer 10.0.42 與 gnash 0.8.6,但因 10.0.42 與 gnash 預設的優先權只有 10,所以系統以後就會以這邊安裝的 10.1.b3 作為 flash-mozilla.so 的預設。


以後如果要改用其他的 flashplayer,可用下面指令來切換:


$ sudo update-alternatives --config flash-mozilla.so


如果要移除


$ sudo update-alternatives --remove flash-mozilla /usr/local/lib/flashplayer-10.1.b3-mozilla/libflashplayer.so


好,安裝完成,然後測試看那個 flashplayer 好用吧!


我的測試很簡略,模擬平常使用的方式,開啟 65 個之前在逛的網頁,加上 蕭邦冬風練習曲


測試環境:Pentium M 1.86 GHz + 1G Ram + Iceweasel 3.5.6 + Debian Squeeze


開啟瀏覽器後,等待頁面完全 loading 後,CPU Usage 穩定下來,約十幾,最多有時跳到二十幾。聽完一遍 蕭邦冬風練習曲後,再放一遍,第二次才用 top 監看 CPU usage (為了去除網路不穩的因素)


播完後,把前後的 CPU usage 去掉,然後平均


flashplayer 10.0.42 的平均 CPU 使用率是 59.7


flashplayer 10.1.beta3 是 49.6


gnash 0.8.6 是 58.6


結論: flashplayer 10.1.beta 3 的 CPU 使用效率稍有改善。(雖然 CPU 使用率還是高得我想!@#$@…)

2010-01-23

imagemagick 文字轉圖片

imagemagick 中的 convert 可以把字型顯示在圖檔中

$convert [-display X-SERVER] {[-family FAMILY_NAME]|[-font FONT_PATH]} [-pointsize POINT_SIZE] label:STRING FILE_NAME

  • -display X-SERVER 向這裡指定的 X-SERVER 要求字型或圖片
  • -family FAMILY_NAME 使用指定的 font family 顯示文字
  • -font FONT_PATH 使用指定的 font 顯示文字 (name 是字型的路徑)
  • -pointsize POINT_SIZE 指定字型尺寸
  • -stretch STRETCH 指定字型的 stretch (Any,Condensed,Expanded,ExtraCondensed, ExtraExpanded,Normal...)
  • -style STYLE 指定字型的 style (Any,Italic,Normal,Oblique)
  • label:STRING STRING 代表圖檔內要顯示的文字
  • FILE_NAME 圖檔名稱

顯示系統安裝的字型清單

$ convert -list font
如果是 IM 6.3.5-7 之前,顯示字型清單要用
$ convert -list type

顯示支援的 font style

$ convert -list style

顯示支援的 font stretch

$ convert -list stretch

如果要顯示的字數較多,可在 label 指定要顯示的文字檔

$ convert -family Arial -pointsize 24 label:@font-test.txt font-test-arial.png

不曉得是我不會用,還是 imagemagick 有 bug,到目前為止,指定 -family 一直無法成功,但用 -font 指定字型路徑就沒問題。而指定了 -font 好像也就不要 -stretch 或 -style 了。

例:用 cwyen 顯示

旭日東昇,但依舊寒風刺骨
雪地上的屍體
見證著平民之女與甘願放棄優渥生活的阿乙之間
炙熱的愛
直到永遠

先將這段文字在目前所在的資料夾中存成文字檔 font-test-cht.txt
$ convert -font /usr/local/share/fonts/truetype/cwyen.ttf -pointsize 32 label:@font-test-cht.txt font-test-cht.png

$ display font-test-cht.png

如果要讓圖片更花俏,可:

加上色彩

-background BACKGROUND_COLOR
-fill FOREGROUND_COLOR
-list color (查詢內建的色彩關鍵字)

指定 size

-size WidthxHeight

在指定位置加上文字

-annotate +X+Y 'text'

字的輪廓加上外框 (加在 font 後面)

-stroke STROKE_COLOR
-strokewidth STROKE_WIDTH (不必指定單位,單位好像固定是 px ?)

圖片邊緣改為斜邊並加上光影

-raise WxH 左、上邊框亮,右、下邊框暗,W 是左、右邊框的寬度,H 是上、下邊框寬度
+raise WxH 左、上邊框暗,右、下邊框亮


其他花俏的東西以後有空再研究



參考資料

man convert
ImageMagick v6 Examples -- Text to Image Handling

Google Chrome 4 字型描繪尚待解決的幾個問題

最重大的當然就是 - 不理會 fontconfig 的設定,下面幾個 issues 可能是同一問題

  • Issue 18159: Chrome doesn't honor fontconfig settings

  • Issue 12179: System font hinting settings are not obeyed

  • Issue 29871: Chrome font rendering seems fuzzy compared to Firefox (on Linux)(這個 bug 有附比較多圖,其實,有些人家回報 chrome 太模糊的我反而覺得比較好看)

  • Issue 29817: font rendering
  • Issue 26206: Chrome doesn't respect fontconfig's hinting flags

另外,Chrome 對於字型 kerning 的解讀還需要加強 (相當有趣的發現!)

  • Issue 21207: Font rendering issue: kerning doesn't match Firefox

還有偽粗體的問題 (直接看 Issue 中的圖比較清楚)

  • Issue 22360: synthesized bold (fake bold) glyphs get horribly blurred when native bold is not availble

2010-01-11

限制 CPU 使用率的工具 - cpulimit

CPULIMIT



cpulimit 可限制指定程式的 CPU 使用率


在 Debian 中的安裝方式



# aptitude install cpulimit

語法簡介



$ sudo cpulimit [-e EXECUTABLE|-p PID|-P ABSOLUTE_PATH_TO_EXECUTABLE] [-l LIMIT]


  • 目標程式可用三種方式指定,用 -e 指定執行檔的名稱,用 -p 指定 PID,或 -P 指定絕對路徑

  • CPU 使用率的限制,用 -l 指定,-l 後面直接輸入整數即可,代表百分率


例子



限制 PID 為 10796 的 process CPU 使用率為 50%



$ sudo cpulimit -p 10796 -l 50
Process 10796 detected


限制 firefox 的 CPU 使用率為 50%



$ sudo cpulimit -e firefox-bin -l 50
Warning: no target process found. Waiting for it..


奇怪,抓不到?



$ ls -l /usr/lib/iceweasel/firefox-bin
lrwxrwxrwx 1 root root 31 2009-12-01 03:00 /usr/lib/iceweasel/firefox-bin -> ../xulrunner-1.9/xulrunner-stub


$ sudo cpulimit -e xulrunner-stub -l 50
Process 10796 detected


這次抓到了。所以,cpulimit 對 softlink 無效,必需找出 softlink 的 target。


參考資訊:


How To Limit CPU Usage Of A Process With cpulimit (Debian/Ubuntu)

2008-06-10

讓 Win 與 Linux 的 Firefox 共享 Scrapbooks

相信在 Windows 下使用 Scrapbook 大家都不會有問題,所以本文僅探討在 Linux 上的設定。在開始之前,有幾點必須知道的是:

  • 必須知道 scrapbooks 所在的磁碟是採用 ntfs 還是 fat32 檔案系統。
  • 如果你對 Linux 不熟,且有足夠的 fat32 硬碟空間可以自由使用,建議你將 scrapbook 的資料放在 fat32 比較可靠,因為 linux 對 ntfs 的寫入支援,直到 2007 才出現 ntfs-3g 的穩定版,而對於 fat 的支援已經出現很久了,應該比較成熟。
  • 如果你只剩 ntfs 分割區可使用,那也沒關係,但因為需要使用 ntfs-3g,所以 Linux 核心必須至少大於 2.6.20,或者將 FUSE kernel driver 升級到安全的版本(給 Linux Kernel 2.6.9 版之後的核心使用的 Fuse Package)。
  • 對於 ntfs 的設定,我尚在實驗中,目前大致上可用,但穩定性仍需要一段時間考驗。我的經驗是,全文搜尋的時候,有時會停住,不知是 scrapbook 本身的 bug 還是我的 scrapbook 資料太多的緣故。

當 scrapbooks 位於 fat32 磁區時

  1. 編輯 /etc/fstab (需要 root 權限),加入這一行 (以下都在同一行哦!)
  2. /dev/hda5 /media/d vfat defaults, codepage=950, iocharset=utf8, user, umask=0027, uid=1000, gid=1000, noauto 0 0

    • /dev/hda5 是 scrapbook data 所在的磁碟分割區,需要依你自己的系統作調整。
    • /media/d 是掛載點,一樣,需要依你自己的系統作調整。
    • codepage=950,iocharset=utf8 是讓繁體中文可以正常顯示的設定。
    • user 是告訴 linux:任何人都可以掛載這個 partition,但只有該人才可 unmount 這個 partition。
    • umask 設定是讓使用者有 rwx 的權限,使用群組有 r-x 的權限,其他人沒有任何權限。
    • uid, gid 是指定掛載的 partition 的擁有者的 uid, gid,如果沒有指定,預設會用目前 process 的 uid, gid。如果你設了 user 選項,讓其他人可以掛載你的 scrapbook 所在的 partition,那麼其他人在使用電腦時若掛載了你的 scrapbook partition,partition 的 uid, gid 就會變成其他人的,那麼他就可以讀取/修改你的 scrapbook 了。所以如果我們指定了 user 選項,但不想讓人隨意動你的資料,最好也指定 uid, gid。在這裡,應該把 uid, gid 指定為你的 Linux 使用者的 uid, gid。(當然你也可以自己設定 group 來管理,這個我就不講了)
    • noauto 如果開機時不想讓系統自動掛載,要加上此選項。
  3. 重新掛載 /media/d 即可。

當 scrapbooks 位於 ntfs 磁區時

  1. 安裝 ntfs-3g
  2. 編輯 /etc/fstab,選項類似 vfat,就不再解釋了。要注意的是:這裡沒有 iocharset,改用 locale。
  3. /dev/hdb5 /media/d ntfs-3g defaults, locale=zh_TW.UTF-8, user, umask=0027, uid=1000, gid=1001 0 0

    • 如果不想自動掛載,可在 defaults 那串再加上 noauto 選項。
    • 另外有一點特別注意,mount 與 ntfs-3g 的配合還有點問題,所以目前 user 選項在此無效,仍必須有 root 權限才能掛載 ntfs-3g 的磁區。我們都知道,scrapbook 需要將資料寫入硬碟,但是,root 掛載的磁區,一般使用者要怎麼寫入呢?用 root 去跑 firefox?當然不用啦!把掛載磁區變成使用者的就可以了,所以在使用 ntfs 的情況下,這裡一定要設 uid,而且 umask 不能擋掉使用者 w 的權限哦!