目錄
- 1. 背景介紹
- 2. 下載下傳源碼
- 3. 依賴檢查及安裝
- 4. 改造之路
- 4.1 終端透明度快捷鍵
- 4.1.1 設定面闆增加選項内容
- 4.1.2 添加配置解析内容
- 4.1.3 功能實作
- 4.1.4 編譯安裝
- 4.1.5 效果展示
- 4.2 輕按兩下可選中的特殊符号
- 4.2.1 設定面闆增加選項内容
- 4.2.2 添加配置解析内容
- 4.2.3 功能實作
- 4.2.4 效果展示
- 4.3 啟動初始目錄
- 4.3.1 設定面闆增加選項内容
- 4.3.2 添加配置解析内容
- 4.3.3 功能代碼實作
- 4.3.4 效果展示
- 4.4 顯示設定界面
- 4.4.1 修改設定面闆的顯示
- 4.4.2 添加配置解析内容
- 4.4.3 功能代碼實作
- 4.4.4 效果展示
- 4.5 右鍵翻譯
- 4.5.1 功能實作
- 4.5.2 效果展示
- 4.6 右鍵文本編輯器打開
- 4.6.1 功能實作
- 4.6.2 效果展示
- 4.7 光标下劃線加粗
- 4.7.1 修改設定面闆的顯示
- 4.7.2 代碼修改
- 4.7.3 效果展示
- 4.8 修改主題配色
- 4.1 終端透明度快捷鍵
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學習和改造之路。
[2020年4月1号更新]
deepin20.1版本更新到20.2之後,deepin-terminal無法正常打開,需要重新編譯。
編譯過程發現報錯,解決方式如下:
在報錯的源碼檔案中,添加頭檔案:#include<QPainterPath>,然後重新編譯
如果安裝之後依然無法使用,需要删除系統中deepin-terminal全部檔案,重新編譯安裝即可
注:使用root使用者執行
find / -name deepin-terminal 2>/dev/null|egrep usr|xargs rm -rf
聲明:本篇部落格内容僅限于個人學習和應用,切勿商用,違規自究!如有侵權,請聯系我删除!轉載請注明出處!
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 [email protected],begin
void setTerminalWordCharacters(const QString &wc);
//add by [email protected],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 [email protected],begin
void QTermWidget::setTerminalWordCharacters(const QString &wc)
{
m_impl->m_terminalDisplay->setWordCharacters(wc);
}
//add by [email protected],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 [email protected],begin
void setTermWordCharacters(const QString &wc);
//add by [email protected],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 [email protected],begin
QString wordCharacters() const;//這裡是屬性的聲明
//add by [email protected],end
int fontSize();
void backgroundBlurChanged(bool enabled);
//add by [email protected],begin
void wordCharactersChanged(QString wordCharacters);//這裡是信号的聲明
//add by [email protected],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 [email protected],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 [email protected],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 [email protected],begin
QString wordCharacters() const;
QString workDirectory() const;
//add by [email protected],end
int fontSize();
void backgroundBlurChanged(bool enabled);
//add by [email protected],begin
void wordCharactersChanged(QString wordCharacters);
void workDirectoryChanged(QString workDirectory);
//add by [email protected],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 [email protected],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 [email protected],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 [email protected]
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 [email protected],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 [email protected],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 [email protected],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 [email protected],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 [email protected],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 [email protected],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張效果圖
修改前:
修改後: