Рабочее место с MATE

Уже на протяжении долгого времени на данном сайте не было новых статей про использование операционной системы FreeBSD в качестве десктопа. Хотя чему удивляться? Ведь никаких координальных изменений (нововведений) на протяжении этого времени на данном фронте не наблюдалось. До недавнего времени. Начну с того, что в свое время выход GNOME 3 с сильно измененным интерфейсом привел в недовольство значительное число пользователей данного проекта, что повлекло за собой создание нового проекта — MATE. MATE — окружение рабочего стола, являющееся ответвлением в настоящее время уже не развивающегося GNOME 2. И вот буквально вчера в основное дерево портов был добавлен порт MATE. Таким образом, появился повод для написания настоящей статьи, где будет описан процесс  установки MATE на FreeBSD версии 8.4. Предполагается, что установка осуществляется на чистую и подготовленную систему. Кроме того, дерево портов должно быть в актуальном состоянии.

Первым делом необходимо установить X сервер, который в настоящее время доступен в портах в двух версиях — xorg-server 1.7.7 и xorg-server 1.12.4. Я буду устанавливать более новую версию. Дополнительно отмечу, что установка более новой версии может быть необходима в случае, если вам нужно использовать последние версии видеодрайверов для карт Intel или AMD, которые используют в работе переключение видеорежимов на уровне ядра (KMS).

echo "WITH_NEW_XORG=yes" >> /etc/make.conf
cd /usr/ports/x11-servers/xorg-server
make install clean

P.S. 07.02.2015г
Опция WITH_NEW_XORG более не требуется, поскольку старая версия xorg-server удалена из портов.

Из предложенных опций сборки я выбрал следующие: AIGLX, SUID, HAL. После установки X сервера нужно поставить шрифты и драйверы для него:

cd /usr/ports/x11-drivers/xorg-drivers
make install clean
cd /usr/ports/x11-fonts/xorg-fonts
make install clean
cd /usr/ports/x11-fonts/webfonts
make install clean

Если у вас видеокарта от nvidia, то рекомендую установить драйвера от производителя (в зависимости от установленной видеокарты, выберите нужную версию):

/usr/ports/x11/nvidia-driver
/usr/ports/x11/nvidia-driver-173
/usr/ports/x11/nvidia-driver-96
/usr/ports/x11/nvidia-driver-71

P.S. Со старыми драйверами новая версия X сервера скорее всего не заработает, поэтому либо используйте старую версию X сервера, либо используйте открытые драйверы (nv, nouveau).


Итак, после того, как завершится установка вышеуказанных компонентов, можно приступать к настройке X сервера. Для начала загрузим необходимые для нормальной работы X сервера сервисы:

echo 'dbus_enable="YES"' >> /etc/rc.conf
echo 'hald_enable="YES"' >> /etc/rc.conf
service dbus start
service hald start

После этого подготавливаем рабочий конфиг X сервера — выполняем команду Xorg -configure из под пользователя root. После ее выполнения в домашнем каталоге пользователя root появится файл xorg.conf.new, который при необходимости можно отредактировать. По мере готовности, файл xorg.conf.new должен быть размещен в директории /etc/X11 под именем xorg.conf. На текущий момент файл /etc/X11/xorg.conf у меня выглядит следующим образом:

Section "ServerLayout"
    Identifier     "X.org Configured"
    Screen      0  "Screen0" 0 0
    #InputDevice    "Mouse0" "CorePointer" # закомментил, потому что используется HAL
    #InputDevice    "Keyboard0" "CoreKeyboard" # закомментил, потому что используется HAL

    Option "AllowEmptyInput" "on" # когда включена, сервер игнорирует секции устройств ввода
    Option "AutoAddDevices" "on" # автоматически добавлять новые устройства (работает, если сервер собран с поддержкой HAL)
    Option "AIGLX" "true"
    # полезна в случае, если у вас после запуска X сервера не реагирует система
    # и приходится перезапускать ее через "ресет". С данной опцией X сервер будет
    # выполнять функцию sync после каждой записи информации в лог.
    #Option "Log" "sync"
EndSection

Section "Files"
    # Здесь указываем где X серверу искать модули и шрифты
    ModulePath   "/usr/local/lib/xorg/modules"
    FontPath     "/usr/local/lib/X11/fonts/misc/"
    FontPath     "/usr/local/lib/X11/fonts/TTF/"
    FontPath     "/usr/local/lib/X11/fonts/OTF"
    FontPath     "/usr/local/lib/X11/fonts/Type1/"
    FontPath     "/usr/local/lib/X11/fonts/100dpi/"
    FontPath     "/usr/local/lib/X11/fonts/75dpi/"
    FontPath     "/usr/local/lib/X11/fonts/bitstream-vera/"
    FontPath     "/usr/local/lib/X11/fonts/webfonts/"
    FontPath     "/usr/local/lib/X11/fonts/Liberation/"
    FontPath     "/usr/local/lib/X11/fonts/dejavu/"
    FontPath     "/usr/local/lib/X11/fonts/GentiumBasic/"
EndSection

Section "Module"
    # Здесь указываем какие модули нужно подгрузить
    Load  "dbe"
    Load  "dri2"
    Load  "extmod"
    Load  "record"
    Load  "glx"
    Load  "freetype"
EndSection

Section "InputDevice"
    # Если X сервер собран с поддержкой HAL, то данная секция игнорируется
    Identifier  "Keyboard0"
    Driver      "kbd"
EndSection

Section "InputDevice"
    # Если X сервер собран с поддержкой HAL, то данная секция игнорируется
    Identifier  "Mouse0"
    Driver      "mouse"
    Option        "Protocol" "auto"
    Option        "Device" "/dev/sysmouse"
    Option        "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
    # Здесь указываются характеристики монитора
    #DisplaySize      330   250    # mm
    Identifier   "Monitor0"
    VendorName   "LG"
    ModelName    "F700P"
    HorizSync    30.0 - 98.0
    VertRefresh  50.0 - 160.0
    Option        "DPMS"

    # Modeline можно получить с помощью программы gtf:
    # например, gtf 1280 1024 85
    # 1152x864 @ 85.00 Hz (GTF) hsync: 77.10 kHz; pclk: 119.65 MHz
    Modeline "1152x864_85.00"  119.65  1152 1224 1352 1552  864 865 868 907  -HSync +Vsync
EndSection

Section "Device"
    # Здесь указываются параметры для видеодрайвера
    Option      "NoLogo" "FALSE" # не показывать заставку при запуске X сервера?
    Option      "DPI" "96 x 96"
    Option      "UseEDID" "FALSE" # использовать EDID для определения характеристик монитора? (у меня из-за нее криво выставлялось разрешение экрана)
    Identifier  "Card0"
    Driver      "nvidia"
    VendorName  "NVIDIA Corporation"
    BoardName   "G84 [GeForce 8600GT]"
    BusID       "PCI:2:0:0"
EndSection

Section "Screen"
    Identifier "Screen0"
    Device     "Card0"
    Monitor    "Monitor0"
    DefaultDepth 24
    SubSection "Display"
        Viewport   0 0
        Depth     24
        Modes "1152x864_85.00"
    EndSubSection
EndSection

Section "Extensions"
 Option  "Composite" "Enable"
EndSection

Подготовленный конфиг стоит проверить на работоспособность, для чего нужно выполнить команду Xorg -config /path/to/xorg.conf -retro. Если X сервер запустится и на экране появится серая сетка с указателем мыши в виде крестика, то конфиг можно считать работоспособным. Выйти из такого режима работы можно нажав следующие комбинации клавиш: Ctrl+Alt+Backspace или Ctrl+Alt+F1.

Когда с настройкой X сервера будет покончено, можно потихоньку перебираться к установке окружения рабочего стола MATE.

cd /usr/ports/x11/mate
make install clean

На этапе установки, порт потянет за собой некоторое количество зависимостей. Некоторые зависимости возможно собрать с конкретными опциями. И вот тут каждый должен определить для себя —  а какие опции нужны? Расписать все досконально, сами понимаете, невозможно. Поэтому, если вы чувствуете, что не понимаете зачем нужна та или иная опция, то лучше оставить как есть. Со временем, придет понимание, если ОС FreeBSD будет постоянно использоваться в работе.

