All posts by Oliver Sauder

Another Diodon milestone released

I am happy to announce another Diodon milestone 1.1.0 being released today.

You can download it as tarball here or if you use Ubuntu simply install it with the stable ppa:

sudo add-apt-repository ppa:diodon-team/stable
sudo apt-get update
sudo apt-get install diodon unity-scope-diodon

Due to changed dependencies will this version only be available for Saucy 13.10 and Trusty 14.04. Of course for older flavors there will still be an older version available in the ppa and also as tarballs.

This new version finally removes the limitation of maximum 100 items in the clipboard history and therefore brings with it a much more powerful Unity Scope integration and lots more.

If you want to know more in detail what has changed read the following posts:

This milestone is only a start creating the foundation for future improvements such as better integration into other desktop environments and more. I keep you posted.

With this in mind… Happy copying.

Mounting external usb drives automatically to its label

I am maintaining a file server running Ubuntu 12.04 in my company and was faced with the problem how to backup my system easily and on a low cost. As we have a huge amount of data and a rather slow internet connection I have made the decision to backup onto external hard drives which we will rotate frequently. In the end USB drives are still the cheapest option to backup your data… ;).

This blog post is though not about backing up your data but rather how to mount a USB drive automatically when connected to a server and access it with its label. This helped me to have a specific mount point for backup hard discs but won’t interfere if anyone else needs to connect another USB drive to the server. I am sure you might have different use cases for such feature as well. I have tested following configuration on a Ubuntu Server 12.04 but it should run on other Debian based operating systems as well.

OK this said let’s get started with the configuration then.

While I was looking for a tool to automatically mount my usb drives I found usbmount which was very simple and pretty much worked out of the box.

You can install it with the following command:
apt-get install usbmount

After usbmount is installed you can simply connect your usb drive to your server and usbmount will automatically mount it to /media/usb0. When an additional drive is connected it will be mounted to /media/usb1 and so on.

That’s a good start… but there is a draw back that every drive connected to the server will be mounted to /media/usb0 so we cannot really distinguish the different drives from each other. But usbmount has a feature for this that it creates a symlink for each drive in the folder /var/run/usbmount.

Such symlink can look like the following:
lrwxrwxrwx 1 root root 11 Apr 11 10:53 SAMSUNG_HM160HI_1 -> /media/usb0

The name of the symlink is built by using the vendor, model and partition number. So accessing the hard disc you simply access it using this symlink. This is great when you want to identify a specific hard disc. There is still one problem with it though when I want a group of hard disc to be accessed the same way I cannot really use this symlink.

So my idea was why not using the volume label and when I format hard drives I simply give all those drives the same volume label.

This can be done for instance with following format command using ext4 as an example (of course you can change ext4 to whatever file system you need):
mkfs.ext4 -L VOLUMENAME /dev/sdb1

Unfortunately usbmount doesn’t create any symlink of drives by its volume label. I therefore created following script to do this:

#!/bin/sh
# This script creates the volume label symlink in /var/run/usbmount.
# Copyright (C) 2014 Oliver Sauder
#
# This file is free software; the copyright holder gives unlimited
# permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
#
# This file is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
#
set -e

# Exit if device or mountpoint is empty.
test -z "$UM_DEVICE" && test -z "$UM_MOUNTPOINT" && exit 0

# get volume label name
label=`blkid -s LABEL -o value $UM_DEVICE`

# If the symlink does not yet exist, create it.
test -z $label || test -e "/var/run/usbmount/$label" || ln -sf "$UM_MOUNTPOINT" "/var/run/usbmount/$label"

exit 0

This script you have to save to /etc/usbmount/mount.d/01_create_label_symlink and do not forget to add executable rights to it (chmod +x /etc/usbmount/mount.d/01_create_label_symlink). usbmount will run this script whenever a hard disc is connected.

Beside creating this symlink we also have to make sure that the symlink will be removed when the hard disc is disconnected. usbmount already has a script which removes symlink from /var/run/usbmount but we have to adjust it as it only removes the first link and not all. We can simply open the file /etc/usbmount/umount.d/00_remove_model_symlink and remove the break statement in line 19.

The script will then look like the following:

#!/bin/sh
# This script removes the model name symlink in /var/run/usbmount.
# Copyright (C) 2005 Martin Dickopp
#
# This file is free software; the copyright holder gives unlimited
# permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
#
# This file is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
#
set -e

