Skip to main content

a silhouette of a person's head and shoulders, used as a default avatar

Действия после установки openSUSE Leap 15.4

Уже около месяца я ежедневно использую дома свежий релиз Leap 15.4, и он мне очень нравится. В этой заметке я хочу перечислить несколько небольших доработок, которые я сделал в системе. Некоторые я уже ранее упоминал, но настало время собрать их все в одной записи. Итак:

Доработка загрузки

Если у вас установлена только одна ОС, то загрузчик GRUB2, собственно говоря, не нужен. На UEFI-системах можно загружать ядро Linux сразу, о чём я писал в своё время. Нынче этот приём называется systemd-boot, но самой технике уже сто лет в обед. Например, мой предыдущий компьютер с материнской платой DH67BL-B3 из 2011 года уже умел это делать. Команды ниже добавят в ПЗУ загрузочную запись и заодно отключат вывод системных сообщений при запуске и выключении ОС (всё равно, на десктопе это не нужно):

sudo -i

sudo cp /boot/vmlinuz-5.14.21-150400.22-default  /boot/efi/EFI/opensuse/vmlinuz.efi
sudo cp /boot/initrd-5.14.21-150400.22-default  /boot/efi/EFI/opensuse/initrd.img

efibootmgr --create --disk /dev/nvme0n1 --part 1 --label "opensuse-silent" -u --loader '\efi\opensuse\vmlinuz.efi'
"root=/dev/sda2 initrd=/efi/opensuse/initrd.img resume=/dev/nvme0n1p2 console=ttyS0 vt.global_cursor_default=0 quiet"

systemctl disable getty@tty1.service

NB: Замените /dev/nvme0n1 на адрес своего жёсткого диска

Результат этих действий такой: включение ПК теперь напоминает включение смарт-ТВ или какого-либо бытового прибора: на экране появляется логотип производителя материнской платы, а за тем, через несколько секунд — без мерцаний или чего-либо ещё — сразу рабочий стол. При выключении, опять же, в верхнем левом углу не отображается ничего, экран просто гаснет. Это красиво и изящно, к тому же довольно удобно именно на openSUSE Leap, где ядро почти не меняется, а значит файлы vmlinuz.efi и initrd.img можно обновлять нечасто. Если нужен журнал загрузки, то под рукой всегда есть команда journalctl -b. Также, не будем забывать о том, что обычная запись для GRUB2 в EFI никуда не делась, и можно всегда вернуться к ней. Очень удобно прямо из ОС перезагрузиться в системный интерфейс EFI setup utility следующей командой:

systemctl reboot --firmware-setup

Заодно, я хочу порекомендовать графическую утилиту для управления EFI-записями. Выглядит изящно, умеет многое:

EFI Boot Editor — графический интерфейс к консольной программе efibootmgr

Добавление прав на управление принтерами

Тут мне особо нечего добавить, см. мою прошлогоднюю заметку. Время идёт, а мейнтейнеры openSUSE по-прежнему считают, что у пользователя не должно быть прав на управление печатью. Ну такое…

Исправление работы Packagekit и Discover

Изначально, Packagekit преследовал благородную цель унифицировать управление пакетами в разных дистрибутивах Linux. Не важно, что вы используете — Debian/Ubuntu, Fedora, openSUSE или Manjaro — вы всегда можете обновиться командой pkcon update или установить локальный пакет командой pkcon install-local <файл>. Удобство достигается различными бэкэндами к Packagakit, среди которых есть и Zypp для Zypper в openSUSE. Проблема, однако, в том, что если вы в openSUSE Leap попробуете открыть скачанный RPM-файл в Discover (интерфейсе к Packagekit), то установка гарантированно завершится ошибкой. Всё дело в неспособности бэкэнда Zypp обрабатывать некоторые события от Zypper, например проверку подписи пакетов. Я выяснил, что если проверку подписей отключить, то Discover начинает работать как надо. Следует в конец файла /etc/zypper/zypp.conf добавить gpgcheck=0, этого достаточно. Формально, вы понижаете безопасность, но фактически на десктопе от подписей GPG толку особо нет.

Discover вполне умеет устанавливать локальные пакеты после небольшой доработки

Решение проблемы с korner bug

Korner bug — это просторечное название очень раздражающего визуального дефекта, который проявляется последние пару лет в Plasma. Чтобы его увидеть, нужно включить эффект «Размытие» и установить декорации окон со скруглением углов. Вы быстро заметите, что уголки окон не имеют прозрачности и на некоторых фонах выглядят ужасно.

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

Я нашёл надёжное решение, которое наконец-то всё исправляет. Если вы будете использовать эту версию LightlyShaders, то скругление окон будет происходить корректно.

Более того, в настройках эффекта есть возможность использовать «сквиркл» — квадратоокружность, которая, например, используется в macOS. Как обычно, в Plasma вам даётся больше функций, чем вы просили: LightlyShaders содержит ползунок, регулирующий степень похожести круга на квадрат. В яблочном саду занервничали…

Наконец-то, скругление окон работает корректно!

Решение проблемы с «дёргающимися» значками на рабочем столе

Наконец, последним в моём списке идёт баг со странным поведением значков на рабочем столе Plasma. По умолчанию, они выровнены горизонтально относительно верхнего левого угла. Но если тип выравнивания изменить, то вы вскоре заметите неприятный дефект: при загрузке рабочего стола значки как будто снова выровнены по-умолчанию, но стоит щёлкнуть по рабочему столу, как они «улетят» согласно вашим настройкам.

Мне стоило большого труда откопать в переписке разработчиков Plasma обсуждение этого бага, который время от времени всплывал снова и снова. Оказалось, что решение существует. Влад Загородний предложил патч, который исправляет ошибку. Патч отключает функцию прокрутки значков на рабочем столе: если у вас их запредельно много, и они не влезают на рабочий стол, то это патч вам навредит. Но, на мой взгляд, так много значков не бывает почти ни у кого, так что всё в порядке! Скопируйте патч в директорию и примените его:

sudo cp 0001-foobar.patch /usr/share/plasma/plasmoids/org.kde.desktopcontainment/contents/ui/

cd /usr/share/plasma/plasmoids/org.kde.desktopcontainment/contents/ui/

sudo patch -p6 <0001-foobar.patch

Да, при следующем обновлении пакета plasma5-desktop всё вернётся обратно, и так до тех пор, пока проблема не будет решена в апстриме. Но, какое-никакое решение есть уже сейчас.

На этом всё, спасибо за внимание!

the avatar of YaST Team

Slow YaST in Container or How to Run Programs from Ruby?

Slow YaST in Container

We noticed that when running the YaST services manager module in a container then the start of the module is about 3 times slower than running in the host system directly. It takes about a minute to start, that is way much…

Root vs Non-root

This actually does not influence YaST in the end, but it is an interesting difference and might be useful for someone.

If you run this

# time -p ruby -e '10000.times { system("/bin/true") }'
real 2.90
user 2.45
sys 0.54

and if you run the very same command as root

# sudo time -p ruby -e '10000.times { system("/bin/true") }'
real 9.92
user 5.89
sys 4.16

it takes about triple time! :open_mouth:

But in the end it turned out that the reason is that Ruby uses the optimized vfork() system call instead of the traditional fork(). But because of some security implications it should not be used when running as root, in that case Ruby uses the standard (and slower) fork() call. See more details in the Ruby source code.

So in the end it actually is not 3 times slower because running as root, it is the other way round, it is 3 times faster because running as non-root. But because we almost always run YaST as root then we cannot use this trick…

Cheetah vs SCR

Ok, but why is the services manager much slower at start?

In YaST there are also other ways how to run process. You can use the SCR component (legacy from the YCP times) or the Cheetah Ruby gem.

Cheetah

Let’s try how Cheetah works when running as different users:

# time -p ruby -r cheetah -e '10000.times { Cheetah.run("/bin/true") }'
real 17.83
user 10.41
sys 8.73
# sudo time -p ruby -r cheetah -e '10000.times { Cheetah.run("/bin/true") }'
real 15.74
user 9.51
sys 7.47

The numbers are roughly the same, the reason is that Cheetah always uses the less optimal fork() call so there is no difference, it does not matter who runs the script.

Um, maybe we could improve the Cheetah gem to use the vfork() trick as well… :thinking:

SCR

The .target.bash agent in SCR also uses fork so it also does not matter which user uses it.

Benchmarking

The traditional YaST SCR component is implemented in the C++ and the call needs to go through the YaST component system, on the other hand the Cheetah gem uses a native Ruby code. Additionally SCR uses system() call which uses intermediate shell process while Cheetah uses exec() which executes the command directly.

So it would be nice to compare these two options and see how they perform. For that we wrote a small cheetah_vs_scr.rb benchmarking script. It just lists all systemd targets and runs that many times to have more reliable results.

Results

Running the script as root directly in the system:

# ./cheetah_vs_scr.rb
Number of calls: 1000
Cheetah   : 8.84ms per call
SCR       : 22.90ms per call

As you can see, even without any container involved the Cheetah gem is more than twice faster!

So how this changes when running in a container and running the systemctl command in the /mnt chroot?

yast-container # ./cheetah_vs_scr.rb
Number of calls: 1000
Cheetah   : 7.30ms per call
SCR       : 91.78ms per call

As you can see the SCR calls are more than 4 times slower. That corresponds to the slowdown we can see in the services manager. But more interesting is that the Cheetah case is actually slightly faster when running in a container! And if you compare Cheetah with SCR in container then Cheetah is more than 10x faster! Wow!

