deepin-terminal改造之路
1. 背景介绍
deepin-terminal是我在使用deepin操作系统的时候主要的生产力工具。随着新版本系统的不断优化迭代,deepin-terminal从一开始的gtk设计变成了ddk设计,使得应用与操作系统的风格更加统一。
当然我是比较关注deepin-terminal的功能的,简单实用即可。以前经常使用xshell,对于xshell这个重量级的工具来说,deepin-terminal的功能相对单一,但是很多xshell的功能,又想在deepin-terminal上用到,该怎么办?
呼吁官方多次,但是版本的发布,功能的增加都需要很长的周期,没有办法,自己下载源码摸索一下,看看能否自己实现自己的需求了。
ddk的编程,需要有C++,Qt等基础知识,同时可能还需要关注一下官方dtk的接口。对于C++和Qt,我只了解一点点,硬着头皮上了。万事开头难,前后坚持了大概1个多月吧,颇有成效。下面就分享一下我的deepin-terminal学习和改造之路。
声明:本篇博客内容仅限于个人学习和应用,切勿商用,违规自究!如有侵权,请联系我删除!转载请注明出处!
2. 下载源码
本篇源码下载地址:https://github.com/linuxdeepin/deepin-terminal/tree/5.4.0.13
下载zip文件后,解压到指定目录
本人解压到:/home/liwl/,解压后可以看到目录/home/liwl/deepin-terminal-5.4.0.13
3. 依赖检查及安装
cd  /home/liwl/deepin-terminal-5.4.0.13,
可以先阅读该目录下的README.md内容,便于了解整个过程
首先是检查依赖
在该目录下执行sudo apt build-dep .,即可检查和安装依赖关系
编译和安装
在该目录下执行mkdir build; cd build; cmake ..; make; sudo install make
就是整个编译和安装的过程了,简单明了
特别注意:为了能够很好的展示效果,建议先卸载deepin-terminal,因为系统自带的deepin-terminal执行路径是:/usr/bin/deepin-terminal,而手动编译的deepin-terminal安装路径在/usr/local/bin/deepin-terminal,自带的deepin-terminal可能会影响手动编译的。另外,编译安装结束后,建议通过启动器上面的终端图标启动,避免使用快捷键启动。也可以尝试修改CMakeFile.txt,把手动编译的deepin-terminal安装到/usr/bin/目录下,覆盖系统自带deepin-terminal
4. 改造之路
本人基本完成了以下功能特性:
- 添加了“终端透明度”的快捷键设置选项
- 添加了“双击可选中的特殊符号”的设置选项
- 添加了“启动初始目录”的设置选项
- 添加了“显示设置界面”的快捷键设置选项
- 右键添加了“翻译”的选项
- 右键添加了“使用文本编辑器打开”的选项
- 加粗了光标下划线
- 修改了默认Dark主题配色
- 替换了一个内置主题
未完成的需求:
- 快捷键切换主题
- 突出显示敏感内容
- 弹窗或者侧边栏显示翻译内容
- 双击选中中文句子
4.1 终端透明度快捷键
4.1.1 设置面板增加选项内容
在“设置“面板里面添加选项,需要通过一个json文件配置,源码在编译过程中会自动解析该json文件,生成界面组件
该json就是:/home/liwl/deepin-terminal-5.4.0.13/src/assets/other/default-config.json
本人欲把”终端透明度“快捷键设置在”复制“前面,所以保持json里面的内容也在其前面。
在default-config.json文件中找到以下内容:
{
    "key": "copy",
    "name":	"Copy",
    "type":	"shortcut",
    "default":	"Ctrl+Shift+C"
},
修改为:
{
    "key":	"opacity",
    "name":	"Opacity",
    "type":	"shortcut",
	"default":	"Alt+r"
},
{
    "key": "copy",
    "name":	"Copy",
    "type":	"shortcut",
    "default":	"Ctrl+Shift+C"
},
保存并退出
4.1.2 添加配置解析内容
vim 打开文件:/home/liwl/deepin-terminal-5.4.0.13/src/settings/settings_translation.cpp,在最后一行大括号上面,添加内容:
auto shortcuts_terminal_opacityName = QObject::tr("Opacity");
Q_UNUSED(shortcuts_terminal_opacityName);
注意参照该文件的其他部分内容修改,即注意shortcuts_terminal_opacityName为何如何书写
保存并退出
4.1.3 功能实现
这部分主要是三个步骤:
其一,在void MainWindow:initShortcuts()方法的内部,添加以下内容:
connect(createNewShotcut("shortcuts.terminal.opacity"),&QShortcut::activated,this,&MainWindow::slotShortcutOpacity); //这是增加的部分,注意分号不要丢了
//copy
connect(createNewShotcut("shortcuts.terminal.copy"), &QShortcut::activated, this, &MainWindow::slotShortcutCopy);
其二,在void MainWindow::slotShortcutCopy()方法的上面,实现slotShortcutOpacity()
void MainWindow::slotShortcutOpacity(){
        TermWidgetPage *page = currentPage();
        if (page){
                if (Settings::instance()->settings->option("basic.interface.opacity")->value().toInt() == 100) {
                        page->setTerminalOpacity(0.85);
                        Settings::instance()->settings->option("basic.interface.opacity")->setValue(85);
                }else{
                        page->setTerminalOpacity(1.0);
                        Settings::instance()->settings->option("basic.interface.opacity")->setValue(100);
                }
                page->focusCurrentTerm();//这个必须有,否则无法聚焦
        }
}//这个方法是添加的内容
void MainWindow::slotShortcutCopy()
{
    TermWidgetPage *page = currentPage();
    if (page) {
        page->copyClipboard();
    }
}
其三,在mainwindow.h添加方法的声明
void slotShortcutOpacity();//这是添加的内容
void slotShortcutBuiltinCopy();
保存并退出
4.1.4 编译安装
cd /home/liwl/deepin-terminal-5.4.0.13/build
cmake ..
make
sudo install make
# 默认安装的路径是/usr/local/bin/下
编译安装的过程,在本篇以下内容全部通用,下文不再赘述
4.1.5 效果展示

