لینوکس برنامههای خطفرمانی کاملی دارد. اما متاسفانه بیشتر کاربران از خط فرمان زیبای لینوکس گریزانند! هدفم معرفی زیباییهای خط فرمان لینوکس و آشتی دادن کاربران با این محیط نیست اما برنامهای را معرفی میکنم که به سادگی خط فرمان را با محیط گرافیکی (GUI) آشتی میدهد. برنامه zentiy!
برنامه زنیتی با استفاده از توابع GTK+ دیالوگهایی را برای ارتباط با کاربر رسم میکند. برنامه نویس با استفاده از این دیالوگها میتواند اطلاعاتی را در اختیار کاربر قرار دهد و یا اطلاعاتی را از کاربر بگیرد.
بهتر است به جای تاریخچه و تعریف بیشتر با چند مثال عملی با این برنامه آشنا شویم. اما قبل از آن بهتر است با برنامههای CUI و یا TUI و تفاوت این برنامهها با CLI آشنا شویم. برنامههای CUI و CLI هر دو در خط فرمان اجرا میشوند اما تفاوت این دو در این است که:
در برنامههای CLI کاربر دستور مورد نظر خود را به همراه پارامترهای آن در یک خط وارد میکند (ورودی استاندارد) و برنامه پس از اجرا (عموما) یک خروجی استاندارد نمایش میدهد. برنامه ls و یا who برنامههای CLI اند.
برنامههای CUI و یا Character user interface به برنامههایی گفته میشود که ارتباط دوطرفه و تعاملی با کاربر دارد. ورودی و خروجی این برنامهها استاندارد نیست . برنامههای top و pppoecong برنامههای CUI هستند.
اما دلیل معرفی این دو: هدف ما این است که اطلاعات را با استفاده از zenity از کاربر دریافت کنیم و این اطلاعات را به برنامه در ترمینال ارسال کنیم و برنامه پس از پردازش اطلاعات خروجی پردازش شده را برای نمایش به برنامه zenity ارسال کند. از آنجا که برنامههای CUI خروجی و ورودی استاندارد ندارند تنها برنامههای CLI را میتوان با zenity استفاده کرد. و اما مثالها:
یک Hello Word! ساده:
zenity –info –text="azadrah.net!"
و یا حتی
zenity –info –text="for more information click here (azadrah.net)\\!"
دیالوگ سئوال:
zenity –question –text "Are you sure you want to reboot?"; if [ $? -eq 0 ] ; then reboot ; fi
ابتدا یک دیالوک سئوال زنیتی میسازیم نتیجه در $? دخیره شده است در قسمت بعدی بررسی میکنیم که آیا مقدار برگشتی از دیالوگ برابر 0 بوده است یا خیر (صفر به معنی بله و یک به معنی خیر). اگر جواب بله بود ریبوت میکنیم.
دیالوگ لیست:
ls|sort|zenity –list –title="select files to play" –text="choose" –column="select" –column="name" –separator="|" –checklist –multiple
با دستور ls محتویات دایرکتوری جاری را لیست میگیریم خروجی را به دستور sort برای مرتب کردن میدهیم و خروجی را به دستور زنیتی پایپ میکنیم. خروجی دیالوگ زنیتی بصورت استاندارد به خط فرمان فرستاده میشود که میتوان این خروجی را برای اجرا به برنامه mplayer داد.
دیالوگ ورود اطلاعات:
zenity –entry –title="enter name" –text="name:" >> test.txt
یک دیالوگ ورود اطلاعات میسازیم پس از دریافت نام در فایل text.txt ذخیره میکنیم. نامها زیر هم در فایل ذخیره میشود.
دیالوگ دریافت تاریخ:
zenity –calendar –text="date of birth:" –title="enter date of birth" >> test.txt
دیالوگ نمایش خطا و هشدار و اخطار:
zenity –error –text="KDE is a bugware" –title="kbug"
zenity –notification –text="it's time to sleep, my love" –title="sleep time\\!"
دیالوگ انتخاب فایل (دایرکتوری):
zenity –file-selection –multiple –separator="|" –file-filter="*.mp3" 2> /dev/null; echo $?
دیالوگ درصد پیشرفت:
(echo "30"; echo "# progress 30 %" ; sleep 2;echo "60"; echo "# progress 60%";sleep 2;echo "90"; echo "# progress 90%" ; sleep 1;echo "100"; echo "# done";)|zenity –progress –title="sample progress" –text="progress …" –percentage=0
پیشرفت کار را بصورت گرافیکی نمایش میدهد.
دیالوگ انتخاب رنگ:
gconftool-2 –set "/apps/gnome-terminal/profiles/Default/background_color" –type string `zenity –color-selection`
رنگ پسزمینه گنوم ترمینال را در گنوم دو تغییر میدهد.
دیالوگ درجه:
mplayer -volume `zenity –scale` file.mp3
تغییر صدای برنامه mplayer
با استفاده از دو دیالوگ ورود اطلاعات و تاریخ میتوانیم یک فرم دریافت اطلاعات برای یادآوری تاریخ تولد دوستان بسازیم.
(zenity –entry –title="enter name" –text="name:" ; zenity –calendar –text="date of birth:" –title="enter date of birth")| column >> test.txt