No description
- JavaScript 97.6%
- HTML 1.2%
- CSS 1.2%
|
|
||
|---|---|---|
| assets | ||
| build/icons | ||
| extensions | ||
| src | ||
| .gitignore | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
Instagram for Linux
An unofficial Instagram desktop client for Linux, built with Electron. It wraps the real instagram.com in a native window and adds desktop-specific extras:
- Persistent login (session cookies survive restarts)
- Native app menu, system tray (close hides to tray instead of quitting)
- Custom video controls injected over every video: seek bar, time, playback speed (0.5x–2x), mute, fullscreen
- One-click download button on hover for photos and videos, saved to
~/Downloads/Instagram - Keyboard shortcuts:
ffullscreen the focused video,mmute,Shift+←/→seek 5s - Support for loading unpacked Chrome extensions (video controls, downloaders, ad blockers, etc.)
Running from source
npm install
npm start
Building the AppImage
npm run dist:appimage
Output goes to release/Instagram-<version>.AppImage.
chmod +x release/Instagram-*.AppImage
./release/Instagram-*.AppImage
Adding Chrome extensions
Two ways:
- Recommended: launch the app, go to menu Extensions → Open Extensions
Folder, and drop unpacked extension folders (must contain a
manifest.json) there. Then Extensions → Reload Extensions. This folder lives in your user profile (~/.config/Instagram/extensions) and survives app updates/rebuilds. - Or place them in the bundled
extensions/folder before building, so they ship inside the AppImage.
To get an "unpacked" folder from a Chrome Web Store extension, install it in
Chrome/Chromium, then copy its folder out of
~/.config/google-chrome/Default/Extensions/<id>/<version>/.
Known extension limitations (Electron, not this app)
chrome.tabs,chrome.windows,chrome.identity, bookmarks/history APIs are not available.- Manifest V3 service workers are only partially supported; classic content-script extensions (most video-control/downloader extensions) work best.
- Instagram's strict CSP may block extensions that inject remote scripts.
Known platform issues
- AppImage won't launch / "FUSE" error: newer distros (Ubuntu 22.04+,
some Arch setups) don't ship
libfuse2by default. Install it, or run the AppImage with--appimage-extract-and-run. - Crashes as root or in some sandboxed environments: run with
--no-sandbox.
Project layout
src/main.js Electron main process: window, session, menu, tray, downloads, extension loading
src/preload.js Injected into instagram.com: video controls, download buttons, IPC bridge
extensions/ Bundled unpacked Chrome extensions (ships inside the AppImage)
build/icons/ App icons