New, working solution (2016-04-01 and it still works):
Make sure you've set Steam to remember your password. Now open <Steam_installation_dir>/config/loginusers.vdf and change value of WantsOfflineMode to 1. Default location of this file:
- Windows (32-bit):
C:\Program Files\Steam\config\loginusers.vdf
- Windows (64-bit):
C:\Program Files (x86)\Steam\config\loginusers.vdf
- Linux:
~/.steam/steam/config/loginusers.vdf
- Mac:
~/Library/Application Support/Steam/config/loginusers.vdf
If you don't want warning about launching Steam in offline mode just do the same with SkipOfflineModeWarning. If you can't see those values, just add them so it looks like this:
"users"
{
"<your profile number>"
{
"AccountName" "<your login>"
"PersonaName" "<your display name>"
"RememberPassword" "1"
"Timestamp" "<timestamp>"
"WantsOfflineMode" "1"
"SkipOfflineModeWarning" "1"
}
}
There can be of course more users listed.
You can change those values back to 0 to launch Steam in online mode.
NOTE: Steam will automatically reset SkipOfflineModeWarning to 0 when it closes. To prevent this you can set the file to read-only, but then you can't switch back easily to online mode nor make Steam remember another user. Alternatively you can use some script to change those values for you.
To automate this on Windows machines, save
Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("config\loginusers.vdf", ForReading)
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
If InStr(strLine, "WantsOfflineMode") = 0 And InStr(strLine, "SkipOfflineModeWarning") = 0 Then
strText = strText & strLine & vbCrLf
End If
Loop
objFile.Close
If WScript.Arguments.Count = 1 Then
strText = Replace(strText, "RememberPassword", "WantsOfflineMode"" ""1"" ""SkipOfflineModeWarning"" ""1"" ""RememberPassword")
mode = WScript.Arguments(0)
Else
strText = Replace(strText, "RememberPassword", "WantsOfflineMode"" ""0"" ""SkipOfflineModeWarning"" ""0"" ""RememberPassword")
mode = "online"
End If
Set objFile = objFSO.OpenTextFile("config\loginusers.vdf", ForWriting)
objFile.WriteLine strText
objFile.Close
Set objShell = CreateObject("WScript.Shell")
If (mode = "offline") Or (mode = "online") Then
objShell.Exec("Steam.exe")
Else
objShell.Run("steam://rungameid/" & mode)
End If
as steam.vbs in your Steam directory and make two shortcuts to it. Add offline as parameter to one of them and it's done. I have two Steam shortcuts on my desktop now. Steam Online with path "C:\Program Files (x86)\Steam\steam.vbs" and Steam Offline with path "C:\Program Files (x86)\Steam\steam.vbs" offline.
I added support for games, so you can launch them in offline mode. Just start steam.vbs with app id as parameter. Example: "C:\Program Files (x86)\Steam\steam.vbs" 440 launches Team Fortress 2 in offline mode.