srevinsaju / guiscrcpy

A full fledged GUI integration for the award winning open-source android screen mirroring system -- scrcpy located on https://github.com/genymobile/scrcpy/ by @rom1v
https://guiscrcpy.srev.in
GNU General Public License v3.0
2.86k stars 216 forks source link

[SUGGESTIONS] Keep settings & snap toolbars to window & Create .desktop files #112

Closed Thyrador closed 4 years ago

Thyrador commented 4 years ago

1. After closing the gui, for some reason the settings won't stay. If I choose to change the bitrate, disable/enable toolbars or pass various arguments, it all will be lost after I restart the application.

2. When having multiple scrcpy windows open, it gets hard to determine which toolbar is used for which window. If possible, they should get snapped to the scrcpy-window (will switching orientations be okay with it?)

3. Creating *.desktop-files from the settings: so you can easily create shortcuts to devices you frequently use. This would be very convenient.

srevinsaju commented 4 years ago

@Thyrador can you check if your configuration is saved with guiscrcpy from the pip package or the AppImage?

  1. After closing the gui, for some reason the settings won't stay. If I choose to change the bitrate, disable/enable toolbars or pass various arguments, it all will be lost after I restart the application.

this is possibly because you are running the snap. The pip package has all support for configuration management and saving them and restoring them on the next start.

  1. When having multiple scrcpy windows open, it gets hard to determine which toolbar is used for which window. If possible, they should get snapped to the scrcpy-window (will switching orientations be okay with it?)

I am not sure if I can snap a window to scrcpy's window. The code for scrcpy and guiscrcpy are completely different. scrcpy is written in c++, guiscrcpy is written in Python. guiscrcpy was written so that I do not have to interfere with scrcpy's SDL window. If you want to use a snapped version, but might have a slower latency, then you would want to use @barry-ran 's QtScrcpy. guiscrcpy and scrcpy are running independant of each other; regardless they are in the same package. The aim of guiscrcpy was to not interfere with scrcpy's amazing speed.

  1. Creating *.desktop-files from the settings: so you can easily create shortcuts to devices you frequently use.

Cool feature. Can you create another issue for this (3) so that I can reference it separately. I am interested in working on that :)

Thyrador commented 4 years ago

@Thyrador can you check if your configuration is saved with guiscrcpy from the pip package or the AppImage?

Neither of them will remember the settings.

I am not sure if I can snap a window to scrcpy's window. The code for scrcpy and guiscrcpy are completely different. scrcpy is written in c++, guiscrcpy is written in Python. guiscrcpy was written so that I do not have to interfere with scrcpy's SDL window. If you want to use a snapped version, but might have a slower latency, then you would want to use @barry-ran 's QtScrcpy. guiscrcpy and scrcpy are running independant of each other; regardless they are in the same package. The aim of guiscrcpy was to not interfere with scrcpy's amazing speed.

Had looked into that and it's all in chinese. The only thing I am good at in chinese is loving the food :D But I had something similar in mind. If it is not possible, I'm fine with it.

srevinsaju commented 4 years ago

Neither of them will remember the settings. That's odd. Something's gone wrong

Can you check if you have

~/.config
~/.config/guiscrcpy
~/.config/guiscrcpy/guiscrcpy.json

And then, can you copy paste the configuration json?

Had looked into that and it's all in chinese. The only thing I am good at in chinese is loving the food :D

Similar opinions :P

But I had something similar in mind. If it is not possible, I'm fine with it.

I will try

Thyrador commented 4 years ago

guiscrcpy.json:

{
    "adb": "/usr/bin/adb",
    "bitrate": 8000,
    "cmx": "",
    "dimension": null,
    "dispRO": true,
    "extra": "",
    "fullscreen": false,
    "paths": [
        "bin",
        "/usr/bin",
        "~/.local/bin",
        "~/bin",
        "/usr/local/bin"
    ],
    "scrcpy": "/usr/bin/scrcpy",
    "scrcpy-server": null,
    "swtouches": false
}

Not sure if it got installed with snap, AppImage or pip. but it's definitely there and I have access to it

srevinsaju commented 4 years ago

@Thyrador can you change the bitrate, execute start scrcpy and then close guiscrcpy; send me the copy of the json, and then check if the settings are updated?

Not sure if it got installed with snap, AppImage or pip. but it's definitely there and I have access to it

All of them should respect the same

Thyrador commented 4 years ago
{
    "adb": "/usr/bin/adb",
    "bitrate": 8000,
    "cmx": "",
    "dimension": null,
    "dispRO": true,
    "extra": "",
    "fullscreen": false,
    "paths": [
        "bin",
        "/usr/bin",
        "~/.local/bin",
        "~/bin",
        "/usr/local/bin"
    ],
    "scrcpy": "/usr/bin/scrcpy",
    "scrcpy-server": null,
    "swtouches": false
}

Still the same, not getting updated.

srevinsaju commented 4 years ago

Can you give me the output of

which guiscrcpy
Thyrador commented 4 years ago

/snap/bin/guiscrcpy

srevinsaju commented 4 years ago

ok, now it makes sense

python3 -m guiscrcpy

Please retry with this https://github.com/srevinsaju/guiscrcpy/issues/112#issuecomment-622488817 and then let me know of the output changed


To make it work on the snap, you have to connect the home socket, which I didn't mention in the docs (See #60)

sudo snap connect guiscrcpy:home
Thyrador commented 4 years ago

After deleting all of the guiscrcpy related files (and removing snap/python module) it somehow works. But only for the bitrate, it seems. Still won't remember which toolbars I don't want to show.

srevinsaju commented 4 years ago

Yes, the toolbars are all enabled by default. If you prefer, I can save that also in v3.10?

Thyrador commented 4 years ago

That would be great. Also which custom command-line arguments you provided in the gui (if not already there). Thank you :)

srevinsaju commented 4 years ago

I guess custom command line args are already there. You can open KSysGuard on Plasma, and then type scrcpy in search box and then hover over scrcpy to see the full tooltip. Check if your commands are passed

Thyrador commented 4 years ago

Yes, you're right. Command-line options will be saved. Didn't checked that. Seem good so far: image

srevinsaju commented 4 years ago

Great! Looks good. thanks for testing guiscrcpy

Thyrador commented 4 years ago

No problem. Let me know if you need something else tested. and thank you for your kind and quick support :) Really appreciate it.

EDIT: feel free to close the issue, if you want.

srevinsaju commented 4 years ago

I will close it after I update the snap documentation

srevinsaju commented 4 years ago

@Thyrador If you would like to have some more features, please let me know, It would help to make guiscrcpy better :smile:

Thyrador commented 4 years ago

Well, yeah. There are 2 I am still thinking of. But not sure if possible or too much to ask. I wondered if it would be possible to have to have some sort of monitoring service (as tray notification) so you can check if your device(s) are still connected (device name, ip/usb, status color) -> really helpful with multiple devices if you can't grab them the moment you want to check.

Which ultimately results in some sort of real monitoring: having a ui where you can see which clients are available and quickly select and connect to them. Similar to how VMWare or Veyon works. Look at this example: Veyon preview

But that would be way too much to ask, I guess. I'm no ordinary user, as you can guess :P

barry-ran commented 4 years ago

@Thyrador can you check if your configuration is saved with guiscrcpy from the pip package or the AppImage?

Neither of them will remember the settings.

I am not sure if I can snap a window to scrcpy's window. The code for scrcpy and guiscrcpy are completely different. scrcpy is written in c++, guiscrcpy is written in Python. guiscrcpy was written so that I do not have to interfere with scrcpy's SDL window. If you want to use a snapped version, but might have a slower latency, then you would want to use @barry-ran 's QtScrcpy. guiscrcpy and scrcpy are running independant of each other; regardless they are in the same package. The aim of guiscrcpy was to not interfere with scrcpy's amazing speed.

Had looked into that and it's all in chinese. The only thing I am good at in chinese is loving the food :D But I had something similar in mind. If it is not possible, I'm fine with it.

What does all Chinese mean? Should readme and software interface be in English? I am also looking for foreign friends to help translate other documents, is anyone willing to help?

srevinsaju commented 4 years ago

@barry-ran I guess you should have UI and Readme in English. Your project is cool; I will try to translate it to English.

barry-ran commented 4 years ago

@barry-ran I guess you should have UI and Readme in English. Your project is cool; I will try to translate it to English.

That's so grateful

Thyrador commented 4 years ago

What does all Chinese mean? Should readme and software interface be in English? I am also looking for foreign friends to help translate other documents, is anyone willing to help?

Hey @barry-ran . It just meant that your UI and documentation is in Chinese, so for people outside of your country it is not possible to understand it. If you will it open to the rest of the world is up to you, but it wouldn't be just me being grateful about it :) This requires the software to actually be at least in English. I'd be glad to help, but I don't understand Chinese at all, unfortunately. But if you or @srevinsaju get it translated to English, I'd be willing to help and translate it into German, if you want.

srevinsaju commented 4 years ago

@Thyrador, In case you missed this: https://github.com/srevinsaju/guiscrcpy/issues/113#issuecomment-623262060

barry-ran commented 4 years ago

What does all Chinese mean? Should readme and software interface be in English? I am also looking for foreign friends to help translate other documents, is anyone willing to help?

Hey @barry-ran . It just meant that your UI and documentation is in Chinese, so for people outside of your country it is not possible to understand it. If you will it open to the rest of the world is up to you, but it wouldn't be just me being grateful about it :) This requires the software to actually be at least in English. I'd be glad to help, but I don't understand Chinese at all, unfortunately. But if you or @srevinsaju get it translated to English, I'd be willing to help and translate it into German, if you want.

Hey @Thyrador, QtScrcpy currently supports Chinese and English. English should be displayed on non-Chinese systems. Otherwise, this is a bug. Is the software ui in Chinese on your system?

srevinsaju commented 4 years ago

@barry-ran I wanted to inform you; The #Build link on your Readme is broken

Thyrador commented 4 years ago

I didn't @srevinsaju but thanks for reminding :D

Let me check again, @barry-ran

barry-ran commented 4 years ago

@barry-ran I wanted to inform you; The #Build link on your Readme is broken

Thanks a lot, there is indeed this problem, I will fix it

Thyrador commented 4 years ago

@barry-ran also detailed instructions would be good since and it is easy to compile does not tell how to build it :P

Tried meson and make, didn't get it to build.

barry-ran commented 4 years ago

@barry-ran also detailed instructions would be good since and it is easy to compile does not tell how to build it :P

Tried meson and make, didn't get it to build.

@Thyrador Are we seeing the same document? image

Thyrador commented 4 years ago

@barry-ran Yes. But I struggle at 4. Compile and run

I'm not a Qt-developer, so I don't really know how to compile it. That's where instructions (like terminal commands you need to enter) would be helpful.

barry-ran commented 4 years ago

@barry-ran Yes. But I struggle at 4. Compile and run

I'm not a Qt-developer, so I don't really know how to compile it. That's where instructions (like terminal commands you need to enter) would be helpful.

@Thyrador You may not need to compile QtScrcpy yourself, you can download the executable file directly in Release. If you are interested in compilation, you can refer to github action

Thyrador commented 4 years ago

I should have stated that I am running linux here :D I'm on Kubuntu 20.04.

barry-ran commented 4 years ago

I should have stated that I am running linux here :D I'm on Kubuntu 20.04.

Sorry, it's really not very good to compile

Thyrador commented 4 years ago

So you advise to not use it on Ubuntu?

srevinsaju commented 4 years ago

@Thyrador, what barry might tell is that; Kubuntu has many other dependencies. A software you compile on Ubuntu is easy to run on any manylinux2014 platform. Ubuntu has the minimum dependencies; any extra dependency will require you to install them and compile them. Kubuntu based on Qt includes most of the Qt Dependency; which might create a conflict between QtScrcpy's and Kubuntu's libraries; This is a possible reason which I concur / to my knowledge.

Linux libraries are based on LDD library definition and symlinks. Even if you have a binary of the QtScrcpy module, the compiled executable might not find some libraries on your system, and later fail. This is the basis of AppImages / snap package. This can later cause segmentation faults and sigint 's; It is not possible to compile and patch all the libraries into a single linux binary; because this might cause something in C++ called stack-smashing

Thyrador commented 4 years ago

@srevinsaju thanks for clarification. Since I am not a Qt developer I am not aware of these things but it makes sense. Maybe @barry-ran can provide at least a AppImage or Snap too?

srevinsaju commented 4 years ago

Yes @Thyrador , many of the users are also not familiar with Qt on C++/Python; this is the possible reason I had to put a lot of effort into packaging guiscrcpy and making it available for other users and for a wider distribution.

