update all components

This commit is contained in:
2026-08-11 21:59:25 +02:00
parent 81efd52a5e
commit 0f0d04af63
9 changed files with 1111 additions and 307 deletions

108
install.sh Normal file → Executable file
View File

@@ -9,22 +9,110 @@ LEGACY_SERVICE_MENU_DIR="$HOME/.local/share/kservices5/ServiceMenus"
# Create necessary directories
mkdir -p "$INSTALL_DIR" "$APP_DIR" "$SERVICE_MENU_DIR" "$LEGACY_SERVICE_MENU_DIR"
# 1. Install the script
# 1. Install the scripts
cp uploader.sh "$INSTALL_DIR/kde-uploader"
chmod +x "$INSTALL_DIR/kde-uploader"
# 2. Install standard application entry (for Spectacle)
sed "s|__EXEC_PATH__|$INSTALL_DIR/kde-uploader|g" kde-uploader.desktop > "$APP_DIR/kde-uploader.desktop"
chmod +x "$APP_DIR/kde-uploader.desktop"
update-desktop-database "$APP_DIR" &> /dev/null
cp gui.py "$INSTALL_DIR/kde-uploader-gui"
chmod +x "$INSTALL_DIR/kde-uploader-gui"
# 3. Install KDE Service Menu entry (for Dolphin)
sed "s|__EXEC_PATH__|$INSTALL_DIR/kde-uploader|g" kde-uploader-servicemenu.desktop > "$SERVICE_MENU_DIR/kde-uploader-servicemenu.desktop"
mkdir -p "$HOME/.local/share/icons/hicolor/scalable/apps"
mkdir -p "$HOME/.local/share/pixmaps"
# Generate multi-resolution PNG icons (32x32, 48x48, 64x64, 128x128, 256x256) for KRunner search compatibility
python3 -c '
import os
from PySide6.QtGui import QImage, QPainter
from PySide6.QtSvg import QSvgRenderer
try:
renderer = QSvgRenderer("icon_app.svg")
sizes = [32, 48, 64, 128, 256]
for sz in sizes:
dir_path = f"'$HOME'/.local/share/icons/hicolor/{sz}x{sz}/apps"
os.makedirs(dir_path, exist_ok=True)
img = QImage(sz, sz, QImage.Format_ARGB32)
img.fill(0)
p = QPainter(img)
renderer.render(p)
p.end()
img.save(os.path.join(dir_path, "f0ckm-uploader.png"))
img_48 = QImage(48, 48, QImage.Format_ARGB32)
img_48.fill(0)
p = QPainter(img_48)
renderer.render(p)
p.end()
img_48.save("'$HOME'/.local/share/pixmaps/f0ckm-uploader.png")
except Exception as e:
pass
' &> /dev/null
if [ -f icon_app.svg ]; then
cp icon_app.svg "$INSTALL_DIR/icon_app.svg"
cp icon_app.svg "$HOME/.local/share/icons/hicolor/scalable/apps/f0ckm-uploader.svg"
elif [ -f icon.svg ]; then
cp icon.svg "$HOME/.local/share/icons/hicolor/scalable/apps/f0ckm-uploader.svg"
fi
if [ -f icon.svg ]; then
cp icon.svg "$INSTALL_DIR/icon.svg"
fi
if [ -f icon_light.svg ]; then
cp icon_light.svg "$INSTALL_DIR/icon_light.svg"
fi
if [ -f .env ]; then
cp .env "$INSTALL_DIR/.env"
fi
# Clean up any stale auto-generated desktop entries
rm -f "$APP_DIR/net.local.spectacle_uploader.sh.desktop"
ICON_PATH="f0ckm-uploader"
# 2. Install standard application entry (for Spectacle - hidden from main menu)
sed -e "s|__EXEC_PATH__|$INSTALL_DIR/kde-uploader-gui --spectacle|g" -e "s|__ICON_PATH__|$ICON_PATH|g" kde-uploader.desktop > "$APP_DIR/kde-uploader.desktop"
chmod +x "$APP_DIR/kde-uploader.desktop"
# 3. Install the GUI application entry (visible in main menu)
sed -e "s|__EXEC_PATH__|$INSTALL_DIR/kde-uploader-gui|g" -e "s|__ICON_PATH__|$ICON_PATH|g" kde-uploader-gui.desktop > "$APP_DIR/kde-uploader-gui.desktop"
chmod +x "$APP_DIR/kde-uploader-gui.desktop"
update-desktop-database "$APP_DIR" &> /dev/null
gtk-update-icon-cache -f -t "$HOME/.local/share/icons/hicolor" &> /dev/null || true
kbuildsycoca6 --noincremental &> /dev/null || kbuildsycoca5 --noincremental &> /dev/null || true
# 4. Install KDE Service Menu entry (for Dolphin)
sed "s|__EXEC_PATH__|$INSTALL_DIR/kde-uploader-gui --upload|g" kde-uploader-servicemenu.desktop > "$SERVICE_MENU_DIR/kde-uploader-servicemenu.desktop"
chmod +x "$SERVICE_MENU_DIR/kde-uploader-servicemenu.desktop"
sed "s|__EXEC_PATH__|$INSTALL_DIR/kde-uploader|g" kde-uploader-servicemenu.desktop > "$LEGACY_SERVICE_MENU_DIR/kde-uploader-servicemenu.desktop"
sed "s|__EXEC_PATH__|$INSTALL_DIR/kde-uploader-gui --upload|g" kde-uploader-servicemenu.desktop > "$LEGACY_SERVICE_MENU_DIR/kde-uploader-servicemenu.desktop"
chmod +x "$LEGACY_SERVICE_MENU_DIR/kde-uploader-servicemenu.desktop"
# 5. Migrate config to config.json if not present
CONFIG_DIR="$HOME/.config/f0ckm-uploader"
CONFIG_FILE="$CONFIG_DIR/config.json"
if [ ! -f "$CONFIG_FILE" ]; then
mkdir -p "$CONFIG_DIR"
# Fallback to the default key in script if no config file is found
cat <<EOF > "$CONFIG_FILE"
{
"api_url": "",
"api_key": "",
"default_rating": "",
"default_tags": "",
"default_is_oc": false,
"enable_notifications": true,
"show_progress_dialog": true,
"autostart": false
}
EOF
echo "Initial configuration created at $CONFIG_FILE"
fi
echo "Installation complete!"
echo "The script has been installed to $INSTALL_DIR/kde-uploader"
echo "You can now right click files in Dolphin and find 'Upload to Custom API' in the Actions menu."
echo "In Spectacle, you should find 'Upload to Custom API' in the Export or Share menu."
echo "The GUI has been installed to $INSTALL_DIR/kde-uploader-gui"
echo "You can launch the GUI uploader from your applications menu (f0ckm Uploader GUI)."
echo "You can now right click files in Dolphin and find 'Upload to f0ckm' in the Actions menu."
echo "In Spectacle, you should find 'Upload to f0ckm' in the Export or Share menu."