~/.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을 통해 실행되는 것은 자바스크립트입니다. 이 답변은 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를 통해 패널 위젯을 재정렬하는 것이 작동하지 않는다는 것을 발견했습니다. 지연이나 다른 시간이 지난 후 AppletOrder 키의 구성에 추가되었을 뿐입니다. 그러나 그룹 ID를 캡처하면 위젯을 bash 또는 나중에 두 개의 스크립트에서 검색되었습니다.참고용 스크립트는 다음과 같습니다.)
다음은 원래 질문과 직접 관련된 문서의 예입니다.
// 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