See README.md for more information on the different modes of packaging / distribution

Thyrador commented 4 years ago

Wish I'd started with linux development instead of windows 10 years ago so I would understand more of it as I do now.

srevinsaju commented 4 years ago

@Thyrador Same here; I started with windows too :wink:

Thyrador commented 4 years ago

Finally someone who understands why I hate windows so much, right? :D How long did it take for you to get where you are now? Any suggestions where to start and what I need? I mean I learned C# mostly by myself, but that took me quite a while (I made lots of mistakes but learned from them). Even though I like learning by myself, it would be convenient to have a good starting point and at least know what to do and to avoid.

srevinsaju commented 4 years ago

@Thyrador

Finally someone who understands why I hate windows so much, right? :D

Yes; I feel quite relieved; and indeed happy that I started using Linux at least now (I started only a year ago)

How long did it take for you to get where you are now? Any suggestions where to start and what I need?

This project has been started because of some personal necessity. I had to view my online classes on an android phone; because I didn't have an ethernet connection; So I developed guiscrcpy when I was in 10th grade (If I concur); And ever since then I have been working on this project; I started working on it from Windows (before, in my 10th grade); Now after one and a half year; I am on Linux; happier than ever (lol); Maybe Windows is not built for me; Windows is built for people with patience

I mean I learned C# mostly by myself, but that took me quite a while (I made lots of mistakes but learned from them).

Wow! Thats cool. I do not know C#; I tried learning that; But I did not understand pointers and all. If you are interested in sharing your C# knowledge to guiscrcpy; then we could make the toolkit buttons work faster;

Even though I like learning by myself, it would be convenient to have a good starting point and at least know what to do and to avoid.

Yes; I concur. I have the same opinion. The best way to start. is to get involved. To start from knowing nothing; to becoming a project board developer is to start from documentation. If you are interested in helping guiscrcpy's development; I would suggest you to look into #60; I am very poor in documentation; or help guiscrcpy to be available in another language; While doing the above; you will naturally learn the language and the project structure

scrcpy has a client that communicates the adb shell taps are based on https://github.com/Genymobile/scrcpy/issues/231#issuecomment-414111753

This is the master brain of @rom1v. The problem is that; I have no knowledge of C# or C; which forces me to depend on adb for the toolkit; If the C version of @rom1v's scrcpy fast input thingy is implemented in guiscrcpy; then it would make guiscrcpy as good as scrcpy in speed; because it doesn't interfere with SDL

I have been looking for contributors and sponsors; No one yet: lol

Thyrador commented 4 years ago

@Thyrador Yes; I feel quite relieved; and indeed happy that I started using Linux at least now (I started only a year ago)

Haha, now I feel bad :D Switched over to Linux about 4 years ago and am happy about it. Still have to use Windows at work (virtual machine) so I still can develop. Really like Jetbrains Rider but converting some of the huge projects to .NET Core I am working on is not just time consuming but also such a pain in the ass.

This project has been started because of some personal necessity. I had to view my online classes on an android phone; because I didn't have an ethernet connection; So I developed guiscrcpy when I was in 10th grade (If I concur); And ever since then I have been working on this project; I started working on it from Windows (before, in my 10th grade); Now after one and a half year; I am on Linux; happier than ever (lol); Maybe Windows is not built for me; Windows is built for people with patience

Whew, now I feel old :D But I know what you mean. You need a lot of patience and acceptance for all of Windows' flaws. You can hear me constantly ranting about Windows at work, because Update broke something again, Windows messed up ACL/Permissions (AGAIN!), it decides to just hang all of a sudden and there's no error or something that would lead you to the issue. And guess what the suggestion from Windows support was? "Reinstall Windows". I fucking hate it. I absolutely can't stand it. I mean, that's not what I expect from an operating system. Just doing all over and over again, just because something doesn't work anymore. I mean Linux on the other hand can cause you nightmares too, tbh. But there wasn't a single instance where I couldn't solve a problem that occured. I broke my LUKS container the other day and damn that gave me a hell of a time. But I somehow managed it to get it working again (thanks Internet and weird, random guys!) so I didn't lose a damn thing in the end. Also what I really love about Linux is the fact that you can customize it in nearly every way so your productivity will be increased a lot. But not just that. I also like how well most of the integrations work, how theming works and most of all: tabbed views in my "explorer" (yeah, sorry Dolphin :D). I mean that is something Windows still didn't get to work until now. And they also dropped the development in the middle of testing. Using different workspaces are also a absolute mess on windows and looking for Explorer integrations for SFTP or stuff like that? Nuh-uh. So many things that are just there on Linux would improve Windows alot, if they'd ever decide to do it right or just implement it. And get rid of the abomination called permission management. I should stop here because I start ranting again :D

