freenode/#clim - IRC Chatlog
Search
3:44:21
loke
slyrus: Found some issues with my implementation that I need to fix before proposing to merge
3:45:19
pillton
loke: Will that protocol work with other operating systems? I can't see why it wouldn't.
3:45:48
loke
By the way, did you know that the old implementation allows you to shift-middle-click in _any_ stream pane to request a paste? It does sends all the events to the primary selection owner, but simply don't insert the result.
3:46:37
loke
I intend to implement a support for a Local-only implementation (that only supporst copy&paste within a single Lisp image)
3:46:56
pillton
loke: Sure, but does the copy and paste mechanism on other platforms fit the abstraction?
3:49:20
loke
Of course, if you make a request and say that you absolutely, positively only want an image, and the backend doesn't support pasting of images, you'll get nothing. But that's no different from the case where the backend does support and image, but there is only text in the clipboard.
3:52:40
pillton
loke: Ok. Just checking. I was surprised by your description of X11's mechanism and thought other systems might have equally weird behaviour.
3:53:41
loke
pillton: I honstly don't know much about how the other systems work, but I can't even think of a system that would be so bizarre that it wouldn't fit in this scheme.
3:55:01
pillton
Yeah. As long as the protocol is fundamentally asynchronous how much worse can it get?
3:57:36
loke
So when copying strings, you need to check for :STRING :TEXT :|text/plain| :|text/plain;charset=utf-8| and probably a few more.
3:58:35
loke
Oh, and when copying rich text, you use :|text/html|, and just include the content as HTML, which works almost everywhere, except for Firefox where the copied content needs to start with a <meta http-equiv...> tag
4:00:39
loke
And even more fun, gnome-terminal just refuses to acknowledge that I hold the clipboard and will simply grey out the "copy" button). There may be some magic property I need to set to make it work, but it's notr eally documented anywhere. Also, it's not just my CLIM code that has problemn with this. It's a common problem with some versions of GNOME and other non-GNOME applciations. As usual, GNOME feels that nothing except them matters.
5:34:42
beach
loke: Since you recommended Cinnamon to me, I was wondering whether you know how such things are structured. Do you?
5:35:42
loke
The clipboard stuff certainly drags you into that world whether you want to or not. :-)
5:36:38
beach
... which prompted me to suggest a revival of the Eclipse window manager that my students wrote a long time ago.
5:37:36
beach
I think I also learned that a "panel" is a single applications so that the applets are "plugins" or Javascript programs. If so, a panel could be written in Common Lisp I presume.
5:39:09
beach
What I am aiming for is a collection of Common Lisp code that can work on a GNU/Linux desktop running (say) Gnome, but also as a preparation for the desktop on a system like CLOSOS or Mezzano.
5:40:05
beach
So, do you have suggestions about what is doable in Common Lisp without ditching all of Gnome or all of Cinnamon, etc?
5:41:44
loke
I did that when I was running StumpWM; integrating desktop notifications for example, and controlling spotify via the Common Lisp window manager.
5:42:02
loke
There is a Dbus library for Common Lisp that I was using (it's written by death_ on #lisp)
5:43:21
loke
there is a large set of standardised commands that your program can expose, so you can say for example: "Increase volume", or "Play next" or whatnot. The application in charge of the respective service will then respond to that message.
5:43:55
loke
Yes, it's a wire protocol that exposes a simple RPC mechanism, where the exposed functions conform to published interfaces so that "Play next" will work regardless of what music player you're using.
5:44:33
loke
Yes. The command names are strings that form a path of sorts, something like /services/mediaplayer/playNext or whatnot
5:45:20
loke
A Common Lisp music player can implement the same interfaces and then you'll be able to control it from existing applications.
5:46:00
loke
The desktop notifciations is another such service. I implemented a desktop notification thingy in CLIM, running insite the window manager itself, from which I could control and view the notifications.
5:46:25
beach
This is excellent information. It suggests that someone could start writing small components in Common Lisp.
5:47:54
loke
You can type the following command to list the services that are published in your current session:
5:48:16
loke
dbus-send --session --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames
5:49:40
loke
There are other methods you can call that display the avalable methods on a given object
6:36:33
beach
From reading the Dbus tutorial, I take it that this entire infrastructure is needed only in traditional kernel-based operating systems, and that it won't be required in CLOSOS. Right?