Как показать окно сообщения графического интерфейса из сценария bash в Linux?

StackOverflow https://stackoverflow.com/questions/7035

Вопрос

Я пишу несколько небольших bash-скриптов под Ubuntu Linux.Я хочу иметь возможность запускать их из графического интерфейса без необходимости использования окна терминала для ввода каких-либо данных или просмотра вывода.

Пока что единственный требуемый ввод — это пароль для sudo, и gksudo прекрасно с этим справляется.Но я еще не нашел простого способа показать окно сообщения.Есть ли какая-то команда gkmessage?Я бы предпочел, чтобы что-то присутствовало в стандартной установке Ubuntu, но я не против установить новый пакет, если это необходимо.

Это было полезно?

Решение

Я считаю Зенити сделаю то, что ты хочешь.Он специально разработан для отображения диалоговых окон GTK из командной строки и доступен как пакет 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 очень старый, поэтому он стабилен и, вероятно, доступен во всех дистрибутивах, использующих 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

Кдиалог

(не испытано)

В PPA

ЯД:Zenity On Steroids [Отображение графических диалогов из сценариев оболочки] ~ Web Upd8:Блог Ubuntu/Linux.Кажется, не происходит автоматическое изменение размера диалогов.

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.

  • Шелгуи
  • xdialog
  • gtkdialog

Не по теме (для терминала)

whiptail --msgbox "my text" 10 20
dialog --msgbox "my text" 10 20

Не стесняйтесь редактировать.

А пыл Кажется, это то, что вы ищете.

Чтобы получить данные от пыл, вы можете указать переменную и получить результат зенити --запись сохранено в нем.Это выглядит примерно так:

my_variable=$(zenity --entry)

Если вы посмотрите на значение в моя_переменная теперь это будет то, что было введено во всплывающем диалоговом окне ввода zenity.

Если вы хотите дать своего рода подсказку о том, что пользователь (или вы) должен ввести в диалоговом окне, добавьте --текст переключитесь на нужную метку.Это выглядит примерно так:

my_variable=$(zenity --entry --text="What's my variable:")

У Zenity есть множество других приятных опций для конкретных задач, так что вы также можете проверить их с помощью зенити --помощь.Одним из примеров является --календарь опция, позволяющая выбрать дату из графического календаря.

my_date=$(zenity --calendar)

Это дает красиво отформатированную дату в зависимости от того, на что нажал пользователь:

echo ${my_date}

дает:

08/05/2009

Также есть опции для селекторов ползунков, ошибок, списков и так далее.

Надеюсь это поможет.

Я нашел хсообщение команда, что вполне достаточно.

Вот небольшой скрипт Tcl, который сделает то, что вы хотите.Интерпретатор Wish должен быть установлен в 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 для невходящих сообщений, поскольку они не крадут фокус, и я не могу найти способ остановить zenity и т. д.от этого.

например

# 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 и версия KDE kdialog. dialog используется Slackware, поэтому он может быть недоступен в других дистрибутивах.

Как насчет Ubuntu тревога.Его можно использовать после любой операции, чтобы предупредить о ее завершении и даже отобразить значок красного креста, если операция была завершена с ошибками.

ls -la; alert

если больше ничего нет.вы можете запустить 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);'

Зенити это действительно именно тот инструмент, который, я думаю, вы ищете.

или

zenity --help

Kdialog и диалог хороши, но я бы порекомендовал Zenity.Быстро, легко и намного лучше выглядит x-сообщение или диалог.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top