بسم الله الرحمن الرحيم

Prakata

Selama ini saya tidak pernah menggunakan aplikasi clipboard manager semacam Clipman (xfce4-clipman-plugin) yang kegunaannya untuk menangkap, mengumpulkan, dan memanajemen hasil inputan copy. Saya merasa belum membutuhkannya. Saya pikir copy dan paste adalah hal yang sangat sederhana, tidak perlu sampai dimanajemen segala.

Sampai beberapa hari lalu, saya membalas pertanyaan di group openSUSE Indonesia, dan salah mention, lalu saya copy jawaban dan hapus. Saat akan saya paste ke bubble yang bertanya, ternyata clipboard saya sudah tertumpuk oleh inputan copy yang lain. Hahaha. Beginilah yaa, usia sudah tidak lagi muda, terdistraksi sedikit dapat menimbulkan kelupaan.

Solusi

Hal yang saya alami tidak akan terjadi apabila saya menggunakan clipboard manager. Tahun ini sebenarnya sudah pernah juga mencoba clipboard manager, karena melihat video dari Kai Hendry tentang bagaimana dia menghandle clipboard pada sistemnya. Ia mengunakan cdown/clipmenu. Lantas saat saya coba pasang, Hahaha, selama pemakaian resource memory saya terus naik. Karena kurangnya ilmu saat itu dan motivasi yang sekedar ikut-ikutan, lantas niat menggunakan clipboard manager pupus di pinggr jalan.

Clipmenu adalah clipboard manager yang menggunakan dmenu atau Rofi sebagai antar muka.


gambar_1

Gambar 1 - Tampilan Clipmenu menggunakan Rofi sebagai antar muka

Instalasi

Untuk memasang clipmenu pada sistem, terdapat dua cara yang saya ketahui.

  1. community/clipmenu (Arch Linux)

  2. cdown/clipmenu (GitHub)

Dalam catatan ini, saya akan mencoba meng-cover kedua cara ini.

Konfigurasi akan saya tulis pada bagian Konfigurasi.

Clipmenu from Arch Repo

Cara pasangnya sangat mudah.

$ sudo pacman -S clipmenu xsel

Clipmenu memerlukan paket xsel untuk menhandle clipboard.

Clipmenu from GitHub

Pertama-tama beri bintang pada repository cdown/clipmenu. Sebagai bentuk apresiasi kita terhadap waktu dan pikiran developer.

  1. Kloning dari GitHub repo dan letakkan pada direkotri tempat kalian mengumpulkan repository dari GitHub. Saya mempunyai direktori ~/app/ tempat saya mengumpulkan resource aplikasi.

    $ cd app
    $ git clone https://github.com/cdown/clipmenu.git
  2. Masuk ke dalam direktori clipmenu dan buat symbolic link ke direktori /usr/bin/.

    $ cd clipmenu
    $ sudo ln -sf $HOME/app/clipmenu/clipdel /usr/bin/clipdel
    $ sudo ln -sf $HOME/app/clipmenu/clipmenu /usr/bin/clipmenu
    $ sudo ln -sf $HOME/app/clipmenu/clipmenud /usr/bin/clipmenud

    Sesuaikan sumber dari link ($HOME/app/) dengan path tempat kalian menyimpan kloning repo.

  3. Periksa apakah semua symbolic link sudah berada di tujuan dan mengarah ke arah yang benar.

    File Binary

    $ ll /usr/bin | grep -E 'clipdel|clipmenu|clipmenud'
    lrwxrwxrwx 1 root root  39 Dec 16 15:18 clipdel -> /home/bandithijo/app/clipmenu/clipdel
    lrwxrwxrwx 1 root root  38 Dec 16 15:18 clipmenu -> /home/bandithijo/app/clipmenu/clipmenu
    lrwxrwxrwx 1 root root  39 Dec 16 15:18 clipmenud -> /home/bandithijo/app/clipmenu/clipmenud
    
    Informasi

    Clipmenu menyediakan init/clipmenud.service, namun saat saya jalankan, clipmenu tidak dapat mengambil clip. Sehingga saya tidak menggunakan cara ini.

    Apabila teman-teman berhasil, teman-teman dapat menggunakan cara ini.

    Saya menggunakan cara lain, yaitu dengan menjalankan clipmenud secara manual pada script autorun.

Konfigurasi

Sebagai informasi, konfigurasi yang saya tulis ini adalah konfigurasi untuk i3wm/i3-gaps. Untuk teman-teman yang tidak menggunakan wm yang sama, dapat menyesuaikan dan memodifikasi dengan wm masing-masing.

Aktifkan Clipmenu Daemon

Ada dua cara untuk menggukana mengaktifkan clipmenud (clipmenu daemon). Dengan menjalankannya saat sistem startup atau saat sistem booting.

Konfigurasi Startup pada WM

i3wm

Tambahkan baris berikut pada file config i3wm.

$ vim .config/i3/config
FILE$HOME/.config/i3/config
1
2
# clipmenu daemon
exec --no-startup-id clipmenud


dwm

Tambahkan baris berikut pada script autorun/autostart, atau pada .xinitrc.

pkill -f "bash /usr/bin/clipmenud"; pkill -f "clipnotify"; /usr/bin/clipmenud &

Pada perintah di atas, saya melakukan proses kill terlebih dahulu kepada clipmenud & clipnotify, tujuannya agar tidak terjadi redundancy pada proses yang sedang berjalan apabila dwm direstart.

Kemudian, baru saya memanggil clipmenud dan membuatnya berjalan di background dengan menambahkan simbol ampersand (&). clipmenud secara otomatis akan menjalankan clipnotify yang bertugas untuk menangkap clipboard.

Systemd Service

Perhatian

Saya tidak berhasil menjalankan clipmenud.service. Sehingga saya tidak menggunakan cara ini.

Aktifkan/enable service, agar saat sistem booting, clipmenud akan sekalian di jalankan.

$ sudo systemctl enable clipmenud.service
$ sudo systemctl start clipmenud.service

Definisikan Default Path

Sebelum mengkonfigurasi, selalu biasakan untuk melihat help atau manual dari clipmenu terlebih dahulu.

$ clipmenu -h
clipmenu is a simple clipboard manager using dmenu and xsel. Launch this
when you want to select a clip.

All arguments are passed through to dmenu itself.

Environment variables:

- $CM_DIR: specify the base directory to store the cache dir in (default: $XDG_RUNTIME_DIR, $TMPDIR, or /tmp)
- $CM_HISTLENGTH: specify the number of lines to show in dmenu/rofi (default: 8)
- $CM_LAUNCHER: specify a dmenu-compatible launcher (default: dmenu)

Nah, kita perlu menambahkan environment variable.

Secara default, clipmenu menggunakan dmenu sebagai antar muka. Namun bagi yang menggunakan rofi dapat menambahkan rofi pada CM_LAUNCHER.

Jangan lupa juga untuk mendefinisikan path dari CM_DIR. Saya memilih untuk membuat direktori clipmenu pada /tmp agar dapat saya manipulasi, seperti menghapus clipboard yang tersimpan.

Untuk teman-teman yang menggunakan Display Manager seperti LightDM dan GDM, silahkan tambahkan baris di bawah ini pada file ~/.profile. Untuk yang menggunakan startx dapat menambahkannya pada ~/.xinitrc.

$ vim ~/.profile
FILE$HOME/.profile
1
2
3
# Clipmenu Environment Variables
export CM_LAUNCHER=rofi-clipmenu
export CM_DIR=/tmp

Perhatian! Pada CM_LAUNCHER= di atas, saya membuat custom bash script yang bernama rofi-clipmenu untuk memanggil perintah rofi yang sudah saya modif agar menampilkan prompt “CLIPBOARD” dengan baris dan lebar tertentu.

Maka kita akan membuatnya. Kalian bisa membuatnya di lokal ~/.local/bin/ (kalau punya), atau langsung saja di /usr/bin/.

$ sudo vim ~/.local/bin/rofi-clipmenu
FILE$HOME/.local/bin/rofi-clipmenu
1
2
3
#!/bin/sh

rofi -dmenu -p 'CLIPBOARD' -lines 8 -width 500

Sesuaikan dengan preferensi yang kalian inginkan.

Jangan lupa buat menjadi excutable.

$ chmod +x ~/.local/bin/rofi-clipmenu

Kalau teman-teman yang menggunakan dmenu, tinggal menggantinya menjadi dmenu.

Keyboard Shortcuts

Selanjutnya tinggal mendefiniskan keyboard shortcut.

Karena menggunakan wm, maka caranya sangat mudah sekali, tinggal tambahkan pada konfigurasi masing-masing.

i3wm

FILE$HOME/.config/i3/config
1
2
bindsym $mod+p exec --no-startup-id clipmenu
bindsym $mod+Shift+p exec --no-startup-id clipdel -d '.'

Perhatikan pada baris kedua, saya mempergunakan untuk menghapus seluruh clipboard menggunakan perintah $ clipdel -d '.'.

dwm

FILEconfig.h
1
2
{ MODKEY,             XK_p,   spawn,   SHCMD("/usr/bin/clipmenu") },
{ MODKEY|ShiftMask,   XK_p,   spawn,   SHCMD("clipdel -d '.'") },

Sesuaikan keyboard shortcut sesuai preferensi kalian.

Saya menggunakan :

SUPER + P, untuk memanggil clipmenu.

SUPER + SHIFT + P, untuk menghapus seluruh clipboard yang ada di clipmenu.

Untuk memilih clip mana yang ingin kita pergunakan kembali, tinggal menekan arrow key / untuk memilih, tekan ENTER untuk memasukkannya pada PRIMARY. Kemudian, tinggal kita paste di mana saja.

gambar_2

Gambar 2 - Ilustrasi penggunaan Clipmenu dengan Rofi

Pesan Penulis

Terdapat banyak sekali clipboard management yang dapat kita pergunakan. Saat ini saya sedang mengunakan clipmenu, entah besok akan mencoba yang mana lagi.

Catatan dokumentasi ini masih jauh dari kata sempurna. Sebaik-baik dokumentasi adalah dokumentasi resmi yang ditulis oleh developer pengembang aplikasi. Silahkan bereksplorasi terhadap clipmenu dengan merujuk pada referensi yang saya sertakan di bawah.

Karena keterbatasan pengetahuan, Saya masih mengalami kegagalan dalam menjalankan clipmenud daemon melalui systemd service. Hehehe.

Referensi

  1. wiki.archlinux.org/index.php/Clipboard
    Diakses tanggal: 2018/12/16

  2. github.com/cdown/clipmenu
    Diakses tanggal: 2018/12/16


Penulis

bandithijo

My journey kicks off from reading textbooks as a former Medical Student to digging bugs as a Software Engineer – a delightful rollercoaster of career twists. Embracing failure with the grace of a Cat avoiding water, I've seamlessly transitioned from Stethoscope to Keyboard. Armed with ability for learning and adapting faster than a Heart Beat, I'm on a mission to turn Code into a Product.

- Rizqi Nur Assyaufi

d98d8237fef8f1017d0be931b6e291341cbe6ca8