我试图编写一个可以改变所有正在运行的终端的颜色方案的脚本(即时通讯使用urxvt)。我们的想法是拥有一个键盘快捷键,可在浅色和深色曝光主题之间切换。 到目前为止,我尝试了动态颜色脚本https://github.com/sos4nt/dynamic-colors,它按预期工作,我可以在运行终端的明暗颜色之间进行切换。 我想也许我可以在urxvt的每个运行实例中执行此命令,但不知道如何完成它。 还请分享我如何解决我的主要问题的任何建议(创建一个可以改变所有正在运行的终端的colorscheme的脚本)。
答案 0 :(得分:2)
目前我正在使用动态颜色脚本https://github.com/sos4nt/dynamic-colors 这个python代码将所有终端改为亮或暗(版本)
pts = os.listdir('/dev/pts/')
for each_pts in pts:
if is_number(each_pts):
subprocess.call('echo "`.dynamic-colors/bin/dynamic-colors switch solarized-{0}`" > /dev/pts/{1}'.format(version,each_pts), shell=True)
答案 1 :(得分:0)
要更改所有打开的终端的颜色,请将此脚本放在您喜欢的目录中:
#!/bin/bash
DIR=$(dirname $0)
# get terminals opened by user
TERMINALS=($(ls -l /dev/pts/* | grep $USER | awk '{print $10}'))
if [[ -e "$DIR"/themes/"$1".sh ]]; then
source "$DIR"/themes/"$1".sh
MAX=`echo ${#TERMINALS[@]} - 1 | bc`
for i in $(seq 0 $MAX); do
printf "\033]10;$foreground\007" > ${TERMINALS[$i]}
printf "\033]11;[$opacity]$background\007" > ${TERMINALS[$i]}
printf "\033]12;$cursor\007" > ${TERMINALS[$i]}
printf "\033]17;$highlight_bg\007" > ${TERMINALS[$i]}
printf "\033]19;$highlight_fg\007" > ${TERMINALS[$i]}
printf "\033]708;$border\007" > ${TERMINALS[$i]}
for j in $(seq 0 15); do
printf "\033]4;$j;${colors[j]}\007" > ${TERMINALS[$i]}
done
done
else
echo "No theme named "$1" available!"
fi
创建一个名为»themes«的子目录,e。 G。 / path / to / colorScript / themes,并通过将以下模板调整为您喜欢的颜色来创建颜色主题:
opacity=100
foreground="#272727"
background="#F0DCC9"
cursor="#2B2B2B"
mouse_foreground=""
highlight_bg=""
highlight_fg="" # works only if highlight_bg is set
border=""
# defining color0, …, color15
colors=(
"#000000"
"#CC2929"
"#29CC29"
"#A64934"
"#2929CC"
"#0D5F2B"
"#566F28"
"#ffffff"
"#ffff00"
"#C12D38"
"#7F2E2E"
"#ED0C11"
"#C0471B"
"#990000"
"#778087"
"#ffffff"
)
将这些模板保存为shell脚本(* .sh)。这条线
source "$DIR"/themes/"$1".sh
在我的帖子的第一个代码框中将导入颜色脚本中定义的所有变量并在之后使用它们。
通过键入
执行更改终端颜色的脚本bash /path/to/colorScript/scriptName.sh "Name of your theme"
其中“您的主题名称”是./themes子目录中颜色主题的确切名称(不带* .sh扩展名)。
如果要调用带有一个颜色主题的终端而不是〜/ .Xresources或〜/ .Xdefaults中定义的默认值,只需输入:
urxvt -e bash -c 'bash /path/to/colorScript/change.sh "Name of your theme" && bash'
上面的这一行当然也可以用于发射器。把»&& bash«在此行的末尾阻止新终端窗口立即关闭,并使其响应您的输入。