Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Steam Idler Version 2.2 MIT License .NET 8.0

Steam Game Idler

A lightweight, memory-efficient tool to automatically idle your Steam games and collect hours, cards, and achievements — built with C# and SteamKit2.

by SyntX


Features

🎮 Multi-Game Idling

Idle multiple Steam games simultaneously. Just list their AppIDs and let the tool handle the rest.

⏱️ Smart Cooldown

Configurable idle limits (default: 10 hours) with automatic cooldown breaks (default: 30 minutes) to prevent infinite sessions.

🔐 Persistent Sessions

Log in once. Steam refresh tokens are saved securely and reused — no need to re-enter your password or Steam Guard codes for weeks.

🔄 Auto-Reconnect

Automatically reconnects on network interruptions with exponential backoff (up to 5 attempts). No memory leaks, no infinite loops.

🏆 Achievement Tracking

Fetches and displays game names and achievement progress every 30 minutes. Track your collection in real-time.

💬 Chat & Auto-Reply

Receive chat messages, send replies, and configure automatic responses while idling. Chat log is saved to a text file.

🖥️ Dual Interface

Choose between a full-featured graphical interface (Windows Forms) or a lightweight CLI version.

📊 Live Statistics

Track idle duration per game with session statistics displayed every hour. Monitor your progress at a glance.


Screenshots

Screenshots coming soon


Getting Started

Prerequisites

  • .NET 8.0 SDK or later
  • A Steam account with games in your library

Download

Grab the latest release from the Releases page. Pre-built binaries are available for Windows x64.

Build from Source

git clone https://github.com/SyntX34/SteamIdler.git
cd SteamIdler/SteamIdler

# Build CLI version
dotnet build CLI/SteamIdler.csproj -c Release

# Build GUI version
dotnet build GUI/SteamIdlerGUI.csproj -c Release

Publish Standalone Executable

dotnet publish CLI/SteamIdler.csproj -c Release -r win-x64 --self-contained true -o ./publish/cli
dotnet publish GUI/SteamIdlerGUI.csproj -c Release -r win-x64 --self-contained true -o ./publish/gui

Configuration

On first launch, a config.json file is created automatically. Edit it with your Steam credentials:

{
  "username": "your_steam_username",
  "password": "your_steam_password",
  "refresh_token": "",
  "auto_reply_message": "Hey! I'm currently idling Steam games and can't chat right now.",
  "auto_reply_enabled": true,
  "max_idle_hours": 10.0,
  "cooldown_minutes": 30.0
}

Configuration Options

Setting Default Description
username "" Your Steam account username
password "" Your Steam account password
refresh_token "" Automatically saved after first login for persistent sessions
auto_reply_message "Hey! I'm currently idling..." Auto-reply message sent to friends who message you
auto_reply_enabled true Enable or disable automatic chat replies
max_idle_hours 10.0 Maximum consecutive idle hours before a cooldown is triggered
cooldown_minutes 30.0 Cooldown duration in minutes after reaching max idle hours

Usage

Games List

Create a games.txt file in the same folder as the executable. Add one Steam AppID per line. Lines starting with // are treated as comments.

730     // Counter-Strike 2
570     // Dota 2
440     // Team Fortress 2
252950  // Rocket League

CLI Commands

While the CLI version is running, you can use these commands:

Command Description
quit Stop idling and exit the program
friends Display your Steam friends list with names, IDs, and statuses
msg <SteamID64> <message> Send a direct chat message to a friend by their 64-bit Steam ID

GUI Features

  • Dashboard — Connect, stop, manage game list, and view a live log of all activity
  • Friends — Browse your Steam friends list and double-click to start a chat
  • Chat — Send and receive messages in real-time
  • Settings — Update your credentials, auto-reply message, and manage saved session tokens

Memory & CPU Efficiency

Steam Game Idler is designed to be lightweight:

  • Single callback pump — Only one Steam client callback loop runs at any time
  • Guarded reconnection — Prevents cascading reconnect tasks that could consume gigabytes of memory
  • Max 5 reconnect attempts — Stops retrying after 5 failed attempts with exponential backoff
  • Throttled logging — Repeated disconnect/connect messages are rate-limited to prevent log spam
  • Proper resource cleanup — Old SteamClient objects and callback pumps are fully disposed before creating new ones

Session Persistence

Steam's authentication system supports long-lived refresh tokens. When you log in with IsPersistentSession = true, the tool saves your refresh token to config.json. On subsequent launches, you can idle immediately without entering a password or Steam Guard code — the token is valid for weeks or longer.

If a token expires or is revoked, the tool automatically falls back to password-based authentication and saves a fresh token.


Building

Project Target Command
CLI net8.0 dotnet build CLI/SteamIdler.csproj -c Release
GUI net8.0-windows dotnet build GUI/SteamIdlerGUI.csproj -c Release

Dependencies


License

This project is open source under the MIT License. See the LICENSE file for details.


Disclaimer

This tool is not affiliated with Valve Corporation or Steam. Use at your own risk. Idling Steam games for card drops and hours is allowed under Steam's terms of service, but automated interactions may be subject to Steam's API usage policies.


Built with ❤️ by SyntX
Powered by SteamKit2

About

A lightweight, memory-efficient tool to automatically idle your Steam games and collect hours, cards, and achievements, built with C# and SteamKit2.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages