Dodawanie ikony do skryptu w openSuse/Adding an icon to a script on openSuse

Dodawanie ikony do skryptu w openSuse/Adding an icon to a script on openSuse

In Polish

Czasami trzeba dodać ikonę do skryptu, który uruchamia jakiś program w Linuksie. Ikona samego skryptu nie jest zbyt zachęcająca. Poza tym możemy mieć wiele takich skryptów i dobrze by było  je odróżniać od siebie.

Dodanie ikony proste nie jest z punktu widzenia windowsiarza. Weźmy jako przykład Skype. Program ten zwykle nie uruchamia się z kamerą bez problemów na Linuksie. Napisałem  już o tym osobny artykuł (https://tomaszzackiewicz.wordpress.com/2013/10/25/webcamera-on-opensuse/).  Jednak wpisywanie cały czas polecenia do konsoli:

LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so skype

Jesteśmy przyzwyczajeni do grafiki i kliknięć myszą. Dla uruchomienia Skype’a z kamerką na Linuksie jest niewygodne. Trzeba to zautomatyzować. I do tego możemy napisać skrypt RunSkype w dowolnym edytorze tekstowym:

#!/bin/bash
LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so skype

Te dwie linijki wystarczą. Plik tesktowy powinien zmienić się do postaci skryptu wykonywalnego. Umieścić go możemy w katalogu bin w naszym  katalogu domowym (/home/nazwa_użytkownika). Jeśli go nie mamy, stwórzmy go. Musi nazywać się bin.

Dajemy naszemu skryptowi prawa wykonywalne wchodząc do bin, odpalając tam konsolę i wpisując w konsoli:

chmod +x RunSkype

Teraz, kiedy go klikniemy, powinien się odpalić nasz Skype. Z możliwością użycia kamerki, oczywiście.

Jednak ciągle to jest zwykły skrypt, a my chcielibyśmy, aby zamiast czarno-szarej ikonki była ikonka Skype’a. Aby to osiągnąć, musimy umieścić nasz skrypt wykonywalny w katalogu /usr/bin. Stąd będzie dostępny z poziomu systemu, a nie naszego katalogu domowego.

Musimy też stworzyć drugi plik tekstowy z rozszerzeniem .desktop. Ale najpierw ściągamy ikonkę Skype’a z internetu, np. w formacie png. Ikonkę umieszczamy w katalogu /usr/share/icons. Idziemy do /home/nazwa_użytkownika/Pulpit. Tutaj umieszczamy plik tekstowy RunSkype.desktop:
[Desktop Entry]
Comment[pl]=Skype Internet Telephony
Comment=Skype Internet Telephony
Exec=bash /usr/bin/RunSkype
Icon=/usr/share/icons/Skype_icon.png
#GenericName[pl]=
#GenericName=
#MimeType=
Name[pl]=Skype
Name=Skype
#Path=
#StartupNotify=true
Terminal=false
#TerminalOptions=
Type=Application
#X-DBUS-ServiceName=
#X-DBUS-StartupType=
X-KDE-SubstituteUID=false
#X-KDE-Username=

Może mieć postać taką, ale może być i krótszy (mniej linii). Wykomentowałem (linie z #) rzeczy, które są nam zbędne. Można w ogóle te linie usunąć z pliku i nie będzie problemu. Najważniejsze są tu:

[Desktop Entry]

Exec=bash /usr/bin/RunSkype
Icon=/usr/share/icons/Skype_icon.png

Linia [Desktop Entry] mówi nam, jaki to jest plik – plik dotyczący pulpitu.

Linia Exec to jest ścieżka do naszego pliku wykonywalnego, czyli skryptu, którego umieściliśmy w /usr/bin/RunSkype. To bash jest pomocne w uruchomieniu tego pliku i lepiej go nie pomijać.

Linia Icon to jest ścieżka do naszego obrazka ikonki Skype, którą umieściliśmy w /usr/share/icons/Skype_icon.png.

Plik RunSkype.desktop uruchamia skrypt Skype’a z kamerką i nadaje ikonce skryptu ikonkę Skype’a. Znajduje się ona na pulpicie i wystarczy ją kliknąć, aby uruchomił się nasz Skype z działającą kamerką.

I oto poprawiliśmy to, co schrzanili inżynierowie z Microsoftu. Dzięki.

In English

Sometimes we need to add an icon to a script that can run a program on Linux. The script icon isn’t too beautiful. Besides, there can be many such icons, and we must differ them.

According to Windows users, adding the icon isn’t too easy. Let’s look at Skype. We can’t start the web camera with Skype on Linux. I wrote other article on this subject (https://tomaszzackiewicz.wordpress.com/2013/10/25/webcamera-on-opensuse/). However, writing on a console :

LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so skype

isn’t a good way to start the program. It should be automated. We can write a script in the editor we like called RunSkype:

#!/bin/bash
LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so skype

These two lines will be enough. We will have a script to run. We can place it in bin folder in our home directory (/home/username). If you don’t see such a folder, create it and call bin.

 We must make the script executable. We should go into the bin folder, and run the console to write:

chmod +x RunSkype

Now, when we click on the folder, Skype runs. We can use the web camera too if we want.

However, we have an ordinary script, and we wish to have the Skype ikon. To do it, let’s place our script  in /usr/bin. The script will be starting on the operating system level, not from our home directory.

We should create another text file with .desktop extension. But first, we download the Skype icon from the Internet, for example png. We should place the icon in /usr/share/icons. Then, we go to /home/nazwa_użytkownika/Pulpit. Here, we can place the file RunSkype.desktop:
[Desktop Entry]
Comment[pl]=Skype Internet Telephony
Comment=Skype Internet Telephony
Exec=bash /usr/bin/RunSkype
Icon=/usr/share/icons/Skype_icon.png
#GenericName[pl]=
#GenericName=
#MimeType=
Name[pl]=Skype
Name=Skype
#Path=
#StartupNotify=true
Terminal=false
#TerminalOptions=
Type=Application
#X-DBUS-ServiceName=
#X-DBUS-StartupType=
X-KDE-SubstituteUID=false
#X-KDE-Username=

The file can have less lines. I commented out some lines (with #) because we don’t need them. We can even delete these lines. The most important are:

[Desktop Entry]

Exec=bash /usr/bin/RunSkype
Icon=/usr/share/icons/Skype_icon.png

[Desktop Entry] line tells us about what kind of file we have – desktop file.

Exec line shows the path to our script that is placed in /usr/bin/RunSkype. The word bash is helpful in running the file.

Icon line shows the path to the Skype icon that is placed in /usr/share/icons/Skype_icon.png.

RunSkype.desktop file starts the Skype script with the web camera and make the Skype icon visible on the pulpit. We can only click on it to run the Skype with its working camera.

So, we’ve fixed the problem. Thanks.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s