4.2 双击可选中的特殊符号
该功能在实用性很强,Konsole和xshell都有相关的设置选项,但是deepin-terminal并没有此功能设置,导致终端在某些使用场景中效率较低。
本部分主要就是实现该功能,把功能选项添加到“高级设置-光标”部分
4.2.1 设置面板增加选项内容
首先修改json文件:vim /home/liwl/deepin-terminal-5.4.0.13/src/assets/other/default-config.json,添加部分如下:
{
	"key": "auto_copy_selection",
	"type": "checkbox",
	"text": "Copy on select",
	"default": true
},
{
	"key": "word_characters",
	"name": "Word characters",
	"type": "lineedit"
}
保存并退出
4.2.2 添加配置解析内容
vim /home/liwl/deepin-terminal-5.4.0.13/src/settings/settings_translation.cpp
在最后一行的花括号上,添加以下内容:
auto advanced_cursor_word_charactersText = QObject::tr("Word characters");
Q_UNUSED(advanced_cursor_word_charactersText);
注意advanced_cursor_word_charactersText写法,参照该文件其他部分内容
保存并退出
4.2.3 功能实现
本部分主要包括以下几个步骤:
其一,编辑文件:vim /home/liwl/deepin-terminal-5.4.0.13/3rdparty/terminalwidget/lib/qtermwidget.h
添加以下内容:
QFont getTerminalFont();
void setTerminalOpacity(qreal level);
//add by liwl@2021.03.02,begin
void setTerminalWordCharacters(const QString &wc);
//add by liwl@2021.03.02,end
void setTerminalBackgroundImage(QString backgroundImage);
// environment
void setEnvironment(const QStringList &environment);
其二,编辑文件:vim /home/liwl/deepin-terminal-5.4.0.13/3rdparty/terminalwidget/lib/qtermwidget.cpp
添加以下内容:
void QTermWidget::setTerminalOpacity(qreal level)
{
    m_impl->m_terminalDisplay->setOpacity(level);
}
//add by liwl@2021.03.02,begin
void QTermWidget::setTerminalWordCharacters(const QString &wc)
{
    m_impl->m_terminalDisplay->setWordCharacters(wc);
}
//add by liwl@2021.03.02,end
void QTermWidget::setTerminalBackgroundImage(QString backgroundImage)
{
    m_impl->m_terminalDisplay->setBackgroundImage(backgroundImage);
}
其三,编辑文件,vim /home/liwl/deepin-terminal-5.4.0.13/src/views/termwidget.h,添加方法声明:
// 修改光标形状
void setCursorShape(int shape);
//add by liwl@2021.03.02,begin
void setTermWordCharacters(const QString &wc);
//add by liwl@2021.03.02,end
void setPressingScroll(bool enable);
其四,编辑文件:vim /home/liwl/deepin-terminal-5.4.0.13/src/views/termwidget.cpp
在void TermWidget::setCursorShare(int share)方法下添加以下内容:
/*******************************************************************************
 1. @函数:    setTermWordCharacters
 2. @作者:    liwl
 3. @日期:    2021-03-02
 4. @说明:    设置双击可选中的分隔符
*******************************************************************************/
void TermWidget::setTermWordCharacters(const QString &wc)
{
        setTerminalWordCharacters(wc);
}
在void TermWidget::onSettingValueChanged(const QString &keyName)方法中的添加以下内容:
//add by liwl@2021-03-02,begin
if (keyName == "advanced.cursor.word_characters") {
	setTermWordCharacters(Settings::instance()->wordCharacters());
	return ;
}
//add by liwl@2021-03-02,en
其五,编辑文件,/home/liwl/deepin-terminal-5.4.0.13/src/settings/settings.h,添加相关方法声明
QString fontName();
//add by liwl@2021.03.02,begin
QString wordCharacters() const;//这里是属性的声明
//add by liwl@2021.03.02,end
int fontSize();
void backgroundBlurChanged(bool enabled);
//add by liwl@2021.03.02,begin
void wordCharactersChanged(QString wordCharacters);//这里是信号的声明
//add by liwl@2021.03.02,end
void pressingScrollChanged(bool enabled);
其六,编辑文件:vim /home/liwl/Documents/liwl_dev/deepin-terminal_modify_by_liwl/src/settings/settings.cpp
在void Settings::initConnection()方法中,添加以下内容:
QPointer<DSettingsOption> cursorBlink = settings->option("advanced.cursor.cursor_blink");
connect(cursorBlink, &Dtk::Core::DSettingsOption::valueChanged, this, [ = ](QVariant value) {
	emit cursorBlinkChanged(value.toBool());
});
//add by liwl@2021.03.02,begin
QPointer<DSettingsOption> wordCharacters = settings->option("advanced.cursor.word_characters");
connect(wordCharacters, &Dtk::Core::DSettingsOption::valueChanged, this, [ = ](QVariant value) {
    emit wordCharactersChanged(value.toString());
});
//add by liwl@2021.03.02,end
在void Settings::colorScheme() const方法下面,添加以下内容:
/*******************************************************************************
 1. @函数:    wordCharacters
 2. @作者:    liwl
 3. @日期:    2021-03-02
 4. @说明:    设置界面获取双击可选中的符号
*******************************************************************************/
QString Settings::wordCharacters() const
{
    return settings->option("advanced.cursor.word_characters")->value().toString();
}
保存退出,编译一次
中文翻译
这里有个问题,设置界面"Word characters"未翻译,进行以下操作:
编辑文件,vim /home/liwl/deepin-terminal-5.4.0.13/translations/deepin-terminal_zh_CN.ts,修改
<message>
	<location filename="../src/settings/settings_translation.cpp" line="161"/>
	<source>Word characters</source>
	<translation type="unfinished"></translation>
</message>
为
<message>
	<location filename="../src/settings/settings_translation.cpp" line="161"/>
    <source>Word characters</source>
    <translation>双击可选中的特殊符号</translation>
</message>
保存退出后,再重新进行编译安装操作
4.2.4 效果展示

4.3 启动初始目录
deepin-terminal默认启动目录是用户的home目录,但是当前版本没有提供启动初始目录的设置选项。如果经常在某个目录下工作 ,通过终端进入该目录,不断地cd有些繁琐,直接设置一个deepin-terminal初始目录,显得更加高效和人性化。
本部分主要实现该功能。
4.3.1 设置面板增加选项内容
本篇把“启动初始目录”的设置选项,放置在“基础设置-界面”区域下
编辑文件:vim /home/liwl/deepin-terminal-5.4.0.13/src/assets/other/default-config.json
修改内容为:
{
    "key":	"work_directory",
    "name":	"Work directory",
    "type":	"lineedit"
},
{
	"key": "opacity",
	"name": "Opacity",
	"type": "slider",
	"max": 100,
	"min": 20,
 	"default": 100
},
保存并退出
4.3.2 添加配置解析内容
编辑文件:vim /home/liwl/deepin-terminal-5.4.0.13/src/settings/settings_translation.cpp
在最后一行花括号上面,添加以下内容:
auto basic_interface_work_directoryName = QObject::tr("Work directory");
Q_UNUSED(basic_interface_work_directoryName);
保存退出
添加中文翻译
首先编译一下:
cd /home/liwl/deepin-terminal-5.4.0.13/build
cmake ..
make
然后修改翻译文件:
vim /home/liwl/deepin-terminal-5.4.0.13/translations/deepin-terminal_zh_CN.ts
<message>
    <location filename="../src/settings/settings_translation.cpp" line="163"/>
    <source>Work directory</source>
    <translation type="unfinished"></translation>
