Saya ingin meniru penggunaan Alfred di Mac OS X, di mana jika Anda mencoba membuka aplikasi setelah mencarinya, itu hanya akan membuka jendela baru jika program belum berjalan, jika tidak maka akan menetapkan fokus pada sedang menjalankan instance dari aplikasi itu. Apakah ada cara untuk mengubah perilaku default peluncur untuk memeriksa ini sebelum membuka jendela baru?
16
.desktop
file. Jika Anda mengganti perintah dalam.desktop
file, klik kanan terbuka dengan opsi rusak.Jawaban:
Perbarui 7 April: Versi yang berbeda ditambahkan dan ditemukan Albert, lihat pembaruan dan Bonus di bawah !!!
Mengenai fungsionalitas dasbor : Anda telah bertanya " Apakah ada untuk mengubah perilaku default peluncur untuk memeriksa ini sebelum membuka jendela baru ". Jawaban dasarnya adalah, tidak, sebagai pengguna biasa Anda tidak memiliki cara untuk menambahkan perilaku itu ke tanda hubung. Namun, jika akan ada pengembang ruang lingkup persatuan yang bersedia menerapkannya, Anda dapat mendekati mereka atau mengembangkannya sendiri jika Anda memiliki tekad dan mau belajar. Keterampilan pengkodean saya sangat sederhana, oleh karena itu saya menggunakan skrip shell dan grafis front-end yang tersedia untuk skrip sebagai solusi.
Informasi terkait
Pos asli:
Saya telah menulis sebuah skrip yang menggunakan dialog zenity dan wmctrl untuk mencapai apa yang Anda minta. Perhatikan bahwa ini adalah skrip grafis, artinya skrip hanya akan berfungsi dengan windows, di GUI, dan tidak akan berfungsi jika Anda mencoba meluncurkan sesuatu dalam tty. Selain itu, dari apa yang saya mengerti, Alfred melakukan hal yang persis sama. Anda dapat membuat pintasan desktop atau pintasan peluncur untuknya, seperti dijelaskan di sini dan di sini .
Naskah:
Catatan samping: dalam versi sebelumnya, skrip menggunakan echo $ ?, untuk menguji apakah ekspresi sebelumnya berhasil keluar. Sesuai saran muru (dari hasil edit), saya mengubah kodenya ke versi yang lebih ringkas, jadi saya sarankan Anda melihat pada versi sebelumnya dan saat ini.
Juga, sebelumnya
wmctrl -a $MYPROG
tidak bekerja dengan pengujian google-chrome atau chromium-browser; untuk beberapa alasan bodoh beberapa program memiliki properti WM_CLASS dari jendela dengandpkg --get-selections
huruf besar , sedangkan program seperti yang tercantum dalam huruf kecil (hanya membacaman wmctrl
dan menjalankanwmctrl -lx
, Anda akan tahu). Menambahkan bahwa -ax harus menangani ini. Script menampilkan jendela chromium yang sudah terbuka sebagaimana mestinyaHal lain - wmctlr agak aneh karena kadang-kadang perlu penundaan (punya pengalaman dengan itu di skrip lain), jadi saya harus menambahkan
sleep 1
baris. Sebelumnya akan menjadi semacam dan mematikan dengan firefox, tetapi sekarang berfungsi dengan baik.Script beraksi
Dalam animasi di bawah ini, Anda dapat melihat bahwa pada menjalankan pertama skrip, ada satu contoh open firefox, dan skrip beralih fokus ke jendela itu; pada tes kedua, saya membuka contoh baru google-chrome, yang belum pernah dibuka sebelumnya. (Catatan: Jika Anda curiga tentang desktop, omong-omong, itu adalah openbox dengan cairo dock)
Per saran dalam komentar, animasi tersemat dihapus, hanya tautan yang diposting. Laporkan jika rusak, tolong! http://i.stack.imgur.com/puuPZ.gif
Pembaruan, 7 April
Saya sedikit memperbaiki skrip untuk membuat semua program yang terdaftar di kotak masuk drop-down zenity. Sekarang pengguna tidak harus mengingat setiap program, tetapi cukup menggulir daftar mereka menggunakan tombol panah atau hanya membuka menu drop down. Juga, versi yang ditingkatkan ini memunculkan windows bukan berdasarkan nama, tetapi berdasarkan id jendela, yang memberikan kinerja yang jauh lebih baik. Catatan, cara saya menelusuri file .desktop agak berlebihan, menggunakan perintah cut dua kali, tapi karena skrip-fu saya tidak begitu baik sejauh ini, ini yang bisa saya lakukan. Saran untuk perbaikan dipersilahkan!
Bonus:
Saya sebenarnya telah menemukan Albert , yang merupakan versi Linux dari Alfred, tetapi belum mencobanya sendiri. Layak untuk dicoba. Namun, seperti yang sudah dicatat Yakub, masih buggy.
Ada sebuah aplikasi bernama Gnome-Do, yang secara grafik terlihat mirip dengan Alfred, namun tidak memiliki fungsi yang sama dengan skrip ini.
Beri tahu saya jika Anda menyukai skrip ini, jika ada sesuatu yang perlu diperbaiki, dan jangan lupa untuk memperbaiki jawabannya jika Anda merasa bermanfaat
sumber
dpkg --get-selectons
. Meluncurkan libreoffice writer dengan mengetikkan "writer" tidak akan berfungsi, tetapi Anda dapat membuat symlink ke dalamnya di folder ~ / bin, / bin atau / usr / bin Anda atau gunakan alias di .bashrc atau .profile.1. Dash the Second
Di bawah ini skrip yang dapat digunakan sebagai alternatif untuk Dash, ketika datang untuk menjalankan aplikasi seperti yang dijelaskan dalam pertanyaan Anda.
Itu ada dari jendela dengan fungsi yang sama dengan Dash; jika mengetik satu atau lebih karakter aplikasi, aplikasi akan muncul dalam daftar. Tekan Enteruntuk memulai atau menaikkan aplikasi, tergantung pada apakah aplikasi itu sudah berjalan atau belum.
Anda dapat memanggilnya dari kombinasi tombol pintas, atau mengatur ikon di peluncur untuk menggunakannya mirip dengan Dash (lihat lebih lanjut di bawah), atau keduanya.
Naskah
Cara Penggunaan
Script perlu
wmctrl
diinstal:Kemudian:
dash_alternative.py
Tambahkan ke kombinasi tombol pintas: Pilih: Pengaturan Sistem> "Keyboard"> "Pintasan"> "Pintasan Khusus". Klik "+" dan tambahkan perintah:
Penjelasan
Ketika skrip dijalankan, itu daftar semua aplikasi, diwakili dalam
/usr/share/applications
. Itu mencari.dektop
file, membuat daftar semua nama aplikasi (dari baris "Name =" pertama) dan perintah untuk menjalankan aplikasi (dari baris "Exec =" pertama).Selanjutnya, daftar Zenity dibuat, menampilkan semua aplikasi dengan cara diurutkan.
Setiap kali aplikasi dipilih, skrip akan terlihat dalam daftar proses yang berjalan jika aplikasi sedang berjalan. Jika demikian, jendela yang sesuai dinaikkan. Jika tidak, instance baru dibuka.
Catatan
Untuk menjalankan skrip pada 12.04 (karena pertanyaan asli telah ditandai,
12.04
cukup ubah shebang ke#!/usr/bin/env python
dan jalankan dengan perintahSejauh saya mengujinya, skrip berfungsi dengan baik. Perintah dan (tidak) nama proses yang sesuai (mis.
LibreOffice
<>soffice.bin
), Tipe jendela berbeda (nautilus
memiliki beberapa tipe jendela berbeda, selain jendela "nyata"), beberapa pids per aplikasi (Chromium
,Google-chrome
) dapat menyebabkan pengecualian, yang saya perbaiki dalam contoh atas. Jika ada yang mengalami masalah, sebutkan saja.2. Tambahan: mengaturnya sebagai alternatif untuk Dash "nyata" untuk menjalankan aplikasi
Simpan ikon di bawah ini (klik kanan> safe as) as
dash_alternative.png
Salin kode di bawah ini ke file kosong, simpan
~/.local/share/applications
sebagaidash_thesecond.desktop
. Tetapkan jalur yang benar untuk/path/to/dash_alternative.py
(skrip) dan/path/to/dash_alternative.png
(ikon)Seret
.desktop
file ke peluncur:sumber
.desktop
file:~/.local/share/applications
. Saya pikir saya akan membatasi pencarian untuk aplikasi yang terinstal secara global.Untuk peluncur (panel vertikal di sisi kiri layar), ini sudah merupakan perilaku default, karena merupakan antarmuka pengalihan tugas.
Untuk tanda hubung (bit besar yang terbuka ketika Anda mengklik logo Ubuntu), tidak ada cara untuk mengubah perilaku dengan cara ini, tanpa modifikasi yang mungkin signifikan untuk kode sumber itu sendiri.
Namun beberapa aplikasi, mungkin sudah melakukan ini, karena dirancang untuk berperilaku seperti itu. Semua aplikasi tidak, dan tidak harus, diimplementasikan sedemikian rupa.
Namun sebagai fitur lain, jika Anda membuka penyebaran jendela dengan Super+ W, dan mulai mengetikkan nama aplikasi, jendela untuk aplikasi itu akan menjadi satu-satunya yang ditampilkan.
sumber