Screen-Launcher

Репозиторий: 
git://iportnov.ru/screenlauncher.git

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

Introduction

Я постараюсь описать, как работает screen-launcher, и с точки зрения пользователя, и с точки зрения администратора, и с точки зрения желающего использовать screen-launcher на домашнем компьютере или на ноутбуке.

Details

Для пользователя.

Предположим, среда уже настроена для запуска screen-launcher. В этом случае пользователь при входе в систему видит рабочий стол, на котором слева - список разделов, в которые организованы программы (и кнопка "выход"), а основная часть пока пустует. Нажимаем на кнопку какого-нибудь раздела - и справа появлются кнопки, запускающие программы из этого раздела.

Таким образом, пользователь может только запускать предусмотренные администратором программы.

Для администратора.

Администратору нужно сделать, по большому счету, три вещи:

  1. написать изначальный конфигурационный файл,
  2. установить для него подходящие права доступа,
  3. настроить среду пользователя для автоматического запуска screen-launcher при входе в систему.

Формат конфигурационного файла весьма прост. Он описывает, какие программы можно запускать с помощью screen-launcher, и как они организованы в разделы.

Конфиг состоит из разделов, соответствующих разделам программ. Начинается раздел со строки

[Название раздела]

В каждом разделе должна быть строка

SectionIcon = файл-значка

указывающая значок для раздела. Может быть указан абсолютный путь к файлу, или имя файла в одной из "стандартных директорий". Сейчас эти директории - /usr/share/icons/hicolor/48x48/apps и /usr/share/pixmaps.

Замечание. Аналогично дело обстоит и с другими значками.

Также каждый раздел содержит одну или более строф (stanzas) вида

Name = Название программы
Description = Описание программы
Icon = файл-значка
Command = команда-запуска-программы

Строка Description необязательна. В строке Command можно указать либо полный путь к программе (/usr/bin/gedit), либо только имя файла программы, если он находится по переменной $PATH (gedit), или можно указать несколько shell-команд через точку с запятой или '&&' или '||' (пример: Command = cd /opt/widelands; ./widelands).

По умолчанию screen-launcher использует в качестве конфига файл /etc/launcher.conf. Это можно переопределить с помощью ключа командной строки -c (launcher.py -c /путь/к/конфигу).

screen-launcher считает пользователя администратором, если он имеет право на запись в конфиг. Поэтому важно, кто владелец конфига и какие на него стоят разрешения. Примеры:

chown root:admins /etc/launcher.conf; chmod 660 /etc/launcher.conf -

администраторами будут считаться члены группы admins;

chown admin:admin /etc/launcher.conf; chmod 600 /etc/launcher.conf -

администратором будет только пользователь admin;

chmod 666 /etc/launcher.conf -

все пользователи будут администраторами.

Администратор может добавлять, удалять и редактировать программы и разделы прямо из интерфейса программы (появляются соответствующие кнопки). Изменения сохраняются при выходе автоматически.

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

#!/bin/bash
launcher.py & lpid=$!    # запускаем screen-launcher, запоминаем его pid
gnome-settings-daemon &  # если хотим применять настройки gnome
metacity &               # запускаем какой-нибудь оконный менеджер
wait $lpid               # ждем завершения screen-launcher и выходим.

Если вы хотите использовать Screen-Launcher дома

В таком случае, вероятно, не имеет смысла разделять пользователей на "администраторов" и "всех остальных". Вы можете захотеть использовать один и тот же список программ для всех пользователей (но так, чтобы каждый мог его менять). Для этого просто сделайте

chmod 666 /etc/launcher.conf

(и настройте автозапуск screen-launcher). Если же вы хотите, чтобы у каждого был свой набор программ, с возможностью индивидуальной настройки под себя, то пропишите в автозагрузку каждого пользователя команду

launcher.py -c ~/.config/launcher.conf

(разложите всем пользователям какие-нибудь изначальные конфиги, и пусть владельцем каждого будет соответствующий пользователь).

RSS-материал