Wow! Thats cool. I do not know C#; I tried learning that; But I did not understand pointers and all. If you are interested in sharing your C# knowledge to guiscrcpy; then we could make the toolkit buttons work faster;

C#, not C++. C# makes use of the .NET framework so you need either wine to run it on Linux (would impact the performance I guess) or developing in .NET Core would require Mono (I'm at the beginning on learning how .NET Core works). Creating a gui (WPF) for Windows isn't much of a problem, though. If it is what you want. I am just preoccupied with lots of work, so I have to see how much time I can put into it, if neccessary.

Yes; I concur. I have the same opinion. The best way to start. is to get involved. To start from knowing nothing; to becoming a project board developer is to start from documentation. If you are interested in helping guiscrcpy's development; I would suggest you to look into #60; I am very poor in documentation; or help guiscrcpy to be available in another language;

Well, translating is the least problematic, I guess :D Helping with development is something I'm definitely interested in. Not just guiscrcpy. But it would be a good start (also started C# development with a simple launcher/updater for a private server for Aion, later some Java - but forgot most of it :D)

While doing the above; you will naturally learn the language and the project structure

Same with C#, Razor, HTML, CSS, JS, etc :D

scrcpy has a client that communicates the adb shell taps are based on Genymobile/scrcpy#231 (comment)

This is the master brain of @rom1v. The problem is that; I have no knowledge of C# or C; which forces me to depend on adb for the toolkit; If the C version of @rom1v's scrcpy fast input thingy is implemented in guiscrcpy; then it would make guiscrcpy as good as scrcpy in speed; because it doesn't interfere with SDL

That sounds interesting. But there's quite a difference between C and C#. I mean I have created some scripts almost 15 years ago for a private server for Ragnarok online, which was entirely in C. But man, that was about 15 years ago :D

I have been looking for contributors and sponsors; No one yet: lol

It's because of what scrcpy actually is and that it isn't something that is widely used (most people just take their phone instead of mirroring it to the screen.

PS: Sorry for the delay; was having online classes during lockdown; l am in g now;

No need to apologize. Just don't make sure you won't miss your classes because you are excited or too busy answering my silly questions :D

srevinsaju commented 4 years ago

@Thyrador

Really like Jetbrains Rider but converting some of the huge projects

I like the Jetbrains IDE; guiscrcpy is built completely on Jetbrains PyCharm; They might sponsor me a professional version of PyCharm because of guiscrcpy

Still have to use Windows at work (virtual machine) so I still can develop.

Have the same feeling; For every release of guiscrcpy; I have to make sure everything works not only on Linux and Mac; but also on Windows; because most of my users are gamers; and all are mostly from Windows

But I know what you mean. You need a lot of patience and acceptance for all of Windows' flaws. You can hear me constantly ranting about Windows at work, because Update broke something again, Windows messed up ACL/Permissions (AGAIN!), it decides to just hang all of a sudden and there's no error or something that would lead you to the issue. And guess what the suggestion from Windows support was? "Reinstall Windows". I fucking hate it. I absolutely can't stand it. I mean, that's not what I expect from an operating system. Just doing all over and over again, just because something doesn't work anymore.

I had got tired of reinstalling Windows again and again; Windows systems don't last for long; I never had to reinstall Linux; because of the way it is. I still have to keep a VM for development purposes.

Also what I really love about Linux is the fact that you can customize it in nearly every way so your productivity will be increased a lot. But not just that. I also like how well most of the integrations work, how theming works and most of all: tabbed views in my "explorer" (yeah, sorry Dolphin :D).

Similar opinions; I am a KDE Plasma user too :wink:

C#, not C++. C# makes use of the .NET framework so you need either wine to run it on Linux (would impact the performance I guess) or developing in .NET Core would require Mono (I'm at the beginning on learning how .NET Core works). Creating a gui (WPF) for Windows isn't much of a problem, though. If it is what you want.

I did not know. thanks for that information; I thought C++ and C# are similar just like how C and GNU C++ are

I am just preoccupied with lots of work, so I have to see how much time I can put into it, if neccessary.

No worries; Its only if you have time; Everyone are busy

Well, translating is the least problematic, I guess :D Helping with development is something I'm definitely interested in. Not just guiscrcpy. But it would be a good start (also started C# development with a simple launcher/updater for a private server for Aion, later some Java - but forgot most of it :D)

Yes every open source development teaches us something. I work part time for a non-profit educational organization; I actually learnt how to manage things by working in an organization; Code must be readable; must have formatting; etc. And everyone have their opinions to put in; Some disagree; Some like it. I learnt Object Oriented Programming at the Google Code-In. You should look at release v1.11 of guiscrcpy and compare it to 3.7. You will see how much I learnt. Actually @rom1v has also helped me a lot. rom1v actually pointed out all of my mistakes, and helped me correct them. He was the first stargazer of the guiscrcpy project. It was cool

That sounds interesting. But there's quite a difference between C and C#. I mean I have created some scripts almost 15 years ago for a private server for Ragnarok online, which was entirely in C. But man, that was about 15 years ago :D

Yes, its a quite while ago indeed. But thanks for helping make guiscrcpy better. The last active issues were quite number of months ago; Thanks tbh

No need to apologize. Just don't make sure you won't miss your classes because you are excited or too busy answering my silly questions :D

Sure; Its fine :smile:

Thyrador commented 4 years ago

@Thyrador I like the Jetbrains IDE; guiscrcpy is built completely on Jetbrains PyCharm; They might sponsor me a professional version of PyCharm because of guiscrcpy

Nice :) Hopefully they will sponsor you and the tools you need.

Have the same feeling; For every release of guiscrcpy; I have to make sure everything works not only on Linux and Mac; but also on Windows; because most of my users are gamers; and all are mostly from Windows

Well, I am a gamer too. There are a handful games I have to run on Windows (otherwise I can't play them or with friends). Other than that I use Linux for most of the games I play. Running them through Lutris and Proton works like a charm (most of the time :D)

I had got tired of reinstalling Windows again and again; Windows systems don't last for long; I never had to reinstall Linux; because of the way it is. I still have to keep a VM for development purposes.

Tbh. I had to reinstall Linux on a few occasions, but that was due to my own fault (completely messed up the system without making any backups). But that was in my experimental phase where I knew nothing :D

Similar opinions; I am a KDE Plasma user too wink Oh, so we're in the same boat. KDE Plasma here too :D

I did not know. thanks for that information; I thought C++ and C# are similar just like how C and GNU C++ are

Haha, I wish it would be that easy. They're worlds apart from each other.

No worries; Its only if you have time; Everyone are busy

Sure. If I can help, I'm glad if I can contribute something.

Yes every open source development teaches us something. I work part time for a non-profit educational organization; I actually learnt how to manage things by working in an organization; Code must be readable; must have formatting; etc. And everyone have their opinions to put in; Some disagree; Some like it. I learnt Object Oriented Programming at the Google Code-In. You should look at release v1.11 of guiscrcpy and compare it to 3.7. You will see how much I learnt. Actually @rom1v has also helped me a lot. rom1v actually pointed out all of my mistakes, and helped me correct them. He was the first stargazer of the guiscrcpy project. It was cool

Yeah, I can imagine. Not sure how big my flaws are currently, but I sometimes look over some older code and think: "Who the fuck wrote that shit?" :laughing: We all do learn from our mistakes. Some make them quite often until they realize what they did wrong, some get pointed in the right direction. At the company I work for I now have to teach 2 youngsters how to properly code and develop applications. Me, of all people. I never got taught these things and am very bad at explaining things :laughing: At least a few of my recommendations weren't that bad, so it isn't all for nothing.

Yes, its a quite while ago indeed. But thanks for helping make guiscrcpy better. The last active issues were quite number of months ago; Thanks tbh

Well, you did the work. So thank you for it. I just waved my finger pointing at things I think could be better. :P

srevinsaju commented 4 years ago

@Thyrador ping