V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dearrrfish
V2EX  ›  Alfred

Alfred workflow - Browser Switcher

  •  2
     
  •   dearrrfish · 2016-03-09 05:26:50 +08:00 · 4118 次点击
    这是一个创建于 3163 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为 https://www.v2ex.com/t/258892 请求的动机开始写的,这两天用 Javascript 重写了一下(因此只支持 OS X Yosemite+)。目前实现以下功能:

    • switch :在 SafarI/Chrome 之间切换 tab
    • copy: 拷贝当前浏览器或任意 app 窗口的 title, url, selected text 内容至剪贴板
    • open: 打开当前所选内容或剪贴板内容中的第一个 url

    具体说明请移步 Github

    Github: https://github.com/dearrrfish/browser-switcher-alfredworkflow
    Packal: http://packal.org/workflow/browser-switcher

    第 1 条附言  ·  2016-03-30 16:56:09 +08:00

    Renamed to Browser Sugar

    v0.3

    • Entirely rewrote in ES6 classes
    • Script filter XML feedbacks(previews)
    • New actions: stash/unstash
    • New flags/options syntax
    • Default flag settings

    Packal

    Github

    browser sugar

    16 条回复    2016-03-09 15:30:34 +08:00
    allan888
        1
    allan888  
       2016-03-09 06:04:53 +08:00   ❤️ 1
    bug 有点多的感觉,我反复 bss 几次,感觉有一半的概率会关掉当前的,但是没有打开另一个浏览器的新 tab
    dearrrfish
        2
    dearrrfish  
    OP
       2016-03-09 06:21:11 +08:00
    r#1 @allan888 感谢反馈,貌似是没有判断目标 Safari window 是不是浏览器。
    allan888
        3
    allan888  
       2016-03-09 07:37:00 +08:00
    @dearrrfish 修好了 at 一下我呗,这个真心挺有用的。
    elviscai
        4
    elviscai  
       2016-03-09 09:33:10 +08:00
    赞赞赞!!!

    再搞搞就可以卸载掉 PopClip 了——所以这个 Workflow 可以考虑更名为「 PopFred 」?:p
    dearrrfish
        5
    dearrrfish  
    OP
       2016-03-09 09:59:54 +08:00   ❤️ 1
    r#3 @
    @allan888 已更新,欢迎继续帮忙抓虫:P
    allan888
        6
    allan888  
       2016-03-09 10:33:03 +08:00
    @dearrrfish 感觉好极了。
    elviscai
        7
    elviscai  
       2016-03-09 10:53:19 +08:00   ❤️ 1
    报个 copy 的 bug :

    在 Chrome 中进行 copy 时,拷贝出来的内容会带上前一条的剪贴板内容,如:

    http://www.packal.org/workflow/browser-switcher # 当前 Chrome Tab 的 URL
    Browser Switcher | Packal # 当前 Chrome Tab 的 Title
    http://v2ex.com/t/262063%23reply4%0AAlfred%20workflow%20-%20Browser%20Switcher%20-%20V2EX%0A # 上一条的剪贴板内容(不一定是上一个 copy 的操作)
    tmacshuai
        8
    tmacshuai  
       2016-03-09 10:56:36 +08:00
    不错,使用中。
    elviscai
        9
    elviscai  
       2016-03-09 11:01:16 +08:00
    @elviscai 补充一句,如果当前有选中文字就不会出现这个情况,不选中文字即可复现。
    atan
        10
    atan  
       2016-03-09 11:08:48 +08:00   ❤️ 1
    我这里好像不行:
    [ERROR: alfred.workflow.action.script] [{"name":"switch","options":{"clone":false,"dedupe":false,"reverse":false,"clips":{}}}]
    main.js:0:7230: execution error: Error on line 1: TypeError: undefined is not a function (evaluating 'Object.assign(o,{from:i,to:a})') (0)
    dearrrfish
        11
    dearrrfish  
    OP
       2016-03-09 12:45:54 +08:00   ❤️ 1
    @elviscai
    @atan
    烦请更新到 v0.2.2
    elviscai
        12
    elviscai  
       2016-03-09 13:34:16 +08:00
    @dearrrfish 一个小小小 bug :
    1. 剪贴板为空时,进行选中文字的 copy 操作,会出现如下状况——剪贴板历史中(在最终结果之前)会多一条「选中文字」的拷贝记录。
    2. 剪贴板不为空时,先 bss 一下,然后马上进行选中文字的 copy 操作,也会出现上述状况。
    3. 剪贴板不为空且不进行 bss 操作的话,不会出现该状况。

    我用的剪贴板历史工具是 Unclutter 和 Alfred-Features-Clipboard 。
    dearrrfish
        13
    dearrrfish  
    OP
       2016-03-09 14:18:15 +08:00
    r#12 @elviscai
    谢谢反馈,不知道你是在哪个当前 app 内进行拷贝操作?

    关于「拷贝选中文字」这个操作,我是这样实现的:
    - 如果当前 app 是 Safari/Chrome, 会执行 Javascript 语句 `"" + getSelection()` 来获取选中文字,这种情况应该不会出现重复的拷贝记录。
    - 其他 app, 因为没有通用的 standard interface 来判定是否有 selection ,会强制调用一次 `SystemEvents.keystroke()` 发送 `cmd + c` 来尝试获取可能存在的 selection (我猜这应该就是那次多余的拷贝记录)。之后会比较拷贝前后剪贴板内容是否变化来判断是否存在;如果存在,在从当前剪贴板获得选中拷贝之后,还会再进行一次 copy(backupClipboard) 来恢复之前的内容。之所以要恢复是因为,除了 bsc 之外, bss 和 bso 也会用到同样的方法来获取 selection ,而这两个 action 用户是不希望当前剪贴板内容被更改的,例如你选中带 link 的文字用 bso 打开而不需要复制。因此在这种情况下可能会有一些重复拷贝的历史记录。

    看看以后能不能找到通用的获取选中文字而不需要通过剪贴板来中转的接口吧……
    elviscai
        14
    elviscai  
       2016-03-09 14:30:57 +08:00
    @dearrrfish 忘记说了,上述状况在我的 Safari 9.0.3 (11601.4.4) 和 Chrome 49.0.2623.75 beta (64-bit) 里都重现惹……
    dearrrfish
        15
    dearrrfish  
    OP
       2016-03-09 14:46:39 +08:00
    r#14 @elviscai 那挺奇怪的,我清空剪贴板以后试了一下 Safari 和 Chrome ,并没有没有出现单独复制「选中文字」的记录。(没有 Unclutter ,只是从 alfred clipboard 里看)
    elviscai
        16
    elviscai  
       2016-03-09 15:30:34 +08:00
    @dearrrfish 额……是我的软件环境问题……

    「罪魁祸首」是 PopClip ,开启 PopClip 的话就会出现这个情况,关了就没事儿了…… Orz
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5565 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 06:44 · PVG 14:44 · LAX 22:44 · JFK 01:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.