DeepSeek Harness Remote
DeepSeek Harness Remote 可将手机或另一台电脑与你运行 DeepSeek Harness 的电脑安全连接,随时随地继续你的工作,方便随时查看进度并继续工作。
AI 翻译
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证McGyver: drag files, hold Shift, drop them on a wheel to convert them (KDE Plasma 6, Wayland; macOS next)
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗A file wheel for KDE Plasma 6, macOS and Windows, written in Rust with egui. Drag files in your file manager and hold Shift: a wheel opens around the cursor with what those files can become: other formats, smaller, resized, merged, zipped, shared. Drop them on a wedge and it's done, without opening another app.
Download it from mcgyver.ferdiunal.tr. What it does:
Everything the wheel offers is done for real. It runs on KDE Plasma 6 (Wayland), macOS and Windows (see macOS and Windows).
cargo run --release # the app, in the background with a tray icon; MCGYVER_DEBUG=1 logs
cargo run --release -- --settings # the settings window (also from the tray, or by starting it again)
cargo run --release -- --quit # quits the running app
cargo run --release -- --install # once: wheel opens at once; tapping Shift opens it without a drag
Packages for the Snap Store, Debian/Ubuntu and Fedora: see PACKAGING.md.
For macOS 11 or later, on Apple Silicon and Intel. Build the app on a Mac (needs Xcode's command
line tools, xcode-select --install, and Rust from rustup.rs):
packaging/macos/build-app.sh # → dist/McGyver.app and dist/McGyver-<version>-universal.dmg
packaging/macos/build-app.sh arm64 # or x86_64: one architecture, about twice as fast to build
open dist/McGyver.app
The universal app holds both an Apple Silicon and an Intel build, so the same .dmg runs on any
Mac with macOS 11 or later; either Mac can build it. On a Mac other than the one that built it,
macOS refuses an app that isn't notarized: Control-click it → Open (from macOS 15 on, open it
once, then System Settings → Privacy & Security → Open Anyway), or run
xattr -dr com.apple.quarantine /Applications/McGyver.app once.
Started from anywhere but an Applications folder (the disk image, Downloads), the app first
offers to move itself there. Move to Applications copies it to /Applications (to
~/Applications for a user who can't write the first), replaces an older McGyver there (asking
for an administrator's password only when that copy isn't yours), ejects the disk image or puts
the downloaded copy in the Trash, and starts it from its new place, its login item with it.
Do Not Move keeps it where it is and doesn't ask again; delete
~/Library/Application Support/McGyver/not-moved to be asked again.
It sits in the menu bar (Pause, or Resume while paused, Settings…, Quit); there is no Dock icon, and opening the app again while it runs opens its settings. Drag files in Finder, hold the trigger key, and the wheel appears under the pointer (kept on the display near an edge). It is drawn in a transparent window that is always there, on every Space and over full-screen apps, and lets every click through until files are dragged and the key goes down; it then takes the drag with macOS's own drag and drop. Holding the key while dragging something that isn't files (a shape, some text) does nothing. What differs from KDE:
restart file, which it takes once nothing is
converting). The build script signs ad hoc builds with the bundle identifier as their
designated requirement, so the permission outlives a rebuild; a build signed before that
needs McGyver removed from the Input Monitoring list (−) and allowed again.pbcopy,
Terminal opens Terminal.app; Share isn't offered. The click plays through afplay.brew install ffmpeg. The app looks in /opt/homebrew/bin and
/usr/local/bin too, which an app opened from Finder doesn't otherwise see.~/Library/Application Support/McGyver/settings.conf; Start at login
writes ~/Library/LaunchAgents/io.github.ferdiunal.mcgyver.plist, and asks for the app to be
in Applications first (run from the disk image, macOS runs a copy that is gone by the next
login). Converting onto a disk without exclusive renames (exFAT, FAT, SMB) works too.The script signs the app ad hoc, which only runs on the Mac that built it, and a permission granted
to one build is lost with the next. To keep it, make a code signing certificate once (Keychain
Access → Certificate Assistant → Create a Certificate…, type "Code Signing") and build with
MCGYVER_SIGN_IDENTITY="its name" packaging/macos/build-app.sh. Handing the app to others needs
an Apple Developer ID and notarization, not set up yet.
For x64 and ARM64 PCs (Windows 10 and 11). It is built on Linux with cargo-zigbuild (zig brings MinGW's headers and libraries for both):
rustup target add x86_64-pc-windows-gnu aarch64-pc-windows-gnullvm
packaging/windows/build.sh # → dist/McGyver-<version>-windows-x64.zip and -arm64.zip
packaging/windows/build.sh arm64 # or x64: one of them
Unzip it anywhere and run McGyver.exe. It isn't signed, so SmartScreen warns the first time
(More info → Run anyway). It sits in the notification area (Pause, or Resume while paused,
Settings…, Quit), and starting it again while it runs opens its settings. Drag files in
Explorer, hold the trigger key, and the wheel appears under the pointer, as on macOS: a
transparent, topmost window that lets every click through until the key goes down during a drag,
then takes the drag with Windows' own drag and drop. What differs:
kdeconnect-cli on the
PATH. The click plays from memory (assets/sounds/click.wav).winget install Gyan.FFmpeg, or any ffmpeg.exe on the PATH.
HEIC and AVIF need libheif's heif.dll next to McGyver.exe or on the PATH.%APPDATA%\McGyver\settings.conf (a mcgyver folder from an earlier
version is renamed); Start at login writes McGyver under
HKCU\Software\Microsoft\Windows\CurrentVersion\Run, and asks for the zip to be unzipped
first (opened from inside it, Explorer runs a copy that is gone later).opengl\: from a hard link to itself in that folder, since Windows takes
opengl32.dll from the exe's folder only as a process starts. Windows on ARM gets OpenGL from
the graphics driver or from Microsoft's "OpenCL, OpenGL, and Vulkan Compatibility Pack"
(Microsoft Store).%APPDATA%\McGyver\McGyver.log: errors, panics with
their backtrace, and the OpenGL version and driver the wheel got. When it can't start at all, a
message box says why. With set MCGYVER_DEBUG=1, started from a terminal, it writes to that
terminal instead (after the prompt, which doesn't wait for it).The app runs in the background with an icon in Plasma's system tray. Its menu starts with the
version, then Get version … once a newer one is out (it opens the download page; see
Updates and privacy), Pause (the trigger key does nothing until
Resume, which takes its place; the icon fades), Settings… and Quit; clicking the icon
opens the settings too. Starting the app while it runs opens its
settings instead of a second copy (it holds the session-bus name io.github.McGyver), and only
one settings window opens at a time. Quit waits for running conversions to finish.
The settings window saves each change at once, to
~/.config/mcgyver/settings.conf, and the running app picks it up straight away:
~/.config/autostart/mcgyver.desktop.--install does, below); set up but not granted yet → Restart; still not granted
after that restart → "Still not allowed" and Set up again; app not running → Start;
key held by another shortcut → Open shortcuts (Plasma's page) and Try again; a
compositor that can't share Dolphin's selection → said so, nothing to press. Remove is
--uninstall. While something is missing the card comes first; once
all is granted it moves to the bottom and says so. KWin reads a new desktop file a few
seconds late, so Set up and Remove wait until a fresh Wayland connection shows the change
before restarting the app (once nothing is converting). KDE turned out to give a modifier
tapped alone to two shortcuts at once, so "held by another shortcut" may never show there.The rest of this README says Shift for the trigger key.
--install does two things, both undone by --uninstall:
~/.local/share/applications/mcgyver-kwin.desktop so KWin offers
this binary its fake-input protocol (see below). If the binary moves, the app rewrites it when
it starts (a snap's points at its current revision). Without it, the wheel opens as soon as
the mouse moves after you press the key. The entry names the app icon, which goes to
~/.local/share/icons/hicolor/scalable/apps/mcgyver.svg: KWin finds a window's icon only in
the desktop file named after its app id, so without a package's mcgyver.desktop the settings
window goes by mcgyver-kwin and shows the icon on its title bar.Start dragging a file, then hold Shift. The wheel opens on Convert; the ring around its centre switches between the three modes:
| Mode | Wheel |
|---|---|
| Convert | To another format; Unzip first for archives |
| Tools | Compress, trim, rotate, split, merge… |
| Actions | Zip, copy, cut, copy to, move to, copy path, terminal, share, messaging apps |
src/motion.rs).A minute after it starts, if it hasn't asked in the last day, and then once a day, the app asks
mcgyver.ferdiunal.tr whether a newer version is out
(src/update.rs, with the system's own curl). If there is one, the tray or menu bar menu and
the settings' About offer it; nothing is downloaded or installed by itself. The last answer is
kept in update.conf beside the settings.
That question also carries:
x86_64, aarch64) and the app's language;/etc/machine-id, the Mac's hardware UUID, Windows'
MachineGuid) hashed with SHA-256 and a salt of the app's, which can't be turned back into it.The site also sees the IP address the question comes from and its country, and keeps them with
that ID: when it was first and last seen, and on which days. That counts how many computers run
McGyver, and which versions and systems to care for. No file, file name or anything done with
the wheel ever leaves the computer. There is no setting for it; a build with debug assertions
never asks, and neither does the app started with MCGYVER_OFFLINE=1 in its environment (from a
terminal, or on KDE in the autostart entry's Exec=, which Start at login writes again when it is
switched; a Mac app opened from Finder doesn't see it, launchctl setenv MCGYVER_OFFLINE 1 does).
Hold Shift on its own a moment, with no drag (0.45 s unless the settings say otherwise): the wheel opens around the pointer for the desktop rather than for files.
| Mode | Wheel |
|---|---|
| Apps | The apps open, as Alt+Tab (Cmd+Tab) shows them: the one used last on top, the one in front last; an app with several windows pops them out as numbered bubbles. Then your quick apps that aren't open. With none of either, "Choose apps…" opens the settings |
| Media | Only while a player plays or is paused: Play or Pause on top, then Next, Repeat, the player itself (brings it forward), Shuffle, Previous. The caption is the track |
| Everyday | Keyboard (with two layouts or more; on KDE also the layouts your languages want, added when picked), Language (the computer's, from the next login), Volume, Brightness, Screenshot (an area, the screen or a window), Record (an area or the screen) and Monitor (processor, memory and disk as rings, red when nearly full; a click opens the system's monitor), whichever the system has |
| System | Lock, Dark Mode, Stay Awake (keeps the screen on while McGyver runs), Microphone, Empty Trash, Desktop (not on macOS) and Sleep. A switch has a dot under its name, lit while on |
It opens on Apps; the ring has a slice per mode, Apps at the top. While Everyday or System is open it is read again every second, so the load and the switches stay current. Empty Trash and Sleep take a click: letting go of Shift on them only closes the wheel. Holding Shift with files or folders selected in the file manager (Dolphin, Finder, Explorer) opens nothing: that Shift is for selecting more.
org.kde.keyboard), the volume
from PipeWire's wpctl (or PulseAudio's pactl), the brightness from Plasma's screen
brightness service (or PowerDevil's older one), and apps from their desktop files (started
with gio launch, kioclient or gtk-launch). Plasma lets no app see the other keys and the
clicks, so holding Shift that long for a Shift-click, Shift and the arrows, or a run of
capitals opens it too; Shift with another modifier (Ctrl+Shift…) doesn't. The settings' Without
files turns it off. Holding Shift and then starting a drag gets the files' wheel.open. Another key or a click while Shift
is held is a shortcut or a Shift-click, and nothing opens. Screenshots go through
screencapture (macOS asks once for screen recording) where macOS keeps them; Record opens
the Screenshot app's bar. The language is AppleLanguages, the microphone its input volume,
dark mode System Events, Stay Awake caffeinate, Lock and Sleep pmset, the trash Finder.SetThreadExecutionState.Hold Shift over a picture to see JPG, PNG, WEBP, HEIC, AVIF, TIFF, GIF, BMP, ICO and PDF. Its own format is left out, and so is any format this system can't write (see HEIC below). The result goes next to the original, as for compressed files.
.ppm, .pgm, .pbm, .pam), HDR,
OpenEXR and DDSsudo dnf install libheif-freeworld (RPM Fusion) adds it. Until then the app says so at
start, and the HEIC wedge stays hidden. AVIF works with the stock plugins.With FFmpeg installed (see Run), Convert saves audio as MP3, M4A, WAV, FLAC, OGG, OPUS or AIFF and video as MP4, MOV, MKV, WEBM, GIF or MP3, keeping the tags and chapters. The card fills as FFmpeg gets through the file, and its × stops FFmpeg.
| Drag | Tools |
|---|---|
| Audio: MP3, M4A, WAV, FLAC, OGG, OPUS, AIFF, WMA | Trim (the silence at the start and the end), Normalize (even loudness, EBU R128 at -16 LUFS), Compress, Merge |
| Video: MP4, MOV, MKV, WEBM, AVI, WMV, M4V | Compress, Trim (the black at the start and the end), Mute, Rotate (a quarter turn clockwise), Frames |
{\an8} positions and font colours are dropped;
italic, bold and underline stay. TXT is the words, a cue to a line, a line held over several
cues written once. A file in an older encoding (Windows-1254 or -1252, say) is recognised and
saved as UTF-8. Blank lines holding spaces, and cues with no blank line between them, are read
as hand-edited files have them.The engines of four open-source "craft" apps do this work, in pure Rust (MIT OR Apache-2.0), so nothing needs to be installed: WordCraft, GridCraft, DeckCraft and PdfCraft.
| Drag | Convert | Tools |
|---|---|---|
| Word: DOCX, DOC, ODT, RTF, HTML, Markdown, TXT | PDF, DOCX, ODT, RTF, HTML, TXT; MD for DOCX, DOC, ODT, RTF | Merge |
| Spreadsheet: XLSX, XLS, ODS, CSV, TSV | PDF, XLSX, CSV, TSV, HTML; MD for all but TSV | Merge |
| Presentation: PPTX (ODP for Compress) | PDF, PPTX, TXT (the outline), MD | Compress |
| DOCX, PPTX, XLSX (its tables), EPUB, TXT, JPG, PNG (a page each), MD | Compress, Rotate, Split, Merge |
The Actions slice of the ring opens the actions. They work on the whole selection, files and folders alike:
| Action | What it does |
|---|---|
| Zip | Packs everything into one ZIP next to it: name.zip for one item, Archive.zip for several |
| Copy, Cut | Puts the files on the clipboard as Dolphin's Ctrl+C and Ctrl+X do (a URI list, KDE's cut mark, GNOME's form, and the paths as text), through ext-data-control; paste them in a file manager. Cut files are moved where they are pasted. Without ext-data-control, Copy goes through wl-copy as a URI list and Cut isn't offered. On macOS, Copy is Finder's Copy and there is no Cut (Option-Command-V moves what was copied); on Windows they are Explorer's |
| Copy To, Move To | Asks for a folder (kdialog or zenity; the system's picker on macOS and Windows) and copies or moves there. Names that are taken get a number. Copying into the same folder duplicates; moving there changes nothing. A move to another disk copies, syncs to disk, then removes the original |
| Copy Path | Puts the full paths on the clipboard, one per line (wl-copy, or Klipper; pbcopy on macOS) |
| Terminal | Opens Konsole (or the first terminal found; Terminal on macOS, Windows Terminal or Command Prompt on Windows) in the folder |
| Share | Sends the files to the first phone KDE Connect can reach. Aimed at, it pops out the phone and the messaging apps installed (WhatsApp, Telegram, Slack, Teams, with their icons) as bubbles; drop on one to send there |
| Share's messaging apps | Telegram opens its own "share with" window for the files, where you pick the chat (-sendpath; as a flatpak with the files forwarded in). The others take no files from outside, so the files go on the clipboard as a copy and the app comes up to paste them into a chat. Each shows up only when installed: found by its desktop file, its app bundle, or on Windows Telegram's own folder and the whatsapp:, msteams: and slack: links. A link in the browser can't take files, so a messaging app that isn't installed isn't offered. None of their links takes a file from the computer either: WhatsApp's click to chat (wa.me, whatsapp://send) takes a number and text, Teams' chat link (msteams:/l/chat) users, a topic and text, and Slack's (slack://) ids of workspaces, channels, users and files already in Slack |
An action only shows up if its tool is installed. Pinning a preview above other windows isn't done yet.
Archives, single compressed files and folders are converted for real. The result goes next to
the original. If that name is taken, a number is added ("photos 2.zip"). Work happens in a
hidden .mcgyver-… file or folder beside it and moves into place only when complete. A
failure cleans it up; only killing the app mid-way can leave one behind.
| Drag | Convert |
|---|---|
| An archive | Unzip, ZIP, 7Z, TAR.GZ, TAR.XZ, TAR.ZST, TAR.BZ2, TAR |
| A compressed file | Unzip, GZ, XZ, ZST, BZ2, LZ4, or into a ZIP or 7Z |
| A folder | ZIP, 7Z, TAR.GZ, TAR.XZ, TAR.ZST, TAR.BZ2, TAR |
Archives have no tools, so their wheel has Convert and Actions only.
.jar, .apk, .cbz…), 7Z (.cb7) and RAR (.cbr)..tgz, .tbz2, .txz, .tzst, .tlz…).backup with no extension, say) is recognised by its first
bytes..gz and the like),
that goes next to the archive. Several go into a folder named after the archive.tar and the usual umask: readable by their owner, writable by
nobody else, never setuid.../…) are skipped, and nothing is written
through a link..xz/.lzma that asks for more than 1 GiB of memory is refused (.lz is capped at
512 MiB by its format). Nothing limits how much disk an archive fills when unpacked.� in place of the bad bytes.Most image and archive processing uses Rust crates. WebP, zstd and unRAR include native code;
libheif is loaded at run time. Audio and video conversions use an installed ffmpeg. RAR support uses the official unRAR code,
whose licence allows use and sharing but not writing a RAR compressor. Build without it with
cargo build --no-default-features.
No app can see another app's drag on Wayland. Plasma has two protocols that get around this without root:
org_kde_kwin_keystate (v5) reports modifier presses to every client, whichever app has
focus.zwlr_layer_shell_v1 lets a client put a fullscreen surface above everything.As soon as Shift goes down, the app maps an invisible fullscreen overlay.
wl_data_device.enter), and the app reads the dragged paths right away so the
wheel can offer the right options.KWin only re-checks what is under a drag when the pointer moves, so a drag held still never
reaches the overlay. If neither answer comes within 15 ms of the overlay being mapped, the app
moves the pointer one pixel and back with org_kde_kwin_fake_input (up to three times), and the
drag finds the overlay at once. KWin only offers that protocol to programs whose desktop file
asks for it with X-KDE-Wayland-Interfaces=org_kde_kwin_fake_input and whose Exec is the
running binary, which is what --install sets up.
The app accepts the drag only while it points at a wedge. The cursor shows what will happen, and releasing anywhere else cancels the drag. After a drop, the overlay's input region is emptied, so the progress card lets clicks through.
A Shift tap without a drag comes from KDE's global shortcuts (KGlobalAccel, hosted by KWin),
which fire a modifier-only shortcut only when nothing else was pressed in between. The app
listens for the shortcut's D-Bus signal (src/tap.rs). Dolphin has no call that lists its
selection, so the app checks that the active Dolphin window's Copy action is enabled, triggers
it over D-Bus and reads the text/uri-list it puts on the clipboard. Before that it saves every
type the clipboard holds (text first, at most 0.4 s), and afterwards it serves them again,
through ext-data-control (src/clipboard.rs). The clipboard ends up as it was, with two
exceptions: Klipper's history keeps an entry for the copied files, and if the clipboard was
empty, Klipper may fill it with that entry. Then it maps the overlay; the pointer entering it says where to open the
wheel.
Rendering: one EGL context (glutin) and one egui_glow painter, drawn onto the layer surface
with smithay-client-toolkit. There is no winit.
Quality: the context asks for 4× multisampling, since egui doesn't anti-alias the wedges' meshes
itself; the overlay draws at twice the screen's resolution on a 1× screen and KWin averages it
down, which smooths text as well; dithering keeps gradients and shadows free of banding; and
glyphs sit on whole pixels instead of egui's quarter-pixel positions.
The look (src/glass.rs):
assets/fonts under the OFL.A client can't read the pixels behind it, so the compositor does the blur. Each frame the
overlay reports where it drew glass: the disc, the caption and the progress card. That region
goes to ext_background_effect_v1, approximated by 2 px horizontal bands. Compositors without
that protocol get the same look without the blur.
GNOME has neither protocol. macOS and Windows do the same with their own APIs (src/desktop):
they hear the modifier keys and the mouse, and a topmost window that lets clicks through takes the
drag under the cursor. X11 isn't written yet.
The overlay UI (src/overlay.rs, src/wheel.rs) doesn't depend on the platform.
examples/preview.rs renders it in an ordinary window with a scripted drag:
cargo run --example preview -- hover # wheel|hover|tools|actions|share|mixed|card|cards|archive|folder|failed|settings
cargo run --example preview -- desk # desk|desk-apps|desk-media|desk-volume|desk-keyboard|desk-monitor|desk-system|desk-empty|welcome
EFRAME_SCREENSHOT_TO=out.png MCGYVER_LANG=tr WAYLAND_DISPLAY= xvfb-run -a cargo run --example preview -- card
MCGYVER_LANG=tr shows it in Turkish and MCGYVER_DARK=1 dark, MCGYVER_TURN=1 partway through
turning from light to dark (not in settings); MCGYVER_AT=0.3 stops the clock 0.3 s in, to see a frame of the motion; settings opens the settings window, MCGYVER_HEIGHT=1000 that tall. Clear WAYLAND_DISPLAY
for screenshots, or the window opens on the desktop rather than under xvfb.
dev/e2e/run.sh tests the real path headlessly:
kwin_wayland --virtual) with its own D-Bus and config directories.dev/e2e/scenarios/full.txt (or another scenario: run.sh still presses Shift with the mouse
held still, FILE=photos.zip run.sh archive converts and unpacks a real ZIP, and
run.sh real turns a JPEG into a PNG, zips it, copies its path and opens Konsole,
run.sh ring switches from Convert to Actions on the mode ring and zips the file,
run.sh clipboard cuts and then copies the file from the Actions wheel and saves what the
clipboard held in out/clipboard-*.txt (the cut mark should read 1, then 0),
SETUP=… FILE=clip.mp4 run.sh card (the command is in scenarios/card.txt) finds the card
at the bottom right and cancels its slow conversion with its ×, after which FFmpeg is gone and no
clip.webm is left, and
SOURCE=dolphin run.sh tap selects a file in Dolphin, taps Shift, clicks PNG and saves the
clipboard afterwards in out/clipboard.txt, which should read "before the tap", and
run.sh settings starts the app a second time (its settings open instead), switches the
trigger to Ctrl and the language to Turkish, checks that Shift no longer opens the wheel and
Ctrl does, pauses from the tray menu and quits with --quit, and
PERMISSIONS=1 run.sh permissions keeps KWin's permission checks on, as on a real desktop
(the other runs switch them off), and sets up and removes the KDE integration from the
settings' Permissions card, and
run.sh desk holds Shift with no drag, with a stand-in player on the nested bus
(dev/e2e/desk_services.py, its calls in out/desk.log) and three keyboard layouts in the
nested KWin: it opens on the apps (the nested KWin's windows), switches to Media and clicks
Next, switches the layout to DE (out/layout.txt should read 2), sets the volume to 50 %
through a stand-in wpctl (out/wpctl.log) and the brightness to 75 % through a stand-in
of Plasma's brightness service (SetBrightness 7500 in out/desk.log), shows System, lets
go on Pause, and checks that a short press opens nothing, and
run.sh share drops a file on Share's Telegram bubble (a stand-in Telegram logs
-sendpath and the file to out/telegram.log) and on its WhatsApp bubble (the file's URI
is on the clipboard, out/clipboard-whatsapp.txt), and
run.sh quickapps moves the second of two quick apps up in the settings window, checks the
order saved () and that the wheel's Apps follows it, and
clicks System's Dark Mode twice: the nested session's colour scheme goes to
BreezeDark and back (, ) and the open wheel turns with it. PipeWire is pointed
at nothing in every run, so the real volume is never touched. Every run starts after the
welcome; keeps it).Logs, screenshots and the files the app made go to dev/e2e/out/. This test caught a bug that only showed on NVIDIA:
the context was first made current without a surface, which left the draw buffer at
GL_NONE, so nothing was drawn.
| File | What |
|---|---|
src/kde.rs | KDE Wayland backend: keystate, layer-shell overlay, drag and drop, clicks after a Shift tap or on the wheel without files, EGL rendering |
src/tap.rs | The trigger-key tap global shortcut (KGlobalAccel over D-Bus) |
src/tray.rs | The tray icon and its menu (StatusNotifierItem, through ksni) |
src/service.rs | The app's session-bus name: one instance, and what the settings window and --quit ask it |
src/settings.rs | The settings file, the trigger keys, starting at login |
src/settings_window/ | The settings window (eframe), run as --settings; its Permissions card per platform (linux, mac, windows) |
src/desktop/ | The macOS and Windows backend: the overlay window, the menu bar or tray icon, the input thread (mod.rs), and what differs (mac.rs, windows.rs) |
src/i18n.rs | English and Turkish text; everything shown is looked up there |
src/icon.rs | The app icon (assets/icon.svg) drawn for the tray and the window |
assets/icon.svg, assets/logo.svg, assets/logo-on-dark.svg | The icon (a ring of wedges around a pointer, one wedge lifted out) and the logo with the name, its text turned into paths so it needs no font |
src/clipboard.rs | Saving and restoring the clipboard with ext-data-control |
src/file_manager.rs | Dolphin over D-Bus: select finished files, find and copy the active window's selection |
src/overlay.rs | What the overlay shows: wheel state, drop handling, the welcome, the progress cards at the corner |
src/wheel.rs | Wheel geometry, hit testing, painting |
src/motion.rs | Springs: the wheel's pop, unfold and swell, worked out from the time |
src/glass.rs |
McGyver is licensed under either of MIT or Apache-2.0, at your option.
assets/sounds/click.mp3 through pw-play (or paplay; afplay on macOS; PlaySound and
click.wav on Windows). MCGYVER_SOUND=0 turns it off.src/icons/Cargo.toml repeats them from the same
commit.vendor/epaint: WordCraft and DeckCraft switch on vello_cpu's multithreading, which
breaks how egui's epaint 0.37.0 draws glyphs (it never flushes). The copy there draws them
single-threaded; drop it once epaint does.out/quick-order.txtrun.sh darkout/scheme-1.txtout/scheme-2.txtWELCOME=1| Colours, fonts, the frosted frame and capsules, blur-region geometry |
src/catalog.rs | What each file kind offers (formats, tools, actions) |
src/jobs.rs | Runs the work on a background thread, one job after another |
src/convert.rs | What a wedge does to one file (picture, compressed file, folder), and merges; output names, scratch files |
src/images/ | Reading and writing pictures; libheif at run time (heif), WebP metadata (webp), PDF, PSD |
src/media.rs | Audio and video conversions and tools through FFmpeg |
src/subtitles.rs | SubRip and WebVTT read, written as either or as text, and moved in time |
src/office/ | Office documents and PDF tools through the WordCraft, GridCraft, DeckCraft and PdfCraft engines (mod.rs); a PDF as other formats (export.rs); documents and spreadsheets merged (merge.rs); presentations' pictures compressed (slides.rs) |
src/markdown.rs | Documents, spreadsheets, presentations and PDFs to Markdown through anydoc |
src/actions.rs | The Actions wheel: zip, copy, move, copy path, terminal, share, messaging apps |
src/desk/ | The wheel without files: what it offers (mod.rs), languages' names and layouts (languages.rs), how busy the computer is (monitor.rs), and the player, layouts, volume, brightness, captures, switches, apps and messaging apps each system has (linux.rs, mac.rs, windows.rs) |
src/switcher/ | The open apps' windows, and bringing one forward: KWin scripting, AppKit, the Alt+Tab list |
src/icons/, src/textures.rs | Apps' icons as pixels per platform, and as egui textures looked up on a thread |
src/archive/ | Reading and writing archives (zip_io, sevenz_io, tar_io, rar_io), codecs, safe unpacking |
tests/archives.rs | Every format round trip, plus checks against tar, zip/unzip, 7z and zstd |
tests/images.rs | Every picture target, orientation, profiles, Exif, crafted files; checks against ImageMagick; the Zip action |
tests/actions.rs | Copy and Move through their real entry point, with a stand-in folder picker |
tests/documents.rs | Word, CSV and PDF to Markdown from hand-built files; scanned and broken files |
tests/office.rs | Word, spreadsheet and presentation conversions; PDF rotate, split, compress, merge; a PDF as Word, PowerPoint, tables, EPUB, text and pictures; documents and workbooks merged |