AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
Fastfetch를 40가지 테마와 맞춤 레이아웃, 이미지 로고, 의미 색상으로 직접 만들고 Linux·macOS·Windows에서 체험하세요
Make Fastfetch your own with 40 themes, Full Info and custom layouts, image logos and semantic colors. Try the interactive studio for Linux, macOS and Windows.
개발 도구Rust · TypeScriptGitHub @sinansarikaya온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Interactive terminal theme and fastfetch manager for Linux, with color previews, presets, and image or ASCII logos.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Cross-platform terminal customization and Fastfetch theme studio — built in Rust with Ratatui and Crossterm. Browse, customize, and apply Fastfetch themes, presets, modules, and logos with a real-time, cell-accurate live preview.
The verified public release is v2.0.0. This checkout is source version 2.1.1 and includes newer installer and branding work that is not in those downloads. The rest of this README describes current source unless a published release is named explicitly.
Keep the extracted assets directory beside the executable. Install Fastfetch separately for native output.
termfetch-studio.exe. This release does not include the newer install.cmd installer.termfetch-studio install installs for the current user, adds the command to PATH and creates Start Menu shortcuts. It can install missing Fastfetch and Windows Terminal dependencies with winget. This installer is not yet part of a verified published app release.packaging/.termfetch-studio-v<version>-macos-universal.dmg, drag TermFetch Studio into Applications and open it from Launchpad or Spotlight. Fastfetch is bundled inside the app, so there is nothing else to install. The first start sets up the Fastfetch config, runs it in every new shell and puts termfetch on PATH. The app opens in the terminal you use most (iTerm2, Ghostty, kitty, WezTerm or Terminal.app) and adapts to it: images use the terminal's own protocol, and Terminal.app, which has none, gets block-drawn logos, 256 colours and a "TermFetch" profile with the theme colours. Terminal.app logos are drawn with the bundled TermFetch Blocks font, eight sub-cells per character. Until the app is notarized, macOS asks once: choose System Settings → Privacy & Security → Open Anyway. Build the DMG yourself with scripts/build-macos-dmg.sh (universal Apple Silicon + Intel). To uninstall, run termfetch uninstall, then drag the app to the Trash.termfetch-studio on PATH, and install the separate Fastfetch dependency with brew install fastfetch..deb and .rpm packages are on the v2.0.0 release page.termfetch-studio-v2.0.0-x86_64-unknown-linux-musl.tar.gz or the glibc archive from that release page. Put the executable on PATH and install Fastfetch from your package manager.git clone https://github.com/sinansarikaya/termfetch-studio.git
cd termfetch-studio
cargo build --release
./target/release/termfetch-studio
In current source, first start sets up Fastfetch configs and platform shell/terminal integration. Run termfetch after installation; a menu launcher is added on Linux/macOS. These newer integration details should not be assumed to exist in the older v2.0.0 archives.
Assets are discovered automatically at runtime (first match wins): $TERMFETCH_STUDIO_ASSETS,
<exe dir>/assets, <exe dir>/../share/termfetch-studio/assets,
~/.local/share/termfetch-studio/assets, ./assets, then the source checkout.
termfetch uninstall removes what TermFetch added to your shell startup, launcher and (on Windows) cmd prompt, Windows Terminal profile and colors. Your original Windows Terminal settings are kept in settings.json.termfetch-backup.termfetch uninstall also removes the install folder, the PATH entry and the Start Menu shortcuts. On Linux and macOS, remove the program with the package manager you used.termfetch # uses the saved demo setting
termfetch --no-demo # start with real specs
Layout (the "Studio" design): a header bar with brand, fastfetch status, distribution and local clock; a sidebar with the navigation (Dashboard, Themes, Presets, Logos, Modules, Settings - Backup & Restore and Doctor live under Settings) and context cards for the current theme, preset and config path; the center stage; and on the right the Live Preview with a Preview Options card (theme / preset / logo / output dropdowns and the Apply Theme to System button). The Dashboard shows quick actions, recently applied themes with procedural thumbnails, a system overview and tools. The chrome uses a fixed navy/indigo palette by default; Settings → Studio chrome switches it to follow the active theme. Every label is WCAG-checked on every surface in both modes.
The preview, painted in the theme background, reproduces fastfetch's layout
exactly (logo padding, keyWidth, separator, resolved colours); the Output
option switches it to the generated JSONC. Image logos are decoded once by a
background worker pool, so scrolling stays well above 60 FPS.
In terminals with the Kitty graphics protocol (kitty, Ghostty) the preview shows
image logos at full resolution: each logo is resized to the preview's exact
pixel box and PNG-encoded on a background thread, uploaded once, and then drawn
through Unicode placeholder cells, so switching logos only swaps an image id.
The whole gallery is pre-uploaded in the background; half-blocks are shown
until an upload lands and are used everywhere else (including tmux/screen).
Force a mode with TERMFETCH_STUDIO_GRAPHICS=kitty or =halfblock.
| Key | Action |
|---|---|
Tab / Shift+Tab | next / previous section: menu → center stage → preview options |
↑/↓/←/→, hjkl, PgUp/PgDn, g/G | move (preview updates instantly) |
Enter | select: open a quick action / tool, apply a card, open a dropdown |
a / A | apply theme to system: save settings and write both fastfetch configs |
1–8 | jump to a screen (on the Dashboard stage 1–4 run the quick actions) |
p | run the real fastfetch with the current, unsaved selection |
s | cycle image logo size (small / medium / large) |
o | cycle the preview output (terminal preview / generated config) |
Space, J/K | Modules: toggle / reorder modules |
←/→ | Settings: cycle colours and preferences · Preview Options: cycle values |
x | Backup: delete selected backup · r Doctor: re-run checks |
? | keyboard shortcuts overlay · mouse click and wheel supported everywhere |
q / Esc | quit; unsaved changes are saved and applied to both fastfetch configs first |
termfetch is the short command; termfetch-studio keeps working as the full name. Packages install both, and a plain binary install adds the termfetch link next to itself on first start.
termfetch apply --theme nord --preset developer --logo pikachu --logo-size large
termfetch preview --theme dracula --preset minimal # ANSI preview to stdout
termfetch demo on|off|toggle|status
termfetch list themes|presets|logos|modules|colors
termfetch backup create|list|restore <name>|delete <name>
termfetch run # fastfetch with the studio config
termfetch settings # open the Settings screen
termfetch setup # write configs and the shell/system integration again
termfetch install # Windows: install for this user (same as install.cmd)
termfetch uninstall # remove what TermFetch added to this system
termfetch doctor # also: --doctor
| Path | Purpose |
|---|---|
~/.config/termfetch-studio/settings.json | saved choices |
~/.config/termfetch-studio/fastfetch.jsonc | generated config (original installer path) |
~/.config/fastfetch/config.jsonc | generated config (fastfetch default) |
~/.config/termfetch-studio/backups/ | backups; a hand-written fastfetch config is preserved here before the first overwrite |
~/.config/termfetch-studio/custom.png | custom image logo |
Both configs are produced from typed serde_json structures and written
atomically (temp file + fsync + rename). $XDG_CONFIG_HOME is respected.
The logo box is computed from the image header's pixel size and the terminal's
real cell size (TIOCGWINSZ via crossterm::terminal::window_size, falling
back to 1:2 cells), bounded by the size preset (20×14 / 36×22 / 52×32), a third
of the terminal width and its height − 4 — the same algorithm as the original
installer, including its "largest rectangle within 5% of the true ratio" search.
The preview uses the identical box, shrinking it with the same aspect ratio only
if the pane is smaller.
src/
├── main.rs # CLI dispatch, terminal lifecycle, event loop, live fastfetch
├── paths.rs # XDG/exe-relative path + asset discovery
├── cli/ # clap definitions
├── app/ # AppState, Action, reducer (+ effects)
├── domain/ # themes, presets/modules, logos, colours, settings, style resolution
├── imaging/ # fit_image_cells, half-block raster, Kitty graphics, decode pool
├── adapters/ # fastfetch config/runner, backup, doctor, atomic fs
└── tui/ # layout, sidebar, preview, screens
The application website is maintained in website/, alongside the
Rust app so its interactive demo and shared brand stay in sync.
npm ci --prefix website
npm run dev --prefix website
npm run build --prefix website
npm run lint --prefix website
npm run check --prefix website # headed browser regression after building
See the website guide, shared brand and Docker / Dokploy deployment for setup and maintenance.
MIT — Sinan Sarıkaya