С портом не поставится экранный менеджер, соответственно нужно выбрать какой-нибудь из доступных в портах (GDM, KDM, XDM, Slim  и т.п.). Я решил поставить Slim. Сказано, сделано:

cd /usr/ports/x11/slim
make install clean

По желанию, можно подправить под  себя конфиг менеджера, который располагается здесь — /usr/local/etc/slim.conf. У меня он выглядит так:

# Путь до X сервера и аргументы (если нужны)
# Учтите, что аргумент -xauth $authfile добавляется автоматически
default_path        /bin:/usr/bin:/usr/local/bin
default_xserver     /usr/local/bin/X

# Как известно, X сервер должен запускаться на выделенном терминале.
# Для FreeBSD обычно это 9 терминал.
xserver_arguments   vt09

# Команды для выключения, перезагрузки компьютера и др.
halt_cmd            /sbin/shutdown -p now
reboot_cmd          /sbin/shutdown -r now
console_cmd         /usr/local/bin/xterm -C -fg white -bg black +sb -T "Console login" -e /bin/sh -c "/bin/cat /etc/motd; exec /usr/bin/login"
suspend_cmd        /usr/sbin/acpiconf -s 3

# Полный путь до xauth
xauth_path         /usr/local/bin/xauth

# Файл Xauth для сервера
authfile           /var/run/slim.auth

# Включать NumLock (цифровую клавиатуру) при запуске Slim.
# Возможные значения: on|off
numlock             on

# Скрывать курсор мыши  (с некоторыми средами не работает).
# Возможные значения: true|false
hidecursor          false

# Данная команды выполняется после того, как пользователь
# успешно авторизовался в системе. Вы можете передать
# скрипту дополнительные аргументы %session и %theme,
# для последующей их обработки в скрипте.
#
login_cmd           exec ~/.xinitrc %session
#login_cmd           exec /bin/bash -login ~/.xinitrc %session

# Команды, которые будут выполняться после старта и
# завершения сессии. Дополнительно можно использовать 
# переменную %user.
#
# sessionstart_cmd    some command
# sessionstop_cmd    some command

# Запускать Slim в режиме демона.
# Учтите, что данный параметр может быть переопределен
# аргументами ("-d" или "-nodaemon"), с которыми запускается Slim.
# Возможные значения: true|false
#
# daemon    yes

# Возможные сессии (первая сессия в списке - сессия по умолчанию).
# Выбранная сессия помещается в переменную %session, которая
# может передаваться в login_cmd.
#
sessions            mate,xfce4,icewm-session,wmaker,blackbox

# Команда, запускаемая по нажатию F11 (требуется imagemagick или аналог)
#
screenshot_cmd      import -window root /slim.png

# Сообщение приветствие . Доступные переменные: %host, %domain
#
welcome_msg         Welcome to %host

# Сообщение сессии. Изменение сессии происходит по нажатии клавиши  F1.
#
# session_msg         Session:

# Сообщения shutdown / reboot
#
shutdown_msg       The system is powering down...
reboot_msg         The system is rebooting...

# Пользователь по умолчанию. Оставьте пустым, чтобы поле "Username"
# автоматически не заполнялось.
#
#default_user        simone

# Передать фокус в поле "Password", если задан параметр default_user.
# Возможные значения: yes|no
#
focus_password      no

# Автоматический вход в систему (без ввода пароля).
# Поставьте в yes, чтобы включить.
# Возможные значения: yes|no
#
auto_login          no

# Текущая тема. Можно указать список, чтобы тема выбиралась случайно.
# Темы можно скачать с сайта разработчика или сделать самому.
# В конце статьи (на всякий случай) я прикрепил одну темку.
#
current_theme       freebsd

# Lock file
lockfile            /var/run/slim.pid

# Log file
logfile             /var/log/slim.log

Помещаем Slim в автозагрузку, для чего правим файл /etc/ttys, где меняем

