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

Опубликовано nekit - вс, 24/11/2013 - 17:07

Уже на протяжении долгого времени на данном сайте не было новых статей про использование операционной системы 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).

  1. # echo "WITH_NEW_XORG=yes" >> /etc/make.conf
  2. # cd /usr/ports/x11-servers/xorg-server
  3. # make install clean
P.S. 07.02.2015г Опция WITH_NEW_XORG более не требуется, поскольку старая версия xorg-server удалена из портов.
Из предложенных опций сборки я выбрал следующие: AIGLX, SUID, HAL. После установки X сервера нужно поставить шрифты и драйверы для него:
  1. # cd /usr/ports/x11-drivers/xorg-drivers
  2. # make install clean
  3. # cd /usr/ports/x11-fonts/xorg-fonts
  4. # make install clean
  5. # cd /usr/ports/x11-fonts/webfonts
  6. # make install clean
Если у вас видеокарта от nvidia, то рекомендую установить драйвера от производителя (в зависимости от установленной видеокарты, выберите нужную версию):
  1. /usr/ports/x11/nvidia-driver
  2. /usr/ports/x11/nvidia-driver-173
  3. /usr/ports/x11/nvidia-driver-96
  4. /usr/ports/x11/nvidia-driver-71
P.S. Со старыми драйверами новая версия X сервера скорее всего не заработает, поэтому либо используйте старую версию X сервера, либо используйте открытые драйверы (nv, nouveau).
Итак, после того, как завершится установка вышеуказанных компонентов, можно приступать к настройке X сервера. Для начала загрузим необходимые для нормальной работы X сервера сервисы:
  1. # echo 'dbus_enable="YES"' >> /etc/rc.conf
  2. # echo 'hald_enable="YES"' >> /etc/rc.conf
  3. # service dbus start
  4. # service hald start
После этого подготавливаем рабочий конфиг X сервера — выполняем команду Xorg -configure из под пользователя root. После ее выполнения в домашнем каталоге пользователя root появится файл xorg.conf.new, который при необходимости можно отредактировать. По мере готовности, файл xorg.conf.new должен быть размещен в директории /etc/X11 под именем xorg.conf. На текущий момент файл /etc/X11/xorg.conf у меня выглядит следующим образом:
  1. Section "ServerLayout"
  2.     Identifier     "X.org Configured"
  3.     Screen      0  "Screen0" 0 0
  4.     #InputDevice    "Mouse0" "CorePointer" # закомментил, потому что используется HAL
  5.     #InputDevice    "Keyboard0" "CoreKeyboard" # закомментил, потому что используется HAL
  6.  
  7.     Option "AllowEmptyInput" "on" # когда включена, сервер игнорирует секции устройств ввода
  8.     Option "AutoAddDevices" "on" # автоматически добавлять новые устройства (работает, если сервер собран с поддержкой HAL)
  9.     Option "AIGLX" "true"
  10.     # полезна в случае, если у вас после запуска X сервера не реагирует система
  11.     # и приходится перезапускать ее через "ресет". С данной опцией X сервер будет
  12.     # выполнять функцию sync после каждой записи информации в лог.
  13.     #Option "Log" "sync"
  14. EndSection
  15.  
  16. Section "Files"
  17.     # Здесь указываем где X серверу искать модули и шрифты
  18.     ModulePath   "/usr/local/lib/xorg/modules"
  19.     FontPath     "/usr/local/lib/X11/fonts/misc/"
  20.     FontPath     "/usr/local/lib/X11/fonts/TTF/"
  21.     FontPath     "/usr/local/lib/X11/fonts/OTF"
  22.     FontPath     "/usr/local/lib/X11/fonts/Type1/"
  23.     FontPath     "/usr/local/lib/X11/fonts/100dpi/"
  24.     FontPath     "/usr/local/lib/X11/fonts/75dpi/"
  25.     FontPath     "/usr/local/lib/X11/fonts/bitstream-vera/"
  26.     FontPath     "/usr/local/lib/X11/fonts/webfonts/"
  27.     FontPath     "/usr/local/lib/X11/fonts/Liberation/"
  28.     FontPath     "/usr/local/lib/X11/fonts/dejavu/"
  29.     FontPath     "/usr/local/lib/X11/fonts/GentiumBasic/"
  30. EndSection
  31.  
  32. Section "Module"
  33.     # Здесь указываем какие модули нужно подгрузить
  34.     Load  "dbe"
  35.     Load  "dri2"
  36.     Load  "extmod"
  37.     Load  "record"
  38.     Load  "glx"
  39.     Load  "freetype"
  40. EndSection
  41.  
  42. Section "InputDevice"
  43.     # Если X сервер собран с поддержкой HAL, то данная секция игнорируется
  44.     Identifier  "Keyboard0"
  45.     Driver      "kbd"
  46. EndSection
  47.  
  48. Section "InputDevice"
  49.     # Если X сервер собран с поддержкой HAL, то данная секция игнорируется
  50.     Identifier  "Mouse0"
  51.     Driver      "mouse"
  52.     Option      "Protocol" "auto"
  53.     Option      "Device" "/dev/sysmouse"
  54.     Option      "ZAxisMapping" "4 5 6 7"
  55. EndSection
  56.  
  57. Section "Monitor"
  58.     # Здесь указываются характеристики монитора
  59.     #DisplaySize      330   250 # mm
  60.     Identifier   "Monitor0"
  61.     VendorName   "LG"
  62.     ModelName    "F700P"
  63.     HorizSync    30.0 - 98.0
  64.     VertRefresh  50.0 - 160.0
  65.     Option      "DPMS"
  66.  
  67.     # Modeline можно получить с помощью программы gtf:
  68.     # например, gtf 1280 1024 85
  69.     # 1152x864 @ 85.00 Hz (GTF) hsync: 77.10 kHz; pclk: 119.65 MHz
  70.     Modeline "1152x864_85.00"  119.65  1152 1224 1352 1552  864 865 868 907  -HSync +Vsync
  71. EndSection
  72.  
  73. Section "Device"
  74.     # Здесь указываются параметры для видеодрайвера
  75.     Option      "NoLogo" "FALSE" # не показывать заставку при запуске X сервера?
  76.     Option      "DPI" "96 x 96"
  77.     Option      "UseEDID" "FALSE" # использовать EDID для определения характеристик монитора? (у меня из-за нее криво выставлялось разрешение экрана)
  78.     Identifier  "Card0"
  79.     Driver      "nvidia"
  80.     VendorName  "NVIDIA Corporation"
  81.     BoardName   "G84 [GeForce 8600GT]"
  82.     BusID       "PCI:2:0:0"
  83. EndSection
  84.  
  85. Section "Screen"
  86.     Identifier "Screen0"
  87.     Device     "Card0"
  88.     Monitor    "Monitor0"
  89.     DefaultDepth 24
  90.     SubSection "Display"
  91.         Viewport   0 0
  92.         Depth     24
  93.         Modes "1152x864_85.00"
  94.     EndSubSection
  95. EndSection
  96.  
  97. Section "Extensions"
  98.   Option  "Composite" "Enable"
  99. EndSection
Подготовленный конфиг стоит проверить на работоспособность, для чего нужно выполнить команду Xorg -config /path/to/xorg.conf -retro. Если X сервер запустится и на экране появится серая сетка с указателем мыши в виде крестика, то конфиг можно считать работоспособным. Выйти из такого режима работы можно нажав следующие комбинации клавиш: Ctrl+Alt+Backspace или Ctrl+Alt+F1. Когда с настройкой X сервера будет покончено, можно потихоньку перебираться к установке окружения рабочего стола MATE.
  1. # cd /usr/ports/x11/mate
  2. # make install clean
На этапе установки, порт потянет за собой некоторое количество зависимостей. Некоторые зависимости возможно собрать с конкретными опциями. И вот тут каждый должен определить для себя — а какие опции нужны? Расписать все досконально, сами понимаете, невозможно. Поэтому, если вы чувствуете, что не понимаете зачем нужна та или иная опция, то лучше оставить как есть. Со временем, придет понимание, если ОС FreeBSD будет постоянно использоваться в работе. С портом не поставится экранный менеджер, соответственно нужно выбрать какой-нибудь из доступных в портах (GDM, KDM, XDM, Slim и т.п.). Я решил поставить Slim. Сказано, сделано:
  1. # cd /usr/ports/x11/slim
  2. # make install clean
По желанию, можно подправить под себя конфиг менеджера, который располагается здесь — /usr/local/etc/slim.conf. У меня он выглядит так:
  1. # Путь до X сервера и аргументы (если нужны)
  2. # Учтите, что аргумент -xauth $authfile добавляется автоматически
  3. default_path        /bin:/usr/bin:/usr/local/bin
  4. default_xserver     /usr/local/bin/X
  5.  
  6. # Как известно, X сервер должен запускаться на выделенном терминале.
  7. # Для FreeBSD обычно это 9 терминал.
  8. xserver_arguments   vt09
  9.  
  10. # Команды для выключения, перезагрузки компьютера и др.
  11. halt_cmd            /sbin/shutdown -p now
  12. reboot_cmd          /sbin/shutdown -r now
  13. 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"
  14. suspend_cmd        /usr/sbin/acpiconf -s 3
  15.  
  16. # Полный путь до xauth
  17. xauth_path         /usr/local/bin/xauth
  18.  
  19. # Файл Xauth для сервера
  20. authfile           /var/run/slim.auth
  21.  
  22. # Включать NumLock (цифровую клавиатуру) при запуске Slim.
  23. # Возможные значения: on|off
  24. numlock             on
  25.  
  26. # Скрывать курсор мыши  (с некоторыми средами не работает).
  27. # Возможные значения: true|false
  28. hidecursor          false
  29.  
  30. # Данная команды выполняется после того, как пользователь
  31. # успешно авторизовался в системе. Вы можете передать
  32. # скрипту дополнительные аргументы %session и %theme,
  33. # для последующей их обработки в скрипте.
  34. #
  35. login_cmd           exec ~/.xinitrc %session
  36. #login_cmd           exec /bin/bash -login ~/.xinitrc %session
  37.  
  38. # Команды, которые будут выполняться после старта и
  39. # завершения сессии. Дополнительно можно использовать
  40. # переменную %user.
  41. #
  42. # sessionstart_cmd  some command
  43. # sessionstop_cmd   some command
  44.  
  45. # Запускать Slim в режиме демона.
  46. # Учтите, что данный параметр может быть переопределен
  47. # аргументами ("-d" или "-nodaemon"), с которыми запускается Slim.
  48. # Возможные значения: true|false
  49. #
  50. # daemon    yes
  51.  
  52. # Возможные сессии (первая сессия в списке - сессия по умолчанию).
  53. # Выбранная сессия помещается в переменную %session, которая
  54. # может передаваться в login_cmd.
  55. #
  56. sessions            mate,xfce4,icewm-session,wmaker,blackbox
  57.  
  58. # Команда, запускаемая по нажатию F11 (требуется imagemagick или аналог)
  59. #
  60. screenshot_cmd      import -window root /slim.png
  61.  
  62. # Сообщение приветствие . Доступные переменные: %host, %domain
  63. #
  64. welcome_msg         Welcome to %host
  65.  
  66. # Сообщение сессии. Изменение сессии происходит по нажатии клавиши  F1.
  67. #
  68. # session_msg         Session:
  69.  
  70. # Сообщения shutdown / reboot
  71. #
  72. shutdown_msg       The system is powering down...
  73. reboot_msg         The system is rebooting...
  74.  
  75. # Пользователь по умолчанию. Оставьте пустым, чтобы поле "Username"
  76. # автоматически не заполнялось.
  77. #
  78. #default_user        simone
  79.  
  80. # Передать фокус в поле "Password", если задан параметр default_user.
  81. # Возможные значения: yes|no
  82. #
  83. focus_password      no
  84.  
  85. # Автоматический вход в систему (без ввода пароля).
  86. # Поставьте в yes, чтобы включить.
  87. # Возможные значения: yes|no
  88. #
  89. auto_login          no
  90.  
  91. # Текущая тема. Можно указать список, чтобы тема выбиралась случайно.
  92. # Темы можно скачать с сайта разработчика или сделать самому.
  93. # В конце статьи (на всякий случай) я прикрепил одну темку.
  94. #
  95. current_theme       freebsd
  96.  
  97. # Lock file
  98. lockfile            /var/run/slim.pid
  99.  
  100. # Log file
  101. logfile             /var/log/slim.log
Помещаем Slim в автозагрузку, для чего правим файл /etc/ttys, где меняем
  1. ttyv8   "/usr/local/bin/xdm -nodaemon"  xterm   off secure
на
  1. ttyv8   "/usr/local/bin/slim"  xterm on secure
Кроме этого, у пользователя, из под которого будет осуществляться вход в систему, нужно создать в домашней директории файл .(точка)xinitrc и дать ему права на запуск. Файл должен быть примерно такого содержания:
  1. #!/bin/sh
  2.  
  3. LANG=ru_RU.UTF-8; export LANG
  4. LC_ALL=ru_RU.UTF-8; export LC_ALL
  5. 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 приводим к следующему виду:
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2.  
  3. <deviceinfo version="0.2">
  4.   <device>
  5.     <match key="info.capabilities" contains="input.keyboard">
  6.       <merge key="input.x11_options.XkbModel" type="string">pc105</merge>
  7.       <merge key="input.x11_options.XkbLayout" type="string">us,ru</merge>
  8.       <merge key="input.x11_options.XkbOptions" type="string">grp:ctrl_shift_toggle</merge>
  9.       <merge key="input.x11_options.XkbRules" type="string">xorg</merge>
  10.       <merge key="input.x11_options.XkbVariant" type="string">basic,winkeys</merge>
  11.     </match>
  12.   </device>
  13. </deviceinfo>
В файл /usr/local/etc/PolicyKit/PolicyKit.conf между директивами config вставляем следующее ($USER$ заменяем на пользователя, под которым вы работаете в системе):
  1.    <match action="org.freedesktop.hal.power-management.shutdown">
  2.         <return result="yes"/>
  3.    </match>
  4.  
  5.     <match action="org.freedesktop.hal.power-management.reboot">
  6.         <return result="yes"/>
  7.    </match>
  8.  
  9.     <match user="$USER$">
  10.       <match action="org.freedesktop.hal.storage.*">
  11.         <return result="yes"/>
  12.       </match>
  13.  
  14.       <match action="hal-storage-mount-fixed-extra-options">
  15.         <!-- for internal devices mounted with extra options like a wished mount point -->
  16.         <return result="yes" />
  17.       </match>
  18.  
  19.       <match action="hal-storage-mount-removable-extra-options">
  20.       <!-- for external devices mounted with extra options like a wished mount point -->
  21.         <return result="yes" />
  22.       </match>
  23.     </match>
Файл /usr/local/etc/polkit-1/localauthority/50-local.d/org.freedesktop.consolekit.pkla должен быть такого содержания:
  1. [Restart]
  2. Identity=unix-group:укажите_здесь_свою_группу
  3. Action=org.freedesktop.consolekit.system.restart
  4. ResultAny=yes
  5. ResultInactive=yes
  6. ResultActive=yes
  7.  
  8. [Shutdown]
  9. Identity=unix-group:укажите_здесь_свою_группу
  10. Action=org.freedesktop.consolekit.system.stop
  11. ResultAny=yes
  12. ResultInactive=yes
  13. ResultActive=yes
В новой версии X сервера параметры шрифтов берутся из конфигурационных файлов в директории /usr/local/etc/fonts. Может быть так, что конфигурационный файл по умолчанию /usr/local/etc/fonts/fonts.conf не создастся автоматически (как это произошло у меня), и тогда большинство шрифтов в системе видно не будет. Кроме того, в консоль стабильно может вываливаться ошибка — Fontconfig error: Cannot load default config file. В таком случае, его придется создать вручную с таким содержимым:
  1. <?xml version="1.0"?>
  2. <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
  3. <!-- /etc/fonts/fonts.conf file to configure system font access -->
  4. <fontconfig>
  5.  
  6.   <!-- Find fonts in these directories -->
  7.   <dir>/usr/local/share/fonts</dir>
  8.   <dir>/usr/local/lib/X11//fonts</dir>
  9.  
  10.   <!-- This element contains a directory name that is supposed to be stored or read the cache of font information. -->
  11.   <cachedir>/var/db/fontconfig</cachedir>
  12.   <cachedir prefix="default">~/.fontconfig</cachedir>
  13.  
  14.   <!-- Accept deprecated 'mono' alias, replacing it with 'monospace' -->
  15.   <match target="pattern">
  16.     <test qual="any" name="family"><string>mono</string></test>
  17.     <edit name="family" mode="assign"><string>monospace</string></edit>
  18.   </match>
  19.  
  20.   <!-- Names not including any well known alias are given 'sans-serif' -->
  21.   <match target="pattern">
  22.     <test qual="all" name="family" compare="not_eq"><string>sans-serif</string></test>
  23.     <test qual="all" name="family" compare="not_eq"><string>serif</string></test>
  24.     <test qual="all" name="family" compare="not_eq"><string>monospace</string></test>
  25.     <edit name="family" mode="append_last"><string>sans-serif</string></edit>
  26.   </match>
  27.  
  28.   <!-- Load per-user customization file, but don't complain if it doesn't exist -->
  29.   <include ignore_missing="yes" prefix="xdg">fontconfig/fonts.conf</include>
  30.  
  31.   <!-- Load local customization files, but don't complain if there aren't any -->
  32.   <include ignore_missing="yes">conf.d</include>
  33.   <include ignore_missing="yes">local.conf</include>
  34.  
  35.   <!--
  36.    Alias well known font names to available TrueType fonts.
  37.    These substitute TrueType faces for similar Type1
  38.    faces to improve screen appearance.
  39.  -->
  40.   <alias>
  41.     <family>Times</family>
  42.     <prefer><family>Times New Roman</family></prefer>
  43.     <default><family>serif</family></default>
  44.   </alias>
  45.  
  46.   <alias>
  47.     <family>Helvetica</family>
  48.     <prefer><family>Arial</family></prefer>
  49.     <default><family>sans</family></default>
  50.   </alias>
  51.  
  52.   <alias>
  53.     <family>Courier</family>
  54.     <prefer><family>Courier New</family></prefer>
  55.     <default><family>monospace</family></default>
  56.   </alias>
  57.  
  58.   <!--
  59.    Provide required aliases for standard names
  60.    Do these after the users configuration file so that
  61.    any aliases there are used preferentially
  62.  -->
  63.   <alias>
  64.     <family>serif</family>
  65.     <prefer><family>Times New Roman</family></prefer>
  66.   </alias>
  67.  
  68.   <alias>
  69.     <family>sans</family>
  70.     <prefer><family>Arial</family></prefer>
  71.   </alias>
  72.  
  73.   <alias>
  74.     <family>monospace</family>
  75.     <prefer><family>Andale Mono</family></prefer>
  76.   </alias>
  77.  
  78.   <!--
  79.    The example of the requirements of OR operator;
  80.    If the 'family' contains 'Courier New' OR 'Courier'
  81.    add 'monospace' as the alternative
  82.  -->
  83.   <match target="pattern">
  84.     <test name="family" compare="eq"><string>Courier New</string></test>
  85.     <edit name="family" mode="prepend"><string>monospace</string></edit>
  86.   </match>
  87.  
  88.   <match target="pattern">
  89.     <test name="family" compare="eq"><string>Courier</string></test>
  90.     <edit name="family" mode="prepend"><string>monospace</string></edit>
  91.   </match>
  92. </fontconfig>
Индикатор раскладки клавиатуры (libmatekbd) настраивается для того, чтобы текущая раскладка отображалась в виде флага, а не в виде текста, как этого происходит по умолчанию. Для этого в домашней директории пользователя в директории ~/.icons/flags нужно разместить файлы (изображения флагов) с именем страны в формате ISO 3166-1 alpha-2 (например, ru.png, ru.svg, us.png. us.svg и т.п.). Файлы с изображениями флагов стран я прикрепил в конце статьи. После чего в консоле выполняем следующую команду:
  1. $ dconf write /org/mate/desktop/peripherals/keyboard/indicator/show-flags true
Стоит отметить, что индикатор раскладки появляется после того, как в настройках клавиатуры на вкладке "Раскладки" будет добавлено хотя бы две раскладки. Ко всему прочему, для нормального монтирования съемных накопителей, нужно выполнить из под простого пользователя следующую команду:
  1. 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 можно считать завершенным. Далее по необходимости ставьте дополнительный софт из портов.
Прикрепленные файлы

вс, 15/12/2013 - 15:43

вс, 15/12/2013 - 16:24

сб, 29/03/2014 - 05:50

сб, 29/03/2014 - 10:48

сб, 07/02/2015 - 11:08

вс, 11/10/2015 - 12:10

пт, 26/08/2016 - 02:19

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

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