Библиотека сайта rus-linux.net
Hotwire: консоль и графическое окно одновременно
Оригинал: Hotwire blends the command line with the GUI
Автор: Nathan Willis
Дата: 29 ноября 2007
Перевод: Алексей Дмитриев
Дата перевода: 8 декабря 2007
При копировании материала обязательны указание автора, переводчика и ссылки на оригинал статьи и настоящую страницу как первоисточник перевода!
Hot-wire (горячая проволока) - замыкание накоротко проводов для запуска двигателя без ключа зажигания (из слэнга американских угонщиков)
При попытке охарактеризовать Hotwire в двух словах, непременно придешь к сочетанию противоположных по смыслу слов, типа: "графический терминал", или "GUI командной строки", или даже "ГУИевая консоль". Однако, как ни странно, все эти "несочетаемые словосочетания" удивительно точно передают суть Hotwire - нечто среднее между текстовым терминалом и современным графическим интерфейсом пользователя.
Частично неразбериха происходит оттого, что "конечный пользователь" имеет довольно неясное представление о сути Unix shell - командной оболочки Юникса. Мы, в лучшем случае, знаем, что некоторые команды (как ls и chown) являются самостоятельными двоичными программами, в то время как другие (такие как cd и umask) в действительности внутренние функции, обеспечиваемые оболочкой (shell). Но только программисты помнят, кто есть кто, мы же просто печатаем в командной строке, то, что нам надо, и возвращаемся к своим делам.
Зададимся резонным вопросом - не настало ли время обновить до уровня XXI века
классическую консоль, не отличающуюся наглядностью?
Colin Walters решил: " Да, пора", - и, для начала, создал Hotwire.
Основы
В двух словах - и без всяких противоречий - Hotwire является графическим приложением, предназначенным для выполнения команд. Там, где классический Unix shell (bash или tcsh) выдает голый текст, Hotwire возвращает объекты, которыми можно манипулировать. Напечатав в командной строке ls, в ответ получаем список файлов в текущей директории. Напечатав ls в Hotwire, получим окно с графическими объектами, с которыми можно работать мышью, плюс сведения о размерах файлов, времени модификации, правах собственности, правах доступа и даже иконки.Продолжим сравнение следующим примером. В оболочке bash предусмотрена возможность увязывать вывод одной команды со вводом следующей, при помощи оператора конвейеризации (pipe) - вертикальной черты (|). В Hotwire можно проделывать то же самое, с тем преимуществом, что перенаправляются более информативные объекты, управлять которыми можно более осознанно.
Hotwire написан на Python, с акцентом на выполнение обычных повседневных задач системного администрирования. Он осуществляет свои собственные версии функций и команд обычной командной строки, по большей части связанных с управлением файлами и директориями. На жаргоне Hotwire эти разработки называются модулями (builtins).
Текущая версия программы (0.600) включает 21 модуль: cat, cd, cp, current, edit, filter, fsearch, help, history, ls, mkdir, mv, open, proc, prop, py, rm, sechash, sh, term, write. Модули управления файлами выдают объекты Python, размещая их в окнах дисплея во всем своем графическом великолепии, да еще и управляемые с помощью мыши.
Объекты, выдаваемые модулем ls (файлы и папки) могут быть представлены в виде таблицы, напоминающей файловый менеджер. Их также можно перенаправить на ввод модуля filter (заменяющего команду grep), который отбирает файлы по их индивидуальным свойствам. Никакого сравнения с простой распечаткой, которую делает обычная команда ls.
Специальные модули заполняют пробелы там, где Hotwire еще не имеет модуля, соответствующего той или иной команде. Модуль py запускает Python, модуль sh запускает произвольные команды shell, а модуль term открывает терминал в новой вкладке.
Hotwire обеспечивает интерактивные удобства, такие как автодополнение команд и имен файлов: в процессе набора появляется плавающее окно с командами или именами файлов, из которых можно выбрать нужный при помощи клавиши табуляции.
С чего начать
Hotwire доступен в виде прекомпилированных пакетов для Fedora, Ubuntu, Mandriva, Arch, и Debian, хотя скорость развития дистрибутивов столь высока, что они могли устареть.
Ненамного сложнее скачать пакет с
исходниками,
распаковать его, и запустить команду python ui/hotwire
.
На Линукс системах Hotwire подключается ко множеству сервисов GNOME, так
что необходимо следить за удовлетворением зависимостей, и иметь правильно
установленные пакеты Python. Полный список представлен на странице
HotwireDevelopment
в Hotwire wiki.
Если вас удивило, что я написал "на Линукс системах", то знайте, что Hotwire работает и на Windows тоже. Порт для Windows не пользуется таким вниманием, как ветвь для Линукс, но если установить необходимые библиотеки Python и GTK+, то можно запустить Hotwire и даже помочь разработчикам поддерживать его в актуальном состоянии.
Запустив Hotwire, вы увидите стандартное окно GTK+ со строкой меню наверху, большим экраном под ним, еще ниже текстовое окно, и выпадающее меню в самом низу. Вы вводите команды в текстовом окне, а результаты (в какой бы форме они не были) появляются на экране. Обычно вверху экрана повторяется введенная команда (на случай, если вы ее забудете), остальное место занимает представление файлов. В выпадающем меню внизу всегда отражена рабочая директория. Когда вы меняете директорию, в меню отражаются прежние рабочие директории, так что всегда можно быстро вернуться обратно.
Лучший способ изучить отличия Hotwire от терминала - это попрактиковаться с самыми типичными командами. Например, вы узнаете, что при смене директорий командой cd, Hotwire автоматически показывает листинг директорий. Двойной щелчок мышью на файле в этом списке приводит к запуску данного файла в том приложении, которое установлено для этого типа файлов по умолчанию, совсем как в Nautilus'е. Щелчок правой кнопкой мыши выдает список дополнительных опций.
Hotwire может выполнять отдельные команды оболочки (shell), при помощи модуля sh, но не поддерживает традиционные шелл-скрипты. Но это небольшая потеря, так как взамен можно писать скрипты на языке Python. В Hotwire wiki вы найдете великолепное руководство для начинающих, охватывающее вопросы от архитектуры Hotwire, через основы программирования на языке Python и конвейеризации, до написания ваших собственных приложений и модулей к программе.
Подключайтесь
Hotwire еще очень молод. Со временем количество модулей будет, без сомнения, увеличено. Некоторые же задачи проще решать в традиционной командной строке оболочки, так как они не вписываются в двухмерный интерактивный мир Hotwire.
Ряд вопросов еще ждет своего разрешения, например модуль rm, как и многие другие команды, может принимать в качестве аргумента список файлов (даже из нескольких директорий). Удаление перечисленных файлов не вопрос, вопрос возникает - а что после этого представлять графически? Еще одна принципиальная проблема: текущий релиз не поддерживает удаленный запуск программ или команды su/sudo. Коды уже написаны, но новая версия еще не готова к появлению на публике - так что не спешите расставаться со скромной командной строкой.
Все же дайте Hotwire шанс, вы можете быть приятно удивлены удобством, которое он дает. Неожиданно исчезает непроходимая пропасть между командной строкой и графическим интерфейсом. В конце концов, большинство из нас, "конечных пользователей" Линукса, проводит время в среде X Window, так, может быть, имеет смысл приблизить к нам повседневные операции в командной строке.