Sebagai rujukan

Additional Config for Ranger Files

~/.config/ranger/commands.py
class empty(Command):
    """:empty

    Empties the trash directory ~/.Trash
        """

    def execute(self):
        self.fm.run("sudo rm -rf $HOME/.Trash/.*")
        self.fm.run("sudo rm -rf $HOME/.Trash/*")
~/.config/ranger/rc.conf
map DD shell mv -t $HOME/.Trash %s

Rujukan: Ranger Configuration


Activate Vim TableMode


Note about Vim TableMode

(Visual mode)

  • Press \tm to enable/disable TableMode.

(Insert mode)

  • Start with an empty first row.

  • Then, type using the following format to create the table (borders and alignment will be automatically generated from the basic input):

markdown
|head1|head2|
|=|             → header underline 
|body1|body2|
||              → row divider

Rujukan: dhruvasagar/vim-table-mode


Completely Kill A Process/Program


  • To kill a process e.g. cmus, find out the pid number with the following command first:

    bash
    pidof cmus
  • And then kill it by running the below command:-

    bash
    kill <the-pid-number-obtained-by-the-above-command>

Convert A .txt File to PDF with Enscript & GhostScript


  1. First of all, convert a .txt file to .ps with enscript by running the following command:

    bash
    enscript -p output.ps input.txt
  2. And then convert the .ps file to .pdf with GhostScript:

    bash
    ps2pdf output.ps output.pdf

Rujukan: How to convert a text file to PDF format on Linux


Keluar Dari Server X

bash
pkill X

Rujukan: Xorg - ArchWiki


Log masuk ke dalam server jauh (remote server) melalui SSH tanpa kata laluan


  1. Cipta pasangan kunci dengan perintah ssh-keygen di dalam sistem klien yang ingin digunakan untuk log masuk ke dalam sistem server jauh itu.
    Contohnya: dari VM Win 10 (klien), log masuk ke dalam server SSH Arch.

    Ia menghasilkan dua fail; id_ed25519 dan id_ed25519.pub di dalam direktori .ssh sistem VM tersebut.

  2. Salin kunci awam yang terhasil dari sistem klien itu ke dalam server jauh.

    Dari sistem klien Linux, gunakan perintah ssh-copy-id.

    bash
    ssh-copy-id -i .ssh/id_ed25519.pub remote_user@server_ip_address

    Dari sistem klien selainnya seperti Windows dan FreeBSD, gunakan perintah cat.

    bash
    cat .ssh/id_ed25519.pub | ssh remote_user@server_ip_address 'cat >> .ssh/authorized_keys'

    Kriptogram kunci awam yang dimiliki oleh sistem klien telah disimpan di dalam fail authorized_keys (dalam Remote System) yang bertindak memberikan autoriti dan pengesahan untuk sistem klien log masuk ke dalam server jauh SSH tanpa perlu memasukkan kata laluan pengguna remote itu lagi.

Rujukan: How Passwordless SSH Login Works


Memadam Muka Surat Daripada Fail PDF dengan PDFtk


Kes 1:
Fail input1.pdf mempunyai 4 muka surat dengan muka surat terakhir adalah kosong. Untuk memadam muka surat terakhir yang kosong ini, jalankan salah satu baris perintah daripada yang disenaraikan di bawah:-
bash
pdftk input1.pdf cat 1-3 output out.pdf

atau

bash
pdftk A=input1.pdf cat A1-3 output out.pdf
Kes 2:
Fail input2.pdf mempunyai 15 muka surat dan halaman kelima ingin dipadam. Untuk memadam muka surat nombor 5 ini, jalankan salah satu baris perintah daripada yang disenaraikan di bawah:-
bash
pdftk input2.pdf cat 1-4 6-end output out.pdf

atau

bash
pdftk A=input2.pdf cat A1-4 A6-end output out.pdf

Rujukan: PDFtk Manual / alternatif


Menggabung Fail PDF dengan GhostScript


Jalankan baris perintah seperti di bawah:-

bash
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=output.pdf *.pdf

Rujukan: How to Use Ghostscript

Tetapi lebih mudah menggunakan PDFtk.

bash
pdftk *.pdf cat output combined.pdf

