Archive for the Cool stuff Category

10 February 2010

Merge/split PDF files directly in Dolphin (KDE)

KDE logo

Context

I have just switched to KDE after using Gnome during many years, and I am quietly getting used to it.

But recently I had to merge 2 PDF files, so I searched for a good solution for KDE. There are many command-line tools to do this on Linux, but the few graphical interfaces are very ugly.

So I thought it would be great to integrate a merge/split PDF function directly in Dolphin, the KDE file manager. In dolphin when you right-click on a file, a menu pops up with a sub-menu “Actions”, where you can add your features. I will now explain how I did this.

Prerequisites

  • You need to be running a recent version of KDE (using Dolphin as your file manager). I have the version 4.3.5.
  • To manipulate your PDF files, you need a command-line tool, I chose pdftk. You can install the package pdftk on kubuntu, for example by typing in a terminal:
    sudo apt-get install pdftk

Create scripts to merge/split PDF files automatically

I created two scripts: one to merge PDF files, and the other one to split them. I put both files in the directory /opt/pdf-service:

  • /opt/pdf-service/pdf-service-merge.sh (download):
    #!/bin/bash
    # Run a command to merge PDF files
    # Used to add a context menu in Dolphin for PDF files
    
    pdftk "$@" cat output "${1%.pdf}_merged.pdf"
  • /opt/pdf-service/pdf-service-split.sh (download):
    #!/bin/bash
    # Run a command to split PDF files
    # Used to add a context menu in Dolphin for PDF files
    
    for file in "$@"
    do
       out_dir="${file%.pdf}_pages"
       mkdir -p "$out_dir"
       pdftk "$file" burst output "$out_dir/page_%04d.pdf"
    done

