[[proyectos:linux]]

Linux notebook

Lista de subpáginas


Un lugar para volcar snippets sobre GNU/Linux, y ordenarlos por tema. Algún día podría pasar estas cosas a la wiki de Arch Linux si es digno.

Uso Arch 🙂

Me pasé a zsh pero es lo mesmo en el fondo.

Poner lo siguiente en .bashrc o .zshrc:

# PDF compress
gs_comprimir_pdf() {
    local first_arg="$1" \
          second_arg="$2"
 
    # Usar gs
    gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/prepress -dNOPAUSE -dQUIET -dBATCH -sOutputFile="$1.comppressed.pdf" $1
}
alias pdf_comprimir="gs_comprimir_pdf"

Referencias:

Reconocer texto en capturas de pantalla, para cuando la gente con fiaca o pocas ideas te manda links larguísimos en una imagen.

Requiere:

  • ImageMagick
  • Spectacle
  • Tesseract

Crear un script con el siguiente código, y luego un alias en .bashrc o .zshrc para ejecutarlo:

#!/bin/bash
 
select tesseract_lang in spa eng; do break; done
#echo $tesseract_lang
printf "\n"
 
SCR_IMG=`mktemp`
trap "rm $SCR_IMG*" EXIT
 
# spectacle, append ".png" to the output
spectacle -r -b -n -d 2 -o $SCR_IMG.png
 
# imagemagick
mogrify -modulate 100,0 -resize 400% $SCR_IMG.png
 
# sudo pacman -S tesseract tesseract-data-eng tesseract-data-spa
tesseract $SCR_IMG.png $SCR_IMG &> /dev/null
 
cat $SCR_IMG.txt
 
exit

Robado de acá: https://askubuntu.com/questions/280475/how-can-instantaneously-extract-text-from-a-screen-area-using-ocr-tools

error: “GH007: Your push would publish a private email address”

Convertir audio

Convertir audio en .mp3 o .wav a OGG Vorbis:

#!/bin/bash
 
for i in *.wav; do ffmpeg -i "$i" -c:a libvorbis -qscale:a 1 "ogg/${i%.*}.ogg"; done
 
for i in *.mp3; do ffmpeg -i "$i" -c:a libvorbis -qscale:a 1 "ogg/${i%.*}.ogg"; done

Opciones:

  • -qscale:a – audio quality. Range is -1.0 to 10.0, where 10.0 is highest quality. Default is -q:a 3 with a target of ​112kbps. The formula 16×(q+4) is used below 4, 32×q is used below 8, and 64×(q-4) otherwise. Examples: 112=16×(3+4), 160=32×5, 200=32×6.25, 384=64×(10-4).

Esto, más o menos, baja el tamaño de un .mp3 al tercio, y 20 veces el de un .wav.

Combinar video y audio

ffmpeg -i BioRender.mp4 -i BioRender.m4a -codec copy -shortest BioRender_merge.mp4

GIFs con transparencia

Hacer GIFs con .png con transparencia

  convert -delay 5 -dispose Background -loop 0 *.png myimage.gif
  

Imagemagick dejó de andar con el error: convert: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408.

Y seguí esta guia para cambiar “none” a “read|write” en una línea de este archivo: nano /etc/ImageMagick-7/policy.xml https://alexvanderbist.com/posts/2018/fixing-imagick-error-unauthorized

Imagenes a PDF monocromo

convert *.jpg -colorspace gray +dither -auto-level -threshold 70% -type bilevel output.pdf

Convertir varios archivos en paralelo con ffmpeg:

  for i in *.wav; do ffmpeg -i "${i}" -b:a 128000 "${i%.wav}.mp3"; done
  find . -name "*.wav" | parallel ffmpeg -i {} -b:a 128000 {.}.mp3

Para encontrar nombres de archivo duplicados en dos carpetas:

1) Buscar duplicados en las carpetas por separado

  find /pathToDir1/ -type f -printf "%f\n" | sort | uniq -cd
  find /pathToDir2/ -type f -printf "%f\n" | sort | uniq -cd

2) Buscar los duplicados y armar una listita con los que tienen exactamente dos copias

  find /pathToDir1/ /pathToDir2/ -type f -printf "%f\n" | sort | uniq -cd
  find /pathToDir1/ /pathToDir2/ -type f -printf "%f\n" | sort | uniq -c | egrep '^ *2 ' | gawk '{print $2}' > rm.list

3) Remove

  xargs rm < 1.txt  # No verifiqué si son un problema los archivos con espacios en el nombre

Links:

Algunas cheatsheets.

Timestamp en BASH history.

Buscar archivos que contienen un string grep -nrl <search_string> <in_this_directory> https://unix.stackexchange.com/questions/65181/list-the-files-containing-a-particular-word-in-their-text

En Arch, rename es una versión chota de perl-rename: https://bbs.archlinux.org/viewtopic.php?id=85128 Instalar: sudo pacman -Syu perl-rename perl-rename -v 's/.jpeg/.jpg/' *.jpeg

Disk IO speed test https://www.shellhacks.com/disk-speed-test-read-write-hdd-ssd-perfomance-linux/

sync; date; dd if=/dev/zero of=tempfile bs=1M count=2048; sync; date; rm tempfile;

Slic3r dejó de iniciar por un warning de Perl sobre el locale (el de siempre…) https://www.itechlounge.net/2017/01/linux-perl-warning-setting-locale-failed/

Agregué esto a /etc/environment y volvió a funcionar: LC_ALL=“en_US_.UTF-8”

No sé por qué es tan difícil hacer que esto no pase más…

.bashrc

  # Usefil alias
  alias h='history | grep'

Para que sudo pida la password de root y no la del usuario al ejecutar cosas con sudo: https://superuser.com/questions/161593/how-do-i-make-sudo-ask-for-the-root-password

Correr scripts antes/despues de ir a dormir: https://wiki.archlinux.org/index.php/Power_management#Hooks_in_/usr/lib/systemd/system-sleep

El sistema se puede suspender desde la CLI:

  sudo systemctl suspend

restart:

sudo systemctl restart NetworkManager.service

Sirve para cuando no aparecen la lista de WiFis.

El comando push “route …” puede usarse varias veces en server.conf para poder pasar varios rangos de IPs que no se puedan representar simplemente con un par IP/mask.

IPs CIDR y Subnets

Información con lscpu

Governor

sudo cpupower frequency-set -g performance
cpupower frequency-info

Undervolt

Fui bajando los valores en /etc/intel-undervolt.conf de a 20 mV hasta llegar a esto:

undervolt 0 'CPU' -120
undervolt 1 'GPU' 0
undervolt 2 'CPU Cache' -120
undervolt 3 'System Agent' -120
undervolt 4 'Analog I/O' -120

Repetir lo siguiente hasta llegar a no menos de -150 mV (puede ser más o menos, varía entre compus).

1) Configurar nuevos valores de voltaje.

sudo nano /etc/intel-undervolt.conf
sudo intel-undervolt read  # verificar valores actuales

2) Aplicar cambios y poner a prueba el sistema con los nuevos valores.

## stress --cpu 4 &  # para ver el descenso de temperatura, empezar stress antes de aplicar cambios
sudo intel-undervolt apply  # aplicar valores nuevos
stress --cpu 4  # poner a prueba el sistema

Está bueno ejecutar stress mientras se aplica el undervolt, para ver el efecto en la temperatura en vivo; esa supervisión se puede hacer con ksysguard system monitor de KDE.

3) En teoría hay que repetir lo anterior hasta que el sistema crashee, pero me quedé contento con que el CPU quedara bajo 70°C a -120 mV.

Cosas que leí:

Para migrar home a otra particion https://askubuntu.com/questions/205841/how-do-i-mount-a-folder-from-another-partition

Para linkear carpetas de una particion a otra # mount –bind /media/tc1/folder /home/dvad/home $ genfstab / # nano /etc/fstab https://askubuntu.com/questions/205841/how-do-i-mount-a-folder-from-another-partition

No tomé muchas notas de esto 😕 pero seguí la guía de Arch. Recuerdo haber tenido algun tema con darle internet, y solucionarlo de manera fácil.

vGPU passthrough

En el GRUB, agregar i915.enable_gvt=1 a los parámetros del kernel en /etc/default/grub:

#GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet"
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet i915.enable_gvt=1"
sudo pacman -S virtualbox virtualbox-host-modules-arch 
#solo este comando me falló, al reiniciar empezaron a aparecer errores durante el boot sobre no poder cargar módulos del kernel
sudo pacman -S virtualbox virtualbox-host-dkms
#después de ejecutar eso, se reemplazó virtualbox-host-modules-arch y virtualbox arrancó después de reiniciar
#quizás se pueda omitir virtualbox-host-modules-arch desde el inicio

https://wiki.archlinux.org/index.php/VirtualBox#Installation_steps_for_Arch_Linux_hosts

sudo pacman -S virtualbox-guest-modules-arch

Hay data sobre los proyectos del Raspberry Pi 4 en proyectos-3d.

https://snapcraft.io/install/nextcloud/debian

https://nextcloud.com/box/

Finalmente decidí instalarlo por Snap, la configuración manual no es fácil de seguir.

Si aparece este error después de hacer apt upgrade, solo hay que reiniciar el raspberry.

$ sudo snap install nextcloud
error: system does not fully support snapd: cannot mount squashfs image using "squashfs": mount:
       /tmp/sanity-mountpoint-869872477: unknown filesystem type 'squashfs'.

sudo no parece querer ver los comandos en /snap/bin (lista de comandos), como nextcloud.occ, necesarios para configurar desde la línea de comandos.

Pero el puerto se puede configurar por otro lado:

# https://github.com/nextcloud/nextcloud-snap
$ sudo snap set nextcloud ports.http=81

Después de eso, solo hay que entrar a través del navegador y configurar la contraseña del admin.

Onlyoffice no funciona

Ellos no bancan la arquitectura ARM del procesador de la raspberry, así que mala suerte 🤷🏻

A mi me pasó siempre que RStudio se colgaba un buen rato cuando cambiaba a otra aplicación en la computadora.

Acá hay algo para probar, deshabilitar el clipboard monitoring de X11:

Instalar R-3.3.3 junto a otras versiones:

Bajar la fuente de acá: https://cran.rstudio.com/src/base/R-3/

./configure --prefix=/opt/R/3.6.3 --enable-R-shlib
make -j7  # bajar a menos cores si hay menos, o se te cuelga todo :) puede tardar un rato
sudo make install

Y para tener un acceso directo, poner esto en ~/.local/share/applications/rstudio.desktop (cambiar el path al de la versión de R que corresponda)

[Desktop Entry]
Categories=Development;IDE;
Comment[en_US]=
Comment=
Exec=bash -c "export RSTUDIO_WHICH_R=/opt/R/3.6.3/bin/R; /usr/bin/rstudio-bin"
GenericName[en_US]=
GenericName=
Icon=rstudio
MimeType=text/x-tex;text/x-r-sweave;text/x-r-source;text/x-r-profile;text/x-r-presentation;text/x-r-markdown;text/x-r-html;text/x-r-history;text/x-r-doc;text/x-csrc;text/x-chdr;text/x-c++src;text/x-c++hdr;text/markdown;text/html;text/css;application/x-r-project;application/x-r-data;application/javascript;
Name[en_US]=RStudio 3.6.3
Name=RStudio 3.6.3
Path=
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=
X-KDE-SubstituteUID=false
X-KDE-Username=

Compilar R con error libcurl:

  export PATH=$HOME/Software/packages/bin:$PATH
  export LD_LIBRARY_PATH=$HOME/Software/packages/lib:$LD_LIBRARY_PATH
  export CFLAGS="-I$HOME/Software/packages/include"
  export LDFLAGS="-L$HOME/Software/packages/lib"
  mkdir -p $HOME/Software/packages
  cd $HOME/Software/curl
  ./configure --prefix=$HOME/Software/packages
  make -j7
  make install
  cd $HOME/Software/R-3.3.3
  ./configure --prefix=/opt/R/3.3.3 --enable-R-shlib
  make -j7
  sudo make install

Para borrar meta-paquetes de KDE con juegos y eso, hice esto: https://linuxhint.com/remove_package_dependencies_pacman_arch_linux/

sudo pacman -S xf86-input-wacom kcm-wacomtablet

Lista de inputs:

xinput list
xsetwacom list devices

Para probar botones en xinput o xev:

xinput test 11 | grep -v motion  # para ver el stylus
xinput test 17 | grep -v motion  # para ver el eraser
xev -event button

xev devuelve, por defecto, un valor solamente para el segundo botón (desde la punta):

ButtonPress event, serial 40, synthetic NO, window 0x6400001,
root 0x1a0, subw 0x0, time 267011, (84,70), root:(1316,99),
state 0x0, button 2, same_screen YES

ButtonRelease event, serial 40, synthetic NO, window 0x6400001,
root 0x1a0, subw 0x0, time 267216, (88,72), root:(1320,101),
state 0x200, button 2, same_screen YES

xinput hace lo mismo, solo ve el botón de arriba (el más alejado de la punta del stylus).

Ni xev ni xinput detectan el botón de “eraser” como un input. Pero en Krita sucede que el “eraser” funciona: cuando se lo toca, cambia temporalmente a una herramienta que borra, mientras se lo mantenga apretado. Ni dea como funciona.

En Graphic Tablet settings de KDE se puede configurar la acción del “botón 2” que corresponde al botón más alejado. El botón 1 sería la punta del lápiz supongo 🤷 y la acción del eraser no se puede cambiar desde ahí.

Para listar las opciones de configuración del stylus/eraser con xinput:

xinput list-props 11
xinput list-props 17

Para cambiar el eraser a right click con xsetwacom:

xsetwacom get "Wacom HID 50FB Pen eraser" Button 1  # por defecto es button +1
xsetwacom set "Wacom HID 50FB Pen eraser" Button 1 3  # right mouse button
xsetwacom set "Wacom HID 50FB Pen eraser" Button 1 2  # middle mouse button

xsetwacom set no es muy persistente.

A ver con xinput:

 xinput --set-prop "Wacom HID 50FB Pen eraser" "button 1 action" --format=32 --type=int 1572874

Archivos de configuración

La wiki dice que edite 72-wacom-options.conf pero ese archivo no existe. Están:

/usr/share/X11/xorg.conf.d/40-libinput.conf
/usr/share/X11/xorg.conf.d/70-wacom.conf

Según esto, no importa, así que se puede crear /etc/X11/xorg.conf.d/72-wacom-options.conf

Section "InputClass"
    Identifier "local wacom tablet tweaks"

    # Product to configure – supply your own product identifier.
    MatchProduct "Wacom HID 50FB Pen eraser"

    # Driver to use for this device.
    # (Identical to the default, so not essential to mention.)
    Driver "wacom"

    # Configuration options: set button 1 (tip) to middle button
    Option "Button1" "2"
EndSection

O bien:

Section "InputClass"
        Identifier "WACOM OPTIONS pen"
        MatchDriver "wacom"
        MatchProduct "Pen"
        NoMatchProduct "eraser"
        NoMatchProduct "cursor"
EndSection

Section "InputClass"
        Identifier "WACOM OPTIONS pad"
        MatchDriver "wacom"
        MatchProduct "Pad"
EndSection

Section "InputClass"
        Identifier "WACOM OPTIONS eraser"
        MatchDriver "wacom"
        MatchProduct "eraser"
        Option "Button1" "2"
EndSection

Section "InputClass"
        Identifier "WACOM OPTIONS cursor"
        MatchDriver "wacom"
        MatchProduct "cursor"
EndSection

Botón bluetooth

El botón bluetooh funciona completamente por separado. Para probar si el botoncito bluetooth funciona:

sudo libinput debug-events

Al conectarlo por bluetooth dice:

-event21  DEVICE_ADDED     Lenovo Active Pen2 Keyboard       seat0 default group12 cap:k
-event21  DEVICE_REMOVED   Lenovo Active Pen2 Keyboard       seat0 default group12 cap:k

Mientras udevadm monitor muestra esto cuando toco el botón:

KERNEL[1716.637734] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/bluetooth/hci0/hci0:7 (bluetooth)
UDEV  [1716.642903] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/bluetooth/hci0/hci0:7 (bluetooth)
KERNEL[1717.899647] remove   /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/bluetooth/hci0/hci0:7 (bluetooth)
UDEV  [1717.902551] remove   /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/bluetooth/hci0/hci0:7 (bluetooth)

Parece que el botón bluetooth no anda:

Y xinput test-xi2 no reacciona.

Arch configurar touchpad o=con libinput para que reconozca los “taps” https://wiki.archlinux.org/index.php/Libinput#Via_Xorg_configuration_file

Agregar a la sección de touchpad en /usr/share/X11/xorg.conf.d/40-libinput.conf la opción:

   Option "Tapping" "on"

Y reiniciar X

Laptop as Bluetooth Speaker

Ver: https://unix.stackexchange.com/questions/205378/use-desktop-as-bluetooth-headset

sudo pacman -S bluez bluez-utils pulseaudio-bluetooth
sudo usermod -a -G pulseaudio $USER
sudo systemctl restart bluetooth

Despues de aparear bien, deberia andar de una!

  yay -S iio-sensor-proxy-git kded-rotation-git

Con simple screen recorder, hay que apagar “vsync” en compositor settings para que no haya cosas raras en el video.

Me pasaba que al grabar aparecian y desaparecian muy rapidamente pedazos de otras ventanas o del fondo de pantalla.

El archivo es ~/.config/kioslaverc y contiene:

AutoResume=true
ProxyUrlDisplayFlags=7
 
[Proxy Settings]
NoProxyFor=web.whatsapp.com,192.168.0.1/16,192.168.10.155,192.168.11.171,157.92.39.145,192.168.12.185,192.168.11.237
Proxy Config Script=
ProxyType=0
ReversedException=false
ftpProxy=ftp://proxy.fcen.uba.ar:8080
httpProxy=http://proxy.fcen.uba.ar:8080
httpsProxy=http://proxy.fcen.uba.ar:8080
socksProxy=

Está así aunque en los settings esté deshabilitado el proxy (i.e. No Proxy).

Automatizar cambios

Setup a crontab as regular user, using crontab -e:

*/1 * * * * ~/Software/Scripts/change_proxy.sh

Crear un script en ~/Software/Scripts/change_proxy.sh que contenga lo siguiente:

#!/bin/bash
 
# set crontab
# */1 * * * * ~/Software/Scripts/change_proxy.sh
 
LOGFILE="${HOME}/.config/wpa_cli_status.log"
UUID=`nmcli --fields UUID,DEVICE connection show --active | grep wlp1s0 | cut -d \  -f 1`
DATE=`date`
 
 
if [ "$UUID" = '' ]
then
	echo "${DATE} No active WiFi network, leaving unchanged." > "$LOGFILE"
else
	UUID=`cat /home/nicomic/.config/wpa_cli_status.txt | grep uuid | cut -d \= -f 2`
	if [ $UUID = "50afbed1-b648-5948-8d74-492f54975c45" ]
	then
		echo "${DATE} We are connected to IFIBYNE's WiFi, enabling proxy." > "$LOGFILE"
		kwriteconfig5 --file kioslaverc --group 'Proxy Settings' --key ProxyType "1"
	else
		echo "${DATE} We are elsewhere, disabling proxy." > "$LOGFILE"
		kwriteconfig5 --file kioslaverc --group 'Proxy Settings' --key ProxyType "0"
	fi
fi

Usando las notificaciones de KDE5:

#!/bin/bash
 
# set crontab
# */1 * * * * ~/Software/Scripts/change_proxy.sh
 
LOGFILE="${HOME}/.config/wpa_cli_status.log"
UUID=`nmcli --fields UUID,DEVICE connection show --active | grep wlp1s0 | cut -d \  -f 1`
DATE=`date`
 
 
if [ "$UUID" = '' ]
then
        MESSAGE="${DATE} No active WiFi network, leaving unchanged."
else
        # old stuff UUID=`cat /home/nicomic/.config/wpa_cli_status.txt | grep uuid | cut -d \= -f 2`
        if [ $UUID = "50afbed1-b648-5948-8d74-492f54975c45" ] || [ $UUID = "9f981375-88b1-4e30-8403-55e01612137b" ]
        then
                MESSAGE="${DATE} We are connected to IFIBYNE's WiFi, enabling proxy."
                kwriteconfig5 --file kioslaverc --group 'Proxy Settings' --key ProxyType "1"
        else
                MESSAGE="${DATE} We are elsewhere, disabling proxy."
                kwriteconfig5 --file kioslaverc --group 'Proxy Settings' --key ProxyType "0"
        fi
fi
 
echo "${MESSAGE}" > "$LOGFILE"
notify-send "${MESSAGE}" -a "IFIBYNE proxy script" -i /usr/share/icons/breeze-dark/status/64/dialog-information.svg

La magia está en kwriteconfig5 y en el 1 al final.

  • 1 significa use manually specified configuration que reside en ~/.config/kioslaverc
  • 0 significa deshabilitar el proxy.

Fuentes:

Instrucciones para instalar Arch Linux (en sistema UEFI) y tips de uso.

Casi todo es de la wiki oficial: wiki.archlinux.org

Hay mucho material online, como este: https://denovatoanovato.net/instalar-arch-linux/

Previa

Instalar Arch desde un live USB.

Bajar la ISO https://www.archlinux.org/download/ y grabarla con dd.

Si hay otra PC con Arch en la LAN, conviene hacer un “Network Shared Pacman Cache”:

En la otra compu, correr:

  # ln /var/lib/pacman/sync/*.db /var/cache/pacman/pkg
  $ sudo ufw allow proto tcp from 192.168.2.0/24 to any port 8080  # si UFW está andando
  $ sudo -u http darkhttpd /var/cache/pacman/pkg --no-server-id

Y en la compu donde se está instalando Arch, agregar al principio de /etc/pacman.d/mirrorlist:

  Server = http://mymirror:8080

Reemplazando mymirror por lo que corresponda (la IP de la otra compu por ejemplo).

Instalar

Bootear desde ahí y configurar todo.

wifi-menu
ping google.com
lsblk
mkfs.ext4 /dev/nvme0n1p6  # Root
mkfs.ext4 /dev/nvme0n1p7  # Home
mkfs.fat -F32 /dev/nvme0n1p5  # EFS
mount /dev/nvme0n1p6 /mnt
mkdir /mnf/efi
mount /dev/nvme0n1p5 /mnt/efi
mkdir /mnt/home
mount /dev/nvme0n1p7 /mnt/home

Acá quizás quiera hacer un pacstrap más completo y omitir los pacman más adelante:

# Mínimo
pacstrap /mnt base linux linux-firmware base-devel dosfstools
# Extendido
pacstrap /mnt base linux linux-firmware base-devel dosfstools nano grub efibootmgr os-prober ntfs-3g intel-ucode networkmanager networkmanager-openvpn zsh pacman-contrib
genfstab -U /mnt >> /mnt/etc/fstab
arch-chroot /mnt
 
ln -sf /usr/share/zoneinfo/America/Buenos_Aires /etc/localtime
hwclock --systohc
 
pacman -S nano
nano /etc/locale.gen
locale-gen 
nano /etc/locale.conf
 
nano /etc/hostname
nano /etc/hosts
 
passwd
 
sudo pacman -S grub efibootmgr
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=archGRUB
pacman -S os-prober ntfs-3g intel-ucode
grub-mkconfig -o /boot/grub/grub.cfg
cat /boot/grub/grub.cfg  | grep ucode
cat /boot/grub/grub.cfg  | less
mkinitcpio -P
 
pacman -Syu networkmanager networkmanager-openvpn
systemctl status NetworkManager.service
systemctl enable NetworkManager.service
systemctl start NetworkManager.service
 
exit # salir del chroot
umount -R /mnt
reboot
 
 
nmcli device wifi list
nmcli device wifi connect "EL SSID DE TU WIFI" password CONTRASEÑΑ hidden yes
nmcli device wifi list
ping google.com
 
sudo pacman -S zsh
useradd -m -s /bin/zsh TU_USUARIO
passwd TU_USUARIO
 
EDITOR=nano visudo

Agregar TU_USUARIO ALL=(ALL) ALL y Defaults rootpw, y cambiar de usuario:

su TU_USUARIO

Opcionalmente se puede elegir los mirrors más rápidos, pero toma un tiempo:

