AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 804211
Accepted
jtlindsey
jtlindsey
Asked: 2016-07-29 13:44:54 +0800 CST2016-07-29 13:44:54 +0800 CST 2016-07-29 13:44:54 +0800 CST

创建键盘快捷键以在没有 Compiz 的情况下将窗口移动到不同的显示器

  • 772

我正在运行 Ubuntu MATE 16.04,我喜欢它开箱即用。我唯一需要的就是能够使用键盘将我的窗口移动到不同的显示器上。

我一直在使用CompizConfig 设置管理器,它可以工作,但是 Compiz 会在我的系统上导致一长串问题,当我禁用它时这些问题就会消失。Compiz 是一个大包,我想要的只是能够将我的窗口移动到不同的显示器上。所有其他功能已经内置到 Ubuntu MATE 16.04 LTS 键盘快捷键菜单中(切换工作区、将窗口移动到工作区、向左、向右、水平、垂直等)。

出于某种原因,将窗口移到屏幕的东(右)侧和将窗口移到屏幕的西(左)侧并不适用于所有应用程序(尤其是 Firefox,但 Chrome 和其他应用程序可以)。

是否有说明如何制作自己的键盘快捷键的指南?我找到了一个网站,有人为 Xubuntu 制作了自己的网站。当我试图弄清楚他们做了什么时,有没有人有一种简单的方法来创建在显示器之间移动窗口的键盘快捷键?

shortcut-keys
  • 1 1 个回答
  • 1930 Views

1 个回答

  • Voted
  1. Best Answer
    Sergiy Kolodyazhnyy
    2016-07-30T22:47:45+08:002016-07-30T22:47:45+08:00

    介绍

    window_jumper.py是一个 python 脚本,它将在循环中跨多个监视器移动活动窗口。例如,如果您有 3 个监视器 A、B 和 C,重复按键分配的快捷方式会将窗口从 A 移动到 B,再到 C,然后再回到 A。窗口位置将是每个屏幕的左上角.

    用法

    手动运行脚本

    python window_jumper.py
    

    该脚本没有命令行选项(截至目前,但将来可能)。

    设置键盘快捷键

    Ubuntu Unity 步骤:

    1. 转到System Settings-> KeyboardShortcuts tab,选择Custom Shortcuts并单击+按钮。自定义快捷方式弹出窗口将出现两个字段Name:和Command:

    2. 对于Name字段,调用它window_jumper。用于Command:提供脚本文件的完整路径。例如,python /home/ubuntu_user/bin/window_jumper.py. 点击Apply

    3. 点击最右边的一栏,New accelerator就会出现文字。按您希望指定给该脚本的键盘快捷键。例如,我选择CtrlSuperJ

    Ubuntu 伴侣说明:

    1. 转到SystemControl CenterKeyboard Shortcuts,单击Add。自定义快捷方式弹出窗口将出现两个字段Name:和Command:

    2. 对于Name字段,调用它window_jumper。用于Command:提供脚本文件的完整路径。例如,python /home/ubuntu_user/bin/window_jumper.py. 点击Apply

    3. 最右边的列(标记为)将在行上显示Shortcut单词。Disabled单击单词,文本将变为New shortcut。按您要使用的组合键。

    脚本源

    也可以在GitHub 上获得。如果您有 GitHub 帐户,请在那里提交问题和功能请求。

    #!/usr/bin/env python
    import gi
    gi.require_version('Gtk', '3.0')
    from gi.repository import GdkX11, Gdk, Gtk
    
    
    def main():
    
        DEBUG = False
    
        screen = GdkX11.X11Screen.get_default()
        monitors = []
        for monitor in range(screen.get_n_monitors()):
            monitors.append(
                [screen.get_monitor_geometry(monitor).x,
                 screen.get_monitor_geometry(monitor).y])
    
        if DEBUG:
            print monitors
    
        active_window = screen.get_active_window()
        active_window_location = screen.get_monitor_at_window(active_window)
    
        new_location = None
        new_location = active_window_location + 1
        if active_window_location + 1 >= monitors.__len__():
            new_location = 0
        new_screen = monitors[new_location]
        if DEBUG:
            print new_screen
    
        active_window.move(new_screen[0], new_screen[1])
        screen.get_active_window()
        # TODO: add resizing window routine in cases where
        # a window is larger than the size of the screen
        # to which we're moving it.
    
    if __name__ == "__main__":
        main()
    

    旁注:

    • 代码可能会或可能不会更改以包含其他功能。
    • 如果您收到ImportError: No module named gi运行sudo apt install python-gi(感谢Dariusz的评论)
    • 8

相关问题

  • 如何将字符映射到组合键?

  • 如何为所有应用程序(系统范围)禁用 Ctrl+Q?

  • 有哪些有用的键盘快捷键?[关闭]

  • 如何在 Ubuntu 中眨眼间显示桌面?[关闭]

  • 输入语言切换键只接受 shift-alt 而不是 alt-shift [关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve