пятница, 1 декабря 2023 г.

NixOS 23.11

Поставил тут себе на ноутбук (в мае ещё) NixOS 23.05. Вчера вышла NixOS 23.11 - сделал апргейд. Некоторые вещи стали работать лучше, но вот дистрибутивный gnucash теперь падает. Пришлось заменить его на gnucash из flatpak.

Заодно в мае переехал на четвёртый Gnome. До этого все попытки заканичвались провалом. Сейчас уже стоит Gnome-45.1 и, надо сказать, этим уже можно пользоваться. Приятная фишка - если гном запущен под Wayland, то перемещение между рабочими столами можно делать быстро тремя пальцами по тачпаду. При таком управлении становится удобно иметь несколько тематических рабочих столов, а то и по одному приложению на рабочий стол (но я ещё психологически не дорос иметь 20 рабочих столов).

четверг, 11 января 2018 г.

Вывод курсов валют на Mate-панель (Gnome2)

Скрипт, вытаскивающий нужные валюты в одну строку:

#!/bin/sh

# Packages xmlstarlet and perl-libwww packages are required

USD_ID=R01235
EURO_ID=R01239

GET http://www.cbr.ru/scripts/XML_daily.asp |
     xml sel -t -v '//Valute[@ID="'$USD_ID'"]/Value' -o '$' -nl -t -v '//Valute[@ID="'$EURO_ID'"]/Value' -o '€' |
    xargs echo


Сохраняем скрипт в, например, /usr/local/bin/valutes.sh и делаем его запускаемым (chmod +x /usr/local/bin/valutes.sh).

Добавляем вывод на панель через аплет "Команда" (сейчас стоит Mate с русской локалью - в английском, наверное, Command).

По дефолту частота обновления стоит, кажется, одна секунда, что, конечно же, не подходит в данном случае. Поставил 600 секунд.

четверг, 14 декабря 2017 г.

Webex at Arch Linux

How to join the Webex meeting  for the Arch Linux 64-bit users

 

I did it! Installation of 32-bit browser is not required!

1. Uncomment multilib section in /etc/pacman.conf:
[multilib]
Include = /etc/pacman.d/mirrorlist
2. Install icedtea-web-jre32 and webex-meta from the AUR (I'm using apacman for AUR):
apacman -S icedtea-web-jre32 webex-meta
3. Install some additional packages to have sound works:
pacman -S lib32-libcanberra-pulse lib32-alsa-plugins
 4. Check sound.properties:
javax.sound.sampled.Clip=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider
javax.sound.sampled.Port=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider
javax.sound.sampled.SourceDataLine=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider
javax.sound.sampled.TargetDataLine=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider
#javax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider
#javax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider
#javax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider
#javax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider
 5. That's all! You can connect to webex meeting! I checked this with Firefox-57 and with google-chrome. Google-chrome does not open application directly - it downloads file which should be runned with Javaws (which have been installed with the icedtea-web-jre32 package).

пятница, 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 показалась симпатичной программой, но для начала использования мне не хватило возможности подключить календари Гугл.

четверг, 7 апреля 2016 г.

Akregator

Вдруг нашёл устраивающую меня читалку RSS-новостей - Akregator. Она KDE-шная, а я как раз в последнее время в KDE5 сижу.

В последнее время читал RSS через Thunderbird, но "почтовость" Громоптицы накладывает отрицательный отпечаток. Да и просто глюки присутствуют - например, у меня почему-то не открываются ссылки на WEB без копипасты.

среда, 27 мая 2015 г.

Автозапуск Guard под Emacs

Настраивал тут Guard по статье на Хабре

Вспомнил, что когда-то настраивал нотификацию, в которой вроде бы ничего сложного нет (у Emacs она работает, кажется, из коробки).

Недостаток такой нотификации в том, что если появилась ошибка, в Emacs только перекрашивается mode-line в красный цвет (если всё Ок, то зелёный), а на ошибку надо смотреть в терминал, где запущен Guard. Да и предварительно необходимо его там ещё запустить.

А что если запускать guard прямо в Emacs при начале работы с проектом?

Для запуска Guard из Emacs нашёл готовую библиотеку  ruby-guard. и положил её в ~/emacs/ruby-guard/

Обычно при начале работы с проектом я сначала открываю корневой каталог проекта в dired. Значит, цепляемся к Dired! Добавим это в ~/.emacs:


(add-hook 'dired-mode-hook ;; При открытии каталога в Dired
  (lambda ()
    ;; Если найден Guardfile, запускаем Guard:
    (if (file-exists-p (concat default-directory "Guardfile"))
      (progn
        (load-library "~/emacs/ruby-guard/ruby-guard.elc")
        (ruby-guard)))
      ;; подкрашивать строку в dired:
      (hl-line-mode)))

Теперь при открытии каталога, содержащего Guard-файл, у нас будет появляться окно с выполняющимся Guard и, как только у нас будут появляться ошибки проверки, мы сможем переходить на точку ошибки в файле, если добавим в ~/.emacs строку:

(add-hook 'shell-mode-hook 'compilation-shell-minor-mode)

Теперь, когда в guard-буффере появляется ошибка, мы можем перейти в нужный файл на строку с ошибкой просто кликом мышки на ошибке или клавишей Enter.