Build pcmanfm-qt in Ubuntu trusty

Just summary build steps.

First, you need to install these packages: qt5-default, qtchooser, qt5-qmake, appmenu-qt5, qtdeclarative5-dev, qttools5-dev, qttools5-dev-tools, libqt5x11extras5-dev, libglib2.0-dev, libgio2.0-cil-dev, libfm-dev, libmenu-cache-dev

Then clone pcmanfm-qt from https://github.com/lxde/pcmanfm-qt

Enter pcmanfm-qt directory, type: cmake -G “Unix Makefiles”, then run: make && make install

After installation, you need to add a file “x86_64-linux-gnu-local.conf” in /etc/ld.so.conf.d and put “/usr/local/lib/x86_64-linux-gnu/” in it.  Run sudo ldconfig to make the setting available.

猜編碼、轉換編碼與簡繁轉換

猜編碼,可以使用 enca 指令。安裝可以用 sudo apt-get install enca ,要猜的時候,就用 enca your_file 。除了會顯示檔案內容所使用的編碼名稱之外,也會顯示所使用的換行字元是 CR 或 CRLF 。

轉換編碼,可以用 iconv ,一般不需要特別安裝就會有了,真要安裝的話,用 sudo apt-get install libc-bin ,使用方法則是 iconv -f from_code -t to_code -o new_file your_file ,-f from_code 是指定 your_file 的編碼,-t to_code 是新檔案的編碼,-o new_file 則是要輸出的新檔案。例如:iconv -f big5 -t utf-8 -o new_file.txt your_file.txt

要省麻煩的話,最佳的神器是 madedit ,不過這個專案停止維護一段時間了,要使用的話,就得有點 C/C++ 的底子,自己下載原始碼來編譯。一般的文字編輯軟體或 IDE 也可以用啦,只是就沒 madedit 那麼好用了。

簡繁的轉換,在瀏覽器 (Firefox/Chrome) 上可以用「新同文堂」,指令的話可以用 opencc :

  • 簡轉繁:opencc -i old_file -o new_file -c /usr/lib/x86_64-linux-gnu/opencc/zhs2zhtw_p.ini
  • 繁轉簡:opencc -i old_file -o new_file -c /usr/lib/x86_64-linux-gnu/opencc/zht2zhs.ini

這邊比較讓人困惑的地方大概就是 -c 的設定檔,設定檔定義簡轉繁或繁轉簡的動作(也可以轉成香港用字),而這些設定檔則是被包在 libopencc1 裡,用 dpkg -L libopencc1 就可以看到了。

以上都是在 ubuntu 14.04 裡使用,其他 distro 應該也是大同小異,指令一樣,就套件名稱不同而已。

LTS Enablement Stacks – trusty to utopic

要把 trusty 的 kernel 跟 xserver 升級到目前 utopic ,可以參考這篇 Kernel/LTSEnablementStack – Ubuntu Wiki

其實就是 apt-get install 相關的 package 而已:sudo apt-get install –install-recommends linux-generic-lts-utopic xserver-xorg-lts-utopic libgl1-mesa-glx-lts-utopic libegl1-mesa-drivers-lts-utopic

伺服器版的話,因為沒有 xserver 的牽絆,只要 sudo apt-get install –install-recommends linux-generic-lts-utopic 就可以。

要特別注意的,就是在安裝過程會移除掉某些 package,這裡要特別留意,在安裝前 apt 會有事先提示。以我來說,skype 、google earth 跟 wine 都被移除掉,所以在安裝完重開機以後,要記得把這些軟體裝回去。

這次升級的意外發現是 Google earth 不需要額外處理就有中文顯示了,終於啊…

KeePass / KeeFox

花了一點功夫才搞定,表示應該紀錄一下。

先安裝 KeePass:sudo apt-get install keepass2 mono-dmcs libmono-system-management4.0-cil

然後透過 Firefox 的套件管理安裝 KeeFox,重新啟動 Firefox 以後會有提示,說要複製 KeePassRPC.plgx 到 KeePass 的資料夾,我就是卡在這裡,這裡就是要將他提示的路徑的 KeePassRPC.plgx 複製到 /usr/lib/keepass2 下,這個檔案其實是 keepass2 的 plugin,主要功用是啟動一個 server,讓 KeeFox 能跟 keepass2 溝通。

啟動 keepass2,建立新的資料庫,設定 Master password 或設置密碼等等。回到 KeeFox 選項裡,設置資料庫的路徑(看存在哪裡)、keepass2 的路徑 (/usr/bin/keepass2),這樣就大功告成了。

缺點就是,keepass2 要開著… >_<

參考資料:

修改 EXIF 的命令:exiftool

數位相機的日期設定錯了,所以拍出來的照片裡的日期也是錯誤的,就想說不知道有沒有工具可以修正。

找了一下,看到可以用 exiftool:

此外,也可以用 jhead ,視覺化介面可以用 picasa (雖然現在 Google 好像沒繼續開發了)。

修改的指令大致就是這樣子,這是要往後平移兩天的:exiftool “-ExifIFD:CreateDate+=0:0:2 00:00:0” your_photo.jpg

然後也要記得改 -ExifIFD:DateTimeOriginal 跟 -IFD0:ModifyDate 。

要查看目前的 EXIF 資訊,一樣也可以用 exiftool :exiftool -s -a -u -g1 your_photo.jpg

在 shell script 判別發行套件

一般來說,可以用 lsb_release -i ,但是如果沒安裝 lsb-release 的話,就不會有這個指令可以用;uname 只會提供架構、核心版本等資訊;/etc/issues 的話,每個發行套件對這個檔案的內容都不盡相同,難以用規則來解析。

這時候倒是可以利用 /etc/os-release ,我檢查了 Arch Linux、Ubuntu、Raspbian、Debian 幾個發行套件,發現都會有這個檔案。在檔案裡,就有不少資訊可供判別,至少都會有 ID 跟 NAME ,有些則會多了 ID_LIKE 。

  • ID 是標識,以 Ubuntu 為例,ID=ubuntu
  • NAME 是發行套件名稱,以 Ubuntu 為例,NAME=”Ubuntu”
  • ID_LIKE 是描述從哪個發行套件繁衍出來的,以 Ubuntu 為例,ID_LIKE=debian

透過 . /etc/os-release 或 source /etc/os-release ,就可以藉著使用 ID、NAME、ID_LIKE 這些變數來判別發行套件了。

參考自:command line – How to get Ubuntu distribution’s full code name? – Ask Ubuntu

minidlna + rmvb 與 archlinux pkg

minidlna 預設是不找 rmvb 檔案的,網路上有人已經加上 patch (让 minidlna 支持 rmvb、gb2312 mp3 标签) 了,只是那是在 1.0.23 上做修改。現在已經 1.1.4 了,所以我參考了它的 patch,幫 1.1.4 也做了一次。

另外就是第一次在 Arch Linux 上做 package,基本上有 PKGBUILD 檔案就沒啥問題了。minidlna 的 PKGBUILD 可透過 git 下載:git clone git://projects.archlinux.org/svntogit/community.git ,接著就是修改 PKGBUILD,我改了以下項目:

  1. 在 source 添加新檔案,就是新的 patch 檔案
  2. 因為有新檔案,md5sums 也需要用 md5sum 去取得 patch 檔案的校驗碼,然後填到這裡
  3. prepare() 的最後,加上 patch -i $srcdir/999-realmedia-support.patch 。
  4. 改 pkgrel ,這是方便自己辨識用,反正改一個比原來大的數字就可以。

修改完以後,執行 makepkg ,就可以得到 .xz 的檔案,用 pacman -U xxx.xz 就可以安裝了。

後記:重新啟動 minidlna 之後,發現 rmdb 的檔案還是沒有納入。根據 Log 去追程式,才知道 minidlna 是拿之前產生好的 sqlite3 資料庫裡的資料去回應,知道原因之後,就好解決了,試著去 touch 所有的 rmvb 檔案,觸發 minidlna 的 inotify ,這樣 minidlna 就會把這些檔案納入資料庫裡了。Log 的層級可以在 minidlna.conf 裡修改,例如 log_level=general=debug,artwork=info,database,inotify,scanner,metadata,http,ssdp,tivo=warn ,而程式裡輸出 Log 的函式則是 DPRINTF。

BubbleUPnPServer

Server 部份是免費,主要是輔助 app transcoding (轉換格式)用的。
Windows/Linux 都可以安裝,安裝指南:http://bubblesoftapps.com/bubbleupnpserver/

依照指南,有提供 Ubuntu/Arch Linux 以及其他 distro 的安裝方法,在 Arch Linux 下要先裝 ffmpeg,這是用來轉換格式用的。用 yaourt -Ss 搜索 bubbleupnpserver,就可以找到,但結果顯示 out of date ,後來我就沒有用 yaourt 來安裝。
後來直接拿 tarball 來手動安裝,tarball 裡有提供 script 與 jar,這很簡單,Java 跨平台,再搭配 supervisord 就可以在開機時自動啟動。

因為 BubbleUPnPServer 並不是 Media Server,它算是一個 Proxy Server,所以不會跟 minidlna 衝突,但你用 BubbleUPnP app 找網路上 DLNA Server 時,會看到兩個,一台是 BubbleUPnPServer,一台是 MiniDLNA Server。指南裡是說,他可以幫你修正原來 DLNA Server 傳錯的資訊。

BubbleUPnPServer 啟動以後,可以用 Web 進去修改設定,使用的 Port 有兩個:

  • udp 1900
  • TCP 58050 (http), 58051 (https)

License 也是一個 app,在 Google Play 上可以找到,是個需要付費的 app,關鍵字一樣是 BubbleUPnP ,或是用 com.bubblesoft.android.bubbleupnp.unlocker 來找就能找到。

在 Linux 下摹擬 Serial Port

之前試 java rxtx 函式庫時找到的方法,雖然在 Linux 下都是操作檔案,不過檔案跟真的 Serial port 有點差異,後來我是用 socat 指令來摹擬。

socat -d -d pty,raw,echo=1 STDOUT

這行指令會在 /dev/pts 下建立一個 node,假若是 PTY is /dev/pts/7,那麼就 sudo ln -s /dev/pts/7 /dev/ttyS0 ,這樣 /dev/ttyS0 就可以當作 Serial Port 來用了,可以設 baud rate 等等 serial port 特有的參數。接著執行程式,可以在執行 socat 的 console 看到程式寫到 serial port 的訊息。

要對接也是可以的,這時要用:

socat -d -d pty,raw,echo=1 pty,raw,echo=1

這會在 /dev/pts 下建立兩個 node。

備註:

  1. 要用 ln 建 symbolic link 的原因是 rxtx 只檢查 ttyS*, ttySA*, ttyUSB* 資料來源