Nota Pendek / Tambahan


  1. nftables sebagai alternatif kepada https://wiki.archlinux.org/index.php/Iptables

  2. Laluan ke koleksi Vivaldi Thumbnails:
    /opt/vivaldi/resources/vivaldi/resources/

  3. Manual Rujukan Bash: Binaan-binaan Bersyarat > case.

  4. Manual Rujukan Bash: Fungsi-fungsi Shell

  5. urlscan di dalam Vim :
    :!urlscan % (% merujuk kepada fail/ penampan semasa.)


Packages To Be Installed for Complete Function of Fcitx5


Fcitx5 packages for different language inputs like Japanese on GUI applications such as Vim / NeoVim, LibreOffice and a web browser:

  • fcitx5-im, a group of packages that includes fcitx5, fcitx5-configtool, fcitx5-gtk and fcitx5-qt.

  • fcitx5-mozc (for Japanese input method).

Layout untuk aturan papan kekunci:-

Malay (msa)Keyboard - Malay (Jawi, Arabic Keyboard) - Malay (Jawi, phonetic)
Arabic (ara)Keyboard - Arabic - Arabic (Eastern Arabic numerals, extensions in the 4th level)

Pautan ke PDF / alternatif


Paparan Tulisan bagi Bahasa ‘Kanan-ke-Kiri’ dalam Conky


Tambahkan | fribidi --ltr selepas teks untuk memaksa paparan tulisan yang betul. Contoh:

lua
${color grey}${font arial:size=15}${alignc}${exec python .scripts/idate.py | fribidi --ltr}${font}

Rujukan: A Workaround for RTL languages not supported>


Rekod Skrin Desktop dengan FFmpeg


Cara merekod skrin Desktop dengan FFmpeg:

bash
ffmpeg -framerate 60 -f x11grab -probesize 10MB -thread_queue_size 4096 -i $DISPLAY \
  -f pulse -ac 2 -probesize 10MB -thread_queue_size 4096 -i default \
  -c:v libx264rgb -crf 0 -preset ultrafast -color_range 2 output.mp4
  1. Saya pilih Lossless Recording untuk mengurangkan beban CPU. Almaklumlah, kita tidak memiliki komputer dengan processor berkuasa tinggi.

  2. Pakej yang diperlukan untuk Audio: pipewire dengan wireplumber sebagai pengurus sesi, pipewire-jack dan pipewire-pulse.

  3. Tinggalkan baris kedua sekiranya tidak mahu merakam bersama audio.

  4. Setakat ini, encoding video melalui FFmpeg menghasilkan output yang tidak disokong oleh WhatsApp. Sebagai penyelesaian, saya akan menggunakan aplikasi Shotcut untuk mengeksport video yang dirakam ke format yang sama iaitu mp4 (codec libx264), Interpolation: Lanczos (best), dan selebihnya dibiarkan dengan tetapan lalai.

Rujukan: Capturing your Desktop / Screen Recording (Lossless Recording)


Simpan pengeluaran manual dari Terminal dalam bentuk PDF


Contoh, simpan pengeluaran manual read di Terminal dalam bentuk PDF:

bash
man -Tpdf read > read.pdf

atau

bash
man -Tps read | ps2pdf - read.pdf

Rujukan: Is there a way to print info/man pages to PDF?


Solusi: Ralat kunci tidak dikenali / dipercayai


Entah kenapalah dalam tempoh beberapa minggu ni kerap terjumpa dengan ralat ini apabila nak kemas kini sistem:-

error: package-name: signature from "packager" is unknown trust
error: PackageName: signature from "User " is invalid
error: failed to commit transaction (invalid or corrupted package (PGP signature))
Errors occured, no packages were upgraded.

Pautan: [1] Signature is unknown trust, [2] signature from xxx is invalid

Jadi jalan penyelesaian pertama ialah tetapan semula untuk semua kunci (jalankan sebagai superuser):

bash
rm -rf /etc/pacman.d/gnupg
pacman-key --init
echo 'keyserver https://keyserver.ubuntu.com' >> /etc/pacman.d/gnupg/gpg.conf #untuk Arch
pacman-key --populate archlinux
pacman -S archlinux-keyring
pacman -Syyu
Info Tambahan:
Sekiranya kunci perlu dikemaskini, boleh refresh kunci sebelum mengemaskini sistem secara penuh, tetapi akan memakan masa untuk selesai:-
bash
sudo pacman-key --refresh-keys
Rujukan: Resetting all the keys
Jika terlalu terdesak, aras tandatangan (SigLevel) perlu ditambah ke dalam fail /etc/pacman.conf dan ditetapkan kepada berikut:
bash
[blackarch]
  SigLevel = Optional TrustAll
  Include = /etc/pacman.d/blackarch-mirrorlist
Tip (khusus untuk BlackArch sahaja):
Jalankan perintah berikut sebelum memanggil skrip strap.sh untuk menambah repositori BlackArch sekiranya berhadapan dengan masalah kuncinya tidak sah.
bash
sed -i "s|pgp.mit.edu|18.9.60.141|g" strap.sh
Dan tambahkan arahan di bawah pada perintah baris di atas.
bash
echo 'keyserver https://pgp.mit.edu' >> /etc/pacman.d/gnupg/gpg.conf #untuk BlackArch
pacman-key --populate blackarch
pacman -S blackarch-keyring
Rujukan: [1] Still a problem with the strap.sh for existing arch installations#1122, [2] Configuring pacman

Jika cara di atas tidak berjaya, cuba tandatangan kunci pengurus pakej secara manual:-

  1. Pergi ke pautan Master Signing Keys.

  2. Cari pautan kepada kunci PGP mereka di bawah Master Key Signatures.

  3. Ketik belah kanan pada pautan pub_rsa/key-id atau pub_eddsa/key-id kepunyaan mereka dan simpan pautan sebagai fail berformat .asc dan teruskan dengan langkah-langkah berikut:

    bash
    sudo pacman-key --add /laluan-ke-fail_key-id.asc

    Lakukan verifikasi atas cap jari berkenaan:-

    bash
    sudo pacman-key --finger key-id

    dan tandatangan secara lokal kunci tersebut:-

    bash
    sudo pacman-key --lsign-key key-id

    Setelah itu, bolehlah kemas kini pakej kembali. Insya-Allah, tiada lagi ralat yang keluar dan pengemaskinian berjaya.

Rujukan: Adding unofficial keys


Solusi: “server ‘gpg-agent’ / ‘dirmngr’ is older than us (x < y)”


Terdapat amaran dikeluarkan dengan output ini: server ‘gpg-agent’ is older than us (x < y) dan server ‘dirmngr’ is older than us (x < y).

Berikut adalah langkah-langkah berkesan yang saya lakukan setelah bermacam-macam cara dibuat namun tidak juga menghilangkan amaran di atas:

  1. Hentikan socket dan server:

    bash
    systemctl --user stop gpg-agent.socket &&
    systemctl --user stop dirmngr.socket &&
    killall gpg-agent dirmngr
  2. Padam dan cipta semula direktori .gnupg:

    bash
    rm -rf $HOME/.gnupg && mkdir $HOME/.gnupg
  3. Cipta redirects ke lokasi yang mengendalikan soket:

    bash
    export GNUPGHOME=$HOME/.gnupg &&
    printf '%%Assuan%%\nsocket=/run/user/1000/gnupg/S.gpg-agent\n' > $GNUPGHOME/S.gpg-agent &&
    printf '%%Assuan%%\nsocket=/run/user/1000/gnupg/S.gpg-agent.browser\n' > $GNUPGHOME/S.gpg-agent.browser &&
    printf '%%Assuan%%\nsocket=/run/user/1000/gnupg/S.gpg-agent.extra\n' > $GNUPGHOME/S.gpg-agent.extra &&
    printf '%%Assuan%%\nsocket=/run/user/1000/gnupg/S.gpg-agent.ssh\n' > $GNUPGHOME/S.gpg-agent.ssh &&
    printf '%%Assuan%%\nsocket=/run/user/1000/gnupg/S.dirmngr\n' > $GNUPGHOME/S.dirmngr &&
    printf '%%Assuan%%\nsocket=/run/user/1000/gnupg/S.keyboxd\n' > $GNUPGHOME/S.keyboxd &&
    printf '%%Assuan%%\nsocket=/run/user/1000/gnupg/S.scdaemon\n' > $GNUPGHOME/S.scdaemon
  4. Cipta baris berikut ke dalam fail $HOME/.gnupg/gpg-agent.conf:

    bash
    pinentry-program /usr/bin/pinentry
  5. Pastikan kebenaran untuk direktori dan fail ditetapkan seperti berikut:

    bash
    find ~/.gnupg -type d -print0 | xargs -0 chmod 700 &&
    find ~/.gnupg -type f -print0 | xargs -0 chmod 600
  6. Muatkan semula ejen:

    bash
    gpg-agent --daemon &&
    gpg-connect-agent reloadagent /bye

Rujukan: [1] server ‘gpg-agent’ is older than us (x < y), [2] pinentry, [3] Reload the agent


Tesseract di dalam Arch Linux


Tesseract ialah enjin sumber terbuka pengesanan teks / OCR (Optical Character Recognition) daripada sebuah imej / foto.

Ia boleh dipasang dari repositori rasmi Arch:-

bash
sudo pacman -S tesseract tesseract-data-eng tesseract-data-msa

Sekurang-kurangnya satu data bahasa perlu dipasang untuk menjalankan program ini.

  • tesseract-data-eng untuk mengesan & mengeksport teks Bahasa Inggeris daripada imej diberi;
  • tesseract-data-msa untuk mengesan & mengeksport teks Bahasa Melayu daripada imej diberi.

Baris perintah (mesti eksport laluan untuk TESSDATA_PREFIX terlebih dahulu):-

bash
export TESSDATA_PREFIX=/usr/share/tessdata

Contoh penggunaan ringkas:-

bash
tesseract image.jpg/.png/.tiff output
tesseract image.jpg/.png/.tiff output -l msa
  • Jenis pengeluaran sekiranya tidak ditentukan di dalam baris perintah, akan ditetaplalai kepada fail berformat .txt (teks yang dikesan daripada imej dieksport ke fail output.txt dalam contoh di atas).
  • -l msa; contoh penetapan bahasa kepada Bahasa Melayu.

Rujukan: [1] Tesseract User Manual, [2] Manual Tesseract dari Terminal / alternatif


Tip Hosting dengan Netlify Melalui GitLab


Netlify tidak mampu memproses git clone untuk memasang tema. Jalan terbaik untuk mengatasinya adalah dengan memadam subdirektori .git yang ada di dalam direktori tema ataupun dengan menambah git submodule.

Jika mengalami kegagalan untuk menambah submodule dengan ralat seperti ini;

'themes/your-theme' already exists in the index

Lakukan langkah-langkah di bawah ini:-

bash
cd themes
rm -rf your-theme
git rm -r your-theme
git submodule add <git_submodule_repository> your-theme

Rujukan: Issue with adding common code as git submodule: “already exists in the index”


Tukar Fail PDF kepada Imej SVG


Saya gunakan pakej pdf2svg untuk menukar fail PDF kepada SVG demi kestabilan kualiti vektornya:-

ARAHAN:

pdf2svg <PDF input> <SVG output> <page number / all>
  • Untuk menukar halaman 2 sebagai contoh,

    bash
    pdf2svg input.pdf output.svg 2
  • atau sekiranya ingin menukar kesemua muka surat PDF.

    bash
    pdf2svg input.pdf output%d.svg all

    Boleh juga gunakan pakej inkscape namun bukan pilihan saya kerana dua isu ini:-

    1. tidak mampu menyalin jenis tulisan/fon asal; &
    2. akan menukarkan bentuk formula Matematik kepada tulisan berkarakter Cina.

    Selain daripada itu, fail PDF boleh diceraikan halaman-halamannya dengan pakej PDFtk:-

    bash
    pdftk file.pdf burst

    Opsyen burst memerlukan pemasangan pakej bcprov dan java-common-langs.

    Contoh skrip bash atau zsh:-

    bash
    #!/usr/bin/env zsh
    
    CONVERSION_DIR="conversion"
    mkdir -p $CONVERSION_DIR
    cd $CONVERSION_DIR
    
    # For direct conversion:
    for PDF in ../*.pdf; do
      pdf2svg "$PDF" "$(basename "$PDF" .pdf)%d.svg" all;
    done
    
    # For conversion of separated pages by the PDFtk package:
    #pdftk ../output.pdf burst
    #for PDF in ./*.pdf; do
    #  pdf2svg "$PDF" "$(basename "$PDF" .pdf).svg";
    #done
    
    cd ..

Rujukan: pdf2svg manual


Video Cutting with FFmpeg


Run command as follows:-

bash
ffmpeg -i input.mp4 -ss 00:00:01 -t 00:01:00 output.mp4

-ss : The start time of the video.
-t : The duration (length of time) of the video.


Kali terakhir dikemaskini:

Tentang Blog & Penulis

Topik perbincangan dalam blog ini merangkumi Linux & perisian sumber terbuka, Virtual Machine, serta Typesetting system.
Fokus semasa: Full Stack Development
Minat sampingan: Analisis Data
Bakat tersembunyi hamba: Menyanyi dan melukis.

Sumber dari Wallpaper Cave.