Посмотрел по "культуре" обсуждение явления блогов. Много думал :)
Резко не понравилось, что постоянно вместо "блог" говорили "жеже".
понедельник, января 15, 2007
суббота, января 06, 2007
И еще одна поделка на python-gtk
Сабж. Сделал удобнейшую вещь - при втыкании в usb-разъем флэшки от фотика появляется окошко "Слить фотки". Выбираем директорию, нажимаем Старт, и начинается процесс. На одном прогрессбаре показывается процесс копирования, потом на другом - процесс проявки из RAW. Т.е. практически аналог соответствующей тулзы из Гнома. Только Гном здесь совсем не нужен, не нужен ни hal, ни dbus, а нужны python, python-gtk2, python-glade-2.
Кстати, долго думал: как при подключении устройства показать окошко? Ну хорошо, любую программу при подключении флэшки можно запустить с помощью строчки где-нибудь в /etc/udev/rules.d наподобие этой:
Но ведь программа будет запущена с правами демона udevd, вне любых иксов, и вообще не знает, что иксы запущены. Ей бы надо определить, запущены ли иксы вообще, на каком именно дисплее (предусмотреть случай, когда запущены двое иксов - у меня это штатный режим), получить разрешение на подключение к этим иксам, и только тогда можно показывать окошко. Во геморрою-то...
Но, нормальныегерои юниксоиды всегда идут в обход!
Обходной путь получился такой. При запуске иксов фоном запускается питоновский скрипт, который каждые 5 секунд проверяет содержимое пайпа /var/run/mphotos. Если там появляется строчка "plugged" - показывается окошко и делается вся работа по копированию и проявке фоток. Иначе ждет дальше. А udev указанным выше способом при подключении флэшки запускает примитивный скрипт, который и записывает строчку "plugged" в пайп /var/run/mphotos. Все.
Кстати, долго думал: как при подключении устройства показать окошко? Ну хорошо, любую программу при подключении флэшки можно запустить с помощью строчки где-нибудь в /etc/udev/rules.d наподобие этой:
SUBSYSTEM=="scsi", SYSFS{model}=="CF Card CF", ACTION=="add", RUN="/path/to/program"Но ведь программа будет запущена с правами демона udevd, вне любых иксов, и вообще не знает, что иксы запущены. Ей бы надо определить, запущены ли иксы вообще, на каком именно дисплее (предусмотреть случай, когда запущены двое иксов - у меня это штатный режим), получить разрешение на подключение к этим иксам, и только тогда можно показывать окошко. Во геморрою-то...
Но, нормальные
Обходной путь получился такой. При запуске иксов фоном запускается питоновский скрипт, который каждые 5 секунд проверяет содержимое пайпа /var/run/mphotos. Если там появляется строчка "plugged" - показывается окошко и делается вся работа по копированию и проявке фоток. Иначе ждет дальше. А udev указанным выше способом при подключении флэшки запускает примитивный скрипт, который и записывает строчку "plugged" в пайп /var/run/mphotos. Все.
четверг, января 04, 2007
Swish-e, python-gtk, glade...
Уже довольно давно я пользуюсь замечательным поисковиком swish-e. Он довольно быстро индексирует документы, а потом ищет по созданному индексу (о его близком сородиче, swish++, писал virens). Все бы хорошо, только компьютером я пользуюсь не один, вместе со мно им пользуются далекие от компьютеров родственники. И совсем мне неохота объяснять им про прелести командной строки... Так что понадобилась "графическая морда" к swish-e. Ничего полезного не нашел, пришлось писать самому. Стал подбирать, на чем писать. Прежде всего, логика предельно простая (запустить команду и перехватить стандартный вывод), поэтому желания писать на чем-нибудь типа C/C++ не возникает совсем. В идеале это должен быть bash-скрипт. Но как из bash сделать GUI? Варианты получились такие.
Xdialog. Позволяет что-нибудь спросить у пользователя, например, так:
ANSWER=$(Xdialog --stdout --inputbox "Что ищем?" 10 30)
Нет возможности сделать сколько-нибудь сложный диалог. В данном случае этот вариант отпал.
kaptain. Позволяет создавать довольно сложные диалоги, которые описываются на специальном языке. Но эти диалоги нельзя изменить после создания, т.е. они могут работать только как формы ввода. Кроме того, у kaptain большие проблемы с нелатинскими алфавитами. Опять отпадает.
gtk-server. Практически, представляет собой интерфейс к функциям gtk для любого окружения - для вызова функции нужно записать ее имя и параметры на стандартный вход gtk-server. Практически всем подходит, но shell-script с его использованием больше похож на обычную C-программу с использованием gtk. Пока отложил в сторонку.
А остановился я в итоге на связке python + python-gtk + glade. Python - скриптовый, достаточно высокоуровневый, язык, так что простая логика на нем занимает мало места. Сам интерфейс нарисовал с помощью Glade (визуальный конструктор интерфейсов для gtk), сохранил в .glade-файле (это xml), а из python-скрипта он только подгружается (с помощью python-glade). Скрипт получился довольно скромного размера, соответственно своей простой функциональности. Кому интересно, взять можно здесь: http://portnov84.narod.ru/downloads/sw-search-0.1b.tar.gz (Depends: swish-e, python, python-gtk2, python-glade-2).
Xdialog. Позволяет что-нибудь спросить у пользователя, например, так:
ANSWER=$(Xdialog --stdout --inputbox "Что ищем?" 10 30)
Нет возможности сделать сколько-нибудь сложный диалог. В данном случае этот вариант отпал.
kaptain. Позволяет создавать довольно сложные диалоги, которые описываются на специальном языке. Но эти диалоги нельзя изменить после создания, т.е. они могут работать только как формы ввода. Кроме того, у kaptain большие проблемы с нелатинскими алфавитами. Опять отпадает.
gtk-server. Практически, представляет собой интерфейс к функциям gtk для любого окружения - для вызова функции нужно записать ее имя и параметры на стандартный вход gtk-server. Практически всем подходит, но shell-script с его использованием больше похож на обычную C-программу с использованием gtk. Пока отложил в сторонку.
А остановился я в итоге на связке python + python-gtk + glade. Python - скриптовый, достаточно высокоуровневый, язык, так что простая логика на нем занимает мало места. Сам интерфейс нарисовал с помощью Glade (визуальный конструктор интерфейсов для gtk), сохранил в .glade-файле (это xml), а из python-скрипта он только подгружается (с помощью python-glade). Скрипт получился довольно скромного размера, соответственно своей простой функциональности. Кому интересно, взять можно здесь: http://portnov84.narod.ru/downloads/sw-search-0.1b.tar.gz (Depends: swish-e, python, python-gtk2, python-glade-2).
вторник, января 02, 2007
пятница, ноября 24, 2006
Обновил ion3.
Обновился до 3ds-20061029. Tuomo переделал к чертовой бабушке весь API, так что пол-конфига пришлось переписывать заново. Но ничего, переписал ;)
Заметные изменения:
1) Исчезли mod_ionws и mod_floatws, зато появился mod_tiling;
2) Соответственно, WIonWS переименовано в WTiling;
3) Функциональность скрипта detach.lua теперь включена в ioncore.
Часть скриптов с офсайта не работают, т.к. еще не переделаны под новый API.
Заодно обновил статью о настройке ion3.
Заметные изменения:
1) Исчезли mod_ionws и mod_floatws, зато появился mod_tiling;
2) Соответственно, WIonWS переименовано в WTiling;
3) Функциональность скрипта detach.lua теперь включена в ioncore.
Часть скриптов с офсайта не работают, т.к. еще не переделаны под новый API.
Заодно обновил статью о настройке ion3.
Перешел было с файрфокса на конкверор.
Сабж.Во-первых в konqueror по умолчанию работают vim-овские клавиши hjkl. А во-вторых он жрет намного меньше памяти.
Но зато blogger в нем работает как-то через раз. И сессии konqueror сохранять не умеет. Так что придется, видимо, пользоваться двумя браузерами параллельно.
Но зато blogger в нем работает как-то через раз. И сессии konqueror сохранять не умеет. Так что придется, видимо, пользоваться двумя браузерами параллельно.
среда, ноября 15, 2006
ion3: Организация рабочего места
Ну что ж, продолжаю серию про сей замечательный WM. Будем считать, что научились его настраивать, теперь вопрос - в каком направлении настраивать? Я хочу описать общую организацию моего рабочего места.
Во-первых, конечно же, виртуальные десктопы. У меня их десять. Первый из них разбит по вертикали на две неравные части. Они предназначены для того, чтобы открыть два терминала - получается что-то наподобие двухпанельного файлменеджера, только вместо списков файлов - командные строки zsh. Иногда действительно удобно "находиться в двух директориях сразу". Второй десктоп предназначен для работы с текстами, на нем запускаются gvim, nedit, gedit. Третий десктоп предназначен для работы с графикой, на нем открываются gqview, gimageview, inkscape, xara.
Четвертый десктоп выделен специально для gimp. Он разбит на две неравных части по горизонтали - верхняя часть занимает где-то 10% высоты, в ней показывается гимповский toolbox. В нижней половине добавлен второй слой рабочего пространства, разбитый на две половины по вертикали. Таким образом, открытое в gimp изображение по умолчанию занимает почти весь экран, но когда нужно работать с двумя изображениями, каждое из них переносится в свою половину второго слоя. Окно gimp со списком слоев и прочими диалогами открывается в named scratchpad, который показывается/прячется по нажатию клавиши PauseBreak. Это, собственно, проще показать: см.скриншот.

