Уже на протяжении долгого времени на данном сайте не было новых статей про использование операционной системы 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
- /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
- 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
- # cd /usr/ports/x11/mate
- # make install clean
- # cd /usr/ports/x11/slim
- # make install clean
- # Путь до 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
- ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure
- ttyv8 "/usr/local/bin/slim" xterm on secure
- #!/bin/sh
- LANG=ru_RU.UTF-8; export LANG
- LC_ALL=ru_RU.UTF-8; export LC_ALL
- exec ck-launch-session mate-session
- <?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>
- <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>
- [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
- <?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>
- $ 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]"
вс, 15/12/2013 - 15:22
вс, 15/12/2013 - 15:43
вс, 15/12/2013 - 16:24
сб, 29/03/2014 - 05:50
сб, 29/03/2014 - 10:48
пт, 06/02/2015 - 16:04
сб, 07/02/2015 - 11:08
вс, 11/10/2015 - 12:10
пт, 26/08/2016 - 02:19
вс, 15/12/2013 - 15:19
Для slim'а следует указать
в /etc/profile , иначе локаль сессии будет ... Не та, что ожидается.