如果一个屏幕垂直定向,桌面上不可见文件?

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

我更改了下载到桌面的文件后,不再可见。 我可以在Nautilus-> Desktop中看到它们,但不是裸眼。 我想Ubuntu会将这些文件放在BenQ监视器下方的虚拟区域中,并保留在垂直监视器上。

任何想法如何解决这个问题?

注意:桌面上的文件是手动排序的,并且保持对齐状态!

这不是如何配置GNOME 3以在桌面上显示图标的副本,因为这不涉及垃圾箱,我的网络等桌面图标。实际文件在BENQ屏幕上不可见。 我也安装了这个应用程序,但它既没有帮助也没有该post中提到的function。 我猜post太旧了,应用程序已经改变了。

怎么了

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

 gvfs-info  

这输出坐标64,1382 (x / y),这使得图标位于左屏幕下方1382 > 1080 )。

这很可能是一个错误的结果。

下面的脚本可用于将虚拟(跨越)桌面上新创建的文件从一个区域(例如不可见区域)移动到另一个区域(在这种情况下:可见区域)。

脚本的属性

尽管脚本似乎已经扩展,但它的编写方式可以避免不必要的操作和例程。 如果桌面上没有新项目,它只检查新文件,导致处理器负载几乎为零。

它能做什么

  • 每秒一次,脚本会检查桌面文件夹中的新项目
  • 如果找到新项目,它会检查位置,必要时将它们移动到可见区域

在此处输入图像描述

但是 ,在移动项目后需要刷新桌面,这只能在桌面是最前面的“文件夹”时才能刷新。 因此,脚本将refresh设置为True 。 在第一次桌面在前面,脚本:

  • 刷新桌面。

如何使用

该脚本需要安装xdotool和wmctrl:

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

xautomation应该已经在您的系统上,但如果不是:

 sudo apt-get install xautomation 

然后:

  • 将下面的脚本复制到一个空文件中,将其另存为blind_area.py
  • 在脚本的head部分中,设置左侧屏幕的大小:

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

  • 如果与我设置的不同,请设置左侧屏幕的分辨率
  • 通过命令测试脚本:

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

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

     /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 

笔记

  • 虽然我在我的系统上测试了很长时间,但这个bug并没有出现在我的系统上,所以“真正的”测试只能由你完成:)
  • 如果桌面上的项目非常拥挤,则刷新操作可能会将图标排列到“禁止”区域。 然而,由于与上述相同的原因,我无法测试您的情况是否属于这种情况。
  • 事实上,脚本假设屏幕是顶部对齐的,因此“盲区”仅位于左下角。