
Я использую следующие настройки для .conkyrc
отображения верхней панели на экране моего ноутбука (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
В верхней части экрана он отображается следующим образом:
Теперь при подключении внешнего монитора я хочу ограничить панель Conky только моим внутренним экраном LVDS, а не отображать ее на обоих экранах.
- Вывод xrandrбез подключенного внешнего монитора
- Вывод xrandrс внешним подключением и LVDS справа
- Вывод xrandrс внешним подключением и LVDS слева
Можно ли заставить conky всегда оставаться на LVDS?
решение1
Да. Вам нужно настроить conky
отображение в крайнем левом/правом положении. Подробности будут зависеть от того, находится ли экран ноутбука справа или слева. Например, в моей настройке ноутбук находится слева, а экран VGA справа (обратите внимание на +1600
в записи 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
Я хочу, conky
чтобы мой всегда отображался на правом краю экрана моего ноутбука. Поэтому я настроил его .conkyrc
так:
gap_x 1365
gap_y 40
Параметр gap_x
— это количество пикселей от самого левого края вашего экрана(ов). Поэтому мой conky
всегда появляется в одном и том же месте, независимо от того, сколько экранов я подключил.
Если ноутбук может менять положение, вам понадобится что-то более сложное. Например, вы можете проверить, есть ли два экрана, а затем проверить, находится ли ноутбук слева или справа, и отредактировать его .conkyrc
соответствующим образом, а затем запустить .conky
. Что-то вроде:
#!/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 &
Если вы начнете conky
использовать этот скрипт, он должен правильно его позиционировать в зависимости от вашей текущей настройки. Возможно, потребуется некоторая настройка, чтобы соответствовать вашему конкретному случаю, дайте мне знать, если вам нужна помощь с этим.
решение2
Начиная с версии 1.10 вы можете использовать «xinerama_head = <nr>» в conky.config для указания конкретного вывода.
Мне пришлось использовать это, чтобы принудительно вывести conky на панель моего ноутбука, когда подключен внешний монитор, так как я делаю его своим основным монитором, а ноутбук — слева. Поэтому, хотя у монитора позиция x +1920, conky отображается на нем без опции xinerama_head.