Warning, /maui/station/src/widgets/Terminal.qml is written in an unsupported language. File is not indexed.
0001 import QtQuick 2.14 0002 import QtQuick.Controls 2.14 0003 0004 import org.mauikit.controls 1.3 as Maui 0005 import org.mauikit.terminal 1.0 as Term 0006 0007 Maui.SplitViewItem 0008 { 0009 id: control 0010 0011 property string path : "$HOME" 0012 0013 function forceActiveFocus() 0014 { 0015 control.kterminal.forceActiveFocus() 0016 } 0017 0018 enum TabTitle 0019 { 0020 ProcessName, 0021 WorkingDirectory, 0022 Auto 0023 } 0024 0025 readonly property alias terminal : _terminal 0026 readonly property alias session : _terminal.session 0027 readonly property string title : switch(settings.tabTitleStyle) 0028 { 0029 case Terminal.TabTitle.ProcessName : return _terminal.session.foregroundProcessName 0030 case Terminal.TabTitle.WorkingDirectory : return _terminal.session.currentDir 0031 case Terminal.TabTitle.Auto : return terminal.title 0032 } 0033 readonly property alias kterminal : _terminal.kterminal 0034 0035 property color tabColor : session.foregroundProcessName.startsWith("sudo") ? "red" : "transparent" 0036 0037 property bool watchForSlience : false 0038 0039 signal silenceWarning() 0040 0041 background: Rectangle 0042 { 0043 color: Maui.Theme.backgroundColor 0044 opacity: settings.windowTranslucency ? settings.windowOpacity : 1 0045 } 0046 0047 Term.Terminal 0048 { 0049 id: _terminal 0050 background: null 0051 0052 anchors.fill: parent 0053 0054 session.initialWorkingDirectory : control.path 0055 session.historySize: settings.historySize 0056 session.monitorSilence: control.watchForSlience 0057 0058 onUrlsDropped: (urls) => 0059 { 0060 for(var i in urls) 0061 control.session.sendText(urls[i].replace("file://", "")+ " ") 0062 } 0063 0064 kterminal.font: settings.font 0065 kterminal.colorScheme: settings.adaptiveColorScheme ? "Adaptive" : settings.colorScheme 0066 kterminal.lineSpacing: settings.lineSpacing 0067 kterminal.backgroundOpacity: settings.windowTranslucency ? 0 : 1 0068 0069 kterminal.enableBold : settings.enableBold 0070 kterminal.blinkingCursor : settings.blinkingCursor 0071 kterminal.fullCursorHeight : settings.fullCursorHeight 0072 kterminal.antialiasText : settings.antialiasText 0073 0074 menu: MenuItem 0075 { 0076 enabled: !settings.watchForSilence 0077 text: i18n("Watch for Silence") 0078 checkable: true 0079 checked: control.watchForSlience 0080 onTriggered: 0081 { 0082 control.watchForSlience = !control.watchForSlience 0083 } 0084 } 0085 0086 onKeyPressed: (event) => 0087 { 0088 if ((event.key == Qt.Key_Tab) && (event.modifiers & Qt.ControlModifier) && (event.modifiers & Qt.ShiftModifier)) 0089 { 0090 control.SplitView.view.incrementCurrentIndex(); 0091 currentTerminal.forceActiveFocus() 0092 event.accepted = true 0093 return 0094 } 0095 0096 if ((event.key == Qt.Key_Right) && (event.modifiers & Qt.ControlModifier) && (event.modifiers & Qt.ShiftModifier)) 0097 { 0098 split() 0099 event.accepted = true 0100 return 0101 } 0102 0103 if ((event.key == Qt.Key_T) && (event.modifiers & Qt.ControlModifier) && (event.modifiers & Qt.ShiftModifier)) 0104 { 0105 root.openTab(control.session.intialWorkingDirectory) 0106 event.accepted = true 0107 return 0108 } 0109 } 0110 0111 Connections 0112 { 0113 target: _terminal.session 0114 0115 function onBellRequest(message) 0116 { 0117 console.log("Bell REQUESTED!!!", message); 0118 } 0119 0120 function onProcessHasSilent(value) 0121 { 0122 if(control.watchForSlience && value && control.session.hasActiveProcess ) 0123 control.silenceWarning() 0124 } 0125 0126 function onForegroundProcessNameChanged() 0127 { 0128 var process = control.session.foregroundProcessName 0129 0130 switch (process) 0131 { 0132 case "nano" : settings.keysModelCurrentIndex = 1; break; 0133 case "htop" : settings.keysModelCurrentIndex = 0; break; 0134 } 0135 } 0136 0137 function onFinished() 0138 { 0139 console.log("ASKED TO CLOSE SESSION") 0140 if(currentTab.count === 1) 0141 { 0142 closeTab(currentTabIndex) 0143 }else 0144 { 0145 closeSplit() 0146 } 0147 } 0148 } 0149 } 0150 }