So in this case the SCR calls are the bottleneck, the container environment should affect the speed in general only slightly. We actually do not know what is the exact reason for this slowdown, probably the extra chrooting… :thinking:

But as we should switch to Cheetah anyway (because it is a clean native Ruby solution) we are not interested in researching this, this slow functionality caused troubles only in one specific case so far.

Notes: It was tested in an openSUSE Leap 15.4 system, it also heavily depends on the hardware, you might get very different numbers for your system.

Summary

If you just execute other programs from an YaST module few times it probably does not matter much which way you use.

But if you call external programs a lot (hundred times or so) then it depends whether you are running as root or non-root. For non-root case it is better to use the Ruby native calls (system or `` backticks). For the root access, as usually in YaST, prefer the Cheetah gem to the YaST SCR.

In our case it means we should update the YaST service manager module to use Cheetah, it should significantly reduce the start delay. And will improve the start also when running in the host system directly.

a silhouette of a person's head and shoulders, used as a default avatar

10 atajos de teclados útiles para #Vim

Vamos a repasar 10 atajos de teclado para el editor Vim que te pueden ser muy útiles

Después de un buen montón de artículos sobre Vim publicados en mi blog que cubren muchos aspectos para dominar y sacar todo el jugo a Vim.

Después de la extensa guía sobre Vim que he traducido y que te enseña a manejar Vim, así como otros recursos y aportes que he realizado.

Hoy voy a compartir contigo 10 atajos de teclado para el editor Vim que si no los conoces y los usas, empezarás a hacerlo después de leer el artículo.

Este artículo es una nueva entrega del curso “improVIMsado” que desde hace meses vengo publicando en mi blog sobre el editor Vim y que puedes seguir en estos enlaces:

Y para aprender Vim (de la manera más inteligente) aquí tienes esta útil guía:

Esta es una traducción adaptación de un artículo en inglés escrito por Peter y que está disponible en su web:

Vamos ya con estos 10 atajos de teclado y comandos de Vim que seguro te serán útiles.

gi

Al escribir gi en el modo normal, Vim desplaza el cursor al último lugar donde estuviste editando texto y automáticamente activa el modo insertar.

Imaginemos que estamos escribiendo algo, y queremos consultar algo que está en otra parte del documento, una vez consultado podemos volver donde estábamos editando, mediante gi

Ctrl+o y Ctrl+i

En el modo normal, salta a la ubicación anterior (Ctrl+o) o la ubicación siguiente (Ctrl+i) donde el cursor ha estado recientemente, siguiendo la lista de saltos que Vim guarda.

Salta incluso entre diferentes buffers. Puedes ver la lista de saltos ejecutando el comando :jumps Consulta la ayuda mediante :help jumplist

Ctrl+a y Ctrl+z

En el modo normal, incrementa (Ctrl+a) o decrementa (Ctrl+z) el número que se encuentra bajo el cursor.

Ctrl+e y Ctrl+y en modo normal

En el modo normal, desplazan el buffer hacia arriba (Ctrl+e) o hacia abajo (Ctrl+y) mientras el cursor permanece quieto en la pantalla.

Ctrl+e y Ctrl+y en modo insertar

En el modo insertar, lo que hace es ir copiando carácter por carácter el texto que hay en la línea superior (Ctrl+e) o de la línea inferior (Ctrl+y).

{ y }

En el modo normal, salta al párrafo anterior o al párrafo siguiente. Una forma muy rápida de ir recorriendo el documento.

>> y <<

En el modo normal o en el modo visual, hace una sangría de la línea donde está el texto (o la selección de texto). O quita la sangría de texto.

Ctrl+n y Ctrl+p

En el modo insertar, completa la palabra actual en la que está el cursor con las palabras siguientes (Ctrl+n) o palabras previas (Ctrl+p) del texto.

Prueba a escribir una frase en Vim y en el modo insertar ejecuta estos atajos de teclado.

Ctrl+j

En el modo insertar, une la línea actual con la línea siguiente del texto.

zz (dos letras z minúsculas en modo normal)

Lo que hace es centrar la posición donde se encuentra el cursor a la mitad de la pantalla. (Mi predilección personal es tener el cursor en la parte superior, y eso es mediante zt)

ZZ (dos letras Z mayúsculas en el modo normal)

En el modo normal, hacen lo mismo que :wq! Es decir, guarda el documento y sale de Vim.


Con esto de Vim, siempre se aprende algo nuevo. ¿Tu has aprendido algo interesante con estos 10 atajos de teclado? Comparte alguno imprescindible para ti y que no aparece en esta selección.

the avatar of Nathan Wolf

All-in on PipeWire for openSUSE Tumbleweed

