Wayland clipboard API - clipboard

Is there such a thing as a clipboard API in Wayland? Or where should I look to paste contents to the clipboard programmatically?
I am running Fedora 24 on Wayland.
Having a single clipboard if perfectly fine with me, so is there a code example (in Python, etc.)?

In Linux we have two 'clipboards'. Primary selection and clipboard.
Clipboard is defined by the Wayland protocol here: https://wayland.freedesktop.org/docs/html/ch04.html#sect-Protocol-data-sharing
The primary selection is unwanted in Wayland, because it is considered unsecure. But to smooth the move from X to Wayland, an extension, disabled by default, has been created: https://wiki.gnome.org/Initiatives/Wayland/PrimarySelection

wl-clipboard provides wl-copy and wl-paste which you can script easily.

Manipulating the clipboard on Wayland usually requires a valid serial for an input event. Some compositors validate this serial (Weston), some don't (Kwin). So it might be that you can't do what you want.
As mentioned by alkino, there are docs here: https://wayland.freedesktop.org/docs/html/ch04.html#sect-Protocol-data-sharing
And here: https://wayland.freedesktop.org/docs/html/apa.html#protocol-spec-wl_data_device

Related

is it possible to map Vim key bindings for windows, just like vimium for chrome

is it possible to map Vim key bindings for windows? just like vimium for chrome. I don't like the mouse sometimes.
using vimium, I can press 'f' to generate 'names' for the link, and just press the name to open the link, it's awesome!
This is an AutoHotKey script that implements some of the vim functions in all applications.
Also LabelControl provides some label support, like vimium, but it's not always that useful.
you can use hunt-n-peck .
you should download binaries from continous integration artifacts.
this is the hunt-n-peck binaries zip link HuntAndPeck taken from repository's continuous integration artifacts.
I don't know about any existing tool, but macro tools like AutoHotkey allow to implement that. For a purely modal solution like in Vim, you'd need to save the mode state (and probably also indicate it somehow), which is difficult. Creating vim like functionality with autohotkey ahk outlines a solution (for navigation) that relies on another simultaneously pressed key instead.
To answer the stated question: Yes, and there exists several, but they have limitations. The best way that I know of is using AutoHotkey, which can be used to add several of Vim's features.
Due to how Vim commands work, it is only partially possible, as implemented in several forms. For several examples you can search for e.g. "autohotkey vim".

Gimp/Mac: Text tool interprets keystrokes as commands

I wonder if you can help me with this rather bizarre phenomenon.
I'm using Gimp 2.8.3 on a Mac OS 10.9.5 and I try to insert text with the Text Tool. Easy enough, but when I type e.g. "Jazz", I get as far as "J", and then the "a" is interpreted as command and the airbrush tool gets activated. This happens with every (lowercase) key which in principle has a command function.
I checked the manual but there's no mention of something that needs to be switched off to use the text entry tool.
Anybody seen this before?
Thanks, Rob
Update: I've had the brilliant idea to check for Gimp updates. Turned out, there's a Gimp 2.8.14 now, which doesn't show this behaviour anymore. So, it seems to have been a bug in Gimp which luckily has been fixed.
Just for the record: if anyone is hit by this or a similar bug, there is a workaround if upgrading/fix is not an option: gimp 2.8, the old off-image text editor for creating text can be used, by checking the Use editor control in the text tool options.
GIMP will them pop a small blank window where the text can be typed without being intercepted by other parts of the application.

Remap keys in OS X

Specifically I'm attempting to map my MacBook's fn key to left mouse click.
Back in the old days when I was using Windows, I came across a wonderful little utility that let me map anything to anything: http://www.autohotkey.com/
You create a little text file, e.g.
^!s:: ; CTRL + ALT + s
Send Sincerely,{enter}John Smith ; sends keystrokes to active window
return
Creating a simple text file was infinitely better than any GUI based remapper.
I can look through it and see everything that is going on at a glance
I can customise every last detail
I can save / retrieve / post / share my scripts
Really, it's the one thing I really miss about Windows.
So my question is: How do I go about doing this in OS X? Every Google search leads to https://pqrs.org/macosx/keyremap4macbook/ and I dislike this package: it has an insanely cluttered GUI.
I would be very happy if I could do it in a shell script, or even compile code.
HotKeys on OS X
Even though AHK is seemingly absent on Mac, the functionality that AHK provides on Windows can likely be achieved in OS X. It could be a matter of coding your own solution, modifying something that's open-source, or using a combination of applications that will work together. I haven't tried all of the following, but might as well mention them as they might be worth checking out:
Open Source
IronAHK - .NET rewrite of AHK ported to OS X
AHK Forum Thread
Github Project
*the original project might be dead
CliClick - command-line application that will emulate mouse clicks
Github Project
Commercial
TextExpander - scriptable text completion / hotkey / macro app (supports AppleScript, Shell scripts)
Typinator - similar to TextExpander, although some features vary.
KeyMo - mostly for mapping keys exclusively to your mouse.
FastScripts - maps hotkeys/user-definable keyboard shortcuts to AppleScripts
*I use Text Expander and FastScripts together and can't live without them.
Rolling Your Own
It's fairly easy to create something with an AppleScript, or a shell script for just about anything imaginable in OS X. For example, I've seen CliClick used along with a custom AppleScript to achieve a certain functionality that it might not provide otherwise. To find an AHK replacement on Mac it'll probably be through trial and error, patience, and ultimately what ends up working best for you.
It is possible with a program called ControllerMate, instructions here. It is, however, a commercial software. I'm also interested in finding a free alternative.
Sikuli project looks promising. Not sure about your particular problem (e.g. Fn key remapping), but it's definitely a crossplatform alternative to AHK.
Another Open Source solution to this problem not mentioned in l'L'l's answer is Karabiner; I have been looking for a way to remap the key to the left of 1 to Esc for a while, and this worked perfectly. It even resolved an issue I was having where swapping Cmd and Alt using the built in OSX key remapping was breaking terminal Alt shortcuts! Highly recommend it.

