В этой статье я покажу вам на своём опыте, что GNU/Linux и графические оболочки для него уже дозрели до уровня планшетов и вовсе не нужно бояться покупать трансформер\планшет только из-за того, что вы приверженный линуксоид. Здесь описывается сравнение и выбор оптимальной среды рабочего стола (далее DE) для планшета или трансформера, её установка и доработка для сенсорного управления.
Небольшая предыстория
Являясь обладателем небольшого (по современным меркам) телефона, 7″ планшета и ноутбука, пришла мысль о замене устройств. После некоторого раздумия пришёл к выводам:
- хочется большой (5.5-6″) телефон, чтобы можно было удобно смотреть фильмы и серфить в интернете;
- тогда в маленьком планшете нет смысла, т. к. телефон его полностью заменит, и при этом будет помещаться в карман;
- для 10″ планшета уже нужна сумка, так почему бы тогда не взять что-нибудь побольше?
- хотелось бы соединить большой планшет и ноутбук в одно устройство.
Вывод был один: трансформер – идеальный вариант.
Далее предстоял выбор трансформера: хотелось бы не просто планшет с подключаемой по Bluetooth клавиатурой, а полноценный мощный ноутбук с отсоединяемым экраном и дополнительными портами в док-станции. Мой долгий выбор пал на одну из моделей HP. О нём я рассказывать не буду, т. к. статья не про это (да и вообще получится реклама). Скажу лишь, что мне очень понравилась концепция модульности: у вас в руках мощный и лёгкий (900г) планшет, который при подключении в док-станцию приобретает настоящую клавиатуру, дополнительный жёсткий диск и становится ноутбуком, который может проработать 12 часов от 2х батарей. Паралельно со мной моей девушке понадобился ноутбук по учёбе, она хотела маленький и лёгкий, с flip форм-фактором (петли могут поворачиваться на 360°, откидывая клавиатуру за крышку и превращая ноутбук в планшет). Её выбор остановился на модели производства Dell.
Итак, у меня оказались на руках 2 устройства одного назначения, но абсолютно разного исполнения. На HP изначально была Windows 8, на Dell — 8.1. Обе системы были удалены после проверки работоспособности в магазине.
Выбор дистрибутива и DE
Всё должно быть предназначено для управления тачем, интерфейс должен быть единым и для ноутбука, и для планшета — такие концепции я поставил перед собой. Начитавшись в интернете про поддержку тачскрина разными DE, решил поставить Ubuntu из-за жестов. Жесты оказались действительно удобными, скролл пальцем есть, также для тача очень удобна широкая панель Unity (удобно листать и открывать приложения). На этом удобства закончились. Мелкие кнопки закрытия и сворачивания окна (развернуть можно жестом), невозможность пролистывания главного меню, неудобное скрытие панели (в портретной ориентации она занимает много места, а раскрыть её можно только жестом четыремя пальцами). Это меня не устраивало, к тому же я недолюбливаю Ubuntu. Поскольку Ubuntu c Unity я отбросил, а остальные известные DE с хоть какой-то поддержкой жестов можно поставить почти любой дистрибутив, был выбран ArchLinux из-за прошлого опыта (он стоит на всех моих устройствах).
Были установлены KDE4, XFCE и Gnome 3.
Тачскрин работал во всех DE из коробки, т. к. им управляет X-сервер (драйвер xf86-input-evdev устанавливается вместе с Xorg как зависимость в ArchLinux)
KDE:
плюсы:
- удобный плазмоид клавиатуры (при нажатии выдвигается снизу, не перекрывая экран)
- огромная возможность настройки и расширения, вплоть до увеличения кнопок в заколовке окна и их перемещения (для тачскрина очень полезно)
минусы:
- нет никакой поддержки тача, скролл пальцем не работает, хорошо хоть приложения перетаскиваются пальцем, пользоваться невозможно
XFCE:
плюсы:
- минималистичность, для небольших мощностей планшетов – только полезно
минусы:
- прокрутка пальцем не работает;
- отсутствие жестов.
Впрочем, XFCE ругать не за что, так как разработчики позиционируют её как в первую очередь как легковесная система для нетбуков, с чем XFCE справляется отлично.
Gnome 3:
плюсы:
- хоть какая-то экранная клавиатура, которая вылезает только при касании поля ввода (если кликнуть туда мышью клавиатура не раскроется);
- мультитач-жесты, хоть и не такие удобные, как в Unity;
- принцип управление окнами и панели как будто для планшетов и создавались;
- меню приложений в виде крупных иконок, которые можно листать пальцем;
- удобный менеджер сеансов (gdm) с поддержкой тача;
- хорошая расширяемость плагинами;
- все стандартные приложения поддерживают мультитач (например, масштабирование сведением двух пальцев в просмотре изображений).
Минусы:
- абсолютно убогая стандартная клавиатура без поддержки русского языка и без нормальной раскладки;
- другая концепция упорядочения окон (например отсутствие сворачивания при стандартных настройках) требует очень долгого привыкания.
Итак, возьмём за основу Archlinux с Gnome 3 и доработаем его.
Установка
Установку описывать не буду, всё есть по ссылке. Если хотите ускорить установку, сделайте так:
pacstrap /mnt grep sed filesystem shadow pacman screen nano mkinitcpio <span class="hljs-comment"># ставим основню систему и всё нужное</span>
genfstab -pU /mnt >> /mnt/etc/fstab <span class="hljs-comment"># генерируем fstab</span>
arch-chroot /mnt <span class="hljs-comment"># переключаемся на нашу новую систему</span>
screen -dm pacman -S —noconfirm base <span class="hljs-comment"># запускаем установку остальной системы в фоне. Сюда можете добавить пакеты, которые вам нужны в новой системе</span>
Далее делаете всё, что указано в статье на Wiki после пункта «Change root into the new system».
После основной настройки системы установим Gnome 3:
pacman -Sy gnome
systemctl <span class="hljs-built_in">enable</span> gdm
systemctl start gdm
Настройка
Начнём, собственно, адаптацию под планшет:
- Включим правый клик по долгому нажатию (с мышью тоже будет работать):
gsettings set org<span class="hljs-selector-class">.gnome</span><span class="hljs-selector-class">.desktop</span><span class="hljs-selector-class">.a11y</span><span class="hljs-selector-class">.mouse</span> secondary-click-enabled <span class="hljs-string">"true"</span> gsettings set org<span class="hljs-selector-class">.gnome</span><span class="hljs-selector-class">.desktop</span><span class="hljs-selector-class">.a11y</span><span class="hljs-selector-class">.mouse</span> secondary-click-<span class="hljs-selector-tag">time</span> <span class="hljs-string">"0.6"</span>
Вместо 0.6 можете подставить комфортное для вас время, после которого будет сделан клик правой мышью. Минус в том, что палец нужно держать идеально ровно все эти 0.6 секунд, поэтому этот фокус получается только с 2-3 раза. Нужна альтернатива.
- У большинства планшетов есть кнопка Windows (как правило под экраном). Было бы логично при нажатии на неё открывать «обзор», но он и так удобно открывается жестами, поэтому мы повесим на эту кнопку правый клик:
Устанавливаем xdotool и xbindkeys:<span class="hljs-attribute">pacman</span> -S xdotool xbindkeys
Чтобы узнать, как определяется у вас подэкранная кнопка, выполните:
touch ~/<span class="hljs-selector-class">.xbindkeysrc</span> xbindkeys -k
Запишем конфигурацию xbindkeys и добавим его в автозагрузку (вместо Super_r подставьте свой идентификатор кнопки, полученный из предыдущей команды):
<span class="hljs-keyword">echo</span> <span class="hljs-string">"\"env DISPLAY=:0 xdotool click 3\" Super_R"</span> > ~/.xbindkeysrc <span class="hljs-keyword">echo</span> <span class="hljs-string">"[Desktop Entry] </span>Name=Xbindkeys Exec=xbindkeys Type=Application Terminal=false" > /etc/xdg/autostart/xbindkeys.desktop
- Сделаем ползунки яркости и громкости пошире. Для этого скачаем патч и применим его:
curl <span class="hljs-string">http:</span><span class="hljs-comment">//pastebin.com/raw.php?i=F2WJiEUC > /tmp/theme.patch</span> patch <span class="hljs-regexp">/usr/</span>share<span class="hljs-regexp">/gnome-shell/</span>theme<span class="hljs-regexp">/gnome-shell.css < /</span>tmp/theme.patch
Получится примерно так:
- Если вы уведёте планшет в сон, после пробуждения вы заметите, что тач то собственно не работает. Gnome зачем-то отключает его как устройство ввода в X-сервере. Простое «xinput enable «ELAN Touchscreen»» исправит ситуацию после сна. Давайте сделаем демон systemd, который будет выполнять эту команду сразу после сна:
echo "[Unit] Description=Fix touchscreen after resume After=suspend.target [Service] Type=simple ExecStart=env DISPLAY=:0 xinput enable 'ELAN Touchscreen' [Install] WantedBy=suspend.target" > /usr/lib/systemd/system/touchscreen-fix.service systemctl enable touchscreen-fix
- Автоповорот… Не думал, что всё будет так легко. Драйвер для акселеометра на обоих ноутбуках не потребовался, lsusb опознавал его как «0483:91d1 STMicroelectronics». Был быстро написан скрипт на python для автоповотора. Нужно поставить python2 и прописать скрипт в автозагрузку:
pacman -S python2 xorg-xrandr curl <span class="hljs-symbol">http:</span>/<span class="hljs-regexp">/pastebin.com/raw</span>.php?i=nnecb7iA > <span class="hljs-regexp">/usr/bin</span><span class="hljs-regexp">/autorotate chmod +x /usr</span><span class="hljs-regexp">/bin/autorotate</span> echo <span class="hljs-string">"[Desktop Entry] Name=Autorotate Exec=python2 /usr/bin/autorotate Type=Application Terminal=false"</span> > <span class="hljs-regexp">/etc/xdg</span><span class="hljs-regexp">/autostart/autorotate</span>.desktop
- Отключим автопоказ стандартной экранной клавиатуры:
sed -<span class="hljs-selector-tag">i</span> <span class="hljs-string">'s/^Exec/#Exec/g'</span> /usr/share/dbus-<span class="hljs-number">1</span>/services/org<span class="hljs-selector-class">.gnome</span><span class="hljs-selector-class">.Caribou</span><span class="hljs-selector-class">.Daemon</span><span class="hljs-selector-class">.service</span> /usr/share/dbus-<span class="hljs-number">1</span>/services/org<span class="hljs-selector-class">.gnome</span><span class="hljs-selector-class">.Caribou</span><span class="hljs-selector-class">.Antler</span><span class="hljs-selector-class">.service</span>
- Установим и настроим Onboard (отличная экранная клавиатура для планшета):
pacman -S onboard gsettings <span class="hljs-built_in">set</span> org.onboard.auto-show enabled <span class="hljs-string">"true"</span> <span class="hljs-comment"># автопоказ клавиатуры при касании в поле ввода</span> gsettings <span class="hljs-built_in">set</span> org.onboard.keyboard touch-feedback-enabled <span class="hljs-string">"true"</span> <span class="hljs-comment"># увеличение кнопок при нажатии</span> gsettings <span class="hljs-built_in">set</span> org.onboard.window docking-enabled <span class="hljs-string">"true"</span> <span class="hljs-comment"># прикрепить клавиатуру к низу экрана</span> gsettings <span class="hljs-built_in">set</span> org.onboard.window <span class="hljs-built_in">enable</span>-inactive-transparency <span class="hljs-string">"true"</span> <span class="hljs-comment"># увеличение прозрачности при простое</span> gsettings <span class="hljs-built_in">set</span> org.onboard.window force-to-top <span class="hljs-string">"true"</span> <span class="hljs-comment"># всегда на переднем плане</span> gsettings <span class="hljs-built_in">set</span> org.onboard.window inactive-transparency <span class="hljs-string">"60.0"</span> <span class="hljs-comment"># прозрачность при простое</span> gsettings <span class="hljs-built_in">set</span> org.onboard.window transparency <span class="hljs-string">"20.0"</span> <span class="hljs-comment"># общая прозрачность</span> gsettings <span class="hljs-built_in">set</span> org.onboard.window transparent-background <span class="hljs-string">"true"</span> <span class="hljs-comment"># прозрачный фон</span> gsettings <span class="hljs-built_in">set</span> org.onboard.window window-decoration <span class="hljs-string">"false"</span> <span class="hljs-comment"># отключить заголовок окна (где кнопки закрыть, свернуть, etc.)</span> gsettings <span class="hljs-built_in">set</span> org.onboard layout <span class="hljs-string">"/usr/share/onboard/layouts/Compact.onboard"</span> <span class="hljs-comment"># раскладка</span> gsettings <span class="hljs-built_in">set</span> org.onboard show-status-icon <span class="hljs-string">"true"</span> <span class="hljs-comment"># показывать иконку панели уведомлений</span> gsettings <span class="hljs-built_in">set</span> org.onboard start-minimized <span class="hljs-string">"true"</span> <span class="hljs-comment"># запускать скрытой</span> <span class="hljs-built_in">echo</span> <span class="hljs-string">"[Desktop Entry] Name=Onboard-autostart Exec=onboard Type=Application Terminal=false"</span> > /etc/xdg/autostart/onboard.desktop
Теперь клавиатура будет появляться после клика в месте ввода. Это работает даже с мышью и тачпадом, поэтому если подразумевается такое использование планшета, выполните:
gsettings set org<span class="hljs-selector-class">.onboard</span><span class="hljs-selector-class">.auto-show</span> enabled <span class="hljs-string">"false"</span>
Чтобы вручную открыть клавиатуру, достаточно свайпнуть вверх с нижнего края экрана и нажать на иконку Onboard.
- При использовании без клавиатуры меню выбора ОС в Grub можно скрыть. Для этого поставим пакет из AUR:
curl -O https:<span class="hljs-comment">//aur.archlinux.org/packages/gr/grub-holdshift/grub-holdshift.tar.gz</span> tar -xf grub-holdshift<span class="hljs-selector-class">.tar</span><span class="hljs-selector-class">.gz</span> cd grub-holdshift makepkg -si grub-mkconfig -o /boot/grub/grub.cfg
- Если в вашем планшете SSD, советую также прочитать эту статью
- Ещё большую функциональность жестов (например, разворачивание окна на весь экран свайпом тремя пальцами вверх, сворачивание свайпом вниз) сможет дать touchegg. Однако стандартных мультитач-жестов в Gnome достаточно.
Теперь система готова для использования только тачскрином. Всё удобно, а главное, отлично адаптировано под формат планшета, при этом во время работы в режиме планшет+док-станция, отличий от обычного Gnome 3 вы почти не заметите.
Вывод
Если вы приверженный линуксоид, и вы не покупаете планшет\трансформер только из-за того, что придётся отказаться от Linux — ничего подобного. Работать гораздо удобнее чем в Windows из-за, хотя бы, поддержки жестов в Gnome 3.
После обновления 3.16 в Gnome изменили дизайн трея, теперь это не панель, выдвигающаяся снизу экрана
В итоге пользоваться клавиатурой стало трудно, иногда даже включал «плавающий значок при свёрнутом Onboard» в настройках. Это решается расширением, которое позволяет открыть клавиатуру свайпом вверх с нижнего края экрана.
Также пункт 6 утратил актуальность, теперь это также решается расширением. Если вы таки предпочитаете стоковую клавиатуру и вам не нравится, что она накладывается сверху на окна, можете воспользоваться этим.
Также можно немного облегчить жизнь в портретном режиме (при 1366×768 туда не влазит большинство заголовков окон), поставив это и вот это.