2012/12/04

自建 Ubuntu 的動態 Wallpaper

Ubuntu 真的好用,當然也有缺點。其中之一,就是想對桌面作一些調整時會比較麻煩。譬如,動態 Wallpaper 是既有的功能,但你想建立自己的版本,就要花一點心思。發行較久的 Ubuntu,可能已經有人開發 GUI 來簡化這個程序。但這套 GUI 又不見得可以適用於最新的 Ubuntu 發行版。我在 Ubuntu 12.10 就遇到這個問題。底下是我的解決方法。

首先,建立動態 wallpaper 的定義,譬如:~/wallpaper.xml:
<background>
  <starttime>
    <year>2003</year>
    <month>6</month>
    <day>14</day>
    <hour>05</hour>
    <minute>30</minute>
    <second>00</second>
  </starttime>
  <static>
    <duration>1795.0</duration>
    <file>/path/to/picture-1.png</file>
  </static>
  <transition>
    <duration>5.0</duration>
    <from>/path/to/picture-1.png</from>
    <to>/path/to/picture-2.png</to>
  </transition>
  <static>
    <duration>1795.0</duration>
    <file>/path/to/picture-2.png</file>
  </static>
  <transition>
    <duration>5.0</duration>
    <from>/path/to/picture-2.png</from>
    <to>/path/to/picture-1.png</to>
  </transition>
</background>
其中:
  • 可以是過去或未來。若是未來,就是等到那個時間才會更換 wallpaper;若是過去,設好就馬上生效。
  • 就是設定要顯示哪一個圖形?要顯示多少秒數?
  • 就是設定從一個圖形轉換到另外一個圖形要轉換多久?轉換到哪一個圖形?
  • 要成對出現,而且要設成可以頭尾連接。
Wallpaper.xml 設定檔完成之後,就要告訴系統以此作為 wallpaper:
gsettings set org.gnome.desktop.background picture-uri 'file:///path/to/wallpaper.xml'

2012/08/02

將 HTML 轉成 PDF 檔 (支援中文)

在 Ubuntu 上將 HTML 轉成 PDF 檔非常簡單。用 Firefox 或 Chromium 打開這個 HTML 檔 (或連上該網站),然後「列印至 PDF 檔案」即可。不過,你若在其他平台,或想自動完成這項工作,就比需要有其他工具了。

網路上這類工具還不少,不過不是安裝複雜就是不支援中文。在這裡推薦一套安裝簡單又好用的轉換工具,wkhtmltopdf

安裝有多簡單?下載之後解開即可 (我只在 Ubuntu 上試過)。

有多好用?這類轉換工具對 HTML 檔的處理能力參差不齊,若加上需要支援中文,就更難找到讓人滿意的解決方案。但 wkhtmlpdf 是以 WebKit/QT 為核心,而 WebKit 是 Apple Safari 和 Google Chrome 的網頁處理器,所以處理能力毋庸置疑。

最簡單的執行範例:
wkhtmltopdf http://news.chinatimes.com/ news.pdf
若你想加上封面、頁首、頁尾等也可以,請自行參閱 wkhtmltopdf -H 的說明。

新版 Ubuntu 使用者注意事項

直接下載上述網頁編譯完成的 binary 在較新版本的 Ubuntu,譬如 12.04,似乎無法執行:
QSslSocket: cannot call unresolved function SSLv23_client_method4%
QSslSocket: cannot call unresolved function SSL_CTX_new
QSslSocket: cannot call unresolved function SSL_library_init
QSslSocket: cannot call unresolved function ERR_get_error
QSslSocket: cannot call unresolved function SSLv23_client_method
QSslSocket: cannot call unresolved function SSL_CTX_new
QSslSocket: cannot call unresolved function SSL_library_init
QSslSocket: cannot call unresolved function ERR_get_error
解決辦法是下載 source 自己編譯。不要擔心,編譯非常簡單:
$ sudo apt-get install qt4-dev-tools
$ wget http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.11.0_rc1.tar.bz2
$ tar xvjf wkhtmltopdf-0.11.0_rc1.tar.bz2
$ cd wkhtmltopdf-0.11.0_rc1/
$ qmake && make
$ sudo apt-get make install

Keywords: html2pdf, html-to-pdf, web2pdf, web-to-pdf

2012/07/11

Ccache 的陷阱

Ccache 簡單說是 C/C++ 編譯加速器。開發 Android 這類大型專案的人,完整重編常常需要一至數個小時,所以很有可能會用這個工具。若開發環境不是你建立的,你甚至有可能不知道你用了這個工具。

Ccache 有何陷阱?就是 cache 住的資料有錯的時候。若你發現明明沒改過的程式,昨天還可以編譯成功,今天就一直有問題。很有可能就是掉入這個陷阱了。

一般不會發生這種問題,發生的原因通常是跑 cache 的機器不正常關機,造成 cache 毀損。解決這個問題的簡單方法是將 cache 完全清乾淨。

2012/07/06

xdg-open

Windows 有個命令列指令 start。在此指令之後可以接執行檔檔名,也可以接其他各式各樣的文件檔,start 會自動找出對應的程式開啟此文件。

聽說 MacOS 也有類似的指令,open。那 GNU/Linux 上呢?當然也有,不過比較不好記:xdg-open

2012/01/20

Oneiric Ocelot 的 mpeg4ip-utils 套件

Ubuntu 更新到 Oneiric Ocelot 之後,有些套件已經不支援了,例如 mpeg4ip-utils。臨時有急用,所以只好跟 Natty Narwhal 借。

方法是從 https://launchpad.net/ubuntu/+source/mpeg4ip 下載以下套件:
  • libmp4v2-0_1.6dfsg-0.2ubuntu9_amd64.deb
  • libmpeg4ip-0_1.6dfsg-0.2ubuntu9_amd64.deb
  • mpeg4ip-utils_1.6dfsg-0.2ubuntu9_amd64.deb
然後用 dpkg 依序安裝即可:
dpkg -i libmp4v2-0_1.6dfsg-0.2ubuntu9_amd64.deb
dpkg -i libmpeg4ip-0_1.6dfsg-0.2ubuntu9_amd64.deb
dpkg -i mpeg4ip-utils_1.6dfsg-0.2ubuntu9_amd64.deb