sudo pacman -S pacman-contrib
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bkp
rankmirrors -n 6 /etc/pacman.d/mirrorlist.bkp > /etc/pacman.d/mirrorlist
pacman -Syyu

Post-install

Cosas para hacer post-instalación:

  • Nuevo usuario, agregar a sudoers.
  • Cambiar sudoers para que tome rootpw y no la del usuario nuevo.
  • Revisar la wiki de plasma para las fuentes, para compatibilidad con qt4 y gtk, y quitar los bordes feos.

Cosas para poder imprimir y escanear (sane iscan skanlite?)

X11 o Wayland

Xorg/KDE: se puede instalar el “grupo” o mirarlo para elegir qué instalar del mismo

sudo pacman -S xorg xf86-video-intel plasma xorg-xinit

Para Wayland:

pacman -S xf86-video-intel xorg plasma plasma-wayland-session 
# Iniciar en Wayland
XDG_SESSION_TYPE=wayland dbus-run-session startplasma-wayland

Aplicaciones

Del grupo kde-applications instalé algunos:

ark
dolphin
dolphin-plugins
ffmpegthumbs
filelight
gwenview
kaccounts-integration
kbackup
kcalc
kcharselect
kcolorchooser
kcron
kdenlive
kio-extras
kolourpaint
kompare
konsole
ksystemlog
kwalletmanager
kwallet kwallet-pam ksshaskpass
okular
print-manager
signon-kwallet-extension
spectacle
yakuake

 sudo pacman -S ark dolphin dolphin-plugins ffmpegthumbs filelight gwenview kaccounts-integration kbackup kcalc kcharselect kcolorchooser kcron kdenlive kio-extras kolourpaint kompare konsole ksystemlog kwalletmanager okular print-manager signon-kwallet-extension spectacle yakuake kwallet kwallet-pam ksshaskpass

Instalar programas favoritos:

deluge python-cairo
git
partitionmanager
telegram-desktop
openssh sshfs
mlocate
firefox chromium
minidlna
bup rsync kup syncthing
gtk2 gtk3
flatpak  # Para spotify, por ejemplo.
sane skanlite hplip
redshift qt5-graphicaleffects
jre-openjdk-headless
vlc
imagemagick

sudo pacman -S  deluge python-cairo git partitionmanager telegram-desktop openssh sshfs mlocate firefox chromium minidlna kwalletmanager kwallet kwallet-pam ksshaskpass bup rsync kup syncthing gtk2 gtk3 flatpak sane skanlite hplip redshift qt5-graphicaleffects jre-openjdk-headless vlc imagemagick

Media:

sudo pacman -S inkscape gimp vlc kdenlive handbrake krita blender simplescreenrecorder audacity libreoffice-still imagemagick ardour ffmpeg minidlna

Sublime text:

curl -O https://download.sublimetext.com/sublimehq-pub.gpg && sudo pacman-key --add sublimehq-pub.gpg && sudo pacman-key --lsign-key 8A8F901A && rm sublimehq-pub.gpg
echo -e "\n[sublime-text]\nServer = https://download.sublimetext.com/arch/stable/x86_64" | sudo tee -a /etc/pacman.conf
sudo pacman -Syu sublime-text

Otros:

base-devel bash-completion xorg xf86-video-intel mesa networkmanager plasma plasma-nm firefox chrome vlc bup rsync kup gparted sublime text y addons deluge inkscape gimp krita imagemagick shotwell pycharm-community-edition zotero python3 python-pandas python-pip python-regex python-virtualenv python2-lxml python2-numpy python2-virtualenv

Para inhabilitar el login grafico:

systemctl set-default multi-user.target

Para iniciar KDE:

Editar .xinitrc

exec startplasma-x11

Y ejecutar:

startx

AUR Yay!

Instalar YAY:

git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

Cosas copadas que están ahí:

yay -S printrun
yay -S gitkraken

Slic3rPE, Pronterface y Arduino IDE requieren acceso a estas cosas.

https://manual.prusa3d.com/Guide/Upgrading+the+firmware+v1.4/66?lang=en Para que Slic3er pueda actualizar el firmware de la Impresora Prusa MK3 hay que agregar mi usuario al grupo uucp:

sudo gpasswd -a TU_USUARIO uucp
sudo pacman -S sdl2_ttf
git clone https://github.com/mamedev/mame.git
make -j4

Desde Arch:

  1. Bajar iso.
  2. Grabar la imagen a un pendrive con dd normalmente (lo de isohybrid no fue necesario al final).
sudo dd if=elementaryos-5.1-stable.20191202.iso of=/dev/PENDRIVE bs=4M status=progress oflag=sync

