Exibir conky sempre apenas na tela LVDS

Exibir conky sempre apenas na tela LVDS

Eu uso as seguintes configurações para .conkyrcexibir uma barra superior na tela do meu laptop (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

Ele é exibido da seguinte forma na parte superior da minha tela:

insira a descrição da imagem aqui

Agora, ao conectar um monitor externo, quero restringir a barra conky sempre apenas à minha tela LVDS interna, em vez de exibi-la nas duas telas.

É possível dizer ao Conky para permanecer sempre no LVDS?

Responder1

Sim. Você precisa definir conkya exibição na extrema esquerda/direita. Os detalhes dependerão se a tela do laptop está à direita ou à esquerda. Por exemplo, na minha configuração, tenho meu laptop à esquerda e uma tela VGA à direita (observe +1600na 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

Quero conkyque sempre apareça na borda direita da tela do meu laptop. Portanto, configurei meu .conkyrcassim:

gap_x 1365
gap_y 40

O gap_xparâmetro é o número de pixels da borda esquerda da(s) tela(s). Portanto, meu conkysempre aparece no mesmo lugar, independentemente de quantas telas eu anexei.


Se o laptop puder mudar de posição, você precisará de algo mais sofisticado. Por exemplo, você pode verificar se há duas telas e, em seguida, verificar se o laptop está à esquerda ou à direita e editar .conkyrcde acordo e, em seguida, iniciar o .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 &

Se você começar conkya usar esse script, ele deverá posicioná-lo corretamente dependendo da sua configuração atual. Isso pode precisar de alguns ajustes para se adequar ao seu caso específico. Avise-me se precisar de ajuda.

Responder2

Desde a versão 1.10 você pode usar "xinerama_head = <nr>" em seu conky.config para especificar uma saída específica.

Tive que usar isso para forçar o conky no painel do meu laptop quando um monitor externo está conectado, já que o torno meu monitor principal com meu laptop à esquerda. Portanto, embora o monitor tenha uma posição x de +1920, conky aparece nele sem a opção xinerama_head.

informação relacionada