У меня есть 2 экрана, где каждый - нормальная горизонталь, и другой является вертикальным.
После того, как я изменил это файлы, которые я загружаю на рабочий стол, больше не видимы. Я вижу их в Наутилусе-> Рабочий стол, но не пустым глазом. Я предполагаю, что Ubuntu помещает те файлы в виртуальную область ниже монитора BenQ и leftOf вертикальный монитор.
Какие-либо идеи, как решить это?
Примечание: Файлы на моем рабочем столе вручную отсортированы и Сохраняют Выровненными, убран галочку!
Это не дубликат того, Как настроить GNOME 3 для показа значков на рабочем столе, поскольку это не имеет дело со значками на рабочем столе как Мусор, Моя Сеть, и т.д. Фактический файл не видим на экране BENQ. Я также установил это приложение, но оно не помогает и не упомянуло функцию в том сообщении. Я предполагаю, что сообщение слишком старо, и приложение изменилось с затем.
Ваше предположение, что загруженные файлы, "посаженные" в "слепой" области, корректны: можно получить положение значков с командой:
gvfs-info <item>
Это производит координаты 64,1382
(x/y), который ясно дает понять значок, расположен ниже левого экрана (1382
> 1080
).
Это наиболее вероятно результат ошибки.
Сценарий ниже может использоваться для перемещения недавно созданных файлов в виртуальное (охват) рабочий стол от одной области (например, невидимый раздел) к другому местоположению (в этом случае: видимый раздел).
Хотя сценарий кажется расширенным, он записан таким способом, которым избегают ненужных действий и стандартных программ. Если никакие новые объекты не появляются на рабочем столе, он только проверяет на новые файлы, вызывая загрузку процессора практически ни одного.
Однако рабочий стол должен быть обновлен после того, как объекты перемещены, который может только быть сделан, если рабочий стол является frontmost "папкой". Сценарий поэтому устанавливает refresh
кому: True
. В первом случае рабочий стол впереди, сценарий:
Для сценария нужны и xdotool и в wmctrl, который будет установлен:
sudo apt-get install xdotool
sudo apt-get install wmctrl
xautomation
должен уже быть в Вашей системе, но в случае, если это не:
sudo apt-get install xautomation
Затем:
В главном разделе сценария, набор размер Вашего левого экрана:
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