ls /var/run/usbmount | while read name; do
    if test "`readlink "/var/run/usbmount/$name" || :`" = "$UM_MOUNTPOINT"; then
        rm -f "/var/run/usbmount/$name"
    fi
done

exit 0

So now when we connected a hard disc to the server there will be a symlink created /var/run/usbmount/VOLUMENAME and such path we can then use to point to for backups or whatever other use case you have.

Hope this was helpful. While working with usbmount I have found some more articles which might be helpful for you e.g. when you have issues with permissions or want to use ntfs as a file system.

Introducing new default settings for Diodon

Diodon version 1.1.0 is shaping up very nicely and is hopefully soon going to be released after some last polishing.

Before this is gonna happen I want to introduce you to two new default settings which further make Diodon a slick and fast utility with as less footprint as possibly but still keeping options available for more advanced users. But let me elaborate.

Disabling of primary selection support by default

Primary selection support has been added to Diodon since its very first version. What this features does is when a certain text is selected in any editor it will automatically be added to the clipboard history and then it is accessible from the Diodon indicator or unity scope to paste at any time. This is cool especially when you frequently just select and paste with a middle mouse click in a different editor. As a primary selection can also be pasted with the shortcut <Shift>Insert when such support is enabled, Diodon is able to instant paste in applications which do not support <Ctrl>V for paste (e.g. Gnome Terminal).

However this feature also brings some disadvantages with it. First of all it floods the clipboard history with quite some items and especially if you do not use the select/paste feature at all. This distracts you from finding the items you actually want to paste. Furthermore does enabling of this feature potentially drains your battery quicker in case you are not connected directly to a power source.

Advantages and disadvantages indicate that primary selection support is an advanced feature. We therefore have decided to disable it by default but of course you are still able to enable it again in the Diodon preferences.

Not adding images to clipboard history by default

In versions before 1.1.0 Diodon added images to the clipboard history at all times. Those images can for instance be copied by your browser to the clipboard when you right click on an image and choose “Copy image”. Or also when you create a print screen and choose “Copy to clipboard”.

Nice but why do you want to disable this you might ask? Well unfortunately images are in general much bigger than just some text. This has an impact on the memory consumption of Diodon. So Diodon needs to copy the image to the memory and then create previews for it so you can easily identify it when you paste it. There are also some circumstances where image applications like Gimp constantly copy images to the clipboard which gives Diodon a lot of work to do increasing therefore CPU usage – and actually in most cases the many pictures copied by Gimp you do not really want to add to your clipboard history.

As this feature is not so often used and there is a possibility to decrease the memory footprint of Diodon, it is now disabled by default so images won’t be added to the clipboard history automatically. There is though an option available in Diodon preferences where you can enable it again.

Diodon-Preferences

No worries though. Disabling “Add images to clipboard history” won’t delete any image items from the history which have been copied previously. Such will always be available to be pasted for you till you decide to clear them from your history. That also means that you can temporarily enable/disable the feature whenever you need to without loosing any items copied already.

Want to test run it?

Convinced and want to test run it? You can do this with the following commands:

sudo add-apt-repository ppa:diodon-team/daily
sudo apt-get update
sudo apt-get install diodon unity-scope-diodon

Remember though that this is still a test version which might have issues. If you find any please report them. And also let us know what you think about this change in the comments section below.

Clipboard Unity Scope with its full potential

Test version of Diodon with its new Zeitgeist integration has been out for a while. In the first test version there was only a limited version of Unity Diodon Scope available. We have been working on improving this integration to bring the Unity Scope to its full potential. In this post do I want to describe what new features have been integrated and how you can testrun those before we hopefully release them soon.

When the Unity Scope (resp. Lens back then) has been introduced in Diodon version 0.4.0 it was fairly limited and it was only possible to search in the recent clipboard history which had a limit of 100 items. With the recent change of Zeitgeist and infinitive clipboard history this limit has been removed and makes the Unity Scope more powerful itself.

But there is more like the new filters for category (Text, Files, Images) or time when a clipboard item has been copied.

Diodon Unity Scope Filter

With this filter and text search available you hopefully find any item you have copied before. There is also a preview available when you click on a clipboard item. The preview will show you the full content of the item (especially helpful when verifying a longer piece of text) with additional information what application the item has been copied from and the date copied.

Unity Diodon Scope Preview

