每个工作区的屏幕分辨率不同?

Fet*_*ett 5 xfce resolution unity workspaces screen

我在我的 ubuntu 笔记本电脑上使用 i3-wm。我的屏幕尺寸是 3200x1800。这对某些事情很好,但对其他事情很糟糕。(Netflix 与 gvim)。

我想更改一个或多个工作区的分辨率。但我不知道这是否可能......我可以使用 compton 来做到这一点还是其他程序?

Jac*_*ijm 3

1. 假设您使用的是 Unity

下面的脚本应该更改您的分辨率,具体取决于 Unity 中的当前视口。我在几台电脑上测试了一段时间,运行没有错误。

不过,我建议也对其进行一段时间的测试,看看它是否可以不间断地运行;重复的wmctrl命令有时会意外地以“非零”退出。如果是这样,我们需要构建一个try / except.

笔记

  • 我在单显示器设置上对其进行了测试。多个监视器可能需要另一种方法来解析xrandr.
  • 在脚本的头部,您需要为每个视口设置所需的分辨率,我按照您的评论中提到的方式设置它,但您可以随时更改它。使用格式:

    resolutions = [[<horizontal>, <vertical], [<horizontal>, <vertical], ......]
    
    Run Code Online (Sandbox Code Playgroud)

    就像脚本中显示的那样。

  • 不用说您应该使用受支持的分辨率,就像xrandr显示器的输出一样。

如何使用

  1. 该脚本需要wmctrl

    sudo apt-get install wmctrl
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将下面的脚本复制到一个空文件中,另存为screen_res.py

  3. 通过以下命令在终端窗口中测试运行它一段时间:

    python3 screen_res.py
    
    Run Code Online (Sandbox Code Playgroud)
  4. 如果一切正常,请将其添加到您的启动应用程序中:Dash > 启动应用程序 > 添加...

剧本

resolutions = [[<horizontal>, <vertical], [<horizontal>, <vertical], ......]
Run Code Online (Sandbox Code Playgroud)

解释

  • 在循环中,脚本首先通过命令检查屏幕的当前分辨率:

    xrandr
    
    Run Code Online (Sandbox Code Playgroud)
  • 随后,脚本通过命令检查总桌面大小(所有视口):

    wmctrl -d
    
    Run Code Online (Sandbox Code Playgroud)
  • 然后,根据桌面总大小的分辨率 icw 计算列数,该列数等于桌面总大小除以水平分辨率。

  • 的输出中wmctrl -d还有当前视口在跨桌面上的位置:例如:VP: 1680,0
  • 有了这些信息,我们就可以得出我们所在的列和行的结论,并检查当前设置的分辨率是否与我们在脚本头部的列表中定义的分辨率相匹配。
    如果没有,脚本会给出更改分辨率的命令:

    xrandr -s <xres>x<yres>
    
    Run Code Online (Sandbox Code Playgroud)

2.XFCE版本

  • 像上面的版本一样设置(也需要wmctrl
sudo apt-get install wmctrl
Run Code Online (Sandbox Code Playgroud)