Видео смотреть бесплатно

Смотреть телеграм видео

Официальный сайт 4stupeni 24/7/365

Смотреть видео бесплатно

_DM_ 15.12.2010 18:33

СкриптыВызов приложений

В свободное время с целью начать изучать bash собрал на коленке нечто для вызова приложений...

Если приложение ещё не запущено, запускает приложение, в противном случае - переключает нас на рабочую область (workspace), где находится приложение, и делает его активным.


Вызов firefox'а:
1
./summon.sh firefox



Для себя каждому приложению назначил горячую клавишу.

Для работы скрипта необходим wmctrl:
1
sudo apt-get install wmctrl



summon.sh
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/bin/bash

# ~Pe Ell
# Hotkey application summoner

# Todo:
# - work with more than 1 window opened;
# - automatic detection of application

if < $# -lt 1 >; then
cat <<END
Usage: $SELF <identificator> <WM_CLASS> <command><arguments>...

Switch to application window in any workspace or starts the application if
it isn't running.

<identificator> Identificator of application need to be found.

<WM_CLASS> "wmctrl -xl | awk '{ print \$3 }'" or substring.

<command> Path to run application if no window is found (optional). todo: arguments
END
exit 1
fi

idn=$1
wmc=$2
cmd=$3

if < -o $wmc >; then
mode="auto"

if < -o $cmd >; then cmd=$idn; fi

if < $idn = "firefox" >; then
wmc="Navigator.Firefox"
elif < $idn = "eclipse" >; then
wmc="Eclipse.Eclipse"
cmd="/opt/eclipse/eclipse"
elif < $idn = "thunderbird" >; then
wmc="Mail.Thunderbird"
elif < $idn = "deadbeef" >; then
wmc="deadbeef.Deadbeef"
unset idn
elif < $idn = "photoshop" >; then
wmc="Photoshop.exe.Wine"
cmd="wine /home/dm/Soft/Photoshop/Photoshop.exe"
unset idn
elif < $idn = "remmina" >; then
wmc="remmina.Remmina"
cmd="remmina"
unset idn
elif < $idn = "gcalctool" >; then
wmc="gcalctool.Gcalctool"
unset idn
elif < $idn = "nautilus" >; then
wmc="nautilus.Nautilus"
unset idn
fi
else
mode="manual"
fi

if < `wmctrl -xl | awk '{ print $3 }' | grep -c "$wmc"` != 0 >; then
# Switching to found window in any workspace
echo "act=switch"
if < -o $idn >; then
wmi=`wmctrl -xl | awk '{ if ( $3 == wmc ) { print $0 } }' wmc=$wmc`
fi

#temporary fix start
i=0
for id in $wmi; do
i=$<i>
if < $i -lt 5 >; then continue; fi
idn=$idn" "$id
done
idn=${idn:1}
#temporary fix end

wmctrl -a "$idn"
else
# Running application
echo "act=run"
$cmd
fi

echo -e "mode=$mode\nidn=$idn\nwmc=$wmc\ncmd=$cmd"

exit 0</i></arguments>



Хотел до конца доработать полностью автоматическое определение и вызов приложения по одному идентификатору, но сил и времени так и не хватило.


Тэги:
+ 1 -
Похожие Поделиться

predator 15.12.2010 19:30 #
+ 4 -
if ... then ... elif ... then ... elif... then ... fi заменить на switch
_DM_ 15.12.2010 19:38 #
+ 0 -
Как вариант :)
dront78 16.12.2010 10:09 #
+ 0 -
еще лучше словарь (map) предзаполненный или 2 массива.
_DM_ 16.12.2010 10:17 #
+ 0 -
А по поводу словаря можно поподробнее? :)
dront78 16.12.2010 10:22 #
+ 0 -
в 4 баше - ассоциативные массивы

Смотреть видео онлайн

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн