Sunday, April 27, 2025
Sunday, February 11, 2024
Transcoding with intel quicksync (qsv) h264 -> hevc
#!/bin/env bash # usage: enc.sh <source_file> <quality, e.g. 25, 1..51> # https://trac.ffmpeg.org/wiki/Hardware/QuickSync # accepts h264 and transcodes on hardware, tested. ffmpeg -hwaccel qsv -c:v h264_qsv -i "$1" -init_hw_device qsv:hw -vf 'scale_qsv=1920:1080' -c:a aac -b:a 192K -c:v h264_qsv -global_quality:v $2 -preset:v 1 -profile:v 77 "$1-h264-aac-qsv-1080p-$2.mp4"Convert to hevc/h265:
#!/bin/env bash # usage: enc.sh <source_file> <quality, e.g. 25, 1..51> # https://trac.ffmpeg.org/wiki/Hardware/QuickSync # accepts h264 and transcodes on hardware, tested. ffmpeg -hwaccel qsv -c:v h264_qsv -i "$1" -c:v hevc_qsv -global_quality:v $2 -preset:v 1 -profile:v 1 -c:a libopus -b:a 96K "$1-hevc-qsv-$2.mkv"Encode to VP9 (in software):
#!/bin/env bash # usage: enc.sh <source_file> <quality, e.g. 30, 0..63> # https://trac.ffmpeg.org/wiki/Encode/VP9 ffmpeg -i "$1" -c:a libopus -b:a 96K -c:v libvpx-vp9 -b:v 0 -crf $2 -pass 1 -an -f null /dev/null ffmpeg -i "$1" -c:a libopus -b:a 96K -c:v libvpx-vp9 -b:v 0 -crf $2 -pass 2 "`basename $1`_vp9tp_$2.webm"
Saturday, September 9, 2023
Kensington Expert Mouse Linux config
#!/bin/bash
#
LEFT_HANDED=""
show_help() {
echo "Usage: [--left]"
echo "--left = use lefthanded config"
exit 1
}
parse_args() {
while [[ $# -gt 0 ]]; do
case $1 in
--left)
LEFT_HANDED="yes"
shift
;;
*)
show_help
;;
esac
done
}
parse_args $@
MOUSE_NAME="Kensington Expert Mouse"
CHECK=$(xinput | grep "$MOUSE_NAME")
set -e
echo "check=$CHECK"
if [[ -z "$CHECK" ]]; then
echo "Cannot find the device: $MOUSE_NAME"
exit 1
fi
TRACKBALL_ID=$(xinput | grep "$MOUSE_NAME" | sed 's/^.*id=\([0-9]*\)[ \t].*$/\1/')
LEFT_TOP=2
LEFT_BOTTOM=1
RIGHT_TOP=8
RIGHT_BOTTOM=3
SCROLL_CLOCKWISE=5
SCROLL_COUNTERCW=4
# LB, LT, RB, SCCW, SCW, 6, 7, RT
MOUSE_LEFT=1
MOUSE_MIDDLE=2
MOUSE_RIGHT=3
# ---
# make scrolling with the ball smooth
SCROLLING_PIXEL_DISTANCE=50
# X clients receive events with logical button numbers, where 1, 2, 3 are usually interpreted as left, middle, right and logical buttons 4, 5, 6, 7 are usually interpreted as scroll up, down, left, right. The fourth and fifth physical buttons on a device will thus send logical buttons 8 and 9. The ButtonMapping option adjusts the logical button mapping, it does not affect how a physical button is mapped to a logical button.
if [[ -n $LEFT_HANDED ]]; then
echo "using lefthanded config"
SCROLLING_BUTTON=$RIGHT_TOP
# LB, LT, RB, SCCW, SCW, 6, 7, RT
BUTTON_MAP="$MOUSE_MIDDLE $MOUSE_RIGHT $MOUSE_LEFT 4 5 6 7 8"
else
# right hand settings
SCROLLING_BUTTON=$LEFT_TOP
# LB, LT, RB, SCCW, SCW, 6, 7, RT
BUTTON_MAP="$MOUSE_LEFT 8 $MOUSE_MIDDLE 4 5 6 7 $MOUSE_RIGHT"
fi
# -------
xinput set-prop $TRACKBALL_ID "libinput Scrolling Pixel Distance" $SCROLLING_PIXEL_DISTANCE
xinput set-prop $TRACKBALL_ID "libinput Button Scrolling Button" $SCROLLING_BUTTON
xinput set-prop $TRACKBALL_ID "libinput Scroll Method Enabled" 0, 0, 1
xinput set-button-map $TRACKBALL_ID 1 2 3 4 5 6 7 8 9
echo $BUTTON_MAP
xinput set-button-map $TRACKBALL_ID $BUTTON_MAP
Monday, July 24, 2023
BIOS update from Linux for Lenovo Thinkbook 13s g2 itl
You need to download intel ME driver, BIOS and ME firmware update installers: https://pcsupport.lenovo.com/lt/en/products/laptops-and-netbooks/thinkbook-series/thinkbook-13s-g2-itl
Download windows 10 iso: https://www.microsoft.com/en-us/software-download/windows10ISO
Then you need wine to run those installers in Wine, select "Extract only". Then the installers and firmware apps need to be overlaid on the winpe.iso, which is made from the win10 iso as described there:
https://wiki.archlinux.org/title/Windows_PE
Then you mount winpe.iso and copy all the files to the FAT32 root partition on the USB flash. Copy EFI folder from the original Win10 iso.
After booting to USB flash drive (ENTER, F12) you go to firmware update directory and run respective ...Flash/install.bat
Then you need to enter BIOS Setup (ENTER, F1), and "Load Optimized Defaults".
After that you can update ME firmware the same way, booting from the USB, "...Flash/MEUpdate.bat"
Saturday, December 17, 2022
High dpi displays better solution for laptops for Linux
Instead of modifying each font size, it turned that adjusting only font scaling is enough.
In KDE it's "Fonts - System settings" -> "Force font DPI: 144" for 13 inch fullhd screen. Although in this way some apps may scale icons as well, e.g. LibreOffice. But still it's better than display scaling setting, which brakes some apps like Steam and games.
Saturday, December 10, 2022
Raku programming language
Source "star" bundle takes forever to compile and ends with errors. Better to install only rakudo + zef bundle from here:
https://rakudo.org/downloads
Slower than Python, REPL consumes 130MB ram.
Friday, November 11, 2022
High dpi displays, laptops and scaling in Linux
As of November 2022 there's no proper/flawless support for "fractional" (125%, 150% etc) scaling of the GUI on the Linux desktop. Yes there is good support in KDE, but still some apps (e.g. darktable, steam) either ignore or wrongly position control elements on the screen. And there's no proper support for multiple displays with different dpi (as far as I know it's a limitation of X11).
If you have a laptop with small physical screen but higher pixel count (e.g. 13" 1920x1200), then i found the only working solution -- adjust fonts size and use some settings inside the applications to increase readability, e.g. set default zoom size to 150% in Firefox, set bigger fonts in the terminal emulator, set bigger fonts in the VSCode preferences etc, set 150% scaling in the Telegram app preferences... But this will not allow for different scaling for the external monitor.
If you plan to buy a laptop with small physical screen, look for either a 1280x800 screen or an integer multiplier of it, e.g. 2560x1600, it's what the Apple laptops have -- they do not support fractional scaling, but the display resolution is twice as large as a previously common one. By the way 16" macs with 4K displays have higher dpi than previous 2560x1600, so the texts are uncomfortably smaller and there's no solution to it at all.
If you plan to use a multiple display configuration, make sure that displays have the same or at least close DPI value.