Cách hiển thị hộp thoại GUI trong tập lệnh bash bằng Zenity

theanh

Administrator
Nhân viên
Chúng ta đều biết rằng các tập lệnh bash Linux là một thế mạnh thực sự của Linux. Chúng ta thường muốn hiển thị giao diện người dùng đồ họa (GUI) trong các tập lệnh của mình để tương tác với người dùng dễ dàng hơn. GUI làm cho bất kỳ tập lệnh nào thân thiện với người dùng hơn và đẹp hơn.

Đối với GTK trong các tập lệnh shell, có nhiều tùy chọn và công cụ có sẵn trong Linux.

Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách sử dụng Zenity để hiển thị các hộp thoại GUI trong các tập lệnh Bash.

Zenity là một ứng dụng nguồn mở để hiển thị GUI đơn giản trong các tập lệnh shell. Nó làm cho các tập lệnh thân thiện với người dùng hơn bằng cách hiển thị các hộp thoại GTK+. Zenity là một công cụ dòng lệnh tiện dụng cho tập lệnh shell hiện đại. Zenity dễ sử dụng và là ứng dụng đa nền tảng.

Điều kiện tiên quyết​

Người dùng sudo có quyền root.

Cài đặt Zenity​

Zenity là một phần của màn hình nền GNOME và theo mặc định, nó được cài đặt trên hầu hết các bản phân phối Linux. Bạn có thể xác minh cài đặt Zenity trên hệ thống của mình bằng cách thực hiện lệnh sau vào thiết bị đầu cuối.
Mã:
zenity --version

Nếu Zenity chưa được cài đặt trên hệ thống của bạn, bạn có thể cài đặt bằng lệnh Apt, dnf hoặc pacman.

Đối với hệ thống chạy Ubuntu/Debian:
Mã:
sudo apt-get install zenity
Đối với hệ thống chạy RedHat:
Mã:
dnf install zenity
Đối với hệ thống chạy Arch:
Mã:
pacman -S zenity

Tùy chọn chung của Zenity​

Có một số tùy chọn chung có thể sử dụng độc lập với Zenity. Các tùy chọn chung là --title, --window-icon, --width, --height, --timeout

Bạn có thể sử dụng tùy chọn ---title để chỉ định tiêu đề cho cửa sổ hộp thoại.

Bạn có thể sử dụng tùy chọn --window-icon để chỉ định biểu tượng sẽ được sử dụng làm biểu tượng cho Hộp thoại Zenity.

Không chỉ vậy, bạn có thể đặt chiều rộng và chiều cao cho Hộp thoại Zenity bằng cách đặt tùy chọn --width và --height trong lệnh Zenity.

Bằng cách sử dụng tùy chọn --timeout, bạn có thể đặt thời gian chờ cho hộp thoại, sau đó hộp thoại sẽ tự động đóng lại.

Hộp thông báo Zenity​

Bạn có thể tạo một số hộp thoại thông báo GUI cơ bản và đẹp mắt bằng lệnh Zenity đơn giản từ thiết bị đầu cuối.

Bốn loại hộp thoại Thông báo có sẵn trong Zenity.

  • Thông tin
  • Lỗi
  • Câu hỏi
  • Cảnh báo

1. Hộp thoại thông tin​

Bạn có thể tạo Hộp thoại thông tin bằng cách chạy lệnh sau trong terminal:
Mã:
zenity --info --text="Bản cập nhật phần mềm khả dụng." --width=500


2. Hộp thoại lỗi​

Thực hiện lệnh sau để hiển thị hộp thoại lỗi
Mã:
zenity --error --text="Lỗi trong quá trình cài đặt" --title="Lỗi" --width=500 --width=200


3. Hộp thoại câu hỏi​

Bạn có thể dễ dàng yêu cầu trả lời câu hỏi Có hoặc Không bằng cách thực hiện lệnh sau:
Mã:
zenity --question --text="Bạn có muốn khởi động lại máy tính không?" --width=200

Bạn có thể sử dụng Zenity Question Dialog trong tập lệnh shell như sau:
Mã:
#/bin/bash
touch demo.txt
if zenity --question --title="Xác nhận xóa" --text="Bạn có chắc chắn muốn tệp demo.txt không?" --no-wrap
 then
 rm demo.txt
 zenity --info --title="Thành công" --text="demo.text đã bị xóa" --no-wrap
fi

4. Hộp thoại cảnh báo​

Mã:
zenity --warning --title="Có bản cập nhật" --text="Yêu cầu cập nhật hệ điều hành" --width=200

Thông báo​

Bạn có thể hiển thị Thông báo bằng Zenity.
Mã:
zenity --notification --text "Chào buổi sáng"

Hộp nhập Zenity​

Sử dụng Zenity, bạn có thể tạo các hộp thoại đơn giản lấy dữ liệu đầu vào từ người dùng và hiển thị dưới dạng đầu ra chuẩn.

Sau đây là một số hộp nhập:

Lịch​

Hộp thoại Lịch hiển thị lịch và trả về ngày do người dùng chọn dưới dạng đầu ra chuẩn.
Mã:
zenity --calendar
Mã:
Đầu ra:
17/04/21

Hộp thoại nhập văn bản​

Bạn có thể sử dụng tùy chọn --entry để tạo hộp thoại nhập văn bản. Tùy chọn này rất hữu ích khi bạn muốn yêu cầu người dùng nhập một số văn bản.
Mã:
zenity --entry --title "Thông tin người dùng" --text "Vui lòng nhập tên của bạn"

Hộp thoại danh sách​

Bạn có thể sử dụng tùy chọn --list để tạo hộp thoại nhiều cột, Tại đây, bạn cần nhập Dữ liệu cho hộp thoại danh sách theo từng cột, từng hàng. Bạn có thể sử dụng hộp kiểm hoặc hộp rediobox với hộp thoại danh sách như minh họa bên dưới:
Mã:
zenity --list --title "Chọn bộ xử lý" --radiolist --column "ID" --column="Tên" 1 AMD 2 Intel


Bạn cũng có thể thêm hộp kiểm với tùy chọn --list để chọn nhiều mục.


Mã:
zenity --list --title "Gói" --list --text "chọn các gói bạn muốn cài đặt" --checklist --column "id" --column "Tên" 1 "Google Chrome" 2 "VLC" 3 "Firefox" 4 "GIMP"
Mã:
Đầu ra
Google Chrome|VLC|Firefox

Hộp thoại chọn màu​

Bạn có thể sử dụng tùy chọn --color-selection để lấy giá trị chọn màu từ người dùng.
Mã:
zenity --color-selection --show-palette

Hộp thoại Chọn tệp​

Bạn có thể sử dụng tùy chọn --file-selection để chụp các tệp hoặc thư mục đã chọn làm đầu ra chuẩn. Bạn cũng có thể lưu tệp bằng tùy chọn --file-selection.
Mã:
zenity --file-selection --multiple --filename "/"

Hộp thoại Tiến trình​

Bạn có thể tạo thanh tiến trình đẹp bằng tùy chọn --progress. Tùy chọn này hữu ích nhiều lần khi bạn muốn hiển thị thanh tiến trình hoàn thành ứng dụng hoặc tập lệnh của mình cho người dùng.

Lệnh bên dưới sẽ hiển thị thanh tiến trình tải xuống của bạn.
Mã:
(wget -r --no-parent patch -A.tar.gz http://157.245.99.119/latest/ -P /tmp 2>&1 ) | sed -u 's/.* \([0-9]\+%\)\ \+\([0-9.]\+.\) \(.*\)/\1\n# Đang tải xuống ở \2\/giây, ETA \3/' | zenity --progress --title="Đang tải xuống tệp..." --percentage=1 --pulsate
Để biết thêm tùy chọn tiến trình, hãy chạy lệnh sau vào thiết bị đầu cuối
Mã:
zenity --help-progress
Để biết thêm tùy chọn Zenity, bạn có thể sử dụng man ZenityZenity --help.

Kết luận​

Trong hướng dẫn trên, bạn đã học cách viết một tập lệnh bash để hiển thị hộp thoại GUI bằng Zenity và làm cho tập lệnh Bash thân thiện hơn với người dùng. Hãy thoải mái hỏi tôi nếu bạn có bất kỳ câu hỏi nào.
 
Back
Bên trên