为 Ubuntu 开发主题的正确方法是什么?

为 Ubuntu 开发主题的正确方法是什么?

我分叉了 Ambiance 主题来创建我自己的主题并进行维护。我想知道开发 Ubuntu 主题的最佳方法是什么。

我当前的解决方案是:

  1. 将主题目录放入~/Documents/foo
  2. 我对 CSS 文件进行了编辑。
  3. sudo rm -rf /usr/share/themes/foo && cp -r ~/Documents/foo /usr/share/themes/
  4. 通过 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

我建议在桌面上创建一个链接,这样当您开始开发时,就可以双击该链接。

相关内容