A Simple Memo Program Using Zenity

用 Zenity 做簡易的 Memo 程式

【摘要】敘述將 Zenity 的文字對話框當成簡易的文書程式。


【目錄】

    【前言
    【Zenity 的通用選項
    【文字對話框 –text-info 的選項
    【原理
    【指令檔
    【後語

【前言】

一、Linux 系統大多有 Zenity 程式。它主要是用來顯示對話框,如:月曆、選檔、選色、輸入框等,多達十五種。

其中的 --text-info (文字對話框)是用來顯示文字訊息。雖然可用在「是否願意接受版權」等場合,但因為可以讀取檔案並編輯內容,所以能當成簡易的備忘錄。


二、本文曾發表在 Google 的 Blogger,近日再次測試修改,分享於此。


三、以下先介紹 Zenity 的通用選項,再談文字對話框 --text-info 的選項,最後解釋所使用的 BASH 指令。


zenity-memo-demo

【Zenity 的通用選項】

--title=TITLE
對話框標題

--window-icon=ICONPATH
視窗圖示

--width=WIDTH
對話框之寬

--height=HEIGHT
對話框之高

--timeout=TIMEOUT
自動關閉的秒數


【文字對話框 –text-info 的選項】

--filename=FILENAME
讀取的檔案

--editable
令可更改內容

--checkbox=TEXT
勾選框旁顯示的文字,例如:我已閱讀並接受條件

--ok-label
[OK] 按鈕的標籤

--cancel-label
[Cancel] 按鈕的標籤


【原理】

一、這個文字對話框雖然可以修改內容,但沒有儲存的功能,所以必需想個變通的方法。

此對話框有兩個按鈕:[Cancel] 和 [OK]。

  • 按 [Cancel] 會關閉對話框並傳回 1,存在 $?(離開狀態變數,exit status variable)。
  • 按 [OK] 也會關閉對話框,但會在虛擬終端機顯示目前全部的內容,而 $?=0

利用這個功能,我們可以檢查 $? 是否為 0。如果是,就將顯示的內容重新導向到檔案,這樣就可以儲存了。


二、假設備忘錄檔名是 zenity.memo,放在自家的 Documents 目錄中。

  1. 先將要在虛擬終端機顯示的內容重導至系統暫存目錄 /tmp/。
  2. 然後檢查 $? 是否為 0。
  3. $?=0,用暫存目錄的檔案覆寫 $HOME/Documents/zenity.memo。

注意:不能直接重導至 zenity.memo,不然會被清空。


【指令檔】

#!/bin/bash

 # 定義 memo 的預設檔
DMEMO=$HOME/Documents/zenity.memo

 # 顯示選檔對話框,可另選他檔
MEMO=$(zenity --file-selection --filename=${DMEMO} --save)
 # --file-selection:選檔對話框
 # --filename:預設檔或目錄
 # --save:開啟儲存模式

 # 若在選檔對話框按 [Cancel] 按鈕或按鍵盤 [Esc] 鍵,用預設檔
 # 若未選他檔,直接按 [OK] 按鈕也是,因已預選
if [ $? -eq 1 ] ; then MEMO=${DMEMO} ; fi

 # 開啟 memo
 # 此處將原本的 [OK] 按鈕改名為 [儲存],而 [Cancel] 改為 [取消]
 # 結束時,若選 [儲存],將內容導至暫存檔 /tmp/zenity.tmp
zenity --text-info --title="Zenity Memo - $(basename ${MEMO})" --filename=${MEMO} \
--ok-label "儲存 [Ctrl+Enter]" --cancel-label "取消 [Esc]" \
--editable --width=400 --height=300 > /tmp/zenity.tmp
 # --text-info:文字對話框
 # --title:視窗標題,上面設為檔名
 # --filename:顯示此檔內容
 # --ok-label:設定 [OK] 按鈕的標籤
 # --cancel-label:設定 [Cancel] 按鈕的標籤
 # --editable:容許修改內容
 # --width:視窗寬度
 # --height:視窗高度

 # 將內容存回原檔
if [ $? -eq 0 ] ; then cat /tmp/zenity.tmp > ${MEMO} ; fi

【後語】

一、可以設個快捷鍵來執行這個指令檔。

二、不用另外安裝備忘錄/便條程式,將系統有的程式稍微變通一下就可以用了,是本文的重點。


發表留言