На повестке дня gsettings
Сегодня расскажу вам про чудеса, которые можно вытворять с вашими приложениями благодаря системе хранения конфигураций GSettings. Мне лично эта находка сэкономила кучу времени на проработке способов хранить, заполнять и парсить конфиги.
GSettings - API, которое позволяет приложениям управлять параметрами ключ-значение: сохранять их, изменять и получать. Данные настройки хранятся в бинарном формате, ну а почитать их можно через XML схему, которую должно предоставлять приложение.
И так, очередная задача - нужно реализовать менеджер уведомлений. Запрос следующий: дать пользователю удобный интерфейс по управлению сообщениями сети и добавить общесистемный конфиг, через который можно было бы выставлять глобальные настройки.
Сразу у меня возникли мысли: “Опять этот гемор с парсингом”. Все оказалось проще - GTK приложение, которое использует Glib, может создать объект GSettings, указать имя схемы, в которой будут содержаться настройки и управлять ими.
А-ля, нам нужно дать пользователю возможность отключить ММС-ки о том, что подключение к VPN разорвано. Не вопрос:
1) добавляем в схему (….gschema.xml) дополнительную настройку
2) через get/set вызовы получаем и обновляем данные
Если отработал ивент на уведомление, просто определяем его тип и сверяем со значением конкретной настройки.
Если приложение не предоставляет GUI по управлению GSettings, пользователь может работать с ними либо через одноименную CLI утилиту, либо через GUI менеджер dconf-editor:
После правок, локальный бинарный конфиг, скорее всего, будет лежать в каталоге "~/.config/dconf/":
Если админу нужно указать глобальные настройки для всех пользователей, он может вручную подредактировать схему. Обычно они лежат в "/usr/share/glib-2.0/schemas/":
После того, как дефолтные параметры изменены, XML нужно обязательно скомпилить, т.к. читается именно бинарное представление. Без этого этапа изменения не будут применены:
LinuxCamp | #story
Сегодня расскажу вам про чудеса, которые можно вытворять с вашими приложениями благодаря системе хранения конфигураций GSettings. Мне лично эта находка сэкономила кучу времени на проработке способов хранить, заполнять и парсить конфиги.
GSettings - API, которое позволяет приложениям управлять параметрами ключ-значение: сохранять их, изменять и получать. Данные настройки хранятся в бинарном формате, ну а почитать их можно через XML схему, которую должно предоставлять приложение.
И так, очередная задача - нужно реализовать менеджер уведомлений. Запрос следующий: дать пользователю удобный интерфейс по управлению сообщениями сети и добавить общесистемный конфиг, через который можно было бы выставлять глобальные настройки.
Сразу у меня возникли мысли: “Опять этот гемор с парсингом”. Все оказалось проще - GTK приложение, которое использует Glib, может создать объект GSettings, указать имя схемы, в которой будут содержаться настройки и управлять ими.
А-ля, нам нужно дать пользователю возможность отключить ММС-ки о том, что подключение к VPN разорвано. Не вопрос:
1) добавляем в схему (….gschema.xml) дополнительную настройку
<key name="disable-vpn-disconnect-notification" type="b">
<default>false</default>
<summary>...</summary>
<denoscription>...</denoscription>
</key>
2) через get/set вызовы получаем и обновляем данные
g_settings_set_boolean (applet->gsettings, "disable-vpn-disconnect-notification", state);
g_settings_get_boolean (applet->gsettings, "disable-vpn-disconnect-notification");
Если отработал ивент на уведомление, просто определяем его тип и сверяем со значением конкретной настройки.
Если приложение не предоставляет GUI по управлению GSettings, пользователь может работать с ними либо через одноименную CLI утилиту, либо через GUI менеджер dconf-editor:
$ gsettings set org.gnome.nm-applet disable-connected-notifications "true"
$ sudo apt install dconf-editor
После правок, локальный бинарный конфиг, скорее всего, будет лежать в каталоге "~/.config/dconf/":
~/.config/dconf$ ls
user
Если админу нужно указать глобальные настройки для всех пользователей, он может вручную подредактировать схему. Обычно они лежат в "/usr/share/glib-2.0/schemas/":
$ ls /usr/share/glib-2.0/schemas/
org.gnome.desktop.sound.gschema.xml
org.gnome.nm-applet.gschema.xml
org.gnome.desktop.a11y.gschema.xml
После того, как дефолтные параметры изменены, XML нужно обязательно скомпилить, т.к. читается именно бинарное представление. Без этого этапа изменения не будут применены:
$ sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
LinuxCamp | #story
👍17🔥13❤6❤🔥1
Обновление SteamOS 3.7.3 Preview
После объявления Valve о расширении SteamOS за пределы Steam Deck и запуске публичной беты:
— разработчики продолжают активно улучшать совместимость системы с другими портативными игровыми устройствами.
В марте вышла первая тестовая версия SteamOS 3.7.0, а теперь доступна новая сборка SteamOS 3.7.3 Preview — экспериментальная версия SteamOS с улучшениями.
Изменения:
— Добавлена поддержка ограничения кадровой частоты для дисплеев с переменной частотой обновления (VRR), как встроенных, так и внешних.
— Исправлен сбой, возникавший при отсутствии подключённых дисплеев.
— Добавлена поддержка кнопки питания на портативных устройствах Asus и Lenovo.
— Улучшена поддержка ввода на устройствах Asus и Lenovo.
Интересно следить за развитием этой ОС. Сам декой побаловался и лежит теперь на самой верхней полочке. Там уже, наверное, 100500 апдейтов вышло, надо глянуть👀
LinuxCamp | #news
После объявления Valve о расширении SteamOS за пределы Steam Deck и запуске публичной беты:
— разработчики продолжают активно улучшать совместимость системы с другими портативными игровыми устройствами.
В марте вышла первая тестовая версия SteamOS 3.7.0, а теперь доступна новая сборка SteamOS 3.7.3 Preview — экспериментальная версия SteamOS с улучшениями.
Изменения:
— Добавлена поддержка ограничения кадровой частоты для дисплеев с переменной частотой обновления (VRR), как встроенных, так и внешних.
— Исправлен сбой, возникавший при отсутствии подключённых дисплеев.
— Добавлена поддержка кнопки питания на портативных устройствах Asus и Lenovo.
— Улучшена поддержка ввода на устройствах Asus и Lenovo.
Интересно следить за развитием этой ОС. Сам декой побаловался и лежит теперь на самой верхней полочке. Там уже, наверное, 100500 апдейтов вышло, надо глянуть
LinuxCamp | #news
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥7❤🔥2❤1
Буквально вчера столкнулся с проблемой. Поехал, значит, на отдых и вспомнил под вечер, что надо поработать чуток. Зашел в номер, открыл ноут и начал подключаться к сети. Не думал, что столкнусь с проблемой на таком базовом действии)
Нужно было подключиться с "Debain-based" дистра к открытой сети, в которой авторизация происходила через перенаправление на определенный сайт. Такая штука называется "CaptivePortal".
Попробовал через nm-applet - не сработало. Попробовал через nmcli - аналогичная история. Начал гуглить и нашел вот тут следующее решение:
Команду нужно выполнить после базового подключения к сети. Далее вводишь, что нужно и вуаля, все работает!
LinuxCamp | Chat | #microhelp
Нужно было подключиться с "Debain-based" дистра к открытой сети, в которой авторизация происходила через перенаправление на определенный сайт. Такая штука называется "CaptivePortal".
Попробовал через nm-applet - не сработало. Попробовал через nmcli - аналогичная история. Начал гуглить и нашел вот тут следующее решение:
$ xdg-open http://$(ip --oneline route get 1.1.1.1 | awk '{print $3}')
Команду нужно выполнить после базового подключения к сети. Далее вводишь, что нужно и вуаля, все работает!
LinuxCamp | Chat | #microhelp
🔥30👍17❤🔥7🤔4
Команда chgrp и изменение атрибутов ссылок
В Linux у каждого файла есть владелец и группа. Также описываются права остальных пользователей, которые состоят из трёх пунктов: чтение, запись, выполнение. Для их изменения (определения дефолтных) используется команда umask, для изменения владельца и группы: chown и chgrp. Подробно про группы говорили тут.
Без параметров chgrp просто меняет группу для конкретного файла либо каталога:
И вот тут момент №1 - если вы меняете группу у символьной ссылки, ее атрибуты остаются нетронутыми и аффектится только целевой файл. Для того, чтобы изменить атрибут ссылки, нужно использовать флаг "-h" (аналогично для chown):
Момент №2 - если вы рекурсивно меняете группу для каталога, при обработке ссылки атрибуты выставляются именно для нее, а не файла. Для дереференса ссылок есть 2 флага: "-H" и "-L".
"-H" переходит по ссылкам и меняет атрибуты ресурсов. При переходе на каталог рекурсивная обработка для него прекращается (только каталогу группу поменяем и все). "-L" при переходе на каталог идет рекурсивно и по нему тоже.
LinuxCamp | #utils
В Linux у каждого файла есть владелец и группа. Также описываются права остальных пользователей, которые состоят из трёх пунктов: чтение, запись, выполнение. Для их изменения (определения дефолтных) используется команда umask, для изменения владельца и группы: chown и chgrp. Подробно про группы говорили тут.
Без параметров chgrp просто меняет группу для конкретного файла либо каталога:
$ sudo chgrp avengers file
-rw-rw-r-- 1 parallels avengers file
И вот тут момент №1 - если вы меняете группу у символьной ссылки, ее атрибуты остаются нетронутыми и аффектится только целевой файл. Для того, чтобы изменить атрибут ссылки, нужно использовать флаг "-h" (аналогично для chown):
$ chgrp -h parallels file_ln
lrwxrwxrwx 1 root parallels file_ln -> ../file
Момент №2 - если вы рекурсивно меняете группу для каталога, при обработке ссылки атрибуты выставляются именно для нее, а не файла. Для дереференса ссылок есть 2 флага: "-H" и "-L".
"-H" переходит по ссылкам и меняет атрибуты ресурсов. При переходе на каталог рекурсивная обработка для него прекращается (только каталогу группу поменяем и все). "-L" при переходе на каталог идет рекурсивно и по нему тоже.
$ chgrp -RH www-data /var/www
$ chgrp -RL www-data /var/www
LinuxCamp | #utils
👍20🔥10❤🔥2❤1
Linux roadmap
Набросал тут план изучения Linux для новичков. Давайте фитбек - чего бы добавили, что может быть лишним)
Основные модули:
1. Введение - понимание базовых определений, различий между "Server" и "Desktop" дистрибутивами, умение накатить линуху на виртуальную машину и физическое железо.
2. Терминал и оболочка - понимание того, что из себя представляет оболочка и какие они бывают.
3. Файловая система - разбор дерева каталогов, типов файлов, их атрибутов и прав доступа, дисков и разделов.
4. Пользователи и группы - управление пользователями/группами, работа со спец. файлами "/etc/group" и т.д. Что такое sudo и привилегии администратора.
5. Процессы и программы - понимание различий между понятиями, инструменты мониторинга процессов, управление заданиями, использование сигналов.
6. Демоны и systemd - управление и отладка демонов/сервисов.
7. Работа с пакетами - пакетные менеджеры, подключение репозиториев. Принципы управления пакетами.
8. Переменные оболочки - способы их объявления, знание основных переменных "PATH", "HOME" и т.д.
9. Продвинутая работа с оболочкой - перенаправление ввода/вывода, пайпы, шаблоны, условные списки.
10. Создание bash скриптов - базовый синтаксис, примеры, где может пригодиться набросать свой скрипт для автоматизаций.
11. Логирование и мониторинг - умение отлаживать ошибки системы и софта через syslog и journal.
12. Сети и протоколы - понимание различий между ssh, scp, ftp. Умение передавать данные с клиента на сервер и обратно. Подгрузка файлов с инета через curl и wget.
13. Конфигурация системы - структура графического окружения (wm, dm, композитинг) и его настройка.
14. Сборка софта по исходникам - базовая работа с системами (cmake, meson). Понимание файлов, которые используются для сборки (если к проекту не прилагается нормальный README)
LinuxCamp | Chat | #roadmap
Набросал тут план изучения Linux для новичков. Давайте фитбек - чего бы добавили, что может быть лишним)
Основные модули:
1. Введение - понимание базовых определений, различий между "Server" и "Desktop" дистрибутивами, умение накатить линуху на виртуальную машину и физическое железо.
2. Терминал и оболочка - понимание того, что из себя представляет оболочка и какие они бывают.
3. Файловая система - разбор дерева каталогов, типов файлов, их атрибутов и прав доступа, дисков и разделов.
4. Пользователи и группы - управление пользователями/группами, работа со спец. файлами "/etc/group" и т.д. Что такое sudo и привилегии администратора.
5. Процессы и программы - понимание различий между понятиями, инструменты мониторинга процессов, управление заданиями, использование сигналов.
6. Демоны и systemd - управление и отладка демонов/сервисов.
7. Работа с пакетами - пакетные менеджеры, подключение репозиториев. Принципы управления пакетами.
8. Переменные оболочки - способы их объявления, знание основных переменных "PATH", "HOME" и т.д.
9. Продвинутая работа с оболочкой - перенаправление ввода/вывода, пайпы, шаблоны, условные списки.
10. Создание bash скриптов - базовый синтаксис, примеры, где может пригодиться набросать свой скрипт для автоматизаций.
11. Логирование и мониторинг - умение отлаживать ошибки системы и софта через syslog и journal.
12. Сети и протоколы - понимание различий между ssh, scp, ftp. Умение передавать данные с клиента на сервер и обратно. Подгрузка файлов с инета через curl и wget.
13. Конфигурация системы - структура графического окружения (wm, dm, композитинг) и его настройка.
14. Сборка софта по исходникам - базовая работа с системами (cmake, meson). Понимание файлов, которые используются для сборки (если к проекту не прилагается нормальный README)
LinuxCamp | Chat | #roadmap
🔥65👍30❤6✍4❤🔥1🗿1
Как исправить "rm: cannot remove ‘file’: Device or Resource Busy"?
Бывало же у вас такое - заканчиваешь работать с каким-то ресурсом (файлом/каталогом/устройством), хочешь его удалить и видишь ошибку о том, что он чем-то занят (используется системой либо каким-то процессом).
Тут нужно понять, в чем конкретная причина и чем он задействован: то ли процессом, то ли это, быть может, точка монтирования для какой-то FS…
Распространенных решения вижу 2:
1. Использование команд "lsof + fuser" для определения занятых ресурсов и завершения процессов. Если вы не знаете, какая программа мешает выполнить операцию, используйте lsof:
Если у нас ресурс занимают 2 процесса, можно и через kill все грохнуть. Если их много, можно более автоматизированно - через fuser. Эта команда завершит все процессы, которые что-то используют в целевом каталоге:
После выполнение мы вырубим сразу оба процесса 22331 и 22332.
2. Определение точки монтирования. Это полезно, когда какая-нибудь флешка или внешний диск монтирован в целевой каталог. Узнать, так ли это, можно через команду mount. Допустим, у меня не получается удалить test:
Проверяем, является ли tmpfsdir точкой монтирования:
Вывод говорит о том, что в каталог tmpfsdir примонтирована FS tmpfs. Для успешного выполнения операции нужно размонтировать каталог:
LinuxCamp | Chat | #filesystem
Бывало же у вас такое - заканчиваешь работать с каким-то ресурсом (файлом/каталогом/устройством), хочешь его удалить и видишь ошибку о том, что он чем-то занят (используется системой либо каким-то процессом).
rm: cannot remove 'file-or-directory': Device or resource busy
Тут нужно понять, в чем конкретная причина и чем он задействован: то ли процессом, то ли это, быть может, точка монтирования для какой-то FS…
Распространенных решения вижу 2:
1. Использование команд "lsof + fuser" для определения занятых ресурсов и завершения процессов. Если вы не знаете, какая программа мешает выполнить операцию, используйте lsof:
$ lsof +D Sources/App/
COMMAND PID USER FD NAME
server 22331 xoadmin txt Sources/App/server
client 22332 xoadmin txt Sources/App/client
Если у нас ресурс занимают 2 процесса, можно и через kill все грохнуть. Если их много, можно более автоматизированно - через fuser. Эта команда завершит все процессы, которые что-то используют в целевом каталоге:
$ fuser -k Sources/App/
После выполнение мы вырубим сразу оба процесса 22331 и 22332.
2. Определение точки монтирования. Это полезно, когда какая-нибудь флешка или внешний диск монтирован в целевой каталог. Узнать, так ли это, можно через команду mount. Допустим, у меня не получается удалить test:
$ rm -rf test
rm: cannot remove 'test/tmpfsdir': Device or resource busy
Проверяем, является ли tmpfsdir точкой монтирования:
$ mount | grep test/tmpfsdir
none on /home/u/test/tmpfsdir type tmpfs (rw,relatime,inode64)
Вывод говорит о том, что в каталог tmpfsdir примонтирована FS tmpfs. Для успешного выполнения операции нужно размонтировать каталог:
$ sudo umount test/tmpfsdir
$ rm -rf test
LinuxCamp | Chat | #filesystem
👍33🔥13❤🔥2
Лучшие эмуляторы терминала
Эмулятор терминала - утилита, которая дает доступ к командной оболочке и позволяет нам работать с системой через CLI интерфейс.
Их, на самом деле, не 1 и не 2) Вы, возможно, привыкли к дефолтным эмуляторам оболочки от гнома там и kde. Вдруг вам чего-то в них не хватает, что есть в сторонних...
1. Terminator - ключевая фича заключается в том, что оно позволяет раскидывать свои окна по удобной сетке.
Может пригодиться, если вам не нравится переключаться по вкладкам или плодить много окон. Более подробно про него вот тут.
2. Tilix - поддерживает систему “drag and drop”. Вы можете перетащить файл в окно терминала и получите на выходе полный путь в строке ввода.
Также он удобно структурирует окна списком, по которому можно ходить через горячие клавиши. Как и Terminator может разбивать окна по сетке.
3. Guake - неплохо кастомизируется через встроенный менеджер. Сворачивается и разворачивается по горячим клавишам.
4. Alacritty - отличает от остальных его тот факт, что он “GPU-accelerated”. Это говорит о том, что для рендера он использует видюху => работает плавнее. Также он кроссплатформенный - запускается на Windows/Linux/MacOS.
Так как для рендера используется OpenGL, эмулятор позволяет более продвинуто настроить внешний вид и добавить, например, прозрачность.
Кастомизируется он через файл. Более подробно про его настройку можете почитать тут. Пример готового конфига приложу по ссылке. Также найти его можно на гите проекта в релизах.
Инструкцию по установке на Ubuntu также прикладываю.
LinuxCamp | Chat | #top
Эмулятор терминала - утилита, которая дает доступ к командной оболочке и позволяет нам работать с системой через CLI интерфейс.
Их, на самом деле, не 1 и не 2) Вы, возможно, привыкли к дефолтным эмуляторам оболочки от гнома там и kde. Вдруг вам чего-то в них не хватает, что есть в сторонних...
1. Terminator - ключевая фича заключается в том, что оно позволяет раскидывать свои окна по удобной сетке.
Может пригодиться, если вам не нравится переключаться по вкладкам или плодить много окон. Более подробно про него вот тут.
$ sudo apt install terminator
2. Tilix - поддерживает систему “drag and drop”. Вы можете перетащить файл в окно терминала и получите на выходе полный путь в строке ввода.
Также он удобно структурирует окна списком, по которому можно ходить через горячие клавиши. Как и Terminator может разбивать окна по сетке.
$ sudo apt install tilix
3. Guake - неплохо кастомизируется через встроенный менеджер. Сворачивается и разворачивается по горячим клавишам.
$ sudo apt install guake
4. Alacritty - отличает от остальных его тот факт, что он “GPU-accelerated”. Это говорит о том, что для рендера он использует видюху => работает плавнее. Также он кроссплатформенный - запускается на Windows/Linux/MacOS.
Так как для рендера используется OpenGL, эмулятор позволяет более продвинуто настроить внешний вид и добавить, например, прозрачность.
Кастомизируется он через файл. Более подробно про его настройку можете почитать тут. Пример готового конфига приложу по ссылке. Также найти его можно на гите проекта в релизах.
Инструкцию по установке на Ubuntu также прикладываю.
LinuxCamp | Chat | #top
👍28✍7🔥7❤3🥴1
Топ 5 полезных приложений на Linux
В линухе хоть и меньше толковых приложений, чем в MacOS или Windows, но они все еще есть и очень выручают:
1. Todoist - очень популярный планировщик задач. Он кроссплатформенный, в свое время использовал и на android и на ios. Ставится он через snap либо AppImage:
Есть платный и бесплатный формат использования. Мне от него требовалось только приоритизировать задачи и раскидывать их на неделю - все это включено даром.
2. Standard Notes - приложение для заметок, которое может выступать некой заменой obsidian и notion. Также ставится на разные ОС. Отлично подходит, если вы пишите какие-то сценарии либо длинные лонгриды - их удобно менеджерить. Ставится через AppImage, ссылку приложил.
3. KDE Connect - входит в десктопное окружение Plasma. Позволяет управлять мобилкой через десктоп: просматривать уведомления, уровень заряда, передавать файлы и т.д. В некоторых дистрах предоставлена по дефолту.
4. TimeShift - утилита для создания бэкапов системы (FS, настроек, конфигураций). Для Linux это может быть очень полезно, т.к. нередко новички в процессе разбирательств что-то лишнее тыкают и все ломают. Нашел отличный туториал по ее использованию. Установка:
5. Syncthing - используется для синхронизации файлов между системами. Предположим, мы постоянно работаем с каталогом Documents на компе и ноуте. Если обе системы используют syncthing и следят за Documents, то на них всегда будет актуальное содержимое этого каталога. Установка тут. Еще докину ссылку на информативный туториал.
LinuxCamp | #top
В линухе хоть и меньше толковых приложений, чем в MacOS или Windows, но они все еще есть и очень выручают:
1. Todoist - очень популярный планировщик задач. Он кроссплатформенный, в свое время использовал и на android и на ios. Ставится он через snap либо AppImage:
$ sudo snap install todoist
Есть платный и бесплатный формат использования. Мне от него требовалось только приоритизировать задачи и раскидывать их на неделю - все это включено даром.
2. Standard Notes - приложение для заметок, которое может выступать некой заменой obsidian и notion. Также ставится на разные ОС. Отлично подходит, если вы пишите какие-то сценарии либо длинные лонгриды - их удобно менеджерить. Ставится через AppImage, ссылку приложил.
3. KDE Connect - входит в десктопное окружение Plasma. Позволяет управлять мобилкой через десктоп: просматривать уведомления, уровень заряда, передавать файлы и т.д. В некоторых дистрах предоставлена по дефолту.
4. TimeShift - утилита для создания бэкапов системы (FS, настроек, конфигураций). Для Linux это может быть очень полезно, т.к. нередко новички в процессе разбирательств что-то лишнее тыкают и все ломают. Нашел отличный туториал по ее использованию. Установка:
$ sudo apt install timeshift
5. Syncthing - используется для синхронизации файлов между системами. Предположим, мы постоянно работаем с каталогом Documents на компе и ноуте. Если обе системы используют syncthing и следят за Documents, то на них всегда будет актуальное содержимое этого каталога. Установка тут. Еще докину ссылку на информативный туториал.
LinuxCamp | #top
👍25🔥10❤5🤪2💊1
GE-Proton 10-2: исправления для Windows игр на Linux, SteamOS (Steam Deck)
Proton — специальный «прослойка» от Valve, которая позволяет запускать Windows-игры на Linux. Сделана на основе Wine.
GE-Proton (GloriousEggroll Proton) — модифицированная версия Proton, которую делает разработчик с ником GloriousEggroll.
Она обновляется быстрее, включает больше фиксиков, свежие патчи и поддержку некоторых проблемных игр, которые не заводятся на официальном проекте.
Основные изменения в GE-Proton:
— Исправлена ошибка в скрипте, вызванная отсутствующей запятой, что приводило к проблемам с префиксами. Мем😁
— Добавлен патч для поддержки прокрутки с тачпада в WineWayland
— Добавлены патчи, позволяющие запускать больше лаунчеров в среде Wayland (epic, battlenet, star citizen)
— Обновлена библиотека xalia с включением изменений из основного репозитория
Вот ссылка на релиз 10-2. В гите можно подробнее ознакомиться с проектом и правками📱
LinuxCamp | #news
Proton — специальный «прослойка» от Valve, которая позволяет запускать Windows-игры на Linux. Сделана на основе Wine.
GE-Proton (GloriousEggroll Proton) — модифицированная версия Proton, которую делает разработчик с ником GloriousEggroll.
Она обновляется быстрее, включает больше фиксиков, свежие патчи и поддержку некоторых проблемных игр, которые не заводятся на официальном проекте.
Основные изменения в GE-Proton:
— Исправлена ошибка в скрипте, вызванная отсутствующей запятой, что приводило к проблемам с префиксами. Мем
— Добавлен патч для поддержки прокрутки с тачпада в WineWayland
— Добавлены патчи, позволяющие запускать больше лаунчеров в среде Wayland (epic, battlenet, star citizen)
— Обновлена библиотека xalia с включением изменений из основного репозитория
Вот ссылка на релиз 10-2. В гите можно подробнее ознакомиться с проектом и правками
LinuxCamp | #news
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍9❤🔥3😁1
Приводим хаос данных к порядку
Сегодня мы говорим о команде sort. Утилита выводит текстовые строки в определенном порядке. С помощью нее может быть отсортировано содержимое файла либо вывод какой-либо команды. Основные опции можете просмотреть на OpenNet.
Примеры использования
Создадим файл с несколькими строками, на котором и будем проверять возможности утилиты. Кста, заполнить его из CMD можно вот так:
Опция "-e" указывает команде, что нужно обрабатывать спецсимволы, а "\n" у нас - спецсимвол перевода строки. Теперь выполним сортировку строк:
После выполнения команды сам файл никак не поменяется: sort просто получает на вход данные с ресурса и итог кидает в stdout. Посмотрим на несколько принципов, по которым выполняется сортировка:
- Строки с цифрами размещаются выше других строк
- Строки, начинающиеся с букв нижнего регистра размещаются выше
- Сортировка выполняется в соответствии алфавиту
- Строки сначала сортируются по алфавиту, а уже вторично по другим правилам.
Удаление дубликатов
100% полезная опция "-u". Она удаляет дубликаты. Представьте, вам нужно проверить логи в "/var/log/syslog", которые туда посылает образный "демон". Если он пишет туда много одинаковых, вероятно, вам не нужен лишний спам. Для предварительной очистки вывода используйте "-u":
Сортировка по колонке
Давайте упорядочим вывод по конкретному полю. Для этого указываем флаг "-k" с номером колонки. Сейчас будем работать с названиями каталогов:
Сортировка по номеру
Входные данных также можем отсортировать по числовому значению. Для этого используем "-n":
LinuxCamp | #utils
Сегодня мы говорим о команде sort. Утилита выводит текстовые строки в определенном порядке. С помощью нее может быть отсортировано содержимое файла либо вывод какой-либо команды. Основные опции можете просмотреть на OpenNet.
Примеры использования
Создадим файл с несколькими строками, на котором и будем проверять возможности утилиты. Кста, заполнить его из CMD можно вот так:
$ echo -e "computer\nmouse\nLAPTOP\ndata" > test.txt
$ cat test.txt
computer
mouse
LAPTOP
data
Опция "-e" указывает команде, что нужно обрабатывать спецсимволы, а "\n" у нас - спецсимвол перевода строки. Теперь выполним сортировку строк:
$ sort test.txt
computer
data
LAPTOP
mouse
После выполнения команды сам файл никак не поменяется: sort просто получает на вход данные с ресурса и итог кидает в stdout. Посмотрим на несколько принципов, по которым выполняется сортировка:
- Строки с цифрами размещаются выше других строк
- Строки, начинающиеся с букв нижнего регистра размещаются выше
- Сортировка выполняется в соответствии алфавиту
- Строки сначала сортируются по алфавиту, а уже вторично по другим правилам.
Удаление дубликатов
100% полезная опция "-u". Она удаляет дубликаты. Представьте, вам нужно проверить логи в "/var/log/syslog", которые туда посылает образный "демон". Если он пишет туда много одинаковых, вероятно, вам не нужен лишний спам. Для предварительной очистки вывода используйте "-u":
$ sort -u /var/log/syslog
Сортировка по колонке
Давайте упорядочим вывод по конкретному полю. Для этого указываем флаг "-k" с номером колонки. Сейчас будем работать с названиями каталогов:
$ ls -l | sort -k9
... 6 user user 4096 дек 6 14:29 Android
... 3 user user 4096 янв 14 22:18 Desktop
... 5 user user 12288 янв 15 14:59 Downloads
... 7 user user 4096 янв 13 11:42 Lightworks
Сортировка по номеру
Входные данных также можем отсортировать по числовому значению. Для этого используем "-n":
$ ls -l | sort -nk2
... 5 user user 12288 янв 15 14:59 Downloads
... 6 user user 4096 дек 6 14:29 Android
... 7 user user 4096 июн 10 2015 Sources
... 8 user user 12288 янв 11 12:33 Pictures
LinuxCamp | #utils
👍29🔥10❤7
Шпора по флагам rsync
Rsync - программка, которую можно использовать для синхронизации файлов и каталогов с локального компьютера на удаленный и наоборот. Чем-то напоминает scp.
Взаимодействием с сервером возможности утилиты не ограничиваются. Все операции можно выполнять и локально. По умолчанию rsync копирует ресурсы без учета предыдущего содержимого целевого каталога.
Например, если вы перенесли каталог d, содержащий файлы a и b, на машину, на которой был файл d/c, то после копирования сервер будет содержать d/a, d/b и d/c.
Чтобы создать точную копию исходного каталога, необходимо из целевого каталога удалить не существующие в исходном каталоге файлы, например d/c в примере:
Посмотрим на еще 1 пример:
В результате выполнения, каталоги "dir1, dir2 и dir3", вместе со всем их содержимым, будут рекурсивно скопированы в каталог backup.
Если какие-то файлы уже есть в каталоге backup, и не были изменены, они будут пропущены.
Исключение файлов и каталогов
Еще одной значительной фичей rsync является способность исключать файлы и каталоги из процесса передачи.
Например, ты хочешь перенести локальный каталог src на хост и при этом исключить все данные с именем .git. Можно сделать следующим образом:
Чтобы базовые флаги всегда были под рукой, собрал небольшую шпору, сохраняем)
LinuxCamp | #utils
Rsync - программка, которую можно использовать для синхронизации файлов и каталогов с локального компьютера на удаленный и наоборот. Чем-то напоминает scp.
$ rsync file1 file2 ... user@host:dest
$ rsync -a dir host:dest_dir
Взаимодействием с сервером возможности утилиты не ограничиваются. Все операции можно выполнять и локально. По умолчанию rsync копирует ресурсы без учета предыдущего содержимого целевого каталога.
Например, если вы перенесли каталог d, содержащий файлы a и b, на машину, на которой был файл d/c, то после копирования сервер будет содержать d/a, d/b и d/c.
Чтобы создать точную копию исходного каталога, необходимо из целевого каталога удалить не существующие в исходном каталоге файлы, например d/c в примере:
$ rsync -a --delete dir host:dest_dir
Посмотрим на еще 1 пример:
$ rsync -avh --del --progress dir1 dir2 dir3 backup
В результате выполнения, каталоги "dir1, dir2 и dir3", вместе со всем их содержимым, будут рекурсивно скопированы в каталог backup.
Если какие-то файлы уже есть в каталоге backup, и не были изменены, они будут пропущены.
Исключение файлов и каталогов
Еще одной значительной фичей rsync является способность исключать файлы и каталоги из процесса передачи.
Например, ты хочешь перенести локальный каталог src на хост и при этом исключить все данные с именем .git. Можно сделать следующим образом:
$ rsync -a --exclude=.git src host:
Чтобы базовые флаги всегда были под рукой, собрал небольшую шпору, сохраняем)
LinuxCamp | #utils
🔥22👍17❤3
Пополнение софта в библиотеке
Компания Fender, известная своими гитарами и аудиооборудованием, представила новое приложение для записи и обработки звука – Fender Studio. Оно доступно на нашем Linux).
Fender Studio базируется на профессиональной DAW Studio One Pro (приложение для цифровой аудиосистемы), но предлагает упрощённый интерфейс.
Что предлагает Fender Studio?
- Интуитивный интерфейс для музыкантов, подходящий как новичкам, так и профессионалам.
- Многодорожечную запись с поддержкой VST-плагинов.
- Встроенные инструменты для обработки гитарного звука, включая эффекты и усилители.
- Совместимость с ALSA и PipeWire.
Приложение доступно для бесплатной загрузки в формате Flatpak с официального сайта. Появление утилиты – знак растущего интереса крупных компаний к открытой платформе.
LinuxCamp | #news
Компания Fender, известная своими гитарами и аудиооборудованием, представила новое приложение для записи и обработки звука – Fender Studio. Оно доступно на нашем Linux).
Fender Studio базируется на профессиональной DAW Studio One Pro (приложение для цифровой аудиосистемы), но предлагает упрощённый интерфейс.
Что предлагает Fender Studio?
- Интуитивный интерфейс для музыкантов, подходящий как новичкам, так и профессионалам.
- Многодорожечную запись с поддержкой VST-плагинов.
- Встроенные инструменты для обработки гитарного звука, включая эффекты и усилители.
- Совместимость с ALSA и PipeWire.
Приложение доступно для бесплатной загрузки в формате Flatpak с официального сайта. Появление утилиты – знак растущего интереса крупных компаний к открытой платформе.
LinuxCamp | #news
👍20🔥9❤🔥2❤2😁1
Как работает cron и зачем он нужен?
Если вы хоть раз хотели, чтобы скрипт запускался сам — без вашего участия — скорее всего, вам пригодится cron. Это системный инструмент (ДЕМОН), который позволяет выполнять команды/скрипты по расписанию.
Сфер применения достаточно много, но суть технологии - автоматизировать рутинные задачи: очистка логов, обновление данных и т.д. Как говорилось в одной из статей выше cron — демон, который выполняет команды в запланированное время.
Дополню, что он каждую минуту проверяет свое расписание, наступило ли время начинать выполнять задачу. Расписание хранится в специальной таблице — crontab и задается в формате:
Этот скрипт будет запускаться каждый день в 4:00. Звёздочка означает «каждое значение»:
* * * * * — каждую минуту, каждый час, каждый день...;
30 9 * * * — каждый день в 9:30;
0 0 * * 0 — каждое воскресенье в полночь;
На старте может быть непонятно, поэтому пользуйтесь: crontab.guru
Практический пример
Допустим у нас в какой-нибудь папке (например, /var/log/myapp) копятся логи и мы хотим удалять раз в неделю старые. Сначала создадим простой bash-скрипт clear_logs.sh:
Этот скрипт ищет ".log" файлы в указанной директории (LOG_DIR) и удаляет те, что старше 7 дней (DAYS_TO_KEEP). Делаем файл исполняемым и добавляем cron-задачу:
"0 0 * * 0" — каждое воскресенье в 00:00;
">> /var/log/clear_logs.log" — всё, что скрипт напишет в stdout (обычный вывод), попадёт в лог;
"2>&1" — перенаправление потока ошибок stderr в поток stdout, чтобы они тоже записывались в лог;
В нашем случае скрипт ничего не выводит, однако если возникнут ошибки по типу: "нет доступа к папке" или "нет прав на удаление", то они пойдут в stderr и запишутся в лог.
Важные команды:
Чтобы посмотреть список задач (расписание), можно использовать команду "crontab -l". Создание и изменение задач, команда "crontab -e". Удаление всех задач "crontab -r".
LinuxCamp | #cron
Если вы хоть раз хотели, чтобы скрипт запускался сам — без вашего участия — скорее всего, вам пригодится cron. Это системный инструмент (ДЕМОН), который позволяет выполнять команды/скрипты по расписанию.
Сфер применения достаточно много, но суть технологии - автоматизировать рутинные задачи: очистка логов, обновление данных и т.д. Как говорилось в одной из статей выше cron — демон, который выполняет команды в запланированное время.
Дополню, что он каждую минуту проверяет свое расписание, наступило ли время начинать выполнять задачу. Расписание хранится в специальной таблице — crontab и задается в формате:
* * * * * команда
┬ ┬ ┬ ┬ ┬
│ │ │ │ └── День недели (0–7) — где 0 и 7 — это воскресенье
│ │ │ └──── Месяц (1–12)
│ │ └─────── День месяца (1–31)
│ └──────── Час (0–23)
└────────── Минута (0–59)
0 4 * * * /home/user/backup.sh
Этот скрипт будет запускаться каждый день в 4:00. Звёздочка означает «каждое значение»:
* * * * * — каждую минуту, каждый час, каждый день...;
30 9 * * * — каждый день в 9:30;
0 0 * * 0 — каждое воскресенье в полночь;
На старте может быть непонятно, поэтому пользуйтесь: crontab.guru
Практический пример
Допустим у нас в какой-нибудь папке (например, /var/log/myapp) копятся логи и мы хотим удалять раз в неделю старые. Сначала создадим простой bash-скрипт clear_logs.sh:
#!/bin/bash
LOG_DIR="/var/log/myapp"
DAYS_TO_KEEP=7
find "$LOG_DIR" -type f -name "*.log" -mtime +$DAYS_TO_KEEP -exec rm -f {} \;
Этот скрипт ищет ".log" файлы в указанной директории (LOG_DIR) и удаляет те, что старше 7 дней (DAYS_TO_KEEP). Делаем файл исполняемым и добавляем cron-задачу:
chmod +x /home/user/noscripts/clear_logs.sh
0 0 * * 0 /home/user/noscripts/clear_logs.sh >> /var/log/clear_logs.log 2>&1
"0 0 * * 0" — каждое воскресенье в 00:00;
">> /var/log/clear_logs.log" — всё, что скрипт напишет в stdout (обычный вывод), попадёт в лог;
"2>&1" — перенаправление потока ошибок stderr в поток stdout, чтобы они тоже записывались в лог;
В нашем случае скрипт ничего не выводит, однако если возникнут ошибки по типу: "нет доступа к папке" или "нет прав на удаление", то они пойдут в stderr и запишутся в лог.
Важные команды:
Чтобы посмотреть список задач (расписание), можно использовать команду "crontab -l". Создание и изменение задач, команда "crontab -e". Удаление всех задач "crontab -r".
LinuxCamp | #cron
🔥31👍22❤2😢1
Новое ядро подъехало "Linux 6.15"
В новую версию принято 15945 исправлений от 2154 разрабов, размер патча - 59 МБ (добавлено 739608 строк кода). Около 41% всех изменений связаны с драйверами устройств.
Из ключевого:
— многочисленные апгрейды драйверов для AMD и Intel;
— дальнейшая интеграция Rust в ядро (язык всё активнее применяется в кодовой базе, где критична безопасность);
— стабилизация файловой системы Bcachefs (близка к полноценному применению в продуктивных сценариях);
— новая подсистема FWCTL (предназначен для управления прошивками);
— доработка поддержки Apple Silicon (архитектура ARM постепенно получает стабильные драйверы и поддержку в ядре);
— улучшения планировщика задач (положительно скажется на общей отзывчивости систем под высокой нагрузкой);
— расширение поддержки игровых контроллеров через драйвер XPad;
Подробнее о нововведениях можно прочитать тут.
LinuxCamp | #news
В новую версию принято 15945 исправлений от 2154 разрабов, размер патча - 59 МБ (добавлено 739608 строк кода). Около 41% всех изменений связаны с драйверами устройств.
Из ключевого:
— многочисленные апгрейды драйверов для AMD и Intel;
— дальнейшая интеграция Rust в ядро (язык всё активнее применяется в кодовой базе, где критична безопасность);
— стабилизация файловой системы Bcachefs (близка к полноценному применению в продуктивных сценариях);
— новая подсистема FWCTL (предназначен для управления прошивками);
— доработка поддержки Apple Silicon (архитектура ARM постепенно получает стабильные драйверы и поддержку в ядре);
— улучшения планировщика задач (положительно скажется на общей отзывчивости систем под высокой нагрузкой);
— расширение поддержки игровых контроллеров через драйвер XPad;
Подробнее о нововведениях можно прочитать тут.
LinuxCamp | #news
👍31🔥13❤4👏2