Файл, не видимый на рабочем столе, если один экран вертикально ориентирован?

У меня есть 2 экрана, где каждый - нормальная горизонталь, и другой является вертикальным.

После того, как я изменил это файлы, которые я загружаю на рабочий стол, больше не видимы. Я вижу их в Наутилусе-> Рабочий стол, но не пустым глазом. Я предполагаю, что Ubuntu помещает те файлы в виртуальную область ниже монитора BenQ и leftOf вертикальный монитор.

Какие-либо идеи, как решить это?

Примечание: Файлы на моем рабочем столе вручную отсортированы и Сохраняют Выровненными, убран галочку!

Это не дубликат того, Как настроить GNOME 3 для показа значков на рабочем столе, поскольку это не имеет дело со значками на рабочем столе как Мусор, Моя Сеть, и т.д. Фактический файл не видим на экране BENQ. Я также установил это приложение, но оно не помогает и не упомянуло функцию в том сообщении. Я предполагаю, что сообщение слишком старо, и приложение изменилось с затем.

1
задан 13 April 2017 в 15:23

1 ответ

Что происходит

Ваше предположение, что загруженные файлы, "посаженные" в "слепой" области, корректны: можно получить положение значков с командой:

gvfs-info <item>

Это производит координаты 64,1382 (x/y), который ясно дает понять значок, расположен ниже левого экрана (1382 > 1080).

Это наиболее вероятно результат ошибки.

Сценарий ниже может использоваться для перемещения недавно созданных файлов в виртуальное (охват) рабочий стол от одной области (например, невидимый раздел) к другому местоположению (в этом случае: видимый раздел).

Свойства сценария

Хотя сценарий кажется расширенным, он записан таким способом, которым избегают ненужных действий и стандартных программ. Если никакие новые объекты не появляются на рабочем столе, он только проверяет на новые файлы, вызывая загрузку процессора практически ни одного.

Что это делает

  • Однажды в секунду, сценарий проверяет на новые объекты в настольной папке
  • Если новый объект (объекты) найден, он проверяет местоположение, перемещает их в видимую область при необходимости

enter image description here

Однако рабочий стол должен быть обновлен после того, как объекты перемещены, который может только быть сделан, если рабочий стол является frontmost "папкой". Сценарий поэтому устанавливает refresh кому: True. В первом случае рабочий стол впереди, сценарий:

  • обновляет рабочий стол.

Как использовать

Для сценария нужны и 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% моего экрана.

  • Обратите внимание, что действия перемещения будут видимы, после того как Вы нажали рабочий стол (или имейте рабочий стол впереди всегда).
  • Если все хорошо работает, добавьте его к своим приложениям запуска: Тире> Приложения Запуска> Добавляет команду:

    /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

Примечания

  • Хотя я тестировал его в течение долгого времени в моей системе, ошибка не появляется в моей системе, таким образом, "реальный" тест может только быть сделан Вами :)
  • Если рабочий стол действительно переполнен партиями, если объекты, действие обновления могло бы расположить значки в "запрещенную" область. Я не мог протестировать однако, если это так, в Вашей ситуации по той же причине как выше.
  • Сценарий, как это, предполагает, что экраны являются вершиной-alligned, таким образом, "слепая" область находится только в левом нижнем угле.
2
ответ дан 7 December 2019 в 13:58

Другие вопросы по тегам:

Похожие вопросы: