- Bash-скрипты для графического интерфейса
- Программа 1: Команда notify-send
- Программа 2: команда tput
- Программа 3: Команда setleds
- Программа 4: Команда zenity
- Программа 5: Команда kdialog
- Программа 6: Dialog
- О других программах создания виджетов
- Программа 7: Команда logger
- Программа 8: Команда setterm
- Программа 9: smbclient: Отправка сообщений на рабочую станцию MS-Windows
- 10: создание сетевых сокетов Bash
- GUI скрипты и Cronjob
- Используем графический интерфейс в bash-скриптах
- Как запустить графическую оболочку Ubuntu
- Запуск графической оболочки Ubuntu
- Запуск графической оболочки Linux Bash в Windows 10
- VcXsrv Windows X Server
- Известные проблемы и их решения
Bash-скрипты для графического интерфейса
Считается непреложным, что скрипты оболочки Bash предназначены для интерфейса командной строки. Но существует ряд программ, позволяющих создавать скрипты оболочки Bash, взаимодействующие с графическим интерфейсом пользователя (GUI). Такие скрипты можно использовать в самых различных виджетах, типа меню, всплывающих предупреждений, индикаторов и тому подобных. С их помощью можно контролировать вид и содержание, положение на экране, всевозможные эффекты и так далее.
Создавать графическое приложение долго и сложно. Другое дело программы для создания GUI скриптов. Предлагаемые 10 программ проверены на FreeBSD и на Linux и, несомненно, будут работать и на других Юниксовидных операционных системах.
Программа 1: Команда notify-send
Команда notify-send позволяет посылать на рабочий стол пользователя сообщения и предупреждения прямо из командной строки. Это позволяет информировать пользователя рабочей станции о каком-либо событии, либо выдавать на его рабочий стол любую информацию.
Для начала следует установить необходимый пакет:
Теперь, для примера, пошлем из командной строки простое предупреждение:
Вот что получится:
Вот пример другого кода с дополнительными опциями:
А вот что получится:
В приведенном примере кода:
- -t 5000: Указывает время в миллисекундах (5 000 миллисекунд = 5 секунд)
- -u low : Указывает уровень срочности (низкий=low, средний=normal, срочный=critical)
- -i gtk-dialog-info : Указывает имя файла картинки для вывода (можно указывать путь к готовой картинке как -i /path/to/your-icon.png)
Подробнее об использовании утилиты notify-send читайте в мане этой программы.
Программа 2: команда tput
При помощи команды tput можно контролировать свойства терминала:
- Передвигать курсор в любое место экрана
- Получать информацию о терминале
- Расцвечивать терминал (фон и передний план)
- Включать жирный текст
- Включать инверсию цвета (фон цвета текста, текст цветом фона)
- И многое другое
Вот пример кода скрипта:
Вот что получится:
Подробнее о команде tput расскажут маны:
Программа 3: Команда setleds
Команда setled позволяет регулировать включение светодиодов на клавиатуре, например:
включит огонек на клавише NumLock, а команда
Вот остальные опции:
- -caps : выключить CapsLock
- +caps : включить CapsLock
- -scroll : выключить ScrollLock
- +scroll : включить ScrollLock
В мане команды setleds имеются дополнительные подробности.
Программа 4: Команда zenity
Команда zenity выводит на рабочий стол интерактивные диалоговые окна, а также возвращает ввод пользователя. Это позволяет предоставлять пользователю информацию, запрашивать у него информацию при помощи любых скриптов Bash. Вот пример графического клиента для сервиса whois для определенного домена.
Вот как будет выглядеть получившийся клиент:
Дополнительная информация по команде zenity:
Программа 5: Команда kdialog
Команда kdialog напоминает предыдущую программу zenity, но для KDE и приложений qt. С ее помощью вы можете создавать диалоговые окна. Например, если ввести в командную строку:
То получите такое окно:
Для знакомства с командой kdialog читайте руководство «Shell Scripting with KDE Dialogs» .
Программа 6: Dialog
Dialog ≈ это приложение, которое включается в скрипты Bash и создает виджеты в текстовом интерфейсе. Использует библиотеки curses или ncurses. Вот пример кода:
Подробности в man dialog.
О других программах создания виджетов
- gmessage — GTK-клон программы xmessage;
- xmessage — выводит сообщение или запрос в окне (графический аналог команды /bin/echo);
- whiptail — создает диалоговые окна из скриптов;
- python-dialog — модуль на Python для создания несложных текстовых интерфейсов.
Программа 7: Команда logger
Команда logger записывает информацию в системные логи, такие как /var/log/messages. Это дает возможность видоизменять логи из командной строки, например:
Вот что получится:
Программа 8: Команда setterm
Команда setterm позволяет управлять окном терминала. Вот, например, как заставить терминал стать черным через 15 минут, а через 60 минут отключиться:
А в этом примере продемонстрирован подчеркнутый текст в окне терминала:
Есть возможность включать и отключать курсор:
Детали в мане setterm.
Программа 9: smbclient: Отправка сообщений на рабочую станцию MS-Windows
Команда smbclient умеет общаться с серверами SMB/CIFS. Она способна дать сообщение как отдельным, так и всем пользователям сразу:
10: создание сетевых сокетов Bash
В оболочке Bash предусмотрена возможность создания сокета для получения информации через него. Необязательно применять команды curl или lynx для получения данных с удаленного сервера. Есть два специальных файла устройств, которые можно использовать для создания сетевых сокетов. Выдержка из man bash:
- /dev/tcp/host/port — если host означает существующее имя хоста или адрес Интернет, а порт — целочисленный номер порта, или имя сервиса, то bash попытается установить связь по протоколу TCP с соответствующим сокетом.
Эту технологию можно использовать для определения, открыт ли нужный порт на локальном или удаленном сервере, не прибегая к nmap или другим сканерам портов.
Вы можете использовать скрипт:
Выводом будет что-то вроде:
Подробнее об этом здесь .
Также можно использовать скрипт как клиент HTTP:
Подробности в man bash.
GUI скрипты и Cronjob
Если для запуска скриптов вы используете cronjob , то должны согласовать локальный display/input сервис при помощи команды:
export DISPLAY=[user’s machine]:0
Например, для вызова каждый час скрипта /home/vivek/scripts/monitor.stock.sh, использующего команду zenity, введите:
@hourly DISPLAY=:0.0 /home/vivek/scripts/monitor.stock.sh
А у вас есть любимые GUI скрипты? Напишите нам в комментарии.
Источник
Используем графический интерфейс в bash-скриптах
Многие пользователи Linux рано или поздно сталкиваются с bash-скриптами. До недавнего времени я не знал как можно использовать графический интерфейс в скриптах. Оказывается очень просто.
Возможно для вас это не будет чем то новым, но я думаю найдутся те, кому это пригодится.
Мы будем использовать библиотеку zenity (ещё есть kdialog ). У меня она была уже установлена. Набираем в консоли zenity —help или man zenity.
Приведу основные ключи:
—calendar Отобразить диалог для выбора даты
—entry Отобразить диалог для ввода текста
—error Отобразить диалог для вывода ошибки
—info Отобразить диалог для вывода информации
—file-selection Отобразить диалог для выбора файла
—list Отобразить диалог со списком
—notification Отобразить диалог уведомления
—progress Отобразить диалог хода процесса
—question Отобразить диалог с вопросом
—warning Отобразить диалог с предупреждением
—scale Отобразить диалог масштаба
—text-info Отобразить диалог с текстовой информацией
Теперь как использовать. Рассмотрим сразу пример. Для примера я написал маленький скрипт выключения компьютера по таймеру.
#!/bin/bash
vTime=$(zenity —scale —title=»Timer Shutdown» —text=»Turn off computer after:» —step=5 —min-value=0 —max-value=120);
Рассмотрим его подробнее.
vTime=$(zenity —scale —title=«Timer shutdown» —text=«Turn off computer after:» —step=5 —min-value=0 —max-value=120);
zenity —scale —text=«Turn off computer after:» —step=5 —min-value=0 —max-value=120
Эта строка отображает диалоговое окно с ползунком с минимальным значением равным 0, максимальным равным 120 (120 минут — 2 часа) и с шагом в 5 ( у меня почему то не работает).
Результат присваивается значению vTime.
if [ «$?» = «1» ]; then
echo «Exit»; exit;
Переменная $? содержит значение 0 если нажата кнопка ОК и 1 если — Cancel.
vNow=$(date +’%T’);
В переменную vNow текущее время.
sudo /sbin/shutdown -h $vTime &
Собственно запускаем команду на выключение. Здесь нужно обратить внимание на &. Он нужен для того чтоб следующая задача выполнялась не дожидаясь завершения предыдущей.
zenity —notification —text=«The system is going down in $vTime minutes. Start at $vNow!»;
Отобразим в трее значок с соответствующей надписью.
if [ «$?» = «0» ]; then sudo /sbin/shutdown -c;
И сделаем возможность прервать выключение по нажатию мишкой по значку. Если щелкнуть мышкой по значку zenity вернет значение 0 в переменную $.
Осталось создать ярлык на запуск скрипта. Естественно нужно чтоб пользователь имел права на запуск команд через sudo. Также нужно в /etc/sudoers закоментить строку Defaults requiretty а можно заменить sudo на kdesudo.
Здесь только ознакомление. Думаю кому будет интересно сами разберутся с остальными возможностями zenity. Удачи.
Источник
Как запустить графическую оболочку Ubuntu
Если вы запустили систему в текстовом режиме или вовсе это сервер и на нём надо работать только через терминал, но на нём уже есть установлено графическое окружение, есть несколько способов его запустить.
В этой статье мы постараемся разобраться как запустить графическую оболочку Ubuntu из терминала несколькими способами.
Запуск графической оболочки Ubuntu
Сначала можно посмотреть текущий уровень запуска в systemd. Для этого выполните:
systemctl list-units —type target | egrep «eme|res|gra|mul» | head -1
Если уровень запуска не graphical.target вы можете это исправить выполнив команду:
sudo systemd isolate graphical.target
После этого уровень запуска будет изменён на графический и графическая оболочка запуститься автоматически. Если вам нужно запустить менеджер входа вручную выполните такую команду:
sudo systemctl start display-manager
Эта команда запустит менеджер входа в систему, после этого вы сможете ввести логин и пароль, а затем запуститься графическая оболочка.
С более простыми графическими оболочками, вроде Openbox, Fluxbox, i3wm и даже XFCE может сработать ещё один метод, очень популярный ранее. Это команда startx. Однако чтобы она сработала в файле
/.xinitrc надо прописать оболочку, которую вы хотите запустить. Например:
if [ -d /etc/X11/xinit/xinitrc.d ] ; then
for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
[ -x «$f» ] && . «$f»
done
unset f
fi
feh —bg-fill
/Загрузки/52453-sklon_holm_cerkvushka_sneg.jpg &
lxpanel &
exec openbox-session
Блок if загружает все конфигурационные файлы из каталога /etc/X11/xinit*, сторчка, начинающаяся с feh добавляет фон рабочего стола, следующая — нижнюю панель, а последняя запускает сам openbox. Теперь запуск графической оболочки Ubuntu из консоли выполняется командой:
Или если, на первом экране уже что-то запущено, можно использовать любой другой доступный, например, второй:
Обратите внимание, что оболочку можно запустить только из консоли TTY, из терминала в графическом окружении это не сработает. Как видите, всё просто. Ваша оболочка запуститься в том же терминале, в котором вы выполнили startx.
Источник
Запуск графической оболочки Linux Bash в Windows 10
В первую очередь необходимо установить Linux Bash в Windows 10. Инструкция по установке Linux Bash описана в следующей статье:
Для установки Ubuntu из Microsoft Store предлагаем выбрать версию Ubuntu 18.04 LTS в операционной системе Windows 10 May 2019 Update (версия 1903).
Параметры установленного дистрибутива Linux расположены в меню Windows Параметры > Приложения > Приложения и возможности. Из списка установленных программ выберите Ubuntu 18.04 и нажмите на Дополнительные параметры.
Так же открыть параметры Ubuntu 18.04 можно нажав правой кнопкой мыши по значку Ubuntu 18.04 в меню Пуск, в открывшемся меню выбираем Дополнительно > Параметры приложения.
Параметры установленного Линукс дистрибутива в Windows 10 (версия 1903):
Расположена файловая система Ubuntu на локальном диске С по следующему адресу:
Таким образом можно получить доступ к нужным файлам и папкам Linux.
После установки и первоначальной настройки системы нужно обновить систему и установить рабочее окружение.
Обновление системы и установленных пакетов:
Установка рабочего окружения и пакета программ Ubuntu (Gnome):
Меняем права доступа к папке кэша:
Далее в систему Windows 10 нам нужно установить приложение для обеспечения оконной системы Linux, которая отвечает за построение и отображение графического интерфейса.
VcXsrv Windows X Server
Таких программ несколько. Предлагаем выбрать активно развивающуюся программу VcXsrv Windows X Server. Устанавливаем с настройками по умолчанию.
После запуска программы VcXsrv Windows X Server в окне Display Settings есть выбор отображения интерфейса оконной системы Linux. В нашем случае отлично работал вариант с большим оконным режимом (One large window). Там же в настройках Display number выставляем значение 0 (если возникнут проблем с запуском интерфейса, то значение нужно изменить, кроме того нужно будет изменить и значение в команде запуска).
Далее оставляем настройки по умолчанию. По окончанию настройки у нас запустится пустое окно.
Переходим в запущенную Linux систему, у нас она открыта в виде командной строки и вводим следующие команды:
Для дальнейших запусков графического окружения нужно вводить команду выше, при этом программа VcXsrv Windows X Server должна быть предварительно открыта.
Также создайте сценарий оболочки start-ubuntu (имя файла необязательно):
Сделайте скрипт оболочки исполняемым:
Запустить скрипт оболочки:
Известные проблемы и их решения
Из недостатков, с которыми столкнулись, отметим следующие: проблема с правами доступа различных приложений и системных функций. В качестве решения можно систему запустить с правами root. В целях безопасности не рекомендуется запускать систему с полными правами администратора, но если есть в этом необходимость, то запустить можно следующим образом: после того как открыли приложение VcXsrv и Linux систему, которая открылась в виде командной строки, нужно ввести команду: sudo su , затем вводим команду для запуска графического окружения:
Теперь нам будут доступны ранее неработающие функции системы, например, русификация и работа некоторых расширений Gnome.
Так же мы столкнулись с тем, что предустановленный браузер Firefox не устанавливает дополнения. Можно воспользоваться другим браузером, например, браузером Opera. В режиме суперпользователя запускать его нужно с помощью терминала командой: opera --no-sandbox.
Система установится на английском языке, установка другого языка доступна только под системой с правами администратора (sudo su). Установить русский язык в систему можно следующими командами:
После этого в настройках системы Ubuntu нужно выбрать и активировать установленный русский язык.
Источник