无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 4953|回复: 27
打印 上一主题 下一主题

[求助] 快捷键更换背景颜色

[复制链接]
跳转到指定楼层
#
发表于 2023-9-17 17:47:14 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
无意间看了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
            }


但是没有作用是怎么回事呢
27#
发表于 2023-10-27 16:28:02 | 只看该作者
谢谢分享
回复

使用道具 举报

26#
发表于 2023-10-17 15:46:09 | 只看该作者
多学多练,不断进步,方能立于不败之地
回复

使用道具 举报

25#
 楼主| 发表于 2023-10-6 17:34:03 | 只看该作者
gues1688 发表于 2023-10-3 21:15
嗯,可以。 代码中,| 表示 “或”的意思
其实不用正则表达式也可以。
23楼 http://bbs.wuyou.net/foru ...

谢谢大佬,我看了一下您之前分享给我的链接里面的正则表达式用法,如果要区分大小写还可以这样写吗,也就是说不用将拓展名转换成大写或者小写,直接写成这样:
if regexp '^[jJ][pP][gG]|[pP][nN][gG]|[bB][mM][pP]$' "$name_ext"; then
回复

使用道具 举报

24#
发表于 2023-10-6 17:28:36 | 只看该作者
配置要求很严格,错一个符号都不行!!有时还要区分大小写
回复

使用道具 举报

23#
 楼主| 发表于 2023-10-3 12:02:56 | 只看该作者
gues1688 发表于 2023-10-2 11:29
参考如下:

论坛有问题!贴出的代码会被吃掉!再贴一次试试:

如果是多种格式可以这样写吗
if regexp '^(jpg)|(png)|(bmp)$' "$name_ext"; then
回复

使用道具 举报

22#
 楼主| 发表于 2023-10-1 16:28:26 | 只看该作者
gues1688 发表于 2023-9-30 20:00
可以,用正则表达式,提取、筛选扩展名
20楼是一个应用实例
更多的可以百度,或者参考此贴:

纯小白不会,只会挑现成的依葫芦画瓢
回复

使用道具 举报

21#
发表于 2023-9-30 20:51:28 | 只看该作者
谢谢分享
回复

使用道具 举报

20#
 楼主| 发表于 2023-9-30 16:33:37 | 只看该作者
gues1688 发表于 2023-9-29 21:00
嗯,清除背景,用黑色或其它纯色背景都可以。
假设,图片的扩展名是.png,代码参考如下:
注意,第5、6 ...

并不是用指定格式图片文件,代码的话在grub2里能做到吗
回复

使用道具 举报

19#
 楼主| 发表于 2023-9-30 16:31:31 | 只看该作者
gues1688 发表于 2023-9-29 21:00
嗯,清除背景,用黑色或其它纯色背景都可以。
假设,图片的扩展名是.png,代码参考如下:
注意,第5、6 ...

哈哈,我的意思是图片有多种格式,只想排除bat或者txt后缀的文件
回复

使用道具 举报

18#
发表于 2023-9-29 21:04:49 | 只看该作者
不错谢谢分享
回复

使用道具 举报

17#
 楼主| 发表于 2023-9-29 15:36:13 | 只看该作者
gues1688 发表于 2023-9-28 21:01
background_image是命令,又不是环境变量,怎么可以 unset background_image ?
想清除背景图,只能找一 ...

嗯嗯,谢谢啦,您的代码可以,我清除图片直接用的代码background_color="#000000",反正清除图片的本质就是会变为默认纯黑背景。另外如果backgrounds文件夹里有其它文件,比如bat文件,txt文件。有什么办法排除吗,否则切换时遇到不支持的文件会变为纯黑背景。
回复

使用道具 举报

16#
 楼主| 发表于 2023-9-27 16:58:05 | 只看该作者
本帖最后由 游鱼摆尾 于 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
回复

使用道具 举报

15#
 楼主| 发表于 2023-9-27 16:12:20 | 只看该作者
gues1688 发表于 2023-9-23 15:38
用循环的代码可读性稍差,给你两段代码参考:

当文件不支持时,就会显示为纯黑背景。但是很奇怪同样是jpg文件,并且分辨率也一样是1024*768,另外一张支持,而有一张却不支持。
回复

使用道具 举报

14#
 楼主| 发表于 2023-9-27 16:05:21 | 只看该作者
gues1688 发表于 2023-9-23 15:38
用循环的代码可读性稍差,给你两段代码参考:

哈哈,我找到原因了,有重复的图片和不支持的图片所导致的结果
回复

使用道具 举报

13#
 楼主| 发表于 2023-9-27 16:04:29 | 只看该作者
游鱼摆尾 发表于 2023-9-27 15:50
还有我找葫芦画瓢弄了一个循环切换背景图片的代码,可行,但好像会切换为纯黑背景,有的图片还会连续重复 ...

哈哈,我找到原因了,有重复的图片和不支持的图片所导致的结果
回复

使用道具 举报

12#
 楼主| 发表于 2023-9-27 15:50:25 | 只看该作者
本帖最后由 游鱼摆尾 于 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
回复

使用道具 举报

11#
 楼主| 发表于 2023-9-27 15:44:35 | 只看该作者
gues1688 发表于 2023-9-23 15:38
用循环的代码可读性稍差,给你两段代码参考:

谢谢大佬,请收下我的膝盖。代码确实看的云里雾里,第一段代码$i1,$i2,$item绕来绕去看不懂。还有unset是清除变量吗,为什么要清除这两个变量呢?break是终止循环吗,是什么情况下终止循环?第二段那就更是看天书了
回复

使用道具 举报

10#
发表于 2023-9-24 10:00:57 | 只看该作者
目前还是chromium这类
回复

使用道具 举报

9#
发表于 2023-9-23 15:49:39 | 只看该作者
谢谢分享
回复

使用道具 举报

8#
 楼主| 发表于 2023-9-21 14:17:50 | 只看该作者
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
思路有,但是一点也不会

回复

使用道具 举报

7#
 楼主| 发表于 2023-9-18 17:23:46 | 只看该作者
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循环,但是一窍不通,不会。哎
回复

使用道具 举报

6#
发表于 2023-9-18 15:48:13 | 只看该作者
谢谢分享
回复

使用道具 举报

5#
发表于 2023-9-18 14:28:31 | 只看该作者
支持研究开发
回复

使用道具 举报

4#
发表于 2023-9-18 10:52:50 | 只看该作者
感谢分享。
回复

使用道具 举报

3#
发表于 2023-9-17 23:10:07 | 只看该作者
谢谢分享。
回复

使用道具 举报

2#
发表于 2023-9-17 21:06:57 | 只看该作者
全部 用命令
background_color $t2
回复

使用道具 举报

1#
发表于 2023-9-17 18:33:12 | 只看该作者
沙发
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-29 13:42

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表