steam-for-linux icon indicating copy to clipboard operation
steam-for-linux copied to clipboard

Move Content window confusing if multiple libraries on same drive.

Open RockafellaJaz opened this issue 2 years ago • 8 comments

Your system information

  • Steam client version (build number or date): 1655931638 / Jun 22 2022 at 18:55:39
  • Distribution (e.g. Ubuntu): Manjaro
  • Opted into Steam client beta?: Yes
  • Have you checked for system updates?: Yes

Please describe your issue in as much detail as possible:

I have multiple steam library folders on the same drive:

  • The default steam library folder
  • One for Native Games
  • One for Win/Proton Games
  • One for Proton and Runtime installs

The problem is if I wish to move a game from one library to another I am unable to tell which is which. It would help if there was a tooltip with the full path when you hover over each listed target to tell them apart.

Steps for reproducing this issue:

  1. Add multiple folders from the same drive as steam libraries
  2. Try to move a game between them

Steam Move Content Window

RockafellaJaz avatar Jun 25 '22 17:06 RockafellaJaz

I think the top library on the list of your screenshot, is the most "on the left" in the "Storage Manager" view. (On my setup it is this way)

Meanwhile, I thought I found a workaround via editing ~/.steam/debian-installation/steamapps/libraryfolders.vdf For each library, there is a line like this : "label" ""

So I have put differents names in this label value. (1 name for each Library) Unfortunately, they are not shown inside Steam client. Moreover, they are erased after restarting Steam.

Maybe Valve could add sth inside Steam client to allow editing/displaying these labels ?

Saroumane avatar Sep 01 '22 09:09 Saroumane

This problem has got even worse with the recent (late April 2023) UI changes.

Now the worse-than-useless names of "Local Drive ()", "External Drive ()", "External Drive ()", "External Drive ()", "External Drive ()" appear when installing games as well as moving them. And they don't even show the path or any other information which would help identify the steam library - these names are no more use than random strings, they mean nothing, they provide no useful information at all.

Yes, really, on my system, after "Local Drive ()", it shows four repeats of the exact same useless "External Drive ()" name. Starting from "Local Drive ()", they somehow correspond to actual directories /var/games/steam (steam itself), /var/games/steam1 (linux native games), /var/games/steam2 (windows/proton games), /var/games/ssd (windows games on ssd), and /var/games/ssd-linux (linux games on ssd). All of these are ZFS datasets, some on my SSD pool, some on my HDD pool (the datasets for windows games have the casesensitivity attribute set to insensitive because windows devs tend to be careless about upper/lower-case filenames because windows filesystems are all case-insensitive). And they're all on internal NVME and HDD drives, nothing "External" about any of them, no USB, no e-sata, no lightning, or any other kind of external drive chassis.

There's no way of telling which "External Drive ()" corresponds to the actual directory when moving or installing games.

To add insult to the injury, steam libraries aren't on "drives" on linux, they're in sub-directories of the fs tree. The word "Drive" doesn't even make any sense on linux systems. Paths make sense, because linux, like all unixes, has a single tree which can have one or more filesystems (formatted partitions, ZFS datasets, btrfs sub-volumes, etc) mounted anywhere in that tree. Even on Windows, drive letter + path makes more sense than this "Local/External Drive ()" nonsense (I've never seen what it looks like on windows, but I'd guess that the drive letter appears inside the parentheses, which is at least usable/functional).

This is a critical usability bug for anyone who has multiple Steam Library directories, and it boggles the mind that it has been ignored for nearly a year. This is not just an ignorable minor cosmetic issue, it's a bug that harms usability.

It was bad enough when it only affected moving games, that's something that doesn't happen very often - but it's much worse that it now affects installing games, that's something that happens fairly frequently.

HTF can it be so difficult to just replace those stupid "External/Local Drive ()" labels with the actual pathname? It's not a difficult problem to understand, or to fix. It's something that should take only a few minutes if any programmer actually bothered to look into it - just change which variable is printed in that %s field, the path name instead of the cretinously useless label.

Steam has this information, the program KNOWS what steam libraries are configured, and their paths on the system, and which games are installed into each library. It even shows this in the Settings -> Storage dialog. It SHOULD display the path when installing or moving games too.

craig-sanders avatar May 10 '23 18:05 craig-sanders

Meanwhile, I thought I found a workaround via editing ~/.steam/debian-installation/steamapps/libraryfolders.vdf For each library, there is a line like this : "label" ""

So I have put differents names in this label value. (1 name for each Library) Unfortunately, they are not shown inside Steam client. Moreover, they are erased after restarting Steam.

Oddly enough, setting the label for library folder "0" (path /var/games/steam/steam on my system, probably ~/.steam/steam on most other systems) actually works. I set a label of "steam" for this and it showed up in the Steam app. Wasn't reset when exiting or restarting steam, either.

It doesn't work for any other library folders. As you say, they're all reset to the empty string when Steam is started.

It seems like someone had a good idea but never got around to finishing the implementation.

What's even stranger is that there are TWO identical copies of the libraryfolders.vdf file. e.g. on my system there is:

-rwxr-xr-x 1 cas cas 19240 May 11 03:21 /var/games/steam/steam/config/libraryfolders.vdf
-rwxr-xr-x 1 cas cas 19240 May 11 03:21 /var/games/steam/steam/steamapps/libraryfolders.vdf

These are two separate files with different inode numbers, not hard links. I have no idea which one is actually used (or if both are), or why there's two of them. They're both modified to reset the label strings (for libraries other than "0") to empty when steam starts. Both files have identical contents, verified with diff and cmp.

(There's also lots of files called libraryfolders.vdf in the compatdata proton prefix directories, e.g. '/var/games/steam2/steamapps/compatdata/208140/pfx/drive_c/Program Files (x86)/Steam/steamapps/libraryfolders.vdf', but they have a different format and seem to be for library paths relative to Z:\ (the security hole symlink to / that should not exist) for the individual windows games. Mostly unrelated, only worth noting because it's odd that each game prefix needs a copy of the same global data)

Maybe Valve could add sth inside Steam client to allow editing/displaying these labels ?

I don't really care about having a GUI to do this, just being able to edit the libraryfolders.vdf file would be good enough for now.

Or, better yet, steam should just use the path names rather than the worse-than-useless "Local/External Drive ()" labels.

craig-sanders avatar May 11 '23 05:05 craig-sanders

Game install path overly simplified.

Issue transferred from https://github.com/ValveSoftware/steam-for-linux/issues/9972. @ryliejamesthomas posted on 2023-08-09T08:32:25:

Your system information

  • Steam client version (build number or date): 1690583737
  • Distribution (e.g. Ubuntu): Arch Linux
  • Opted into Steam client beta?: No
  • Have you checked for system updates?: Yes
  • Steam Logs:
  • GPU: AMD

Please describe your issue in as much detail as possible:

I have my library in three directories, all on the same partition on the same disk.

  • Steam's default one: ~/.local/share/Steam
  • One for Linux games: ~/Games/Steam/Linux
  • And one for Windows games: ~/Games/Steam/Windows

When I go to install a game all three are simply listed as /home, so I've had to memorise their order to place games where I want them. This is also reflected in the Settings > Storage window.

It would be useful to show more information in the path.

This issue has existed since the new client released. I don't remember it being a problem before.

screenshot_23-08-09_18-08-57 screenshot_23-08-09_18-16-17

kisak-valve avatar Aug 09 '23 11:08 kisak-valve

It seems that labelling the steam libraries works now.

Under Settings -> Storage, you can select a library folder to examine. For each library, there's a ... menu, and one of the options is Rename Library. This lets you change the label for that library. Even better, the dialog for installing games and moving them from one library to another uses the label.

Hooray, problem solved. I now have the following labels for my various steam libraries:

$ grep label /var/games/steam/steam/config/libraryfolders.vdf
		"label"		"default"
		"label"		"steam1-linux"
		"label"		"steam2-win"
		"label"		"ssd-win"
		"label"		"ssd-linux"

Note: I haven't yet tested whether the labels survive quitting and restarting Steam - for now I'm assuming they do (it would be pointless if they didn't).

craig-sanders avatar Feb 16 '24 11:02 craig-sanders

I can confirm that I am also now able to label my Libraries and that it retains them after restarting the Steam client.

RockafellaJaz avatar Feb 16 '24 14:02 RockafellaJaz

20 months to fix this... I know that steam is a little indie project that makes no money, but still... 😁

Saroumane avatar Feb 16 '24 16:02 Saroumane

I can confirm that I am also now able to label my Libraries and that it retains them after restarting the Steam client.

Yep, same, working great here. Haven't found anywhere where the label isn't shown.

ryliejamesthomas avatar Feb 16 '24 17:02 ryliejamesthomas

Closing per the last several comments.

kisak-valve avatar Mar 22 '24 22:03 kisak-valve