screen-launcher (Программа-десктоп для запуска приложений.)

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Ответить
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable
Контактная информация:

screen-launcher

Сообщение Portnov »

Вот делаю такую программу. Это еще один десктоп, позволяющий запускать программы, что-то из серии idesk или rox-desktop.
Первое отличие от упомянутых проектов - кнопки запуска могут быть организованы в разделы, что упрощает ориентацию при большом количестве программ на десктопе.
Второе отличие: программа сама определяет, является ли текущий юзер 'админом' или "простым пользователем" (как - см. ниже). Добавлять/удалять/редактировать разделы и кнопки запуска могут только админы. Юзер, соответственно, может запускать только то, что ему разрешил админ.
Программа делается в основном для компьютерных клубов, но ее вполне можно использовать и дома.

Конфиг - простой текстовый файл ini-формата /etc/launcher.conf, его можно редактировать руками, а можно прямо из интерфейса самой программулины.
Админы от юзеров отличаются очень просто: считаем, что текущий юзер - админ, если у него есть право на запись в конфиг. Т.о. для отделения юзеров от админов можно использовать всю мощь традиционной unix-системы разделения прав (группы, ACL-ы и пр.).
Программа на python-gtk2.

Посмотреть/взять можно тут: http://screenlauncher.googlecode.com/ (исходники в svn, deb-пакеты в Downloads).

Предвидя вопрос: да, wallpaper-ы пока не поддерживаются.
Для меня эта задача с низким приоритетом, в основном потому, что мне не очень нужно, и я плохо представляю, с какой стороны к этому подходить.

Комменты/предложения/пожелания приветствуются.

И тут же вопрос к знающим людям: можно ли проверить наличие доступа на запись в файл надежнее, чем попытавшись его открыть file=open(config_path, 'aw') ? stat() не подходит, т.к. 1) даже для обычных юниксовых прав надо будет всё проверять самому - дублирование функций, и 2) оно не сообщает про всякие ACL, selinux и мн.др.
Вложения
launcher_user.png
launcher_admin.png
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: screen-launcher

Сообщение sash-kan »

админов, по идее, немного. поэтому почему бы не хранить их список в файле?
да хотя бы в том же /etc/launcher.conf
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable
Контактная информация:

Re: screen-launcher

Сообщение Portnov »

А зачем? ;) К тому же, список фактически и так хранится в файле - только не в данных, а в метаданных. Можно его, например, chmod 600 и chown admin:admin - и будет только один админ.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
muhas
Сообщения: 185
Статус: ленивый арчевод
ОС: Archlinux i686 Current
Контактная информация:

Re: screen-launcher

Сообщение muhas »

а так лучше бы что бы можно было и пользовотелю свой конфиг в ~/ ибо такой прогой думаю будут пользоваться не только в комп-клубах, но и дома. Причем в общесистемном конфиге оставить возможность запретить иметь свое меню.

ЗЫ. Portnov, +много
Реальность многогранна поэтому не может быть той правдой, которая «всего одна».
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable
Контактная информация:

Re: screen-launcher

Сообщение Portnov »

Мб. имеет смысл как-то сделать возможность как-то указывать расположение конфига (мб. параметром командной строки?). Сейчас это в принципе несложно сделать - поменять значение одной переменной в самом начале launcher.py, благо питон, компилировать не надо.
Т.е. скажем указываем config_path = os.environ['HOME']+'/.config/launcher.conf', будет конфиг в ~/.config/launcher.conf.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian
Контактная информация:

Re: screen-launcher

Сообщение rm_ »

Почему бы вместо изобретения собственного формата конфига, не воспользоваться уже существующими стандартами?
К примеру, из Xfce4. ~/.config/xfce4/desktop/menu.xml, примерно такой файл:

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8"?>
<xfdesktop-menu>
        <title name="Desktop Menu" icon="xfce4-backdrop"/>
        <separator/>
        <app name="Run Program..." cmd="xfrun4" icon="gnome-fs-executable"/>
        <separator/>
        <app name="Terminal" cmd="x-terminal-emulator" icon="gnome-terminal"/>
        <app name="File Manager" cmd="thunar" icon="file-manager"/>
        <app name="Web Browser" cmd="xfbrowser4" icon="gnome-globe"/>
        <separator/>
        <menu name="Settings" icon="gnome-settings">
            <app name="Settings Manager" cmd="xfce-setting-show" icon="gnome-settings" snotify="true"/>
        </menu>
</xfdesktop-menu>
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable
Контактная информация:

Re: screen-launcher

Сообщение Portnov »

Ну, приведенный вами формат стандартен только для xfce, т.е., вообще говоря, нифига не стандартен. Я использую самый обыкновенный ini-файл, такой формат распространен в windows, его же использует samba и другие программы. Этот формат удобно править "руками", он хорошо совместим с традиционными unix-средствами обработки текстов (grep/sed/diff/patch/...).
Кроме того, xml сложнее парсить (или придется использовать что-нибудь типа python-lxml, а эти пакеты обычно по умолчанию не стоят), а главное преимущество xml - древовидность - не соответствует организации кнопок в screen-launcher, т.к. у меня в принципе никакой древовидности нет - разделы могут включать только программы.

А параметр для указания конфига я все-таки добавил. Т.е. можно пускать так:
launcher.py -c ~/.launcher.conf
и будет вам для каждого юзера свой конфиг.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
muhas
Сообщения: 185
Статус: ленивый арчевод
ОС: Archlinux i686 Current
Контактная информация:

Re: screen-launcher

Сообщение muhas »

А параметр для указания конфига я все-таки добавил. Т.е. можно пускать так:
launcher.py -c ~/.launcher.conf
и будет вам для каждого юзера свой конфиг.
вот это хорошо :)
собственно всё работает, и на удивление не падает
Реальность многогранна поэтому не может быть той правдой, которая «всего одна».
Спасибо сказали:
Ответить