KDE Konsole:現在のセッションを保存して復元する方法は?

KDE Konsole:現在のセッションを保存して復元する方法は?

KDE Konsoleには、現在のセッション(開いているタブ、現在のディレクトリなど)を保存する機能はありません。

現在のセッションをどのように保存/復元できますか?

答え1

これを生成し~/.konsole/watcher.shて実行可能にし、(chmod 755 watcher.sh)起動アプリケーションに追加します。

konsole --tabs-from-file ~/.konsole/current-tabs回復モードでkonsoleを使用または開始できます~/.konsole/watcher.sh restore

#!/bin/bash

# ~/.konsole/watcher.sh

# Watches the konsole qdbus messages and saves session state changes so they can be restored easily
# https://docs.kde.org/trunk5/en/applications/konsole/command-line-options.html

# Configuration
COMMAND=''
WATCH_INTERVAL_SECONDS=15
SAVEFILE_TERMINAL="${HOME}/.konsole/current-tabs"

# Restore if asked to
if [ "$1" = "restore" ] ; then
    echo "Restoring..."
    konsole --tabs-from-file ${SAVEFILE_TERMINAL} -e 'bash -c exit'&
fi

# Function to get the current sessions and write them to a file
function getSessions {
    pid=$(pgrep konsole -u $USER)
    local SESSIONS=$(qdbus org.kde.konsole-$pid | grep /Sessions/)
    if [[ ${SESSIONS} ]] ; then
       echo "# Most recent session list " $(date) > ${SAVEFILE_TERMINAL}
       for i in ${SESSIONS}; do
       local FORMAT=$(qdbus org.kde.konsole-$pid $i tabTitleFormat 0)
       local PROCESSID=$(qdbus org.kde.konsole-$pid $i processId)
       local CWD=$(pwdx ${PROCESSID} | sed -e "s/^[0-9]*: //")
       if [[ $(pgrep --parent ${PROCESSID}) ]] ; then
           CHILDPID=$(pgrep --parent ${PROCESSID})
           COMMAND=$(ps -p ${CHILDPID} -o args=)
       fi 
       echo "workdir: ${CWD};; title: ${FORMAT};; command:${COMMAND}" >> ${SAVEFILE_TERMINAL}
       COMMAND=''
       done
    fi
}

#Update the Konsole sessions every WATCH_INTERVAL_SECONDS seconds
while true; do sleep ${WATCH_INTERVAL_SECONDS}; getSessions; done &

答え2

促す他の答えで、Konsoleスナップショットを保存してロードするスクリプトを作成しました。

https://github.com/denilsonsa/small_scripts/blob/master/konsole_snapshot.py

使い方はとても簡単です。

./konsole_snapshot.py --help

# Use this to save a snapshot:
./konsole_snapshot.py --save

# Use this to load a snapshot (i.e. launch Konsole):
./konsole_snapshot.py --load

私のスクリプトは、私が見つけたすべての欠点を修正することを目指しています。その他の回答。特に、このスクリプトの名前は必要に応じて指定でき、一度に複数のウィンドウを保存できます。

これにはいくつかの制限があります。分割や他のレイアウトをサポートせず(現在のKonsole APIでは達成することは困難です)、カスタムタブのタイトルを保存せず(達成できますが、特定の制限内で)、現在のコマンドを保存しません(達成するのは非常に困難です) )まあ、そうでなければ潜在的に危険です。これらの制限を克服するには、より複雑なスクリプトをハッキングするよりも、Konsole自体に適切なセッションサポートを追加することをお勧めします。

関連情報