multi-monitor organiza a área de trabalho pelo nome bug

1

Estou usando o Ubuntu 14.04LTS com o Unity e usando dois monitores: meu monitor embutido no notebook, 1366x768 e um monitor externo com resolução de 1920x1080.

meu monitor principal é o interno e, assim, quando clico com o botão direito do mouse na área de trabalho e "organizo a área de trabalho pelo nome", os ícones vão até ele e ficam alinhados.

o problema acontece quando eu tenho muitos ícones para alinhar, e o Unity envia alguns ícones para abaixo da minha tela visível, provavelmente considerando a resolução maior do monitor.

Testei a seleção de todos os ícones alinhados (ctrl + a) e arrastei para o monitor maior, mas parece que os ícones que ficaram ocultos também ficaram sobrepostos acima uns dos outros.

de qualquer forma, parece ser um bug, certo?

Ainda não verifiquei 14.10 para ver se isso foi corrigido.

obrigado

    
por weeanon 04.11.2014 / 19:42

2 respostas

0

Sim, estou tendo o mesmo problema. Eu clico em "organizar a área de trabalho pelo nome", em seguida, os ícones saem da tela e tenho que ctrl-A para exibi-los novamente.

    
por Michael Clare 04.02.2015 / 03:23
0

Eu escrevi um script para atualizar a posição dos ícones. O script faz com que os ícones caibam na tela, qualquer que seja sua resolução de tela.

É lento e leva um pouco mais de 1 segundo na minha máquina para 100 arquivos. Mas pelo menos funciona. Pode haver melhor maneira de conseguir isso ...

Copie e cole o código abaixo em um nome de arquivo "arrange_icons.sh". Em um terminal, execute chmod 755 /path/to/arrange_icons.sh . Execute o script com /path/to/arrange_icons.sh

#!/bin/bash

######################################################
## Script to automatically arrange desktop icons
## taking into account screen resolution of multiple
## monitors
######################################################

# Sort icons by...
sortby=name
# sortby=none
# sortby=time
# sortby=size
# sortby=extension
# sortby=version

# Maximum size of the grid (distance between two icons)
grid_size=85

# top, right, bottom and left margin of the screen
grid_margintop=25
grid_marginright=50
grid_marginbottom=50
grid_marginleft=50

# Filling order
# Default: fill from top to bottom, then change column from left to right
# A regular english book is written using leftright-topbottom
grid_fill=topbottom-leftright
# grid_fill=topbottom-rightleft
# grid_fill=bottomtop-leftright
# grid_fill=bottomtop-rightleft
# grid_fill=leftright-topbottom
# grid_fill=leftright-bottomtop
# grid_fill=rightleft-topbottom
# grid_fill=rightleft-bottomtop

# Find the Desktop path as it may vary from language to language
# Path to home sub-directories are located in ~/.config/user-dirs.dirs
source ~/.config/user-dirs.dirs
DESKTOP="${XDG_DESKTOP_DIR}"

# Count desktop file
icon_number=$(ls "${DESKTOP}" | wc -l)

# Find monitors, dimensions and positions, and store all icon position to temp file
tmp=/tmp/arrange_icons.position-$RANDOM$RANDOM$RANDOM
while :
do
  # Empty the file storing icon positions
  printf '' > "${tmp}"

  xrandr | grep -oE '[0-9]+x[0-9]+\+[0-9]+\+[0-9]+' | while read screen
  do
    width=$(echo ${screen} | cut -d 'x' -f 1)
    height=$(echo ${screen} | cut -d 'x' -f 2 | cut -d '+' -f 1)
    cx=$(echo ${screen} | cut -d 'x' -f 2 | cut -d '+' -f 2)
    cy=$(echo ${screen} | cut -d 'x' -f 2 | cut -d '+' -f 3)

    for px in $(seq $((cx + grid_marginleft)) ${grid_size} $((cx + grid_marginleft + width - grid_size - grid_marginright)))
    do
      for py in $(seq $((cy + grid_margintop)) ${grid_size} $((cy + grid_margintop + height - grid_size - grid_marginbottom)))
      do
        echo "${px},${py}" >> "${tmp}"
      done
    done
  done

  # Count the number of positions available with this grid
  grid_number=$(cat "${tmp}" | wc -l)

  # If it is not possible to fit every icons, try to decrease the size of the grid
  # until it fits or until the grid size reaches the minimum value (1)
  if [ ${grid_number} -lt ${icon_number} ]
  then
    grid_size=$((grid_size - 5))
    if [ ${grid_size} -lt 1 ]
    then
      grid_size=1
      break
    fi
  else
    break;
  fi
done

# Sort position according to settings
case "${grid_fill}" in
  topbottom-leftright) sort -o "${tmp}" -t, -k 1,1n -k 2,2n "${tmp}"
                       ;;
  topbottom-rightleft) sort -o "${tmp}" -t, -k 1,1rn -k 2,2n "${tmp}"
                       ;;
  bottomtop-leftright) sort -o "${tmp}" -t, -k 1,1n -k 2,2rn "${tmp}"
                       ;;
  bottomtop-rightleft) sort -o "${tmp}" -t, -k 1,1rn -k 2,2rn "${tmp}"
                       ;;
  leftright-topbottom) sort -o "${tmp}" -t, -k 2,2n -k 1,1n "${tmp}"
                       ;;
  leftright-bottomtop) sort -o "${tmp}" -t, -k 2,2rn -k 1,1n "${tmp}"
                       ;;
  rightleft-topbottom) sort -o "${tmp}" -t, -k 2,2n -k 1,1n "${tmp}"
                       ;;
  rightleft-bottomtop) sort -o "${tmp}" -t, -k 2,2rn -k 1,1n "${tmp}"
                       ;;
                    *) sort -o "${tmp}" -t, -k 1,1n -k 2,2n "${tmp}"
                       ;;
esac

# List all files on the desktop and move them to the correct location
line_number=1

# Temporary path for icon
# Moving them to /tmp folder and then moving them back to the Desktop
# is sufficient to update their position :)
tmpicon=/tmp/arrange_icons.fake-$RANDOM$RANDOM$RANDOM
([ "${sortby}" != "name" ] && ls --sort=${sortby} "${DESKTOP}" || ls "${DESKTOP}") | while read icon
do
  iconpath="${DESKTOP}/${icon}"
  coord="$(tail -n+${line_number} "${tmp}" | head -n1)"

  gvfs-set-attribute -t string "${iconpath}" 'metadata::nautilus-icon-position' "${coord}"
  mv "${iconpath}" "${tmpicon}"
  mv "${tmpicon}" "${iconpath}"

  line_number=$((line_number + 1))
done

# Cleaning
rm "${tmp}"

Na minha máquina, eu defino um crontab que verifica cada segundo a pasta Desktop. Se algo mudou, o script acima é executado.

    
por Slagt 10.03.2016 / 19:47