在我的 14.04 笔记本电脑上,我想使用外接显示器。我想将外接显示器放在左侧,但 ubuntu 似乎逻辑上将其放在右侧。我尝试组织显示位置,但当我将内置显示器拖到右侧时,我的所有桌面图标都会移动到外接显示器。我该如何解决这个问题。
muctadir@muctadir-laptop:~$ xrandr --prop
Screen 0: minimum 8 x 8, current 3286 x 1080, maximum 32767 x 32767
LVDS1 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 193mm
EDID:
00ffffffffffff0006afec4501000000
01150103802213780a0bb59757548c26
23505400000001010101010101010101
010101010101121b566050001630080a
310058c1100000180000000f00000000
00000000000000000020000000fe0041
554f0a202020202020202020000000fe
004231353658573034205635200a0046
BACKLIGHT: 976
range: (0, 976)
Backlight: 976
range: (0, 976)
scaling mode: Full aspect
supported: None, Full, Center, Full aspect
1366x768 60.0*+
1360x768 59.8 60.0
1024x768 60.0
800x600 60.3 56.2
640x480 59.9
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected 1920x1080+1366+0 (normal left inverted right x axis y axis) 160mm x 90mm
EDID:
00ffffffffffff004c2dcd053432524c
12140103801009782a6041a6564a9c25
125054230800a9408180814081009500
b30001010101023a801871382d40582c
4500a05a0000001e011d007251d01e20
6e285500a05a0000001e000000fd0032
3c1e5111000a202020202020000000fc
0053796e634d61737465720a2020018f
02031cf14890041f0514130312230907
078301000066030c00100080011d80d0
721c1620102c2580a05a0000009e011d
8018711c1620582c2500a05a0000009e
011d00bc52d01e20b8285540a05a0000
001e8c0ad090204031200c405500a05a
000000188c0ad08a20e02d10103e9600
a05a0000001800000000000000000046
Broadcast RGB: Automatic
supported: Automatic, Full, Limited 16:235
audio: auto
supported: force-dvi, off, auto, on
1920x1080 60.0*+ 50.0 59.9
1920x1080i 60.1 50.0 60.0
1600x1200 60.0
1680x1050 59.9
1280x1024 60.0
1440x900 59.9
1280x960 60.0
1280x800 59.9
1280x720 60.0 50.0 59.9
1024x768 60.0
800x600 60.3 56.2
720x576 50.0
720x480 60.0 59.9
640x480 60.0 59.9
DP1 disconnected (normal left inverted right x axis y axis)
Broadcast RGB: Automatic
supported: Automatic, Full, Limited 16:235
audio: auto
supported: force-dvi, off, auto, on
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
答案1
系统设置中的屏幕图标其实是可以拖动的,所以你可以把绿色的三星放在左边。或者,你也可以使用这个命令:
xrandr --output HDMI1 --mode 1024x768 --pos 0x0 --rotate normal \
--output LVDS1 --mode 1366x768 --pos 1024x0 --rotate normal
我使用这个命令(当然有不同的输出)来定位我的屏幕,VGA 在左边,内部显示器在右边,进行图形登录。
或者,您可以查看lxrandr
程序,它的作用与 Ubuntu 的设置完全相同,但可能不会那么令人困惑。
答案2
答案3
不幸的是,没有办法让显示器设置知道你的外接屏幕在左边和您希望右侧屏幕成为“主”屏幕,并成为桌面图标的“主”位置。
但这并不意味着每次连接或断开第二个屏幕时您都必须拖动和重新排列图标。
如何节省手动重新排列桌面项目的时间
使用下面的脚本(在快捷键下),您可以对桌面上图标的排列方式进行“快照”(只需执行一次)。
使用第二个快捷键,当连接第二个屏幕时,此快照将“转换”到新的情况,反之亦然;您的图标将始终显示在主屏幕上,并根据快照排列。
优点是,无论您的屏幕设置如何,也无论屏幕如何排列,该解决方案都能发挥作用。您甚至可以更改设置,脚本将计算图标的设置和位置。
实践中如何运作
- 按下组合键
(1)
可截取当前桌面图标排列的快照(如上所述,您只需执行一次)。此排列将被记住在隐藏文件中 - 现在连接您的第二个屏幕,进行任何您想要的设置(左/右、顶部对齐或不对齐,所有都是可能的)。您的桌面将会变得一团糟。
- 按另一个组合键
(2)
,将桌面布局“转换”为新设置。您的图标将移动到右侧的内置屏幕,就像没有连接第二个屏幕一样。单击桌面,然后按F5刷新桌面(否则您将看不到更改)。
如果断开第二个屏幕,您的桌面将再次变得混乱。只需按下组合键(2)
,单击桌面并F5再次按下即可恢复布局。
如何设置
- 将以下脚本复制到一个空文件中,并将其另存为
arrange_desktop.py
- 在脚本的头部部分,设置“主”屏幕的名称(使用命令
xrandr
查找)。这可能是您的内置屏幕。我已经将其设置为xrandr
您问题中的输出。 - 按照你喜欢的方式排列桌面图标
测试运行脚本:
通过以下命令从终端运行它:
python3 /path/to/arrange_desktop.py snapshot
您会看到一条通知:
现在连接第二个屏幕,按照你想要的方式进行设置,你的图标将会变得混乱。
现在再次运行脚本,使用以下选项
restore
:python3 /path/to/arrange_desktop.py restore
您会看到一条通知:
单击桌面(任意位置)并按F5,您的图标将根据快照排列主要的屏幕(在您的情况下是正确的),无论当前的屏幕设置是什么。
如果一切正常,请为命令创建两个快捷键:
python3 /path/to/arrange_desktop.py snapshot
和
python3 /path/to/arrange_desktop.py restore
就大功告成了。现在,您可以使用简单的组合键双向修复桌面布局(连接-断开连接)。
笔记
- 不用说,如果您改变了桌面布局并且希望记住它,请再次拍摄快照。
- 无论是否连接第二个屏幕,您都可以拍摄快照,脚本都会正确计算“主”屏幕上的图标位置。
剧本
#!/usr/bin/env python3
import subprocess
import time
import os
import sys
#--- set the localized name of your desktop below (if necessary)
dt_name = "Desktop"
#--- set the name of the "main" screen below (replace "DVI-I-1")
screen = "LVDS1"
#---
arg = sys.argv[1]
# used strings & definitions
val = " 'metadata::nautilus-icon-position' "
search = "gvfs-info -a"+val
set_val = "gvfs-set-attribute -t string "
home = os.environ["HOME"]
dt_dir = os.environ["HOME"]+"/"+dt_name
datafile = home+"/.desktop_items.txt"
# functions
get = lambda cmd: subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8")
def scr_data():
scr = [l.split() for l in get("xrandr").splitlines() if screen in l][0]
return [int(n) for n in [s for s in scr if all(["+" in s, "x" in s])][0].split("+")[-2:]]
# take a snapshot of the icon layout
if arg == "snapshot":
screen_pos = scr_data()
try:
os.remove(datafile)
except FileNotFoundError:
pass
dt_items = os.listdir(dt_dir)
dt_data = []
for f in [f for f in dt_items if all([not f.startswith("."), not f.endswith("~")])]:
f = '"'+f+'"' if f.count(" ") > 0 else f
file = dt_dir+"/"+f
cmd = search+file
try:
loc = [int(n) for n in get(cmd).split()[-1].split(",")]
loc[0] = loc[0] - screen_pos[0]; loc[1] = loc[1] - screen_pos[1]
loc = (",").join([str(n) for n in loc])
open(datafile, "a+").write(file+"|||"+loc+"\n")
except:
pass
subprocess.Popen(["/bin/bash", "-c", "notify-send 'A snapshot was taken'"])
# restore icons
elif arg == "restore":
vector = scr_data()
items = [l.strip().split("|||") for l in open(datafile).readlines()]
for item in items:
try:
xy = [int(n) for n in item[1].split(",")]
move_to = (",").join(str(n) for n in [vector[0]+xy[0], vector[1]+xy[1]])
command = set_val+item[0]+val+move_to
subprocess.Popen(["/bin/bash", "-c", command])
except:
pass
subprocess.Popen(["/bin/bash", "-c", "notify-send 'Click on the desktop and press F5'"])
答案4
我在 virtuabox 中遇到了这个问题,解决方案是在显示器之间切换屏幕。
- 主屏幕移至内置显示屏
- 辅助屏幕移至您的三星显示屏
Ubuntu 中的其他模式是更改 xml 监视器:
gedit ~/.config/monitors.xml
并编辑:
<primary>yes</primary> <!-- For primary monitor -->
<primary>no</primary> <!-- For not primary monitor -->