当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 5 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : jump or exec(适用于多种窗口管理器)
帖子发表于 : 2011-03-16 0:51 
头像

注册: 2009-01-11 16:05
帖子: 301
送出感谢: 2
接收感谢: 11
安装wmctrl和dmenu
新建dmenu_run
代码:
#!/bin/sh
exe=`dmenu_path | dmenu ${1+"$@"}` && exec ~/focus.py $exe $exe

新建focus.py
代码:
#!/usr/bin/env python
import os
import sys
import commands

run_command = sys.argv[1] # the program to be run
program_name = sys.argv[2] # the program to be focused

# get all windows which contain "program_name" from wmcontrol
candidates = sorted([x.strip() for x in commands.getoutput(""" wmctrl -l -x | awk -v win="%s" 'tolower($0) ~ win {print $1;}' """ % (program_name, )).split("\n") if x !=''])

if candidates :
    active_window_string = commands.getoutput("""xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" """)
    active_window_string =  active_window_string[active_window_string.find("#")+4:].strip()
    active_window = "0x" + "0" * (8-len(active_window_string)) + active_window_string

    next_window = None # the window to display. (one of the windows in candidates)
    if active_window not in candidates: # if the active window is not among the candidate windows
            next_window = candidates[0] # ..just show the first candidate window
    else:# we are already showing one of the candidate windows
            next_window = candidates[ (candidates.index(active_window)+1) % len(candidates)] # show the *next* candidate in the list (cycling)

    if next_window:
            os.system(""" wmctrl -i -a "%s" """ % (next_window,) ) # tell wmcontrol to display the next_window
else : # no windows open which fit the pattern of program_name
    os.system("%s &" % (run_command,)) # open new window

在窗口管理器上加个keybinding,我的是fvwm
代码:
Key F2  A M Exec exec ~/dmenu_run


python程序来自:
http://blog.mfaathp.com/2011/02/ubuntu%E4%BD%BF%E7%94%A8%E5%BF%AB%E6%8D%B7%E9%94%AE%E5%90%AF%E5%8A%A8%E6%88%96%E5%88%87%E6%8D%A2%E5%88%B0%E6%9F%90%E4%B8%AA%E7%A8%8B%E5%BA%8F/

另一个有用的链接:
http://lifegoo.pluskid.org/wiki/JumpOrExec.html#sec2


页首
 用户资料  
 
2 楼 
 文章标题 : Re: jump or exec(适用于多种窗口管理器)
帖子发表于 : 2011-03-16 10:04 

注册: 2009-06-30 23:05
帖子: 96
送出感谢: 0 次
接收感谢: 1
感谢分享!

dmenu是个不错的软件,一直在用。


_________________
裸跑X可能是最后的选择......
目前使用dwm-plus: http://code.google.com/p/dwm-plus/


页首
 用户资料  
 
3 楼 
 文章标题 : Re: jump or exec(适用于多种窗口管理器)
帖子发表于 : 2011-03-16 10:34 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
居然用py调用xprop wmctrl。真折腾。
居然用py来作wm自带的窗口轮询。


_________________
● 鸣学


页首
 用户资料  
 
4 楼 
 文章标题 : Re: jump or exec(适用于多种窗口管理器)
帖子发表于 : 2011-03-16 10:40 
头像

注册: 2008-12-13 15:03
帖子: 395
送出感谢: 0 次
接收感谢: 1
不要跟楼上一般见识。他就这样。


_________________
一条狗的马甲!
对不起,我承认我是一只穿着马甲的狗!


页首
 用户资料  
 
5 楼 
 文章标题 : Re: jump or exec(适用于多种窗口管理器)
帖子发表于 : 2011-03-16 10:49 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
DestroyFunc JumpExec
AddToFunc JumpExec
+ I All ($0) WindowListFunc
+ I TestRc (NoMatch) Exec exec $0 &

没见识的,不去搜索。


_________________
● 鸣学


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 5 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译