</message
上面内容修改为以下内容:
<message>
    <location filename="../src/settings/settings_translation.cpp" line="163"/>
    <source>Work directory</source>
    <translation>启动初始目录</translation>
</message
然后再进行一次编译即可
4.3.3 功能代码实现
本部分主要包括以下几个步骤:
其一,编辑文件:vim /home/liwl/deepin-terminal-5.4.0.13/src/settings/settings.h
修改为以下内容:
QString fontName();
//add by liwl@2021.03.02,begin
QString wordCharacters() const;
QString workDirectory() const;
//add by liwl@2021.03.02,end
int fontSize();
void backgroundBlurChanged(bool enabled);
//add by liwl@2021.03.02,begin
void wordCharactersChanged(QString wordCharacters);
void workDirectoryChanged(QString workDirectory);
//add by liwl@2021.03.02,end
void pressingScrollChanged(bool enabled);
其二,编辑文件:vim /home/liwl/deepin-terminal-5.4.0.13/src/settings/settings.cpp
修改为以下内容:
QPointer<DSettingsOption> cursorBlink = settings->option("advanced.cursor.cursor_blink");
connect(cursorBlink, &Dtk::Core::DSettingsOption::valueChanged, this, [ = ](QVariant value) {
    emit cursorBlinkChanged(value.toBool());
});
//add by liwl@2021.03.02,begin
QPointer<DSettingsOption> wordCharacters = settings->option("advanced.cursor.word_characters");
connect(wordCharacters, &Dtk::Core::DSettingsOption::valueChanged, this, [ = ](QVariant value) {
    emit wordCharactersChanged(value.toString());
});
QPointer<DSettingsOption> workDirectory = settings->option("basic.interface.work_directory");
connect(workDirectory, &Dtk::Core::DSettingsOption::valueChanged, this, [ = ](QVariant value) {
    emit workDirectoryChanged(value.toString());
});
//add by liwl@2021.03.02,end
QPointer<DSettingsOption> backgroundBlur = settings->option("advanced.window.blurred_background");
connect(backgroundBlur, &Dtk::Core::DSettingsOption::valueChanged, this, [ = ](QVariant value) {
    emit backgroundBlurChanged(value.toBool());
});
在 settings.cpp的QSting Settings::wordCharacters() const方法下,添加以下内容:
/*******************************************************************************
 1. @函数:    wordCharacters
 2. @作者:    liwl
 3. @日期:    2021-03-02
 4. @说明:    设置界面获取终端启动初始目录
*******************************************************************************/
QString Settings::workDirectory() const
{
        return settings::option("basic.interface.work_directory")->value().toString();
}
其三,编辑文件,vim /home/liwl/deepin-terminal-5.4.0.13/src/views/termwidget.cpp
把以下内容:
// WorkingDir
    if (m_properties.contains(WorkingDir)) {
        setWorkingDirectory(m_properties[WorkingDir].toString());
    }
修改为:
// WorkingDir
    if (m_properties.contains(WorkingDir)) {
        setWorkingDirectory(m_properties[WorkingDir].toString());
    }//else add by liwl@2021.02.20
    else{
        QString default_work_diretory = Settings::instance()->workDirectory();
        QFileInfo file(default_work_diretory);
        if (file.exists())
        	setWorkingDirectory(default_work_diretory);
    }//add by liwl end
保存退出, 编译安装
4.3.4 效果展示

4.4 显示设置界面
在Konsole获取其他很多应用软件,都有通过快捷键打开设置的选项,deepin-terminal提供了两种打开“设置”的方式:右键,菜单选项
本部分实现了通过快捷键打开“设置”面板,把该设置选项放置在“基础设置-其他”区域内。
4.4.1 修改设置面板的显示
编辑文件,vim /home/liwl/deepin-terminal-5.4.0.13/src/assets/other/default-config.json
修改内容如下:
{
    "key":	"display_shortcuts",
    "name":	"Display shortcuts",
    "type":	"shortcut",
    "default":	"Ctrl+Shift+?"
},
{
    "key":	"display_setting",
    "name":	"Display setting",
    "type":	"shortcut",
    "default":	"Ctrl+,"
},
保存退出
4.4.2 添加配置解析内容
编辑文件,vim /home/liwl/deepin-terminal-5.4.0.13/src/settings/settings_translation.cpp
在该文件最后一行的花括号上面,添加以下内容:
auto shortcuts_advanced_display_settingName = QObject::tr("Display setting");
Q_UNUSED(shortcuts_advanced_display_settingName);
保存退出
添加中文翻译
首先编译一下:
cd /home/liwl/deepin-terminal-5.4.0.13/build
cmake ..
make
然后修改翻译文件:
vim /home/liwl/deepin-terminal-5.4.0.13/translations/deepin-terminal_zh_CN.ts
修改以下内容:
<message>
    <location filename="../src/settings/settings_translation.cpp" line="165"/>
    <source>Display setting</source>
    <translation type="unfinished"></translation>
</message>
为:
<message>
    <location filename="../src/settings/settings_translation.cpp" line="165"/>
    <source>Display setting</source>
    <translation>显示设置界面</translation>
</message>
保存退出后,再次编译
4.4.3 功能代码实现
编辑文件,vim /home/liwl/deepin-terminal-5.4.0.13/src/main/mainwindow.cpp
修改内容如下:
    // close_other_workspaces
    connect(createNewShotcut("shortcuts.tab.close_other_workspaces"), &QShortcut::activated, this, &MainWindow::slotShortcutCloseOtherWorkspaces);
    //opacity.add by liwl@2021.03.01,begin
    connect(createNewShotcut("shortcuts.terminal.opacity"), &QShortcut::activated, this, &MainWindow::slotShortcutOpacity);
        connect(createNewShotcut("shortcuts.advanced.display_setting"),&QShortcut::activated,Service::instance(),&Service::slotShowSettingsDialog);
    //opacity.add by liwl@2021.03.01,end
    // copy
    connect(createNewShotcut("shortcuts.terminal.copy"), &QShortcut::activated, this, &MainWindow::slotShortcutCopy);
保存退出后,编译安装
4.4.4 效果展示

4.5 右键翻译
本部分主要实现了选中内容后,右键-翻译,通过浏览器打开翻译界面,显示翻译结果
4.5.1 功能实现
编辑文件,vim /home/liwl/Documents/liwl_dev/deepin-terminal_modify_by_liwl/src/views/termwidget.cpp
在void TermWidget::addMenuActions(const QPoint &pos)方法内,修改内容如下:
if (!m_menu->isEmpty()) {
    m_menu->addSeparator();
}                                                                                     
//add by liwl@2021.03.02,begin
if (!selectedText().isEmpty()){
    m_menu->addAction(tr("Transfer"),this,[this]){
            QString strurl = "https://fanyi.baidu.com/#en/zh/" + selectedText();
            QDesktopServices::openUrl(strurl);
            }
 }
//add by liwl@2021.03.02,end
保存退出,执行一次编译
中文翻译
编辑文件,vim /home/liwl/deepin-terminal-5.4.0.13/translations/termwidget.cpp
修改以下内容:
<message>
    <location filename="../src/views/termwidget.cpp" line="416"/>
    <source>Transfer</source>
    <translation type="unfinished"></translation>
</message>
为:
<message>
    <location filename="../src/views/termwidget.cpp" line="416"/>
    <source>Transfer</source>
    <translation>翻译</translation>
</message>
保存退出后,编译安装
4.5.2 效果展示

4.6 右键文本编辑器打开
本部分主要实现把复制的内容,使用文本编辑器打开
4.6.1 功能实现
功能实现已经很简单,在4.5.1的基础上修改代码,如下:
vim /home/liwl/Documents/liwl_dev/deepin-terminal_modify_by_liwl/src/views/termwidget.cpp
if (!selectedText().isEmpty()) {
    m_menu->addAction(tr("Transfer"), this, [this] {
        QString strurl = "https://fanyi.baidu.com/#en/zh/" + selectedText();
        QDesktopServices::openUrl(QUrl(strurl));
     });
     //add by liwl@2021.03.02,begin
     m_menu->addAction(tr("Open by deepin-editor"),this,[this] {
           QFile tmpFile;
           QString tmpFileName("/tmp/tmp.txt");
           tmpFile.setFileName(tmpFileName);
           if (tmpFile.open(QIODevice::WriteOnly|QIODevice::Text)){
            	QTextStream stream(&tmpFile);
                stream << selectedText()<<"\n";
                tmpFile.close();
            };
            QString cmd = QString("xdg-open /tmp/tmp.txt");
            system(cmd.toStdString().c_str());
    });  // add by liwl@2021.03.02,end
}
因为代码中用到了QTextStream,所以必须添加头文件:
#include <QTextStream>
保存退出,编译一次
这段代码写的比较渣,本意是想把剪切板的内容使用文本编辑器直接打开,而非使用文本编辑器打开文件
中文翻译
编辑文件,vim /home/liwl/deepin-terminal-5.4.0.13/translations/deepin-terminal_zh_CN.ts
修改以下内容:
<message>
    <location filename="../src/views/termwidget.cpp" line="426"/>
    <source>Open by deepin-editor</source>
    <translation type="unfinished"></translation>
</message>
为:
<message>
    <location filename="../src/views/termwidget.cpp" line="426"/>
    <source>Open by deepin-editor</source>
    <translation>使用文本编辑器打开</translation>
</message>
保存退出后,编译安装
4.6.2 效果展示

4.7 光标下划线加粗
deepin-terminal的光标下划线很细,在终端和vim模式下存在感很低,很多时候因为看不到光标在哪里而不得不寻找半天,拉低效率。
4.7.1 修改设置面板的显示
编辑文件,vim /home/liwl/deepin-terminal-5.4.0.13/src/assets/other/default-config.json,
修改为以下内容:
{
    "key":	"cursor_share",
    "name":	"Cursor style",
    "type":	"buttongroup",
    "items": ["▐","▂","|"],
    "default":0,
    "i18n_skip_keys": ["items"]
},
4.7.2 代码修改
编辑文件,vim /home/liwl/deepin-terminal-5.4.0.13/3rdparty/terminalwidget/lib/TerminalDisplay.cpp,
修改源码:
else if ( _cursorShape == Emulation::KeyboardCursorShape::UnderlineCursor )
	painter.drawLine(QLineF(
                    QPointF(cursorRect.left(),
                            cursorRect.bottom()),
        			QPointF(cursorRect.right(),
                            cursorRect.bottom())));
为:
else if ( _cursorShape == Emulation::KeyboardCursorShape::UnderlineCursor )
       {
			for (int i = 0; i <= 3; ++i)
      				painter.drawLine(QLineF( QPointF(cursorRect.left(), cursorRect.bottom()+i), QPointF(cursorRect.right(), cursorRect.bottom()+i)));
        }
即用一个for循环,多画3条线实现加粗,保存退出,编译安装
4.7.3 效果展示

4.8 修改主题配色
本部分主要介绍如何修改主题配色,主要操作目录为:
cd /home/liwl/deepin-terminal-5.4.0.13/3rdparty/terminalwidget/lib/color-schemes
该目录定义了deepin-terminal的Dark主题,Light主题,还有内置的其他10个主题
如果修改某个主题的配色,比如修改Dark的主题配色,只需要编辑Dark.colorscheme文件
那么如何替换掉内置主题呢?
比如我想把内置的第二个主题Empathy换成Breeze主题,操作如下:
把BreezeModified.colorscheme文件内部的
[Background]
[BackgroundIntense]
[Color0]
[Color0Intense]
[Color1]
[Color1Intense]
[Color2]
[Color2Intense]
[Color3]
[Color3Intense]
[Color4]
[Color4Intense]
[Color5]
[Color5Intense]
[Color6]
[Color6Intense]
[Color7]
[Color7Intense]
[Foreground]
[ForegroundIntense]
[General]
配置字段下面的Color参数值,替换掉Theme2.colorscheme中相应配置字段下面的Color参数即可。
然后修改文件:vim /home/liwl/deepin-terminal-5.4.0.13/src/main/mainwindow.h
把
static constexpr const char *THEME_TWO_NAME                 = "Breeze";
保存退出,编译安装即可
这里不在赘述详细的操作过程,仅贴2张效果图
修改前:

修改后:

deepin-terminal改造之路的更多相关文章
- AngularJS 遗留项目的升级改造之路(一)
		目录 序言 遗留项目概述 条件限制下的升级原则 升级改造的演进方向 遇到的主要难点 小结 参考 1. 序言 Angular 官方网站针对 从 AngularJS 升级到 Angular 提供了比较详细 ... 
- EF架构~EF异步改造之路~仓储接口的改造
		回到目录 返回异步与并行目录 C#5.0带来了并行编程 {C#1.0托管代码→C#2.0泛型→C#3.0LINQ→C#4.0动态语言→C#5.0异步编程} 随着C#5.0在.net4.5出来之后,它们 ... 
- EF架构~EF异步改造之路~让DbContextRepository去实现异步接口
		回到目录 返回异步与并行目录 上一讲中,我们定义了三个异步操作接口,这回我们将对它进行实现,而有一个基础知识需要大家清楚,那就是实现接口的方式,一般我们使用默认的方式(隐式实现),这种方法实现的接口方 ... 
- EF架构~EF异步改造之路~仓储接口的改造~续
		回到目录 返回异步与并行目录 在写完仓储接口的改造改造后,总觉得有个代码的坏味道,这种味道源于它的DRP,即重复的代码太多了,即异步操作和同步操作其实只是在insert,update和delete上有 ... 
- Lumen框架—升级改造之路-仓储层
		仓储层与逻辑层搭建 Lumen官方文档:https://lumen.laravel.com/docs/5.5 我的项目地址:https://github.com/BusinessL/big-lume ... 
- Lumen框架—升级改造之路-开篇
		一.前言 首先,我先阐述下,为什么要做这件事.lumen是一款比较轻型的PHP框架,但是,作为项目开发来说,它还是缺少很多东西,比如Response返回值规范的自定义,异常抛出格式的自定义,以及 ... 
- mac-改造你的terminal
		今天在知乎上看到了一篇关于<程序员如何优雅使用Mac>,里面介绍了不少Mac的高端使用技巧,其中关于terminal的部分更是深深的吸引了我,于是我也开始了我的terminal改造计划. ... 
- deepin linux 安装 mysql
		一:安装mysql 打开deepin terminal: 在此过程中会提示输入两次密码,就是输入 root 账号密码,两次输入密码一样就可以了.然后一路Y安装成功. 一旦安装成功,MySql服务器会自 ... 
- LPDMvvmKit 系列之 UITableView 的改造
		阅读本文需要对ReactiveCocoa足够了解,也可以参阅图解ReactiveCocoa基本函数(http://www.jianshu.com/p/38d39923ee81) Cocoa Touch ... 
随机推荐
- 关于最小生成树 Kruskal 和 Prim 的简述(图论)
			模版题为[poj 1287]Networking. 题意我就不说了,我就想简单讲一下Kruskal和Prim算法.卡Kruskal的题似乎几乎为0.(●-`o´-)ノ 假设有一个N个点的连通图,有M条 ... 
- Educational Codeforces Round 94 (Rated for Div. 2)  String Similarity、RPG Protagonist、Binary String Reconstruction、Zigzags  思维
			题目链接:String Similarity 题意: 首先题目定义了两个串的相似(串的构成是0.1),如果两个串存在对于一个下标k,它们的值一样,那么这两个串就相似 然后题目给你一个长度为2n-1的串 ... 
- python+requests爬取百度文库ppt
			实验网站:https://wenku.baidu.com/view/c7752014f18583d04964594d.html 在下面这种类型文件中的请求头的url打开后会得到一个页面 你会得到如下图 ... 
- Java 窗口 绘制图形 #1
			写在前面: editplus换成eclipse了 Sketchpad要钱,买不起 自己搞(rua) by emeralddarkness 建立了一个平面直角坐标系 两个变元x,y,参数i 实现了以下功 ... 
- Codeforces Round #603 C. Everyone is a Winner!
			题意:给你一个整数n,求所有n/k的值(k∈{1,2,3...,n,.......}). 题解:最简单的方法是用枚举1~sqrt(n),把除数和商放进set中,就能直接水过,但后来看其他人的题解了解到 ... 
- Codeforces Round #643 (Div. 2)  E. Restorer Distance   (贪心,三分)
			题意:给你\(n\)个数,每次可以使某个数++,--,或使某个数--另一个++,分别消耗\(a,r,m\).求使所有数相同最少的消耗. 题解:因为答案不是单调的,所以不能二分,但不难发现,答案只有一个 ... 
- SQL Server的嵌套存储过程中使用同名的临时表怪像浅析
			SQL Server的嵌套存储过程,外层存储过程和内层存储过程(被嵌套调用的存储过程)中可以存在相同名称的本地临时表吗?如果可以的话,那么有没有什么问题或限制呢? 在嵌套存储过程中,调用的是外层存 ... 
- Linux-输出/输入重定向
			目录 重定向的分类 输出重定向 将标准输出重定向到文件 将标准输出追加重定向到文件 将错误输出重定向到文件 将标准输出和错误输出都重定向到文件 将错误输出重定向到黑洞文件 输入重定向 重定向的分类 名 ... 
- C++ part2
			为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数? references: nowcoder 将可能会被继承的父类的析构函数设置为虚函数,可以保证当我们new一个子类,然后使用基类指针 ... 
- JavaScript基本包装类介绍
			为了便于操作基本类型值,ECMAScript 提供了 3 个特殊的引用类型:Boolean.Number和 String.这些类型与其他引用类型相似,但同时也具有与各自的基本类型相应的特殊行为.实际上 ... 