Here are the steps you need to follow to get these files properly on your computer:

  • Create the /opt/pdf-service directory: type in a terminal:
    sudo mkdir /opt/pdf-service
  • Download the two files in the directory: type in a terminal:
    cd /opt/pdf-service && sudo wget http://www.viesurip.fr/wp-content/uploads/2010/02/pdf-service-split.sh http://www.viesurip.fr/wp-content/uploads/2010/02/pdf-service-merge.sh
  • Make the files executable: type in a terminal:
    sudo chmod a+x /opt/pdf-service/*.sh

Add the service to Dolphin

A service in Dolphin is declared using a simple .desktop file in the directory /usr/share/kde4/services/ServiceMenus/: Here is the file you should put as /usr/share/kde4/services/ServiceMenus/pdf-servicemenu.desktop (download):

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/pdf
Actions=split;merge;

[Desktop Action split]
Name=Split PDF pages
Name[fr]=Découper les pages du PDF
Icon=gnome-mime-application-pdf
Exec=/opt/pdf-service/pdf-service-split.sh %F

[Desktop Action merge]
Name=Merge PDF files
Name[fr]=Fusionner les PDFs
Icon=gnome-mime-application-pdf
Exec=/opt/pdf-service/pdf-service-merge.sh %F

To install this file, just type in a terminal:

cd /usr/share/kde4/services/ServiceMenus && sudo wget http://www.viesurip.fr/wp-content/uploads/2010/02/pdf-servicemenu.desktop

Conclusion

Now you just need to close all opened windows of Dolphin, launch it again, and you should see the menu entries in the Actions submenu when you right-click on a PDF file.

The entries are only available in English and French in my file, but you can easily add another language in the pdf-servicemenu.desktop file.

It would be great to have an user-friendly interface to install packages that add useful submenu entries like that! Some sorf of Dolphin extensions…

No Comments yet »

24 September 2009

Jolicloud internship: first steps of a start-up

Jolicloud internship: first steps of a start-up

I just finished my internship at Jolicloud as part of my studies in TELECOM Bretagne. It lasted almost one year.

Jolicloud is a new start-up created by Tariq Krim (who created Netvibes) that builds an operating system adapted to netbooks and focused on the web technologies and services.

I lived from the inside the launching of a start-up: idea, research, launching of a private alpha, founding, arrival of big competitors (like Google Chome OS), hiring, beta and release roadmap… We were three at the beginning: Tariq Krim, Romain Huet and me.

Regarding development, it is an interesting challenge: transform a Linux distribution into an ergonomic and beautiful operating system based on web technologies instead of the usual Linux technologies (HTML instead of GTK, Javascript instead of C…).

We use Ruby On Rails and JQuery to develop the central web application that constitutes Jolicloud and python to make our web application communicate with the system.

First developments were focused on two things: modify Ubuntu to transform it into the Jolicloud OS, and create an applications directory like the one on the Apple iPhone, to install/remove/update applications in one click. This directory is based on APT, the technology used by Debian (and Ubuntu) to manage files on the system. And Prism has been fully integrated to put web applications (Google Docs, GMail, Facebook…) on the desktop.

The currently available version of Jolicloud is far from complete: it is just an idea of what we want to do. Developments go faster now and we have plenty of ideas I can’t talk about. Sadly I have to go back to school for my 3rd year at TELECOM Bretagne, but I hope I will still be able to participate in Jolicloud.

While Google Chrome OS will probably only allow to launch web applications, local applications can be used with Jolicloud. And Jolicloud wants to integrate all web services, not only Google ones… And Moblin isn’t really focused on the web. Personnally, I would like the Jolicloud concept on my notebook too, if the interface were adapted. So Jolicloud probably has a bright future… to be continued :)

1 Comment »

6 September 2009

The Internet in 2015: privacy in the cloud?

A lock

Saturday, September 26th 2015,

The Internet has evolved a lot in the last 5 years. In 2009, using online services meant trusting third-party services to keep your data safe. For example Facebook knew everything about your activities and your friends, Google Docs had all the documents you collaborated to, Gmail had all your emails… All these services had quite unclear terms of services. They claimed that they wouldn’t use your data in wrong ways but they used it to display targeted ads. And you could never be sure that they wouldn’t lose your data or get hacked. This trust problem made difficult to use cloud services systematically, though their advantages were becoming obvious.

Now this problem has been at least partly fixed thanks to Internet Service Providers. My situation is very common: I have a very fast and symmetrical optical fiber connection. My Freebox v8, my new Internet box, is always connected to the Internet and includes a server that hosts all my personal data and data from other members of my family. Our family computer, my personal notebook, my Jolicloud netbook and my IPhone are constantly synchronized to the hard disk of our Freebox (through our private network or through the Internet).

The server of the Freebox consists mainly of an HTTP server with a web interface, and many APIs. A web interface is available for each member of the family at http://nickname.free.fr. Mine is at http://twisterss.free.fr. It resembles a personal blog with many social features.

This URL also is the key to my digital life. It is used by many websites to access the APIs of my Freebox using OAuth. Facebook stores the messages, links, pictures and videos I share on my Freebox using these APIs. My freebox has the authorizations to access data of my friends too. They all have an unique URL like mine, giving acces to the same APIs. First Facebook didn’t want to use this architecture because it made them lose control over the data of their users, but seeing new competitors growing rapidly using this new architecture made them change their mind. Now they even have developed a proprietary plugin with a special API extension that is more rapid and makes more features available than the default one. I could install it on my freebox in one click, but I prefer the default open-source one, as I’m not really sure what the closed-source Facebook plugin does. Now the value of Facebook is in the way they sort data to show the most interesting, and in all the third-party applications available to manage one’s digital life. And they don’t have to pay for the huge servers they used to have for pictures and video uploads, as they are directly sent from the user’s server.

Google uses this architecture a lot too: it searches both in my friends’ data and on the Internet, and can even tell me when some friends made searches related to mine (if they agreed to make it public, obviously). As Facebook, they propose a proprietary plugin that indexes data more efficiently. Jolicloud uses my private server to synchronize apps and files on all my netbooks, and to propose me applications my friends like.

With this architecture, users have a much better control over their data, as it is stored on their private server, and most of the time only meta data is sent to the websites (links and descriptions for Google or Facebook…). All data is synchronized on all computers, so it can be restored if a hard disk fails. Data sharing is made much more efficient and fast as it isn’t sent to a central server. But this architecture isn’t perfect: if users install malicious plugins on their box, or if they give access to their data to any website through OAuth, then their privacy is still threatened.


This idea of the future is the Internet that I would like to use in 2015. For this to happen, we would need to find standards for the APIs that everyone accepts, and web services like Facebook would have to understand the importance of privacy. ISPs probably have interest to make this happen as they would play a much more important role on the Internet. But only users can make this happen if privacy really matters to them.

2 Comments »

  • Welcome!

    I write on this blog about my projects, my practices and my discoveries in the domains of the internet, networks and computer science.

    Tristan, French student in TELECOM Bretagne, a "grande école" specialized in telecommunications

    Contact me Twitter Facebook

    Read more »