На пятом десктопе по имени misc тоже два слоя, и один из них разбит по вертикали на две половины. На этом десктопе по умолчанию запускается rox-filer, а с помощью второго слоя я иногда превращаю rox в двухпанельник.
Шестой десктоп выделен для мониторинга системы. Он разбит на две половины по горизонтали, в верхней автоматически при старте иксов запускается xterm -e "tail -f /var/log/messages", в нижней - xterm -e htop.
Седьмой рабочий стол предназначен для работы в интернете - на нем запускаются firefox, sylpheed-claws, liferea и pan. Восьмой разбит по вертикали на две неравные части. На нем запускается dia - панель инструментов в меньшей правой части, документ в основной.
Девятый разбит на пять частей по вертикали и горизонтали, в них открываются различные окна cinepaint. Десятый разделен на четыре части, в одной из них запускается xterm -e maxima, а в остальных открываются окна gnuplot.
Для xchat и gaim выделен named scratchpad, который показывается/прячется по Win-~. Также отдельный скратчпад (растянутый почти на весь экран) выделен для чтения документов - в нем запускаются xpdf, gv, djview.
Переключаются рабочие столы по Win-цифра. Для навигации между фреймами использую клавиши в стиле vim: Win-W,s - разбить фрейм по горизонтали, Win-W,v - по вертикали, Win-W,j - перейти на фрейм ниже, Win-W,k - на фрейм выше, и т.д.
По правой клавише Win запускается uterm - это маленький скрипт, запускающий xterm с цветом фона, случайным образом выбранным из определенного набора. Запуск наиболее часто используемых программ - Win-F3..F12 (Win-F3 - gqview, Win-F7 - gimp, и т.д). Реже используемые программы запускаются по Alt-~,буква (Alt-~,B - blender, Alt-~,D - inkscape, и пр.). Остальные программы запускаются из командной строки, которая открывается по Win-R, или, реже, из главного меню, которое открывается по кнопке Menu.
В строке статуса выводятся: имя текущего десктопа, загрузка системы, сведения о памяти в формате (занято+кэш+буферы)=занято_всего+свободно=всего_памяти, информация об использовании свопа (правда, он обычно не используется вовсе ;)), статус vpn-соединения с входящим трафиком, температуры винчестера, процессора и мат. платы.
Last updated 15-Nov-2006 20:04:14 YEKST
Во-первых, конечно же, виртуальные десктопы. У меня их десять. Первый из них разбит по вертикали на две неравные части. Они предназначены для того, чтобы открыть два терминала - получается что-то наподобие двухпанельного файлменеджера, только вместо списков файлов - командные строки zsh. Иногда действительно удобно "находиться в двух директориях сразу". Второй десктоп предназначен для работы с текстами, на нем запускаются gvim, nedit, gedit. Третий десктоп предназначен для работы с графикой, на нем открываются gqview, gimageview, inkscape, xara.
Четвертый десктоп выделен специально для gimp. Он разбит на две неравных части по горизонтали - верхняя часть занимает где-то 10% высоты, в ней показывается гимповский toolbox. В нижней половине добавлен второй слой рабочего пространства, разбитый на две половины по вертикали. Таким образом, открытое в gimp изображение по умолчанию занимает почти весь экран, но когда нужно работать с двумя изображениями, каждое из них переносится в свою половину второго слоя. Окно gimp со списком слоев и прочими диалогами открывается в named scratchpad, который показывается/прячется по нажатию клавиши PauseBreak. Это, собственно, проще показать: см.скриншот.

