Используем UNC пути в Wine и Crossover

Создаем каталог unc где wine или crossover будет искать unc пути

Для Wine
mkdir ~/.wine/dosdevices/unc

Для crossover

mkdir -p ~/.cxoffice/{ИМЯ_БУТЫЛКИ}/dosdevices/unc

Создаем каталог с именем или IP адресом из UNC ссылки монтируемого девайса
Например IP сервера 192.168.1.100или ДНС имя MyServer

Для Wine
По IP

mkdir ~/.wine/dosdevices/unc/192.168.1.100

По ДНС имени

mkdir ~/.wine/dosdevices/unc/MyServer

Для crossover
По IP

mkdir -p ~/.cxoffice/{ИМЯ_БУТЫЛКИ}/dosdevices/unc/192.168.1.100

По ДНС имени

mkdir -p ~/.cxoffice/{ИМЯ_БУТЫЛКИ}/dosdevices/unc/MyServer

Создаем симлинки

/media/MyShare это куда у нас смонтирована шара с сервера

Для Wine
По IP

ln -s /media/MyShare ~/.wine/dosdevices/unc/192.168.1.2/MyShare

По ДНС
ln -s /media/MyShare ~/.wine/dosdevices/unc/MyServer/MyShare

Для crossover
По IP

ln -s /media/MyShare ~/.cxoffice/{ИМЯ_БУТЫЛКИ}/dosdevices/unc/192.168.1.100/MyShare

По ДНС

ln -s /media/MyShare ~/.cxoffice/{ИМЯ_БУТЫЛКИ}/dosdevices/unc/MyServer/MyShare

Включаем контейнеры вкладок в Firefox

В Mozilla Firefox существует возможность держать вкладки в отдельных контейнерах,
это например дает возможность использовать один сайт с разными аккаунтами в одном окне.

Контейнеры вкладок включаются в настройках

Если такой опции нет, ее можно активировать через

1
about:config

Найти параметр

1
privacy.userContext.ui.enabled

Перевести параметр в true

libadwaita GNOME

Для начала нужно установить сами темы
Подключаем репозитории если у кого не подключены

1
2
sudo zypper ar -f obs://home:Dead_Mozay Dead_Mozay
sudo zypper ar -f obs://home:Dead_Mozay:GNOME:Apps Dead_Mozay:GNOME:Apps

Устанавливаем темы и необходимое ПО

1
sudo zypper in adw-gtk3 KvLibadwaita kvantum-manager qt5ct qt6ct gnome-tweaks kvantum-qt5 kvantum-qt6

Для qt5ct добавляем переменную окружения

1
2
sudo -i
echo 'export QT_QPA_PLATFORMTHEME="qt5ct"' >> /etc/environment

Приступаем к включению самих тем

Открываем gnome-tweaks и выбираем тему adw-gtk3 для устаревших приложений

Kvantum manager

Теперь выбираем тему KvLibadwaita для Qt5 приложений,
запускаем kvantum-manager, и в разделе Change/Delete Theme
Выбираем тему KvLibadwaita и жмем Use this theme

Если какое то приложение откажется принимать новое оформление,
идем во вкладку Application Themes, в Installed Theme выбираем KvLibadwaita и в строке Application(s) перечисляем через запятую исполняемые файлы нужных приложений, и жемем Save.

Далее необходимо задать стиль внешнего вида kvantum для Qt5 приложений.

qt5ct

На предупреждение сверху не обращаем внимания, для этого задали переменную export QT_QPA_PLATFORMTHEME="qt5ct", после перезагрузки оно исчезнет.

Открываем qt5ct, стиль выбираем kvantum и жмем Применить

Во вкладке Стиль значков выбираем Adwaita и жмем Применить

Для qt6ct то же самое, переменную не нужно трогать.

YaST2

Так как YaST запускается от пользователя root, данные настройки к нему не будут применены.
Что бы это исправить нужно повторить все настройки в этих программых что сделали ранее запуская kvantum-manager и qt5ct от root

1
gnomesu /usr/bin/kvantummanager

и

1
gnomesu /usr/bin/qt5ct

Так же возможно что в qt5ct запущенной от root во вкладке Шрифты могут быть не стандартные шрифты, выбираем по своему вкусу.

для большей уверенности можно добавить YaST в список приложений к теме в Kvantum manager

Flatpak

Для flatpak так же нужно установить движок тем kvantum

если flatpak в пользовательском пространстве

1
flatpak --user install org.kde.KStyle.Kvantum

если нет

1
sudo flatpak install org.kde.KStyle.Kvantum

Внимание!!! там 2 ветки с движком, по этому у вас спросят какую выбрать, отвечаем 5.15-21.08, в ней kvantum версии 1.0.3
во второй 1.0.0, а нам посвежей подавай.

Далее необходимо дать права на чтение каталога с kvantum темами

Пользовательское пространство для всех приложений

1
flatpak --user override --env=QT_STYLE_OVERRIDE=kvantum --filesystem=xdg-config/Kvantum:ro

для отдельного приложения

1
flatpak --user override --env=QT_STYLE_OVERRIDE=kvantum --filesystem=xdg-config/Kvantum:ro com.some.app

если от root для всех приложений

1
sudo flatpak override --env=QT_STYLE_OVERRIDE=kvantum --filesystem=xdg-config/Kvantum:ro

для отдельного приложения

1
sudo flatpak override --env=QT_STYLE_OVERRIDE=kvantum --filesystem=xdg-config/Kvantum:ro com.some.app

Либо это можно сделать в приложении Flatseal

Для всех

Для конкретного

После всех настроек перезагружаем ПК

После перезагрузки qt5ct должен заработать

Теперь все должно выглядеть более или менее в одном стиле,
включая YaST2

Настраиваем dracut-sshd

Настраиваем разблокировку через ssh зашифрованных luks разделов при загрузке системы.

Важно подметить что /boot раздел должен быть отдельной точкой монтирования и без шифрования как и /boot/efi

  1. Устанавливаем dracut-sshd
1
sudo zypper in dracut-sshd
  1. Создаем конфиг для активации модуля network
1
sudoedit /etc/dracut.conf.d/90-network.conf

с содержимым

1
add_dracutmodules+=" network "
  1. Далее нужно добавить в GRUB_CMDLINE_LINUX параметры для сети
1
rd.neednet=1 ip=dhcp

или указать конкретный адрес и маску, например

1
rd.neednet=1 ip=192.168.1.10:255.255.255.0
  1. Теперь нужно пересобрать образ ядра
1
sudo dracut -f -v
  1. Копируете свой ssh ключ для root с удаленной машины откуда будем подключаться. Подразумевается что он у вас уже есть.
1
ssh-copy-id -i ~/.ssh/id-rsa root@192.168.1.10

P.S. Согласно документации dracut-ssh ищет ключи в указанных файлах

1
2
3
/root/.ssh/dracut_authorized_keys
/etc/dracut-sshd/authorized_keys
/root/.ssh/authorized_keys
  1. После этого можно перезагружаться, разблокировка по ssh должна работать.

Процесс разблокировки

  1. Подключаемся по ssh
1
ssh root@192.168.1.10
  1. Вы должны увидеть нечто подобное
1
2
3
4
5
6
7
8
9
10
Welcome to the early boot SSH environment. You may type

 systemd-tty-ask-password-agent

(or press "arrow up") to unlock your disks.

This shell will terminate automatically a few seconds after the
unlocking process has succeeded and when the boot proceeds. 

initramfs-ssh:/root#
  1. Из приветствия видно, что бы разблокировать нужно ввести
1
systemd-tty-ask-password-agent

После чего вас попросят ввести парольные фразы от ключей шифрования.

1
Please enter passphrase for disk cr_root:

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

  1. После разблокировки ssh сессия автоматически завершится а на удаленном ПК продолжится загрузка ОС.

Чиним пробуждение после гибернации в openSUSE

Случается что у многих людей после выхода системы из сна вместо ожидаемого рабочего стола пользователь видит черный экран.
Одна из возможных причин причин это не загружен модуль ядра resume

Самый простой способ проверить его наличие в initrd выполнить

1
sudo dracut -f

В полученом логе ищем в строках Including module: модуль resume

Если вы такого не нашли, добавляем вручную

1
sudo dracut -a resume -f

Создадим конфиг для автоматического включения модуля

1
sudoedit /etc/dracut.conf.d/99-resume.conf

С содержимым

1
add_dracutmodules+=" resume "

Пробелы не убираем, таков синтаксис.

Теперь можно выполнить сборку initrd при помощи dracut

1
sudo dracut -f

Выход из спячки должен заработать.

Делаем ширину вкладок меньше

Посвещается тем кого бесит увеличенный UI в Firefox

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

1
about:config

и найти строку

1
browser.compactmode.show

Двойным кликом переключаем значение в true
Далее просто выбираем его в настройках
Жмем на "гамбургер" > Другие инструменты > Настройка панели инструментов > Значки
Выбираем Компактный

Или же можно сразу включить его на странице about:config

Ищем параметр

1
browser.uidensity

Задаем значение

1
2
3
0 => Нормальный (Поумолчанию)
1 => Компактный
2 => Мобильный (Заточен под пальцы)

Нас интересует 1

Изменения применятся сразу же, перезапуск не требуется

Postgresql ugrade

Для начала создадим файл с переменными

1
2
3
4
5
6
cat > /tmp/pq_upgrade << EOL
export OLD_VER=12
export NEW_VER=13
export DBDIR="/var/lib/pgsql/"
export BINDIR="/usr/lib/postgresql"
EOL

Устанавливаем новые пакеты

1
2
source /tmp/pq_upgrade
zypper in $(rpmqpack | grep "^postgresql${OLD_VER}" | sed -e "s|${OLD_VER}|${NEW_VER}|g")

Перенесем конфиги в /etc/postgresql если не перенесли ранее

