Skip to content

About

Controller-friendly two-panel file manager for SteamOS and Decky Loader. Files, archives, SMB shares, text editing and image previews.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

FileExplorer

Downloads Latest release downloads Stars License: MIT Buy me a beer

FileExplorer: Two panels. One controller.

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

What it does

  • 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.

Supported formats

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

See it in action

PC Handheld
Two file panels on a SteamOS PC Two file panels on a SteamOS handheld
Browse two folders with sizes and modification dates. The same columns fit the handheld at 70% scale.
PC text editor above Steam's keyboard Handheld text editor at 80 percent scale above Steam's keyboard
Keep the edited text visible above the keyboard. Smaller controls and a hidden toolbar leave more room for text.
Video playback on a SteamOS PC Video playback on a SteamOS handheld
Play, pause and seek without leaving Gaming Mode. The player and controller hints fit the handheld screen.
Four controller legend modes on pc Four controller legend modes on handheld
Compare panel hints, the Steam bar, both and hidden. The same four modes on the handheld. Click to enlarge.

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

First setup

Choose a device profile, then adjust its settings before saving.

Choose a profile Review settings
PC profile choice PC setup settings
Centered startup image Help for each setting
Three-second startup image Help opened with the controller

Resolve a name conflict

Six consistent actions Keep a backup or overwrite
Name conflict with six actions Backup and red overwrite confirmation

Change the incoming name to keep both items, or choose how to replace the existing file or folder.

Copy queue and parallel transfers

Choose one-at-a-time copying or up to five simultaneous tasks, then keep browsing, editing or playing media.

Copy queue progress on PC

Copy queue options on PC

Copy queue add on PC

Recover unsaved text

Restore an unsaved text draft on pc

Moving, packing and Steam integration

Create an archive Add to Steam
Archive options Create a Steam shortcut
Move to the other panel Open the game folder
Move confirmation Native Steam game menu

Media, recovery and optional controls

Audio and video player Embedded audio cover
Audio and video player Embedded audio cover
Recover an interrupted copy Both legends hidden
Recover an interrupted copy Both legends hidden

These captures show the installed plugin on a SteamOS PC, using demonstration files.

File and folder dates beside their sizes, with a selected file

Browse archives like folders Edit configuration files
Select individual profiles inside a ZIP archive Text editor with indentation, line numbers and an active line
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
Edited line above Steam's on-screen keyboard Copy operation showing percentage, size and transfer 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
Native FileExplorer notification during a background transfer SMB connection form with server discovery and share listing
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
File options including rename, edit, copy and Trash Red warning about the shared Desktop Mode 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
Appearance settings in the Decky sidebar Several text lines selected with the controller
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
Image viewer showing an alpine lake and aurora Viewing another picture directly inside a ZIP
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.

Automatic SMB discovery showing seven servers on the local network

Check the latest GitHub release Control startup notifications
Checking the installed version against the latest GitHub release Startup update check switch in Settings
When a newer release is available, read its notes, download and confirm in Decky. Notify once per OS boot; manual checks work with this option off.
Handheld

First setup

Choose a device profile, then adjust its settings before saving.

Choose a profile Review settings
Handheld profile choice Handheld setup settings
Centered startup image Help for each setting
Three-second startup image Help opened with the controller

Resolve a name conflict

Six consistent actions Keep a backup or overwrite
Name conflict with six actions Backup and red overwrite confirmation

Change the incoming name to keep both items, or choose how to replace the existing file or folder.

Copy queue and parallel transfers

Choose one-at-a-time copying or up to five simultaneous tasks, then keep browsing, editing or playing media.

Copy queue progress on Handheld

Copy queue options on Handheld

Copy queue add on Handheld

Recover unsaved text

Restore an unsaved text draft on handheld

Moving, packing and Steam integration

Create an archive Add to Steam
Archive options Create a Steam shortcut
Move to the other panel Open the game folder
Move confirmation Native Steam game menu

Media, recovery and optional controls

Audio and video player Embedded audio cover
Audio and video player Embedded audio cover
Recover an interrupted copy Both legends hidden
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
Handheld file manager at 70 percent scale Editor at 80 percent scale with toolbar hidden
The window fills Steam's available space. Choose 80% Interface scale and press L3 to hide the toolbar.

Controls

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.

Network shares

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.

Settings

  • 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.

Install

Download the FileExplorer plugin ZIP from the latest release. Use the plugin ZIP, not the source-code archive.

  1. Open Decky Loader settings and enable Developer mode.
  2. Select Developer → Install Plugin from ZIP File.
  3. Choose the downloaded ZIP and confirm installation.
  4. 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.

Update

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.

File handling

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.

Text editor

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.

Image viewer

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.

Build

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.py

The 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.

About

Controller-friendly two-panel file manager for SteamOS and Decky Loader. Files, archives, SMB shares, text editing and image previews.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages