World: r3wp
[Linux] group for linux REBOL users
older newer | first last |
Anton 3-Apr-2009 [2781] | But anyway, I'm heading down the DLL injection path, using LD_PRELOAD. I have a simple LD_PRELOAD example working, which intercepts calls to the time() function (and works with rebol). The next example I'll try will intercept X window calls. |
Pekr 3-Apr-2009 [2782] | I know that SDL can't help you to get REBOL's window handles :-) I just thought that we might look into how others are obtaining them, and then to try similar aproach for REBOL. But anyway, you surely will find your way thru! |
Anton 3-Apr-2009 [2783] | Ok, I can now intercept the XCreateSimpleWindow call ! Woo! The hard part seems over... Now to remember what I wanted it for... |
Henrik 3-Apr-2009 [2784] | :-) |
Anton 3-Apr-2009 [2785x2] | The 'xprop' command can see the hacked-in process id. Proof of concept. |
Joining more dots - the C code can match the pid to the window. Now I can sleep. | |
Maxim 3-Apr-2009 [2787x2] | anton you mean that you have REBOL callbacks being triggered when it tries to open the window!!!!! :-D |
? | |
Anton 3-Apr-2009 [2789x2] | Not Rebol callbacks. A DLL built using C is injected using LD_PRELOAD when running any executable. The executable I'm interested in is Rebol, of course. This injected code intercepts calls to XCreateSimpleWindow (which creates the X Windows window), and adds some properties to it, including one which stores the process id of the application opening the window. This means that each X window can be ensured to have the process id of the application that opened it (which is otherwise not mandated by X). So I could do that to any program and it would ensure that there is a way to get the process id. I'm doing it to Rebol, and this means it is now possible for another DLL function (called from Rebol) to scan all the windows opened on the X display and see which one has the Rebol process id. All you need is the process id, and this is easy to do with a very small DLL function call. |
I was starting to think about how I could possibly get a rebol callback happening, though. That should obviate the need to scan all open windows, which is a crude way of getting information. | |
Maxim 3-Apr-2009 [2791] | pretty cool |
Pekr 4-Apr-2009 [2792] | I smell someone (Anton) is up to R3 port effort to Linux platforms :-) |
Anton 4-Apr-2009 [2793x2] | I've just got another method of passing the Window XID to Rebol, obviating the need to scan all open windows. Much more direct, it sets an environment variable, which Rebol can read with get-env after VIEWing a window. |
If I was ruled by pragmatism, I would just go with this method, which I'm sure would work quite well. But, after my big post in the Rebol3 group on Friday, in which I advocate modularity and avoidance of namespace pollution, I can hardly just be happy using an environment variable, despite the relative simplicity of doing so. I will investigate some other methods which also intrigue me... | |
Anton 5-Apr-2009 [2795x6] | Another method: I can use load/library to access the LD_PRELOAD library and share information via static variables. |
So I don't need to create an environment variable to pass information to Rebol. | |
But using Rebol's External Library Interface, I can also directly call functions in the LD_PRELOADed library, too. So there's not so much need to pass the Window XID to Rebol to start with. | |
But I think I caught up to where RT left off on the hunt to implement NO-TITLE and NO-BORDER. It looks like there is no window manager agnostic way of separately specifying these window decorations. I will investigate some more, though. I have managed to open a window with no title and no border, but it doesn't respond to events at all, because this was achieved by basically telling the window manager not to manage the window at all when X is opening it. | |
Could be useful for full-screen games/presentors and so on, but requires more code to handle events I think. Anyway, that wasn't really the goal; to implement NO-TITLE and NO-BORDER, not NO-TITLE-AND-NO-BORDER(-AND-NO-EVENTS...). | |
amacleod: Hmm.. what was the goal? Did you want to use NO-TITLE and NO-BORDER together? | |
amacleod 5-Apr-2009 [2801x2] | I have a program I would like to run on a netbook (Small screen 800x480) so I do not want to lose any realestate to title bar... (I know it can come with XP but for another $50) Also, I like the idea of the application "taking over" the netbook as if this device and the App are one. It's for use by non-techies so as little interaction with linux as possible is desired... |
Full screen no-border works for me... | |
Anton 5-Apr-2009 [2803] | I see. Hmm... |
amacleod 5-Apr-2009 [2804x2] | Sort of like an appliance... The perfect setup would be to boot into a slim xwindows environment with no or minimal wmanger running my app but have key combo at start up to boot into full linux desktop |
I think this will be the year of cheap touch tablets which perfect for my app...THese cheap tablets are often linux based | |
Anton 7-Apr-2009 [2806x2] | I've just opened a little Rebol window without title bar or border, but it can be moved around and handles events as a normal window does (eg. view layout [button area] works). |
I think this method, which uses a small amount of code, may be window manager agnostic too. | |
Pekr 7-Apr-2009 [2808] | Cool! I am looking for kiosk mode for Linux with REBOL. Hopefully can be added to R3 View ... |
amacleod 7-Apr-2009 [2809x2] | or r2-forward |
Sounds great Anton.. How do you move it without the title bar? | |
Anton 7-Apr-2009 [2811x3] | On KDE here, I can press and hold Alt key, then left-click drag a window with the mouse. |
Ok, I've got full-screen happening here. | |
For R3, it looks like a very similar trick should work, even through wine. | |
amacleod 7-Apr-2009 [2814] | very cool... |
Geomol 7-Apr-2009 [2815x2] | This window without title bar can be moved in R2: main: layout [origin 0 box "Drag me!" feel [engage: func [f a e] [if a = 'down [pos: e/offset] if find [over away] a [main/offset: main/offset - pos + e/offset show main]]]] view/options main [no-title] |
So you can build your own title-bar and make it behave like a normal title bar. | |
Geomol 8-Apr-2009 [2817] | Ah, may be different under Linux. I was just trying it out under Windows. |
Anton 9-Apr-2009 [2818] | Yeah, in Linux here it doesn't follow the mouse well, the window accelerates in the direction of movement. |
Geomol 9-Apr-2009 [2819] | Maybe because event offsets are different? Try probe e/offset. |
Anton 9-Apr-2009 [2820x2] | I'm sure of it. I think in Win32 the events are relative to the window, while in linux they are absolute. That would explain the behaviour I'm seeing. |
If you remove main/offset, then you get this: main/offset: - pos + e/offset show main and this works properly in Linux. | |
Pekr 9-Apr-2009 [2822] | Never tried View on linux - does it crash too, when you change resolution? :-) |
Anton 9-Apr-2009 [2823] | Never tried. |
Pekr 9-Apr-2009 [2824x3] | In two weeks I am going to set-up new Linux server finally. I have got the HW - SuperMicro board. I will install Mikrotik RouterOS on it, and it allows me to serve as a FW/router, and iside of it I want to install Ubuntu server in XEN |
I would like to ask - should I install including X Windows? Will it make REBOL life easier? (e.g. will it allow to run rebcmdview, so that some gfx operations will be available to cgi?) | |
The question also is - will it consume much more resources (memory, cpu) to have it installed including X-Windows? | |
Izkata 9-Apr-2009 [2827x2] | Tested with a simple "view layout [box]" on Ubuntu Hardy with the wmii window manager, View does not crash when using xrandr to change resolution. |
Seems likely other setups also wouldn't crash, but I wouldn't put it past Gnome to do something strange | |
Pekr 17-Apr-2009 [2829] | So I just installed glorious UBUNTU Server edition. Installation went OK, but after 15 minutes of usege, I have big WTF? Are those ppl crazy? This is total piece of crap. You can't have X-Windows easily running there. There is NO visual administrative tool intalled by default. No webmin, but Ebox. At least Docs state how to install/run Ebox. It does NOT work, it is missing some packages. I am also left with my user name, and the SUDO. But - can you do everything by SUDO? How do I find out my real root password? I am really not an experienced Linux user, but I could manage that stuff with old Fedora in 2004. Why Ubuntu gets so much attention? |
amacleod 17-Apr-2009 [2830] | I've tried ubuntu many times with the latest trying ubuntu server edition. I installed webmin (not too hard). I ended up installing a low-end desktop environment... But as usual I hit too many walls... It also ran like a dog on this low end PC. It was a slow 800mhz but should have been fast enougg..I probably need more memory as I thing there was alot of disk swaping going on.. Now, I'm using ms server 2003...Atleast now I can go to my brother if I have a problem...He does not know linux. I want to support Linux but I'm never happy with it in the end. Perhaps, Syllable can one day be my server of choice .. |
older newer | first last |