1
2
3
4
source /tmp/pq_upgrade
mkdir -p /etc/postgresql
cp ${DBDIR}/data/*conf /etc/postgresql/
chown postgres:postgres /etc/postgresql/*

Инициализация новой БД

1
2
3
4
5
6
7
su - postgres
source /tmp/pq_upgrade
cd ${DBDIR}
install -d -m 0700 -o postgres -g postgres data${NEW_VER}
cd ${DBDIR}/data${NEW_VER}
${BINDIR}/bin/initdb .

1
2
3
4
5
6
7
8
9
10
11
su - postgres
source /tmp/pq_upgrade
cd ${DBDIR}/data${NEW_VER}

for i in pg_hba.conf pg_ident.conf postgresql.conf postgresql.auto.conf ; do
old $i
ln -s /etc/postgresql/$i .;
# diff $i $i-$(date +"%Y%m%d")
done

exit

Сама миграция

1
2
3
4
5
6
7
8
9
10
systemctl stop postgresql

su - postgres
source /tmp/pq_upgrade
cp -R ${DBDIR}/data ${DBDIR}/data${OLD_VER}
pg_upgrade --link \
--old-bindir="${BINDIR}${OLD_VER}/bin" \
--new-bindir="${BINDIR}${NEW_VER}/bin" \
--old-datadir="${DBDIR}/data${OLD_VER}/" \
--new-datadir="${DBDIR}/data${NEW_VER}/"

Переключаемся на новую БД

1
2
3
source /tmp/pq_upgrade
cd ${DBDIR}
ln -fs data${NEW_VER} data

Или альтернативный способ через sysconfig

1
2
source /tmp/pq_upgrade
echo "POSTGRES_DATADIR='${DBDIR}/data${NEW_VER}'" >> /etc/sysconfig/postgresql

Очистка

1
2
3
4
5
6
7
8
9
sudo -i -u postgres
source /tmp/pq_upgrade
${BINDIR}${NEW_VER}/bin/vacuumdb \
--all \
--analyze-in-stages

${BINDIR}${NEW_VER}/bin/reindexdb \
--all \
--concurrently

Настраиваем lsd как замену ls

Для lsd желательно использовать nerd fonts для полного отображения всех иконок/значков в терминале

Например URxvt шрифт Sauce Code Pro
Добавить строку

1
URxvt*font:    xft:Sauce Code Pro Nerd Font:style=Regular:size=11

в файл /usr/etc/X11/Xresources

Создаем alias, для этого открываем ~/.bashrc, ~/.zshrc и т.д.

Добавляем строки в файл

1
2
3
4
5
alias ls='lsd'
alias l='ls -l'
alias la='ls -a'
alias lla='ls -la'
alias lt='ls --tree'

При использовании oh-my-zsh так же необходимо снять коментарий со строки

1
DISABLE_LS_COLORS="true"

Иначе OMZ будет перезаписывать настройки alias

Синхронизация с сервисами Google

Некоторые из вас могут знать, что Google удалил ключи API для синхронизации в новейших версиях Chromium, возвращаем эту фичу.

Для начала необходимо вступить в пару групп, ВАЖНО, все это делается под тем аккаунтом на котором будет висеть синхронизация!!!

  1. https://groups.google.com/a/chromium.org/forum/?fromgroups#!forum/chromium-dev (можно без получения уведомлений)
  2. https://groups.google.com/u/1/a/chromium.org/g/google-browser-signin-testaccounts (можно без получения уведомлений)

Переходим по адресу https://cloud.google.com/console и логинимся под своим аккаунтом.

Жмем в левом верхнем углу что бы создать новый проект

Жмем New project

Пишем имя проекта и жмем Create

Идем в раздел APIs and Services > Library

Набираем в поиск ниже перечисленные API и включаем их

1
2
3
4
5
6
7
8
9
10
11
12
Cloud Search API
Geolocation API
Google Drive API
Safe Browsing API
Time Zone API

Дополнительные:
Admin SDK
Geocoding API
Google Assistant API
Google Calendar API
Nearby Messages API

Идем в раздел APIs and Services > Credentials
Жмем Create credentials и выбираем OAuth client ID
Жмем Configure consent screen Заполните «Название продукта» (назовите его как хотите) и другие данные, если они у вас есть, затем нажмите «Сохранить» внизу.

Возвращаемся в раздел Credentials и жмем Add credentials из выпадающего списка выбираем OAuth client ID
Тип приложения выбираем Desktop app имя можно указать любое, жмем Create
Должно появиться всплывающее окно с client ID и client secret кодами, сохраняем в текстовый файл или еще куда нибудь если нужно, к этим данным вы можете иметь доступ в любое время из ЛК https://cloud.google.com/consol

Снова жмем Create credentials и выбираем API key
Должно появиться всплывающее окно с API ключем. Так же можно сохранить его в текстовый файл.

Теперь у нас есть 3 кода

1
2
3
- API key
- OAuth client id
- OAuth client secret

Теперь нам нужно задать переменные с этими кодами

Создаем файл /etc/profile.d/chromium.sh или /usr/etc/profile.d/chromium.sh
И добавим наши переменные

1
2
3
export GOOGLE_API_KEY="ваш API key"
export GOOGLE_DEFAULT_CLIENT_ID="ваш client id"
export GOOGLE_DEFAULT_CLIENT_SECRET="ваш client secret"

Сохраняем файл.

Перезапускаем сессию пользователя или перезагружаем ПК.
Синхронизация должна заработать.

Меняем MAC адрес

Вариант 1

Утилита ip уже должна быть в составе каждого дистрибутива

Для начала посмотрим где у нас и чего

1
ip link show

Должны получить список интерфейсов и некоторой инфой, включая MAC адреса и имена интоерфесов
Для смены наберем

1
sudo ip link set dev enpXsX address XX:XX:XX:XX:XX:XX

где enpXsX это имя интерфейса где необходимо сменить MAC, где XX:XX:XX:XX:XX:XX это MAC который вам нужен

Вариант 2

При помощи утилиты macchanger

Для генерации случайного MAC можно использовать аргумент -r

1
sudo macchanger -r enpXsX

для проверки можно набрать

1
ip addr

Для того что бы указать конкретный MAC можно использовать аргумент --mac или -m

1
sudo macchanger --mac=XX:XX:XX:XX:XX:XX enpXsX

Что бы сбросить изменения можно выполнить

1
macchanger -p enpXsX

Важно, эффект сохранится только до перезагрузки, после MAC снова сбросится.

Для постоянного эффекта можно создать systemd service

1
sudoedit /etc/systemd/system/changemac@.service

С таким содержимым, значения подставляете свои.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=Changes mac for %I
Wants=network.target
Before=network.target
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device

[Service]
Type=oneshot
User=root
ExecStart=/usr/bin/macchanger --mac=XX:XX:XX:XX:XX:XX enpXsX %I
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Включаем сервис

1
sudo systemctl enable changemac@enpXsX.service

Теперь после старта системы сервис будет выставлять указанный MAC адрес.

Удаление сервиса.

Отключаем сервис

1
sudo systemctl disable --now changemac@enpXsX.service

И удаляем service

1
sudo rm /etc/systemd/system/changemac@.service