用Inkscape制作xfce4窗口管理器xfwm4主题

2023-10-31 05:40

本文主要是介绍用Inkscape制作xfce4窗口管理器xfwm4主题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在阅读本文前,建议先阅读怎样制作xfwm4主题官方教程,了解制作xfwm主题需要哪些文件。
本文简译自此教程,并在其基础上撰写本文,点此下载示例svg源文件

一、用Inkscape 批量制作窗口管理器部件所需图像

1.打开Inkscape建立文件。
点击菜单栏文件>文档属性(或者按快捷键shift+ctrl+D),在页面选项卡>自定义尺寸中设置单位为px(像素),宽高根据需要设定,然后保存为svg格式文件。

2.建立3层图层。
打开图层窗格(按快捷键shift+ctrl+L),
在这里插入图片描述
框架层(frame):在此层制作整个窗口主题需要的各部位图像画出各个部件目标的图形,根据需要定义颜色,大小等;
背景层(background):(可选)一般按等于整个画布大小定义;
命名层(name):(可选)对每个对应部位图像加上名字显示,比如 [left, right, bottom, 1, 2, 3 ,4 5]。

给出的示例中,采用了10像素的窗口边框大小,通过Inkscape的矩形画制。
Bottom Left: [10px * 10px]
Bottom Right: [10px * 10px]
Top Left: [10px * 10px]
Top Right: [10px * 10px]
Bottom: [20px * 10px]
Left: [10px * 20px]
Right: [10px * 20px]
Each [1, 2, 3, 4, 5]: [10px * 10px]
在这里插入图片描述
3.输出图像。
文件>导出png图像(按快捷键shift+ctrl+E),
可以在导出图像窗格看到,我们能选择框架(frame)层中每一个选区单独导出,对每一个选区按对应的命名导出为png图片。
在这里插入图片描述
导出后可以看到生成的文件
在这里插入图片描述

二、完成XFWM4主题制作

除需要png(或xpm)格式图片外(经实践,png会转化为位图显示,如果有圆角的,其边缘细节较差;不支持颜色透明度,但支持颜色为空的纯透明,半透明的会丢失颜色),xfwm主题还需要文本定义文件themerc(此处贴上本人使用的dark主题的themerc文件,示例的配置可以去原文看),

button_offset=3
button_spacing=0
full_width_title=true
title_horizontal_offset=0
title_vertical_offset_active=1
title_vertical_offset_inactive=1
active_text_color=#fffbf9
active_text_shadow_color=#efebe9
inactive_text_color=#b0b0b0
inactive_text_shadow_color=#aaaaaa
shadow_delta_height=2
shadow_delta_width=0
shadow_delta_x=0
shadow_delta_y=-10
shadow_opacity=35
title_shadow_active=false
resize_opacity=100
move_opacity=100
popup_opacity=100
show_frame_shadow=true
show_popup_shadow=true
show_app_icon=true

最后,要应用主题,需要把以上文件复制到文件夹
~/.themes/themename/xfwm4
然后,在窗口管理器样式里选择自己制作的主题样式的名字themename,下图为上面svg定义的窗口实际效果。
在这里插入图片描述
在这里插入图片描述

三、个人补充

根据官网教程,定义xfwm4窗口主题完整的图片需求为60张。本人制作了一个仿OSX窗口按钮的暗色主题(配合使用gtk主题$yay x-arc-darker)
在这里插入图片描述
如上图所示,为方便从制作好的各部位图像批量导出,对每一个制作好部件组合成单一的对象(按快捷键Ctrl+G)后,再打开对象的属性(按快捷键Shift+Ctrl+O),对其ID命名。
然后编写两个文件(批量生成图像的脚本render-assets.sh及需要导出对象的ID列表assets.txt)
render-assets.sh内容如下:

#! /bin/bashINKSCAPE="/usr/bin/inkscape"
OPTIPNG="/usr/bin/optipng"SRC_FILE="Aob-dark-xfwm.svg"
ASSETS_DIR="xfwm4"
INDEX="assets.txt"for i in `cat $INDEX`
do 
if [ -f $ASSETS_DIR/$i.png ]; thenecho $ASSETS_DIR/$i.png exists.
elseechoecho Rendering $ASSETS_DIR/$i.png$INKSCAPE --export-id=$i \--export-id-only \--export-png=$ASSETS_DIR/$i.png $SRC_FILE >/dev/null \&& $OPTIPNG -o7 --quiet $ASSETS_DIR/$i.png 
fi
done
exit 0

assets.txt内容如下:

top-left-active
top-left-inactive
title-1-active
title-1-inactive
title-2-active
title-2-inactive
title-3-active
title-3-inactive
title-4-active
title-4-inactive
title-5-active
title-5-inactive
top-right-active
top-right-inactive
right-active
right-inactive
bottom-right-active
bottom-right-inactive
bottom-active
bottom-inactive
bottom-left-active
bottom-left-inactive
left-active
left-inactive
close-active
close-inactive
close-prelight
close-pressed
maximize-toggled-active
maximize-toggled-inactive
maximize-toggled-prelight
maximize-toggled-pressed
maximize-active
maximize-inactive
maximize-prelight
maximize-pressed
hide-active
hide-inactive
hide-prelight
hide-pressed
stick-toggled-active
stick-toggled-inactive
stick-toggled-prelight
stick-toggled-pressed
stick-active
stick-inactive
stick-prelight
stick-pressed
shade-active
shade-inactive
shade-prelight
shade-pressed
shade-toggled-active
shade-toggled-inactive
shade-toggled-prelight
shade-toggled-pressed
menu-active
menu-inactive
menu-prelight
menu-pressed

将这两个文件与制作好的svg文件放在同一文件夹,并在此建立xfwm4文件夹,打开终端执行脚本render-assets.sh即可在xfwm4文件夹看到批量生成的60张图片,配合上文的themerc文件,即完成xfwm4主题制作。

这篇关于用Inkscape制作xfce4窗口管理器xfwm4主题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/313189

相关文章

Linux之软件包管理器yum详解

《Linux之软件包管理器yum详解》文章介绍了现代类Unix操作系统中软件包管理和包存储库的工作原理,以及如何使用包管理器如yum来安装、更新和卸载软件,文章还介绍了如何配置yum源,更新系统软件包... 目录软件包yumyum语法yum常用命令yum源配置文件介绍更新yum源查看已经安装软件的方法总结软

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密

bat脚本启动git bash窗口,并执行命令方式

《bat脚本启动gitbash窗口,并执行命令方式》本文介绍了如何在Windows服务器上使用cmd启动jar包时出现乱码的问题,并提供了解决方法——使用GitBash窗口启动并设置编码,通过编写s... 目录一、简介二、使用说明2.1 start.BAT脚本2.2 参数说明2.3 效果总结一、简介某些情

基于Redis有序集合实现滑动窗口限流的步骤

《基于Redis有序集合实现滑动窗口限流的步骤》滑动窗口算法是一种基于时间窗口的限流算法,通过动态地滑动窗口,可以动态调整限流的速率,Redis有序集合可以用来实现滑动窗口限流,本文介绍基于Redis... 滑动窗口算法是一种基于时间窗口的限流算法,它将时间划分为若干个固定大小的窗口,每个窗口内记录了该时间

基于Qt实现系统主题感知功能

《基于Qt实现系统主题感知功能》在现代桌面应用程序开发中,系统主题感知是一项重要的功能,它使得应用程序能够根据用户的系统主题设置(如深色模式或浅色模式)自动调整其外观,Qt作为一个跨平台的C++图形用... 目录【正文开始】一、使用效果二、系统主题感知助手类(SystemThemeHelper)三、实现细节

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class Move : MonoBehaviour // 定义一个名为Move的类,继承自MonoBehaviour{private Rigidbo

使用JS/Jquery获得父窗口的几个方法(笔记)

<pre name="code" class="javascript">取父窗口的元素方法:$(selector, window.parent.document);那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document);如题: $(selector, window.top.document);//获得顶级窗口里面的元素 $(

专题二_滑动窗口_算法专题详细总结

目录 滑动窗口,引入: 滑动窗口,本质:就是同向双指针; 1.⻓度最⼩的⼦数组(medium) 1.解析:给我们一个数组nums,要我们找出最小子数组的和==target,首先想到的就是暴力解法 1)暴力: 2)优化,滑动窗口: 1.进窗口 2.出窗口 3.更新值 2.⽆重复字符的最⻓⼦串(medium) 1)仍然是暴力解法: 2)优化: 进窗口:hash[s[rig

【Python知识宝库】上下文管理器与with语句:资源管理的优雅方式

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、什么是上下文管理器?二、上下文管理器的实现三、使用内置上下文管理器四、使用`contextlib`模块五、总结 前言 在Python编程中,资源管理是一个重要的主题,尤其是在处理文件、网络连接和数据库