Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for user categories #47

Closed
KeyboardDanni opened this issue Aug 25, 2018 · 30 comments
Closed

Add support for user categories #47

KeyboardDanni opened this issue Aug 25, 2018 · 30 comments
Labels
enhancement New feature or request UI

Comments

@KeyboardDanni
Copy link

It would be nice to be able to create categories and use them to organize your games. There are several use cases for this:

  • Making a list of favorite games
  • Tracking which games you've already completed
  • Hiding games that don't run on your machine (example: Anomaly: Warzone Earth is known to be broken on Linux yet it appears near the top of the list due to alphabetical sorting)
  • Hiding games you got as part of a bundle but aren't interested in playing

Being able to show/hide these categories would also help cut down on clutter, and you should be able to add a game to multiple categories (as if they were tags).

The native Steam client has this functionality, and I think it's worth having here too.

@tkashkin tkashkin added enhancement New feature or request UI labels Aug 25, 2018
@tkashkin
Copy link
Owner

Good idea.
I don't know how to tie it to the existing interface. Do you have any ideas?
It will probably require some sort of popup with filters and a tab in settings dialog to manage tags.

@tkashkin
Copy link
Owner

GOG library tags can be imported, their API sends them with owned games list.
Steam tags should be possible to import too.

@tkashkin
Copy link
Owner

@cosmicchipsocket what do you think about something like this?

filters_mockup

I also need some icon for filters popup. Some sort of tag icon may be appropriate, but what if this popup will later have other filters?

@KeyboardDanni
Copy link
Author

From a glance I have a hard time figuring out how the pop-up works. Is Include/Exclude a mode switch, or a tab view? If it's a whitelist/blacklist switch, I'd have a hard time picturing a use case for it. And I haven't seen a dual-column selector like that in a UI in a while. Why not a simple checklist?

Either that, or have collapsible headers line the "Installed"/"Not installed" headers that are already in the list view, but add a clickable -/+ icon to the side. Headers would need to be introduced to the icons view for this to work.

@tkashkin
Copy link
Owner

This layout was the first thing that I've thought of, but I agree that it may not be a good solution.
Probably checklist will be better.

Do you suggest Steam-like headers for tags. I don't really like this solution, because expected behaviour in this case is to list game in each tag it has, and it may become too much.

Example: I have used Depressurizer to import Steam tags as library categories. I have many categories. This is a VR section with just 11 games and it's already a mess if games have multiple tags.

image

@tkashkin
Copy link
Owner

@neuromancer, @MessedUpHare, do you have any ideas or suggestions?

@neuromancer
Copy link
Contributor

I think you can add IGDB support and extract keywords from there as well.

@KeyboardDanni
Copy link
Author

If there's automatic tagging, I'd prefer that it be optional, and placed separately in the list from user-made categories.

Maybe have a settings dialog for managing the categories, where you can rename/delete user categories, and choose between providers for automatic ones?

@tkashkin
Copy link
Owner

tkashkin commented Aug 27, 2018

What do you think about this?

image

The first two tags (favorites and hidden) are builtin non-removable tags.
The rest of them are imported from GOG. They are created by user but GOG can probably have some predefined ones.

Also it's probably the right place to add some additional filters like platforms (should be visible if non-native games are enabled).

Do you think tags search is needed here? Or sorting builtin > user-created > imported will be enough?

tkashkin added a commit that referenced this issue Aug 27, 2018
* GamesDB refactoring
* Game tags
* Tags import from GOG
* FiltersPopover (just basic UI now, not hooked to anything)
tkashkin added a commit that referenced this issue Aug 29, 2018
@tkashkin
Copy link
Owner

tkashkin commented Aug 29, 2018

Tags are working now (no user-created tags yet).

GOG tags will be imported. Games can be marked as favorite or hidden with right click in both grid and list views.

@neuromancer
Copy link
Contributor

I'm afraid that last revision is broken for me. It does not load any game, I believe is related with #48, but it does not seem to be fixed changing some options (and unfortunately, I won't be able to submit a proper issue report in two weeks).

