struceOS theme for Pegasus Frontend
A simple theme for easy navigation.
If you have any issues, please open a ticket or let me know on discord
Version 1.5.0 Updates
- Moved panel items to new window
- Added sort/filter menu
- Added navigation for controllers/kb to all menus
- Removed old code
- Finished rewrite to simplify for now
To come in future updates
- Add button hints
- Add genre filters
- Add color options
Metadata Generation and Asset Scraping
I recommend using muldjord’s skyscraper for metadata generation. Simply follow the directions for your installation type. Example commands below (tested in PowerShell on Windows 11):
skyscraper commands
I set up my emulators for pegasus as such:
/Emulators
/Dreamcast
/Gamecube
/Genesis
/N64
/PS2
/_games
(contains all roms)
/_media
(will store assets dowloaded by skyscraper)
/_emulator
(usually named the same as the emulator eg: _PCSX2)
/Switch
config.ini and struceos-artwork.xml can be found in skyscraper-config or can be created manually
Add to config.ini:
[screenscraper]
videos="true"
[pegasus]
videos="true"
struceos-artwork.xml:
<?xml version="1.0" encoding="UTF-8"?>
<artwork>
<output type="screenshot" resource="screenshot"/>
<output type="wheel" resource="wheel"/>
</artwork>
Commands:
Pull data:
skyscraper -p {platform} -s {source} -i {path/to/roms} --region {eu, us, jp, wor} --refresh
skyscraper -p ps2 -s screenscraper -i f:\Games\Emulators\PS2\_games --region us --refresh
Output metadata.pegasus.txt:
skyscraper -p {platform} -f pegasus -a {path/to/struceos-artwork.xml} -e "{path/to/emulator} {file.path}" -i {path/to/roms} -g {output/path/metadata.pegasus.txt} -o {output/path/assets}
skyscraper -p ps2 -f pegasus -a "[REDACTED]\Local\pegasus-frontend\themes\struceOS-Pegasus-Theme-main\skyscraper-config\struceos-artwork.xml" -e "_PCSX2\pcsx2-qt.exe {file.path}" -i f:\Games\Emulators\PS2\_games -g f:\Games\Emulators\PS2 -o f:\Games\Emulators\PS2\_media
These commands will generate a metadata.pegasus.txt file that will have the necessary assets for the theme if they are available through screenscraper.fr. Otherwise placeholders are used.
A full set of assets for manual setup would be (multiples listed in order of priority):
- assets.screenshots/assets.screenshot/assets.background/assets.banner/assets.boxFront – used for backgrounds
- assets.logo/assets.wheel – used for the logo
- assets.video – used for the video
More info on Pegasus’ handling of assets
Controls
- Keyboard/Mouse
- Navigate: WASD / Arrow Keys / Mouse click
- Prev/Next Collection: Q / E / – / =
- Quick collection select: 1 – 9
- Open Info Panel: I
- Open Sort and Filters: F
- Select: Enter / Space
- Pegasus Menu: Esc
- Gamepad
- Navigate: Joystick / D-Pad
- Previous/Next collection: LB / RB
- Open Info Panel: X (Xbox) / ▢ (PS)
- Open Sort and Filters: Y (Xbox) / △ (PS)
- Select: A (Xbox) / X (PS)
- Pegasus Menu: B (Xbox) / ⭘
Settings
The most useful settings are now in a settings panel within the theme. The rest can be found in template/Settings.qml. The default settings are below for reference:
Default Settings
//fonts
property string fontFamilyRegular:
"assets/fonts/Open Sans/OpenSans-Regular.ttf"
property string fontFamilyBold:
"assets/fonts/Open Sans/OpenSans-Bold.ttf"
//ui
property int hover_speed: 100
property string headerSize: api.memory.get("struceOS_ui_headerSize") || "m"
property bool twelvehour:
api.memory.get("struceOS_ui_twelvehour") === false ?
false : true
//audio
//video
property bool videoMute:
api.memory.get("struceOS_video_videoMute") === false ?
false : true
property real videoVolume: api.memory.get("struceOS_video_volume") || 0.40
//ui
property bool uiMute:
api.memory.get("struceOS_ui_Mute") === false ?
false : true
property real uiVolume: api.memory.get("struceOS_ui_volume") || 0.60
//game_layout
property int columns: api.memory.get("struceOS_gameLayout_columns") || 5
property bool lastPlayed:
api.memory.get("struceOS_gameLayout_lastPlayed") === false ?
false : true
property bool allGames:
api.memory.get("struceOS_gameLayout_allGames") === false ?
false : true
property bool showThumbs:
api.memory.get("struceOS_gameLayout_thumbnails") === false ?
false : true
//background
property bool bgOverlayOn:
api.memory.get("struceOS_background_overlayOn") === false ?
false : true
property real bgOverlayOpacity: api.memory.get("struceOS_background_overlayOpacity") || 0.75
property string bgOverlaySource: "0002.png"
//devtools
property bool enableDevTools:
api.memory.get("struceOS_dev_enableDevTools") === false ?
false : true
property real consoleLogBackground: api.memory.get("struceOS_dev_log_opacity") || 0.5
property string version: "1.5.0"
property string name: "struceOS"
property bool working: false
//Colors
property var theme: {
"accent": "#011936",
"accent_light": "#465362",
"slider": "#FE3734",
"slider_base": "#F1C8C7",
"launch": "#1E824C",
"launch_hover": "#1ba39c",
"border": addAlphaToHex(0.6, "#ffffff"),
"text": "#ffffff",
"text_invert": "#000000",
"black": "#000000",
"white": "#ffffff",
"t": "transparent"
}
Thank yous
Thank you to VGmove (EasyLaunch) and PlayingKarrde (clearOS). I used your themes to build this theme.
Installation
Download the theme and place it in your Pegasus theme directory.
Download
Download struceOS-Pegasus-Theme-1.5.0.zip from last releases.
Changelogs
1.5.0
1. Moved panel items to new window
2. Added sort/filter menu
3. Added navigation for controllers/kb to all menus
4. Removed old code
5. Finished rewrite to simplify for now
1.4.1 – Unreleased
1. Moved sort/filter to top of gameView
2. Changed thumbnails to gameOS style
3. Continue rewrite to simplify
1.4.0
1. Start of rewrite to simplify logic and improve modularity
2. Added a clock
3. Redesigned collection list
1.3.2
1. Added UI Mute setting
2. Updated getAsset() function to getAssets()
3. Reworked asset usage to better fit Skyscraper output
4. Changed Search to match any title containing the search term
1.3.1
1. Added favorite toggle to gameView
2. Fixed favorite icon placement in gameView
3. Added text labels to games with default banner image
4. Changed game count to update with filters
5. Updated gameView controls to use built in functions
1.3.0
1. Updated collection logos
2. Simplified toggling panels
3. Fixed background images when searching
4. Changed audio files for UI sounds
5. Updated header layout and functions
6. Updated info panel layout and functions
1.2.1
1. Added All Games to the collection dropdown menu
2. Collection dropdown resizes to list length if shorter than the full window
3. Removed clog statements from testing
1.2.0
1. Added game count to collection title
2. Added collection dropdown menu
1.1.0
1. Split theme.qml into separate files for easier editing
2. Moved common functions to js
2. Updated header logic
3. Added Search functionality
4. Added an in app Settings panel
5. Added an All Games collection
6. Fixed GoG and Steam collections
1.0.1
1. Fixed audio discrepancies in button presses
2. Fixed unused settings properties
3. Added additional settings to the customizable settings
1.0.0
1. Initial release.