Category Archives: Linux

ToDo-софт на Линуксе и Geany

Меня давно занимала эта проблема, составить списочек дел и вычеркивать по мере выполнения. Что может быть проще? А фиг-то там. На Линуксе такого нет. Есть какие-то страшные черные пещерно-командные линейно-терминальные кирпично-убогие программы или наоборот хитро-заумные облако-хранимые репозиторий-недоступные китайце-разработанные спамер-привлекательные хер знает что, но чтоб всё ЦРУ знало, чем я занимаюсь. Идите вы в жопу.

Я просто взял мой Geany и на Debian 9 нарисовал простой файл todo.sh.

Вот такая болванка в стиле sh.

Оранжевая верхушка открывается и закрывается. Выполненное задание отмечается датой в начале строки. Важный текст выделяется одинарными кавычками и становится оранжевым. Важное задание помечается буквой # в начале строки и становится красным. Выполненные задания перемешаются в верхнюю часть путем сортировки линий.

Выполненные задания в закрытом положении.
Зеленая дата для выполненного задания уже поставлена, но линии еще не отсортированы.

Линии сортируются отдельным скриптом todo_sort.sh с содержимым

#!/bin/bash
sed '/^$/d' | sort

Или вот мой более элегантный сортировальный скрипт, который я написал сам на Питоне 2.7:

#!/usr/bin/python2.7

import fileinput, re

a=''
b=''
top=[]
bottom=[]

for line in fileinput.input():
	line=line.strip()

	if len(a)==0:
		if line.find('{') == 0:
			a=line
			line=''

	if len(b)==0:
		if len(line) - line.rfind('}') == 1:
			b=line
			line=''

	x = re.search("^[0-9]{4}-", line)
	
	if x != None:
		top.append(line)

	else:
		if len(line)>0:
			bottom.append(line)
			


top.sort()
bottom.sort()
print a

for x in top:
	print x

print b

for x in bottom:
	print x

Скрипт помешается в меню Edit > Format > Send Selection to > Set Custom Command

и запускается клавишной комбинацией Ctrl-1.

Формат даты меняются в меню Edit > Insert Date > Set Custom Date Format. Я поставил %Y-%m-%d %H:%M. Он так лучше сортируется в алфавитном порядке, а дата в текст вставляется комбинацией Shift-Alt-D.

Еще можно ставить маркеры, но они после сортировки исчезают.

Маркеры и кнопка «Открыть/Закрыть» запоминаются после сохранения и переоткрытия файла. Но для этого надо поставить плагины Auto-close и Numbered Bookmarks:

sudo apt-get install geany-plugin-autoclose geany-plugin-numberedbookmarks

Еще у меня на Geany есть проверка орфографии, как русской, так и английской. Куда уж без нее?

sudo apt-get install aspell aspell-en aspell-ru
sudo apt-get install geany-plugin-spellcheck

А запускается мой ToDo лончером с рабочего стола.

todo.desktop

[Desktop Entry]
Type=Application
Icon=/opt/img/todo.png
Name[en_US]=ToDo
Exec=geany /home/alex/todo.sh

WPS Office

WPS Office полностью совместим с документами Майкрософт Офис, как уверяют его китайские разработчики. Насколько сильно, я сказать не могу, поскольку последний не юзаю вообще, но вордовские файлы точно открываются и сохраняются в WPS Office. Так что есть смысл поставить его на Линукс, хотя они и говорят, что WPS Office на Линуксе находится в вечной альфе, но OpenOffice глючит даже больше.

За весь Линукс я тоже не скажу, поскольку юзаю только Убунту и Дэбиан. На Убунту 14.04 32-бит и на Убунту 17.04 64-бит WPS Office 2016 (wps-office-10.1.0.5707 deepin) работает без проблем, но на Дэбиане 9, он не запускается. Там еще надо отдельно устанавливать пакет libpng12-0, что, наверно, тоже влияет. Проблема только в маленьких значках на панели инструментов, которые плохо видно на мониторe с высоким разрешением, как на лэптопах Делл. Как значки увеличить, я способа не нашел. Шрифты можно увеличить с помощью конфигуратора QT4 Settings, если у вас QT4 установлена на компе, или поставив строчку Xft.dpi: 120 в файле ~/.Xresources, a значками глаза сломаешь.