Instalar cups y configurar desde el sitio web (http://localhost:631/) logueándose como root.

No busqué cómo hacer para que no sea necesario usar root, pero tiene que ver con agregarse al grupo lp y/o sys.

sudo usermod -aG lp USERNAME
sudo usermod -aG sys USERNAME

Además fue necesario instalar system-config-printer para que ande en KDE si aparece el error 'The name org.fedoraproject.Config.Printing was not provided by any .service files'

sudo pacman -S system-config-printer

Para esta impresora, CUPS alcanza.

Más abajo en esta página está la configuración con hp-setup, pero se puede hacer desde la interfaz web o del modo que sea.

Bajé los drivers de esta impresora para Linux-Linux, del sitio de HP:

Dentro hay scripts de instalación, y un archivo PPD HP_Laser_10x_Series.ppd que sirve para esta impresora . Lo encontré por suerte, ya que el PPD no aparece en la lista de CUPS.

Si uno agrega la impresora por KDE o por CUPS web, aparece un error… le falta algo que se llama /usr/libexec/cups/filter/rastertospl. Eso no está en ningún lado y Google no fue de gran ayuda, pero buscando el PPD llegué a esto:

Ahí dice que si confias en HP y sus scripts, hay que instalar unos drivers “de Samsung” para que esto funcione, porque en otro post se dice que: As of hplip HPLIP-3.19.11, there is no support for this printer. So sad 😢

Entonces hice, sin confianza pero con fé:

$ sudo su
# ./install-printer.sh

Ese script está en el mismo .zip que el PPD.

Por las dudas reinicié, y todo funcionó.

sudo pacman -S hplip sane skanlite

Bajar el archivo PPD de la impresora “Photosmart_Plus_B209a-m all-in-one” (hp-photosmart_plus_b209a-m.ppd.gz). Descomprimir y copiar el path absoluto al portapapeles.

Configurar con:

hp-setup -i

En algún momento va a pedir el path al PPD.

Verificar que ahora aparece:

scanimage -L

Cambiar la versión de java que se usa por defecto:

archlinux-java status
sudo archlinux-java set java-8-openjdk/jre
sudo archlinux-java set java-11-openjdk

Ver: https://wiki.archlinux.org/index.php/Java

Monitorear inputs:

pactl load-module module-loopback
pactl unload-module module-loopback

Refs:

Instalar y configurar

Hay dos “versiones” de jack para instalar:

  • jack
  • jack2

Instalar Jack, Cadence, Ardour, etc.

# 2019
sudo pacman -S jack2 alsa-utils pulaseaudio-jack cadence pavucontrol cpupower patchage alsa-plugins ardour

# 2020
sudo pacman -S jack2 python-dbus cadence pulseaudio-jack gst-plugins-good alsa-plugins pavucontrol cpupower

Para que funcione bien con pulseaudio:

The ALSA audio bridge should be set to ALSA → PulseAudio → JACK, and the PulseAudio bridge should be enabled.
Make sure in pavucontrol that all output devices besides Jack sink are muted, and all input devices besides Jack input are muted.
Start JACK using the Force Restart button, and if it starts successfully PulseAudio programs should begin outputting to JACK.

Para que funciones bien con ALSA:

To allow Alsa programs to play while jack is running you must install the jack plugin for alsa with alsa-plugins.

Para que funcione bien con GStreamer:

GStreamer requires the gst-plugins-good package to work with JACK

Jack GUI

https://wiki.archlinux.org/index.php/JACK_Audio_Connection_Kit#A_GUI-based_example_setup

sudo pacman -S jack2 python-dbus
sudo pacman -S cadence

También está qjackctl pero no es recomendado por el tutorial de PulseAudio through Jack.

Audio en Arch, configurando Scarlett Solo https://superuser.com/questions/626606/how-to-make-alsa-pick-a-preferred-sound-device-automatically

Muy piola reumen de paquetes para musica en linux https://wiki.archlinux.org/index.php/Professional_audio#Getting_Started

Temas de XRUNs https://askubuntu.com/questions/539406/how-to-avoid-xrun-callback-skips https://community.ardour.org/node/10663

Dejó de andar, y tuve que aplicar el fix por el tema del GDM. sudo mkdir -p ~gdm/.config/systemd/user sudo ln -s /dev/null ~gdm/.config/systemd/user/pulseaudio.socket

Monitorear el input de scarlett solo con pulseaudio https://askubuntu.com/questions/355082/pulseaudio-loopback-unload-audio-output-devices el único tema es que tiene alta latencia!

Instalar el kernel realtime linux-rt del AUR https://wiki.archlinux.org/index.php/Professional_audio#Realtime_Kernel https://wiki.archlinux.org/index.php/Realtime_kernel#Installation https://bbs.archlinux.org/viewtopic.php?id=191954 http://allanmcrae.com/2015/01/two-pgp-keyrings-for-package-management-in-arch-linux/

Parece que faltaba instalar “patch” https://bbs.archlinux.org/viewtopic.php?id=46248

Cambiar la prioridad (niceness) de un proceso existente con “renice” donde -20 es el máximo, 0 es el default y 19 el mínimo (en prioridad) https://www.nixtutor.com/linux/changing-priority-on-linux-processes/

Realtime Kernel

Yaourt hizo timeout esperando la contraseña después de compilar y hay que empezar de nuevo (qué estupidez) Mejor lo hago a mano y listo: https://wiki.linuxfoundation.org/realtime/start https://stackoverflow.com/questions/28136815/linux-kernel-how-to-obtain-a-particular-version-right-upto-sublevel https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?h=linux-4.13.y&id=b762de8221691f3fabb3ea583ac777c0baea3641

Para compilar un kernel se puede usar varios cores con la opcion -j de make https://stackoverflow.com/questions/2499070/gnu-make-should-the-number-of-jobs-equal-the-number-of-cpu-cores-in-a-system https://wiki.archlinux.org/index.php/makepkg#Parallel_compilation

Hice git clone de acá https://aur.archlinux.org/packages/linux-rt/

Y las intrucciones de acá https://wiki.archlinux.org/index.php/Kernels/Arch_Build_System

Al principio estaba usando bastante CPU, pero después bajó a ~13% total (igual que cuando lo arranqué por yaourt) ¿no le dio bola a la opción -j4? ¿-j8 hubiera sido mejor?

Éxito! despues de editar la grub tengo casi nada de xruns.

Buscando “tolerable xruns” encontré un blog gracioso y útil que pone a punto su setup: “Enter: THE SCIENTIFIC METHOD” http://mountainbikesandtrombones.blogspot.com.ar/2012/03/problems-with-xrun.html https://wiki.archlinux.org/index.php/CPU_frequency_scaling#cpupower https://bbs.archlinux.org/viewtopic.php?id=201100 https://bbs.archlinux.org/viewtopic.php?id=159482

Instalé cpupower le di systemctl enable … y las frecuencias pasaron de 800mhz a 3.47ghz 🙂 Tengo dos governors: powersave y performance, tendré que cambiarlos manualmente o hacer un script:

sudo cpupower frequency-set -g performance
cpupower frequency-info

A fin de cuentas, sigo teniendo algunos xrun, pero también graba de corrido sin uno solo.

Backups con git GUI para git: https://www.gitkraken.com/ Basado en git: https://github.com/bup/bup

Syncthing parece piola: https://wiki.archlinux.org/index.php/Synchronization_and_backup_programs - Git-annex y sparkleshare estan basados en git. - Backups incrementales hay varias opciones: borg, bup, kup.

Varias cosas para cloud storage (google drive xej): https://wiki.archlinux.org/index.php/Synchronization_and_backup_programs#Third-party_services

Lore: https://stackoverflow.com/questions/549600/is-there-a-fundamental-difference-between-backups-and-version-control

For fuck's sake: https://freefilesync.org/

Es importante bajar la misma versión de unison en ambas PCs y ademas compilarlo con la misma versión del compilador. Si, no anda… malísimo.

La alternativa es usar sshfs para montar el remoto localmente, y usar unison “pseudo-localmente”.

Para ignorar cosas editar ~/.unison/archivo_tipo.prf:

  ignore = Name {*/,.*/}.git
  ignore = Name {*/,.*/}.Rproj.user
  ignore = Name .Rhistory
  ignore = Name .gitignore

https://web.archive.org/web/20191218052957/https://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html#ignore

Como usar bup: https://github.com/bup/bup https://debian-administration.org/users/kumanna/weblog/16 https://mharrison.org/post/bup/

Se puede “examinar” los cambios entre backups de Bup con un ls:

  # Esta variable está configurada con export en mi .bashrc
  BUP_DIR=/path/al/backup
  bup fuse -d /path/al/mount/point
  ls -Rg ./latest > ~/latest.txt
  # Y despues usar Diff para ver cuáles fueron los cambios
  diff ~/not_the_latest.txt ~/latest.txt
  
  # Seguramente se pueda montar solo latest si sirviera para que sea más rápido
  

Kup tiene toda la configuracion guardada en: ~/.config/kuprc

Usar BUP para tener versiones es más simple, pero también más difícil de consultar.

Usando solo rclone

Procedimiento:

Primero reemplazar “20191019” por la nueva fecha en este .txt

  1. –dry-run y nombrar el log: 20191019.dry.rclone.log
  2. backup (con sync y –drive-alternate-export). Rehacer si hubo errores.
  3. hard-link copy: 20191019.hardLinkCopy
  4. ls recursivo ls.20191019.log

1) Prueba:

Revisar que esté todo bien.

  rclone sync RCLONE_BACKUP:/ /pathToBackup/RCLONE_DIR/ --drive-alternate-export --dry-run >> 20191019.dry.rclone.log.txt 2>> 20191019.dry.rclone.log.txt

2) Backup:

2A. rclone sincronizando (borrando lo que se borró en drive, normalmente hago esto):

  rclone sync RCLONE_BACKUP:/ /pathToBackup/RCLONE_DIR/ --drive-alternate-export >> 20191019.rclone.sync.log.txt 2>> 20191019.rclone.sync.log.txt

2B. rclone copiando lo nuevo:

  rclone copy RCLONE_BACKUP:/ /pathToBackup/RCLONE_DIR/ --drive-alternate-export >> 20191019.rclone.copy.log.txt 2>> 20191019.rclone.copy.log.txt

3) Hard-link

Para hacer copias con hard links al final.

  cp -al /pathToBackup/RCLONE_DIR/ /pathToBackup/BACKUP_DIR/20191019.hardLinkCopy
  

Podría usar bup en vez de hard-links, pero como los archivos no cambian creo que da igual en cuanto a espacio de almacenamiento.

4) ls recursivo

Al final debería hacer un ls -Rl que sirva para ver diferencias con DIFF o Kdiff3.

  ls -gGhR --time-style=long-iso /pathToBackup/RCLONE_DIR/ > ls.20191019.log

Versionando con BUP

Es más simple, primero veo qué cambios se bajarína del Drive con la carpeta local y guardo los logs.

rclone sync Frubox:/ ~/Bakups/Frubox/ --drive-alternate-export --dry-run >> logs_rclone/20200417.rclone.dry_run.log.txt 2>> logs_rclone/20200417.rclone.dry_run.log.txt

Luego de hacer correcciones en el Drive, bajo los cambios se bajarína del Drive con la carpeta local y guardo los logs.

rclone sync Frubox:/ ~/Bakups/Frubox/ --drive-alternate-export >> logs_rclone/20200417.rclone.sync.log.txt 2>> logs_rclone/20200417.rclone.sync.log.txt

Luego uso KUP para guardar la nueva versión de la carpeta local. De esta manera siempre tengo la última version disponible en mi computadora y puedo revisar versiones anteriores.

Efectivamente se desperdicia un poco de espacio porque la carpeta está guardada una vez de forma normal, y por duplicado en el backup de BUP. No está mal supongo.

Review acá. Se pueden sandboxear.

Están OpenSCAD, KiCAD, FreeCAD, Steam, GNU Octave, GitKraken, etc.

flatpak update
flatpak search spotify
flatpak install com.spotify.Client
 sudo apt install snapd
 sudo snap install syncplay --classic
 /snap/bin/syncplay

create_ap en Arch es muy fácil de usar. Permite estar conectado a otra red wifi como cliente, mientras tira wifi a otro dispositivo 🙂 grosso.

The Git inferno (?) en git.wtf.

Un artículo y la wiki de Arch.

sudo pacman -S syncthing
syncthing
 
sudo systemctl enable syncthing@<<myuser>>.service
sudo systemctl start syncthing@<<myuser>>.service

Significado del output: https://stackoverflow.com/questions/4493525/rsync-what-means-the-f-on-rsync-logs

  YXcstpoguax  path/to/file
  |||||||||||
  ||||||||||╰- x: The extended attribute information changed
  |||||||||╰-- a: The ACL information changed
  ||||||||╰--- u: The u slot is reserved for future use
  |||||||╰---- g: Group is different
  ||||||╰----- o: Owner is different
  |||||╰------ p: Permission are different
  ||||╰------- t: Modification time is different
  |||╰-------- s: Size is different
  ||╰--------- c: Different checksum (for regular files), or
  ||              changed value (for symlinks, devices, and special files)
  |╰---------- the file type:
  |            f: for a file,
  |            d: for a directory,
  |            L: for a symlink,
  |            D: for a device,
  |            S: for a special file (e.g. named sockets and fifos)
  ╰----------- the type of update being done::
               <: file is being transferred to the remote host (sent)
               >: file is being transferred to the local host (received)
               c: local change/creation for the item, such as:
                  - the creation of a directory
                  - the changing of a symlink,
                  - etc.
               h: the item is a hard link to another item (requires 
                  --hard-links).
               .: the item is not being updated (though it might have
                  attributes that are being modified)
               *: means that the rest of the itemized-output area contains
                  a message (e.g. "deleting")

