Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
0bfa331
Merge pull request #20 from BinaryFetch-CLI/main
InterCentury Sep 19, 2026
70a9860
feat(linux): add distro-aware ASCII art database with generator tooling
InterCentury Sep 28, 2026
801c241
fix(linux): rename config dir binaryfetch -> BinaryFetch to match Win…
InterCentury Sep 28, 2026
595a67c
fix(linux): reorder compact processor display settings for improved c…
InterCentury Sep 28, 2026
fc6f343
fix(linux): update empty bar representation colors for consistency
InterCentury Sep 28, 2026
748e789
Silence MemoryInfo debug warnings behind verbose flag
InterCentury Sep 28, 2026
cbd311f
Change Config mode from ReleaseSource to Dev for testing new features…
InterCentury Oct 1, 2026
9ac0e8b
feat(windows): add animated GIF support via Sixel (new Gif mode)
InterCentury Oct 1, 2026
e77738e
fix(gif): correct cell-size detection, add opt-in viewer mode for tal…
InterCentury Oct 2, 2026
ebf8045
Refactor: add video projection feature for windows terminal through f…
InterCentury Oct 2, 2026
70cadd9
Refactor: replace ffmpeg dependency with Media Feature Pack
InterCentury Oct 2, 2026
8072607
fix(image): use 6x7x6 palette with Bayer dithering to remove colour b…
InterCentury Oct 2, 2026
cefe0fa
update: src\BinaryFetch\resources\Default_JSON_theme_windows_RC\Defau…
InterCentury Oct 3, 2026
22748bb
fix(video): stop sheared frames and green edge line
InterCentury Oct 3, 2026
b7098c5
update src\BinaryFetch\cpp\windows\core\Video.cpp
InterCentury Oct 3, 2026
8252939
feat(video): add fade-in from black on launch
InterCentury Oct 3, 2026
5001eff
Update: src\BinaryFetch\resources\Default_JSON_theme_windows_RC\Defau…
InterCentury Oct 3, 2026
0fb3bc6
build(installer): bump to v1.8 and clean old data folder before install
InterCentury Oct 3, 2026
5946ad3
Bug: update defualt buggy Ascii Art of windows at src\BinaryFetch\cpp…
InterCentury Oct 3, 2026
97deba9
Update default Ascii Art of windows build at src\BinaryFetch\cpp\wind…
InterCentury Oct 3, 2026
0b798b4
fix(viewer): stop video/GIF waiting for a click before playing
InterCentury Oct 3, 2026
a3fc76b
Code cleaning: src\BinaryFetch\cpp\windows\core\Video.cpp
InterCentury Oct 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,9 @@ set(BINARYFETCH_HEADERS
"${BINARYFETCH_INCLUDE}/core/resource.h"
"${BINARYFETCH_INCLUDE}/core/config_management.h"
"${BINARYFETCH_INCLUDE}/core/Image.h"
"${BINARYFETCH_INCLUDE}/core/Gif.h"
"${BINARYFETCH_INCLUDE}/core/Video.h"
"${BINARYFETCH_INCLUDE}/core/linux_ascii_database.h"
"${BINARYFETCH_STB_IMAGE}/stb_image.h"

# --------------------------------------------------------
Expand Down Expand Up @@ -185,6 +188,8 @@ if(WIN32)
"${BINARYFETCH_CPP}/windows/core/AsciiArt.cpp"
"${BINARYFETCH_CPP}/windows/core/config_management.cpp"
"${BINARYFETCH_CPP}/windows/core/Image.cpp"
"${BINARYFETCH_CPP}/windows/core/Gif.cpp"
"${BINARYFETCH_CPP}/windows/core/Video.cpp"
# ----------------------------------------------------
# Detailed Information
# ----------------------------------------------------
Expand Down Expand Up @@ -266,7 +271,7 @@ elseif(UNIX AND NOT APPLE)
"${BINARYFETCH_CPP}/Linux/core/AsciiArt.cpp"
"${BINARYFETCH_CPP}/Linux/core/config_management.cpp"
"${BINARYFETCH_CPP}/Linux/core/Image.cpp"

"${BINARYFETCH_CPP}/Linux/core/linux_ascii_database.cpp"
# ----------------------------------------------------
# Detailed Information
# ----------------------------------------------------
Expand Down
Binary file added binaryfetch-1.0/usr/local/bin/binaryfetch
Binary file not shown.
240 changes: 240 additions & 0 deletions build files/BinaryFetch v1.8/BinaryFetch_v1.8_setup.iss
Original file line number Diff line number Diff line change
@@ -0,0 +1,240 @@
; -----------------------------------------------------------
; BinaryFetch Installer
; Author: BinaryFetch-CLI
; Publisher: BinaryFetch-CLI
; Version: 1.8
;
; Installs BinaryFetch.exe and adds it to the system PATH.
;
; New in 1.8: before installing, any existing
; C:\Users\Public\BinaryFetch folder (old config, ASCII art, etc.)
; is deleted so that stale settings can't conflict with the new
; version. BinaryFetch recreates its defaults on first run.
; -----------------------------------------------------------


[Setup]
AppId={{9F6E2C2A-8A7B-4C6F-9A2D-3F6A0C91E4A1}}

AppName=BinaryFetch
AppVersion=1.8
AppPublisher=BinaryFetch-CLI

; Version shown in the Setup .exe's Properties > Details tab
VersionInfoVersion=1.8.0.0
VersionInfoProductVersion=1.8.0.0
VersionInfoProductName=BinaryFetch
VersionInfoCompany=BinaryFetch-CLI
VersionInfoDescription=BinaryFetch Setup

AppPublisherURL=https://github.com/BinaryFetch-CLI
AppSupportURL=https://github.com/BinaryFetch-CLI/BinaryFetch
AppUpdatesURL=https://github.com/BinaryFetch-CLI/BinaryFetch

DefaultDirName={autopf}\BinaryFetch
DefaultGroupName=BinaryFetch

UninstallDisplayIcon={app}\BinaryFetch.exe

LicenseFile=H:\programming\git_and_github\BinaryFetch\build files\Build-License\License.txt
SetupIconFile=H:\programming\git_and_github\BinaryFetch\build files\Icon & Banners\BinaryFetch.ico

OutputDir=C:\Users\OBITO\Downloads
OutputBaseFilename=BinaryFetch-v1.8-Setup

Compression=lzma
SolidCompression=yes
WizardStyle=modern

PrivilegesRequired=admin
ChangesEnvironment=yes

ArchitecturesAllowed=x64
ArchitecturesInstallIn64BitMode=x64

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

[Files]
Source: "H:\programming\git_and_github\BinaryFetch\build\bin\Release\BinaryFetch.exe"; DestDir: "{app}"; Flags: ignoreversion

[Icons]
Name: "{autoprograms}\BinaryFetch"; Filename: "{app}\BinaryFetch.exe"
Name: "{autodesktop}\BinaryFetch"; Filename: "{app}\BinaryFetch.exe"

[Code]

const
WM_SETTINGCHANGE = $001A;
SMTO_ABORTIFHUNG = $0002;

// Where BinaryFetch keeps its config (BinaryFetch_Config.jsonc),
// BinaryArt.txt and other user files. Windows paths are
// case-insensitive, so this also matches "binaryfetch".
BF_DATA_DIR = 'C:\Users\Public\BinaryFetch';

function SendMessageTimeoutA(
hWnd: Longint; Msg: Longint; wParam: Longint; lParam: AnsiString;
fuFlags: Longint; uTimeout: Longint; var lpdwResult: Longint
): Longint;
external 'SendMessageTimeoutA@user32.dll stdcall';

// Tell Explorer and other running processes to re-read the environment
// block from the registry. Without this, RegWriteStringValue alone
// leaves every already-running process (including Explorer, which is
// what spawns new terminal windows) with a stale PATH, so a "new"
// terminal opened after install still won't find binaryfetch.
procedure RefreshEnvironment();
var
dwResult: Longint;
begin
SendMessageTimeoutA(
HWND_BROADCAST, WM_SETTINGCHANGE, 0, 'Environment',
SMTO_ABORTIFHUNG, 5000, dwResult
);
end;

// Deletes the old BinaryFetch data folder (if it exists) so an old
// config can't conflict with the new version. Runs silently, also in
// /SILENT and /VERYSILENT installs. Failure is logged but never aborts
// the install.
procedure RemoveOldDataFolder();
begin
if DirExists(BF_DATA_DIR) then
begin
Log('Old BinaryFetch data folder found: ' + BF_DATA_DIR);
if DelTree(BF_DATA_DIR, True, True, True) then
Log('Old BinaryFetch data folder deleted.')
else
Log('Could not fully delete old BinaryFetch data folder (a file may be in use).');
end
else
Log('No old BinaryFetch data folder found. Nothing to delete.');
end;

function NeedsAddPath(): Boolean;
var
Paths: string;
begin
Result := True;
if RegQueryStringValue(
HKLM,
'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',
'Path',
Paths) then
begin
Result := Pos(
Lowercase(ExpandConstant('{app}')),
Lowercase(Paths)
) = 0;
end;
end;

procedure AddAppPathToSystemPath();
var
Paths, NewPaths, AppPath: string;
begin
AppPath := ExpandConstant('{app}');
if RegQueryStringValue(
HKLM,
'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',
'Path',
Paths) then
begin
if Pos(Lowercase(AppPath), Lowercase(Paths)) = 0 then
begin
NewPaths := Paths;
if (Length(NewPaths) > 0) and (NewPaths[Length(NewPaths)] <> ';') then
NewPaths := NewPaths + ';';
NewPaths := NewPaths + AppPath;
RegWriteStringValue(
HKLM,
'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',
'Path',
NewPaths
);
end;
end
else
begin
RegWriteStringValue(
HKLM,
'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',
'Path',
AppPath
);
end;

RefreshEnvironment();
end;

procedure RemoveAppPathFromSystemPath();
var
Paths, NewPaths, AppPath: string;
begin
AppPath := ExpandConstant('{app}');
if not RegQueryStringValue(
HKLM,
'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',
'Path',
Paths) then
Exit;

NewPaths := Paths;

StringChangeEx(NewPaths, ';' + AppPath, '', True);
StringChangeEx(NewPaths, AppPath + ';', '', True);
StringChangeEx(NewPaths, AppPath, '', True);

while Pos(';;', NewPaths) > 0 do
StringChangeEx(NewPaths, ';;', ';', True);

if (Length(NewPaths) > 0) and (NewPaths[1] = ';') then
Delete(NewPaths, 1, 1);

if (Length(NewPaths) > 0) and (NewPaths[Length(NewPaths)] = ';') then
Delete(NewPaths, Length(NewPaths), 1);

if NewPaths <> Paths then
begin
RegWriteStringValue(
HKLM,
'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',
'Path',
NewPaths
);
RefreshEnvironment();
end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usUninstall then
RemoveAppPathFromSystemPath();
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
// ssInstall runs right before the files are copied, so the old data
// folder is gone before the new BinaryFetch.exe is put in place.
if CurStep = ssInstall then
RemoveOldDataFolder();

if CurStep = ssPostInstall then
begin
if NeedsAddPath() then
AddAppPathToSystemPath();

if not WizardSilent() then
begin
MsgBox(
'BinaryFetch v1.8 installed successfully.'#13#13 +
'Open a NEW terminal and type:'#13 +
'binaryfetch'#13#13 +
'If it still doesn''t work, sign out and back in (or restart).',
mbInformation,
MB_OK
);
end;
end;
end;
Loading