forked from FreeRDP/Remmina
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathToDo
52 lines (46 loc) · 4.61 KB
/
ToDo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Clipboard
o Rewrite to make use of the new CliprdrClientContext
* This should fix the segmentation fault as well
* IRC log
16:57 < awakecoding> oh, that part specifically. you don't need to take it off by parts, you can take xfreerdp almost as-is, and no need to copy the code
16:57 < awakecoding> I have structured each of the client to be offered as a library, with a common framework
16:58 < awakecoding> think like the Microsoft RDP activex control, but without the activex crap
16:58 < awakecoding> https://github.com/FreeRDP/FreeRDP/blob/master/client/X11/xf_client.h#L48
16:58 < awakecoding> each of the clients expose a similar entry point function
16:58 < mythos> only from an understanding viewpoint. is xembed not good enough? what is the advantage to use it as a library?
16:59 < antenore> ah!
16:59 < awakecoding> mythos: the point is to embed the xfreerdp x11 window within a contain which you control, but when used as a library, you are within the same process and have direct control over a lot of things
16:59 < awakecoding> there is also messaging support for synchronization for resizing of the container, etc
17:00 < awakecoding> smart sizing
17:00 < awakecoding> all these things wouldn't really be possible if it were out of process, we'd need IPC
17:00 < mythos> sure
17:00 < awakecoding> antenore: the xfreerdp executable is in fact just this file which uses the xfreerdp client library; https://github.com/FreeRDP/FreeRDP/blob/master/client/X11/cli/xfreerdp.c
17:01 < antenore> awakecoding: yes, I understand
17:01 < awakecoding> mythos: at one point the wayk client was just a front end to all of the freerdp clients
17:01 < mythos> but then there are rather few usecases... but ok. i get it
17:02 < awakecoding> mythos: the problem with simple out of process is you can't do much once it's launched
17:02 < awakecoding> having it in process with all of the freerdp api allows you to do a lot more
17:02 < awakecoding> hook a credential prompt provided by remmina, for instance, etc
17:02 < mythos> well, dbus is there to stay ;)
17:03 < mythos> a library is of course easier
17:03 < awakecoding> yeah but why dbus or any form of IPC if you can just keep using the same freerdp api in process
17:03 < awakecoding> a library just makes it a zillion times easier, no extra IPC development involved
17:03 < mythos> because it is multi purpose
17:03 < antenore> awakecoding: I like and I get the idea, I'm not usre I still have the competencies, but I'll try
17:03 < mythos> login manager as example
17:04 < awakecoding> mythos: what do you mean login manager, the hacked xfreerdp mode for using xfreerdp for testing auth?
17:06 < awakecoding> mythos: in any case, I fail to see why using IPC would be better than in process with the regular FreeRDP API in the case of a GUI front-end like remmina
17:06 < awakecoding> all it would add is work to make all of the in process apis available out of process, which is really a waste of time if you don't really need it
17:06 * mythos nods
17:07 < mythos> you design decision is reasonable
17:07 < awakecoding> the point of the client library like xfreerdp is really to make the clients available as embeddable clients in front-end guis
17:07 < mythos> and i'm quite sure it's the best considering your recourses
17:07 < awakecoding> think of how much work remmina is when it is done by reimplementing all of the stuff xfreerdp does
17:08 < awakecoding> the problem is it is too much work, so it just becomes crap over time
17:08 < mythos> dunno what remmina does. never used it ^^"
17:08 < mythos> and never looked into it
17:08 < awakecoding> but if we can just have it reuse the vast majority of xfreerdp, we win big. and it still doesn't mean remmina cannot implement a few channels on its own, overriding those implemented normally in xfreerdp
17:08 < awakecoding> oh, I thought you did
17:09 < mythos> nope. i never said i did
17:09 < mythos> my question was only out of interest
17:10 < awakecoding> antenore: it should be quite easy to get started. try it on a branch, the first step is to do something similar to what you can see in cli/xfreerdp.c, but in remmina. you should end up with a detached window if you don't do anything special. the next step would then be to prepare your X11 container, and set settings->ParentWindowId with the window XID before launching xfreerdp