从模板构建文件并添加调整(将图像变成 conky 配置)
Build files from template and add tweaks (turn images into conky configs)
我发现了非常好的 Pinterest 图片,我想将它们随机显示在我的桌面上。我已经有一个脚本可以从目录中随机调用 conky 配置。 (然后我手动制作 bash 一次调用 1 到 3+ 个 conkies 的脚本)
尝试编写一些 python 脚本,但没有...我把它复杂化了。这是 GIT FILES:
我本来打算展示我的代码,但它太大太乱了。
本来我只是把所有的图片和它们的宽度、高度、路径和文件名都读出来分开的txt文件。像 width.txt、path.txt 等。看起来像这些(这些是 Path.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 脚本将数据转换为数组,然后一个一个地构建文件。不知怎么的,我遇到了语法错误等等。我没有在这里包含代码,因为它太长了,我正在考虑从 scratch 开始。
基本上我会创建一个与图像同名的新文件,然后用图像大小和路径替换下面的配置变量(WIDTH、HEIGHT 等)。
模板Conky配置:
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}
]];
- WIDTH:图像的宽度
- HEIGHT: 图片的高度
- PATH:图片路径
- 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 脚本即可。
这是我要查找的内容:
- 从目录中的每个图像构建一个 conky 配置。假设 dir_pins
- 每个 conky 都应该与图像同名。 (这是我的问题)
- 可以是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()
将 width
与 path
分组
for width, height, path in zip(all_widths, all_height, all_pathes):
print(width, height, path)
# generate conky text
然后你可以使用带有所有段落的文本,并将 {}
放在你想要放置数据的地方以生成新文本。因为它使用 {}
来识别值的位置,所以它需要 {{
和 }}
来表示正常的 {
、}
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()
我发现了非常好的 Pinterest 图片,我想将它们随机显示在我的桌面上。我已经有一个脚本可以从目录中随机调用 conky 配置。 (然后我手动制作 bash 一次调用 1 到 3+ 个 conkies 的脚本)
尝试编写一些 python 脚本,但没有...我把它复杂化了。这是 GIT FILES:
我本来打算展示我的代码,但它太大太乱了。
本来我只是把所有的图片和它们的宽度、高度、路径和文件名都读出来分开的txt文件。像 width.txt、path.txt 等。看起来像这些(这些是 Path.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 脚本将数据转换为数组,然后一个一个地构建文件。不知怎么的,我遇到了语法错误等等。我没有在这里包含代码,因为它太长了,我正在考虑从 scratch 开始。
基本上我会创建一个与图像同名的新文件,然后用图像大小和路径替换下面的配置变量(WIDTH、HEIGHT 等)。
模板Conky配置:
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}
]];
- WIDTH:图像的宽度
- HEIGHT: 图片的高度
- PATH:图片路径
- 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 脚本即可。
这是我要查找的内容:
- 从目录中的每个图像构建一个 conky 配置。假设 dir_pins
- 每个 conky 都应该与图像同名。 (这是我的问题)
- 可以是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()
将 width
与 path
for width, height, path in zip(all_widths, all_height, all_pathes):
print(width, height, path)
# generate conky text
然后你可以使用带有所有段落的文本,并将 {}
放在你想要放置数据的地方以生成新文本。因为它使用 {}
来识别值的位置,所以它需要 {{
和 }}
来表示正常的 {
、}
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()