如果一个屏幕是垂直方向的,则文件在桌面上不可见?

如果一个屏幕是垂直方向的,则文件在桌面上不可见?

我有 2 个屏幕,一个是正常水平的,另一个是垂直的。

在我更改了这些之后,我下载到桌面的文件就看不见了。我可以在 Nautilus->Desktop 中看到它们,但肉眼看不到。我猜 Ubuntu 将这些文件放在 BenQ 显示器下方和垂直显示器左侧的虚拟区域中。

有什么想法可以解决这个问题吗?

注意:我的桌面上的文件是手动排序的,并且保持对齐已勾选!

这不是如何配置 GNOME 3 在桌面上显示图标因为这不处理桌面图标,如垃圾、我的网络等。实际文件在 BENQ 屏幕上不可见。我也安装了这个应用程序,但它既没有帮助,也没有该帖子中提到的功能。我猜这个帖子太旧了,应用程序从那时起就发生了变化。

答案1

会发生什么

您假设下载的文件“落”在“盲”区域中是正确的:您可以使用以下命令获取图标的位置:

gvfs-info <item>

这将输出坐标64,1382(x/y),明确图标的位置以下左侧屏幕 ( 1382> 1080)。

这很可能是由于错误造成的。

下面的脚本可以用来移动新建将虚拟(跨)桌面上的文件从一个区域(例如,不可见部分)移动到另一个位置(在本例中为可见部分)。

脚本的属性

尽管该脚本看起来有点冗长,但其编写方式可以避免不必要的操作和例程。如果桌面上没有出现新项目,它只会检查新文件,因此几乎不会对处理器造成任何负载。

它能做什么

  • 该脚本每秒检查一次桌面文件夹中的新项目
  • 如果发现新项目,它会检查位置,并在必要时将其移至可见区域

在此处输入图片描述

然而,移动项目后需要刷新桌面,这只有当桌面是最前面的“文件夹”时才能完成。因此脚本设置refreshTrue。第一次桌面位于最前面时,脚本:

  • 刷新桌面。

如何使用

该脚本需要安装 xdotool 和 wmctrl:

sudo apt-get install xdotool
sudo apt-get install wmctrl

xautomation应该已经存在于你的系统中,但如果没有:

sudo apt-get install xautomation

然后:

  • 将以下脚本复制到一个空文件中,并将其保存为 blind_area.py
  • 在脚本的头部,设置左屏幕的尺寸:

    left_scr = [1920, 1080]
    
  • 设置桌面文件夹的本地化名称(可能只是“桌面”,但在荷兰语中则是“Bureaublad”)

  • 如果左屏的分辨率和我设置的不同,请设置左屏的分辨率
  • 通过以下命令测试运行脚本:

    python3 /path/to/blind_area.py
    
  • 我通过将屏幕的垂直尺寸设置为其实际尺寸的一半来进行测试,这移动了所有新的(!)图标移动到屏幕的顶部 50%。

  • 请注意,一旦您单击桌面(或以任何方式将桌面置于前面),移动操作就会可见。
  • 如果一切正常,请将其添加到您的启动应用程序中:Dash>启动应用程序>添加命令:

    /bin/bash -c "sleep 15&&python3 /path/to/blind_area.py"
    

剧本

#!/usr/bin/env python3
import subprocess
import os
import time

#--- set localized name of the Desktop folder below
desktop_name = "Desktop"
#--- set the resolution of the left screen below
left_scr = [1920, 1080]
#---

get = lambda cmd: subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8")
home = os.environ["HOME"]
dr = home+"/"+desktop_name
# used strings
val = " 'metadata::nautilus-icon-position' "
search = "gvfs-info -a"+val
set_val = "gvfs-set-attribute -t string "
refresh_cmd = "xte 'key F5'"
# function to check if desktop is in front
def check_frontmost():
    try:
        frontmost = str(hex(int(get("xdotool getwindowfocus").strip())))
        frontmost = frontmost[:2]+"0"+frontmost[2:]
        w_list = [l.split() for l in get("wmctrl -lG").splitlines()]
    except subprocess.CalledProcessError:
        return False
    else:
        check = len([l for l in w_list if all([str(space[0]) in l, frontmost in l, str(space[1]) in l])]) > 0
        return check
# function to get the resolution
def get_res():
    xr = get("xrandr").split(); pos = xr.index("current")
    return [int(xr[pos+1]), int(xr[pos+3].replace(",", "") )]

dtfiles_1 = []
refresh = False

while True:
    # check current files
    time.sleep(1)
    dtfiles_2 = os.listdir(dr)
    # check for new files, move if necessary
    newfiles = [f for f in dtfiles_2 if all([
        not f in dtfiles_1,
        not f.endswith("~"),
        not f.startswith("."),
        ])]
    if len(newfiles) != 0:
        # check desktop size (only if new files appear)
        space = get_res()
    for f in newfiles:
        fdir = os.path.join(dr, f);  fdir = "'"+fdir+"'" if fdir.count(" ") != 0 else fdir
        try:
            loc = [int(n) for n in eval(get(search+fdir).split()[-1:][0])]
        except:
            pass
        else:
            if all([loc[0] < left_scr[0], loc[1] > left_scr[1]]):
                command = set_val+fdir+" "+val+str(loc[0])+","+str(loc[1]-left_scr[1])
                subprocess.Popen(["/bin/bash", "-c", command])
                refresh = True
    if all([refresh == True, check_frontmost() == True]):
        subprocess.Popen(["/bin/bash", "-c", refresh_cmd])
        refresh = False
    dtfiles_1 = dtfiles_2

笔记

  • 尽管我在我的系统上测试了很长时间,但是这个错误并没有出现在我的系统上,所以“真正的”测试只有你才能做:)
  • 如果桌面上挤满了很多如果项目,刷新操作可能会将图标排列到“禁止”区域。但是,我无法测试您的情况是否也是如此,原因与上述相同。
  • 该脚本假定屏幕是顶部对齐的,因此“盲区”仅在左下角。

相关内容