На пятом десктопе по имени misc тоже два слоя, и один из них разбит по вертикали на две половины. На этом десктопе по умолчанию запускается rox-filer, а с помощью второго слоя я иногда превращаю rox в двухпанельник.
Шестой десктоп выделен для мониторинга системы. Он разбит на две половины по горизонтали, в верхней автоматически при старте иксов запускается xterm -e "tail -f /var/log/messages", в нижней - xterm -e htop.
Седьмой рабочий стол предназначен для работы в интернете - на нем запускаются firefox, sylpheed-claws, liferea и pan. Восьмой разбит по вертикали на две неравные части. На нем запускается dia - панель инструментов в меньшей правой части, документ в основной.
Девятый разбит на пять частей по вертикали и горизонтали, в них открываются различные окна cinepaint. Десятый разделен на четыре части, в одной из них запускается xterm -e maxima, а в остальных открываются окна gnuplot.
Для xchat и gaim выделен named scratchpad, который показывается/прячется по Win-~. Также отдельный скратчпад (растянутый почти на весь экран) выделен для чтения документов - в нем запускаются xpdf, gv, djview.
Переключаются рабочие столы по Win-цифра. Для навигации между фреймами использую клавиши в стиле vim: Win-W,s - разбить фрейм по горизонтали, Win-W,v - по вертикали, Win-W,j - перейти на фрейм ниже, Win-W,k - на фрейм выше, и т.д.
По правой клавише Win запускается uterm - это маленький скрипт, запускающий xterm с цветом фона, случайным образом выбранным из определенного набора. Запуск наиболее часто используемых программ - Win-F3..F12 (Win-F3 - gqview, Win-F7 - gimp, и т.д). Реже используемые программы запускаются по Alt-~,буква (Alt-~,B - blender, Alt-~,D - inkscape, и пр.). Остальные программы запускаются из командной строки, которая открывается по Win-R, или, реже, из главного меню, которое открывается по кнопке Menu.
В строке статуса выводятся: имя текущего десктопа, загрузка системы, сведения о памяти в формате (занято+кэш+буферы)=занято_всего+свободно=всего_памяти, информация об использовании свопа (правда, он обычно не используется вовсе ;)), статус vpn-соединения с входящим трафиком, температуры винчестера, процессора и мат. платы.
Last updated 15-Nov-2006 20:04:14 YEKST
Подписаться на:
Сообщения (Atom)
