Closed vanfanel closed 1 year ago
I don't think we use the full Qt6 suite, but no idea how much lighter that is for Linux side. Technically you can build without Qt as they aren't tightly knit GUI and emulation code.
Although I suspect nobody on the team will want to do this, so it might be a "PR's welcome" kinda deal, you can run the emulator with the -nogui
parameter to start the emulator with a minimal amount of stuff and no interface, but of course this won't help build times/executable size.
That said, we need some sort of interface, as the output needs to be sent to a window of some sort, and right now that window is Qt, so if somebody was to implement your idea, they would need some sort of replacement window which worked cross platform (I wouldn't want to have to do WinAPI and whatever linux has), but aside from that, the emulator and GUI are technically separate, as part of the work Stenzek did cutting out WX.
Right now we have the GS runner which takes the compiled PCSX2.lib (which is just the emulator) and runs that surfaceless in the background, kind of as an example of how separated things are.
Ah, so you use QT6 for window management.
Why not use SDL2 instead? That's OS-gnostic too.
SDL_CreateWindow()
and there you go, you can create an OpenGL or Vulkan context window with the same function, too.
And since SDL2 is already a dependency, there wouldn't be any bloat associated.
Because we have everything inside the Qt window :P we don't want a separate window for SDL. I guess that could be done for your Qt-less idea.
Right. I guess it would be SDL2 window + commandline interface only.
I am not familiar with PCSX2 code at all. It would imply adding a whole new backend, right? I mean, not easily done with simple ifdefs around Window creation...
you would need to assemble a frontend project to attach to it, like right now pcsx2 compiles to a lib (on the windows side, I have no idea about linux) and the qt interface is compiled separately, I presume we have some way of linking them together, but I don't know the details, it's not something I've dove in to, but you would need to provide a basic SDL frontend to replace that, I would guess, plus a way to pass commandline parameters, so the user can load roms etc.
Sounds pretty much above my head. Would a payment be accepted for the needed work? Like 1000 Euros, for example.
Also, no need for any kind of menu on SDL2, only the emulation window.
I don't do work for money, the moment you do, people expect support, to get their monies worth. I do this for a hobby, I don't want to take on monetary responsibility.
I perfectly understand what you mean. But I am not expecting any responsibility at all, I don't mind if it takes a month or a year, and I don't expect anything special. I don't work for money either, so I perfectly get your point.
What interface would it use then? How would you configure controllers? Or change any settings? Editing inis by hand is the opposite of useable.
I did this ages ago - it just opened the big picture UI. Even ran directly on the TTY and didn't need X. But it's pointless, because even so, it was still missing critical features like achievements login, automatic updates, relative mouse mode, etc.
If we shipped that, users would use it and complain that things didn't work. Not to mention another thing that we have to maintain and keep working, when none of the team use it. Same reason I stopped supporting duckstation-nogui.
Qt is tiny, really. Our AppImages are less than 50MB. If you insist on building yourself, when we already provide self contained builds, any issues with Qt are on you, not us.
Description
Hi,
I usually build my own lightweight GNU/Linux systems based on Debian, modern MESA, modern Wayland, ALSA and SDL2.
QT6 is a pretty heavy dependency (having many dependencies itself) I would like to avoid. So, is it possible or would it possible to build a commandline-only PCSX2 on GNU/Linux not depending on QT6?
Reason
-Simpler and faster building process -Better suited for lightweight systems
Examples
For example, adding a simple
-D_USE_QT=OFF
cmake flag would be enough.