Вот делаю такую программу. Это еще один десктоп, позволяющий запускать программы, что-то из серии 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 и мн.др.
screen-launcher (Программа-десктоп для запуска приложений.)
Модератор: Модераторы разделов
- Portnov
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
- Контактная информация:
screen-launcher
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Re: screen-launcher
админов, по идее, немного. поэтому почему бы не хранить их список в файле?
да хотя бы в том же /etc/launcher.conf
да хотя бы в том же /etc/launcher.conf
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
- Portnov
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
- Контактная информация:
Re: screen-launcher
А зачем? К тому же, список фактически и так хранится в файле - только не в данных, а в метаданных. Можно его, например, chmod 600 и chown admin:admin - и будет только один админ.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Re: screen-launcher
а так лучше бы что бы можно было и пользовотелю свой конфиг в ~/ ибо такой прогой думаю будут пользоваться не только в комп-клубах, но и дома. Причем в общесистемном конфиге оставить возможность запретить иметь свое меню.
ЗЫ. Portnov, +много
ЗЫ. Portnov, +много
Реальность многогранна поэтому не может быть той правдой, которая «всего одна».
- Portnov
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
- Контактная информация:
Re: screen-launcher
Мб. имеет смысл как-то сделать возможность как-то указывать расположение конфига (мб. параметром командной строки?). Сейчас это в принципе несложно сделать - поменять значение одной переменной в самом начале launcher.py, благо питон, компилировать не надо.
Т.е. скажем указываем config_path = os.environ['HOME']+'/.config/launcher.conf', будет конфиг в ~/.config/launcher.conf.
Т.е. скажем указываем config_path = os.environ['HOME']+'/.config/launcher.conf', будет конфиг в ~/.config/launcher.conf.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Re: screen-launcher
Почему бы вместо изобретения собственного формата конфига, не воспользоваться уже существующими стандартами?
К примеру, из Xfce4. ~/.config/xfce4/desktop/menu.xml, примерно такой файл:
К примеру, из 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
Ну, приведенный вами формат стандартен только для xfce, т.е., вообще говоря, нифига не стандартен. Я использую самый обыкновенный ini-файл, такой формат распространен в windows, его же использует samba и другие программы. Этот формат удобно править "руками", он хорошо совместим с традиционными unix-средствами обработки текстов (grep/sed/diff/patch/...).
Кроме того, xml сложнее парсить (или придется использовать что-нибудь типа python-lxml, а эти пакеты обычно по умолчанию не стоят), а главное преимущество xml - древовидность - не соответствует организации кнопок в screen-launcher, т.к. у меня в принципе никакой древовидности нет - разделы могут включать только программы.
А параметр для указания конфига я все-таки добавил. Т.е. можно пускать так:
launcher.py -c ~/.launcher.conf
и будет вам для каждого юзера свой конфиг.
Кроме того, xml сложнее парсить (или придется использовать что-нибудь типа python-lxml, а эти пакеты обычно по умолчанию не стоят), а главное преимущество xml - древовидность - не соответствует организации кнопок в screen-launcher, т.к. у меня в принципе никакой древовидности нет - разделы могут включать только программы.
А параметр для указания конфига я все-таки добавил. Т.е. можно пускать так:
launcher.py -c ~/.launcher.conf
и будет вам для каждого юзера свой конфиг.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Re: screen-launcher
вот это хорошоА параметр для указания конфига я все-таки добавил. Т.е. можно пускать так:
launcher.py -c ~/.launcher.conf
и будет вам для каждого юзера свой конфиг.
собственно всё работает, и на удивление не падает
Реальность многогранна поэтому не может быть той правдой, которая «всего одна».