尚未收集儲存庫資訊。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
Spotlight for your memes: find a GIF, sticker or meme in a keystroke and paste it, animated, in Slack, Discord or Telegram. Native macOS app.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Spotlight, but for your memes.
Press F4, type a few letters, hit Enter: the meme is on your clipboard — GIF animation included — ready to paste into Slack, Discord or Telegram. A native macOS app in Swift (SwiftUI and AppKit), free and open source, no account and no tracking.
F4, basito. Named after the most famous face in Boris.
Website: f4.kkratter.com
Install (macOS 14+, free, no special permissions):
curl -fsSL https://raw.githubusercontent.com/kkratterf/f4/main/install.sh | sh
or download the DMG, or use Homebrew. F4 is not notarized yet: see first launch if macOS blocks it.
~/Pictures/Memes by default, or any folder you pick in Settings. Subfolders become categories.Esc, or a click outside, closes the panel. Drag it by the search bar to move it: it snaps to the centre of the screen, and opens where you left it next time.
| 🎞️ GIFs stay animated | F4 writes the file URL (public.file-url) and the raw bytes under the file's UTI, never a decoded NSImage, so Slack, Discord and Telegram paste the animation. |
| ⚡️ Instant | Folder scans, thumbnail decoding and file reads happen in the background. The main thread is never blocked, and only the hovered or selected GIF animates. |
| 🔎 Fuzzy search | Type a few letters of the name: "tif" finds "this is fine". Favourites (click the star on a meme, or ⌘D) get their own section on top, then the ones you used last. |
| 🗂️ GIFs and stickers | Tabs split the panel into All, Favourites, GIFs and Stickers (Tab or ⌘1–⌘4). PNG and WebP files, and anything in a Stickers folder, are stickers. |
| 🎁 Starter pack | F4 never opens empty: it ships with animated emoji GIFs and its own stickers ("basito", "dai dai dai", the F4 keycap...), listed after your memes. Turn them off in Settings. |
| 🔍 GIPHY inside | In the GIFs and Stickers tabs, GIPHY results follow your own: trending when the search is empty. Enter copies one and saves it in your folder, so next time it is local, instant and offline; ⌘D saves it as a favourite. |
| ➕ Add from the panel | Press ⌘V in the panel to add a copied GIF, sticker or image link (in WhatsApp or Telegram: right-click a sticker → Copy), drop files or stickers on it, or click Add. GIFs go into GIFs/, stickers into Stickers/ in your folder. No Finder needed. |
| 🗂️ Categories | Each subfolder is a category you can search by name, so a big library stays findable. |
| 📋 Optional auto-paste | F4 can press ⌘V in the frontmost app after copying. This is the only feature that needs the Accessibility permission, and it is off by default. |
| 🔐 No permissions | The global shortcut uses Carbon RegisterEventHotKey: no Accessibility, no Input Monitoring, no Screen Recording. |
| 🖥️ Menu bar | No Dock icon. The menu bar icon opens the panel, copies one of your last 5 memes in a click, and leads to the meme folder, the settings and the update check. You can hide it in Settings. |
The empty state draws the basito face in code. Drop a .basito.png (or .gif, .jpg) in the meme folder to use your own face instead. Typing a few lines from Boris or The Office in the search field — or the Konami code — does something. Find out which.
From the menu bar icon: the shortcut, open at login, show in the menu bar, the meme folder, auto-paste, and automatic update checks.
F4 needs macOS 14 Sonoma or later and no special permissions. Pick one of the three ways below.
Every release also ships a plain F4-x.y.z.zip and a SHA256SUMS.txt to check the downloads (shasum -a 256 -c SHA256SUMS.txt --ignore-missing).
curl -fsSL https://raw.githubusercontent.com/kkratterf/f4/main/install.sh | sh
The script downloads the latest release, checks its SHA-256, quits F4 if it is running, installs F4.app in /Applications (or ~/Applications if /Applications is not writable), clears the quarantine flag and offers to open it. Read it first if you like: it is short.
| Variable | Effect |
|---|---|
F4_VERSION=v0.2.0 | install a specific release instead of the latest |
F4_INSTALL_DIR=~/Apps | install somewhere else |
F4_NO_OPEN=1 | do not offer to open F4 at the end |
Variables go after the pipe: curl -fsSL .../install.sh | F4_VERSION=v0.2.0 sh.
brew tap kkratterf/f4 https://github.com/kkratterf/f4
brew install --cask f4
The tap lives in this repository (Casks/f4.rb) and is updated by every release.
F4 is not notarized by Apple yet, so the first time you open a copy from the DMG or the zip macOS says it cannot verify the developer. To open it anyway:
Or clear the quarantine flag in Terminal:
xattr -dr com.apple.quarantine /Applications/F4.app
The install script does this for you. You only need to do it once per version.
F4 has no Dock icon. Press F4 (fn F4 on a Mac keyboard), or look for the F4 key in the menu bar, top right. To start it at login, turn on Open F4 at login in Settings.
F4 updates itself: it checks the release feed and offers the new version. You can also turn the check off in Settings and install new versions by hand (drag the new DMG's app over the old one, or run the one-liner again). Your settings and your memes are kept.
With Homebrew: the cask is marked auto_updates, so a plain brew upgrade leaves F4 alone and lets the app update itself.
curl -fsSL https://raw.githubusercontent.com/kkratterf/f4/main/install.sh | sh -s -- --uninstall
With Homebrew: brew uninstall --cask f4, or brew uninstall --zap --cask f4 to remove the settings too.
The script quits F4, deletes F4.app and its settings (defaults delete com.kkratterf.f4). Your meme folder is never touched.
Needs macOS 14+ and Xcode 15+.
git clone https://github.com/kkratterf/f4
cd f4
swift build
swift test # unit tests
scripts/build-app.sh release # builds dist/F4.app
open dist/F4.app
scripts/build-dmg.sh builds the DMG. The website has no build step: preview it with python3 -m http.server -d site 8000.
F4 has no analytics, no account and no server. It reads the files in your meme folder locally and writes the one you pick to the clipboard. It goes online for three things only: the update check against the release feed on the website; GIPHY, only while you are in the GIFs or Stickers tab of the open panel; and downloading an image link you paste or drop into the panel yourself. Both the update check and GIPHY can be turned off in Settings.
Which files does it understand? GIF, PNG, JPEG and WebP (WhatsApp and Telegram stickers). HEIC and short videos are on the roadmap.
Where do the memes come from? From you. F4 ships with no images at all: no stills, no GIF packs, nothing copyrighted.
Can I change the shortcut? Yes, in Settings. F4 is only the default: any function key works on its own, any other key with ⌘, ⌥ or ⌃.
F4 opens Spotlight or Launchpad instead. On a Mac keyboard the top row are media keys first (F4 opens Spotlight or Launchpad): hold fn and press F4, or turn on Use F1, F2, etc. keys as standard function keys in System Settings → Keyboard → Keyboard Shortcuts → Function Keys. On most other keyboards F4 just works. Or record another shortcut in Settings.
Can a script or an AI assistant use F4? Not yet, but it is being built: a f4:// URL scheme, Shortcuts actions, a command line tool and an MCP server. Until then, facts for AI assistants live in llms.txt and the full reference in llms-full.txt; agents that change the code read AGENTS.md.
Contributions are welcome. See CONTRIBUTING.md for the short version and AGENTS.md for the full rules (they are written for AI agents and humans alike). Found a bug or have an idea? Open an issue.
MIT. The animated emoji in the starter pack are Noto Emoji by Google, licensed CC BY 4.0, downscaled for F4.
| 🔄 Updates itself | F4 checks the release feed and installs a new version in one click (Settings → Updates). |
| 🇮🇹 English and Italian | The app follows your Mac's language. |
| 🧩 Raycast | A Raycast extension searches the same folder, if that is where your hands already are. |