Um arquivo não visível na área de trabalho se uma tela estiver orientada verticalmente?

1

Eu tenho 2 telas onde uma é normal horizontal e a outra é vertical.

Depoisqueeumudei,osarquivosquebaixeiparaaáreadetrabalhonãosãomaisvisíveis.Eupossovê-losnoNautilus->Desktop,masnãoaolhonu.EuachoqueoUbuntucolocaessesarquivosnaáreavirtualabaixodomonitorBenQesaiudomonitorvertical.

Algumaidéiadecomoresolverisso?

Observação:osarquivosdaminhaáreadetrabalhosãoclassificadosmanualmenteeoKeepAlignedestádesativado.

Estanãoéaduplicatade Como configurar o GNOME 3 para mostrar ícones na área de trabalho , já que isso não lida com ícones da área de trabalho, como Lixeira, Minha Rede, etc. O arquivo atual não é visível na tela do BENQ. Eu também instalei este aplicativo, mas ele não ajuda nem tem o recurso mencionado nesse post. Eu acho que o post é muito antigo e o aplicativo mudou a partir de então.

    
por ubuntico 04.05.2015 / 14:56

1 resposta

2

O que acontece

Sua suposição de que os arquivos baixados "pousaram" na área "cega" está correta: Você pode obter a posição dos ícones com o comando:

gvfs-info <item>

Isso gera as coordenadas 64,1382 (x / y), o que deixa claro que o ícone está posicionado abaixo da tela à esquerda ( 1382 > 1080 ).

Este é provavelmente o resultado de um bug.

O script abaixo pode ser usado para mover arquivos recém-criados na área de trabalho virtual (abrangendo) de uma área (por exemplo, a seção invisível) para outro local (neste caso: a seção visível).

Propriedades do script

Embora o script pareça estendido, ele é escrito de tal forma que ações e rotinas desnecessárias são evitadas. Se nenhum novo item aparecer na área de trabalho, ele apenas verificará novos arquivos, causando uma carga de praticamente nenhum processador.

O que faz

  • Uma vez por segundo, o script verifica novos itens na pasta da área de trabalho
  • Se novos itens forem encontrados, ele verificará o local e os moverá para a área visível, se necessário

Noentanto,,aáreadetrabalhoprecisaseratualizadadepoisqueositenssãomovidos,oquesópodeserfeitoseaáreadetrabalhofora"pasta" mais frontal. O script, portanto, define refresh para True . Na primeira vez que a área de trabalho está na frente, o script:

  • atualiza a área de trabalho.

Como usar

O script precisa de ambos xdotool e wmctrl para serem instalados:

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

xautomation já deve estar no seu sistema, mas caso não esteja:

sudo apt-get install xautomation

Então:

  • Copie o script abaixo em um arquivo vazio, salve-o como blind_area.py
  • Na seção principal do script, defina o tamanho da sua tela à esquerda:

    left_scr = [1920, 1080]
    
  • Defina o nome localizado para a sua pasta da área de trabalho (provavelmente apenas "Desktop", mas em holandês seria "Bureaublad" por exemplo)

  • Defina a resolução da tela da esquerda se for diferente do que defini
  • Teste o script com o comando:

    python3 /path/to/blind_area.py
    
  • Testei-o ajustando o tamanho vertical da minha tela para metade do seu tamanho real, o que moveu todos os ícones novos (!) para os 50% da tela.

  • Observe que as ações de movimentação ficarão visíveis quando você clicar na área de trabalho (ou tiver a área de trabalho na frente de qualquer forma).
  • Se tudo funcionar bem, adicione-o aos seus aplicativos de inicialização: Dash > Aplicativos de inicialização > Adicione o comando:

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

O script

#!/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

Notas

  • Embora eu tenha testado por um longo tempo no meu sistema, o bug não aparece no meu sistema, então o teste "real" só pode ser feito por você:)
  • Se a área de trabalho estiver realmente lotada com lotes de itens, a ação de atualização poderá organizar os ícones em uma área "proibida". Eu não pude testar, no entanto, se esse é o caso na sua situação, pela mesma razão acima.
  • O script, como é, presume que as telas são top-alinhadas, então a área "cega" fica apenas no canto inferior esquerdo.
por Jacob Vlijm 05.05.2015 / 08:01