Bicara aksesibilitas sering dianggap bicara fitur untuk “orang lain” — pengguna tunanetra atau mobilitas terbatas. Kenyataannya fitur ini kita pakai sendiri lebih sering daripada yang dikira: layar yang silau di matahari, satu tangan sibuk memegang kopi, lingkungan yang tidak bisa bersuara. Chapter penutup section ini memetakan fitur aksesibilitas desktop Linux — screen reader Orca, kaca pembesar, high contrast, hingga keyboard yang ramah — beserta cara mengaturnya lewat gsettings, supaya komputer ini benar-benar bisa dipakai siapa pun dalam kondisi apa pun.

Aksesibilitas untuk Semua Situasi #

Kerangka berpikir terbaik soal aksesibilitas adalah memandangnya sebagai spektrum situasi, bukan kategori pengguna. Kebutuhan yang sama datang dari kondisi permanen (gangguan penglihatan), sementara (tangan cedera), atau situasional (cangkang matahari di teras kafe). Dari sudut itu, fitur-fiturnya terpetakan rapi per kebutuhan:

SituasiFitur yang membantu
Penglihatan menurun, layar silau, mata lelahscreen reader, kaca pembesar, teks besar, high contrast
Tangan cedera, tremor, satu tangan terpakaisticky keys, slow keys, bounce keys, klik sekunder simulasi
Tidak bisa atau tidak boleh bersuaravisual alerts, notifikasi yang berkedip
Mouse rusak atau meja sempitnavigasi keyboard penuh, mouse keys

Semua fitur ini di GNOME terkumpul di panel Accessibility pusat pengaturan, dan ikonnya bisa dipakukan di panel atas agar selalu satu klik. Perbandingan antar desktop serta daftar alat lengkapnya ada di wiki Accessibility .

Screen Reader: Orca #

Orca adalah screen reader dunia GNOME (dan MATE) — program yang membacakan antarmuka: nama tombol, isi dialog, teks di bawah kursor. Suaranya disintesis lewat speech-dispatcher, dan bagi pengguna braille, keluaran braille-nya dilayani BRLTTY. Di sesi GNOME, pintasan Super+Alt+S menyalakan dan mematikannya seketika; Orca juga bisa dimunculkan dari terminal dengan perintah orca — berguna saat desktop gagal naik tapi kita masih punya sesi. Pengenalan perintahnya ada di Orca(1) dan panduan khusus GNOME di wiki GNOME/Accessibility .

Zoom, High Contrast, dan Large Text #

Tiga setelan penolong penglihatan bekerja di lapisan berbeda dan bisa dipakai bersamaan. Kaca pembesar (screen magnifier) memperbesar area di sekitar pointer, dikendalikan dari panel aksesibilitas. Teks besar ditala lewat gsettings set org.gnome.desktop.interface text-scaling-factor 1.25 — semua teks membesar 25% tanpa mengubah resolusi. High contrast menukar tema ke varian kontras tinggi lewat gsettings set org.gnome.desktop.interface color-scheme 'prefer-high-contrast', menggantikan abu-abu halus dengan hitam-putih tegas. Satu lagi yang sering dilupakan: kursor besar punya setelannya sendiri di org.gnome.desktop.interface cursor-size.

Topik font menyinggung bab sebelah: font ramah disleksia seperti Atkinson Hyperlegible dipasang sebagai font user persis seperti di Chapter Font Management , lalu dipilih sebagai font antarmuka — kombinasi huruf yang bentuknya sulit tertukar mengurangi beban membaca.

Keyboard yang Ramah: Sticky, Slow, dan Bounce Keys #

Bagian keyboard di org.gnome.desktop.a11y.keyboard menampung tiga fitur yang sering bercampur di kepala orang padahal beda mekanisme:

FiturMekanismeMembantu siapa
Sticky keysmodifier (Shift, Ctrl) ditekan sekali lalu “menempel”kombinasi tombol dengan satu tangan
Slow keysketukan lebih pendek dari ambang waktu diabaikanketukan tak sengaja saat tremor
Bounce keysketukan berulang yang terlalu cepat dihitung satuhuruf terketik ganda
Toggle keysbunyi saat CapsLock/NumLock bergantiketahui status tanpa melihat lampu
Mouse keysangka di numpad menggerakkan pointertanpa mouse sama sekali

Ambang waktunya pun bisa disetel — misalnya gsettings set org.gnome.desktop.a11y.keyboard slowkeys-delay 500 memberi setengah detik sebelum ketukan diterima. Navigasi keyboard penuh (Tab, panah, menu berakselerator) adalah pelengkap keempatnya; membangun kebiasaan berpindah antar aplikasi tanpa mouse sekaligus melatih pintasan yang kita rancang sendiri di Chapter Keyboard Shortcuts .

AT-SPI: Bus yang Menyatukan #

Semua fitur di atas hanya bisa bekerja bila ada jalur komunikasi bersama — dan jalur itu bernama AT-SPI (Assistive Technology Service Provider Interface), yang berjalan di atas D-Bus sesi. Aplikasi mengekspos antarmukanya ke bus ini sebagai pohon elemen dengan nama, peran, dan status (“tombol Simpan, bisa diklik, tidak aktif”); Orca lalu membaca pohon itu dan mengumumkannya; kombinasi keyboard dari fitur sticky keys dikirim lewat jalur yang sama. Inilah jawaban atas misteri lama “kenapa screen reader lancar di aplikasi A tapi diam di aplikasi B”: aplikasi B tidak mengekspos dirinya ke bus. Browser besar, toolkit GTK dan Qt, serta framework Electron tergolong rajin; aplikasi eksotis yang menggambar sendiri seluruh antarmukanya adalah yang biasanya bermasalah.

Membaca Setelan lewat gsettings #

Semua setelan tadi di GNOME berada di bawah schema org.gnome.desktop.a11y.* dan dibaca-tulis dengan gsettings — alat yang kita kenal dari Chapter Desktop Configuration . Perintah gsettings list-recursively org.gnome.desktop.a11y memuntahkan seluruh kunci berikut nilainya; berikut potongan tipikalnya yang kita simpan sebagai berkas latihan:

bash
cat > potongan-gsettings.txt <<'EOF'
org.gnome.desktop.a11y always-show-universal-access-status true
org.gnome.desktop.a11y.applications screen-magnifier-enabled false
org.gnome.desktop.a11y.applications screen-reader-enabled false
org.gnome.desktop.a11y.keyboard bouncekeys-delay 300
org.gnome.desktop.a11y.keyboard bouncekeys-enabled false
org.gnome.desktop.a11y.keyboard slowkeys-delay 300
org.gnome.desktop.a11y.keyboard slowkeys-enabled false
org.gnome.desktop.a11y.keyboard stickykeys-latch-to-lock true
org.gnome.desktop.a11y.keyboard stickykeys-two-key-off true
org.gnome.desktop.a11y.mouse secondary-click-time 1.2
EOF
cat potongan-gsettings.txt

Output yang Dihasilkan:

text
org.gnome.desktop.a11y always-show-universal-access-status true
org.gnome.desktop.a11y.applications screen-magnifier-enabled false
org.gnome.desktop.a11y.applications screen-reader-enabled false
org.gnome.desktop.a11y.keyboard bouncekeys-delay 300
org.gnome.desktop.a11y.keyboard bouncekeys-enabled false
org.gnome.desktop.a11y.keyboard slowkeys-delay 300
org.gnome.desktop.a11y.keyboard slowkeys-enabled false
org.gnome.desktop.a11y.keyboard stickykeys-latch-to-lock true
org.gnome.desktop.a11y.keyboard stickykeys-two-key-off true
org.gnome.desktop.a11y.mouse secondary-click-time 1.2

Format tiap baris adalah schema.kunci nilai. Mari kita bedah kunci-kuncinya:

  1. Baris always-show-universal-access-status: memaku ikon menu aksesibilitas di panel atas — pintasan satu klik untuk semua fitur.
  2. Baris applications screen-reader-enabled dan screen-magnifier-enabled: dua saklar utama Orca dan kaca pembesar; keduanya false artinya belum menyala.
  3. Baris keyboard bouncekeys-delay: ambang waktu (milidetik) fitur bounce keys; ketukan yang datang lebih cepat dari itu dianggap pantulan yang sama.
  4. Baris keyboard slowkeys-delay: ambang kebalikannya — ketukan harus ditahan minimal selama ini baru diterima.
  5. Baris keyboard stickykeys-latch-to-lock dan stickykeys-two-key-off: dua perilaku sticky keys — menekan modifier dua kali menguncinya, dan menekan dua modifier sekaligus mematikan mode tempel.
  6. Baris mouse secondary-click-time: jeda (detik) sebelum tahanan tombol dihitung sebagai klik kanan simulasi — menolong tangan yang tidak bisa menekan dua tombol.

Cara mengubahnya satu kalimat: gsettings set org.gnome.desktop.a11y.keyboard bouncekeys-enabled true — dan membatalkannya cukup mengganti nilai kembali ke false. Rincian seluruh perintahnya ada di gsettings(1) .

Profil Aksesibilitas dengan Skrip #

Saat kebutuhan berubah cepat — laptop pindah ke teras yang silau, tangan cedera dipakai kerja — membuka panel demi panel menjadi beban sendiri. Skrip profil-a11y.sh di bundle chapter ini menyederhanakan idenya: satu perintah mengaktifkan satu profil, dan profil yang berbeda menyala berdampingan karena kuncinya memang independen — persis perilaku gsettings:

