Download raw body.
UPDATE: sysutils/exfetch -> 1.5.2.1 (hotfix applied)
On 19.02.2026 00:26, izzy Meyer wrote:
> On Wed, 18 Feb 2026 16:53:39 -0600
> izzy Meyer <izder456@disroot.org> wrote:
>
>> Hello ports@
>>
>> I've been feeling really motivated lately with exfetch and added some
>> new features to it (see changelog below). I want to get this out into
>> the wild as soon as possible, so people can play around and test it on
>> their machines.
>>
>> Here's a simple update to sysutils/exfetch to a tag with these new
>> features.
>>
>> Tested on amd64, works good.
>>
>> I'd like someone to test these new changes before they commit if
>> that's ok.
- Offset works for me:
grumpy$ exfetch -f 7 -a OpenBSD
USER -> oops@grumpy.somewhere.oops
OS -> OpenBSD
VER -> 7.8
UPTIME -> 37 days, 11:17
DE/WM -> unknown
TERM -> screen
SHELL -> ksh
_____ CPU -> Intel Xeon CPU E5-2630 0 @ 2.30GHz
\- -/ GPU -> unknown
\_/ .` , \ PKGS -> 175
| , , 0 0 | LOAD -> 1m: 0.33, 5m: 0.26, 15m: 0.43
|_ < } 3 | SWAP -> 11.43 / 1264.00 MiB
/ \` . ` / MEM -> 52.32 / 1007.99 MiB
/-_____-\
I understand providing a negative value will raise an ArgumentError as
you mentioned in the man page.
Is there a more elegant way than to show the whole call stack? Handle it
similar like the color (-c|--color) argument?
grumpy$ exfetch -f -7 -a OpenBSD
Unhandled exception: ASCII offset cannot be negative. ILLEGAL
(ArgumentError)
from exfetch in '__register_frame_info'
from exfetch in '__register_frame_info'
from exfetch in 'main'
from exfetch in 'main'
from exfetch in '__start'
- Text-Only works as expected:
grumpy$ exfetch -c 1 -f 1 -a OpenBSD | tee output.with.escape
grumpy$ exfetch -c 1 -T -f 1 -a OpenBSD | tee output.without.escape
grumpy $ grep -c '\[' output.with.escape
13
grumpy $ grep -c '\[' output.without.escape
0
>>
>> /usr/ports/sysutils/exfetch git:(master+) $ make test
>> ===> Regression tests for exfetch-1.5.2
>> crystal spec --no-color -v -s -t -p --release
>> Parse: 00:00:00.000283360 ( 0.90MB)
>> Semantic (top level): 00:00:01.564889146 ( 124.76MB)
>> Semantic (new): 00:00:00.004672048 ( 124.76MB)
>> Semantic (type declarations): 00:00:00.084020180 ( 124.76MB)
>> Semantic (abstract def check): 00:00:00.045015596 ( 124.76MB)
>> Semantic (restrictions augmenter): 00:00:00.016167933 ( 124.76MB)
>> Semantic (ivars initializers): 00:00:00.933157956 ( 196.82MB)
>> Semantic (cvars initializers): 00:00:00.023979597 ( 196.82MB)
>> Semantic (main): 00:00:00.734872077 ( 228.95MB)
>> Semantic (cleanup): 00:00:00.001088280 ( 228.95MB)
>> Semantic (recursive struct check): 00:00:00.002413409 ( 228.95MB)
>> Codegen (crystal): 00:00:00.943954401 ( 260.95MB)
>> Codegen (bc+obj): 00:00:24.314646013 ( 260.95MB)
>> Codegen (linking): 00:00:00.853759568 ( 260.95MB)
>>
>> Macro runs:
>> -
>> /usr/ports/pobj/exfetch-1.5.2/exfetch/lib/baked_file_system/src/loader.cr:
>> reused previous compilation (00:00:00.023271315)
>>
>> Codegen (bc+obj):
>> - no previous .o files were reused
>> Exfetch::CLI
>> .colorize
>> wraps text in ansi codes
>> handles bright colors
>> .render
>> renders output string
>> Exfetch::Manip
>> .bytes_to_mebibytes
>> converts bytes to mebibytes string
>> .sanitize
>> removes newlines and strips whitespace
>> .has_command?
>> returns true for existing commands
>> returns false for non-existing commands
>> .run_command
>> runs a command and returns output
>> returns empty string on failure
>> .dir_size
>> returns 0 for non-existent dir
>> Exfetch::Options
>> .parse
>> parses default options
>> parses flags
>> parses color argument
>> parses padding
>> Exfetch::Resource
>> .get_short_info
>> returns basic info
>> .get_uptime
>> parses uptime correctly when mocked
>> .get_shell
>> returns shell basename
>> .get_cpu
>> returns cpu info
>>
>> Finished in 13.04 milliseconds
>> 18 examples, 0 failures, 0 errors, 0 pending
>> Execute: 00:00:00.059692262
>>
>> Changelog:
>> * Since(1.5.1)
>>
>> Misc Changes:
>>
>> Optimizations:
>>
>> Bugfixes:
>>
>> New features:
>> - Added -T and --text-only options to disable ansi escape seqences
>> - Added -f LINES and --ascii-offset=LINES options to offset ASCII by
>> LINES
>>
>
> Whoops, caused a bug in the offset code where ascii art would cut off
> if there wasn't a corresponding label on that line. here's a new diff.
> git tag bumped to 1.5.2.1, future versions will return to the X.Y.Z
> format.
>
UPDATE: sysutils/exfetch -> 1.5.2.1 (hotfix applied)