Skip to content

ticky/lnshot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

lnshot

Rust

πŸ§–πŸ»β€β™€οΈ Symlink your Steam games' screenshot directories into your Pictures folder

About

This is a little utility to work around a bugbear of mine with the Steam client. Steam provides a pretty handy in-game screenshot tool, but the screenshots are stored deep in Steam's own folder hierarchy, despite lacking any cloud sync function other than uploading them manually.

Running lnshot will generate a set of symbolic links (basically, folders which are shortcuts) for each game's screenshot directory within your normal Pictures folder. This means you get this:

πŸ“‚ ~/Pictures/Steam Screenshots
β”” πŸ“‚ Ticky
  β”œ πŸ“‚ Hardspace Shipbreaker
  β”‚ β”” 🌌 20221020102933_1.jpg
  β”œ πŸ“‚ Need for Speed: Most Wanted
  β”‚ β”” πŸŒƒ 20221005164632_1.jpg
  β”” πŸ“‚ The Big Con
    β”” 🏞 20221005164632_1.jpg

Instead of this:

πŸ“‚ ~/.local/share/Steam/userdata
β”” πŸ“‚ 69420691
  β”” πŸ“‚ 760
    β”” πŸ“‚ remote
      β”œ πŸ“‚ 1139280
      β”‚ β”” πŸ“‚ screenshots
      β”‚   β”” 🏞 20221005164632_1.jpg
      β”œ πŸ“‚ 1161580
      β”‚ β”” πŸ“‚ screenshots
      β”‚   β”” 🌌 20221020102933_1.jpg
      β”” πŸ“‚ 6547380
        β”” πŸ“‚ screenshots
          β”” πŸŒƒ 20221005164632_1.jpg

lnshot can detect Steam's installation directory, and automatically find your Pictures folder across all three supported Steam platforms.

User folders are generated for each Steam user logged into your system (filtering is not yet supported). Game folders will be named after your game title for non-Steam shortcuts, and named the same as the steamapps/common installation folder for games managed by Steam, which is usually a reasonable name. This may change to use the full Steam app name in the future.

lnshot does this offline, using only the metadata Steam already has stored on your hard disk.

Installation

Builds are not currently provided, so it's currently expected that you know your way around the Rust compiler.

Clone this repository and run cargo install --path . inside it.

Usage

Run lnshot to automatically symlink to Steam Screenshots within your Pictures folder.

lnshot --help provides information about other options, including using a different name for the Steam Screenshots folder.

Automation

lnshot provides a "daemon" mode, allowing for monitoring the file system for changes in the Steam screenshot folders.

Linux (Steam Deck)

On Steam Deck, we can take advantage of systemd to run lnshot automatically.

  1. Run mkdir -p ~/.config/systemd/user to create the folder we need
  2. Create ~/.config/systemd/user/lnshot.service (easy mode: nano ~/.config/systemd/user/lnshot.service), and paste this into it:
    [Unit]
    Description=Steam Screenshot Symlinking Service
    
    [Service]
    ExecStart=%h/.cargo/bin/lnshot daemon
    Restart=always
    
    [Install]
    WantedBy=default.target
  3. Save the file
  4. Run systemctl enable --user lnshot.service to make it automatically start in the future.