¿Existe un entorno de escritorio amigable dinámico-monitor múltiple disponible para Ubuntu?

14

Uso una computadora portátil y me gusta migrar durante el día de un lugar de trabajo (físico) a otro y conectarme a un monitor externo si está disponible.

También debo realizar muchas tareas a la vez, por lo que tengo muchas ventanas abiertas en cualquier momento y muchos espacios de trabajo (virtuales) para organizarlas.

Pero cada vez que conecto / desconecto el monitor externo, todo mi cuidadoso arreglo desaparece. Esto me enoja mucho .

¿Existe un entorno de escritorio que solo deja las ventanas en paz cuando conecta / desconecta un segundo monitor? O incluso mejor, ¿recuerda la disposición de ventanas por disposición de monitor? De modo que cuando fui de mi oficina en casa (monitor de 17 "en la parte superior de la pantalla del portátil) a mi lugar de trabajo habitual (monitor de 21" a la izquierda de la pantalla del portátil) o al escritorio de mi colega (monitor de 19 "a la derecha de la pantalla superior), el las ventanas terminan donde estaban la última vez que se conectó el monitor, o permanecen en el lugar si nunca vieron este monitor.

La forma en que la unidad "maneja" los monitores externos simplemente me entristece y deseo no tener todos esos monitores adicionales para conectar y, una vez que lo conecto, me encadena a esta disposición, como si tuviera una máquina de escritorio clavada en el piso.

artm
fuente
¿Esto sucede con algún administrador de ventanas? GNOME 3, KDE, LXDE, XFCE?
Braiam
No lo sé. Sucede con la unidad.
artm
¿Has encontrado una buena solución para esto? Me vi obligado a usar una computadora portátil Dell en la que puse ubuntu, pero estoy acostumbrado a mi MacBook Pro. En Mac hay un programa llamado Stay, que es indispensable, porque recuerda las ubicaciones de las ventanas para cada configuración de monitor. Conecte un monitor, todas las ventanas se moverán a donde estaban. Conecte un segundo monitor, todos se moverán nuevamente. Desenchufe, todos vuelven a donde estaban. Además, la Mac es lo suficientemente inteligente incluso sin Stay para asegurarse de que todas las ventanas sean visibles. En esta computadora portátil Ubuntu sigo teniendo que encontrar las ventanas que están fuera de la pantalla.
Greywire
No puedo encontrar nada como Stay on Linux. Parece que puede obtener toda la información y el control de comandos individuales, y los scripts a continuación se acercan. Estoy trabajando para mejorarlos para obtener la funcionalidad que necesito ...
Greywire
Quedarse suena como lo que me estoy perdiendo. No, no he encontrado una solución.
artm

Respuestas:

10

Te estoy proporcionando dos scripts de shell. Le ayudará a guardar su disposición de las posiciones y el tamaño de las ventanas . Si de alguna manera se alteran los arreglos de Windows que desea, podrá restaurar esos arreglos con el tamaño exacto de ventanas y posiciones para todas las ventanas usando este script.

Necesita instalar a wmctrlmenos que ya lo tenga. Instalar a través de terminal,

sudo apt-get install wmctrl

Script para guardar la configuración de Windows

# Script_Name: save_window_conf.sh
#!/bin/bash
if [ -f $HOME/.my_windows_config.txt ]; then
    echo -e "Information: Previous configuration file \"$HOME/.my_windows_config.txt\" already exists.\nTo save a new configuration remove it manually using the following command,\n\n\trm $HOME/.my_windows_config.txt"
    exit 1
else
    wmctrl -p -G -l | awk '($2 != -1)&&($3 != 0)&&($NF != "Desktop")' | awk '{print $1}' | while read mywinid
    do
        xwininfo -id "$mywinid" >> $HOME/.my_windows_config.txt
    done
fi

En la ejecución, el script anterior guardará la posición y el tamaño de todas sus ventanas abiertas en un archivo llamado .my_windows_config.txt en su directorio de inicio. Es un archivo de texto oculto.

Script para recargar la configuración de Windows

# Script_Name: load_window_conf.sh
#!/bin/bash

file=$HOME/.my_windows_config.txt
declare -a mywinid
declare -a x
declare -a y
declare -a width
declare -a height

nl=$(cat "$file" | grep xwininfo |wc -l)

for i in $(seq 1 $nl)
do
    mywinid[i]=$(cat "$file" | grep "xwininfo" | awk -v p="$i" '{if(NR==p) print $4}')
    x[i]=$(cat "$file" | grep "Absolute upper-left X" | awk -v p="$i" '{if(NR==p) print $NF}')
    y[i]=$(cat "$file" | grep "Absolute upper-left Y" | awk -v p="$i" '{if(NR==p) print $NF}')
    width[i]=$(cat "$file" | grep "Width" | awk -v p="$i" '{if(NR==p) print $NF}')
    height[i]=$(cat "$file" | grep "Height" | awk -v p="$i" '{if(NR==p) print $NF}')
done

for it in $(seq 1 $nl)
do
    wmctrl -i -r "${mywinid[$it]}" -e 0,"${x[$it]}","${y[$it]}","${width[it]}","${height[it]}"
done

Cuando ejecute el segundo script, restaurará la posición de su ventana con el tamaño exacto para todas sus ventanas.

Uso

Guarde estos scripts en su $HOME/bin/directorio. Agrega $HOME/bin/tu PATH. Para esto agregue estas líneas al final de su$HOME/.bashrc

PATH=$HOME/bin:$PATH
export PATH

Le permitirá ejecutar esos scripts solo con su nombre. Dar permiso a la ejecución de los scripts,

chmod +x $HOME/bin/save_window_conf.sh
chmod +x $HOME/bin/load_window_conf.sh

Para guardar la configuración en su $HOME/.my_windows_config.txt

Después de abrir y ajustar todas las ventanas que se ejecutan en la terminal,

save_window_conf.sh

Para recargar la configuración desde su $HOME/.my_windows_config.txt

load_window_conf.sh

Espero que resuelva tu problema. Aquí hay una captura de pantalla,

ingrese la descripción de la imagen aquí

souravc
fuente
Wow, gracias, esto parece prometedor. Voy a probar los guiones.
artm
@artm He editado un pequeño error y un error tipográfico, ahora parece estar bien. Lo probé en Unity y Gnome-fallback-session, debería funcionar en gnome3. Avísame si tienes algún problema.
souravc
@artm debería ser tu decisión cuando quieras eliminarla .my_windows_config.txt. Si desea cargar la misma configuración de Windows varias veces para las ventanas existentes, puede conservarla. Pero si inicia una sesión completamente nueva, la identificación de Windows será diferente y, en ese caso, es mejor eliminar el archivo de configuración anterior en $HOME/.my_windows_config.txt. Debe eliminar el archivo guardado de configuración manualmente antes de guardar una nueva configuración.
souravc 01 de
En XFCE4 en Ubuntu 18.04 tuve que cambiar la gravedad (primero "0" en el parámetro -e) a 31, de lo contrario, las ventanas se restauraron aproximadamente 31px a la derecha y hacia abajo de donde estaban. Creo que ese puede ser el tamaño del panel XFCE predeterminado. ¡Gracias por el código!
akom
-1

La guía común está aquí: Resolución

Sus soluciones sobre resolución dinámica están cerca de Xorg y XrandR o Xinerama

Tienes:
Cuatro métodos para configurar

  1. Por sesión con .xprofile.

  2. Dinámicamente utilizando la herramienta xrandr

  3. Estáticamente estableciendo en xorg.conf.

  4. Interfaz gráfica de usuario gráfica Xrandr.

Una buena respuesta es que la configuración para varios monitores no se almacena

Para solucionar su Administración de ventanas en sus áreas de trabajo, puede usar el sistema de creación de perfiles proporcionado por Compiz Config Manager

rápido
fuente
2
No tengo ningún problema con las resoluciones o los arreglos de visualización, esos funcionan como se esperaba.
artm
Entonces, CUALQUIER entorno de escritorio es AMABLE para usted. No culpes al público, por favor.
rápido
No culpo a nadie. Solo quiero que las ventanas abiertas permanezcan donde las puse al conectar / desconectar monitores.
artm
Entonces tienes cuatro soluciones con referencia oficial. Mi respuesta cubre adecuadamente tu "locura";)
rápido
2
Oh, simplemente pruébelo usted mismo: abra una ventana en cada espacio de trabajo, luego conecte un monitor que aparece en la parte superior de la pantalla original y vea dónde terminan sus ventanas. Luego dígame cómo xrandr es relevante para evitar que las ventanas salten aleatoriamente cuando se conecta un monitor.
artm