Не пей из копытца, козленочком станешь!
| Страница ДКД (Страница провайдера) | Линукс-Чайник (Оглавление) |
По моему, одной только лени, уже достаточно, чтобы убедить любого.
2. Встроенные меню Midnight Commander
На первом этапе, для всех этих целей, я использовал встроенные меню MC. Теперь,
я их использую в основном для операций с файлами. Это довольно удобно, так как
встроенные средства MC позволяют легко работать как с отдельными файлами, так
и с группами выделенных файлов.
Файл с меню находится:
/etc/mc/mc.menu
Синтаксис предельно простой. Т.е. писать простейшие скрипты и вносить в них изменения можно прямо на ходу. Хочу напомнить, что у меня Дебиан.
Меню вызывается клавишей F2. Файл меню в Дебиане - /etc/mc/mc.menu
Строки которые начинаются с любого символа, кроме знака табуляции,
или пробела, считаются названиями меню. Первый символ может быть использован
как название горячей клавиши. Строки, которые идут после этой строки и начинаются с
пробела или знака табуляции считаются командами и исполняются по очереди. После
того, как вы обратились к какому-либо пункту меню, содержимое этого пункта меню
копируется во временный файл, который и выполняется.
Для обращения к файлам и директориям удобно использовать макроподстановки. Вот самые употребительные:
Приведем небольшой пример. Например вы хотите чтобы ваш скрипт делал сивольные линки на выделеные файлы в другой панели. вот скрипт, который сделает работу:
4 Make taget files link in another panel for i in %s do ln -sv %d/$i %D/$i done
Комментарии: %s - эта подстановка выдает строку, в которую входят имена выделенных файлов. Переменной i в цикле по очереди присваюваются значения равные именам файлов. Далее в для каждого значения i выполняется команда:
ln -sv %d/$i %D/$i
где
%d/$i
составляет полное имя исходного файла,
%D/$i
имя символьного линка. Между %d и %s добавлен слэш /, т.к. %d это путь к файлу без слэша на конце и, если не добавить между файлом и путем слэш, то имя файла и путь слипнуться и ничего не получится.
Ну в общем много можно налепить всяких менюшек. Сначала я лепил в миднайт все подряд, но потом разработал скрипт иерархических меню для консоли, и часть скриптов переехала туда. Но, несмотря на это, пунктов в меню накопилось много и пришлось сделать какое-то подобие иерархических меню. Сделал так, в главном меню поставил команды копирования файлов подменю в домашний директорий:
1 Compressing/Uncompressing ---------->
cp /usr/local/etc/mc/mc.menu.compr $HOME/.mc/menu
2 Package operations ---------->
cp /usr/local/etc/mc/mc.menu.packages $HOME/.mc/menu
3 System/File information ---------->
cp /usr/local/etc/mc/mc.menu.sysinfo $HOME/.mc/menu
4 File operations/view ---------->
cp /usr/local/etc/mc/mc.menu.file_view $HOME/.mc/menu
5 Kernel Compiling ---------->
cp /usr/local/etc/mc/mc.menu.kern_compiling $HOME/.mc/menu
6 Page mantaning ---------->
cp /usr/local/etc/mc/mc.menu.page.maint $HOME/.mc/menu
7 RPM operations ---------->
cp /usr/local/etc/mc/mc.menu.rpm $HOME/.mc/menu
8 Fonts ---------->
cp /usr/local/etc/mc/mc.menu.fonts $HOME/.mc/menu
9 Floppy operations ---------->
cp /usr/local/etc/mc/mc.menu.floppy $HOME/.mc/menu
В подменю для возврата:
1 Back to main menu
cp /usr/local/etc/mc/mc.menu.main $HOME/.mc/menu
-----------------------------------------------------------
3. Простейшая Система Меню для консоли
Идем дальше. Значит пользовался я этими меню в миднайте и радовался.
Но душу точила мысль сделать систему меню, для которой не надо было бы запускать
Миднайт Командер. Были разработаны требования к этой системе. Вот они:
Для вопллощения вышеуказнных задач был написан простенький скрипт, который работает следующим образом:
cd /usr/local/etc/menu
Этот директорий - корневой директорий для системы меню.
Т.е. надо вам новый пункт в меню - кидаете в нужное место скрипт с нужным названием.
Надо подменю - создаете директорий с нужным названием.
И самое главное - все работает. Вот сам скрипт:
menu.02.05.gz
А это, если кому-то интересно, директории с моими меню:
menu.tgz
4. Простейшая Система меню для Xwindow
После того, как был создан скрипт для меню в консоли, захотелось чего-нибудь
похожего для X-ов. И когда в мои руки попал пакет widtools я немного переделал
скрипт для консоли и получил аналогичную штуку для X-ов. Все идеи насчет
директориев и скриптов - те же самые.
Вот скрипт:
xmenu.01.01.gz
А вот меню для примера:
menu_x.tgz
Widtools - это такая маленькая приблуда, которая позволяет пользоваться
Xforms из скриптов. Стащил я его с sunsite.unc.edu .
Вот его домашний сайт:
http://cspar.uah.edu/~mallozzir/html/widtools.html
А здесь он лежит на сансайте:
http://sunsite.unc.edu/pub/Linux/X11/devel/
Естественно, у вас должны быть установлены Xforms.
5. Системы меню Window Managers
Практически у каждого Window Manager есть своя система меню. Но поскольку их много
то пускаться в объяснения я не буду.Лучше всего читать man, и ориентироваться на
аналогичные уже имеющиеся пункты меню.
6. Система меню Дебиана
В Дебиане имеется (внедряется) встроенная система меню. Надо только установить
пакет /admin/menu_xxx и в меню Window Managers появятся меню пакетов.
Есть возможность и добавлять свои меню по аналогии с уже имеющимися.
К сожалению есть и недостатки:
8. Заключение
Ну все, пока :-)