Examples:

  >f+++++++++ some/dir/new-file.txt
  .f....og..x some/dir/existing-file-with-changed-owner-and-group.txt
  .f........x some/dir/existing-file-with-changed-unnamed-attribute.txt
  >f...p....x some/dir/existing-file-with-changed-permissions.txt
  >f..t..g..x some/dir/existing-file-with-changed-time-and-group.txt
  >f.s......x some/dir/existing-file-with-changed-size.txt
  >f.st.....x some/dir/existing-file-with-changed-size-and-time-stamp.txt 
  cd+++++++++ some/dir/new-directory/
  .d....og... some/dir/existing-directory-with-changed-owner-and-group/
  .d..t...... some/dir/existing-directory-with-different-time-stamp/

https://wiki.archlinux.org/index.php/ReadyMedia#Running_minidlna_as_your_own_user

Algo digno de un alias:

minidlnad -f /home/USUARIO/.config/minidlna/minidlna.conf -P /home/USUARIO/.config/minidlna/minidlna.pid -r; cat /home/USUARIO/.config/minidlna/minidlna.pid; tail -f /home/USUARIO/.config/minidlna/minidlna.log

Simple screen recorder + Screenkey:

  ''screenkey --no-detach -t 1 -s small --multiline''
  ''simplescreenrecorder''
  

Cuando en inkscape la separación entre líneas de un cuadro de texto no parece poder cambiarse:

http://www.inkscapeforum.com/viewtopic.php?t=31575

Apretar el botón de “show style of outermost text element”.

https://sourceforge.net/projects/whyteboard/ https://www.pencil2d.org/ https://www.synfig.org/

https://www.youtube.com/watch?v=nEyrC1v-M1s

https://inkscape.org/da/learn/animation/

https://www.youtube.com/watch?v=lcBCVkYw0aA https://www.youtube.com/watch?v=MaiSrJNXNeQ https://www.youtube.com/watch?v=C-IYnm2Gv78

En el video muestran como se puede dibujar arriba de una presentcion SVG-jessyink apretando la tecla D. Acá muestran como animar lineas! https://jakearchibald.com/2013/animated-line-drawing-svg/

Está muy bueno el compilado de formas de animar (webs) usando SVG, CSS, y a veces Js y otras cosas que no me suenan. Hay una forma de animar usando solo SVG que se llama SMIL. https://www.hongkiat.com/blog/svg-animations/

Documentación sobre animar SVGs https://www.w3.org/TR/SVG/animate.html

http://sozi.baierouge.fr/pages/10-about.html Sozi y JezzyInk son, aparentemente, un poco como Prezi.

Acá hay info y ejemplos, de 3 formas de animar SVGs. SMIL es “la recomendada” https://en.wikipedia.org/wiki/SVG_animation

Para usar JessyInk hay que tener instalado lxml en python2. Inkscape solo busca python2, instalé eso en python 3 y no me lo reconoció. https://stackoverflow.com/questions/26266437/how-to-use-python2-7-pip-instead-of-default-pip Hay que instalar python2-pip con el package manager (pacman, apt) y después usar pip2 o pip2.7 para instalar lxml. Recién ahí pude activar JessyInk en Inkscape.

Este wachin anima texto/dibujos usando paths, todo en inkscape. https://www.youtube.com/watch?v=wab7lQKHXL4

Otros de lo mismo. Este lo hace con algo de CSS: https://www.youtube.com/watch?v=y0Ic8QcvyK8 Acá hay algunos tips al respecto: https://stackoverflow.com/questions/23864588/how-to-animate-calligraphy-text-as-if-its-written-by-hand Gran articulo con un monton de opciones, la de hacer lo grafico en inkscape y animar con programación parece bien: https://medium.com/@fmuaddib/the-following-are-the-possible-ways-to-create-professional-animations-in-svg-9d4caca5f4ec

Un ejemplo con CSS para handwritting: https://codepen.io/munkholm/pen/EaZJQE Queda ver como hacer para combinarlo con transiciones

Con SnapSVG JavaScript https://davidwalsh.name/svg-animation

Acá menciona optimizar el SVG para que sea más legible: https://medium.com/@aniboaz/animate-svg-4fa7dd00e860

Te dirige acá para más recursos: https://svgontheweb.com/
  Que tiene muchos más enlaces a tutoriales https://css-tricks.com/guide-svg-animations-smil/
  

Este es un tuto recomendado, que explica un poco lo de la optimización: https://www.smashingmagazine.com/2014/11/styling-and-animating-svgs-with-css/

Buen tuto: http://www.i-programmer.info/programming/javascript/6537-getting-started-with-snapsvg.html

SVG ViewBox https://www.justinmccandless.com/post/making-sense-of-svg-viewboxs-madness/ https://www.sarasoueidan.com/blog/svg-coordinate-systems/

Pensando en los keyframes, encontré esto sobre animar en CSS y Snap https://davidwalsh.name/svg-animations-snap

Otro tuto, menciona viewbox y el timing (usando timers) https://blog.10pines.com/2017/10/31/creating-svg-animatinos-with-snap-svg/

Para cargar SVGs desde archivos: http://svg.dabbles.info/snaptut-load http://svg.dabbles.info/snaptut-load-animate http://www.i-programmer.info/programming/javascript/6537-getting-started-with-snapsvg.html?start=1

Info piola para animar sobre Paths: http://jbavari.github.io/blog/2014/10/23/a-field-guide-to-snap-dot-svg/

snapSVG plugins para pan/zoom/rotate ¿Podré hacer transiciones con esto? :0 https://code.google.com/archive/p/svgpan/ https://github.com/hueitan/snap.svg.zpd https://github.com/ariutta/svg-pan-zoom

Algunos casos de “slideshows” o presentaciones en internet: https://gist.github.com/splodingsocks/7816825 Este está piola! https://tympanus.net/codrops/2014/10/24/wobbly-slideshow-effect/ Este está roto: https://codepen.io/cactis/pen/gPPoJq Este hace unas transiciones de forma (como metamorfoseando entre productos apple) https://codepen.io/Thijs/pen/jJIis

  • proyectos/linux.txt
  • Última modificación: 2020/07/06 18:46
  • por nicomic