Announcing Pegasus Frontend
-
UPDATE: The project now has a website: http://pegasus-frontend.org
ORIGINAL POST
I've started writing a new frontend from scratch, called Pegasus, to allow more customization and theming options, and make adding new features (eg. video previews) way more easy. It's currently in the alpha stage, here's how it looks right now:
Features
Open source and cross platform: runs on Linux, Windows, Mac, all Raspberries, Odroids and possibly on other devices. Hardware accelearted and works with or without X11. It may even run on phones and tablets too.
Full control over the UI: you can completely change everything that is on the screen, add or remove UI elements, menu screens, whatever. Want to make it look like Kodi? Steam? Any other launcher? No problem. You can even run your custom shader code.
ES2 config compatibility: Pegasus can use ES2's gamelist files, no need to invent a new set of tools
Features you'd expect: Gamepad support and config. Multiple aspect ratio support. Portable mode support. Live theme reload. Visible system informations. A clock in the corner.
Technical details
- Pegasus uses QML/QtQuick2 for the UI (example code), C++ for the backend. Yes, it's more complex than an ES2 theme (since you can do more), but (in my opinion) easier than AttractMode/Hyperspin.
- Source code will be available after I finish implementing some core features, like a proper main menu and such. It'll be most likely under GPLv3 license.
- I'm in GMT+2/CET
- Yes, it does work on the Pi 1
- The media files you can see on the video/screenshots are from the ES2 theme toolkit
UPDATES
RetroPie package
Pegasus is now available from the RetroPie setup menu, under the experimental packages. After the installation, you can either call
/opt/retropie/supplementary/pegasus-fe/pegasus-fe
manually, or edit/opt/retropie/configs/all/autostart.sh
to launch Pegasus on boot (instead of eg. ES2).Alternatively, you can also use this tool to install Pegasus and set it to start on boot (the frontend chooser itself calls the RetroPie install script).
Other platforms
Pegasus is cross-platfort and works on Windows and Android too. It auto-detects Steam games (with all the assets and metadata), and can be set to launch pretty much any other program or app.
Documentation and Themes
Documentation is now available at http://pegasus-frontend.org, including build guides and theme customization tutorials.
For questons about theme development and customization, you can also use this topic.
Screenshots of example themes :
Changelogs
Pegasus is now open source! (GitHub repo) Here is the list of weekly changelogs, some significant changes for that week, and also additional demo videos and screenshots:
Since latest stable
Alpha 13
- week 122 working on pi4
- week 121 korean tl, bugfixes, flatpak preparations
- week 120 macos gamepad improv
- week 119 windows gamepad improv
- week 118 gamepad improv
- week 117 launchbox improv (multifile, video)
- week 116 launchbox improvements, video and music support
- week 115 gamelist reloading, launchbox improvements
Alpha 12
- week 114 pi4 improvements
- week 113 initial launchbox support
- week 112 initial Pi4 support
- week 111 nothing
- week 110 bughunting, launchbox preparations, metadata editor
- week 109 nothing
- week 108 metadata editor release, bughunting
- week 107 metadata editor
- week 106 nothing
- week 105 usability and ui improvements
- week 104 bugfixes, gamepad and theme improvements
- week 103 low level bughunting
- week 102 launch improvs, mame improvements, small improvs
- week 101 android improvements, various small improvs and opti
- week 100 working directory fix, launching fixes
- week 99 launch cmd improvements per-game asset dirs
Alpha 11
- week 98: bugfixes, internal
- week 97: documentation, various updates
- week 96: multifile selector
- week 95: Qt update, Pi 3 build, documentation
- week 94: distro support changes
- week 93: nothing
- week 92: metadata format changes
- week 91: internal
- week 90: Android TV support, internal
- week 89: theme memory support
- week 88: bugfixes, holidays
- week 87: theme-side sorting and filtering
- week 86: internal changes, brazilian-portuguese translation
- week 85: internal changes
- week 84: key modifiers, Skraper
- week 83: bugfixes, metadata planning
Alpha 10
- week 82: Android metadata, translations
- week 81: holidays
- week 80: macOS release, Android app support
- week 79: bugfixes
- week 78: API updates, new theme
- week 77: changed asset searching, new theme
- week 75-76: custom controls and related API changes
- week 74: GOG support, file format updates
Alpha 9
- week 73: data source settings, documentation
- week 72: search dir settings, help screen
- week 69-71: minor fixes
- week 68: redesigned loading, new loading screen
- week 67: seamless launching, play time tracking
- week 66: optimizations, site update
Alpha 8
- week 65: frontend chooser
- week 64: lots of Android improvements + video
- week 63: internal changes
- week 62: jump-to-letter, custom filters
- week 61: nothing
- week 60: favorite support, game info UI redesign
- week 59: nothing
- week 58: French translation
- week 57: Android builds, portable mode
- week 56: better builds for Windows, Android testing
Alpha 7
- week 55: Spanish translation, bunch of fixes
- week 54: asset detection fix, Debian repo
- week 53: page up/down, icons, small details
- week 49-52: finalizing metadata format, converter site
Alpha 6
- week 48: 3D support, Stretch support, all kinds of fixes
- week 46-47: debugging stuff
- week 45: documentation release
- week 42, 43, 44: documentation
- week 41: configfile implementation, bugfixes, documentation
- week 39-40: winter holidays
- week 38: optimizations
- week 37: faster loading
Alpha 5
- week 36: config file propsal, alpha 5
- week 35: windows fixes, internal restructuring
- week 34: api stabilization
- week 33: new logo and loading screen
- week 32: Steam support, Qt update
- week 31: optimizations, ES2 fixes
- week 30: nothing
- week 29: bugfixes
Alpha 4
- week 28: ui improvements: settings menu redesign, alpha4
- week 27: ui improvements: error messages, confirmation dialogs
- week 26: minor improvements and optimizations
- week 25: nothing interesting
- week 24: gamepad improvements
- week 23: scripting improvements, various fixes
- week 22: favorites, filtering + video
- week 21: testing and maintenance
Alpha 3
- week 20: bugfixes, alpha3
- week 19: improved ES2 compatibility, audio support, faster loading, netflix theme (video, screenshot)
- week 18: external theme support, file logging
- week 17: external scripting support
- week 16: summer break
- week 15: scripting
- week 14: translations
- week 13: bugfixes, scrolling details, translations + video
Alpha 2
- week 12: alpha2 release
- week 11: gamepad config screen functional + video
- week 10: build guide, initial gamepad config screen
- week 9: build system improvements
- week 8: main menu, mouse support, reboot and shutdown + video
- week 7: open sourcing, automatic build testing
- week 6: gamepad support, optimizations, tweaking + screenshot + video
- week 5: more asset support, full ES2 metadata support
- week 4: announcement + video (this post)
-
@fluffypillow It looks interesting.
- Is Grid View the only option or can you do a normal gamelist like current ES?
- How does the grid handle different box sizes (eg: if you have SNES and Famicom boxes together)?
- How many <image> meta tags are there? Is it just <image>, <video> and <marquee> like current ES, or do you have them separated into <boxart>, <fanart>, <logo>, <screenshot>, etc?
Also, it's always nice to find people making use of the Toolkit.
-
From what I've heard, you can make the front end look any way you want. Add menus, add animation, full layering support. Shader support (like CRT-Pi and such). You should also be able to access Wifi setup and some other Raspberry Pi settings from the menus of the front end.
-
what about C.H.I.P. ?
It's only single core. -
@fluffypillow please, consider making an on-screen keyboard. ;-)
-
this looks and sounds, pretty promising!
really looking forward on how this will turn out, great going! -
Yay! C++
My native language :) -
@nitrogen_widget said in Announcing Pegasus Frontend:
what about C.H.I.P. ?
It's only single core.Same as pi 1/0
I'm sure it'll compile just fine as long as there are no pi specific dependencies which it sounds like there aren't. I can give it a try (when I get back from easter...)
This might be perfect for my chipstation portable :) -
- You can do whatever kind of layout you want - the layout is part of the theme too. Here's movie cover-like layout I've just hacked together: https://snag.gy/ma15Yk.jpg
- At the moment, you have to manually set the width/height of the cells, which you can fine tune by adding some logic; for example in the video I've set the number of columns to 5 when the current platform is NES. On the long term, I'd like to make the sizes of the cells dynamic, so you could just set a max width or height and it'd align properly.
- Currently front/back/spine/full 2D boxart, cartridge/disc image, logo, Steam grid image, fanart, multiple screenshots and videos. I can add more if you wish.
@nitrogen_widget it looks like both the regular and the pro CHIP uses Mali GPUs, like the Odroids, so yes, it should run fine and fast.
@meleu Ok!
-
I would love to to see the possibility to merge different systems into one. I have only a handful of Roms for Game Gear, Master System, Mega Drive and Sega32x and really wish I could merge them into just Sega. Since this seems so highly customizable, I would probably would use only one System and try to recreate a Kodi Skin.
-
what language will the Theming/Skinning/Layouts be in?
-
@fluffypillow said in Announcing Pegasus Frontend:
Pegasus uses QML/QtQuick2 for the UI
-
@EctoOne this sound more like something you would set in a gamelist file; I could add support for something like a
<systemGroup>
tag, where you'd put<system>
s you want to handle together. Or a special system attribute, if we want to maintain strict ES2 compatibility. -
@meleu said in Announcing Pegasus Frontend:
QML/QtQuick2
thank you, whats it like to learn?
sorry it's a little off topic,
i have very limited coding knoledge, can pick things up pretty easily tho, can anyone recommend any reading material?
thanks -
@fluffypillow nice one :-) Look forward to trying it.
-
@ABrugsch Thanks.
I got attractmode compiled on my chip but it was dog slow and i couldn't get sfml with accelleration to compile.emulationstation was a little laggy on chip.
was considering advmenu but if this works.... -
@InsecureSpike well QML itself can be used for a lot of things, so it can look very complex at first. It can even be used for writing mobile games or web browsers, but fortunately for theming you won't have get familiar with all the components. In my opinion, the somewhat harder part is setting up the scrollable/moving elements (like a grid or a cover list) the way you want. After that, styling the elements is easy.
I'm going to write some tutorials when it gets released, in the meantime you might find this guide useful.
-
@fluffypillow awesome, thank you
-
I'm really impressed. I've tried Attract Mode on my Pi, and it's kinda hard to use, at least for me, so I'm ready to see a new frontend.
I'm also excited to make some themes for this as well. :D
One thing though: Will it be an easy setup for the Pi? I don't want to go through the hassle of changing so much code and stuff. -
@itsnitro in practice, a Pi release should "just work". The only problem is that Debian/Raspbian currently uses an outdated, 3 years old version of Qt, from which a bunch of features and optimizations are missing. As such, I'll include the required Qt libs with the releases, and also host the build tools and libraries too if you want to build on the board or cross compile.
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.