Mostrar conky siempre solo en la pantalla LVDS

Mostrar conky siempre solo en la pantalla LVDS

Utilizo la siguiente configuración para .conkyrcmostrar una barra superior en la pantalla de mi computadora portátil (LVDS).

background yes
update_interval 60
total_run_times 0
# Show umlauts
override_utf8_locale yes

# Font settings
use_xft yes
xftfont Noto Sans:style=normal:size=10
xftalpha 1

# Run in own window
own_window yes
own_window_class conky
own_window_type desktop

# Semi-transparent background
# http://th0th.me/log/conky-and-semi-transparency/
own_window_transparent no
own_window_argb_visual yes
own_window_argb_value 140

# Don't show in window lists and on all desktops
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
own_window_colour bcbcbc
double_buffer yes
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders no
default_color 000000
alignment tl
maximum_width 1265
minimum_size 1265
#gap_x 10
gap_y 3
no_buffers yes
uppercase no
cpu_avg_samples 2

Se muestra de la siguiente manera en la parte superior de mi pantalla:

ingrese la descripción de la imagen aquí

Ahora, cuando conecto un monitor externo, quiero restringir la barra conky siempre solo a mi pantalla LVDS interna en lugar de mostrarla en ambas pantallas.

¿Es posible decirle a conky que permanezca siempre en LVDS?

Respuesta1

Sí. Debe configurarlo conkypara que se muestre en el extremo izquierdo/derecho. Los detalles dependerán de si la pantalla del portátil está en el lado derecho o izquierdo. Por ejemplo, en mi configuración, tengo mi computadora portátil a la izquierda y una pantalla VGA a la derecha (tenga en cuenta +1600en la entrada VGA):

$ xrandr | grep -w connected
VGA-0 connected primary 1440x900+1600+0 (normal left inverted right x axis y axis) 408mm x 255mm
DP-3 connected 1600x900+0+0 (normal left inverted right x axis y axis) 344mm x 194mm

Quiero conkyque aparezca siempre en el borde derecho de la pantalla de mi computadora portátil. Por lo tanto, he configurado mi .conkyrcestilo así:

gap_x 1365
gap_y 40

El gap_xparámetro es el número de píxeles desde el borde más izquierdo de su(s) pantalla(s). Por lo tanto, mi conkysiempre aparece en el mismo lugar, independientemente de cuántas pantallas tenga conectadas.


Si la computadora portátil puede cambiar de posición, necesitarás algo más sofisticado. Por ejemplo, puede verificar si hay dos pantallas y luego verificar si la computadora portátil está a la izquierda o a la derecha y editarla .conkyrcen consecuencia, luego iniciar .conky. Algo como:

#!/usr/bin/env bash

## Get the number of screens
screens=$(xrandr | grep -cw connected);

## If there's only one screen
if [ "$screens" -eq 1 ]
then
    ## Set the gap_x to ten pixels from the left.
    sed -i.bak 's/gap_x .*/gap_x 110/' ~/.conkyrc

## If there are more than one screens
else
    ## Get the offset of the laptop's screen
    pos=$(xrandr | grep LVDS1 | cut -d ' ' -f 4 | cut -d+ -f 2)
    ## Is the laptop on the left?
    if [ "$pos" -eq 0 ]
    then
        ## Set the gap_x to ten pixels from the left.
        sed -i.bak 's/gap_x .*/gap_x 10/' ~/.conkyrc
    else
        ## Use the offset to set conky's position accordingly.
        offset=$((pos+10));
        sed -i.bak "s/gap_x .*/gap_x $offset/" ~/.conkyrc

    fi
fi

killall -9 conky
conky &

Si comienza conkya usar ese script, debería colocarlo correctamente dependiendo de su configuración actual. Es posible que esto necesite algunos ajustes para adaptarse a su caso específico; avíseme si necesita ayuda.

Respuesta2

Desde la versión 1.10 puedes usar "xinerama_head = <nr>" en tu conky.config para especificar una salida específica.

Tuve que usar esto para forzar a Conky a entrar en el panel de mi computadora portátil cuando hay un monitor externo conectado, ya que lo convierto en mi monitor principal con mi computadora portátil a la izquierda. Entonces, aunque el monitor tiene una posición x de +1920, conky aparece sin la opción xinerama_head.

información relacionada