分类: LINUX

2012-10-24 16:34:41

 
一直有个念头,就是能够像xmonad那样方便地用快捷键来控制任务窗口的显示,今天弄wmctrl,刚好有时间实现了,效果非常理想。
一、实现Mod+1..9激活程序窗口,如果该程序没打开,会自动打开程序。

01 #!/bin/bash
02 
03 
04 if [ $# -lt 3 ]; then
05     echo   ""
06     echo   " 功能:判断进程是否存在,如果不存在就启动它,如果存在就显示它"
07     echo   ""
08     echo   " 用法: active_win   \$1   \$2   \$3"
09     echo   ""
10     echo   " 参数说明:"
11     echo   "           \$1       进程名"
12     echo   "           \$2       窗口名"
13     echo   "           \$3       程序启动文件"
14     echo   " 范例:"
15     echo   "                                 \$1         \$2           \$3"
16     echo   " firefox浏览器   : active_win  firefox      Firefox       firefox   "
17     echo   " Terminator      : active_win  terminator   Terminator   terminator"
18     echo   " Gvim            : active_win    gvim         Gvim         gvim"
19     echo   " XMind           : active_win  xmind-bin    XMind      /usr/local/xmind/xmind-bin"
20     exit 1
21 fi
22 PIDS=$( ps -ef | grep  $1 | grep -v grep | grep -v active_win )
23 if [ "$PIDS" != "" ] ; then
24     wmctrl -x -a  $2
25 #运行进程
26 else
27     sh -c "nohup $3 >/dev/null 2>&1 &"
28 fi

然后设置快捷键mod+1对应相应的程序,比如
active_win  firefox      Firefox       firefox

二、实现当前活动窗口左右窗口移动,同样把下面代码设置快捷键,比如F12,当你按F12时,当前窗口会移动到左侧窗口,再次F12,会移动到右侧,配合mod+1,就可以自由的设置双屏的程序窗口了。

01 #!/bin/sh
02 
03 next_monitor_x=1920
04 
05 window=`xdotool getwindowfocus`
06 
07 x=`xwininfo -id $window | grep "Absolute upper-left X" | awk '{print $4}'`
08 y=`xwininfo -id $window | grep "Absolute upper-left Y" | awk '{print $4}'`
09 width=`xwininfo -id $window | grep "Width:" | awk '{print $2}'`
10 height=`xwininfo -id $window | grep "Height:" | awk '{print $2}'`
11 
12 
13 
14 if [ "$x" -ge $next_monitor_x ]
15 then
16     # move to left
17     wmctrl  -r :ACTIVE:  -e "0, 0,0,$width,$height"
18 else
19     # move to right
20     wmctrl  -r :ACTIVE: -e "0, $next_monitor_x,0,$width,$height"  
21 fi

使用compiz的方法,在12.04下面比较好用。

  1. Install CompizConfig Settings Manager.
    apt-get install compizconfig-settings-manager
  2. Run it -> Go to bottom (Window managment)-> Go to "Put"
  3. Enable the plugin
  4. Configure shortcut for "Put to next Output"

使用wmctrl关闭窗口

时间  2019-06-01
标签 window wine 栏目 Windows
 
我可以使用在Ubuntu上运行wine的wmctrl关闭窗口吗?

对于上下文:

$wmctrl -m
Name: compiz
Class: N/A
PID: N/A
Window manager's "showing the desktop" mode: OFF

也:

$wmctrl -l
0x0240a3be -1 mjol N/A
0x02000003 0 mjol Top Expanded Edge Panel
0x0200004c 0 mjol Bottom Expanded Edge Panel
0x01e00024 0 mjol x-nautilus-desktop
0x04800253 0 mjol using wmctrl to close windows - Stack Overflow - Google Chrome
0x03c0c8c3 0 mjol Terminal
0x03c53f25 0 mjol Terminal
0x04400001 0 mjol Untitled - SketchUp
0x04400003 0 mjol Instructor
0x04400009 0 mjol SketchUp

我要关闭的窗口是最后一个:

0x04400009  0 mjol SketchUp

我尝试过以下方法:

$wmctrl -c "SketchUp"

$wmctrl -c 0x04400009

$wmctrl -i 0x04400009

$wmctrl -c -i 0x04400009

但没有任何作用.

 
也许有点晚了,但现在第一次见到. 读取wmctrl的信息,它表示正确的语法是动作之前的’选项’,-i是一个选项,-c是一个动作.试试wmctrl -i -c 0x04400009
 
 
相关文章
 
 
 

分类: LINUX

2013-04-10 22:59:10

 
一直有个误解,就是wmctrl和unity窗口管理器的兼容性不好,因为我原来在10.04下面正常使用的wmctrl命令在12.04下面不正常,今天终于发现了问题的原因。

事情的起因是我希望实现一键切换显示或者隐藏窗口,比如我有一个帮助文档,希望能够一键给他显示出来,看完给他隐藏。在12.04下面试图使用命令

  1. wmctrl -r 成语接龙含义.pdf -b toggle,shaded

一直没有效果,后来发现需要先取消掉窗口的最大化状态才行,于是脚本变成这样子

  1. #!/bin/bash
  2. #激活成语接龙文档
  3. #判断进程是否存在,如果不存在就启动它如果存在就显示它
  4. PIDS=$(ps aux | grep 'evince.*成语接龙含义.pdf' | grep -v grep)
  5. if [ "$PIDS" != "" ]
  6. then
  7. wmctrl -r 成语接龙含义.pdf -b remove,maximized_horz
  8. wmctrl -r 成语接龙含义.pdf -b remove,maximized_vert
  9. wmctrl -r 成语接龙含义.pdf -e 0,-1,-1,1920,1200
  10. wmctrl -r 成语接龙含义.pdf -b toggle,shaded
  11. #运行进程
  12. else
  13. sh -c "nohup evince /home/bl/Yunio/果果/成语接龙含义.pdf >/dev/null 2>&1 &"
  14. fi

配个快捷键给他,效果非常理想

 

wmctrl像xmonad那样方便地用快捷键来控制任务窗口的显示的更多相关文章

  1. unity编辑器扩展_06(给选项添加快捷键,控制菜单是否启用)

    代码: [MenuItem("Tools/Delete ", true, 1)]    static bool DeleteVadidate()    {        if (S ...

  2. VS2010快捷键设置

    1.进入工具----选项  对话框 2.选择  环境---->键盘 3. 在 [显示命令包含] 下面的对话框中输入"对齐"关键字,然后就会在这个编辑框下面一个文本窗口中显示关 ...

  3. 这些年MAC下我常用的那些快捷键

    Command + H:隐藏窗口 Command + M:最小化窗口 Command + N:新建 Command + O:打开 Command + S:保存 Command + shift+S:另存 ...

  4. 【转】Chrome快捷键

    感谢原作者:http://www.cnblogs.com/mikalshao/archive/2010/11/03/1868568.html 标签页和窗口快捷键 Ctrl+N 打开新窗口. Ctrl+ ...

  5. Safari 快捷键

    标签和网页导航快捷键 8 个 切换到下一个标签页 – Control+Tab 切换到上一个标签页 – Control+Shift+Tab 向下滚动一屏 – 空格 向上滚动一屏 – Shift+空格 焦 ...

  6. Eclipse for Mac 常用快捷键

    为了提高开发效率,Eclipse 为我们提供了许多快捷键,它们能够帮助我们快速和方便的完成一些繁琐的操作.在这里只提供 Eclipse for Mac 的常用快捷键. Command + O:显示大纲 ...

  7. 用win下的快捷键提高工作效率

    常用的快捷键: WIN+D:显示桌面,再按一次还原桌面: WIN+R:打开运行,输入命令可以执行相应操作,输入路径可以打开对应路径,输入程序名称可以打开对应程序(前提是你打开的是windows下面的程 ...

  8. Mac快捷键 Xcode快捷键

    Mac OSX 快捷键&命令行   一.Mac OSX 快捷键 ctrl+shift                                    快速放大dock的图标会暂时放大,而 ...

  9. Word快捷键

    ▲Word快捷键 [F1]键:帮助 [F2]键:移动文字或图形,按回车键确认 [F4]键:重复上一次的操作 [F5]键:编辑时的定位 [F6]键:在文档和任务窗格或其他Word窗格之间切换 [F8]键 ...

随机推荐

  1. 深入了解springcloud gateway 的限流重试机制

    前言 前面给大家介绍了Spring Cloud Gateway的入门教程,这篇给大家探讨下Spring Cloud Gateway的一些其他功能. Spring Cloud Gateway中的重试 我 ...

  2. Web协议详解与抓包实战,高效解决网络难题

    无论你是前后端工程师,还是运维测试,如果想面试更高的职位,或者要站在更高的角度去理解技术业务架构,并能在问题出现时快速.高效地解决问题,Web 协议一定是你绕不过去的一道坎. 旨在帮助你对各种常用 W ...

  3. 翻译:《实用的Python编程》09_01_Packages

    目录| 上一节 (8.3 调试) | 下一节 (9.2 第三方包) 9.1 包 如果编写一个较大的程序,我们并不真的想在顶层将其组织为一个个独立文件的大型集合.本节对包(package)进行介绍. 模 ...

  4. 在Vue中使用sass和less,并解决报错问题(this.getOptions is not a function)

    使用 Less 下载依赖:npm install less less-loader 在mian.js 中添加: import less from "less"; Vue.use(l ...

  5. C# Linq 延迟查询的执行

    在定义linq查询表达式时,查询是不会执行,查询会在迭代数据项时运行.它使用yield return 语句返回谓词为true的元素. var names = new List<string> ...

  6. 【笔记】《Redis设计与实现》chapter12 事件

    12.1 文件事件 Redis基于Reactor模式开发了自己的网络事件处理器:这个处理器被称为文件时间处理器: 文件时间处理器使用IO多路复用程序来同时监听多个套接字,并根据套接字目前执行的任务来为 ...

  7. 11. man page,info page

    Linux系统中的命令可分为内部命令和外部命令.内部命令,又称为内建命令(builtin).怎么区分内部命令和外部命令了? 输入man bash命令,就可查看所有的内部命令. 如何查看命令使用方法 内 ...

  8. 【Azure Developer】使用Java代码启动Azure VM(虚拟机)

    问题描述 在使用Java的启动Azure VM的过程中,遇见了com.azure.core.management.exception.ManagementException: Status code ...

  9. 展开说说,Spring Bean IOC、AOP 循环依赖

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 延迟满足能给你带来什么? 大学有四年时间,但几乎所有人都是临近毕业才发现找一份好工作 ...

  10. HTTP1.0,1.1,2.0,HTTPS

    HTTP1.0/1.1/2.0/HTTPS HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发布和接收HTML页 ...