TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
Linux 데스크톱용 전원 도구: 화면 OCR·색상 선택·이미지·영상 압축·텍스트 확장 기능을 하나의 GTK4 앱에 통합
⚡ Power tools for your Linux desktop: screen OCR, color picker, image & video compressor and text expander in one native GTK4 app
생산성Rust · HTMLGitHub @arios4k온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Power tools for your Linux desktop. Screen OCR, a QR code scanner, a color picker, a screen ruler, an image & video compressor, a text expander, Keep Awake and a hosts & environment editor, in one app.
Getting these basics on Linux usually means hunting down a separate applet for each job, each with its own look, settings and shortcuts. Voltkit puts them in one native GTK4 app with one set of hotkeys:
| Instead of… | Voltkit gives you | Shortcut |
|---|---|---|
| a separate OCR app | Text Extractor: drag a box around any text on screen, even in videos and images, and it lands on your clipboard | Super+Shift+T |
| a separate color picker | Color Picker: an eyedropper for any pixel, HEX/RGB/HSL, WCAG contrast check and history | Super+Shift+C |
| a QR scanner on your phone or a QR website | QR Code: read a QR code anywhere on screen, or turn text, links and Wi-Fi details into one | Super+Shift+Q |
| a separate screen ruler, or screenshots and an image editor | Screen Ruler: freeze the screen and measure anything in pixels | Super+Shift+R |
| a separate image compressor, plus ffmpeg incantations | Asset Compressor: drop PNG, JPEG, WebP or MP4 files to strip metadata and shrink them | drag & drop |
| a separate text expander | Text Expansion: a searchable snippet picker, plus optional typed triggers like ;date | Super+Shift+E |
| a shell extension to keep the screen on | Keep Awake: stop your computer from sleeping or locking for 30 minutes to 4 hours, or until you turn it off | — |
editing /etc/hosts and ~/.profile in a terminal | Hosts & Environment: switch hosts entries on and off, and manage your session's environment variables | — |
A Wi-Fi password on a conference slide, a command in a video tutorial, an error in a screenshot: press Super+Shift+T, drag a box, and paste. Powered by Tesseract, with support for 100+ languages.
Grab any pixel with Super+Shift+C and the HEX code is already on your clipboard. The color page converts between HEX, RGB and HSL, rates contrast against white and black by WCAG standards (AA / AAA), and remembers your recent colors.
Drop files on the window or run voltkit compress. Voltkit strips location data and other metadata,
compresses with the best tool for each format, and writes name.min.ext next to the original, which
it never touches. In our tests: JPEG −43%, PNG −23% (lossless), WebP −60%, MP4 −77%.
Press Super+Shift+E, search, press Enter, and the snippet is pasted into
whatever app you were using. Snippets can include the date in any format, your clipboard, and
fill-in-the-blank fields. Prefer typing? Turn on typed triggers and ;sig becomes your signature in any
app. Add, edit and delete snippets right in the app: Insert buttons add the date, time, clipboard or a
fill-in field, and a live preview shows exactly what will be pasted.
Press Super+Shift+Q and drag a box around a QR code in a video, a slide or a web page: its text or link is on your clipboard. Going the other way, type a link, some text or your Wi-Fi details and scan the code with your phone. Copy it as an image or save it as a PNG to print. Add your own small logo to the middle if you like: Voltkit reads the code back to make sure it still scans.
Super+Shift+R freezes the screen. Drag to measure widths and heights in real pixels (hold Shift for a straight line), and press Ctrl+C to copy the size.
Watching, presenting or downloading? Turn on Keep Awake for 30 minutes, a few hours or until you turn it off, and your computer won't sleep or lock. It keeps going after you close Voltkit and switches itself off when the time is up.
Switch /etc/hosts entries on and off, add myapp.test → 127.0.0.1 for local development, and set
environment variables like EDITOR or an extra PATH folder for your whole desktop session. System
entries are protected, and every hosts save keeps a backup.
voltkit ocr, voltkit color '#3584e4',
voltkit compress *.jpg), with man pages for all of them.voltkit doctor tells you exactly what's missing and the command to install it.Does it work on KDE, Sway or Hyprland?
Voltkit is developed and tested on GNOME (Zorin OS 18). It uses standard XDG portals, so KDE Plasma
and other desktops should work, but they haven't been tested yet. Reports are welcome! On desktops
without the GlobalShortcuts portal, bind voltkit trigger ocr|color|snippets to keys yourself.
Is it safe to turn on typed triggers?
They're off by default. Wayland hides keystrokes between apps, so typed triggers need access to the
keyboard device, which you grant once with voltkit expander setup. The snippet picker works without
any of that.
Why isn't there a Flatpak? It's on the roadmap. For now there's the apt repository for Ubuntu/Debian-based systems, and building from source works anywhere with GTK 4.14+.
Screenshots taken on Zorin OS 18 with its ZorinBlue theme. Regenerate them with
docs/screenshots/capture.sh.
For Ubuntu 24.04+, Debian 13+, Linux Mint 22, Zorin OS 18, Pop!_OS 24.04 and other derivatives on 64-bit Intel/AMD:
sudo curl -fsSLo /usr/share/keyrings/voltkit-archive-keyring.gpg \
https://arios4k.github.io/voltkit/voltkit-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/voltkit-archive-keyring.gpg] https://arios4k.github.io/voltkit stable main" \
| sudo tee /etc/apt/sources.list.d/voltkit.list
sudo apt update && sudo apt install voltkit
apt installs the required tools (Tesseract, wl-clipboard, the desktop portal) along with Voltkit, and
updates arrive with sudo apt upgrade. Then:
voltkit doctor # check everything is in place
voltkit shortcuts install # GNOME: Super+Shift+T, C and E
voltkit daemon enable-autostart # start the background service at login
PNG compression needs oxipng, which Ubuntu doesn't package: cargo install oxipng.
Requirements: Rust 1.85+, GTK ≥ 4.14, libadwaita ≥ 1.5.
# Debian/Ubuntu
sudo apt install libgtk-4-dev libadwaita-1-dev
# Fedora
sudo dnf install gtk4-devel libadwaita-devel
# Arch
sudo pacman -S gtk4 libadwaita
cargo install --path . # installs to ~/.cargo/bin/voltkit
voltkit
Install the binary before you set up shortcuts or autostart: both record the binary's path.
To add Voltkit to your app grid with its icon:
install -Dm644 data/icons/io.github.arios4k.Voltkit.svg ~/.local/share/icons/hicolor/scalable/apps/io.github.arios4k.Voltkit.svg
install -Dm644 data/icons/io.github.arios4k.Voltkit-symbolic.svg ~/.local/share/icons/hicolor/symbolic/apps/io.github.arios4k.Voltkit-symbolic.svg
sed "s|^Exec=voltkit|Exec=$HOME/.cargo/bin/voltkit|" data/io.github.arios4k.Voltkit.desktop > ~/.local/share/applications/io.github.arios4k.Voltkit.desktop
voltkit daemon # run in the foreground
voltkit daemon enable-autostart # start at every login
voltkit daemon status # running? which shortcut backend?
voltkit daemon stop
The daemon owns io.github.arios4k.Voltkit.Daemon on the session bus, so only one runs at a time.
It binds the hotkeys from your config in one of these ways:
| Desktop | How the hotkeys are bound |
|---|---|
| GNOME 48+, KDE Plasma 5.27+, Hyprland (xdg-desktop-portal ≥ 1.19) | GlobalShortcuts portal: the desktop asks you to approve them once |
| Older GNOME (e.g. 46) and GNOME-based distros | voltkit shortcuts install adds them to Settings → Keyboard → Custom Shortcuts (--dry-run previews; shortcuts remove undoes) |
| Sway, river, others | Bind voltkit trigger ocr / voltkit trigger color in your compositor config |
voltkit trigger <action> (ocr, color or snippets) sends the action to the running daemon, or runs it directly if
no daemon is running. Results and errors appear as desktop notifications.
Managing snippets: on the Text Expansion page, use Add Snippet, click a snippet to edit it, or
delete it (with Undo). Changes are saved to ~/.config/voltkit/config.toml and reach typed triggers
immediately. If you edit that file by hand, run voltkit daemon reload.
Snippet picker (no setup): press Super+Shift+E, type to search, press Enter. Snippets with
{arg:NAME} parameters show a small form. The result is pasted into the app you were using, and
your clipboard is put back afterwards. The first paste asks for remote-desktop permission (that's
how Wayland lets an app press Ctrl+V for you), and the permission is remembered.
Typed triggers (opt-in): type ;date in any app and it turns into 2026-10-27. Wayland hides
keystrokes from other apps, so this needs a one-time root setup:
voltkit expander setup # shows the commands and what they change
voltkit expander setup --apply # runs them with sudo; then log out and back in
# (restart instead if `loginctl` lingering is on)
voltkit expander enable
Setup adds you to the input group, which lets any program you run read keyboard input. Voltkit
keeps only the last few characters in memory and never logs or stores what you type. See
man voltkit-expander for details and how to undo it.
For terminals, which paste with Ctrl+Shift+V, set paste_shortcut in the [expander] config section.
Voltkit calls standard tools when they are installed, so it adds no heavy dependencies of its own. Check what's missing, with the install command for your distro, at any time:
voltkit doctor
The control center shows a banner when a feature needs attention.
| Feature | Tools |
|---|---|
| OCR | tesseract (+ language packs such as tesseract-ocr-eng) |
| Region capture, eyedropper | the desktop's Screenshot portal; region capture falls back to grim+slurp, gnome-screenshot, spectacle or maim |
| Clipboard (daemon, CLI) | wl-clipboard (Wayland) or xclip (X11). Without it, the result is still shown in a notification |
| Compression | oxipng (PNG), jpegoptim (JPEG), cwebp (WebP), ffmpeg (MP4) |
Every module also works headless, so you can bind it to a shortcut in any desktop:
voltkit # open the control center
voltkit ocr --lang eng # select a region → text on clipboard
voltkit pick-color # eyedropper → HEX on clipboard
voltkit color '#3584e4' # HEX / RGB / HSL + contrast vs white/black
voltkit compress *.png --quality 75
voltkit expand 'Hi {arg:who}, {date:%A}' --arg who=Sam
voltkit qr make https://example.com # QR code in the terminal (or --output code.png)
voltkit qr scan # read a QR code on screen
voltkit ruler # measure on screen
voltkit awake 1h30m # keep the computer awake (on / off / no argument for status)
Full documentation is in the man pages: man voltkit, man voltkit-expand, and so on.
The pages in man/ are generated from the CLI definitions, so they always match
--help. Install them next to the binary, where man finds them automatically:
mkdir -p ~/.cargo/share/man/man1 && cp man/*.1 ~/.cargo/share/man/man1/
After changing a command or its help text, regenerate them; cargo test fails until you do:
cargo run -- manpages man
~/.config/voltkit/config.toml. Every key is optional; see
data/config.example.toml.
src/
main.rs CLI entry point (clap) → GUI when run with no subcommand
app.rs GTK4 / libadwaita control center
daemon.rs background service: D-Bus API, portal shortcuts, autostart
actions.rs hotkey actions (OCR, eyedropper) with notifications
shortcuts.rs accelerator conversion + GNOME keybinding fallback
picker.rs snippet picker popup
snippets_ui.rs Text Expansion page: snippet list and editor
qr_ui.rs QR Code page
ruler.rs Screen Ruler (frozen-screenshot overlay)
awake.rs Keep Awake (Inhibit portal, held by the daemon)
awake_ui.rs Keep Awake page
system_ui.rs Hosts & Environment page
expander.rs typed triggers (evdev keyboard reading, uinput virtual keyboard)
paste.rs paste into the focused app, restoring the clipboard
portal.rs XDG portal calls (screenshot, PickColor) and notifications
config.rs TOML config with defaults
system.rs Wayland/X11 helpers: clipboard, tool discovery, process runner
modules/
ocr.rs region capture + Tesseract
color.rs parsing, HSL, WCAG luminance & contrast
compress.rs format detection + per-format compression pipelines
snippets.rs snippet template engine
qr.rs QR code reading and making
hosts.rs /etc/hosts parsing that preserves everything it doesn't edit
envvars.rs session environment variables (environment.d)
manpages.rs man page generator (clap_mangen + hand-written sections)
screenshots.rs renders the README screenshots (hidden `screenshots` command)
man/ generated man pages
packaging/apt/ APT repository builder and its landing page
docs/screenshots/ README screenshots and capture.sh to regenerate them
docs/ARCHITECTURE.md design notes and roadmap
cargo test
cargo clippy
See docs/ARCHITECTURE.md for the D-Bus API and the roadmap. The next big pieces are a Flatpak and a settings screen. Bug reports and testing on other desktops are especially welcome.
version in Cargo.toml, run cargo run -- manpages man, and commit.git tag v0.2.0 && git push origin v0.2.0.The Release workflow builds the .deb, publishes a GitHub Release
with it, and rebuilds the signed APT repository on GitHub Pages. It signs with the key in the
APT_SIGNING_KEY secret (fingerprint 65E8 4B8D 114C 6147 9CCA 4DDC EC0F 6B66 E480 2360). To build
the repository locally: APT_KEY_ID=<fingerprint> packaging/apt/build-repo.sh target/debian site.
Created by Alexis Rios-Negron.
MIT © Alexis Rios-Negron