我使用以下设置在.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 bar 始终限制在我的内部 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 开始,您可以在 conky.config 中使用“xinerama_head = <nr>”来指定特定输出。
当连接外部显示器时,我必须使用它来强制 conky 到我的笔记本电脑面板上,因为我将其作为我的主显示器,笔记本电脑位于左侧。因此,尽管显示器的 x 位置为 +1920,但 conky 在没有 xinerama_head 选项的情况下显示在显示器上。