Однако WPS Office 2019 (11.1.0.9126, самый новый на текущий момент) на вышеупомянутых двух Убунту тоже не запускается. Наверно они уже сильно старые, или потому что WPS Office 2016 разрабатывался конторой Kingsoft, а WPS Office 2019 какими-то волонтерами. Но wps-office_11.1.0.8865_amd64.deb из ссылки ниже запускается без проблем.

Нa Дэбиане 9  запускается и даже работает wps-office_11.1.0.8392_amd64.deb с пакетом libpng12-0 (1.2.50-2+deb8u3) jessie (oldoldstable) и оконным менеджером Openbox, но во весь экран и без кнопок закрытия окна. Однако без проблем работает комбинация

#Debian9 5.3.7

wps-office_9.1.0.4961_a18p1_amd64.deb
libpng12-0_1.2.50-2+deb8u3_amd64.deb

Установка

Я отсюда скачал.
Шрифты (ttf-wps-fonts) можно скачать отсюда. Их надо поместить в папку ~/.fonts.
Про проверку орфографии я написал тут.

Юзанье

В WPS Office 2019 как бы 4 отдельные программы:

wps ворд
et таблицы
wpp презентации
wpspdf PDF вьюер

“application/wps-office.pdf” not supported!

На линуксе вы можете получить ошибку “application/wps-office.pdf” not supported!”.

Китайцы – умные ребята и продвигают свой софт как умеют, проблема только в том, что майм тайп application/wps-office.pdf конфликтует с application/pdf, потому некоторые программы как Claws-Mail, например, файлы формата PDF перестанут открывать.

При установке файла .deb, wps-office меняет майм тайп базу данных, и как ее исправить обратно, на Убунту я способа не нашел. Даже если и стереть внаглую файлы

wps-office-et.xml
wps-office-pdf.xml
wps-office-wpp.xml
wps-office-wps.xml

в /usr/share/mime/packages, при каждой перезагрузке они чудесно восстанавливаются.

Но WPS-Office не обязательно устанавливать с dpkg. Он прекрасно работает без установки. Для этого надо разархивировать deb пакет, а сама прога будет находиться в папке tmp/opt.

mkdir tmp
dpkg-deb -R wps-office_11.1.0.8865_amd64.deb tmp

Потом вручную, если надо, можно сделать симлинки на екзекьютабл в /usr/bin или меню в Alacarte.

Еще я сохранил папки

tmp/usr/share/applications
tmp/usr/share/fonts
tmp/usr/share/icons

Там десктоп лончеры, иконки и фонты. Фонты я двинул в папку ~/.font.

qWords

Мне понравилась идея вставлять ссылки на дефиниции незнакомых иностранных слов с помощью Simplenote на андройдной ОС. Это пожалуй самый продуктивный способ на сегодняшний день. Однако возникает проблема, когда Simplenote тормозит во время генерирования очередной ссылки. Приходится ждать по нескольку минут или нажимать по нескольку раз. А ссылка потом открывается в браузере, где содержание не редактируется.

Потому я написал на pyQT4 свой скрипт, который работает на Линуксе просто с текстовыми файлами.

Установите pyQT4

sudo apt-get install python-qt4 qt4-qtconfig

разархивируйте пакет, и скрипт должен сразу заработать.
Скачать его можно тут.

Настройки находятся в файле  “words.py” на линии 16. У меня стоит там текстовый редактор Leafpad, а вы можете поставить какой хотите.

sudo apt-get install leafpad

 

Как привязать домен к домашнему вэб серверу

У меня дома стоит вэбсервер Апачи на старом ноуте с Лубунту 15.10, который я гоняю через Duck DNS. Это неудобно, хотя он работает очень хорошо, потому что на некоторых маил серверах субдомены бесплатного Duck DNS фильтруются как спам, и, если послать письмо со ссылкой от duckdns, то до адресата оно не доходит. Я купил доменное имя на хостинге iPage, и вот как я подключил его к своему домашнему серверу.

Допустим, у нас есть

iPage эккаунт
newsite.com новый домен, который мы недавно купили
oldsite.duckdns.org старый субдомен от бесплатного Duck DNS

I. Форвардинг для домена

Залогиниваемся в cPanel на iPage и идем в DomainCentral.

1. В списке выбираем newsite.com.

2. В табе DNS в дропдаун меню для Modify выбираем CNAME Alias.

3. В Host ставим www

4. В Point To ставим oldsite.duckdns.org

5. Переключаемся в таб Pointers.

6. В дропдаун меню для форвардинга выбираем URL и ставим www.newsite.com

7. Ставим точку в Standard.

8. Сохраняем.

II. Виртуальный хост

Теперь, если мы пойдем в браузере newsite.com, то попадем прямо к себе домой на свой ноутбук. Если ваш сайт работает, то эту главу можно пропустить, а если вместо нужной страницы вылазит какой-то другой сайт, которых на моем домашнем сервере стоит куча, то надо еще сделать и виртуальный хост.

В терминале издаем команды:

sudo mkdir /var/www/mysite.com
sudo mkdir /var/www/mysite.com/html
sudo chown -R $USER:$USER /var/www/mysite.com/html
sudo chmod -R 755 /var/www/mysite.com/html

Делаем конфигурационный файл:

sudo leafpad /etc/apache2/sites-available/mysite.com.conf

Впейстиваем и сохраняем:

 ServerAdmin admin@oldsite.duckdns.org
 ServerName mysite.com
 ServerAlias www.mysite.com
 DocumentRoot /var/www/mysite.com/html
 ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined
 #RedirectMatch ^/$ /wordpress/

Издаем еще команды:

sudo a2ensite mysite.com
sudo service apache2 restart

Теперь из браузера мы должны попасть прямо в папку html в директории /var/www/mysite.com. Если она пустая, то ее надо заполнить вэб-сайтом. Свою я стер, и сделал просто симлинк папки html от старого сайта к новому.

III. Меняем URL сайта на Вордпрессе

Если у вас сайт на Вордпрессе, то надо в Вордпрессе еще и поменять его URL.

Идем Dashboard > Settings > General и меняем.

Как компилировать проги с источника на Убунте

Компилирование проги из источника иногда может быть полезным, особенно, если вы хотите внести изменения в ее код. Но имейте в виду, что потом apt-get может установленную с помощью dpkg прогу переписать при апдейте.

Сначала сделаем папку build и переключимся в нее

mkdir build
cd build

Сам процесс компилирования выглядит следующим образом

sudo apt-get build-dep <пакет>
sudo apt-get install build-essential
apt-get source <пакет>

cd <папка>
dpkg-buildpackage -us -uc

<пакет> – это название источника, например, leafpad.

Чтоб скомпилировать из источника текстовый редактор Leafpad, команды будет такие

sudo apt-get build-dep leafpad
apt-get source leafpad

<папка> – это папка, которую вы найдете в папке build, которую мы сделали ранее, например, leafpad-0.8.18.1. Вот в нее надо переключиться

cd leafpad-0.8.18.1

Ну а когда пакет .deb будет построен, его можно установить при помощи dpkg. Например,

sudo dpkg -i leafpad_0.8.18.1-5_i386.deb

Если получится ошибка

E: Unable to find a source package for leafpad

 

это значит, что репозитории с источниками закомментированы. Это надо открыть файл /etc/apt/sources.list и убрать значок # перед репозиториями, обозначенными как deb-src.

sudo leafpad /etc/apt/sources.list
sudo apt-get update

Pulse Audio Equalizer

Пульс Аудио Эквалайзер – это как бы общесистемный эквалайзер для всего Пульс Аудио. Хотя прога своеобразная и с последними релисами Убунту даже своеобразнее чем прежде. Я неделю потратил, чтоб понять, как его включить.

Устанавливаем

sudo apt-get install pulseaudio-equalizer

После установки на Лубунту 17.04 вы не найдете ни значков никаких, не строчек в меню. Потому запускаем пульсаудио эквалайзер так

/usr/bin/qpaeq

Теперь мы получаем ошибку

There was an error connecting to pulseaudio, please make sure you have the pulseaudio dbus module loaded, exiting…

Это произошло потому, что прежде чем запускать пульс аудио эквалайзер, надо загрузить модули

pactl load-module module-equalizer-sink
pactl load-module module-dbus-protocol

/usr/bin/qpaeq

