2025-09-13
For efficient management of your terminals and processes, it is essential to use a terminal multiplexer.
fish
shell, add to the
.config/fish/config.fish
file:if status --is-login
if test -z "$DISPLAY" -a $XDG_VTNR = 1
exec tmux
end
end
This will automatically start tmux
in the tty number 1
(a terminal multiplexer similar to tmux
).
Alternatively, you can use dvtm
.
chromium --headless $1 --disable-gpu --run-all-compositor-stages-before-draw --dump-dom --virtual-time-budget=10000 | sed "s|<head>|<head><base href=$1>|g" | w3m -T text/html
.fbida
:fbi
and
mpv
):
fbida
: pacman -S fbida
. You can
use fbi
(part of fbida
) to view images:
fbi image.jpg
or fim image.jpg
.mpv
can also be used to view images.fbpdf
:
fbpdf document_name.pdf
w3m
with Invidious:
inv.nadeko.net
) with
w3m
.mpv
as the default browser in
w3m
. When accessing the video URL, press
Shift+M
to open it with mpv
or Escape+Shift+M
.mpv
for Twitch:
mpv
to watch Twitch streams (you will have
to run mpv with --ignore-config
if you’re using mpv with
YouTube settings.mpv --vo=drm video.mp4
mpv
and invidious
for
YouTube:
alias invidious 'w3m https://inv.nadeko.net/feed/subscriptions'
and set mpv
as default browser./etc/mpv/mpv.conf
:$ cat /etc/mpv/mpv.conf
--profile=fast
--sub-auto=all
--vo=drm
--ytdl-raw-options="format=bestvideo[height<=?360]+bestaudio/best[height<=?360]/bestvideo[height<=?480]+bestaudio/best[height<=?480],write-auto-sub=,sub-lang=[es,en,ru],write-sub="
--volume-max=600
#--save-position-on-quit
#--untimed
#--profile=low-latency
--mute=yes
/etc/yt-dlp.conf
:$ cat /etc/yt-dlp.conf
--format=233+230
--write-auto-sub
--write-sub
--sub-lang=en
#--cookies-from-browser firefox
Important: If you use mpv
for videos,
run it outside tmux
; otherwise, you won’t be able to switch
between other TTYs.
jackett
and btstrm
to search for
torrents from the console.eglfs
and linuxfb
)eglfs
and
linuxfb
:gpu
.#export QTWEBENGINE_CHROMIUM_FLAGS="--ignore-gpu-blacklist --disable-gpu"
export QTWEBENGINE_CHROMIUM_FLAGS="--ignore-gpu-blacklist"
export XKB_DEFAULT_LAYOUT=es
to set your
keyboard distribution.eglfs
:export QT_QPA_PLATFORM=eglfs
Then, start your Qt application (e.g., qutebrowser
).
linuxfb
:export QT_QPA_PLATFORM=linuxfb:size=1000x1000
To run some applications that normally require a graphical server
(like graphical web browsers), you can run it using linuxfb
or eglfs
.
Control+C
.sudo chmod 666 /dev/input/event*
Graphical Browsers (with eglfs
,
linuxfb
or sdl
support):
qutebrowser
(with
eglfs
):QT_QPA_PLATFORM
environment variable as
indicated above.
qutebrowser
: You can use
privatebin
to copy text from qutebrowser
, then
access the URL and save the file.falkon
:
eglfs
, although it did not work
with linuxfb
in one instance.Falkon
(it’s no good)
so I use greasymonkey (still not good).
AdBlock settings
, and add all non-regional lists
(EasyPrivacy, NoCoin List, Anti-Adblock Killer, Peter Lowe’s List,
etc.).Settings -> Extensions
, and check the box for
GreaseMonkey
.https://greasyfork.org
.Konqueror
: It is a KDE browser that
can also be tested in these configurations.NetSurf
: Can be run in tty using
SDL
: netsurf-fb -f sdl -w 1366 -h 768
.
NetSurf
does not have JavaScript support. You can add
netsurf-fb -f sdl -w 1366 -h 768
as external browser in
w3m
.All KDE applications built with Qt can run from the TTY
using these framebuffer platforms like kolourpaint
you can play games like doom
also.
Use Control+Z
to get back to the TTY and
fg
to reopen the qt application.
when using ffmpeg to record, you can capture any qt application
with the linuxfb
platform, but recording is not possible if
you are using elgfs
.
# You need to open the live dashboard first.
falkon "https://www.youtube.com/live_dashboard"
### Stream to YouTube only tty.
ffmpeg -f alsa -i pipewire -thread_queue_size 1024 -f fbdev -framerate 60 -i /dev/fb0 -c:v libx264 -preset ultrafast -tune zerolatency -pix_fmt yuv420p -c:a aac -b:a 128k -f flv -async 1 -ar 48000 -latency 100 -bufsize 1000k rtmp://a.rtmp.youtube.com/live2/KEY 2> /dev/null
#### Stream to YouTube TTY with camera.
ffmpeg -f alsa -i pipewire -thread_queue_size 1024 -f fbdev -framerate 60 -i /dev/fb0 -f v4l2 -framerate 60 -video_size 320x240 -i /dev/video0 -filter_complex "[2:v]scale=320:240[cam];[1:v][cam]overlay=main_w-overlay_w-10:main_h-overlay_h-10[outv]" -map "[outv]" -map 0:a -c:v libx264 -preset ultrafast -tune zerolatency -pix_fmt yuv420p -c:a aac -b:a 128k -f flv -bufsize 1000k rtmp://a.rtmp.youtube.com/live2/KEY 2> /dev/null
### Stream to YouTube full cam.
ffmpeg -f alsa -i pipewire -thread_queue_size 1024 -f v4l2 -framerate 60 -video_size 1280x720 -i /dev/video0 -c:v libx264 -preset ultrafast -tune zerolatency -pix_fmt yuv420p -c:a aac -b:a 128k -f flv -bufsize 1000k rtmp://a.rtmp.youtube.com/live2/KEY 2> /dev/null
### Record video.
ffmpeg -f alsa -i pipewire -f fbdev -r 30 -i /dev/fb0 record.mp4
GPM
to have mouse support in the TTY:
sudo systemctl start gpm
.privatebin
, to copy text (e.g., from
qutebrowser
), paste it into privatebin
, and
then save the paste to a file.My current alias for web-browsing:
alias dgg 'w3m dgg.gg'
alias mojeek "w3m https://www.mojeek.com/search?q=hola"
alias wiby "w3m http://wiby.org"
alias news "netsurf-fb -f sdl -w 1366 -h 768 news.ycombinator.com"
alias doom 'cd doom; bash play_doom.sh;'
alias rcommandline "w3m old.reddit.com/r/commandline"
alias google 'w3m google.com'