Как показать окно графического интерфейса сообщение от bash-скрипт в Linux?
Я пишу несколько маленьких скриптов bash под Ubuntu linux. Я хочу иметь возможность запускать их из графического интерфейса без необходимости в окне терминала для ввода любого ввода или просмотра любого вывода.
до сих пор требуется только ввод пароля для sudo - и gksudo обрабатывает это нормально. Но я еще не нашел простой способ показать окно сообщения. Есть ли какая-то команда "gkmessage"? Я бы предпочел что-то присутствующее в установке Ubuntu по умолчанию, но я не против установки нового пакет при необходимости.
12 ответов:
Я считаю Зениты будет делать то, что вы хотите. Он специально разработан для отображения диалоговых окон GTK из командной строки, и он доступен как Ubuntu package.
Если вы используете
Ubuntuмногие дистрибутивы вnotify-send
команда бросит один из этих хороших скоропортящихся уведомлений в правом верхнем углу. Вот так:
notify-send "My name is bash and I rock da house"
Б. Е. а.прекрасный!
все упоминают Зенит, кажется, есть много других. Смешанный, но интересный список находится в http://alternativeto.net/software/zenity/
во-первых, пример zenity с разметкой форматирования текста, заголовком окна, меткой кнопки.
zenity \ --info \ --text="<span size=\"xx-large\">Time is $(date +%Hh%M).</span>\n\nGet your <b>coffee</b>." \ --title="Coffee time" \ --ok-label="Sip"
gxmessage
gxmessage "my text"
xmessage
xmessage
очень старый, поэтому он стабилен и, вероятно, доступен во всех дистрибутивах, которые используют X (поскольку он распространяется с X). Это настраиваемый через ресурсы X, для тех, кто использует Linux или Unix достаточно долго, чтобы знать, что это значит (.Xdefaults
кому-нибудь ?).xmessage -buttons Ok:0,"Not sure":1,Cancel:2 -default Ok -nearmouse "Is xmessage enough for the job ?" -timeout 10
kdialog
(не проверял)
в PPA
YAD: Zenity на стероидах [отображение графических диалогов из сценариев оболочки] ~ Web Upd8: Ubuntu / Linux blog. Не похоже на диалоги автоматического размера.
echo My text | yad \ --text-info \ --width=400 \ --height=200
более крупный пример
yad \ --title="Desktop entry editor" \ --text="Simple desktop entry editor" \ --form \ --field="Type:CB" \ --field="Name" \ --field="Generic name" \ --field="Comment" \ --field="Command:FL" \ --field="Icon" \ --field="In terminal:CHK" \ --field="Startup notify:CHK" "Application" "Name" "Generic name" "This is the comment" "/usr/bin/yad" "yad" FALSE TRUE \ --button="WebUpd8:2" \ --button="gtk-ok:0" \ --button="gtk-cancel:1"
другим не в стандартных репозиториях Ubuntu
- shellgui
- xdialog
- gtkdialog
вне темы (для терминала)
whiptail --msgbox "my text" 10 20 dialog --msgbox "my text" 10 20
не стесняйтесь редактировать.
The Зениты приложение, кажется, то, что вы ищете.
принимать входные данные от Зениты, вы можете указать переменную и иметь выход Зениты --запись спас его. Это выглядит примерно так:
my_variable=$(zenity --entry)
если вы посмотрите на стоимость в my_variable теперь это будет все, что было набрано в диалоговом окне zenity pop up entry.
если вы хотите дать какую-то подсказку, что пользователь (или Вы) должен войти в диалог, добавить --текст переключатель с меткой, которую вы хотите. Это выглядит примерно так:
my_variable=$(zenity --entry --text="What's my variable:")
Zenity имеет много других хороших вариантов, которые предназначены для конкретных задач, так что вы можете проверить их, а также с Зениты --помочь. Одним из примеров является --календарь опция, которая позволяет вам выбрать дату из графического календаря.
my_date=$(zenity --calendar)
что дает красиво отформатированную дату на основе что пользователь нажал на:
echo ${my_date}
выдает:
08/05/2009
есть также опции для слайдера селекторов, ошибок, списков и так далее.
надеюсь, что это помогает.
нашел xmessage команда, которая вроде как достаточно хороша.
здесь немного TCL-скрипт, который будет делать то, что вы хотите. Интерпретатор желаний должен быть установлен по умолчанию на Ubuntu.
#!/usr/bin/wish pack [label .msg -text [lindex $argv 0]] pack [entry .ent] bind .ent <KeyPress-Return> { puts [.ent get]; destroy . } focus .ent
назовем это так:
myanswer=`gui-prompt "type your answer and press enter"`
alert
иnotify-send
Кажется, то же самое. Я используюnotify-send
для ввода сообщений, а не украсть фокус, и я не могу найти способ, чтобы остановить Зениты и т. д. от этого поступка.например,
# This will display message and then disappear after a delay: notify-send "job complete" # This will display message and stay on-screen until clicked: notify-send -u critical "job complete"
есть еще
dialog
и версия KDEkdialog
.dialog
используется slackware, поэтому он может быть не сразу доступен в других дистрибутивах.
если больше ничего нет. вы можете запустить xterm и эхо в нем, как это:
xterm -e bash -c 'echo "this is the message";echo;echo -n "press enter to continue "; stty sane -echo;answer=$( while ! head -c 1;do true ;done);'
Как насчет Ubuntu alert. Он может быть использован после любой операции, чтобы предупредить его закончил и даже показать значок красного креста, если operaton был finnished с ошибками
ls -la; alert
Зениты - Это очень точный инструмент, который я думаю, что вы ищете.
или
zenity --help