Git Product home page Git Product logo

lnshot's Introduction

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.

lnshot's People

Contributors

dependabot[bot] avatar ticky avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

lnshot's Issues

Steam game folder names aren't always sensible

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.

NFS Unbound breeches this social contract, instead using its codename of "Excalibur", so this behaviour may need revision.

shortcuts.vdf does not exist

My Steam config folder does not contain a config/shortcuts.vdf, so this tool fails at that step. Do I need to instruct Steam to create shortcuts for every game when I install them for this to exist?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.