Bir uygulamayı açmak / öne getirmek için özel kısayol tuşu / kısayol


11

Bunun sistemde yerleşik olduğunu düşünmüyorum, ama bunu çok fazla uğraşmadan yapmak mümkün mü?

Kısayol tuşuyla belirli bir programı açtığımı ve bu kısayol tuşuna tekrar bastığımda program penceresinin önüne getirildiğini varsayalım.

Bunu Ubuntu 9.04'te yapmak istiyorum.

Belki D-Bus ile? Uzman var mı?

Güncelleme : İşte birinin yardım etmesi durumunda bulduğum şey:

#!/bin/bash
if [ -f "/tmp/myterm.pid" ]; then
  WID=`cat /tmp/myterm.pid`
  xdotool windowactivate $WID
  if [ "$?" != "0" ]; then
    WID=""
  fi
else
  WID=`xdotool search --title "UNIQUE TITLE" | head -1`
fi

if [ "$WID" == "" ]; then
  /usr/bin/gnome-terminal --window-with-profile=MYPROFILE "$@"
  WID=`xdotool search --title "UNIQUE TITLE" | head -1`
  echo $WID > /tmp/myterm.pid
else
  xdotool windowactivate $WID
fi

Elbette basitleştirilebilir, ama ben bashbüyücü değilim . Ayrıca, örneğimin çalışması için, daha sonra bulunabilmesi için pencerede benzersiz bir başlık uygulayan özel bir profil oluşturdum. İmkanlar sonsuzdur!


1
Bu basit görev için jtb yöntemi daha iyi çalışır, çünkü xdotools bazen X hataları atar ve wmctrl daha hızlıdır.
Ivan

Yanıtlar:


10

wmctrlProgram sadece aradığınız ne ( sudo apt-get install wmctrl). wmctrl -a "AppTitle"Uygulamayı öne getirmek için komutu kullanabilirsiniz . wmctrl -lkullanılabilir tüm pencereleri listeleyecektir, bu nedenle programınızın çalışıp çalışmadığını kontrol eden ve onu başlatan veya öne getiren bir kabuk betiği yazmak kolay olmalıdır. Sonra bunu bir klavye kısayoluna bağlayabilirsiniz.

Önce aşağıdaki betiği bir yere kaydedin, kullanacağım /home/jtb/code/bringToFront. İki argüman alır, birincisi programı başlatmak için terminalde yazacağınız şey, ikincisi program penceresinin başlığının bir alt dizesidir. Başlıkta sabit bir benzersiz dize yoksa, programın penceresini bulmak için biraz daha fazla iş yapmanız gerekir.

#!/bin/bash
if [ `wmctrl -l | grep -c "$2"` != 0 ]  
then
    wmctrl -a "$2"
else
    $1 &
fi
  1. Komut dosyası geçerli dizininizde olduğunda, chmod +x bringToFrontkomut dosyasını yürütülebilir yapmak için çalıştırın. Sonra çalıştığından emin olun; Firefox'u çalıştırmak / odaklamak için çalıştırabilirsiniz ./bringToFront firefox "Mozilla Firefox".

  2. Şimdi bir kısayol tuşunu bağlamamız gerekiyor. gconf-editorKlasör yapısını çalıştırın ve sola doğru gidin /apps/metacity/keybinding_commands.

  3. commandMuhtemelen boş bir değere sahip olan ilkine çift ​​tıklayın command_1. Komut dosyasının tam yolunu yazın ve iki parametreyi sağlayın, örn /home/jtb/code/bringToFront firefox Firefox.

  4. Soldaki panelden bir global_keybindingssonraki klasörü seçin . runMuhtemelen yeni tanımladığınız komutla eşleşen girişi bulun run_command_1. Çift tıklayın ve kullanmak istediğiniz klavye kısayolunu yazın. Değiştiricileri açılı ayraçlara yerleştirin, örn <Ctrl><Alt>F.

Şimdi Control+ Alt+ F, firefox pencerenizi öne getirecek veya zaten çalışmıyorsa başlatacaktır.


Evet, bunu birkaç dakika önce öğrendim, ama xdotool ile gittim. Teşekkürler!
Ivan

Etkiyi tam olarak gerçekleştirmek için gconf'daki global kısayolları ve komutları da kullandığımı söylemeyi unuttum (fakir bir adamın Quake konsolu!).
Ivan

Ah, evet xdotool'u kendim kullanmadım ama sana biraz daha esneklik verecek gibi görünüyor. Gconf hakkında iyi bir nokta. Bu oldukça açık olmadığından, yanıtı, bunu yapmak isteyen herkes için daha fazla ayrıntı içerecek şekilde düzenleyebilirim.
jtb

Poort Man's Quake konsolu mu? Tilda gibi mi demek istiyorsun? freshmeat.net/projects/tilda
koruma

Evet, Tilda'yı da kullanıyorum, ancak hafta boyunca birkaç proje üzerinde çalışıyorum ve her biri için her zaman üç veya dört sekme açıyorum, bu yüzden Tilda'yı dağınık olmadan hızlı bir şekilde projenin konsoluna ("çalışma alanı") geçmek benim için çok yararlı.
Ivan

3

İşte bunu yapmanın başka bir yolu xdotools. Açılır işlem, onu çalıştırmak için verilen komut satırı tarafından tanınır (pid dosyası veya benzersiz pencere başlığı gerekmez).

#!/bin/bash

cmd="$@"
# command line to be run. Note that the resulting
# process will hold this in /proc/PID/cmdline 

pid=`pgrep -nf "^$cmd$"`
# most recent process having "$cmd" in /proc/PID/cmdline

if [ -z "$pid" ]; then # no pid
    exec $cmd
    # run command
else
    winid=`xdotool search --all --pid $pid --onlyvisible | head -1`
    # first visible window owned by pid
    xdotool windowactivate $winid
    # give window focus
fi


0

Daha önce jtb tarafından gönderilen cevap mükemmel ancak bazen tam başlıkları eşleştirmek istersiniz (örneğin "GitKraken" i açmak istiyorsunuz, ancak tarayıcınızın başlığı "GitKraken vs CLI" de sorguyla eşleşiyor).

#!/bin/bash
if [ $1 == "-exact" ]
then
    additional_arguments="-F "
    app_launch_command=$2
    app_title=$3
else
    additional_arguments=""
    app_launch_command=$1
    app_title=$2
fi

if [ `wmctrl -l $additional_arguments| grep -c "$app_title"` != 0 ]
then
    wmctrl $additional_arguments -a "$app_title"
else
    $app_launch_command &
fi

Şimdi bringToFront betiğinizi aşağıdaki gibi çağırabilirsiniz:

#exact match
./bringToFront.sh -exact "flatpak run com.axosoft.GitKraken" "GitKraken"
#or
./bringToFront.sh -exact <command_to_launch_the_app> <app_title

#partial match like the old script
./bringToFront.sh "flatpak run com.axosoft.GitKraken" "GitKraken"
#or
./bringToFront.sh <command_to_launch_the_app> <app_title>


0

Bu çözüm parametreleştirilmedi, ancak odak noktasına getirmek veya gnome hesap makinesini başlatmak için kullandım.

-R seçeneği pencereyi bulur veya başarısız olursa, bulunulan masaüstüne taşınır, yükseltilir ve odaklanır. Gnome-hesap makinesi pencere Hesap Makinesi adıyla adlandırır , kolayca parametrelendirilebilir, ancak bunu yapma ihtiyacını hiç bulamadım. Ben eşledim Ctrl-Alt-c.

#!/bin/bash
# start the calculator and raise and focus (requires wmctrl)
# X Tian 06sep2017 created

wmctrl -R Calculator
if [[ $? -ne 0 ]]
  then 
    gnome-calculator &
fi

0

Aynı sorunu yaşadım ve uygun bir çözüm bulamadığım için bir tane yaptım:

https://hyperkeys.xureilab.com

https://github.com/xurei/hyperkeys

Bir pencereyi tanımladığınız bir kısayol ile sabitleyebilirsiniz. Ben şahsen pin yapmak için ÜSTKRKT + ALT + [QWER] ve öne getirmek için ALT + [QWER] kullanıyorum. Yine de açık değilse uygulamayı açamazsınız.

Bu açık kaynak kodlu, linux ilk araç. Bir Windows sürümü de mevcuttur.

Umarım yardımcı olur ! Geri bildirim arıyorum, bu yüzden herhangi bir sorunuz varsa, bir sorun oluşturun ;-)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.