ttyv8   "/usr/local/bin/xdm -nodaemon"  xterm   off secure

на

ttyv8   "/usr/local/bin/slim"  xterm on secure

Кроме этого, у пользователя, из под которого будет осуществляться вход в систему, нужно создать в домашней директории файл .(точка)xinitrc и дать ему права на запуск. Файл должен быть примерно такого содержания:

#!/bin/sh

LANG=ru_RU.UTF-8; export LANG
LC_ALL=ru_RU.UTF-8; export LC_ALL
exec ck-launch-session mate-session

Переинициализируем терминалы командой kill -1 1 и Slim должен запуститься. После этого можно попробовать войти в систему.

Если возникли проблемы с запуском или со входом в систему, то нужно смотреть логи, в частности, лог X сервера располагается здесь — /var/log/Xorg.0.log. После успешного входа в окружение рабочего стола, необходимо произвести первоначальную настройку компонентов среды. Настройке подлежат следующие компоненты: HAL, PolicyKit, fontconfig, индикатор текущей раскладки (libmatekbd). Компоненты HAL и PolicyKit приходится настраивать для того, чтобы была возможность монтирования съемных устройств и возможность перезапуска (выключения) компьютера для обычного пользователя.

Файл /usr/local/etc/hal/fdi/policy/x11-input.fdi приводим к следующему виду:

<?xml version="1.0" encoding="ISO-8859-1"?>

<deviceinfo version="0.2">
 <device>
   <match key="info.capabilities" contains="input.keyboard">
     <merge key="input.x11_options.XkbModel" type="string">pc105</merge>
     <merge key="input.x11_options.XkbLayout" type="string">us,ru</merge>
     <merge key="input.x11_options.XkbOptions" type="string">grp:ctrl_shift_toggle</merge>
     <merge key="input.x11_options.XkbRules" type="string">xorg</merge>
     <merge key="input.x11_options.XkbVariant" type="string">basic,winkeys</merge>
   </match>
 </device>
</deviceinfo>

В файл /usr/local/etc/PolicyKit/PolicyKit.conf между директивами config вставляем следующее ($USER$ заменяем на пользователя, под которым вы работаете в системе):

  <match action="org.freedesktop.hal.power-management.shutdown">
       <return result="yes"/>
  </match>

   <match action="org.freedesktop.hal.power-management.reboot">
       <return result="yes"/>
  </match>

   <match user="$USER$">
     <match action="org.freedesktop.hal.storage.*">
       <return result="yes"/>
     </match>

     <match action="hal-storage-mount-fixed-extra-options">
       <!-- for internal devices mounted with extra options like a wished mount point -->
       <return result="yes" />
     </match>

     <match action="hal-storage-mount-removable-extra-options">
     <!-- for external devices mounted with extra options like a wished mount point -->
       <return result="yes" />
     </match>
   </match>

Файл /usr/local/etc/polkit-1/localauthority/50-local.d/org.freedesktop.consolekit.pkla должен быть такого содержания:

[Restart]
Identity=unix-group:укажите_здесь_свою_группу
Action=org.freedesktop.consolekit.system.restart
ResultAny=yes
ResultInactive=yes
ResultActive=yes

[Shutdown]
Identity=unix-group:укажите_здесь_свою_группу
Action=org.freedesktop.consolekit.system.stop
ResultAny=yes
ResultInactive=yes
ResultActive=yes

В новой версии X сервера параметры шрифтов берутся из конфигурационных файлов в директории /usr/local/etc/fonts. Может быть так, что конфигурационный файл по умолчанию /usr/local/etc/fonts/fonts.conf не создастся автоматически (как это произошло у меня), и тогда большинство шрифтов в системе видно не будет. Кроме того, в консоль стабильно может вываливаться ошибка — Fontconfig error: Cannot load default config file. В таком случае, его придется создать вручную с таким содержимым:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!-- /etc/fonts/fonts.conf file to configure system font access -->
<fontconfig>

 <!-- Find fonts in these directories -->
 <dir>/usr/local/share/fonts</dir>
 <dir>/usr/local/lib/X11//fonts</dir>

 <!-- This element contains a directory name that is supposed to be stored or read the cache of font information. -->
 <cachedir>/var/db/fontconfig</cachedir>
 <cachedir prefix="default">~/.fontconfig</cachedir>

 <!-- Accept deprecated 'mono' alias, replacing it with 'monospace' -->
 <match target="pattern">
   <test qual="any" name="family"><string>mono</string></test>
   <edit name="family" mode="assign"><string>monospace</string></edit>
 </match>

 <!-- Names not including any well known alias are given 'sans-serif' -->
 <match target="pattern">
   <test qual="all" name="family" compare="not_eq"><string>sans-serif</string></test>
   <test qual="all" name="family" compare="not_eq"><string>serif</string></test>
   <test qual="all" name="family" compare="not_eq"><string>monospace</string></test>
   <edit name="family" mode="append_last"><string>sans-serif</string></edit>
 </match>

 <!-- Load per-user customization file, but don't complain if it doesn't exist -->
 <include ignore_missing="yes" prefix="xdg">fontconfig/fonts.conf</include>

 <!-- Load local customization files, but don't complain if there aren't any -->
 <include ignore_missing="yes">conf.d</include>
 <include ignore_missing="yes">local.conf</include>

 <!--
   Alias well known font names to available TrueType fonts.
   These substitute TrueType faces for similar Type1
   faces to improve screen appearance.
 -->
 <alias>
   <family>Times</family>
   <prefer><family>Times New Roman</family></prefer>
   <default><family>serif</family></default>
 </alias>

 <alias>
   <family>Helvetica</family>
   <prefer><family>Arial</family></prefer>
   <default><family>sans</family></default>
 </alias>

 <alias>
   <family>Courier</family>
   <prefer><family>Courier New</family></prefer>
   <default><family>monospace</family></default>
 </alias>

 <!--
   Provide required aliases for standard names
   Do these after the users configuration file so that
   any aliases there are used preferentially
 -->
 <alias>
   <family>serif</family>
   <prefer><family>Times New Roman</family></prefer>
 </alias>

 <alias>
   <family>sans</family>
   <prefer><family>Arial</family></prefer>
 </alias>

 <alias>
   <family>monospace</family>
   <prefer><family>Andale Mono</family></prefer>
 </alias>

 <!--
   The example of the requirements of OR operator;
   If the 'family' contains 'Courier New' OR 'Courier'
   add 'monospace' as the alternative
 -->
 <match target="pattern">
   <test name="family" compare="eq"><string>Courier New</string></test>
   <edit name="family" mode="prepend"><string>monospace</string></edit>
 </match>

 <match target="pattern">
   <test name="family" compare="eq"><string>Courier</string></test>
   <edit name="family" mode="prepend"><string>monospace</string></edit>
 </match>
</fontconfig>

Индикатор раскладки клавиатуры (libmatekbd) настраивается для того, чтобы текущая раскладка отображалась в виде флага, а не в виде текста, как этого происходит по умолчанию. Для этого в домашней директории пользователя в директории ~/.icons/flags нужно разместить файлы (изображения флагов) с именем страны в формате ISO 3166-1 alpha-2 (например, ru.png, ru.svg, us.png. us.svg и т.п.). Файлы с изображениями флагов стран я прикрепил в конце статьи. После чего в консоле под обычным пользователем выполняем следующую команду:

dconf write /org/mate/desktop/peripherals/keyboard/indicator/show-flags true

Стоит отметить, что индикатор раскладки появляется после того, как в настройках клавиатуры на вкладке "Раскладки" будет добавлено хотя бы две раскладки.  Ко всему прочему, для нормального монтирования съемных накопителей, нужно выполнить из под простого пользователя следующую команду:

gconftool-2 --type list --list-type=string --set /system/storage/default_options/vfat/mount_options "[longnames,-u=,-L=ru_RU.UTF-8,-D=cp866]"

На этом процесс настройки рабочего места с MATE можно считать завершенным. Далее по необходимости ставьте дополнительный софт из портов.

Прикрепленные файлы
Гость (не проверено)

