Conversation
…'ing `ghostty +show-config` (#2122)
Note: Windows doesn't have a unix-like init system process, but it does have the first userland process, which is `smss.exe`
Dead years ago: https://github.com/magpie-linux
ffBase64EncodeRaw unconditionally byte-swapped the input word via __builtin_bswap32, which only produces the intended big-endian byte layout on little-endian hosts. On big-endian hosts the word is already in the correct order, so the swap corrupted the encoded output. Guard the swap with __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ so the encoder is correct on both endiannesses.
* CI: add loong64 build workflow Add reusable workflow for building fastfetch on LoongArch 64-bit architecture using QEMU user-mode emulation + Docker container (lcr.loongnix.cn/debian:14). Integrate into CI pipeline and release dependencies. * CI (loong64): pin docker/setup-qemu-action to full commit SHA Pin to 06116385d9baf250c9f4dcb4858b16962ea869c3 (v4.1.0) for immutable action reference as required by Codacy.
The minimal (core) installation ships the `ubuntustudio-desktop-core` metapackage instead of `ubuntustudio-desktop`, so the existing check missed it and the system was reported as Kubuntu. Fixes #2485
removes `--gen-config-*` flags (merged into `--gen-config`)
Contributor
There was a problem hiding this comment.
Pull request overview
Release prep for v2.67.0, updating core functionality (config generation, option parsing), platform detection, module ordering, documentation, tests, and CI to match the new release behavior and fixes.
Changes:
- Reworks
--gen-configinto an interactive TUI flow (with non-interactive fallback) and removesgeneral.preRunhandling for security. - Introduces module
.defaultOrderand applies it across modules; includes various detection fixes (Wayland “done” handling, Windows init system, Apple M5 temps, networking safeguards). - Updates tests, docs/changelog, logos, and CI (adds loong64 workflow; disables Haiku in release aggregation).
Reviewed changes
Copilot reviewed 131 out of 131 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/strbuf.c | Updates strbuf allocation expectation for fixed-length ensure behavior. |
| tests/list.c | Adds tests for new list insert/remove-at operations. |
| src/options/general.c | Removes general.preRun support and returns a deprecation error. |
| src/options/display.c | Destroys additional display option strbuf fields (leak fix). |
| src/modules/zpool/zpool.c | Adds module defaultOrder. |
| src/modules/wmtheme/wmtheme.c | Adds module defaultOrder. |
| src/modules/wm/wm.c | Adds module defaultOrder. |
| src/modules/wifi/wifi.c | Adds module defaultOrder. |
| src/modules/weather/weather.c | Fixes option cleanup; adds module defaultOrder. |
| src/modules/wallpaper/wallpaper.c | Adds module defaultOrder. |
| src/modules/vulkan/vulkan.c | Adds module defaultOrder. |
| src/modules/version/version.c | Adds module defaultOrder. |
| src/modules/users/users.c | Adds module defaultOrder. |
| src/modules/uptime/uptime.c | Adds module defaultOrder. |
| src/modules/tpm/tpm.c | Adds module defaultOrder. |
| src/modules/title/title.c | Adds module defaultOrder. |
| src/modules/theme/theme.c | Adds module defaultOrder. |
| src/modules/terminaltheme/terminaltheme.c | Adds module defaultOrder. |
| src/modules/terminalsize/terminalsize.c | Adds module defaultOrder. |
| src/modules/terminalfont/terminalfont.c | Adds module defaultOrder. |
| src/modules/terminal/terminal.c | Adds module defaultOrder. |
| src/modules/swap/swap.c | Adds module defaultOrder. |
| src/modules/sound/sound.c | Adds module defaultOrder. |
| src/modules/shell/shell.c | Adds module defaultOrder. |
| src/modules/separator/separator.c | Fixes option cleanup; adds module defaultOrder. |
| src/modules/publicip/publicip.c | Adds module defaultOrder. |
| src/modules/processes/processes.c | Adds module defaultOrder and normalizes formatArgs initializer. |
| src/modules/poweradapter/poweradapter.c | Adds module defaultOrder. |
| src/modules/player/player.c | Adds module defaultOrder. |
| src/modules/physicalmemory/physicalmemory.c | Adds module defaultOrder. |
| src/modules/physicaldisk/physicaldisk.c | Adds module defaultOrder. |
| src/modules/packages/packages.c | Adds module defaultOrder. |
| src/modules/os/os.c | Adds module defaultOrder. |
| src/modules/opengl/opengl.c | Adds module defaultOrder. |
| src/modules/opencl/opencl.c | Adds module defaultOrder. |
| src/modules/netio/netio.c | Adds module defaultOrder. |
| src/modules/mouse/mouse.c | Adds module defaultOrder. |
| src/modules/monitor/monitor.c | Adds module defaultOrder. |
| src/modules/memory/memory.c | Adds module defaultOrder. |
| src/modules/media/media.c | Adds module defaultOrder. |
| src/modules/localip/localip.c | Adds module defaultOrder. |
| src/modules/locale/locale.c | Adds module defaultOrder. |
| src/modules/loadavg/loadavg.c | Adds module defaultOrder. |
| src/modules/lm/lm.c | Adds module defaultOrder. |
| src/modules/keyboard/keyboard.c | Adds module defaultOrder. |
| src/modules/kernel/kernel.c | Adds module defaultOrder. |
| src/modules/initsystem/initsystem.c | Adds module defaultOrder. |
| src/modules/icons/icons.c | Adds module defaultOrder. |
| src/modules/host/host.c | Adds module defaultOrder. |
| src/modules/gpu/gpu.c | Adds module defaultOrder. |
| src/modules/gamepad/gamepad.c | Adds module defaultOrder. |
| src/modules/font/font.c | Adds module defaultOrder. |
| src/modules/editor/editor.c | Adds module defaultOrder. |
| src/modules/dns/dns.c | Adds module defaultOrder. |
| src/modules/display/display.c | Adds module defaultOrder. |
| src/modules/diskio/diskio.c | Adds module defaultOrder. |
| src/modules/disk/disk.c | Adds module defaultOrder. |
| src/modules/de/de.c | Adds module defaultOrder. |
| src/modules/datetime/datetime.c | Adds module defaultOrder. |
| src/modules/cursor/cursor.c | Adds module defaultOrder. |
| src/modules/cpuusage/cpuusage.c | Adds module defaultOrder. |
| src/modules/cpucache/cpucache.c | Adds module defaultOrder. |
| src/modules/cpu/cpu.c | Adds module defaultOrder. |
| src/modules/command/command.c | Adjusts initializer formatting (no .defaultOrder added here). |
| src/modules/colors/colors.c | Adds module defaultOrder. |
| src/modules/codec/codec.c | Adds module defaultOrder. |
| src/modules/chassis/chassis.c | Adds module defaultOrder. |
| src/modules/camera/camera.c | Fixes cleanup of newly tracked vendor field; adds module defaultOrder. |
| src/modules/btrfs/btrfs.c | Adds module defaultOrder. |
| src/modules/brightness/brightness.c | Adds module defaultOrder. |
| src/modules/break/break.c | Adds module defaultOrder. |
| src/modules/bootmgr/bootmgr.c | Adds module defaultOrder. |
| src/modules/board/board.c | Adds module defaultOrder. |
| src/modules/bluetoothradio/bluetoothradio.c | Adds module defaultOrder. |
| src/modules/bluetooth/bluetooth.c | Adds module defaultOrder. |
| src/modules/bios/bios.c | Adds module defaultOrder. |
| src/modules/battery/battery.c | Changes battery status to list/array; adds module defaultOrder. |
| src/logo/ascii/m/magpieos.txt | Removes logo asset. |
| src/logo/ascii/m/magix.txt | Removes logo asset. |
| src/logo/ascii/m.inc | Removes Magix/MagpieOS logo registrations. |
| src/logo/ascii/h/hypros.txt | Removes logo asset. |
| src/logo/ascii/h.inc | Removes HyprOS logo registration. |
| src/logo/ascii/f/furreto.txt | Removes logo asset. |
| src/logo/ascii/f.inc | Removes Furreto logo registration. |
| src/logo/ascii/e/emperoros.txt | Removes logo asset. |
| src/logo/ascii/e.inc | Removes EmperorOS logo registration. |
| src/fastfetch.c | Implements interactive --gen-config; adds --watch; adjusts config writing behavior. |
| src/detection/theme/theme_windows.c | Uses display server state to report “Basic” theme when DWM is disabled. |
| src/detection/terminalshell/terminalshell.c | Adjusts fish version parsing to handle localized output. |
| src/detection/terminalfont/terminalfont.c | Improves Ghostty/Alacritty config parsing behavior and performance. |
| src/detection/publicip/publicip.c | Fixes URL path splitting without mutating raw buffer incorrectly. |
| src/detection/os/os_linux.c | Fixes Ubuntu Studio Core detection heuristic. |
| src/detection/opengl/opengl_shared.c | Adjusts EGL platform display call argument. |
| src/detection/libc/libc_windows.cpp | Fixes MSVCRT version formatting and minor refactor. |
| src/detection/initsystem/initsystem_windows.c | Adds Windows init system detection via NtQuerySystemInformation. |
| src/detection/gpu/gpu_windows.c | Expands Windows GPU detection (friendly name/vendor, indirect adapters, caching). |
| src/detection/gpu/gpu_apple.c | Adds Apple M5 GPU temperature support. |
| src/detection/displayserver/linux/wayland/wayland.h | Adds dispatch-timeout support and “done” tracking. |
| src/detection/displayserver/linux/wayland/wayland.c | Loads dispatch symbols lazily; swaps stub listener use. |
| src/detection/displayserver/linux/wayland/kde-output.c | Adds “done” listener and avoids late-event missing outputs. |
| src/detection/displayserver/linux/wayland/global-output.c | Switches to typed listener struct; adds “done” wait path. |
| src/detection/cpu/cpu_apple.c | Adds Apple M5 CPU temperature support. |
| src/detection/codec/codec_apple.c | Improves codec enumeration/decoder registration on macOS. |
| src/common/unused.h | Reworks unused callback helper. |
| src/common/option.h | Adds defaultOrder to module base info. |
| src/common/mallocHelper.h | Adds C++ global new/delete overrides and aligned allocation helpers. |
| src/common/library.h | Adds “lazy” symbol load macro. |
| src/common/impl/networking_windows.c | Reworks async wait logic; adds response size limit; relaxes HTTP 200 checks. |
| src/common/impl/networking_linux.c | Adds response size limit; relaxes HTTP 200 checks. |
| src/common/impl/netif_gnu.c | Fixes auto-close macro placement with FILE*. |
| src/common/impl/jsonconfig.c | Aligns option buffer for module option parsing. |
| src/common/impl/genconfig.c | Adds interactive config generation TUI implementation. |
| src/common/impl/FFstrbuf.c | Adds overflow checks and adjusts fixed-length allocation behavior. |
| src/common/impl/commandoption.c | Aligns option buffer for structure parsing. |
| src/common/impl/base64.c | Fixes base64 encoding on big-endian hosts. |
| src/common/genconfig.h | Declares interactive config generator entrypoint. |
| src/common/FFstrbuf.h | Uses ffStrbufEnsureFree consistently in inline append helpers. |
| src/common/FFlist.h | Adds list insert/remove-at helpers and macros. |
| src/common/ffdata.h | Tracks interactive gen-config mode flag. |
| src/common/apple/version.m | Fixes memcpy length cast. |
| src/common/apple/smc_temps.h | Adds M5 temp sensor enum values. |
| src/common/apple/smc_temps.c | Adds M5 sensor keys and extra memory proximity sensors. |
| README.md | Expands package-count FAQ details (apt + rpm). |
| doc/json_schema.json | Removes general.preRun schema entry. |
| doc/help.json | Updates CLI help: adds --watch; changes --gen-config description and removes old variants. |
| CMakeLists.txt | Bumps version to 2.67.0; adds musl detection tweak; adds genconfig source; switches Windows init system impl. |
| CHANGELOG.md | Adds 2.67.0 release notes and breaking changes. |
| .github/workflows/ci.yml | Adds loong64 build; disables Haiku job. |
| .github/workflows/build-linux-loong64.yml | Adds loong64 reusable build workflow. |
| .github/workflows/build-freebsd-amd64.yml | Fixes FreeBSD dependency list. |
| .github/ISSUE_TEMPLATE/logo_request.yml | Tightens logo request requirements and guidance. |
Comment on lines
+3
to
+4
| static inline void ffUnused(...) { /* no-op */ } | ||
| #define FF_UNUSED(...) ffUnused(__VA_ARGS__); |
Comment on lines
+92
to
+96
| uint32_t index = ffStrbufFirstIndexC(version, ' '); // skip "fish," | ||
| index = ffStrbufNextIndexC(version, index + 1, ' '); // skip "version" | ||
| while (!ffCharIsDigit(version->chars[index + 1])) { | ||
| index = ffStrbufNextIndexC(version, index + 1, ' '); // skip "version" | ||
| if (index == version->length) { | ||
| return false; |
Comment on lines
+145
to
+150
| void* operator new(size_t size, std::align_val_t alignment) { | ||
| if (void* ptr = ffAlignedAlloc(size, alignment)) { | ||
| return ptr; | ||
| } | ||
| std::abort(); | ||
| } |
Comment on lines
+72
to
+83
| [[gnu::always_inline]] | ||
| void* operator new(size_t size) { | ||
| if (void* ptr = ::malloc(size)) [[likely]] { | ||
| return ptr; | ||
| } | ||
| std::abort(); | ||
| } | ||
|
|
||
| [[gnu::always_inline]] | ||
| void operator delete(void* ptr) noexcept { | ||
| ::free(ptr); | ||
| } |
This reverts commit 241ddb7.
Contributor
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 131 out of 131 changed files in this pull request and generated 2 comments.
Suppressed comments (2)
src/common/impl/genconfig.c:192
collectModuleInfoscurrently skips modules withdefaultOrder == 0, which excludes valid modules that don't set this new field (e.g.ffCommandModuleInfo,ffCustomModuleInfo). That makes them unavailable in the interactive config UI.
Collect all modules here, and handle ordering separately in the comparator.
for (FFModuleBaseInfo** it = ffModuleInfos[i]; *it; ++it) {
if ((*it)->defaultOrder == 0) {
continue;
}
*(FFModuleBaseInfo**) ffListAdd(modules, sizeof(FFModuleBaseInfo*)) = *it;
src/common/impl/genconfig.c:182
compareModuleInfosorts bydefaultOrderdirectly; modules that don't specify adefaultOrderwill have it default-initialized to 0, causing them to sort before everything else. If0means “unspecified”, it should sort after all explicit orders to keep a stable, predictable default UI ordering.
const FFModuleBaseInfo* const* ma = (const FFModuleBaseInfo* const*) a;
const FFModuleBaseInfo* const* mb = (const FFModuleBaseInfo* const*) b;
if ((*ma)->defaultOrder != (*mb)->defaultOrder) {
return (int) (*ma)->defaultOrder - (int) (*mb)->defaultOrder;
}
return strcmp((*ma)->name, (*mb)->name);
Comment on lines
+20
to
+24
| #include <unistd.h> | ||
| #else | ||
| #include <windows.h> | ||
| #include "common/windows/nt.h" | ||
| #endif |
Comment on lines
+229
to
+233
| IO_STATUS_BLOCK cancelIosb = {}; | ||
| if (NT_SUCCESS(NtCancelIoFileEx((HANDLE) state->sockfd, (PIO_STATUS_BLOCK) &state->overlapped, &cancelIosb))) { | ||
| NtWaitForSingleObject(state->overlapped.hEvent, TRUE, &(LARGE_INTEGER) { .QuadPart = (int64_t) 10 * -10000 }); | ||
| } | ||
| NtClose(state->overlapped.hEvent); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Some files have been pre-pushed into master to reduce the number of changed files
Checklist