Có một lần, tôi đã tự mình viết một tiện ích-GUI. Nói cách ngắn gọn: Nó tìm kiếm các tệp trong init.d, greps cho các báo cáo trường hợp và cố gắng đoán những gì sẽ được hiển thị khi đang di chuyển.
Có thể nó không hoạt động tốt cho tất cả các dịch vụ, nhưng đối với công việc của tôi (cốc, postgresql, ...) thì đủ.
Là một lưu ý phụ, nó cho thấy cách tự động điều chỉnh cửa sổ của bạn để sàng lọc (tối đa) và kích thước nội dung (chiều rộng, chiều dài).
Đây là:
#!/bin/bash
#
# oetv.sh
# Show all servives in /etc/init.d in a list, and let the user choose how to start it.
#
# (c) 2008 Stefan Wagner, license GPLv3
#
# Search /etc/init.d/ for all executable files
# Get their number, and the maximum name size to produce a fitting window
width=0
height=0
# The font will influence the optimal window size
# But I don't know how to get them.
# Probably depending on windowmanager, desktop, usersettings
function xyFromList
{
anz=0
wmax=0
for file in $1
do
anz=$((anz+1))
len=${#file}
[ $len -gt $wmax ] && wmax=$len
done;
width=$((wmax*9+50))
height=$((anz*26+160))
}
dienstlist=$(ls /etc/init.d/ )
xyFromList "$dienstlist"
dienst=$(zenity --width=$width --height=$height --list --text "Service schalten" --column "Dienst" $dienstlist)
[ "foo"$dienst == "foo" ] && exit
# select options for the service, and display an apropriate window
optionen=$(egrep -h "[a-z]+\)" /etc/init.d/$dienst | sed 's/^[ \t]*//;s/).*/)/;s/#.*//;s/)//g;s/|/ /g' | sort -u)
xyFromList "$optionen"
aktion=$(zenity --width=$width --height=$height --list --text "Service schalten" --column "Befehl" $optionen)
[ "foo"$aktion == "foo" ] && exit
result=$(gksudo /etc/init.d/$dienst $aktion)
zenity --info "$aktion" --text "$result"