The Gnome Clipboard Manager

Hi there,

Some people on this list probably remember my mail about a new
application called GNOME Clipboard Manager. Well based on some request
that I received from people (like people on the usability mailinglist
and Havoc) I changed the scope of the project a bit and this is the
result : The GNOME Clipboard Manager 2.0.2 application and environment.

ps. If people from this list are interested in helping me then please
let me know. I have enough ideas so don't think that this is a project
that is finished already :). Or you can just start reading the Plugin
and libgcm documentation and start writing plugins for GNOME Clipboard
Manager :). Note that the future of gcm is open, anything is possible if
you are willing to help me build it.

So, what has GNOME Clipboard Manager become ...

GNOME Clipboard Manager for GNOME 2.0 desktops is an application and an
environment for managing clipboards -a.k.a. selections- and their
available formats -a.k.a. their available targets-.

The three core components of GNOME Clipboard Manager :

* GNOME Clipboard Manager itself is a daemon that will autocollect new
  clipboards and has the option to choose which clipboard is to be
  pasted when an application asks for the clipboard in a specific
  format. A longer list of features is listed below. They include
  saving, creating, editing, merging of items. GNOME Clipboard Manager
  is plugable and writing new plugins for GNOME Clipboard Manager is
  not a difficult task.

* Libgcm is a library for controlling the GNOME Clipboard Manager daemon
  from your own applications.

* GcmApplet is a sample GNOME 2.0 PanelApplet that uses libgcm for
  controlling the GNOME Clipboard Manager daemon. It is still a little
  bit buggy because I am not very good at writing PanelApplets and
  because there is not very much documentation about them available
  already. That is why I prefer calling it a sample.

Non core :

* libgcmtest is a sample application that shows all functionality
  libgcm. So it's a libgcm-demo :)

* sampleplugin.c is a sample plugin for GNOME Clipboard Manager that
  shows all possible event-functions a plugin can handle.

Please check out if you want to know
more about GNOME Clipboard Manager.

What applications could use libgcm :
 - Applications like IDEs (devstudio, anjuta, gIDE) and texteditors
 - PanelApplets
 - Office applications

 Example of Microsoft applications that have a Clipboard
 Management tool : Microsoft Visual Studio.NET, Ms. Office 
 Both save clipboards on a shelve.  

Plugins? For A CLIPBOARD MANAGER? MAN! Are you NuTz???

 - No, GNOME Clipboard Manager should never become bloatware
   however.. there are a few features that I would like to implement
   like some sort of networking support (sending and receiving
   clipboards over a tcp/ip network) and converting of targets
   to other targets (text/html to's gzipped XML format)
- Such features do not belong in the core functionality of Gcm and
  should therefor be written as plugins.
- Feel free to help me with such features :-) by writing plugins.

Features list :

I know that it might be confusing but I am not the person who gave these
animals names, "a target is a format" and "a clipboard is a selection"
in the following text :

    * Storing your clipboards and all their available formats. A.k.a the
      collecting of clipboards.

          o A clipboard (a.k.a. a selection) can have multiple formats
          (a.k.a targets) o GNOME Clipboard Manager will store all your
          previous clipboards and formats so that you can go back to a
          previously saved clipboard o A format can be

                + Html : which are the HTML-tags of a HTML selection
                when you copypaste some stuff in your browser + Image
                data : If you select a portion of an image and use the
                "Copy"- or "Cut"-feature in for example

                + Normal text :
                a.k.a. COMPOUND_TEXT which is the most common format of

                + Some other format used by a specific
                application that contains information about the data.
                For example the clipboards of contain
                gzipped formats which host XML-files that define the
                layout and information that is to be copypasted to for
                example another screen.

          o Once collected, a clipboard becomes an Item for GNOME
          Clipboard Manager o Making a clipboardring by setting the
          max. amount of collected items. Older items will then
          automatically be deleted from the list of collected items.

          o The autocollecting of new items

    * Saving and loading collected clipboards (Items) to
      XML-formatted files.

          o The data of the items will be written to the files in
          UUEncoded data to make sure that we don't write binary data in
          an UTF-8 orientated fileformat like XML is o Saving multiple
          items in one file is, of course, possible

    * Editing and viewing some supported formats in a clipboard

          o The editing of the COMPOUND_TEXT or normal text target is
          possible o The editing (and previewing in a GtkHtml widget) of
          the text/html target is possible

    * Manipulating of formats

          o Blocking specific formats that are too large to store into
          memory. E.g. Blocking large binary format-types

          o Copying a specified format-type to another format-type o The
          possibility to write a plugin for GNOME Clipboard Manager that
          does the converting of the format-data while copying it to
          another format-type

    * Some advanced UserInterface options

          o The UserInterface is, by default, hidden. So GNOME Clipboard
          Manager is, by default, a clipboard collecting daemon. You can
          make it show its UserInterface by using a small external tool
          or by using the GNOME Clipboard Manager Applet. o Hiding all
          UserInterface objects

          o Making the scrollbar follow while adding new items o
          Autoselect most new collected item

          o Unselect-all after collecting a new item

    * Support for the following selectiontypes

          o The CLIPBOARD-selection : Used when using CTRL+C and CTRL+V
          and the "Copy"- and "Paste"-features in the menus of most
          applications o The PRIMARY selection : The text that is
          selected in your session o The SECONDARY selection : The text
          that was selected the last time in your session o A CUSTOM
          atom : For those who know what they are doing

    * A PanelApplet

          o A PanelApplet for GNOME Clipboard Manager that can make
          GNOME Clipboard Manager perform some specific tasks.

    * A library for your own applications to control GNOME Clipboard

          o GNOME Clipboard Manager comes with libgcm which is a library
          that enables your application(s) to control and make use of
          GNOME Clipboard Managers features.

    * The hosting of plugins
          o You can write plugins for GNOME Clipboard Manager in a same
          fashion as you can with applications like mediaplayers (like


You can download the latest release (which has all the listed features)
here :

You can get a more up-to-date version from CVS. Please note that a
version from CVS is a development version and can contain more or less
bugs than a release. It will definitely not contain less features unless
a specific feature caused very strange problems that cannot be solved.

- I suggest using the cvs for the people who are reading this list -

export CVSROOT=':pserver:anonymous cvs gcm sf net:/cvsroot/gcm'
cvs login
cvs -z3 co -P gcm-2 libgcmtest gcmapplet

More information

You can get more information about GNOME Clipboard Manager from its
website which is available here :

You can get screenshots from GNOME Clipboard Manager here :

Yes, I now hate myself for sending such a large E-mail to very busy

Philip van Hoof aka freax (
irc: mailto:me at freax dot org
Go not to the Elves for counsel, for they will say both no and yes.

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]