快捷键更换背景颜色
无意间看了hhh333的一个切换主题的脚本,依葫芦画瓢,想写一个更换背景颜色的脚本如下:#定义现有背景颜色
set t1="#003345" #天蓝色
set t2="#3F6B6B" #浅蓝色
set t3="#365E27" #绿色
set t4="#806C00" #暗黄色
set t5="#810505" #红色
#设置背景颜色
background_color $t1
hiddenentry "Switch background_color" --hotkey f5 {
if [ "$background_color" == "$t1" ]; then
set background_color=$t2
elif [ "$background_color" == "$t2" ]; then
set background_color=$t3
elif [ "$background_color" == "$t3" ]; then
set background_color=$t4
elif [ "$background_color" == "$t4" ]; then
set background_color=$t5
else
set background_color=$t1
fi
}
但是没有作用是怎么回事呢
沙发 全部 用命令
background_color $t2 谢谢分享。 感谢分享。 支持研究开发{:1_186:} 谢谢分享 2011whp 发表于 2023-9-17 21:06
全部 用命令
background_color $t2
我改成这样有效果,但是只能按一次就失效了
hiddenentry "Switch background_color" --hotkey f5 {
if [ "$background_color $t1" ]; then
background_color $t2
elif [ "$background_color $t2" ]; then
background_color $t3
elif [ "$background_color $t3" ]; then
background_color $t4
elif [ "$background_color $t4" ]; then
background_color $t5
elif [ "$background_color $t2" ]; then
background_color $t6
elif [ "$background_color $t3" ]; then
background_color $t7
elif [ "$background_color $t4" ]; then
background_color $t8
else
background_color $t1
fi
}
只能切换一次,我想按一次f5就切换一次,按一次就切换一次。
于是我想到了bush脚本中的for循环,但是一窍不通,不会。哎
gues1688 发表于 2023-9-21 12:25
参考如下,用了正常菜单,没用隐藏菜单,原理一样,错误原因是,执行background_color "$t1"命令,并不会 ...
大佬牛逼,没有想到环境变量这点,所以判断也失去了意义!其实我还想利用bash脚本的for循环来写更简洁,但是奈何小白一个,不会。。。比如
for num in {1..10}
do
background_color $tnum
done
我想参照这个最终的更换主题脚本(来自hhh333)
#主题切换-F5切换-F6清除
#主题计数
export theme_count=0
for item in $prefix/themes/*/theme.txt; do
expr --set=theme_count $theme_count+1
done
if [ $theme_count -gt 0 ]; then
set theme_index=1
#换主题
hiddenentry "Switch Themes" --hotkey f5 {
set i=0
expr --set=theme_index $theme_index+1
if [ $theme_index -gt $theme_count ]; then
set theme_index=1
fi
for item in $prefix/themes/*/theme.txt; do
expr --set=i $i+1
if [ $i -eq $theme_index ]; then
set theme=$item
break
fi
done
}
#无主题
hiddenentry "Clear Themes" --hotkey f6 {
if [ "$theme" != "" ]; then
unset theme
fi
}
fi
思路有,但是一点也不会{:1_189:}
谢谢分享 目前还是chromium这类 gues1688 发表于 2023-9-23 15:38
用循环的代码可读性稍差,给你两段代码参考:
谢谢大佬,请收下我的膝盖。代码确实看的云里雾里,第一段代码$i1,$i2,$item绕来绕去看不懂。还有unset是清除变量吗,为什么要清除这两个变量呢?break是终止循环吗,是什么情况下终止循环?第二段那就更是看天书了{:1_189:} 本帖最后由 游鱼摆尾 于 2023-9-27 16:03 编辑
gues1688 发表于 2023-9-23 15:38
用循环的代码可读性稍差,给你两段代码参考:
还有我找葫芦画瓢弄了一个循环切换背景图片的代码,可行,但好像会切换为纯黑背景,有的图片还会连续重复切换一次,不知道哪里有问题。大佬帮忙看看:
background_image /EFI/grub2/backgrounds/bg.jpg
#背景图片计数
export bg_count=0
for item in $prefix/backgrounds/*.*; do
expr --set=bg_count $bg_count+1
done
if [ $bg_count -gt 0 ]; then
set bg_index=1
#换背景
hiddenentry "【按 f5 键,切换背景图片】" --hotkey f5 {
set i=0
expr --set=bg_index $bg_index+1
if [ $bg_index -gt $bg_count ]; then
set bg_index=1
fi
for item in $prefix/backgrounds/*.*; do
expr --set=i $i+1
if [ $i -eq $bg_index ]; then
background_image $item
set bg=$item
break
fi
done
}
fi 游鱼摆尾 发表于 2023-9-27 15:50
还有我找葫芦画瓢弄了一个循环切换背景图片的代码,可行,但好像会切换为纯黑背景,有的图片还会连续重复 ...
哈哈,我找到原因了,有重复的图片和不支持的图片所导致的结果{:1_201:} gues1688 发表于 2023-9-23 15:38
用循环的代码可读性稍差,给你两段代码参考:
哈哈,我找到原因了,有重复的图片和不支持的图片所导致的结果{:1_201:} gues1688 发表于 2023-9-23 15:38
用循环的代码可读性稍差,给你两段代码参考:
当文件不支持时,就会显示为纯黑背景。但是很奇怪同样是jpg文件,并且分辨率也一样是1024*768,另外一张支持,而有一张却不支持。{:1_187:} 本帖最后由 游鱼摆尾 于 2023-9-27 17:00 编辑
gues1688 发表于 2023-9-23 15:38
用循环的代码可读性稍差,给你两段代码参考:
烦死了删除重复图片,还是有一张连续重复1次,看来是代码的问题
另外,我想加上无背景的代码,但是没用
#无背景
hiddenentry "【按 f6 键,切换背景图片】" --hotkey f6 {
if [ "$theme" != "" ]; then
unset background_image或unset bg都没用
fi
}
fi gues1688 发表于 2023-9-28 21:01
background_image是命令,又不是环境变量,怎么可以 unset background_image ?
想清除背景图,只能找一 ...
嗯嗯,谢谢啦,您的代码可以,我清除图片直接用的代码background_color="#000000",反正清除图片的本质就是会变为默认纯黑背景。另外如果backgrounds文件夹里有其它文件,比如bat文件,txt文件。有什么办法排除吗,否则切换时遇到不支持的文件会变为纯黑背景。 不错谢谢分享 gues1688 发表于 2023-9-29 21:00
嗯,清除背景,用黑色或其它纯色背景都可以。
假设,图片的扩展名是.png,代码参考如下:
注意,第5、6 ...
哈哈,我的意思是图片有多种格式,只想排除bat或者txt后缀的文件 gues1688 发表于 2023-9-29 21:00
嗯,清除背景,用黑色或其它纯色背景都可以。
假设,图片的扩展名是.png,代码参考如下:
注意,第5、6 ...
并不是用指定格式图片文件,代码的话在grub2里能做到吗{:1_201:} 谢谢分享 gues1688 发表于 2023-9-30 20:00
可以,用正则表达式,提取、筛选扩展名
20楼是一个应用实例
更多的可以百度,或者参考此贴:
纯小白不会,只会挑现成的依葫芦画瓢{:1_189:} gues1688 发表于 2023-10-2 11:29
参考如下:
论坛有问题!贴出的代码会被吃掉!再贴一次试试:
如果是多种格式可以这样写吗
if regexp '^(jpg)|(png)|(bmp)$' "$name_ext"; then 配置要求很严格,错一个符号都不行!!有时还要区分大小写 gues1688 发表于 2023-10-3 21:15
嗯,可以。 代码中,| 表示 “或”的意思
其实不用正则表达式也可以。
23楼 http://bbs.wuyou.net/foru ...
谢谢大佬,我看了一下您之前分享给我的链接里面的正则表达式用法,如果要区分大小写还可以这样写吗,也就是说不用将拓展名转换成大写或者小写,直接写成这样:
if regexp '^||$' "$name_ext"; then 多学多练,不断进步,方能立于不败之地 谢谢分享
页:
[1]