2015 Oct 28; 10:26 AM; Oakville, ON, Canada.
— Вот для Unity есть вот такая штука:
https://forum.ubuntu.ru/index.php?topic=267766.msg2119242#msg2119242
Спасибо, то что надо. Лончер для UNITY в KDE работает хорошо. Единственная проблема была с раскрытием/сворачиванием окна работающего экземпляра по нажатию комбинации кнопок. Эта функция не реализована.
Ниже скрипт, который я написал для поддержки такой функции. Возможно кому-нибудь пригодится.
Скрипт делает следующее:
- если экземпляр программы не запущен - запускает его, при этом окно раскрывается;
- если экземпляр программы запущен и окно раскрыто - сворачивает окно;
- если экземпляр программы запущен и окно свернуто - разворачивает его;
Скрипт нужно поместить в /usr/local/bin/winactivate и назначить права на исполнение. В KDE сделать привязку скрипта к нужной комбинации кнопок, указав в аргументах запуска исполняемый файл лончера:
winactivate /usr/bin/unity-launcher-foldersПосле этого экземпляр лончера будет запускаться/скрываться/восстанавливаться по заданной комбинации клавиш.
#!/usr/bin/perl
use strict;
use diagnostics;
use Scalar::Util qw(looks_like_number);
if(! @ARGV)
{
die "invalid arguments";
}
my $prog = $ARGV[0];
my @psarr = grep /$prog/i, `ps aux`;
my @pids = map { (split)[1] } @psarr;
chomp @pids;
my $exec = 0;
if($#pids > 10)
{
die "match too many processes ($#pids)...";
}
foreach my $pid (@pids)
{
my @wids = `xdotool search --pid $pid 2>/dev/null`;
chomp @wids;
if(! @wids)
{
next;
}
foreach my $wid (@wids)
{
if($wid eq "" || !looks_like_number($wid))
{
next;
}
my @isHidden = grep/Hidden/, `xwininfo -all -id $wid`;
chomp @isHidden;
my $action = "windowminimize";
if(@isHidden)
{
$action = "windowactivate";
}
# print "pid:$pid winId:$wid $action\n";
`xdotool $action $wid`;
$exec = 1;
}
}
if($exec == 0)
{
print "spawning $prog new instance...";
my $cmd = "";
foreach $a (@ARGV)
{
$cmd .= ($a." ");
}
`$cmd 2>/dev/null &`;
}