I have written about using PipeWire previously where I did have a very positive experience with it. Unfortunately, I did have some irritating quarks with it that ultimately resulted in my going back to using PulseAudio on my openSUSE Tumbleweed machines. They were little things needing to refresh the browser after a Bluetooth device changed […]
a silhouette of a person's head and shoulders, used as a default avatar

Episodio 11 de KDE Express: Puesta al día

Aunque no sea vox populi, estos primeros 6 meses del año ha sido muy complicado para todos los componentes de KDE Express y no han podido cuadrar ni media hora para poder seguir con el proyecto. Por eso me congratula presentaros, por fin, que tenemos a nuestra disposición el episodio 11 de KDE Express, titulado Puesta al día.

Episodio 11 de KDE Express: Puesta al día

Comenté hace unos meses que había nacido KDE Express, un audio con noticias y la actualidad de la Comunidad KDE y del Software Libre con un formato breve (menos de 30 minutos) que complementa los que ya genera la Comunidad de KDE España de forma casi mensual con sus ya veteranos Vídeo-Podcast que podéis encontrar en Archive.org, Youtube, Ivoox, Spotify y Apple Podcast.

Décimo episodio de KDE Express: Novedades fin de 2021

De esta forma se llega al número 11 de su primera temporada que presentado en modo solitario por David Marzal y que nos sirve de enlace de los episodios que nos han prometido que llegarán.

Primer episodio de 2022 que ya tocaba…

Ha pasado tanto tiempo que os ofrecemos un resumen de actualizaciones de los proyectos KDE con un montón de enlaces en las notas del programa.

Y, como siempre, os dejo aquí el listado de los episodios. ¡Disfrutad!

A mi me sigue gustando mucho, es rápido, directo al grano y muy dinámico, con lo cual es ideal para aquellos que les guste tener su pincelada de Kdeera en su podcaster. Evidentemente, no se profundiza en temas aunque si se da una visión muy personal de los mismos.

Así que sigo dando mi más sincera enhorabuena a José Picon, Brais Arias y a David Marzal por el esfuerzo y dedicación… y aprovecho para comentar que si alguien está interesado en colaborar (bien sea para iniciarse o bien sea porque cree que puede aportar alguna cosa) no tiene más que ponerse en contacto con ellos enviando un mail a esta dirección kde_express@kde-espana.org.

Por cierto, también podéis encontrarlos en Telegram: https://t.me/KDEexpress

La entrada Episodio 11 de KDE Express: Puesta al día se publicó primero en KDE Blog.

a silhouette of a person's head and shoulders, used as a default avatar

The syslog-ng disk-buffer

A three parts blog series:

The syslog-ng disk buffer is one of the most often used syslog-ng options to ensure message delivery. However, it is not always necessary and using the safest variant has serious performance impacts. If you utilize disk-buffer in your syslog-ng configuration, it is worth to make sure that you use a recent syslog-ng version.

From this blog, you can learn when to use the disk-buffer option, the main differences between reliable and non-reliable disk-buffer, and why is it worth to use the latest syslog-ng version.

Read more at https://www.syslog-ng.com/community/b/blog/posts/when-not-to-use-the-syslog-ng-disk-buffer

Last time, we had an overview of the syslog-ng disk-buffer. This time, we dig a bit deeper and take a quick look at how it works, and a recent major change that helped speed up the reliable disk-buffer considerably.

Read more at https://www.syslog-ng.com/community/b/blog/posts/how-does-the-syslog-ng-disk-buffer-work

Most people expect to see how many log messages are waiting in the disk-buffer from the size of the syslog-ng disk-buffer file.. While it was mostly true for earlier syslog-ng releases, for recent syslog-ng releases (3.34+) the disk-buffer file can stay large even when it is empty. This is a side effect of a recent syslog-ng performance tuning.

Read more at https://www.syslog-ng.com/community/b/blog/posts/why-is-my-syslog-ng-disk-buffer-file-so-huge-even-when-it-is-empty

syslog-ng logo

the avatar of openSUSE News

Hack Week starts Hacking for Humanity next week

It’s back. No, not the McRib. It’s Hack Week.

The coveted Hack Week 21 runs from June 27 to July 1 and has both virtual and physical participation elements. Hack Week is put on for openSUSE contributions and gives any open-source contributor and SUSE employees a playground to experiment, innovate, collaborate and learn for an entire week.

People all over the world can create, view or join projects on hackweek.opensuse.org. The projects range from the packaging of freeware games to improving full-disk encryption and from learning network related knowledge to writing a software.opensuse.org replacement. There is even a project using solar panels to regulate water heating. There are more than 80 projects for this year’s Hack Week.

Companies, hobbyists and technologists are encouraged to participate. There is no affiliation one needs to participate in Hack Week.

The efforts are all about being innovative and providing solutions for users, developers and industry. The theme for this Hack Week is Hacking for Humanity!

Hack Week has been running since 2007 and you can find out how it works by joining a project.

a silhouette of a person's head and shoulders, used as a default avatar

Lanzada la primera actualización de Plasma 5.25

Tal y como estaba previsto en el calendario de lanzamiento de los desarrolladores, hoy martes 21 de junio la Comunidad KDE ha comunicado que ha sido lanzada la primera actualización de Plasma 5.25. Una noticia que aunque es esperada y previsible es la demostración palpable del alto grado de implicación de la Comunidad en la mejora continua de este gran entorno de escritorio de Software Libre.

Lanzada la primera actualización de Plasma 5.25

No existe Software creado por la humanidad que no contenga errores. Es un hecho incontestable y cuya única solución son las actualizaciones. Es por ello que en el ciclo de desarrollo del software creado por la Comunidad KDE se incluye siempre las fechas de las actualizaciones.

De esta forma, el martes 21 de junio ha sido lanzada la primera actualización de Plasma 5.25, la cual solo trae (que no es poco) soluciones a los bugs encontrados en esta semana de vida del escritorio y mejoras en las traducciones. Es por tanto, una actualización 100% recomendable.

Más información: KDE

Las novedades de Plasma 5.25

La Comunidad KDE publicó el 14 de junio Plasma 5.25, una versión que nos ofrecen un gran conjunto de novedades y propuestas que nos acercan a lo que vendrá cuando se realice la transición a Plasma 6.

En otras palabras, esta nueva versión de Plasma nos presenta una gran cantidad de nuevas funciones y geniales conceptos de Plasma 5.25 le traen un anticipo del futuro del escritorio de KDE.

Ya ha pasado el día de descarga y actualizaciones, y ya los estoy disfrutando en mi KDE Neon, así que os comento algunas de sus novedades:

  • Rediseñado y mejorado la forma de navegar entre las ventanas y los espacios de trabajo.
  • Gran actualización en la gestión del control de nuestro dispositivo mediante gestos.
  • Sincronización del color de acentuación con el fondo de pantalla, de esta forma se puede aplicar el color dominante del fondo a todos los componentes que usan el color de acentuación.
  • Activación del modo táctil desprendiendo la pantalla, rotándola 360° o seleccionándolo de forma manual.
  • Añadidos los paneles flotantes que añaden un margen a su alrededor para hacer que floten, mostrando una animación cuando se vuelven normales al maximizar una ventana.
  • Los efectos de mezcla entre esquemas se animan con elegancia, por ejemplo en la transición al cambiar el esquema de color actual.
  • Posibilidad de mover todo el escritorio, con carpetas, widgets y paneles, de un monitor a otro con la ventana de gestión del contenedor.
Lanzada la primera actualización de Plasma 5.25

Más información: KDE

La entrada Lanzada la primera actualización de Plasma 5.25 se publicó primero en KDE Blog.

the avatar of Efstathios Iosifidis

Εγκατάσταση και ρυθμίσεις του i3-wm στο openSUSE

i3 logo

ΕΠΙΛΟΓΗ ΓΡΑΦΙΚΟΥ ΠΕΡΙΒΑΛΛΟΝΤΟΣ

Κατά την μετάβασή σας από Windows σε Linux, θα επιλέξετε ποια διανομή σας βολεύει περισσότερο (από πλευράς εργαλείων για την δουλειά που θέλετε τον υπολογιστή) και στη συνέχεια επιλέγετε ποιο γραφικό περιβάλλον σας αρέσει περισσότερο. Προσωπικά χρησιμοποιώ GNOME και έχω μάθει τις περισσότερες ρυθμίσεις του. Δεν συστήνω άλλο γραφικό περιβάλλον σε νέους χρήστες, γιατί γνωρίζω ότι θα μου τηλεφωνήσουν για κάποια ρύθμιση και είμαι σίγουρος ότι μπορώ να τους βοηθήσω.

Τελευταία χρησιμοποιώ για εκπαιδευτικούς σκοπούς κάποιους υπολογιστές με όχι και τόσο προηγμένες δυνατότητες. Μιλάμε για 1GB μνήμη, για 4GB μνήμη. Έχω εγκατεστημένο ένα θεωρητικά απλό γραφικό περιβάλλον, αλλά έχω εγκαταστήσει και τον διαχειριστή παραθύρων i3wm. Με βόλεψε αρκετά και πλέον δεν μου είναι δύσκολο να το χρησιμοποιήσω και σε πιο δυνατούς υπολογιστές. Οπότε ξεκίνησα την εγκατάσταση και την ρύθιση. Βρήκα κάποια έτοιμα αρχεία ρυθμίσεων και προσάρμοσα έτσι όπως με βολεύουν. Θα τα μοιραστώ μαζί σας εδώ.

ΕΓΚΑΤΑΣΤΑΣΗ

Η εγκατάσταση είναι πολύ απλή. Υπάρχει στο wiki στο openSUSE. Γίνεται με μια απλή εντολή:
sudo zypper install i3 dmenu i3status

Επειδή θα χρειαστούμε και κάποια εργαλεία (θα αναφέρω παρακάτω) καλύτερα να τα εγκαταστήσετε με τη μία, με την εντολή:
sudo zypper install i3 i3status i3lock dmenu gtk-doc gobject-introspection dh-autoreconf autoconf lxappearance automake libtool glib2-devel feh arandr rofi compton gtk-chtheme libnotify4 NetworkManager-applet maim xclip byzanz feh perl-Sys-MemInfo

Έτοιμο...
openSUSE i3wm


ΡΥΘΜΙΣΕΙΣ

Το παιχνίδι θα παιχτεί στις ρυθμίσεις. Στο τέλος θα σας έχω link με τις δικές μου ρυθμίσεις. Εδώ θα δούμε 2-3 πραγματάκια. Όλα θα ρυθμιστούν στο αρχείο .config/i3/config.

ΠΛΗΚΤΡΟ MOD

Πλήκτρο mod είναι αυτό που χρησιμοποιείται για διάφορες λειτουργίες (όπως να ανοίξετε ένα πρόγραμμα). Εγώ χρησιμοποιώ το πλήκτρο Windows (ή super key), επειδή θα χρησιμοποιήσω το alt για αλλαγή γλώσσας. Το πλήκτρο ρυθμίζεται κατά την πρώτη εκκίνηση του i3wm αλλά μπορείτε να το αλλάξετε και μετά. Εγώ έχω αυτά στην κορυφή του αρχείου config.
# Alt key
# set $mod Mod1


# Windows key
set $mod Mod4


ΔΙΚΤΥΟ

Το δίκτυο είναι μεγάλο μανίκι. Στο netbook χρησιμοποιώ το wicd-curses. Στο openSUSE χρησιμοποιώ το nm-applet (στην φωτογραφία είναι αυτό που βλέπετε κάτω δεξιά). Γενικά υπάρχει τρόπος σύνδεσης στο ασύρματο δίκτυο μέσω τερματικού, αλλά δυσκολεύει πολλούς (και εμένα). Οπότε έψαξα ένα πιο εύκολο τρόπο. Το συγκεκριμένο applet έγινε εγκατάσταση με το πακέτο NetworkManager-applet. Πρόσθεσα στο τέλος του αρχείου config τις γραμμές.
# Network
exec nm-applet


Εάν είστε λίγο πιο hardcore τύποι, μπορείτε να συνδεθείτε με τη βοήθεια του YaST. Όμως καλύτερα να ανοίξετε ένα τερματικό (mod+enter) και να γράψετε την εντολή:
nmtui

openSUSE i3wm nmtui

Βλέπετε ότι η οθόνη είναι μεν στο τερματικό αλλά μπορείτε να χρησιμοποιήσετε τα βελάκια. Εάν επιλέξετε το ενεργοποιήστε μια σύνδεση, θα μπορείτε να επιλέξετε το ασύρματο δίκτυο που επιθυμείτε...
openSUSE i3wm επιλογή ασύρματου δικτύου


ΕΝΑΛΛΑΓΗ ΓΛΩΣΣΑΣ

Όπως είπα παραπάνω, άφησα το πλήκτρο alt για να κάνω την αλλαγή της γλώσσας. Πρόσθεσα στο τέλος του αρχείου config την εντολή:
# Layout
exec "setxkbmap -layout us,el"
exec "setxkbmap -option 'grp:alt_shift_toggle'"

Μια άλλη εναλλακτική είναι να προσθέστε την παρακάτω γραμμή.
# Layout
exec_always "setxkbmap -option 'grp:alt_shift_toggle' -layout us,el -variant ,qwerty"

Στο αρχείο /etc/locale.conf είχα τα παρακάτω:
LANG="el_GR.UTF-8"

Ίσως να χρειάζεται να είναι διαφορετικό. Αν δεν σας αλλάζει η γλώσσα, θα πρεπει να πειράξετε αυτό το αρχείο.

ΠΡΟΣΘΗΚΗ WALLPAPER

Αυτό δεν είναι απαραίτητο. Απλά προσφέρει λίγη ομορφιά. Θα χρειστεί να έχετε εγκατεστημένο το πρόγραμμα feh. Εγώ έχω μια φωτογραφία και την έχω προσέσει σταθερά με την παρακάτω γραμμή στο τέλος του αρχείου config.
# Wallpaper
exec --no-startup-id feh --bg-scale ~/Pictures/opensuse-wallpaper.jpg

Μια εναλλακτική, είναι να φτιάξετε ένα κατάλογο Wallpapers μέσα στον κατάλογο Pitures και να βάλετε όλα τα αρχεία που σας αρέσουν. Στη συνέχεια προσθέστε την παρακάτω γραμμή στο τέλος του αρχείου config και κάθε φορά που ανοίγει ο υπολογιστής, θα εμφανίζεται διαφορετική φωτογραφία στο background.
# Wallpaper
exec --no-startup-id feh --randomize --bg-scale ~/Pictures/Wallpapers/*


ΗΧΟΣ

Η αυξομοίωση του ήχου είναι ένα πρόβλημα. Πρόσθεσα τα παρακάτω:
# Volume
bindsym $mod+comma exec amixer set Master -q 5%-
bindsym $mod+period exec amixer set Master -q 5%+

Ουσιαστικά πατώντας το mod και το κόμμα, μειώνεται ο ήχος ενώ με το mod και την τελεία, αυξάνεται ο ήχος.

ΛΗΨΗ ΣΤΙΓΜΙΟΤΥΠΟΥ ΟΘΟΝΗΣ

Δοκίμασα πολλές λύσεις. Κάποιες δούλεψαν, κάποιες όχι. Θα γράψω πρώτα αυτή που χρησιμοποιώ και μετά τις υπόλοιπες. Σχεδόν για όλες τις λύσεις, χρειάζεται να έχετε εγκατεστημένα τα προγράμματα maim, xclip, byzanz.

Κάπου ενδιάμεσα στο αρχείο config πρόσθεσα τις παρακάτω γραμμές.
# Printscreen
# Screenshots
bindsym Print exec --no-startup-id maim "/home/$USER/Pictures/Screenshot-$(date -Iseconds | cut -d'+' -f1).png"
bindsym $mod+Print exec --no-startup-id maim --window $(xdotool getactivewindow) "/home/$USER/Pictures/Screenshot-$(date -Iseconds | cut -d'+' -f1).png"
bindsym Shift+Print exec --no-startup-id maim --select "/home/$USER/Pictures/Screenshot-$(date -Iseconds | cut -d'+' -f1).png"

## Clipboard Screenshots
bindsym Ctrl+Print exec --no-startup-id maim | xclip -selection clipboard -t image/png
bindsym Ctrl+$mod+Print exec --no-startup-id maim --window $(xdotool getactivewindow) | xclip -selection clipboard -t image/png
bindsym Ctrl+Shift+Print exec --no-startup-id maim --select | xclip -selection clipboard -t image/png

Τελειώσαμε με το αρχείο config. Απλά για reference, σας αφήνω από την ιστοσελίδα του project, την χρήση του πληκτρολογίου.
i3 χρήση πληκτρολογίου


i3 χρήση πληκτρολογίου

Επίσης μπορείτε να κατεβάσετε και το αρχείο pdf με όλες τις λειτουργίες των συνδυασμών των πλήκτρων.

ΡΥΘΜΙΣΕΙΣ ΑΡΧΕΙΟΥ .i3status.conf

Αυτο είναι ένα αρχείο που θα το αποθηκεύσετε στο home. Ουσιαστικά θα κάνει την ρύθμιση με τις πληροφορίες που θέλετε να φαίνεται στην κάτω μπάρα.
i3 status μπάρα
Βλέπουμε στην παραπάνω μπάρα, εμφανίζονται με την σειρά:
  1. Ένταση ηχείων
  2. Κατανάλωση μνήμης
  3. Φόρτωση διεργασιών (αριθμός των διεργασιών έτοιμων προς εκτέλεση για τα τελευταία 1 λεπτό, 5 λεπτά, 15 λεπτά)
  4. Ελεύθερος αποθηκευτικός χώρος στο /home
  5. Ασύρματο δίκτυο (IP, ποιότητα, ταχύτητα)
  6. Ενσύρματο δίκτυο (IP, ποιότητα, ταχύτητα)
  7. Ημερομηνία και ώρα
  8. nm-applet (για σύνδεση στο ασύρματο με την χρήση ποντικιού)


Δείτε μερικές φωτογραφίες:

i3 dmenui3 dmenu: Με την χρήση του πλήκτρου mod (πλήκτρο με το σήμα των windows) και το d, ανοίγει το πλαίσιο αυτό. Εδώ πληκτρολογείτε το πρόγραμμα που θελετε να ανοίξετε.

i3 τερματικάΥπάρχουν και προγράμματα που μπορείτε να κάνετε αυτό (Tmux). Εδώ βλέπουμε 3 τερματικά ανοικτά (μπορείτε να έχετε και άλλα προγράμματα ανοικτά)

i3 FirefoxΕδώ είναι ανοικτό το Firefox με 2 παράθυρα ανοικτά και τακτοποιημένα σε καρτέλες (πάνω φαίνεται να είναι χωρισμένα στη μέση)


Όλα τα αρχεία βρίσκονται εδώ:

  • Αποθήκευση του config στον φάκελο .config/i3/
  • Αποθήκευση του αρχείου .i3status.conf στον φάκελο του χρήστη (~)


Είχα γράψει παλιά ένα άρθρο:
Διαχειριστής παραθύρων i3. Ότι πιο γρήγορο έχω χρησιμοποιήσει...στο openSUSE

Περιέχει παλιές ρυθμίσεις. Αυτό είναι ανανεωμένο με τελευταίες πληροφορίες.
a silhouette of a person's head and shoulders, used as a default avatar

Usando funciones en la shell Fish en #Linux

Veamos cómo crear nuestros propios comandos con las funciones en la shell Fish en nuestro sistema GNU/Linux

Fish es una de las shells disponibles y alternativas a Bash y es mi shell predeterminada desde hace mucho. Fish nos ofrece cosas como autocompletado, resaltado de sintaxis, sugerencias de comandos según escribimos, y mucho más.

Esto nos ahorra tiempo, y nos hace más amigable el uso de la terminal.

Las funciones, tanto en fish como en bash, son programas o scripts escritos en el lenguaje propio de la shell que agrupan varios comandos con sus argumentos y ejecutamos al llamarlas por un nombre.

Es como si escribiéramos nuestros propios comandos, usando varias instrucciones, que se ejecutarían al escribir el nombre de nuestro comando personalizado, que es el nombre de la función.

Verás que es más sencillo de lo que he explicado, que nos pueden ser muy útiles. Podemos crear por ejemplo un comando que nos sirva de calculadora en la terminal, podemos hacer una función que al crear una directorio entre directamente en él, etc.

Las funciones en fish las puedes encontrar y crear en ~/.config/fish/functions/ ahí es donde las puedes encontrar y donde poner las tuyas. Tienen un nombre y acaban en .fish

Tienen la siguiente sintaxis, vamos a ver un ejemplo sencillo de una función de fish. Esta función lo que hace es crear un directorio y después entrar en él:

function mkdir --description 'Crea un directorio y entra directamente a el' --argument directorio
    command mkdir $directorio
    if test $status = 0
        switch $argv[(count $directorio)]
            case '-*'

            case '*'
                cd $argv[(count $directorio)]
                return
        end
    end
end

Para crear una función podemos hacerlo mediante el editor de funciones de fish y después guardarla con un comando específico o podemos crear el archivo en la ruta que he especificado y después salir de la terminal y volver a entrar.

Vamos a utilizar el primer método. Para ello ejecutamos el comando, que nos abrirá el editor configurado en $EDITOR en nuestro sistema:

funced mkdir

Y el editor ya nos crea la primera y última línea de nuestra función, que comienza con function y el nombre que le queremos dar y será el que después ejecutaremos para llamarla y termina con end.

Podemos modificarla y crearla a nuestro gusto, por ejemplo en la función anterior de ejemplo hemos añadido una descripción de qué realiza y hemos nombrado el parámetro que le pasamos con un nombre, esto no es estrictamente necesario, pero es aconsejable.

Después escribiremos los comandos necesarios, usando la sintaxis de fish, para realizar la tarea que queremos. Cerramos el editor guardando el archivo, pero aún deberemos decirle a fish que tenga en cuenta esta nueva función, para esto ejecutamos:

funcsave mkdir

Ahora ya podremos utilizar la función mkdir, que nos creará un directorio y luego entrará en el, para ejecutar la función simplemente ejecutamos:

mkdir nombre_directorio

Otra función que puede resultar interesante (y que surgió gracias a una duda del compañero Krovikan en los foros oficiales de openSUSE) sería una que nos convirtiera un archivo de vídeo a otro en formato .mp4 usando ffmpeg

La función sería la siguiente:

function mp4 --description 'convierte un video de entrada a uno de salida en mp4' --argument vid_entrada vid_salida
    ffmpeg -i $vid_entrada -b:a 128k -c:a aac -c:v libx264 -framerate 29 -threads 2 $vid_salida
end

Llamaremos a la función pasándole el nombre del archivo existente que queremos convertir y el nombre del archivo de salida en mp4. Si el nombre tiene espacios en blanco deberemos escaparlos con una barra invertida.

Podemos hacer que nuestras funciones en fish se ejecuten cuando se den ciertos eventos en nuestro sistema, al arrancar fish, al salir, después de producirse un error, etc.

Después de esta introducción, lo mejor es leer la documentación oficial y empezar a crear nuestras propias funciones en fish para tareas repetitivas que ejecutemos o aquellas que impliquen varios pasos.

¿Alguna función útil que sea imprescindible para ti? Compártela en los comentarios del blog.

Enlaces de interés