Dashboard Avatar Picker 1.0a
This will allows users to update/change their profile icon from the dashboard by clicking the profile icon. ### How it works? > Once the profile icon is clicked it will launch zenity file picker. Once selected the target new profile Icon this script will do the following: - Deletes the current ~/.face - Deletes all .face cached files in ~/.cache/caelestia/thumbnails/ - Copies the new selected profile-icon to ~/.face ### Issues - Once the profile is update, the user must manually reload the shell by restarting the shell session. **NOTE:** Make sure to chmod +x the picker.sh before using. Dependencies: - zenity
This commit is contained in:
parent
fcbcffc782
commit
9308c9b67f
2 changed files with 79 additions and 8 deletions
|
|
@ -19,17 +19,67 @@ Row {
|
|||
radius: Appearance.rounding.full
|
||||
color: Colours.palette.m3surfaceContainerHigh
|
||||
|
||||
MaterialIcon {
|
||||
anchors.centerIn: parent
|
||||
|
||||
text: "person"
|
||||
fill: 1
|
||||
font.pointSize: (info.implicitHeight / 2) || 1
|
||||
}
|
||||
|
||||
CachingImage {
|
||||
anchors.fill: parent
|
||||
path: `${Paths.home}/.face`
|
||||
fillMode: Image.PreserveAspectCrop
|
||||
smooth: true
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: overlay
|
||||
anchors.fill: parent
|
||||
radius: avatarRect.radius
|
||||
color: Qt.rgba(0, 0, 0, 0.4)
|
||||
opacity: mouseArea.containsMouse ? 1.0 : 0.0
|
||||
visible: opacity > 0
|
||||
Behavior on opacity {
|
||||
NumberAnimation {
|
||||
duration: 300
|
||||
easing.type: Easing.InOutQuad
|
||||
}
|
||||
}
|
||||
|
||||
MaterialIcon {
|
||||
anchors.centerIn: parent
|
||||
text: "photo_camera"
|
||||
color: "white"
|
||||
font.pointSize: info.implicitHeight / 4
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: mouseArea
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
onClicked: avatarUpdateProc.running = true
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
}
|
||||
|
||||
Process {
|
||||
id: avatarUpdateProc
|
||||
running: false
|
||||
command: [`${Paths.home}/.local/share/caelestia/shell/scripts/caelestia-avatar-picker.sh`]
|
||||
|
||||
stdout: SplitParser {
|
||||
onRead: {
|
||||
notifyProc.running = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Process {
|
||||
id: notifyProc
|
||||
running: false
|
||||
command: [
|
||||
"notify-send",
|
||||
"-u", "low",
|
||||
"-i", "dialog-information-symbolic",
|
||||
"Profile Updated",
|
||||
"Your avatar has been successfully changed.",
|
||||
"-a", "Shell",
|
||||
"-A", "OK=Got it!"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
21
scripts/caelestia-avatar-picker.sh
Executable file
21
scripts/caelestia-avatar-picker.sh
Executable file
|
|
@ -0,0 +1,21 @@
|
|||
#!/bin/bash
|
||||
|
||||
export DISPLAY=${DISPLAY:-:0}
|
||||
export DBUS_SESSION_BUS_ADDRESS=${DBUS_SESSION_BUS_ADDRESS:-"unix:path=/run/user/$UID/bus"}
|
||||
|
||||
# Pick an image file with zenity
|
||||
FILE=$(zenity --file-selection --file-filter="Images | *.png *.jpg *.jpeg *.webp")
|
||||
|
||||
# Exit if cancelled
|
||||
[ -z "$FILE" ] && exit 1
|
||||
|
||||
# Deletes existing ~/.face & caches
|
||||
rm -f "$HOME/.face"
|
||||
rm -f "$HOME/.cache/caelestia/thumbnails/@0x0-exact.png"
|
||||
rm -f "$HOME/.cache/caelestia/thumbnails/@93x93-exact.png"
|
||||
rm -f "$HOME/.cache/caelestia/thumbnails/@93x94-exact.png"
|
||||
rm -f "$HOME/.cache/caelestia/thumbnails/@94x94-exact.png"
|
||||
|
||||
cp "$FILE" "$HOME/.face"
|
||||
|
||||
echo "$HOME/.face"
|
||||
Loading…
Add table
Reference in a new issue