Announcing Pegasus Frontend
-
Oh and Pegasus is now available from the RetroPie menu (experimental section)!
-
I have installed Pegasus on my Pi 2 from the RetroPie setup script. I am using a wired PS3 controller so have also installed xboxdrv.
In the file
/opt/retropie/configs/all/autostart/sh
, I have replaced the line to launch ES with the following:sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv --detach-kernel-driver --mimic-xpad -s >/dev/null & /opt/retropie/supplementary/pegasus-fe/pegasus-fe; sudo killall >/dev/null xboxdrv #auto
The PS3 controller now works fine in Pegasus but when I launch a rom in lr-mame2003, RetroArch tells me that it's using a Microsoft Xbox 360 pad, which is not configured.
How do I kill xboxdrv after I launch a game so that I can use the RetroArch config for PS3 controller?
I use xboxdrv for FPS ports and adding the line
sudo killall >/dev/null xboxdrv
kills xboxdrv after I exit the port so that I can use the PS3 controller in ES as configured. -
@dudleydes I think I can add support for running a custom script before launching/after finishing a game. I'm actually surprised I haven't done that yet.
-
@fluffypillow assuming people are launching via runcommand, it can launch a bash script before/after launching a game - https://retropie.org.uk/docs/Runcommand/#runcommand-onstart-and-runcommand-onend-scripts
-
I've ended up implementing it (for cross platform support and because why not), it's now available in the alpha. The relevant directories are
game-start
andgame-end
; you can add scripts just like for the other events.Note that unlike the runcommand method, the scripts Pegasus calls do not receive any additional information (at least, not at the moment).
-
This post is deleted! -
@fluffypillow Thanks for implementing this so quickly.
I have updated Pegasus and I am now running version
pegasus-frontend alpha3-36-ge792314
. I have removed; sudo killall >/dev/null xboxdrv
fromautostart.sh
and restarted my Pi.I created a script
kill-xboxdrv.sh
in thegame-start
folder with the following contents:#!/bin/bash sudo killall >/dev/null xboxdrv
Then I created a script
start-xboxdrv.sh
in thegame-end
folder with the following contents:#!/bin/bash sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv --detach-kernel-driver --mimic-xpad -s >/dev/null
I have made both scripts executable.
Now when I launch a rom in lr-mame2003, no text appears informing which controller is configured. Checking the processes running using
top
, xboxdrv is being killed and retroarch is running without it but it doesn't seem to be picking up the PS3 controller config. -
@dudleydes so the scripting part works correctly (kills xboxdrv before the game, restarts on end), but RetroArch does not recognize the PS controller? And everything works fine using ES2?
Hm, Pegasus should not "own" the devices or deny access to them... I wonder how RetroArch detects controllers... -
@fluffypillow I've had a further look at this and I believe the issue is with configuring xboxdrv rather the Pegasus frontend.
If I run
cat /proc/bus/input/devices
with the setup above, then the virtual Xbox 360 pad appears asjs0
with no sign of the PS3 controller.In my xboxdrv configurations for the Doom ports, I include the following flag
--evdev /dev/input/by-id/usb-Sony_PLAYSTATION_R_3_Controller-event-joystick
If I include this in
autostart.sh
, then the PS3 controller appears when I runcat /proc/bus/input/devices
asjs0
while the virtual Xbox 360 pad isjs1
. Of course, this means I can't use my PS3 controller in Pegasus though the controller is fine in lr-mame2003.I'll take a further look at the xboxdrv documentation to see if there is a way of making the virtual Xbox 360 pad
js0
while Pegasus is running and reverting tojs1
when a emulator is launched. -
@fluffypillow I have managed to get the PS3 controller working in Pegasus and in emulators using the Linux Joystick Mapper. I have used this utility previously to map the mouse to the left analogue stick and face buttons for use in DOSBox. It doesn't use jsX assignments but creates extra events for each mapping in
/dev/input/
.I will write up some documentation in the wiki on how I set this up but I would like to do some more testing before I do so.
I have mapped the arrow keys, Enter and Esc. Are there any other keystrokes in Pegasus I should be aware of?
While I am here, I am impressed with the flixnet theme. In the built-in theme, I get icons appearing in the RetroPie menu but when I switch to flixnet theme, they don't appear. Could you advise how I can get images to appear in this theme?
Also, if I add roms or add images/metadata, what is the best way for these to appear in Pegasus without rebooting? In ES2, I have the option to restart ES.
-
@dudleydes here's the current input scheme:
Keyboard Gamepad Effect arrows dpad navigation enter Cross select/ok escape Circle cancel/back ctrl Square filter menu (used in the main theme) A or Q L1 or L2 previous platform (used in the main theme) E or D R1 or R2 next platform (used in the main theme) For some operations multiple keys/buttons are provided to support multiple layouts and play styles.
when I switch to flixnet theme, they don't appear
That sounds like a bug, will take a look on it.
restart
A hotkey for reloading the theme was planned, but yeah a whole restart might be useful too.
-
Or maybe a "Rescan" option.
-
@dudleydes the Flixnet theme didn't show the RetroPie icons because it was set to only show the "grid icon" picture. I've just added support for the box art image, which should now show up instead if there's no grid icon. The result isn't as nice, but I guess it's better than having no image at all.
-
@fluffypillow What do you use to scrape the images for Pegasus? I'll have games with scraped art that show up as nothing.
-
@lilbud I've used Universal XML Scraper to get the box art images, then added the
-boxFront
suffix to the files (with the linux toolrename
) and moved them all into<romdir>/media
. Similarly did the same for the logo, screenshot and video files. The "grid icons" (wide images used by eg. Steam/Ice) are from consolegrid.com, for which I've manually wrote a simple scraper. I'm also using the files from https://github.com/mattrixk/es-toolkit for testing as well.If you have troubles loading some images, make sure they have the right suffix. If ES can show the box art of a game, it should also work in Pegasus; if not, that's likely a bug.
-
@fluffypillow One thing with ES though is it doesn't need a suffix to show an image. My gamelist has box art and videos in ES and they are the exact name as my rom. Just with a .png or .mp4 extension.
-
@fluffypillow said in Announcing Pegasus Frontend:
The "grid icons" (wide images used by eg. Steam/Ice) are from consolegrid.com
consolegrid.com is somewhat dead, try using retrogaming.cloud
-
@HurricaneFan yup, that's also supported; suffix-less
media/<romname>.png
/jpg
maps to the box front image, and video files to -- oh, looks like I've actually forgot that, thanks. ES loads whatever it sees in the image/video tag; Pegasus too can read the same XML files, which is why if an asset works in ES, it should work in Pegasus as well.@lilbud indeed it is, but its interface was easier to work with and I was lazy.
-
@fluffypillow Thanks for the info. I have updated the mapper file so that I can switch between themes and navigate them with my controller.
I have also updated the flixnet theme and the RetroPie menu icons now appear. I used ImageMagick to resize the icons to a 16:9 aspect ratio. @HurricaneFan I can confirm that gamelists and boxart from ES2 work fine without any further work.
On exiting Pegasus, there is a segmentation fault and the error
evdevkeyboard: Failed to query led states
in the lastrun.log. I don't know if this is an issue.I would like to play around with themes as I would prefer to have box art in the flixnet theme rather than grid icons. Do you have any links that may be useful to get to grips with QML?
Finally what does Live Theme Reload refer to? And how do I get the clock in the corner?
-
@dudleydes "On exiting Pegasus, there is a segmentation fault": yeah it's quite annoying, but luckily not critical. Some underlying component seems to crash at exit sometimes; I'd suspect one of the GStreamer plugins. I'll see if I can find out what fails exactly.
Personally I've found most QML guides somewhat lacking/incomplete (at least if you wish to build a full program from the ground up), but the language isn't hard and you can get the hang of it after a while. There's a short tutorial here and a longer one here (mainly chapters 4-6), and the QML documentation is useful as well when you have to look up a component. In practice you won't need to know that much to create a simple theme, but you can also make it very fancy if you wish.
Live Theme Reload
Well I've planned to add a function to reload the current theme on a key press (eg. F5), but I haven't implemented it yet.
And how do I get the clock in the corner?
Heh yeah that's still missing, I'll start experimenting with it the weekend.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.