快速桌面窗口切换和应用程序启动实用程序

flitter的Python项目详细描述


[![构建状态](https://travis ci.org/seanh/flitter.svg)(https://travis ci.org/seanh/flitter)
[![覆盖状态](https://img.shields.io/covertalls/seanh/flitter.svg)(https://covertalls.io/r/seanh/flitter)
[![最新版本](https://pypip.in/version/flitter/badge.svg)(https://pypi.python.org/pypi/flitter/)
[![下载](https://pypip.in/download/flitter/badge.svg)(https://pypi.python.org/pypi/flitter/)
[![支持的python版本](https://pypip.in/py_versions/flitter/badge.svg)(https://pypi.python.org/pypi/flitter/)
[![开发状态](https://pypip.in/status/flitter/badge.svg)(https://pypi.python.org/pypi/flitter/)
[![许可证](https://pypip.in/license/flitter/badge.svg)](https://pypi.python.org/pypi/flitter/)



==


flitter使启动应用程序和在窗口之间切换尽可能快而容易

*f1启动firefox,或者在firefox启动时聚焦firefox窗口fox已经在运行了。
*如果有多个firefox窗口打开,则重复按f1周期

*f2对gvim也一样。
*以此类推,将所有最常用的应用程序绑定到功能键或其他键盘快捷键(您可以配置apps和快捷方式)。
*我有f1..f10绑定到我最常用的10个应用程序,f11循环通过所有其他不属于我的前10个应用程序的窗口。
*在应用程序之间移动时,flitter会首先提升每个应用程序最近使用的窗口一个应用程序的窗口,它通过窗口的顺序是最近使用的第一个顺序。

帽子。f1会带你去firefox,必要时打开它。如果应用程序是打开的,则只能对其使用alt tab键,如果不需要,则必须执行其他操作才能启动该应用程序。
*您无需使用鼠标打开应用程序或切换窗口。
*您无需使用双手或两个手指扭曲来同时按多个键(alt+tab、tab、tab…)。只需按一个功能键即可。
*您只需按一个键(可能反复按一下它)即可进入一个窗口,无需按Alt+Tab、Tab、Tab即可进入一个应用程序,然后按Alt+Tab、Alt+Down、Left、Left即可进入窗口。
*您无需查看或思考屏幕上的任何内容在
应用程序窗口中,当它们聚焦时(在
Alt Tab对话框中找不到合适的图标)
*手指内存非常兼容,你的手会很快记住
Firefox的f1,Thunderbird的f5,Skype的f8,你将以
思维速度切换应用程序。

如果您打开了几十个firefox窗口,那么反复按f1键循环浏览firefox窗口并不能很好地扩展。
但就我个人而言,我通常每个应用只有一个窗口,而且不会超过三个或四个,
每个应用有一个窗口(有时每个窗口中有几个选项卡)和
flitter可以工作对我来说太好了(关注最近使用的windows首先会使
有很大的不同)。


如果应用程序多于
功能键,则将每个功能键绑定到应用程序不会缩放。对于顶部以外的应用程序,您可以返回alt选项卡,但"flitter--others"(参见下文)为您提供了一个在不属于任何绑定应用程序的窗口中循环的键。我发现这让我可以完全避免
alt tab。



s x或非wmh/netwm linux环境,
尽管应该可以进行移植(只需替换
[wmctrl.py](https://github.com/seanh/flitter/blob/master/flitter/wmctrl)。py)
具有与桌面窗口交互的功能。



installation
----


first install wmctrl。在debian或ubuntu上,只需:



>然后安装flitter:

$pip install flitter


>现在应该可以在shell中运行"flitter"命令了。
运行"flitter-h"以获取帮助。



——

将[默认配置文件](https://github.com/seanh/flitter/blob/master/flitter/flitter.json)复制到`~/.flitter.json`。这是一个[json]文件(http://json.org/),包含一个
的窗口规范列表。窗口规格是flitter如何知道哪些窗口属于哪个应用程序的。每个规范都有一个名称,例如"firefox",以及与打开的窗口的属性相匹配的许多属性
,以决定每个窗口是否是firefox窗口。例如:

"firefox":{
"wm-class":".firefox"、
"command":"firefox"
}、


此窗口规范将匹配wm-class属性包含
字符串".firefox"(换句话说,所有firefox窗口)的所有窗口。

flitter启动一个firefox窗口或启动firefox,以
规范的名称作为命令行参数运行它:


$flitter firefox

您只需使用窗口管理器提供的绑定键盘的任何机制/>flitter命令的快捷方式。

要查看所有打开的窗口及其属性的列表,以便您可以为它们编写
窗口规范,请运行"wmctrl-lxp"(有关详细信息,请参见"man wmctrl")。


规范的"命令"部分是flitter将运行以启动
firefox的命令,如果没有找到firefox窗口。

这种识别窗口的方法非常灵活。您可以超越简单的每个键盘快捷方式模式一个应用程序,例如:

*切换到显示谷歌日历的Firefox窗口或在新的Firefox窗口中打开谷歌日历的键
*切换到运行WeeChat的GNOME终端窗口或打开新的
GN具有WeeChat配置文件的OME终端窗口


窗口规范中可以包含的全套属性是:

`window\u id`
打开窗口的唯一ID,例如0x0180000b


`desktop`
窗口所在的桌面,例如1

`pid`
窗口的ID,例如3384

`wm-class`
>窗口的wm-u类,例如navigator.firefox

`machine`
>窗口所属的客户机

`title`



----


er在虚拟开发环境中,首先在debian或ubuntu do上安装virtualenv:

$sudo apt get install python virtualenv

>然后创建并激活python虚拟环境,并将flitter安装到它:

$virtualenv flitter
$。flitter/bin/activate
$cd flitter
$pip install-e'git+https://github.com/seanh/flitter.git\egg=flitter'

`which flitter'现在应该在virtualenv中报告flitter二进制文件。

要运行测试,请执行以下操作:

$cd src/flitter
$pip install-r dev requirerments.txt
$nosetests

若要运行测试并生成测试覆盖率报告,请执行以下操作:


$nosetests--with coverage--cover inclusive--cover erase--cover tests

to upload a new release of flitter to pypi ans github:

1。更新[setup.py](setup.py)中的版本号。
2.` python setup.py sdist`
3.` python setup.py sdist upload`
4.` git commit setup.py-m"版本x.y.z"`
5.` git标签x.y.z`
6.` git push`
7.` Git推送——标记`

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java提供了大量的Quartz工作线程   来自SOAPException的java抛出超时异常   java通过REST web服务同步PostgreSQL过程调用   java Hibernate:在关联表中设置值   javaimapidlechanneladapterjavax。邮政AuthenticationFailedException:[警报]同时连接太多   JavaApacheStorm:stormkafkamonitor脚本引发异常   java将jar链接到战争   Matlab与Java的集成方法   安卓公司。谷歌。ads.AdView未能实例化java。lang.ClassNotFoundException:org。json。JSONException   “String forecastStr=mForecastAdapter.getItem(position);”行中出现java错误阳光工程   java如何将Mono中的列表属性作为流量进行操作?   java DecimalFormat类不必要地给出整数   java@IfProfileValue两个spring配置文件   java如何使用SwingWorker创建多线程?   java从扩展SwingWorker的内部类触发事件   java二叉树高度实现