You can open Unity Diodon Scope with the hotkey <Super>b or simply by pressing the clip icon on the right hand side on the dash and start search your clipboard history.

The Diodon Scope used to be an plugin which caused some issues as Smart Scopes service was not able to start and stop it itself. We therefore have now turned the scope into its own service as it should be which also gives the advantage that the scope can be closed when not needed to safe resources, but started as soon as requested.

This brought about some changes in the packages to install it – we have removed the package diodon-plugins (will be added again as soon as we have other plugins available again) and added a new package unity-scope-diodon. As soon as you have installed this package and logged in and out again the scope will be available. No need to activate it as before.

If you are interested and want to test it use the following commands:
sudo add-apt-repository ppa:diodon-team/daily
sudo apt-get update
sudo apt-get install diodon unity-scope-diodon

Let us know what you think and report a bug if you find any glitches or have suggestion to improve it.

I herewith also want to thank all translators who took the time to update the Diodon translations. Great work. There are still some translations which are not quite up-to-date yet. Have a look whether you can help out.

Storing clipboard items infinitely – test version

After a long time of silence am I delighted to present you a new version of Diodon. We have been moving from a xml clipboard storage to directly implementing Zeitgeist. This, first of all, brings a lot of changes under the hood e.g. clipboard storage is not limited by a number of items anymore but clipboard content can be stored theoretically infinitely. This will help us implement new features in the future. However, there are also some direct advantages for users which I want to introduce here. Please remember though when reading this post that this is still a test version. Things might still change and there are still open issues which I will mentioned at the end of this post. Also due to higher requirements in different libraries such as a newest Zeitgeist library (>= 0.9.14), we can not provide this new features for Ubuntu older than 13.10.

This said, let’s dive into what’s new.

Diodon Unity Scope without limits

Diodon has been providing a Unity Lens/Scope integration for quite some time. However, it has been limited due to the fact that you could only search in a list of a maximum of 100 items. There is no such limit anymore which makes the Diodon Unity Scope much more powerful. Also it is now nicely integrated into the new Unity Smart Scopes with a preview and keyword search (e.g. start search with clipboard: or diodon: to search in clipboard history). For now you can find the clipboard history underneath the Info master scope. Unity Scope is still a Diodon plugin so package diodon-plugins needs to be installed and afterwards plugin Unity Scope activated in Diodon -> Preferences -> Plugins.

UnityLensClipboard

Clear clipboard history by time

There has always been the feature to Clear the whole clipboard history. But what if you only wanted to delete the items recorded in the last hour or last day? With this new release this is now fairly simple by using the “Security & Privacy” component in System settings (Update: For non Unity desktop environments you need to install the package activity-log-manager and start the application of the same name). There go to the Tab “Files & Applications” where you find a “Clear Usage Data…” button. In the new dialog simply choose the desired time frame you want to clear. And voila job done…

ClearUsageData

Exclude my Password Manager from adding items to clipboard history

Concerns have been raised that passwords copied by a password manager also get added to the clipboard history and remain there. If you have similar concerns then this new feature might be of interest to you. It is now possibly to exclude certain applications from adding items to the clipboard history. For this we also use the “Security & Privacy” component in System settings (Update: Or activity-log-manager for non Unity systems). There in tab “Files & Applications” simply add the application you wish to the Exclude list. Content of such application will still be copied into the clipboard but won’t remain in resp. added to the history.
Please note though that Diodon can only correctly identify native applications. This means that for example Java applications can not be excluded from adding to clipboard storage. We will see whether we can improve this in the future.

ExcludeApp

How can I install new test version?

As this is only a test version it is currently only available in the daily ppa.

Run the following commands to install it:

sudo add-apt-repository ppa:diodon-team/daily
sudo apt-get update
sudo apt-get install diodon diodon-plugins

If you want to use the Unity Scope, do not forget to activate it in Diodon -> Preferences -> Plugins.

Known issues – good to know before start testing

As said is this only a test version which has still issues. So if you find any bugs please report them.

Here is a list of known issues which should be fixed before the final release:

For developers and translators

There have been a few changes in different string used within Diodon. It would therefore be great if all translator out there could have a look and update their translation of expertise. Thanks in advance for your valuable work.

For developers of plugins please note that the API is not compatible anymore with older version however the changes are not major. Best have a look at the source code comments. If their are still questions as always can you contact us on IRC Freenode channel #diodon.