@tkashkin
Copy link
Owner

@neuromancer I'm still not sure what's the problem as it fixed itself on my laptop. Have you waited long enough to get all your games cached in db?

@neuromancer
Copy link
Contributor

GOG categories are working, but the icon of that menu is missing:

missing-icon

(I'm using 53e10bb )

@tkashkin
Copy link
Owner

@cosmicchipsocket check with the latest commit in dev branch. Do you have any ideas or suggestions?

@KeyboardDanni
Copy link
Author

Went ahead and installed the latest dev build. It looks pretty good so far, although I'd expect custom tags to have their own headers (similar to Favorites), though simply hiding the categories I don't want is good enough for now.

I'm not sure why I can select GOG tags for games on Steam. There's also the issue of every game being listed as "Run with compatibility layer" but that's an unrelated issue.

@KeyboardDanni
Copy link
Author

KeyboardDanni commented Sep 22, 2018

Bug report: Making a new tag named "Complete" and then hiding it will instead hide the "Not installed" category.

@tkashkin
Copy link
Owner

tkashkin commented Sep 22, 2018

Went ahead and installed the latest dev build.

Right now master branch is more recent than dev (but most of the difference are fixes for AppImage and building on 16.04).

There's also the issue of every game being listed as "Run with compatibility layer" but that's an unrelated issue.

Yes, I know about that bug.

I'd expect custom tags to have their own headers

What header should be displayed if game has multiple tags?

I'm not sure why I can select GOG tags for games on Steam.

I'm not sure why it should be limited. GOG tags are the same as any other tags, all the difference is that GOG tags are auto-imported from GOG and have GOG icon.

Bug report: Making a new tag named "Complete" and then hiding it will instead hide the "Not installed" category.

I see that, not sure yet why that happens. It doesn't hide all of the not installed games, but some of them.
There's now quite complicated logic in filtering, there's a very high chance it won't handle some cases correctly.
One possible way to fix this is to refactor filtering to use only tags and implement all of the current conditions (except search) as builtin tags (like favorites and hidden currently are).

@tkashkin
Copy link
Owner

@cosmicchipsocket

Bug report: Making a new tag named "Complete" and then hiding it will instead hide the "Not installed" category.

Should be fixed in dev branch (0.11.2-1-dev). It actually worked correctly, but broke after adding "Installed" tag (#69). Now it should work properly with "Not installed" tag added.

@KeyboardDanni
Copy link
Author

I'm not sure why it should be limited. GOG tags are the same as any other tags, all the difference is that GOG tags are auto-imported from GOG and have GOG icon.

Because the GOG icon on them implies that they are synchronized with GOG and it'd be hard to conceptualize GOG knowing how to apply a tag to a Steam game.

(At the very least I'd like to be able to disable the GOG tags)

tkashkin added a commit that referenced this issue Oct 19, 2018
Imported tags can be disabled (#47)
Experimental flatpak changes (#15)
@tkashkin
Copy link
Owner

@cosmicchipsocket imported tags can be disabled since cb4c384.

@gwemmie
Copy link

gwemmie commented Mar 28, 2019

Are there any plans to support importing Steam's categories as tags? I have a major amount of categories set up, too, and I'd like to have them totally synced between GameHub and Steam. Doing that manually would be too ridiculous.

@tkashkin You mentioned importing Steam's categories in with Depressurizer earlier? How exactly did you do that? I'm only just now hearing about Depressurizer, and it seems to be Windows-only. I'm on Linux. I do have a Windows VM, but if I used it, is there actually a way through Depressurizer to, I guess, export Steam's categories as a format that's easy to plug into GameHub's config files, and then copy those config files into Linux? I mean, that's way too roundabout to be a permanent workaround. However, I wouldn't mind doing it this first time until more of a sync situation can be implemented.

@tkashkin
Copy link
Owner

@Jimi-James

Are there any plans to support importing Steam's categories as tags?

No plans right now, but it should be doable. I'll need to research how does Steam store user-added categories.

You mentioned importing Steam's categories in with Depressurizer earlier?

I have mentioned it only as an example of what a mess it would be if there was a list header for each tag and game had multiple tags.

@gwemmie
Copy link

gwemmie commented Mar 28, 2019

@tkashkin

No plans right now, but it should be doable. I'll need to research how does Steam store user-added categories.

Oh, I'm pretty sure that's in <steam>/userdata/<UID>/7/remote/sharedconfig.vdf. Actually, I just checked my sharedconfig.vdf and, yeah, all my custom categories organized by app ID, and I think also all my custom shortcuts and their categories, were in that file. Ooh, importing custom shortcuts would be cool, too, though probably much more complicated.

I have mentioned it only as an example of what a mess it would be if there was a list header for each tag and game had multiple tags.

Oh, wait, I just realized you actually imported Steam community tags. As in not user categories. OK, yeah, I see, that wasn't what I was hoping at all. Oh well.

@gwemmie
Copy link

gwemmie commented Mar 30, 2019

After all the bugfixing we just did elsewhere, GameHub is almost flawless for my setup! All that's left to do now is get my Steam categories and non-Steam game shortcuts in a sync setup with GameHub.

Which I've figured out the best way to accomplish is on my own, in a launcher-agnostic way (I've lived through Ice and Steam-ROM-Maneger each working and then stopping working forever, forgetting their settings now and then along the way, and I'm sick of that). It looks like I'll be able to build a launcher-agnostic syncing setup using only Bash scripts that I'll figure out how to plug into GameHub's config files, the steam://rungameid/ command (because it actually supports non-Steam shortcuts if you can get their appIDs), and a way to parse Steam's infamous shortcuts.vdf (to get not only those appIDs, but also the shortcuts' categories). The non-non-Steam games already have their category info stored in a much more parseable--that is, actual plain text--file (despite its being the same file extension), sharedconfig.vdf.

Turns out there's not only a Python library for that (https://pypi.org/project/vdf/), but also a complete project someone else has already "finished" (it's a bit out-of-date now: https://github.com/CorporalQuesadilla/Steam-Shortcut-Manager), who I'm now talking to over reddit. When I have more time later, I'll probably help with that, and either way, once it's all back in working order, I can put what I figure out about GameHub integration into its wiki, and then post back here with that whole setup!

@tkashkin
Copy link
Owner

@Jimi-James GameHub can already read, change and save shortcuts.vdf. It supports adding games to Steam as non-Steam games. #149 (comment)

Now it adds games to shortcuts.vdf with one tag ("GameHub").

It should be possible to extend it to allow two-way sync.

@gwemmie
Copy link

gwemmie commented Mar 30, 2019

Oh! I... OK, I just failed to find that setting myself. I guess I didn't realize it was already there because I didn't try adding a shortcut through GameHub yet (as I had actually just finished dramatically reorganizing my Steam library immediately before finding GameHub)? And because the two-way sync hasn't been implemented yet? So when that happens, everything will just show up in here? To be honest, I'd rather wait for two-way sync to be implemented, and then when I have time and if it hasn't happened yet, try helping with a pull request, than set up the same custom shortcuts and categories all over again in a new program.

Does the current implementation already use, or have an option to use, steam://rungameid/ to run those custom shortcuts through Steam, so that you can get an in-game status, the overlay, and controller configs and such?

@tkashkin
Copy link
Owner

Does the current implementation already use, or have an option to use, steam://rungameid/ to run those custom shortcuts through Steam, so that you can get an in-game status, the overlay, and controller configs and such?

No, it does not. This is an interesting idea, but I'm not sure yet how to implement it.

Current supported scenario is a bit different:

  • Install GOG/Humble/etc game through GameHub
  • Add shortcut to Steam via "Add to Steam library" button in game properties
  • Use Steam Big Picture or desktop client as a launcher and it will launch game through GameHub

@gwemmie
Copy link

gwemmie commented Mar 30, 2019

Alright, that's what I figured, as it doesn't seem to work with native games yet. If I try to make just a shortcut to a binary on my system, I get a shortcut that doesn't actually do anything. It lists itself as Not installed, and trying to install it does nothing. Clicking Add to steam does nothing. On top of that, it won't even remember the binary that it's set to use.

@tkashkin
Copy link
Owner

@Jimi-James that's weird. It works fine for me:

screenshot

Added shortcut:

  |- [3]
    |- StartDir: .
    |- LaunchOptions: --run user:b5eccde58b6cca7892b38a4c0a7a7ec5
    |- OpenVR: 0
    |- AllowOverlay: 1
    |- AllowDesktopConfig: 1
    |- [tags]
      |- 0: GameHub
    |- exe: com.github.tkashkin.gamehub
    |- LastPlayTime: 1
    |- AppName: QZDoom
    |- IsHidden: 0
    |- ShortcutPath: /usr/share/applications/com.github.tkashkin.gamehub.desktop

Run GameHub from terminal with at least --debug argument and try to do that again.

@gwemmie
Copy link

gwemmie commented Apr 2, 2019

The plot thickened--I took a while to notice (I've been in a busy spell), but Steam actually did get my Test shortcut added to it. Several times--once for each time I pressed the button, only to be confused by the lack of any feedback. So, the only thing that's actually not working there is I can't set a binary or a starting path--both always become blank again as soon as I close and reopen that shortcut's config window. Weirdly, a binary (Target) and starting path do end up being set in the corresponding Steam shortcut, but they're not exactly what I had in mind:

Screenshot_2019-04-02_10-00-32

When I'm less busy again (probably later this week), I'll try all this again from scratch with the --debug option.

EDIT: Looking back at your last comment, I'm just now realizing that what I'm seeing in that screenshot might have been intended. I can see that the shortcut you've added--and, with the proper launch option, also those Test shortcuts I added--are actually meant to launch a game from Steam to GameHub. I didn't realize that was the only Steam shortcut functionality GameHub had so far. What I'm actually looking for is the opposite: a shortcut in GameHub, that uses steam://rungameid/<appid> to run a corresponding shortcut or even a normal Steam game, through Steam.

In other words, basically exactly the same thing as each game launcher that is automatically added into GameHub when it is synced with Steam for each Steam game, but with 2 differences:
-The shortcut in question was added into GameHub manually by the user and may have custom settings, like launch options and such.
-The shortcut allows the user to specify the exact <appid> that is passed into steam://rungameid/--the exact command that, I've just now been reminded, you mentioned is already used by GameHub to run Steam games: #101 (comment)

The user could specify the appID of a normal Steam game, or they could scour the <steam>/userdata files (probably shortcuts.vdf) for the appid of a custom non-Steam game shortcut, and put that one in.

If/when GameHub gains 2-way Steam category/shortcut syncing functionality, that feature could be combined with this feature, for one or both of two more differences between the GameHub's own default Steam launchers and these custom shortcuts:
-The user can choose a non-Steam shortcut, from a menu that lists all non-Steam shortcuts, as the <appid> that is run by that shortcut that they are adding to GameHub.
-GameHub automatically populates its Steam list (or maybe a separate list next to the Steam list in those game provider buttons at the top that include GOG and Humble) with all of your non-Steam shortcuts, already set up to run through Steam by steam://rungameid/<appid>.

Lucki pushed a commit to Lucki/GameHub that referenced this issue Oct 30, 2021
* GamesDB refactoring
* Game tags
* Tags import from GOG
* FiltersPopover (just basic UI now, not hooked to anything)


Former-commit-id: c4e0f3f
Lucki pushed a commit to Lucki/GameHub that referenced this issue Oct 30, 2021
Games context menu


Former-commit-id: 6765826
Lucki pushed a commit to Lucki/GameHub that referenced this issue Oct 30, 2021
Imported tags can be disabled (tkashkin#47)
Experimental flatpak changes (tkashkin#15)


Former-commit-id: cb4c384
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request UI
Projects
None yet
Development

No branches or pull requests

4 participants