如何让活动应用程序浮动到启动器的顶部

如何让活动应用程序浮动到启动器的顶部

Alt当使用+或单击启动器上该窗口的图标切换到窗口时,如何使启动器上的图标跳转到启动器的顶部Tab

答案1

介绍

下面的脚本使当前活动窗口的图标浮动到启动器的顶部。它可以手动运行,也可以作为启动应用程序的一部分来启动用户会话。

设置

用户可以从这里复制脚本源,或者通过以下方式获取脚本的副本git

  1. sudo apt-get install git
  2. cd /opt ; sudo git clone https://github.com/SergKolo/sergrep.git
  3. sudo chmod -R +x sergrep

脚本文件是/opt/sergrep/float_active_app.sh

要使脚本在每次登录时自动启动,请参阅 如何在登录时自动启动应用程序?. 提供/opt/sergrep/float_active_app.sh(完整路径)作为命令

来源

#!/usr/bin/env bash
#
###########################################################
# Author: Serg Kolo , contact: [email protected] 
# Date: April 9 , 2016
# Purpose: Make the icon of currently active app float to
#          the top of unity launcher
# Written for: 
# Tested on: Ubuntu 14.04 LTS
###########################################################
# Copyright: Serg Kolo , 2016
#    
#     Permission to use, copy, modify, and distribute this software is hereby granted
#     without fee, provided that  the copyright notice above and this permission statement
#     appear in all copies.
#
#     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
#     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
#     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
#     THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
#     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
#     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
#     DEALINGS IN THE SOFTWARE.

ARGV0="$0"
ARGC=$#
get_active_app()
{
  qdbus org.ayatana.bamf /org/ayatana/bamf/matcher \
      org.ayatana.bamf.matcher.ActiveApplication 
}

get_active_desktop_file()
{
  active_app=$(get_active_app)
  if [ -n "$active_app"  ];then
     qdbus org.ayatana.bamf "$active_app" \
        org.ayatana.bamf.application.DesktopFile | \
        awk -F '/' '{print "application://"$NF}'
  fi
}

get_launcher_items()
{
  gsettings get com.canonical.Unity.Launcher favorites | \
     awk '{ gsub(/,|\[|\]/,""); print}'
}

make_new_list()
{
 
 array=( $( get_launcher_items ) )
 printf "%s, " "$active"
 COUNT=0
 for item in ${array[@]} ; do
   COUNT=$(($COUNT+1))

   if [ "$item" = "$active"   ];then
     continue
   fi

   if [ $COUNT -eq ${#array[@]}  ];then
      printf "%s " "$item"
   else
      printf "%s, " "$item"
   fi
 done
}

set_launcher_items()
{
  gsettings set com.canonical.Unity.Launcher favorites "$1"
}

main()
{
  local active=""
  while true;
  do 
    active="'$(get_active_desktop_file)'"
    if [ "$active" = "'application://compiz.desktop'" ] || [ -z "$active"   ] ;then
       continue
    fi
    new_list="[$(make_new_list)]"
    set_launcher_items "$new_list"
  sleep 0.25
  done
}

main

相关内容