pretty code

2021年7月8日 星期四

NickelMenu 初體驗

NickelMenu 是一個由高手開發的 Kobo 小工具,它可以增加自定義的選單在 Kobo 的閱讀器上,另外本身還內建一些功能,我們可以藉由它來執行支援的任務,比如說啟動程式、重新掃瞄書籍、重開機以及關機等等。

對於想在 Kobo 閱讀器上開發程式的人,我強烈建議要裝,只要照著範例啟動 daemon,便可以 Telnet 進去閱讀器,對於 debug 自己寫的程式非常方便,另外,我還建議使用 Golang 來開發,如果只是用到原生的 package,一般來說編譯不會有什麼問題,如果有用到第三方的 package,只要不是 binding 系統的 library 或其他 C 語言,我想應該也沒有什麼大問題。

下面是我的編譯設定:

@echo off

SET PATH=%PATH%;C:\Go\bin
SET GOPATH=%CD%
SET GOOS=linux
SET GOARCH=arm
SET GOARM=7

至於 NickelMenu 設定,我是使用這兩個範例來方便我 Telnet 進去閱讀器,一個會顯示目前 IP,另一個則是開啟 Telnet daemon。


menu_item :main    :IP Address     :cmd_output         :500:/sbin/ifconfig | /usr/bin/awk '/inet addr/{print substr($2,6)}'
menu_item :main    :Telnet         :cmd_spawn          :quiet:/bin/mount -t devpts | /bin/grep -q /dev/pts || { /bin/mkdir -p /dev/pts && /bin/mount -t devpts devpts /dev/pts; }
  chain_success                    :cmd_spawn          :quiet:/usr/bin/pkill -f "^/usr/bin/tcpsvd -E 0.0.0.0 1023" || true && exec /usr/bin/tcpsvd -E 0.0.0.0 1023 /usr/sbin/telnetd -i -l /bin/login
  chain_success                    :dbg_toast          :Started Telnet server on port 1023.

據我在 Elipsa 實測的結果,除了開啟藍牙時,終端機視窗操作變得緩慢外,其他時候的操作我都覺得可以接受,不過因為 Kobo 很喜歡自己偷偷關掉 Wi-Fi,故必須在開發者模式中設定強制讓 Wi-Fi 總是開啟,不然可能會 Telnet 一半就無故斷線,NickelMenu 也很貼心的在文件中增加了呼叫方式。


下面則是我目前最後的版本,橘線以上的都是文件裡的範例,沒有什麼好說的,但我比照它 toggle 的方式,寫了一個方便我啟動 KoboPageTurner 的項目。


NickelMenu 有類似 chain 的執行方式,故可以用它來實現程式語言中的 if else 語法,一樣顏色的行數表示執行先後有關聯性。

01. 表示要 kill KoboPageTurner 的 Web Server。
02. 假設成功,表示我們之前有啟動過 Web Server,故我們會跳過下面 3 行敘述不執行。
03. 第 1 行執行失敗,表示未啟動過,故啟動 Web Server。
04. 第 3 行執行失敗,跳出對話框提醒。
05. 結束連鎖執行 chain。
06. 第 2 行成功,跳到這裡,顯示砍掉程式成功。

你瞧,NickelMenu 是不是一個很聰明的程式,我在 UEFI  Shell 下也有簡單寫一個類似架構的小工具,可以幫忙同事做一些測試,只要在清單中列出並排序要執行的 script,就可以依序去做測試,概念上完全相同 NickelMenu,只是沒處理那麼多細節,要繼續執行或是中斷執行都由每一個 script 自行去決定,這樣的好處是架構不需搞那麼複雜。

3 則留言:

Ting 提到...

你好:我想使用羅技R500來翻頁elispa,目前安裝好NicklMenu

但從「只要照著範例啟動 daemon」這句話後面我就看不懂要怎麼操作

請問將elispa連接電腦嗎?要如何設定讓elispa永遠開啟藍牙?

抱歉!完全是門外漢,感謝你的協助!

tylpk 提到...

您好, Elipsa 本來就有支援 R500,所以你不需要安裝 NicklMenu,NicklMenu 算是一個第三方程式,是為了啟動別人為 Kobo 寫的小程式或是可以快速設定一些參數等用途。

以您的需求來說,只要在正常 Kobo 設定中連接藍牙即可,只是 Kobo 藍牙跟 Wi-Fi 是連動的而 Kobo 閱讀器會偷偷關掉 Wi-Fi,故會導致藍牙也跟著斷線。

你可以參考這篇開啟開發者模式,就可以強制 Wi-Fi 不斷線,但是確定不用 Wi-Fi 時,選項還是要關閉,不然 Wi-Fi 連線是關不掉的,所以會一直耗電(等到你覺得沒問題,又覺得要設定這個選項很麻煩,這時才需要考慮使用 NickelMenu)。

https://pttstudy.com/book/M.1645326064.A.E9E.html

Ting 提到...

太感謝你了!照著你提供的網頁操作,終於順利用R500看完一本漫畫,差點以為R500的錢要投入水中
題外話,發現我拼錯Elipsa,真是不好意思。
非常謝謝你的協助,我先這樣用用看,有新的需求再去研究NicklMenu。