Enhancement script for desuarchive.org
Infinite scrolling · Media preview · Gallery mode · Downloads · Fappe Tyme
A userscript manager such as Violentmonkey, Tampermonkey, or Greasemonkey.
Full-screen media gallery with pan, zoom, rotation, slideshow, video playback, and keyboard navigation. The thumbnail strip highlights the currently viewed media and the background thread syncs to the corresponding post.
Open with Alt+G or click any media thumbnail while the script is active.
galleryview.mp4
Keyboard shortcuts
| Key | Action |
|---|---|
Left / Right |
Previous / Next |
Space |
Toggle slideshow |
F |
Fullscreen |
H |
Flip horizontal |
R |
Rotate 90 degrees |
S |
Download (preserves transforms) |
T |
Toggle thumbnail strip |
M |
Mute / unmute video |
< / > |
Frame step (while paused) |
[ / ] |
Decrease / increase playback speed |
\ |
Reset playback speed |
Scroll |
Zoom |
Esc |
Close |
Automatically loads the next page of results as you scroll on both thread and search pages.
infinite.scroll.mp4
Hover over any thumbnail to see a full-size preview. Supports images and video.
mediapreview.mp4
Press F to toggle image-only mode. Hides text-only posts and shows only posts with media.
fappetyme.mp4
Press S while hovering over a thumbnail or viewing media in the gallery to download with the original filename. In gallery mode, flipped or rotated images are saved with transforms applied.
See CHANGELOG.md for a full list of changes.
Source files live in src/. The installable userscript (desuX.user.js) is a generated artifact assembled by the build script.
src/
metadata.txt # userscript header
main.js # bootstrap entrypoint
assets/base64-icons.js # embedded icon assets
react-gallery/
runtime.jsx # React gallery component (bundled via esbuild)
modules/
styles.js # injected CSS
state.js # shared runtime state
utils.js # helper functions
page.js # page-level helpers
media-index.js # media discovery and indexing
hover-preview.js # hover preview behavior
search.js # infinite scroll / search loading
gallery.js # gallery rendering and navigation
download.js # download and filename handling
keyboard.js # keyboard shortcut handling
bootstrap.js # startup wiring
build/
build-userscript.mjs # zero-dependency build script
npm run build # rebuild desuX.user.js and desuX.meta.js
npm run watch # rebuild on source changes
npm run check # syntax-check the generated scriptBump the version in src/metadata.txt, rebuild, and commit source + generated output together.