whiptail или диалоговое окно

@Patkos Csaba: Это изменилось: теперь значение по умолчанию - то, что Вы не должны настраивать ничего вообще, и это работает автоволшебно. Определенным способом, добавляя setxkbmap к .xinitrc стал путем, легче, чем изменение конфигурации сервера.

В наше время можно включить клавиатуру USB или мышь и иметь X11, добавляет это и распознает его, никакая потребность полагаться на/dev/mice или что-то как этот.

Теперь я испытал проблему и, по моему скромному мнению, идеальное решение было бы некоторым способом сказать Xorg наследовать новые настройки клавиатуры от в настоящее время подключенной клавиатуры или сказать setxkbmap устанавливать опции как значение по умолчанию сервера для текущих и будущих клавиатур.

До сих пор я не нашел способа сделать так. Единственный способ постараться не выполнять setxkbmap/xmodmap снова состоит в том, чтобы изменить настройки по умолчанию, используемые тащившим при конфигурировании новых устройств, видеть, что freebsd документация, §6.4.2 (некоторые абзацы ниже заголовка раздела, имеет два примера установки значений по умолчанию клавиатуры). См. также "опцию 2" в учебном руководстве Klaas Teschauer на hal миграции. Существует также вопрос на Stackoverflow со ссылками об инициировании сценария на аппаратных дополнениях, если Вы предпочитаете делать это тот путь.

15
13.02.2013, 11:25
3 ответа

whiptail установлен по умолчанию в большинстве находящихся в deb систем, в то время как dialog не.

Afair, на основанном на об/мин whiptail также диалоговое приложение по умолчанию.

Я предполагаю, что это имеет значение для Вас.

Так whiptail правильный выбор от точки мобильности.

Также whiptail на основе newt, в то время как dialog на основе ncurses. С моей точки зрения первая более красива (:

12
27.01.2020, 19:49
  • 1
    , хороший для знания дополнительной информации :) –  Rahul Patil 13.02.2013, 16:20
  • 2
    Сценарий мог бы быть более или менее портативным, но сама диалоговая программа не является никаким менее портативным, чем whiptail. –  Thomas Dickey 30.10.2015, 00:45

(Это - не обязательно ответ, но я отправил как таковой должный на сумму кода. У меня нет практического опыта с whiptail. Удалит это позже если a whiptail пользователь отправляет протестированное решение на этом.)

Как Bash записи Shell Scripting/Whiptail:

От его README: whiptail разработан, чтобы быть вклиниванием сигнала, совместимым с диалоговым окном (1), но имеет меньше функций: некоторые диалоговые окна не реализованы, такие как tailbox, timebox, calendarbox, и т.д.

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

# check whether whiptail or dialog is installed
# (choosing the first command found)
read dialog <<< "$(which whiptail dialog 2> /dev/null)"

# exit if none found
[[ "$dialog" ]] || {
  echo 'neither whiptail nor dialog found' >&2
  exit 1
}

# just use whichever was found
"$dialog" --msgbox "Message displayed with $dialog" 0 0

(Да, вышеупомянутое обнаружение перестанет работать на инструментах, установленных в каталогах с именем, содержащим символы новой строки. Я просто сохранил это простым.)

6
27.01.2020, 19:49

Почему бы не использовать обоих:

(Требует удара 4),

#!/usr/bin/env bash
t(){ type "$1"&>/dev/null;}
function Menu.Show {
   local DIA DIA_ESC; while :; do
      t whiptail && DIA=whiptail && break
      t dialog && DIA=dialog && DIA_ESC=-- && break
      exec date +s"No dialog program found"
   done; declare -A o="$1"; shift
   $DIA --backtitle "${o[backtitle]}" --title "${o[title]}" \
      --menu "${o[question]}" 0 0 0 $DIA_ESC "$@"; }



Menu.Show '([backtitle]="Backtitle"
            [title]="Title"
            [question]="Please choose:")'          \
                                                   \
            "Option A"  "Stuff...."                \
            "Option B"  "Stuff...."                \
            "Option C"  "Stuff...."    
8
27.01.2020, 19:49
  • 1
    , Так сложный. Почему не что-то вроде этого: which whiptail && window=whiptail; which dialog && window=dialog; [ -z window ] && echo "no whiptail or dialog". Затем op может просто сделать '$window - нечто заголовка - msgbox панель 87 5'. –  James M. Lay 29.07.2017, 20:42

Теги

Похожие вопросы