Для slim'а следует указать

LANG=ru_RU.UTF-8;      export LANG

в /etc/profile , иначе локаль сессии будет ... Не та, что ожидается.

Гость (не проверено)

/usr/local/etc/fonts/fonts.conf - Разве не правильнее будет создать /usr/local/etc/fonts/local.conf ???

Гость (не проверено)

А это зачем?

Файл /usr/local/etc/polkit-1/localauthority/50-local.d/org.freedesktop.consolekit.pkla должен быть такого содержания:

[Restart]
Identity=unix-group:укажите_здесь_свою_группу
Action=org.freedesktop.consolekit.system.restart
ResultAny=yes
ResultInactive=yes
ResultActive=yes

[Shutdown]
Identity=unix-group:укажите_здесь_свою_группу
Action=org.freedesktop.consolekit.system.stop
ResultAny=yes
ResultInactive=yes
ResultActive=yes



Это ведь дублирует параметры из полисикита... Нет?

nekit
Для slim'а следует указать
Как в статье тоже работает. Локаль выставляется правильно.
/usr/local/etc/fonts/fonts.conf - Разве не правильнее будет создать /usr/local/etc/fonts/local.conf ???
Вы не внимательно читали. У меня дефолтный конфигурационный файл не поставился, поэтому я его руками создал.
Это ведь дублирует параметры из полисикита... Нет?
Нет. Без этих параметров Mate не дает перезапускаться/выключаться.
Гость (не проверено)

Кто нибудь знает как настраивается Mate? Например, как объеденить все менюшки верхней панели в одну?

Вообще думал может убрать верхнюю панель вниз на место нижней, а ту убрать полностью.

Так то Mate удобная среда.



Только, вот я установил Slim в автозагрузку как тут написано, но он не загружается сам. Приодится вручную запускать командой slim

nekit
Кто нибудь знает как настраивается Mate? Например, как объединить все менюшки верхней панели в одну?
Не совсем понятно, что вы хотите получить в итоге. Если сделать одну кнопку, как в kde или винде, то можно попробовать редактором меню руками это сделать, но это не Mate-way (Gnome-way).
Вообще думал может убрать верхнюю панель вниз на место нижней, а ту убрать полностью. Так то Mate удобная среда.
Обычным перетаскиванием панелей решается и в свойствах панелей дополнительно посмотрите.
Только, вот я установил Slim в автозагрузку как тут написано, но он не загружается сам. Приходится вручную запускать командой slim
Хм, перепроверьте еще раз строку в /etc/ttys. Если не получится, то можно попробовать через rc скрипт запустить, добавив slim_enable="YES" в /etc/rc.conf.
Гость (не проверено)

В свете последний изменений в xserver имейте ввиду, что работу с клавиатурой/мышью перекалялкали с HAL на DEVD.

http://blogs.freebsdish.org/graphics/2014/11/19/xserver-1-14-update-ready/

nekit

В свете последний изменений в xserver имейте ввиду, что работу с клавиатурой/мышью перекалялкали с HAL на DEVD.

Если сказать точнее, возможность работы X сервера с использованием DEVD перестала быть экспериментальной (при компиляции X сервера предоставляется выбор между HAL и DEVD).

nostoc@live.ru

В файл /usr/local/etc/PolicyKit/PolicyKit.conf между директивами config вставляем следующее

Походу, в 1.10 перестало выключение работать. А еще микшер куда-то делся, корзина сломалась, mate-dictionary окончательно сдох и, по-моему, что-то еще.

Гость (не проверено)

Mate выглядит красиво.

Но есть два противных косяка:

1. непонятным образом выбирается раскладка. Например, консоль у меня русская включается.

2. Отсутствует нормальный полноэкранный режим. Консоль хочу без меню и декораций, а никак.

Больше всего убивает окошко TightVNC. К примеру, в LXDE я могу утащить окно на второй монитор, нажать F11, и полноценно работать, как будто на том компьютере, если на том конце разрешение такое же.

А в тут всегда есть полосы покрутки, из-за этого экрана не хватает!



 

Добавить комментарий

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Яндекс.Метрика