aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.cc6
-rw-r--r--src/command/commands.js12
-rw-r--r--src/widget/EmbeddedTerminal.qml5
3 files changed, 14 insertions, 9 deletions
diff --git a/main.cc b/main.cc
index a27ab6c..d4f68dc 100644
--- a/main.cc
+++ b/main.cc
@@ -20,6 +20,10 @@ class WorkingDirectory : public QObject {
Q_INVOKABLE QString current() const {
return QDir::current().absolutePath();
}
+
+ Q_INVOKABLE QString currentOfPID(const int pid) const {
+ return QDir("/proc/" + QString::number(pid) + "/cwd/").canonicalPath();
+ }
};
int main(int argc, char *argv[]) {
@@ -30,7 +34,7 @@ int main(int argc, char *argv[]) {
application.setOrganizationName("akr");
application.setApplicationName("MetaTerm");
- engine.rootContext()->setContextProperty("workingDirectory", &directory);
+ engine.rootContext()->setContextProperty("cwd", &directory);
QObject::connect(
static_cast<QObject*>(&engine),
diff --git a/src/command/commands.js b/src/command/commands.js
index 2ec1bb6..13bb1c2 100644
--- a/src/command/commands.js
+++ b/src/command/commands.js
@@ -115,12 +115,12 @@ function q() {
Qt.quit();
}
-function cd(output, path) {
- if ( path.length > 0 ) {
- if ( !workingDirectory.cd(path) ) {
- output.error('\"' + path + '\" doesn\'t exist.');
- }
+function pwd(output) {
+ var terminal = terminalList.getCurrent().terminal;
+
+ if ( terminal !== null ) {
+ output.log(cwd.currentOfPID(terminal.getPID()));
} else {
- output.log(workingDirectory.current());
+ output.error('No running session selected.');
}
}
diff --git a/src/widget/EmbeddedTerminal.qml b/src/widget/EmbeddedTerminal.qml
index 8a326ef..67d9a91 100644
--- a/src/widget/EmbeddedTerminal.qml
+++ b/src/widget/EmbeddedTerminal.qml
@@ -12,12 +12,13 @@ Item {
property int lines : settings.terminal.initialLines
property alias history : session.history
+ function getPID() { return session.getShellPID() }
+ function terminate() { return session.sendSignal(15) }
+
function select() { highlighter.select() }
function deselect() { highlighter.deselect() }
function displayOverlay() { overlay.displayBriefly() }
- function terminate() { return session.sendSignal(15) }
-
height: terminal.height
width: parent.width - settings.terminal.frameWidth