Closed enzzodani closed 8 months ago
Hi, This should be possible in theory. But I've no idea how the metadata looks like for these emulators as i don't have emulated games (only have steam library). But i can try to implement it if someone can help me with the metadata.
Yeah i'm not sure, i use emulators and with the amount of configuration vs just something like steam where it's almost always the same for everyone, that's pretty difficult to make something work for everyone. If someone makes something, i wouldn't be apposed to helping out though.
i was thinking the same, maybe add lutris games to gamelaunch.sh, they have well defined directory structure
i was thinking the same, maybe add lutris games to gamelaunch.sh, they have well defined directory structure
I had forgotten about lutris lol, really, it might be more interesting based on lutris, I'll look at the scripts too, but I don't know much about shell yet unfortunately
Hey i've tried to write my script (with the help of ai) , that can pull lutris games to display and run them, this is working but i can't seem to find the way to integrate it using existing steam launch script, cause both of the steam and lutirs seems to provide a different method of launching, so it's quite complex to analyze the case whether the app user selected is from steam or lutris.(it's quite hard to explain unless you try building your own solution)
One solution which i found was to use only lutris for displaying games, now you might think how are we gonna see steam games? it's simple lutris already adds the steam and other games library like retro-arch, gog, wine, etc into it's library. so that we can display lutris games and it will automatically load the games from other platform respectively.
Here is the script which does the same. (if anyone is interested then you can replace gamelaunch.sh
with this)
#!/bin/sh
# Retrieve the list of games from Lutris in JSON format
GAMES=$(lutris -j -l)
# Extract and display game names using rofi
CHOICE=$(echo "$GAMES" | jq -r '.[]["name"]' | rofi -dmenu -p Lutris)
# Check if a game was selected
if [ -n "$CHOICE" ]; then
# Extract the slug of the selected game
SLUG=$(echo "$GAMES" | jq -r --arg choice "$CHOICE" '.[] | select(.name == $choice).slug')
# Open the selected game using Lutris
exec xdg-open "lutris:rungame/$SLUG"
fi
note that im a noob in bash and i have still not figured out a way to gey images, ik they are stored in .local/share/lutris/coverart/{slug}.jpg Im still working on images but the above script may help anyone
Hey i've tried to write my script (with the help of ai) , that can pull lutris games to display and run them, this is working but i can't seem to find the way to integrate it using existing steam launch script, cause both of the steam and lutirs seems to provide a different method of launching, so it's quite complex to analyze the case whether the app user selected is from steam or lutris.(it's quite hard to explain unless you try building your own solution)
One solution which i found was to use only lutris for displaying games, now you might think how are we gonna see steam games? it's simple lutris already adds the steam and other games library like retro-arch, gog, wine, etc into it's library. so that we can display lutris games and it will automatically load the games from other platform respectively.
Here is the script which does the same. (if anyone is interested then you can replace
gamelaunch.sh
with this)#!/bin/sh # Retrieve the list of games from Lutris in JSON format GAMES=$(lutris -j -l) # Extract and display game names using rofi CHOICE=$(echo "$GAMES" | jq -r '.[]["name"]' | rofi -dmenu -p Lutris) # Check if a game was selected if [ -n "$CHOICE" ]; then # Extract the slug of the selected game SLUG=$(echo "$GAMES" | jq -r --arg choice "$CHOICE" '.[] | select(.name == $choice).slug') # Open the selected game using Lutris exec xdg-open "lutris:rungame/$SLUG" fi
note that im a noob in bash and i have still not figured out a way to gey images, ik they are stored in .local/share/lutris/coverart/{slug}.jpg Im still working on images but the above script may help anyone
It worked very well on mine, however only the game icons didn't appear, but it's amazing, man, congratulations, I found it really cool. I think with time it's possible to refine it even more, but you were incredible, I'm using it until an update comes out that integrates this into the code.
Sounds cool!
however only the game icons didn't appear,
I think I can help you guys with this. Can you recommend some easy/lightweight to install games using lutris ? Also, I think we can integrate it with the gamelaunch. or maybe a separe lutris launcher
Using lutris lib
you can add your steam games to lutris library too, for lightweight games try supertuxkart, or any retro games
https://gist.github.com/kRHYME7/204c5c6aa36be4937f14376bd67d0822
@Enigma1309 Thanks I don't usually play as I am using a small laptop (Now I am starting to play emulator games)😁
supertuxkart, or any retro games
I will.
Can you try this version? This from your script I just added another entry
https://gist.github.com/kRHYME7/204c5c6aa36be4937f14376bd67d0822
This works now on my machine.
i've seen an problem images are not stored in cache dir, i may have cleaned them , permanent images are actually present in .local/share/lutris/coverart/slug.jpg edit:- i messed up with directory
i've seen an problem images are not stored in cache dir, i may have cleaned them , permanent images are actually present in .local/share/lutris/slug.jpg
does the script work when you change this icon_path="${HOME}/.cache/lutris/coverart"
to the .local path?
I find it strange too as mine is still on cache and no images on .local. This is a fresh install of lutris and 0 knowledge about gaming.
Look the .local do not have covers.
I installed lutris through the pacman
i've also installed using yay,
try to install any other tools in lutris like libretro and see
in .local/share/lutris/coverart/slug.jpg edit:- i messed up with directory
I see!
I installed apps without an account, hence it is stores inside ~/.cache. I tried reinstalling lutris on 2 other machine then logged in, JPGs are now in .local. What do you think should we merge this into the gamelauncher or make a separate script ?
I updated the gist
Preview for mode 5
adding in gamelauncher.sh would be a good choice but at the same time what if user didn't have lutris? maybe we have to add an check whether the user have lutris installed.
EDIT:- What if we made a gamelauncher.sh script standalone and transfer it's current content to launchsteamgames.sh and for lutris make a script launchlutrisgames.sh and let the gameluncher.sh to choose the preferred script using if/else to see wheter user have any of those...
We can definitely merge it. Lutris/Steam executions relatively needs few lines
My main concern for now is the rofi gamelauncher.sh's scaling is not dynamic.
Example mode 5 here looks like this
We need to fix it first at least scale it to the monitor
Like this
I'll be drafting something, I hope you guys can test it.
i've fixed my scaling by editing a line in the config, although this isn't a big concern since the default launch argument is 1 by default. Although if you are fixing it then i would suggest to not make it cover the whole screen instead do something like this
it will look better
Can you share what config you changed ? Mine shows a duplicate picture as my monitor is 2:3 (preview shows the default image)
What I did with mine is convert the image into my screen monitor size/scale.
// Config //
configuration {
modi: "drun";
show-icons: true;
drun-display-format: "{name}";
font: "JetBrainsMono Nerd Font 8";
}
@theme "~/.config/rofi/themes/theme.rasi"
// Main //
window {
enabled: true;
fullscreen: false;
width: 1500px; // 2155 //
height: 590px; // 850 //
transparency: "real";
cursor: "default";
spacing: 0px;
padding: 0px;
border: 0px;
border-radius: 0px;
border-color: transparent;
background-image: url("~/.config/rofi/assets/steamdeck_holographic.png", width);
background-color: transparent;
}
mainbox {
enabled: true;
children: [ "listview" ];
background-color: transparent;
orientation: horizontal;
spacing: 0px;
padding: 42px 320px 50px 330px;
}
// Lists //
listview {
enabled: true;
columns: 5;
rows: 2;
flow: horizontal;
spacing: 25px;
padding: 20px 50px 20px 50px;
cycle: true;
dynamic: true;
scrollbar: false;
reverse: true;
fixed-height: false;
fixed-columns: false;
cursor: "default";
background-color: @main-bg;
text-color: @main-fg;
border-radius: 8px;
}
// Elements //
element {
enabled: true;
orientation: vertical;
spacing: 0px;
padding: 5px;
border-radius: 0px;
cursor: pointer;
background-color: transparent;
text-color: @main-fg;
}
@media(max-aspect-ratio: 1.8) {
element {
orientation: horizontal;
}
}
element selected.normal {
background-color: @select-bg;
text-color: @select-fg;
}
element-icon {
size: 300px;
spacing: 0px;
padding: 0px;
cursor: inherit;
border-radius: 0px;
background-color: transparent;
text-color: inherit;
}
element-text {
vertical-align: 0.5;
horizontal-align: 0.5;
spacing: 0px;
padding: 10px;
cursor: inherit;
background-color: transparent;
text-color: inherit;
}
Hey, it's merged now. Closing this as complete.
Feature Request
Description
I don't know if this is already possible, but i think it'll be great if the gamelaucher.sh add the emulator library. Is this possible?
Use Case
This will unified the games in one simple script, all the games, citra, xmu, dolphin, steam.
Proposed Solution
I don't know much of bash and scripts, but if anyone knows anything about this feature, it'll be such a nice feature.