пятница, 31 марта 2017 г.

Запуск Hiri в Arch Linux через Docker

В виду того, что на новой работе для обмена почтой используется Microsoft Exchange, я настроил в своём Arch почтовик Evolution. Функционально вроде бы всё есть, но до MS Outlook немного не дотягивает.

Решил поискать, какие ещё программы могут работать с MS Exchange из Linux и наткнулся на неизвестную мне ранее Hiri. Судя по скриншотам, может быть чем-то интересным, но под Arch программа не запустилась. Запуск Hiri с env LIBGL_DEBUG=verbose показал, что ей чем-то не нравятся мои версии библиотек Arch.

Так как мне надо было всего лишь "на посмотреть" и как раз недавно ковырял Docker, решил немного попытать Docker на тему запуска GUI приложений. В итоге, можно считать, у меня всё получилось, хотя есть ещё косяк - Hiri не отображает картинки в письмах. Думаю, не хватает какой-то QT-либы в контейнере.

И так, для начала необходимо создать файл Dockerfile в котором пропишем:

FROM debian

RUN apt-get update && apt-get install -y sudo wget libxcursor1 libxss1 libasound2 libxcomposite1 libxtst6 libxaw7 libxft2 \
    libxcb-keysyms1 \
    libxcb-image0 \
    libxcb-shm0 \
    libxcb-icccm4 \
    libxcb-sync1 \
    libxcb-xfixes0 \
    libxcb-shape0 \
    libxcb-randr0 \
    libxcb-render-util0 \
    libfontconfig1 \
    libfreetype6 \
    libx11-6 \
    libxext6 \
    libxfixes3 \
    libxi6 \
    libxrender1 \
    libxcb1 \
    libx11-xcb1 \
    libxcb-glx0 \
    xauth \
    libglu1-mesa \
    libxkbcommon0 \
    libxcb-xkb1 \
    libxslt1.1 \
    libgstreamer-plugins-base0.10


# Set timezone
RUN echo "Asia/Novosibirsk" > /etc/timezone

# Replace 1000 with your user / group id
RUN export uid=1000 gid=1000 && \
    mkdir -p /home/user && \
    echo "user:x:${uid}:${gid}:User,,,:/home/user:/bin/bash" >> /etc/passwd && \
    echo "user:x:${uid}:" >> /etc/group && \
    echo "user ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/user && \
    chmod 0440 /etc/sudoers.d/user && \
    chown ${uid}:${gid} -R /home/user

# Install Hiri
RUN wget https://feedback.hiri.com/downloads/Hiri.tar.gz -O /tmp/Hiri.tar.gz --progress=dot:giga && \
    cd /opt/ && \
    tar oxf /tmp/Hiri.tar.gz && \
    rm -f /tmp/Hiri.tar.gz && \
    chmod -R go-w hiri

USER user
ENV HOME /home/user
WORKDIR /home/user
CMD /opt/hiri/hiri.sh

Необходимо заменить таймзону Asia/Novosibirsk на подходящую. Если этого не сделать, календарь будет показывать время неправильно, несмотря на установку таймзоны в профиле.

Теперь в каталоге с Dockerfile выполняем команду
docker build -t hiri .
Это создаст образ с именем hiri. Теперь создадим из этого образа рабочий контейнер с именем hiri:
docker run -ti -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --name=hiri hiri

Контейнер будет создан и сразу запустится Hiri. По выходу из Hiri произвести запуск контейнера можно командой
docker start hiri
Не нужно опять запускать docker run!!! В этом случае вы получите исходную конфигурацию без персональных настроек.

Чтобы не проделывать самостоятельно работу  по созданию контейнера можно сразу скачать и запустить его с docker-hub:

docker run -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --name=hiri ktak007/hiri

В целом Hiri показалась симпатичной программой, но для начала использования мне не хватило возможности подключить календари Гугл.