clipboard(n)
πΈ NAME πΈ
clipboard β Manipulate Tk clipboard. This is clipboard(n) from the Tk Built-In Commands, and it's about to be your new fave for clipboard stuff π.
β¨ SYNOPSIS β¨
clipboard option ?arg ...?
π DESCRIPTION π
Okay so this command gives you a Tcl interface to the Tk clipboard β the thing that stores data for later retrieval using the selection mechanism (via the -selection CLIPBOARD option). To copy data into the clipboard, you have to call clipboard clear first, then follow it with a sequence of one or more calls to clipboard append. And to make sure the clipboard gets updated atomically, complete all those appends before returning to the event loop, bestie β no cap.
The first argument to clipboard is the main character: it determines the format of the rest of the arguments and the behavior of the command. These are the forms that are currently supported, periodt:
clipboard append ?-displayof window? ?-format format? ?-type type? ?--? dataβ appendsdatato the clipboard onwindow's display in the form given bytype, with the representation given byformat, and claims ownership of the clipboard onwindow's display. β¨-displayof windowβ sets thewindowwhose display gets the append and the clipboard ownership claim.-type typeβ tells the command the form in which the selection is to be returned (the desired βtargetβ for conversion, in ICCCM terminology). It should be an atom name such asSTRINGorFILE_NAME; see the Inter-Client Communication Conventions Manual for complete details.typedefaults toSTRING.-format formatβ this is the representation that should be used to transmit the selection to the requester (the second column of Table 2 of the ICCCM), and it defaults toSTRING.- If
formatisSTRING, the selection is transmitted as 8-bit ASCII characters. - If
formatisATOM, then the data is divided into fields separated by white space; each field is converted to its atom value, and the 32-bit atom value is transmitted instead of the atom name. - For any other
format,datais divided into fields separated by white space, and each field is converted to a 32-bit integer; an array of integers is transmitted to the selection requester. - Note that strings passed to
clipboard appendare concatenated before conversion, so the caller must take care to ensure appropriate spacing across string boundaries. All items appended to the clipboard with the sametypemust have the sameformat.
- If
--β marks the end of options: the next argument will always be used asdata. This is convenient if, for example,datastarts with a-.
Okay but real talk: theformatargument is needed only for compatibility with clipboard requesters that do not use Tk. If the Tk toolkit is being used to retrieve theCLIPBOARDselection, then the value is converted back to a string at the requesting end, soformatis irrelevant. π«Ά
clipboard clear ?-displayof window?β claims ownership of the clipboard onwindow's display and removes any previous contents.windowdefaults to".". Returns an empty string.-displayof windowβ picks thewindowwhose display gets the clipboard ownership claim and the contents wiped.
clipboard get ?-displayof window? ?-type type?β retrieves data from the clipboard onwindow's display.windowdefaults to".".typespecifies the form in which the data is to be returned and should be an atom name such asSTRINGorFILE_NAME.typedefaults toSTRING. This command is equivalent toselection get -selection CLIPBOARD.-displayof windowβ picks thewindowwhose display to retrieve from. Defaults to".".-type typeβ picks the form the data comes back in. Defaults toSTRING.- > Note that on modern X11 systems, the most useful type to retrieve for transferred strings is not
STRING, but ratherUTF8_STRING. π
π EXAMPLES π
Get the current contents of the clipboard. And catch the case where there were no clipboard contents at all:
if {[catch {clipboard get} contents]} {
# There were no clipboard contents at all
}
Set the clipboard to contain a fixed string.
clipboard clear
clipboard append "some fixed string"
You can put custom data into the clipboard by using a custom -type option. This is not necessarily portable, but can be very useful. The method of passing Tcl scripts this way is effective, but should be mixed with safe interpreters in production code. π§
# This is a very simple canvas serializer;
# it produces a script that recreates the item(s) when executed
proc getItemConfig {canvas tag} {
set script {}
foreach item [$canvas find withtag $tag] {
append script {$canvas create } [$canvas type $item]
append script { } [$canvas coords $item] { }
foreach config [$canvas itemconf $item] {
lassign $config name - - - value
append script [list $name $value] { }
}
append script \n
}
return [string trim $script]
}
# Set up a binding on a canvas to cut and paste an item
set c [canvas .c]
pack $c
$c create text 150 30 -text "cut and paste me"
bind $c <<Cut>> {
clipboard clear
clipboard append -type TkCanvasItem \
[getItemConfig %W current]
# Delete because this is cut, not copy.
%W delete current
}
bind $c <<Paste>> {
catch {
set canvas %W
eval [clipboard get -type TkCanvasItem]
}
}
π¦ SEE ALSO π¦
π KEYWORDS π
clearformatclipboardappendselectiontype
mwah π β source/version: Tk 8.4; manual page: clipboard(n); date: not listed in the footer, bestie π
π¦ where this page comes from
- alpine 3.23: tk9-doc 9.0.3-r0 Β· TCL
- alpine 3.24: tk9-doc 9.0.3-r2 Β· TCL
- fedora 43: tk 1:9.0.2-1.fc43 Β· TCL AND HPND-Pbmplus AND CC-BY-SA-3.0 AND MIT-open-group AND MIT
- fedora 43: tk 1:9.0.2-1.fc43 Β· TCL AND HPND-Pbmplus AND CC-BY-SA-3.0 AND MIT-open-group AND MIT
- fedora 44: tk 1:9.0.2-1.fc44 Β· TCL AND HPND-Pbmplus AND CC-BY-SA-3.0 AND MIT-open-group AND MIT
- fedora 44: tk 1:9.0.2-1.fc44 Β· TCL AND HPND-Pbmplus AND CC-BY-SA-3.0 AND MIT-open-group AND MIT
- nixos 26.05: tk 9.0.3
- nixpkgs unstable: tk 9.1.0
- Copyright (c) 1994 The Regents of the University of California
- Copyright (c) 1994-1996 Sun Microsystems, Inc
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms