{"slug":"sap-fix-double-icon-ubuntu-gnome","locale":"id","isFallback":false,"translationAvailable":["en","id"],"translationUrls":{"en":"/api/posts/sap-fix-double-icon-ubuntu-gnome?locale=en","id":"/api/posts/sap-fix-double-icon-ubuntu-gnome?locale=id"},"title":"SAP GUI for Java Muncul Dua Ikon di Ubuntu? Ini Fix-nya","description":"SAP GUI for Java muncul dua ikon di dock Ubuntu? Solusinya cukup tambahkan StartupWMClass di file .desktop — masalah klasik window grouping di GNOME.","date":"2026-03-24","updated":null,"tags":["ubuntu","linux","sap","gnome","troubleshooting"],"category":"Linux","content":"\nPertama kali saya lihat ini, langsung bingung. SAP GUI for Java sudah saya pin di dock GNOME, tapi setiap kali program dibuka, muncul *ikon kedua* tepat di sampingnya — seolah ada dua aplikasi berbeda yang jalan bersamaan. Ditutup, ikon ekstra itu hilang. Dibuka lagi, muncul lagi.\n\nSaya sempat curiga file `.desktop`-nya corrupt, atau jangan-jangan tidak sengaja install dua kali. Ternyata solusinya cuma satu baris.\n\n## Kenapa GNOME Bikin Ikon Kedua?\n\nIni masalah klasik Java app di GNOME. Setiap kali sebuah aplikasi dibuka, GNOME mencoba mencocokkan window yang muncul dengan launcher-nya — supaya keduanya bisa digabung di dock. Proses ini mengandalkan properti bernama **WM_CLASS**, semacam pengenal window yang di-set oleh aplikasi saat pertama kali jalan.\n\nKebanyakan aplikasi modern sudah set ini dengan benar. SAP GUI for Java tidak. Jadilah GNOME melihat window asing yang tidak dikenali, menganggapnya aplikasi baru, lalu — dengan niat baik tapi hasilnya menyebalkan — membuat ikon baru di dock.\n\nSolusinya: beritahu GNOME secara eksplisit bahwa WM_CLASS ini milik launcher SAP, lewat properti `StartupWMClass` di dalam file `.desktop`.\n\n<Callout variant=\"info\" title=\"Berlaku juga di distro lain\">\n  Saya ketemu masalah ini di Ubuntu, tapi fix yang sama juga berlaku di semua distro berbasis GNOME — Fedora, Pop!\\_OS, Zorin, dan sejenisnya. Kalau kamu pakai Manjaro atau Arch, [proses install SAP GUI-nya](/blog/install-sap-gui-java-manjaro-linux) memang sedikit berbeda, tapi cara fix `.desktop`-nya sama persis.\n</Callout>\n\n## Cara Fix: Tambahkan StartupWMClass\n\n<Steps>\n  <Step>\n    ### Cek WM_CLASS dari Window SAP\n\n    Buka SAP GUI dulu sampai jalan, lalu buka terminal dan jalankan perintah ini:\n\n    ```bash\n    xprop WM_CLASS\n    ```\n\n    Kursor akan berubah jadi crosshair — klik langsung ke window SAP GUI yang sedang aktif. Output-nya akan seperti ini:\n\n    ```\n    WM_CLASS(STRING) = \"SAP GUI for Java\", \"SAP GUI for Java\"\n    ```\n\n    Catat nilai itu, khususnya string kedua: `SAP GUI for Java`. Ini yang akan kita pakai.\n  </Step>\n\n  <Step>\n    ### Temukan File .desktop SAP\n\n    Jalankan perintah ini untuk cari lokasi file launcher-nya:\n\n    ```bash\n    find /usr/share/applications ~/.local/share/applications -name \"*sap*\" -o -name \"*SAP*\" 2>/dev/null\n    ```\n\n    Di kasus saya, file-nya ada di:\n\n    ```\n    /home/snipgeek/.local/share/applications/SAPGUI7.80.desktop\n    ```\n\n    Kalau muncul lebih dari satu hasil, prioritaskan yang ada di `~/.local/share/applications/` — itu yang di-install SAP secara default untuk user.\n  </Step>\n\n  <Step>\n    ### Edit File .desktop-nya\n\n    Buka dengan nano atau text editor apapun:\n\n    ```bash\n    nano ~/.local/share/applications/SAPGUI7.80.desktop\n    ```\n\n    Di dalam section `[Desktop Entry]`, tambahkan baris ini:\n\n    ```ini\n    StartupWMClass=SAP GUI for Java\n    ```\n\n    Hasil akhir file-nya kira-kira jadi seperti ini:\n\n    ```ini\n    [Desktop Entry]\n    Exec=\"/home/snipgeek/SAPClients/SAPGUI7.80/bin/guilogon\"\n    Type=Application\n    Icon=guilogon2\n    Name=SAP GUI 7.80\n    Categories=X-SAPClients;Office;\n    StartupWMClass=SAP GUI for Java\n    ```\n\n    Simpan dengan <kbd>Ctrl</kbd>+<kbd>O</kbd> → <kbd>Enter</kbd>, lalu keluar dengan <kbd>Ctrl</kbd>+<kbd>X</kbd>.\n\n    ![Terminal menampilkan output xprop dan proses edit file .desktop dengan nano](/images/_posts/linux/sap-fix-double-icon/terminal-view.webp)\n    <div className=\"-mt-3 mb-6 text-center text-sm italic text-muted-foreground\">Menjalankan xprop dan mengedit langsung file .desktop lewat terminal.</div>\n  </Step>\n\n  <Step>\n    ### Refresh dan Test\n\n    Paksa desktop database baca ulang perubahan yang baru dibuat:\n\n    ```bash\n    update-desktop-database ~/.local/share/applications\n    ```\n\n    Lalu **logout dan login kembali** — ini penting. Sekedar reload kadang tidak cukup; GNOME perlu restart sesi penuh untuk benar-benar membaca ulang file `.desktop`.\n\n    Buka SAP GUI lagi. Ikon yang sudah di-pin seharusnya langsung jadi ikon aktif — tidak ada duplikat, tidak ada ikon baru yang muncul sendiri. ✅\n  </Step>\n</Steps>\n\n## Kenapa Ini Sering Terjadi di Java App?\n\nJava app dikompilasi untuk berjalan di atas JVM, dan JVM tidak secara otomatis meneruskan nama aplikasi sebagai window class ke display server. Di situlah akar masalahnya. Window muncul dengan WM_CLASS yang generik atau tidak cocok, dan GNOME tidak punya cara untuk menghubungkannya kembali ke launcher.\n\nIni bukan bug khusus SAP — DBeaver, IntelliJ IDEA, dan Java desktop app lainnya bisa kena masalah yang sama persis. Begitu kamu tahu triknya, fix ini bisa langsung dipakai untuk app mana pun yang berkelakuan serupa.\n\n<Callout variant=\"tip\" title=\"Bisa dipakai untuk Java app lain juga\">\n  Kalau kamu pakai DBeaver, IntelliJ, atau app Java lain yang punya masalah ikon dobel, cari file `.desktop`-nya dan tambahkan properti `StartupWMClass` yang sama. Jalankan `xprop WM_CLASS` saat app itu aktif untuk dapat nilai yang tepat.\n</Callout>\n\n---\n\nKalau kamu sudah terlalu lama menatap ikon dobel itu sambil garuk-garuk kepala — semoga ini menghemat waktu yang saya buang waktu itu. Tinggalkan komentar kalau WM_CLASS yang kamu dapat berbeda, atau kalau file `.desktop`-nya berada di lokasi yang tidak biasa.\n"}