Прога запустилась, но двигание слайдеров не приводит ни к какому эффекту. Звук нигде не меняется. Это происходит потому что, пока играет Аудасиоус, в Пулсь Аудио Вольюм Контроле  в секции Playback надо переключить Built-in Audio Analog Stereo на FFT based equalizer on Built-in Audio Analog Stereo. Тогда эквалайзер для Аудасиоус заработает и в следующий раз, не включая Пулсь Аудио Вольюм Контрола повторно.

Если у вас нет Пулсь Аудио Вольюм Контрола, устанавливается он так

sudo apt-get install pavucontrol

Как услышать микрофон на Убунте в реальном времени


Я купил тульский баян, и он играет хорошо, кнопки не западают, претензий нет. Одно плохо – чего баян играет, того не слышно. Или баян еще сильно новый, или он такой по жизни – басы заглушают соло, и чего баян пищит, не слышно. Басы слышно хорошо.

Но я придумал, как выкрутиться. Я поставил с правой стороны перед пюпитром микрофон и играю на баяне в наушниках. Теперь микрофон улавливает звук, который исходит от баяна, и слышно хорошо.

Чтоб услышать микрофон в реальном времени на Убунте надо включить Loopback Mixing. Нас собственно интересуют 3 параметра:

  1. Dock Mic
  2. Dock Mic Boost
  3. Loopback Mixing

В терминале запустите

alsamixer

и сделайте как-то так


Если будет задержка во времени между нажатием кнопки на баяне и появления звука в наушниках, скорее всего потребуется установить также ядро с низкой латенцией.

sudo apt-get install linux-lowlatency linux-headers-lowlatency

Я такое ядро поставил с самого начала. Там есть небольшая задержка в доли секунды, но она не страшная, как я пробовал на своем андроидном смартфоне аппликацию для глухонемых: сказал “му-му”, услышал через минуту. Так дело не пойдет.

Мой fstab

alex – мое юзерское имя.
UUID – это номер жесткого диска, который можно найти командой

sudo blkid
# EXT4 (1)
UUID=8c7f2d68-b6ac-4f97-803f-1365fbc94898 / ext4 errors=remount-ro 0 1
# EXT4 (2)
UUID=04b6ac1b-2eaf-402d-a18a-5b61e10a4796 /home ext4 defaults 0 2
# SWAP
UUID=916de096-4d87-40b1-9514-2c0c99d20963 none swap sw 0 0
# NTFS
/dev/sda3 /home/alex/Data ntfs defaults,uid=1000,rw 0 0
# Папка Public на WD MyCloud с файловой системой CIFS
//192.168.1.238/Public /home/alex/Public cifs uid=alex,credentials=/home/alex/.MyNAS-credentials 0 0

.MyNAS-credentials – это текстовый файл с содержимым

username=admin
password=пароль
domain=WORKGROUP
# WD MyCloud целиком с файловой ситемой FTPFS
curlftpfs#admin:copcar@192.168.1.238:21 /home/alex/MyCloud fuse auto,user,uid=1000,allow_other,_netdev 0 0

CIFS как-то неприхотливее и быстрее FTPFS, но маунтит только отдельные папки, а не весь WD MyCloud целиком.

# Папка Data на сервере с IP 192.168.1.209, замаунтинная с файловой системной SSHFS на папку /home/alex/Data_server на моем лэптопе.

Файл /home/alex/.ssh/id_rsa содержит SSH ключ, который получается командой

ssh-keygen -t rsa

Без опции exec проги не запускаются.

alex@192.168.1.209:/home/alex/Data /home/alex/Data_server fuse.sshfs delay_connect,_netdev,user,idmap=user,transform_symlinks,identityfile=/home/alex/.ssh/id_rsa,allow_other,default_permissions,uid=1000,gid=1000,exec 0 0

Rsync Backup & Grub Restore

Rsync Backup

# rsync options source destination
# rsync -r -t -p -a -v --progress --delete -u -s source destination

Grub Restore

sudo mount /dev/sdb1 /mnt
sudo mount --bind /dev /mnt/dev &&
sudo mount --bind /dev/pts /mnt/dev/pts &&
sudo mount --bind /proc /mnt/proc &&
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt
grub-install /dev/sda
grub-install --recheck /dev/sda
update-grub
exit &&
sudo umount /mnt/sys &&
sudo umount /mnt/proc &&
sudo umount /mnt/dev/pts