~/.config/plasma-org.kde.plasma.desktop-appletsrc
ランチャー(「Kickoff」)や時計(少なくともKDE 5の場合)などのKDEデスクトップアプレットの設定。 Ansibleを使用して新しいシステムで必要に応じてアプレットを設定したいのですが、これを行うための安定した方法が見つかりません。
kwriteconfig5
次のように値を変更するために使用できることがわかります。
kwriteconfig5 --file ~/.config/plasma-org.kde.plasma.desktop-appletsrc \
--group Containments --group 3 --group Applets --group 9 \
--group Configuration --group Appearance \
--key dateFormat isoDate
これにより、システムトレイの一部の項目が非表示になります。もし縁石数(3)とアプレット(9)は、以下のように時計アプレットと一致します。
[Containments][3][Applets][9]
immutability=1
plugin=org.kde.plasma.digitalclock
私が知っている限り、インストールの間にこれが起こるという保証はありません。
特定のアプレット(設定ファイルのプラグイン)の値を設定するために使用できるエレガントな方法はありますか?または、特定のアプリケーションの番号をマイニングしてからklunkyコマンドを使用するスクリプトを作成する必要がありますかkwriteconfig5
?
答え1
Bashの単純化されたソリューション:
config="plasma-org.kde.plasma.desktop-appletsrc"
grp=""
while IFS= read -r line
do
[[ $line == *Applets* ]] && grp="$line"
[[ $line == *org.kde.plasma.digitalclock* ]] && break
done < "$HOME/.config/$config"
ContGrp=$(echo "$grp" | awk -F\] '{print $2}' | awk -F\[ '{print $2}')
ApplGrp=$(echo "$grp" | awk -F\] '{print $4}' | awk -F\[ '{print $2}')
kwriteconfig5 --file "$config" \
--group Containments --group "$ContGrp" --group Applets --group "$ApplGrp" \
--group Configuration --group General \
--key dateFormat isoDate
答え2
Plasma 5.6に最適な方法を見つけました。スクリプトAPIがありますが、QJSEngineを介して実行されるのはJavaScriptです。この答えは、bashでスクリプトを実行し、アプレットを設定し、パネルウィジェットを追加する方法を示しています。公式文書にはより多くの例があります。 APIバインディングドキュメントここで見つけることができますさらなる研究のために。
各ウィジェットに対して変更する必要がある特定のキーを識別することは、main.xml
アプレットソースからアプレットファイルを読み取って実行するのが最善です。
Bashでスクリプトを実行します。
contents=$(<"script.js")
qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript "$contents"
var allPanels = panels();
var done = false;
for (var panelIndex = 0; panelIndex < allPanels.length; panelIndex++) {
if (done){
break;
}
var p = allPanels[panelIndex];
var widgets = p.widgets();
for (var widgetIndex = 0; widgetIndex < widgets.length; widgetIndex++) {
var w = widgets[widgetIndex];
// Cycle through panels and widgets until we find the panel with the pager on it.
if (w.type != "org.kde.plasma.pager"){
continue;
}
// Add new widget to the same panel
var wt = p.addWidget("org.kde.windowtitle");
// Print the IDs so you could grab them from bash if you wanted
print(`${p.id}\t${wt.id}`)
done = true;
}
}
(余談:スクリプトAPIを介してパネルウィジェットを並べ替えることはうまくいかないことがわかりました。で検索されました。メモ用のスクリプトは次のとおりです。)
以下は、元の質問に直接関連する文書の例です。
// See previous examples for these functions.
function forEachWidgetInContainmentList(containmentList, callback) { ... }
function forEachWidget(callback) { ... }
function forEachWidgetByType(type, callback) { ... }
function widgetSetProperty(args) {
if (!(args.widgetType && args.configGroup && args.configKey)) {
return;
}
forEachWidgetByType(args.widgetType, function(widget){
widget.currentConfigGroup = [args.configGroup];
//--- Delete when done debugging
const oldValue = widget.readConfig(args.configKey);
print("" + widget.type + " (id: " + widget.id + "):");
print("\t[" + args.configGroup + "] " + args.configKey + ": " + oldValue + " => " + args.configValue);
//--- End Debug
widget.writeConfig(args.configKey, args.configValue);
});
}
widgetSetProperty({
widgetType: "org.kde.plasma.digitalclock",
configGroup: "Appearance",
configKey: "dateFormat",
configValue: "isoDate",
});
答え3
最小構成以外のすべての構成を削除し、また数えるすべての項目は必要に応じて、Containment
#1
とEssentialのみがありますApplets
。
[Containment][1]
lastScreen=0
location=4
plugin=org.kde.panel
...
に保存~/.config/plasma-org.kde.plasma.desktop-appletsrc
してkquitapp5 plasmashell && kstart5 plasmashell
再ロードしてください。
KDEは、デフォルト設定と数字を同じに保ちながら、欠落している他の行を自動的に追加します。
答え4
また書きましたОлексій Пироговの答え機能として:
applet_config="$XDG_CONFIG_HOME/plasma-org.kde.plasma.desktop-appletsrc"
configure_applet(){
applet="$1"
confgroup="$2"
key="$3"
value="$4"
grp=""
while IFS= read -r line
do
[[ $line == *Applets* ]] && grp="$line"
[[ $line == *$applet* ]] && break
done < "$applet_config"
ContGrp=$(echo "$grp" | awk -F\] '{print $2}' | awk -F\[ '{print $2}')
ApplGrp=$(echo "$grp" | awk -F\] '{print $4}' | awk -F\[ '{print $2}')
kwriteconfig5 --file "$(basename "$applet_config")" \
--group Containments --group "$ContGrp" --group Applets --group "$ApplGrp" \
--group Configuration --group General \
--key "$key" "$value"
}
# Example usage
configure_applet org.kde.plasma.digitalclock General dateFormat "isoDate"
configure_applet org.kde.windowtitle General style 3
# style 3 = Title - Application