esublim is a Wayland-native analogue of
enkiv2/asublim. It reads text from stdin,
a file, or a command, splits it into whitespace-separated tokens, splits tokens
larger than 512 bytes into smaller chunks, and starts showing tokens as soon as
they are read. In looped modes the same stream is cached while it is displayed,
then replayed after the input command finishes.
The original programs use X11/XOSD. This version uses GTK4 plus
gtk4-layer-shell, which maps naturally to Wayland compositors that support
wlr-layer-shell such as Sway, Hyprland, River and Wayfire.
Install the development packages for:
gtk4gtk4-layer-shellpkg-config- a C compiler
Then build:
makeInstall to /usr/local/bin:
sudo make installOr install into your home directory:
make install PREFIX="$HOME/.local"Single-token asublim-style mode:
./esublim --file words.txt --color LawnGreen --font "Monospace Bold 42"Grouped overload mode:
./esublim \
--file words.txt \
--overload \
--group-min 4 \
--group-max 60 \
--font-size-min 18 \
--font-size-max 96 \
-no-centerIn --overload, several tokens are visible at the same time. Their coordinates,
colors and font sizes are randomized. The target number of simultaneous tokens
and the current font-size ceiling fluctuate smoothly between the configured
minimum and maximum values.
Stop it from the same terminal with Ctrl+C. Avoid Ctrl+Z: it suspends the
process and can leave the last frame visible. If that happens, run:
./esublim-stopPut text files under TEXTDATA_ROOT. Two dictionaries can simply be two
subdirectories or two groups of files under the same root:
$HOME/textdata/
settings/
a.txt
noise/
book-lines.txt
words.txt
For the default $HOME/textdata layout, run:
./start.shstart.sh is a small preset wrapper around launch-sublim.sh. For custom
paths or launch settings, call launch-sublim.sh directly. It starts one
overload process per data set by default, writes process IDs to esublim.pids,
and writes logs to logs/.
Useful launch variables:
ESUBLIM="./esublim" \
TEXTDATA_ROOT="$HOME/textdata" \
COPIES_PER_SET=1 \
MAX_START_DELAY=0 \
PID_FILE="./esublim.pids" \
LOG_DIR="./logs" \
NICE_LEVEL=0 \
GROUP_MIN=4 \
GROUP_MAX=60 \
FONT_SIZE_MIN=18 \
FONT_SIZE_MAX=96 \
DELAY_SHOW=1 \
DELAY_WORD=0 \
DELAY_PHRASE_MIN=0 \
DELAY_PHRASE_MAX=10 \
./launch-sublim.shStop the launched background set with:
./stop-sublim.shIf no PID file is available, stop all running esublim processes by name:
./esublim-stopSupported options include:
-c, --color, --colour
-f, --font
-F, --file
-program, --program
--random-color
--random-colour
--subliminal
--random-loop
--random-words
--random
--overload
--group-min
--group-max
--font-size-min
--font-size-max
-delayShow
-delayWORD
-delayPhraseMin
-delayPhraseMax
-no-center
-no-random
-no-screensaver
--delayShowMax
--delayShowMin
--delayWordMax
--delayWordMin
--cooldown-max
--cooldown-min
--cooldownMax
--cooldownMin
-w, -x, --screen-width
-y, --screen-height
--centered
--center-offset-x
--center-offset-y
--offset-x
--offset-y
--timeout
Notes:
--fontexpects a Pango font description, for example"Inter Bold 48"or"Monospace 32", not an X font string.--timeoutis accepted for CLI compatibility; the show/hide timers are driven by the delay options.-delayShow,-delayWORD,-delayPhraseMinand-delayPhraseMaxare xsublim-compatible options and use microseconds. For example, xsublim's default-delayShow 40000means 40 ms.-programor--programruns a shell command and reads its stdout. In looped modes, tokens are displayed as they arrive and cached for replay.- Newlines in
-program/--fileinput are treated as phrase boundaries for-delayPhraseMinand-delayPhraseMax. -no-randomloops through the collected input sequentially after the live stream ends.--subliminal,--random-loop,--random-words,--randomand--overloadpick random cached tokens after the live stream ends.--overloadenables grouped display, looped input, random replay, randomized font sizes, and the density/font-ceiling fluctuation.-no-centerand-no-screensaverare accepted for xsublim script compatibility.-no-screensaveris a no-op in this Wayland version.--screen-widthand--screen-heightlimit the random placement area.--random-colorchooses a new vivid color for each displayed token. This is the default; pass--colorto use one fixed color.- Wayland does not have an X11-style global root window. If the compositor does
not expose
wlr-layer-shell,esublimfalls back to ordinary fullscreen GTK windows and cannot guarantee always-on-top behavior.
GPL-3.0-or-later.