bash
cat > setelan-a11y.txt <<'EOF'
screen-reader-enabled=false
screen-magnifier-enabled=false
high-contrast=false
sticky-keys=false
slow-keys=false
visual-alerts=false
EOF
bash profil-a11y.sh terapkan penglihatan setelan-a11y.txt
bash profil-a11y.sh terapkan motorik setelan-a11y.txt
bash profil-a11y.sh baca - setelan-a11y.txt

Output yang Dihasilkan:

text
aktif: screen-reader-enabled
aktif: screen-magnifier-enabled
aktif: sticky-keys
aktif: slow-keys
== setelan saat ini (setelan-a11y.txt) ==
  - screen-reader-enabled
  - screen-magnifier-enabled
  - sticky-keys
  - slow-keys

Empat saklar menyala dari dua profil berbeda tanpa saling menimpa. Bagian penting skripnya:

  1. Blok if [ $# -eq 0 ]: tanpa argumen, skrip menjalankan demo di direktori sementara lalu keluar sukses — aman dari folder mana pun.
  2. Fungsi tombol_profil(): peta profil ke daftar kunci — inti kebijakan yang mudah diperluas dengan profil baru.
  3. Perulangan for kunci in $tombol: mengubah tiap kunci lewat sed -i, pengganti gsettings set di dunia nyata.
  4. Blok baca): menyaring baris bernilai true dengan grep '=true$' lalu meringkasnya — pengganti gsettings get per kunci.

Di desktop sungguhan, padanan skrip ini adalah kombinasi gsettings set atau sekadar menu cepat di panel aksesibilitas; prinsipnya sama, kebutuhan yang berubah cepat dijawab dengan satu perintah.

Dengan ini rangkaian kustomisasi kita tuntas: tampilan, pintasan, monitor, font, suara, perangkat nirkabel dan lepas-pasang, sampai aksesibilitas — semuanya karena Linux memang mengizinkan kita menyetel desktop hingga detail terkecil. Kebalikan dari kebebasan itu adalah tanggung jawab: semakin banyak yang diubah, semakin sering pula sesuatu menolak bekerja. Saat giliran itu datang — layar hitam saat boot, service yang mogok — kita masuk ke Section Troubleshooting, dimulai dari Chapter Boot Failures.

Berkas Sumber

Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.

profil-a11y.sh

Unduh berkas
bash
#!/usr/bin/env bash
# profil-a11y.sh -- terapkan profil aksesibilitas pada berkas setelan latihan
# Pemakaian: bash profil-a11y.sh <terapkan|baca> <profil> [berkas-setelan]
# Profil   : penglihatan | motorik | pendengaran
# Format berkas setelan: satu "kunci=nilai" per baris (nilai true/false).
# Tanpa argumen: demo singkat di direktori sementara.

skrip=$(realpath "$0")

if [ $# -eq 0 ]; then
    tmp=$(mktemp -d)
    printf 'screen-reader-enabled=false\nscreen-magnifier-enabled=false\nhigh-contrast=false\nsticky-keys=false\nslow-keys=false\nvisual-alerts=false\n' > "$tmp/setelan-a11y.txt"
    (
        cd "$tmp" || exit 1
        bash "$skrip" terapkan penglihatan setelan-a11y.txt
        bash "$skrip" terapkan motorik setelan-a11y.txt
        bash "$skrip" baca - setelan-a11y.txt
    )
    rm -rf "$tmp"
    echo "demo selesai di direktori sementara"
    exit 0
fi

perintah=$1
profil=${2:-penglihatan}
berkas=${3:-setelan-a11y.txt}

tombol_profil() {
    case "$1" in
        penglihatan) echo "screen-reader-enabled screen-magnifier-enabled" ;;
        motorik)     echo "sticky-keys slow-keys" ;;
        pendengaran) echo "visual-alerts" ;;
        *)           echo "" ;;
    esac
}

if [ ! -f "$berkas" ]; then
    echo "gagal: berkas setelan $berkas tidak ditemukan"
    exit 0
fi

case "$perintah" in
    terapkan)
        tombol=$(tombol_profil "$profil")
        if [ -z "$tombol" ]; then
            echo "profil tidak dikenal: $profil"
            exit 0
        fi
        for kunci in $tombol; do
            sed -i "s/^$kunci=.*/$kunci=true/" "$berkas"
            echo "aktif: $kunci"
        done
        ;;
    baca)
        echo "== setelan saat ini ($berkas) =="
        grep '=true$' "$berkas" | cut -d= -f1 | sed 's/^/  - /'
        ;;
    *)
        echo "perintah tidak dikenal: $perintah"
        echo "pilihan: terapkan | baca"
        ;;
esac