A simple, controller-friendly file manager for SteamOS and Decky Loader. Open two folders side by side, select your files and copy or move them across.
User manual · Handheld guide · How it works · Troubleshooting
- Two panels with independent folders and selections. On handhelds and smaller screens, the window fills the available space between Steam's header and controller controls.
- File and folder modification dates beside their sizes, with local time. Choose name, size or newest-first date order from Options → Sort by… or Settings.
- Gamepad controls with Steam's controller glyphs. Choose hints on the panel, Steam bar, both, or neither.
- Optional startup image. A centered splash appears for three seconds on the first launch. Further displays are off by default and can be enabled in Settings.
- First setup with Handheld and Steam PC profiles. Choose a layout, use X for setting explanations, adjust and save. Everything stays editable later. See first setup.
- Copy files and folders between local disks and SMB shares, with percentage and transfer speed. On cancellation, keep unfinished copies for later or remove them. Options → Interrupted copies retains recovery tasks across restarts and subsequent operations.
- Queue transfers or run up to 5 background operations together. Copy, move, pack and extract can run alongside each other when their files do not conflict. Each active task has its own progress; browsing, text editing and media playback remain available.
- Copy or move with a choice at name conflicts: change the incoming name, keep the old item as a numbered
.bak, or overwrite with a red confirmation button. The interruption window has six consistent actions. Moves between filesystems verify the copied data before removing the source. - Two-column Options menu: file actions on the left, current-folder and FileExplorer actions on the right, with four-direction controller navigation.
- Background jobs through systemd keep copying, moving, packing or extracting after closing FileExplorer. Plugin notifications report 25%, 50%, 75% and completion while the window is closed.
- Open ZIP, RAR, 7z and TAR archives like folders, select their contents and extract them to the other panel, using SteamOS's libarchive.
- Create ZIP, 7z, TAR, TAR.GZ, TAR.BZ2 and TAR.XZ archives with a name, compression level and destination panel of your choice.
- Add applications and scripts to Steam from Options or the mouse context menu. Use Open in FileExplorer from a selected game's library menu or a running game's Steam menu. See Steam integration.
- Discover SMB servers and list their shares from the connection dialog.
- Browse SMB2 shares, including guest access and username/password/domain authentication.
- Remember SMB connections when requested. Previously connected shares can be reopened without entering the password again.
- Browse mounted network shares, including NFS and desktop GVFS mounts, as ordinary folders.
- Rename, create folders and select multiple files from the Options menu.
- Move local files to Trash and restore them in Desktop Mode. Empty Trash is available in Options and Settings with a separate confirmation. SMB deletion is permanent.
- Edit small text files such as TXT, CFG, INI, JSON, XML and scripts, preserving their existing formatting and encoding. Automatic recovery drafts protect pending edits; only Save changes the original file.
- Preview BMP, PNG, JPEG, GIF and WebP images fitted to the available space. Left/right switches between images in the current folder, including SMB and archive folders.
- Play audio and video with pause, seek, stop, previous/next file and fullscreen video. Embedded audio covers appear automatically; a speaker icon fills in when no cover is present. See the media guide for formats and compatibility playback.
- Recognize text, configuration, code, archive, image, audio and video files with distinct icons. A opens supported previews; Options → Edit file tries an unfamiliar extension as text.
- Select and copy text with the controller, paste through Steam's keyboard and undo with Menu/Start. The whole editor fits above the keyboard.
- Customize the appearance with six accent colors, background opacity, four text sizes and 70% to 100% interface scaling. The window keeps its size while smaller controls leave more room for content.
The Decky sidebar contains Launch FileExplorer, Settings, Update, Support and About. Settings, Update and About stay inside the compact sidebar. Update checks the latest stable GitHub release, shows its release notes, verifies the download and opens Decky's installation prompt. Startup checks notify once per OS boot when a newer version is available. Disable them in Settings if preferred.
Support opens optional Buy Me a Coffee, Bitcoin and Cardano links and QR codes. All features stay free. See support options for addresses.
| Type | Recognized formats | What opens |
|---|---|---|
| Audio (12 extensions) | mp3, mp2, wav, wave, flac, ogg, oga, opus, m4a, m4b, aac, weba |
Player with embedded cover or speaker icon |
| Video (6 extensions) | mp4, m4v, mov, webm, ogv, mkv |
Player with seek, pause and fullscreen |
| Images | BMP, PNG/APNG, JPG/JPEG/JPE/JFIF, GIF, WebP | Image viewer; previous/next picture |
| Archives | ZIP, RAR, 7z, TAR, GZ, BZ2, XZ, TGZ, TBZ/TBZ2, TXZ | Browse and extract files |
| Text (238 extensions, plus known filenames) | TXT, LOG, CFG/INI/CONF, JSON, YAML, TOML, XML, Markdown, CSV/TSV, subtitles, source code and more | Plain-text editor, preserving original formatting |
Media playback depends on the codecs inside the file. When needed, system FFmpeg provides compatibility playback, up to 720p/30 fps for video. A filename extension alone does not guarantee that every encoded file will play.
PDF, DOC/DOCX, XLS/XLSX, PPT/PPTX and ODT/ODS/ODP are not displayed as documents. HTML, SVG, RTF, Markdown and notebook files open as source text, without page layout or rich formatting. Unknown text extensions can use Options → Edit file; binary data is rejected. Opening a script never executes it.
Complete text extension and filename list · Audio/video controls
Expand a gallery below for more screenshots from SteamOS Gaming Mode. Click any image to open it at full size. Full galleries: PC and handheld.
PC
Choose a device profile, then adjust its settings before saving.
| Choose a profile | Review settings |
|---|---|
![]() |
![]() |
| Centered startup image | Help for each setting |
|---|---|
![]() |
![]() |
| Six consistent actions | Keep a backup or overwrite |
|---|---|
![]() |
![]() |
Change the incoming name to keep both items, or choose how to replace the existing file or folder.
Choose one-at-a-time copying or up to five simultaneous tasks, then keep browsing, editing or playing media.
| Create an archive | Add to Steam |
|---|---|
![]() |
![]() |
| Move to the other panel | Open the game folder |
|---|---|
![]() |
![]() |
| Audio and video player | Embedded audio cover |
|---|---|
![]() |
![]() |
| Recover an interrupted copy | Both legends hidden |
|---|---|
![]() |
![]() |
These captures show the installed plugin on a SteamOS PC, using demonstration files.
| Browse archives like folders | Edit configuration files |
|---|---|
![]() |
![]() |
| Open an archive with A, select with X, extract with Y. | Keep indentation, blank lines, encoding and line endings. |
| Keep the edited line visible | Watch progress and speed |
|---|---|
![]() |
![]() |
| Make changes with the controller and Steam's keyboard. | See how much has copied and how fast it is moving. |
| Close the panel and carry on | Add a network share |
|---|---|
![]() |
![]() |
| Background operations report 25%, 50%, 75% and done. | Find servers, list shares and optionally remember the login. |
| File actions within reach | Clear confirmation before emptying Trash |
|---|---|
![]() |
![]() |
| Open Options for rename, edit, copy and folder actions. | The warning explicitly includes the Desktop Mode Trash. |
| Make it your own | Select and copy text |
|---|---|
![]() |
![]() |
| Choose an accent color, background opacity and text size. | Hold RT/R2 + directions, copy with View/Select, paste with Steam's keyboard. |
| Open pictures without leaving Gaming Mode | Preview images inside an archive |
|---|---|
![]() |
![]() |
| Press A to open; left/right or L1/R1 changes the image. | Open the ZIP, enter its picture folder and press A on an image. |
Network discovery. Real servers found on the local test network.
Handheld
Choose a device profile, then adjust its settings before saving.
| Choose a profile | Review settings |
|---|---|
![]() |
![]() |
| Centered startup image | Help for each setting |
|---|---|
![]() |
![]() |
| Six consistent actions | Keep a backup or overwrite |
|---|---|
![]() |
![]() |
Change the incoming name to keep both items, or choose how to replace the existing file or folder.
Choose one-at-a-time copying or up to five simultaneous tasks, then keep browsing, editing or playing media.
| Create an archive | Add to Steam |
|---|---|
![]() |
![]() |
| Move to the other panel | Open the game folder |
|---|---|
![]() |
![]() |
| Audio and video player | Embedded audio cover |
|---|---|
![]() |
![]() |
| Recover an interrupted copy | Both legends hidden |
|---|---|
![]() |
![]() |
These captures come from a ROG Ally running SteamOS. Browse the handheld gallery for archives, text selection, images, network discovery and settings.
| Full window with two panels | More text above the keyboard |
|---|---|
![]() |
![]() |
| The window fills Steam's available space. | Choose 80% Interface scale and press L3 to hide the toolbar. |
Steam renders the matching glyphs for the active controller. The names below use Xbox / Steam Deck labels.
| Button | Action |
|---|---|
| D-pad / left stick | Navigate files and buttons |
| A | Open a supported folder, archive, text file, image, audio or video; confirm |
| B | Parent folder; close at the filesystem/share root |
| X | Select or deselect the focused item, then advance to the next |
| Y | Copy the selection; inside an archive, extract selected contents |
| L1 / LB | Focus the left panel |
| R1 / RB | Focus the right panel |
| R3 | Cycle through toolbar, active transfer controls and the current file row |
| L3 | Hide or show the top toolbar |
| Start / Menu | File and folder options |
| View / Select | Locations, mounted drives and SMB connections |
Copy uses the selected items, or the focused item if nothing is selected. Use Left/Right to move between the two file panels. During a transfer, press Right from the right panel to reach Cancel/Transfers directly, or Left from the left panel to reach the last transfer action. Left/Right then moves between those buttons; continuing past the end returns to the file panels. Up returns to the remembered file row; Down reaches the progress cards. This also works with the toolbar hidden. Without a transfer, Left/Right wraps between the panels.
R3 reveals a hidden toolbar. During a transfer, the next R3 reaches Cancel / Transfers; another returns to the current row. Without a transfer, the second R3 returns directly. Down from the toolbar also returns to the files. L3 remembers toolbar visibility and keeps the legend's chosen setting. Menus and file lists wrap at their ends, skipping disabled actions. Each Options column wraps independently; X on the last file advances to the first file. Mouse users can click to focus, double-click to open and click the square to select. Steam's text fields support its on-screen keyboard for names and connection details.
Open Locations → Add SMB share → Find servers, choose a server, then use List shares. Enter login details before listing shares if the server requires them. Credentials are sent only to the server you choose. You can also enter a server name or IP and share name manually. Leave username/password blank for a guest share. Domain is optional.
Discovery combines advertised SMB services with a bounded TCP 445 scan on directly connected private IPv4 LANs. It checks up to 512 addresses; on networks larger than /24 it scans the computer's local /24. Servers on other subnets or hidden by a firewall can be entered manually. A detected open port does not guarantee guest access.
Enable Remember connection to save the connection for future sessions. Passwords are encrypted by systemd for this device and Steam user, with no extra unlock password. TPM and the system key are used when available; a system key alone supports devices without TPM. If secure storage is unavailable, new connections stay session-only and a warning explains why. Existing saved passwords migrate automatically after a successful encryption/readback check, keeping the same shares and folders. Neither passwords nor encrypted credentials are returned by the settings API. Use Settings → Saved connections → Forget to remove them. This protects saved credentials at rest; programs running as the same user can still request decryption. See credential storage and recovery for device changes or TPM resets.
Existing operating-system mounts appear in Locations and reuse the operating system's established session.
FileExplorer does not read passwords from KDE Wallet or change /etc/fstab.
Direct SMB connections use SMB2 and NTLMv2 on TCP 445; servers requiring SMB3 encryption are not supported in this version.
Unmounted NFS shares should first be mounted through SteamOS/Desktop Mode.
- Check GitHub for updates at startup and notify once per OS boot (enabled by default). Manual checks remain available.
- Show hidden files, including dot files and the SMB hidden attribute.
- Show folders first.
- Optional three-second startup image. It appears once on the first launch and stays off afterward unless enabled.
- Sort by name, size or last modification.
- Remember the folders open in both panels.
- Limit the unpacked size of each archive: 10, 50, 100 or 500 GiB, or choose Unlimited.
- Choose cyan, blue, green, amber, violet or rose accents, 70/85/100% background opacity and four text sizes.
- Use Interface scale to fit more content while keeping the window full size.
- Show controller hints in the panel, on Steam's bar, in both places or hide them.
- Hide the file toolbar, or reveal it with R3 when needed.
- Reopen Run first-time setup to review either profile before saving.
- Empty the SteamOS Trash, including trash on connected drives. This permanently deletes trashed items.
Opacity, interface scale and extraction limit use sliders. Press X on a setting for its explanation; up/down closes the help and moves to the next setting. Descriptions stay hidden until needed.
Download the FileExplorer plugin ZIP from the latest release. Use the plugin ZIP, not the source-code archive.
- Open Decky Loader settings and enable Developer mode.
- Select Developer → Install Plugin from ZIP File.
- Choose the downloaded ZIP and confirm installation.
- Open FileExplorer → Launch FileExplorer.
Decky also accepts a direct plugin ZIP link under Install Plugin from URL. See the illustrated installation guide for both methods and the Developer-mode screenshots.
Open FileExplorer → Update → Check for updates, then choose Download and install. The plugin verifies the GitHub ZIP before opening Decky's installation prompt. Confirm Install there. Settings, saved connections and running transfers are preserved. Updates contain the complete plugin, so intermediate releases are not required.
See the update guide for the complete workflow.
FileExplorer runs as the Steam user, without root privileges. Transfers run in a separate systemd user service. Closing the window or reloading the plugin does not cancel them. The active window shows progress and speed; when it is closed, FileExplorer posts notifications with its icon at each quarter and at completion. Notifications require Steam and Decky to be running. Reopening the window reconnects to the current operation. Shutdown or reboot interrupts a transfer; this version does not resume an interrupted transfer automatically. Speed measures bytes processed by the current stage, including temporary staging when extracting selected archive contents.
Copy and move name conflicts ask before replacing anything. The six actions are Resume, Start again, Change name, Overwrite, Cancel and Open FileExplorer. Change name keeps both items. Overwrite opens a confirmation with Back up & replace (.bak, .bak.2, etc.) or the red Overwrite action. The old item is removed only after the replacement is ready. A folder is replaced as a whole, including old-only contents, rather than merged. Resume retries after you remove the conflicting destination; Start again uses a new retry folder. B or Open FileExplorer leaves the decision pending. Independent parallel copies can continue. The same question appears with FileExplorer closed and can be reopened from Transfers / queue.
Files are copied into a temporary name in the destination and renamed after completion.
An interrupted connection or shutdown can leave a hidden .fileexplorer-*.partial item.
Use Options → Interrupted copies to verify and resume it, start a separate new copy, or remove the partial data.
Starting another operation does not erase retained recovery tasks.
Press A on an archive to browse its folders. B returns to the parent folder, including out of the archive root. Select files or folders with X, then press Y to extract those items directly into the other panel, locally or on SMB. The archive stays unchanged. An archive open in the destination panel is read-only. Selected extraction uses temporary disk space; archives on SMB are downloaded temporarily for reading. The separate Extract whole archive option creates a new folder in a local destination. To browse an archive nested inside another archive, first extract that inner archive to a normal folder. Absolute paths, traversal, links and special files are rejected. There is a 100,000-entry limit as well as the configured byte limit. Password-protected and multipart archives are not supported. Some uncommon RAR compression methods may not be supported by the system library. Copying symbolic links or special files is refused. A copy preserves file contents and folder structure; it is not a backup of ownership, permissions, ACLs or extended attributes.
Press A on a text file, or choose Options → Edit text file. Navigate to a line and press A to edit it. The whole editor shrinks above Steam's on-screen keyboard, with the current line and surrounding text visible. X inserts a line with the same indentation; Y saves; Menu/Start undoes a recent edit. Press R3 (click the right stick) to switch between the text and the toolbar. Move left/right across toolbar buttons, confirm with A, and use R3 or Down to return to the cursor. R3 also closes an open keyboard and focuses the toolbar. Press L3 (click the left stick) to hide or show the toolbar and leave more room for text, including while Steam's keyboard is open. R3 shows a hidden toolbar when you need its buttons. Settings → Interface scale can make all controls in the file manager, editor and image viewer smaller without shrinking their windows. With the keyboard hidden, hold RT/R2 + directions to select text and press View/Select to copy the selection or current line. Press A at the destination and use Steam's native Paste. Recovery drafts are saved automatically after 0.4 seconds without typing, or every 1.5 seconds during continuous typing. Only Save changes the original file. On close, keep a draft for later, discard it or continue editing. Reopening the same file offers to restore its draft after a crash or shutdown. See draft recovery.
The editor keeps spaces, tabs, blank lines, existing line endings (including mixed endings), the final newline, BOM and original encoding. It does not run a formatter or reserialize the document. JSON syntax is checked before saving, with an invalid line highlighted; other formats retain their text layout but do not have a syntax validator. UTF-8 and BOM-marked UTF-16 are detected automatically. For older files, choose the original encoding explicitly. Unsupported characters, external file changes, binary files and files larger than 512 KiB are refused instead of silently replacing data. The editor supports up to 10,000 lines. Files inside archives must be extracted before editing. SMB editing uses a temporary replacement and backup; after a connection failure, check any reported backup before retrying.
Press A on a BMP, PNG, JPEG, GIF or WebP file to open the image viewer. Use left/right or L1/R1 to browse the other images in the same folder; B returns to the file list. The viewer follows the panel's sorting and hidden-file settings and wraps at either end. It works with local files, existing mounts, SMB shares and images inside browsable archives. The original file is unchanged. Preview limits are 20 MiB, 40 megapixels and 16,384 pixels per side. See the illustrated image-viewer guide.
Empty Trash displays a red warning: it also empties the same Trash used in Desktop Mode, including connected drives. The confirmation is required because this permanently deletes the trashed items.
Use Node.js with pnpm, and Python 3.10 or newer:
pnpm install --frozen-lockfile
python3 -m pip install --target vendor -r requirements.txt
pnpm typecheck
node --test tests/editor-text.mjs
pnpm build
python3 -m unittest discover -s tests -v
python3 scripts/package.pyThe installable ZIP and SHA-256 checksum are written to out/.
The archive tests use Linux's system libarchive. Runtime Python dependencies are included in the plugin ZIP.
See verification notes for the tested environment and coverage.
The manual source is in docs/wiki; see
maintaining the wiki for publishing matching documentation updates.
Built with Decky API and UI, pysmb and the system libarchive. MIT license. Dependency licenses are included with their distributions in the plugin bundle. The 60plus author logo is supplied by the repository owner and is not covered by the source-code MIT license.
























