Can an app use the clipboard for its own purposes? (read: who owns the clipboard?)

In PowerBuilder's IDE, the code autocomplete feature uses the clipboard to communicate the completed text to the code window. By doing so, it overrides whatever was stored on the clipboard before. So, if you had the winning numbers of the next lottary stored on your clipboard, and you used the autocomplete to turn m_goodfor into m_goodfornothing, you've just lost your only chance of ever getting rich, and you're left with nothing on your clipboard.
Features like that are the reason I hate software. It looks like it was implemented by some intern that noone was looking after. However, there's also a chance I got all worked up for nothing, and making such use of the clipboard is absolutely legit. So, can an app use the clipboard for its own purposes? Who is considered the owner of the clipboard?
(Bonus votes to whoever puts himself in place of the feature's programmer, and provides some reasoning for this being done on purpose, assuming the users would actually benefite from it)
You are probably right on the intern reasoning. There is absolutely no reason why an application would use the clipboard to communicate information other than pure laziness. Even between processes, there are other, better ways of communicating information.
Other then letting the user paste information in another application, there is no reason to use the clipboard.
The programmer did it because it was easy, and put his needs above those of the end user. There are many programs that do this, particularly add-ins to outlook, VB, etc., which copy/paste their buttons onto the toolbar. Any user that runs a clipboard extender (like my own ClipMate) will absolutely hate this behavior (and you'll be "busted" right away).
Here is my favorite quote on the subject:
“Programs should not transfer data into our out of the clipboard without an explicit instruction from the user.”
— Charles Petzold, Programming Windows 3.1, Microsoft Press, 1992
An app should never change anything on the clipboard without the user initiating that action. My .02 anyway.
Bonus votes to whoever puts himself in place of the feature's programmer, and provides some reasoning for this being done on purpose
Using clipboard for application communication
They are always a better way to do it. The programmer might have done it this way because it was faster to implement OR because he really wanted to have this value in the clipboard after the action. At least, if he didn't wanted to have it in the clipboard he could have get the value from the clipboard, store its value then replace the old content of the clipboard inside the clipboard and everything would have be more "transparent" ans less frustrating for the end-user.
I have built a piece of functionality into an App that uses the clipboard. Business was requesting a way for users to seamlessly capture a screen shot and upload it.
I worked with the business to develop it and what we came up with was a user simply hit the print screen key and clicked "upload" in my app.
The Java Applet running in the background pulled the image off the clipboard and displayed a formatted preview to the user, The user then added in a file name and description and clicked save.
Using the clipboard this way saved the user the time of having to capture the screen shot save it somewhere then find it through an upload interface. Even if we did go that route by the user hitting print screen to capture the image in the first place they are already overwriting whatever was on the clipboard in the first place.
Using the clipboard isn't all bad but I certainly agree using it in an IDE is a def no no.

Show contents of the Windows clipboard

How can I see what the Windows clipboard currently contains without using the paste operation?
I don't want the "pasted-to" application to perform any actions on the clipboard (for example, formatting text and converting).
Is there a tool which shows the clipboard's objects and their format (CF_BITMAP, CF_TEXT, etc.) and content (in simple bytes for example)?
There is a list of clipboard manager tools at Wikipedia:
Clipboard manager
ClipX allows you to view a log of previous clipboard entries by pressing Ctrl + Shift + V.
NirSoft offers a free “Inside Clipboard” utility which allows you to see the raw clipboard contents and different formats. It’s close to what you would see with a programmatic API but with a nice GUI. Its GUI includes hex view. It also allows data to be exported and allows saving a snapshot to a .clp file which it can open and allow you to examine later.
If you need to see things at the level of the programmatic API to quick check things without writing a program yourself, I recommend this tool.
If using .NET you can query the Clipboard object.
How about the regular old Clipbrd.exe clipboard viewer from Windows XP?
That'll still run on Windows Vista and Windows 7, IIRC.
Select run from the start menu.
Enter "clipbrd.exe" in it.
Then you can see the clipboard items in the Windows systems.

Resources