从模板构建文件并添加调整(将图像转换为简洁的配置)



我找到了非常好的Pinterest图片,我想在桌面上随机显示。我已经有一个脚本可以从目录中随机调用 conky 配置。(然后我手动制作 bash 脚本,一次调用 1 到 3+ conkies(

尝试做一些python脚本,但它没有...我把它复杂化了。以下是 GIT 文件:

我打算展示我的代码,但它太大了,太乱了。

最初,我只是读取所有图像及其宽度,高度,路径和文件名以分隔txt文件。如宽度.txt、路径.txt等。看起来像这些(这些是路径.txt(:

/home/omarali/scripts/conky/conky-sets/images/record.jpg
/home/omarali/scripts/conky/conky-sets/images/subtle.jpg
/home/omarali/scripts/conky/conky-sets/images/trust.jpg

然后我有一个python脚本将数据转换为数组,然后一个接一个地构建文件。不知何故,我遇到了语法错误等。我没有在这里包含代码,因为它太长了,我正在考虑从头开始

本质上,我会制作一个与图像同名的新文件,然后将下面的配置变量(宽度、高度等(替换为图像大小和路径。

模板康基配置:

conky.config = {
--Various settings
double_buffer = true,                       -- eliminates flicker   
--Windows
own_window = true,                          -- create your own window to draw
own_window_argb_visual = true,              -- use ARGB 
own_window_type = 'override',               -- keeps the image in the back 

--Placement
alignment = 'middle_middle',                -- position of the conky
--#########################################################################################
--########################      THE IMPORTANT CHANGABLE STUFF       #######################
--#########################################################################################
minimum_width = WIDTH,                      -- minimum height of window
minimum_height = HEIGHT,                    -- minimum height of window
};
conky.text = [[
${image PATH -s SIZE}
]];
宽度
  • :图像的宽度
  • 高度:图像的高度
  • 路径
  • :图像的路径
  • 尺寸:宽度+"x"+图像高度

这是 conky 配置的最终结果。

conky.config = {
minimum_width = 800,                        -- minimum height of window
minimum_height = 1300,                      -- minimum height of window
};
conky.text = [[
${image /home/omarali/scripts/conky/conky-sets/images/record.jpg -s 800x1300}
]];

所以,只需要一种简单的方法来将图像放入一个conkies中,我以后可以从bash脚本调用它。Python或Bash脚本就可以了。

这是我正在寻找的:

  1. 从目录中的每个映像构建一个 conky 配置。 假设dir_pins
  2. 每个 conky 应与图像具有相同的名称。(这是我的问题(
  3. 可以是 python 或 bash 脚本,对想法持开放态度,但更喜欢这 2 个。

就是这样,如前所述,我已经有一个脚本来自动运行我的配置。非常感谢您的帮助。并对新想法持开放态度。

在Python中,你可以从所有文件中读取数据

all_widths = open('width.txt').read().splitlines()
all_heights = open('width.txt').read().splitlines()
all_pathes = open('path.txt').read().splitlines()

并使用zip()widthpath分组

for width, height, path in zip(all_widths, all_height, all_pathes):
print(width, height, path)
# generate conky text

然后,您可以将文本与所有paragrath一起使用,并将{}放在要放置数据以生成新文本的位置。因为它使用{}来识别值的位置,所以它需要{{}}才能正常{}

template = '''conky.config = {{
minimum_width = {WIDTH},                        -- minimum height of window
minimum_height = {HEIGHT},                      -- minimum height of window
}};
conky.text = [[
${{image {PATH} -s {WIDTH}x{HEIGHT}}}
]];'''
for width, height, path in zip(all_widths, all_height, all_pathes):
new_text = template.format(WIDTH=width, HEIGHT=height, PATH=path)
print(new_text)

现在你必须使用图像文件名为conky文件创建名称(我不知道它使用什么扩展名,所以我使用.txt(

new_name = path.replace('.jpg', '.txt')

或仅路径的最后一部分

new_name = path.split('/')[-1].replace('.jpg', '.txt')

然后你可以保存文本

f = open(new_name, 'w')
f.write(new_text)
f.close()

完整代码,但未测试:

template = '''conky.config = {{
minimum_width = {WIDTH},                        -- minimum height of window
minimum_height = {HEIGHT},                      -- minimum height of window
}};
conky.text = [[
${{image {PATH} -s {WIDTH}x{HEIGHT}}}
]];'''
all_widths = open('width.txt').read().splitlines()
all_heights = open('width.txt').read().splitlines()
all_pathes = open('path.txt').read().splitlines()
for width, height, path in zip(all_widths, all_height, all_pathes):
new_text = template.format(WIDTH=width, HEIGHT=height, PATH=path)
#new_name = path.replace('.jpg', '.txt')
new_name = path.split('/')[-1].replace('.jpg', '.txt')
f = open(new_name, 'w')
f.write(new_text)
f.close()

顺便说一下:您可以使用os.listdir()os.walk()直接从磁盘获取图像的路径。和模块PIL获取图像的大小。

template = '''conky.config = {{
minimum_width = {WIDTH},                        -- minimum height of window
minimum_height = {HEIGHT},                      -- minimum height of window
}};
conky.text = [[
${{image {PATH} -s {WIDTH}x{HEIGHT}}}
]];'''
from PIL import Image
directory = '/home/omarali/scripts/conky/conky-sets/images/'
for filename in os.listdir(directory):
path = os.path.join(directory, filename)
width, height = Image.open(path).size
new_text = template.format(WIDTH=width, HEIGHT=height, PATH=path)
new_name = filename.replace('.jpg', '.txt')
f = open(new_name, 'w')
f.write(new_text)
f.close()

最新更新