我分叉了 Ambiance 主题来创建我自己的主题并进行维护。我想知道开发 Ubuntu 主题的最佳方法是什么。
我当前的解决方案是:
- 将主题目录放入
~/Documents/foo
- 我对 CSS 文件进行了编辑。
sudo rm -rf /usr/share/themes/foo && cp -r ~/Documents/foo /usr/share/themes/
- 通过 Unity Tweak Tool 选择 Ambiance,然后选择 Foo。
很可能有更好的方法来做到这一点。
推荐的方法是什么?我想知道 Ambiance 开发人员是如何做到的。
答案1
为了自动化这个过程,您可以使用符号链接....删除 foo 目录并创建指向它的符号链接。
ln -s -T /home/youruser/Documents/foo /usr/share/themes/foo
这样,您唯一要做的就是第 4 步,因为您始终在最新版本上工作。这样,权限应该是正确的,您也可以将其推送到您的帐户。如果有什么不清楚的地方,请发表评论,我会进一步解释。我没有官方来源,这就是我的做法……也许这就是您在网上找不到任何相关信息的原因。设置完成后,您可以创建一个监视文件更改的进程,执行第 4 点通知。
编辑工作主题自动重新加载:这将重新加载所有主题设置
首先,你需要一些软件包来检查磁盘变化和 unity-tweak-tool
sudo apt-get install inotify-tools unity-tweak-tool
删除您现有的主题文件夹,记住,在所有测试中,我都采用 WinXP 主题作为测试。
sudo mv /usr/share/themes/WinXP/ /usr/share/themes/WinXP-backup/
链接你的 github 主题文件夹
sudo ln -s -T /home/snapo/Downloads/WinXP/ /usr/share/themes/WinXP/
出于安全原因,创建软件中心的副本
sudo cp -a /usr/share/software-center /usr/share/software-center-backup
在你的主文件夹中创建一个包含此内容的文件,就像我在 /home/snapo/autothemechange.sh 中一样
#! /bin/bash
##############################################################################################
DIRECTORY_TO_OBSERVE="/usr/share/themes/WinXP/" ###### might want to change this #########
MYTHEMENAME="WinXP" ###### your theme directory name #########
LOGFILE="/home/snapo/log-theme-change.log" ###### Logfile to see when change happen #
##############################################################################################
function detect_theme_change {
inotifywait -r \
-e modify,move,create,delete \
$DIRECTORY_TO_OBSERVE
}
while detect_theme_change; do
now="$(date)"
echo "Theme has been changed $now" >> $LOGFILE ;
/usr/bin/gtk-update-icon-cache
/usr/bin/gtk-update-icon-cache-3.0
/usr/bin/xdg-user-dirs-gtk-update
# reset GTK COLOR SCHEME (Unity, GNOME3, Cinnamon, MATE, GNOME2)
gsettings set org.gnome.desktop.interface gtk-color-scheme ""
# mateconftool-2 --type=string --set /desktop/mate/interface/gtk_color_scheme ""
gconftool-2 --type=string --set /desktop/gnome/interface/gtk_color_scheme ""
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval 'Main.loadTheme();' ;
# change gtk theme (Unity, GNOME3, Cinnamon, MATE, GNOME2)
gsettings set org.gnome.desktop.interface gtk-theme "$MYTHEMENAME"
# mateconftool-2 --type=string --set /desktop/mate/interface/gtk_theme "$MYTHEMENAME"
gconftool-2 --type=string --set /desktop/gnome/interface/gtk_theme "$MYTHEMENAME"
# reset / change window theme (Unity, GNOME3, Cinnamon, MATE, GNOME2)
gsettings set org.gnome.desktop.wm.preferences theme "$MYTHEMENAME"
gconftool --type=string --set /desktop/cinnamon/windows/theme "$MYTHEMENAME"
gconftool-2 --type=string --set /apps/metacity/general/theme "$MYTHEMENAME"
# mateconftool-2 --type=string --set /apps/marco/general/theme "$MYTHEMENAME"
# change shell theme
gsettings set org.gnome.shell.extensions.user-theme name "$MYTHEMENAME"
gsettings set org.cinnamon.theme name "$MYTHEMENAME"
done
完成此操作后,将其设置为 chmod 755
chmod 755 /home/snapo/autothemechange.sh
请记住,脚本会出现很多错误,因为我将重新加载大多数主题引擎......这意味着如果您使用 gtk3,其他所有人都会给出错误,如果您使用 unity,其他人也会给出同样的错误...请忽略它们。
第一次运行之前您需要编辑 3 个变量,每个变量的描述位于变量的右侧。
如果您希望脚本在您登录时自动启动(我不建议使用 inotify),那么您可以执行以下操作:
系统>首选项>启动应用程序:
bash /home/snapo/autothemeupdate.sh
我建议在桌面上创建一个链接,这样当您开始开发时,就可以双击该链接。