forked from lxcafe/lxcafe
Compare commits
21 Commits
9df87c1ac7
...
v11
| Author | SHA1 | Date | |
|---|---|---|---|
| ab7d3e16ca | |||
| bced79fd70 | |||
| efbbedf5ae | |||
| affa7119ee | |||
| 3a6537c7c0 | |||
| b1f7c675c6 | |||
| 63e26040fa | |||
| fb40815e6c | |||
| b9693a455a | |||
| 5bffe8f68f | |||
| c3828b8112 | |||
| 3c014a480c | |||
| 556ead922f | |||
| fb04ecd1ed | |||
| 375ad53a4d | |||
| 1c10ae2610 | |||
| 1b262b55d7 | |||
| 34d6707ba3 | |||
| bc1e17ec04 | |||
| 3c6856d68b | |||
| fc1554cee9 |
@@ -0,0 +1,140 @@
|
|||||||
|
# AGENTS.md
|
||||||
|
|
||||||
|
Guidelines for agentic coding assistants working in this repository.
|
||||||
|
|
||||||
|
## Repository Overview
|
||||||
|
|
||||||
|
- **Type**: Shell script project for Linux Mint XFCE post-installation setup
|
||||||
|
- **Main scripts**: `post_installation_script/` - Linux Mint XFCE post-installation automation
|
||||||
|
- **Testing**: `post_installation_script_test/` - Docker/Podman container-based testing
|
||||||
|
- **No build system**: Pure shell scripts, no package.json/Makefile/Cargo.toml
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1) Build / Lint / Test Commands
|
||||||
|
|
||||||
|
### Shell Scripts
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Syntax check only (no execution)
|
||||||
|
bash -n path/to/script.sh
|
||||||
|
|
||||||
|
# Trace execution (shows each command as it runs)
|
||||||
|
bash -x path/to/script.sh
|
||||||
|
|
||||||
|
# Lint with shellcheck (install with: apt install shellcheck)
|
||||||
|
shellcheck post_installation_script/*.sh
|
||||||
|
|
||||||
|
# Run individual script
|
||||||
|
bash path/to/script.sh
|
||||||
|
./script.sh # requires executable bit: chmod +x script.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Container-Based Testing
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Build test image (Ubuntu 22.04 with useful utilities)
|
||||||
|
cd post_installation_script_test
|
||||||
|
bash 01_create_image.sh
|
||||||
|
|
||||||
|
# Start interactive container (auto-removed on exit)
|
||||||
|
bash 02_start_container_with_image.sh
|
||||||
|
|
||||||
|
# Inside container - source scripts mounted at /workspace:
|
||||||
|
bash /workspace/<scriptName>.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Single Test Commands (for future languages)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Python: pytest path/to/test.py::TestClass::test_method -q
|
||||||
|
# Node/Jest: npx jest path/to/file.test.js -t "test name regex"
|
||||||
|
# Node/Vitest: npx vitest run path/to/file.spec.ts -t "test name"
|
||||||
|
# Go: go test ./pkg/name -run TestFunctionName
|
||||||
|
# Rust: cargo test test_name -- --exact
|
||||||
|
# Java/Maven: mvn -Dtest=ClassName#methodName test
|
||||||
|
# .NET: dotnet test --filter FullyQualifiedName~Namespace.ClassName.MethodName
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2) Code Style Guidelines
|
||||||
|
|
||||||
|
### Shell Scripts (Primary Language)
|
||||||
|
|
||||||
|
- **Shebang**: Use `#!/bin/bash` (not `/bin/sh`) for bash-specific features
|
||||||
|
- **Safety**: Use `set -euo pipefail` at script start
|
||||||
|
- **Quotes**: Always use double quotes for variable expansion: `"$VAR"`, never bare `$VAR`
|
||||||
|
- **Conditionals**: Use `[[ ]]` for tests, not `[ ]`
|
||||||
|
- **Variables**: Use `readonly` for constants, `local` for function-scoped variables
|
||||||
|
- **Performance**: Prefer functions over subshells when possible
|
||||||
|
- **Naming**: Use descriptive function names: `install_fonts()`, `configure_panel()`, `prompt_user()`
|
||||||
|
- **Errors**: Write to stderr: `echo "Error: $msg" >&2`
|
||||||
|
- **Exit codes**: 0=success, 1=general error, 2=invalid usage
|
||||||
|
- **Comments**: Avoid unless explaining non-obvious behavior
|
||||||
|
- **Constants**: Define at top of script, UPPER_SNAKE_CASE
|
||||||
|
|
||||||
|
### General Conventions
|
||||||
|
|
||||||
|
- **Formatting**: Use automated formatters (Black/Prettier/gofmt/rustfmt) - commit formatted code
|
||||||
|
- **Types**: Prefer explicit typing (TypeScript types, Python type hints, Go static types)
|
||||||
|
- **Naming**:
|
||||||
|
- snake_case: variables, functions (`user_id`, `calculate_total`)
|
||||||
|
- PascalCase: types/classes (`UserService`, `HttpClient`)
|
||||||
|
- UPPER_SNAKE_CASE: constants (`MAX_RETRIES`, `API_BASE_URL`)
|
||||||
|
- **Imports**: Keep minimal, group logically (stdlib → third-party → local), blank line between groups
|
||||||
|
- **Functions**: Keep small (<40 lines), single responsibility, pure where possible
|
||||||
|
- **Error handling**: Fail fast with context, avoid silent failures, use typed errors where supported
|
||||||
|
- **Tests**: Deterministic, mock external I/O, explicit names like `test_should_return_400_when_missing_field`
|
||||||
|
- **Resources**: Always clean up with `finally`/`defer` equivalents
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3) Security
|
||||||
|
|
||||||
|
- Never commit secrets, API keys, credentials, or tokens
|
||||||
|
- Use environment variables for sensitive values
|
||||||
|
- Validate and sanitize all external input
|
||||||
|
- Run linting (`shellcheck`) before committing shell scripts
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4) Commit Guidelines
|
||||||
|
|
||||||
|
- Make small, focused commits with descriptive messages
|
||||||
|
- Include formatter command in commit message if auto-formatting
|
||||||
|
- When changing behavior, add or update tests
|
||||||
|
- Run full test suite before opening PRs
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5) Cursor / Copilot Rules
|
||||||
|
|
||||||
|
- `.cursor/rules/`: Not present
|
||||||
|
- `.cursorrules`: Not present
|
||||||
|
- `.github/copilot-instructions.md`: Not present
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6) Repo Housekeeping
|
||||||
|
|
||||||
|
- Store session logs in `.agents/sessions/` for reference
|
||||||
|
- When adding new languages, update this file with exact build/test commands
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Files Referenced
|
||||||
|
|
||||||
|
- `README.md` - Project overview
|
||||||
|
- `post_installation_script/README.md` - Script usage and details
|
||||||
|
- `post_installation_script_test/README.md` - Container testing instructions
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Quick Checklist for Changes
|
||||||
|
|
||||||
|
- [ ] Run `shellcheck` on shell scripts before committing
|
||||||
|
- [ ] Verify `bash -n` syntax check passes
|
||||||
|
- [ ] Test script changes in container first
|
||||||
|
- [ ] No secrets in code - use environment variables
|
||||||
|
- [ ] Run tests if added for new functionality
|
||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
# OS
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
*~
|
||||||
|
|
||||||
|
# IDE
|
||||||
|
.idea/
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*~
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
# Test containers
|
||||||
|
*.tar.gz
|
||||||
|
fonts-main/
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# Temporary files
|
||||||
|
tmp/
|
||||||
|
temp/
|
||||||
|
*.tmp
|
||||||
|
|
||||||
|
# agent specific sessions
|
||||||
|
.agents/sessions/*
|
||||||
Executable
+124
@@ -0,0 +1,124 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
question_answered_with_yes() {
|
||||||
|
local prompt="$1"
|
||||||
|
local ans
|
||||||
|
printf '%b\n Enter y or n and press Enter,\n abort with any other key ... [y/N]: ' "$prompt"
|
||||||
|
read -r ans
|
||||||
|
case "$ans" in
|
||||||
|
y|Y) return 0 ;;
|
||||||
|
n|N|"") return 1 ;;
|
||||||
|
*) echo "Aborted."; exit 1 ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -n "$(git status --porcelain)" ]; then
|
||||||
|
echo "Error: You have uncommitted local changes."
|
||||||
|
echo "Please commit or stash them before releasing."
|
||||||
|
echo ""
|
||||||
|
echo "Uncommitted files:"
|
||||||
|
git status --short
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Fetching latest changes..."
|
||||||
|
git fetch origin
|
||||||
|
|
||||||
|
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
||||||
|
if [ "$CURRENT_BRANCH" = "main" ]; then
|
||||||
|
echo "Pulling latest from main..."
|
||||||
|
git pull origin main || true
|
||||||
|
else
|
||||||
|
echo "Error: You must be on the main branch to create a release."
|
||||||
|
echo "Current branch: $CURRENT_BRANCH"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
VERSION_FILE="VERSION"
|
||||||
|
SCRIPT_FILE="post_installation_script/Nachinstallationsarbeiten_LC_Esslingen.sh"
|
||||||
|
|
||||||
|
if [ ! -f "$VERSION_FILE" ]; then
|
||||||
|
echo "Error: $VERSION_FILE not found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
CURRENT_VERSION=$(cat "$VERSION_FILE" | tr -d '\n')
|
||||||
|
|
||||||
|
if [ ! -f "$SCRIPT_FILE" ]; then
|
||||||
|
echo "Error: $SCRIPT_FILE not found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
CURRENT_MAJOR=${CURRENT_VERSION#v}
|
||||||
|
|
||||||
|
if ! [[ "$CURRENT_VERSION" =~ ^v[0-9]+$ ]]; then
|
||||||
|
echo "Error: Invalid version format in $VERSION_FILE. Expected v0, v1, v2, etc."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
NEXT_VERSION=$((CURRENT_MAJOR + 1))
|
||||||
|
NEXT_VERSION_STR="v$NEXT_VERSION"
|
||||||
|
|
||||||
|
RELEASE_BRANCH="release/$NEXT_VERSION_STR"
|
||||||
|
|
||||||
|
if git ls-remote --heads origin "$RELEASE_BRANCH" 2>/dev/null | grep -q .; then
|
||||||
|
echo "Error: Branch $RELEASE_BRANCH already exists on remote."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if git rev-parse "$RELEASE_BRANCH" >/dev/null 2>&1; then
|
||||||
|
echo "Branch $RELEASE_BRANCH exists locally."
|
||||||
|
if question_answered_with_yes "Delete local branch and continue?"; then
|
||||||
|
git branch -D "$RELEASE_BRANCH"
|
||||||
|
else
|
||||||
|
echo "Release aborted."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Current version: $CURRENT_VERSION"
|
||||||
|
echo "Proposed version: $NEXT_VERSION_STR"
|
||||||
|
echo "Release branch: $RELEASE_BRANCH"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
if ! question_answered_with_yes "Confirm release version $NEXT_VERSION_STR?"; then
|
||||||
|
echo "Release aborted."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Creating release branch $RELEASE_BRANCH..."
|
||||||
|
git checkout -b "$RELEASE_BRANCH"
|
||||||
|
|
||||||
|
echo "$NEXT_VERSION_STR" > "$VERSION_FILE"
|
||||||
|
|
||||||
|
sed -i.bak "s/^SCRIPT_VERSION=.*/SCRIPT_VERSION=\"$NEXT_VERSION_STR\"/" "$SCRIPT_FILE"
|
||||||
|
if [ -f "${SCRIPT_FILE}.bak" ]; then
|
||||||
|
rm "${SCRIPT_FILE}.bak"
|
||||||
|
fi
|
||||||
|
|
||||||
|
git add "$VERSION_FILE" "$SCRIPT_FILE"
|
||||||
|
git commit -m "Release $NEXT_VERSION_STR"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Release $NEXT_VERSION_STR prepared on branch $RELEASE_BRANCH."
|
||||||
|
if question_answered_with_yes "Push release branch to origin?"; then
|
||||||
|
git push -u origin "$RELEASE_BRANCH"
|
||||||
|
echo ""
|
||||||
|
echo "Branch pushed to origin."
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
echo "Release prepared locally. Push manually with:"
|
||||||
|
echo " git push -u origin $RELEASE_BRANCH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Next steps:"
|
||||||
|
echo "1. Create a PR from $RELEASE_BRANCH to main in Gitea via web UI"
|
||||||
|
echo " - Via web: Go to your git hosting and create a PR"
|
||||||
|
echo " - Or: gh pr create --base main --head $RELEASE_BRANCH"
|
||||||
|
echo ""
|
||||||
|
echo "2. Execute script '02_finalise_release.sh' to create a tag in repo"
|
||||||
|
echo ""
|
||||||
|
echo "3. Create a release from the new tag in Gitea via web UI"
|
||||||
Executable
+61
@@ -0,0 +1,61 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
question_answered_with_yes() {
|
||||||
|
local prompt="$1"
|
||||||
|
local ans
|
||||||
|
printf '%b\n Enter y or n and press Enter,\n abort with any other key ... [y/N]: ' "$prompt"
|
||||||
|
read -r ans
|
||||||
|
case "$ans" in
|
||||||
|
y|Y) return 0 ;;
|
||||||
|
n|N|"") return 1 ;;
|
||||||
|
*) echo "Aborted."; exit 1 ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Fetching latest from origin..."
|
||||||
|
git fetch origin
|
||||||
|
git checkout main
|
||||||
|
git pull origin main
|
||||||
|
|
||||||
|
VERSION_FILE="VERSION"
|
||||||
|
CURRENT_VERSION=$(cat "$VERSION_FILE" | tr -d '\n')
|
||||||
|
|
||||||
|
echo "Finalising release of version: $CURRENT_VERSION"
|
||||||
|
|
||||||
|
RELEASE_BRANCH="release/$CURRENT_VERSION"
|
||||||
|
|
||||||
|
_local_exists=false
|
||||||
|
if git rev-parse "$RELEASE_BRANCH" >/dev/null 2>&1; then
|
||||||
|
_local_exists=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
_remote_exists=false
|
||||||
|
if git ls-remote --heads origin "$RELEASE_BRANCH" 2>/dev/null | grep -q .; then
|
||||||
|
_remote_exists=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$_local_exists" = "true" ] || [ "$_remote_exists" = "true" ]; then
|
||||||
|
if question_answered_with_yes "Delete release branch $RELEASE_BRANCH (local and remote)?"; then
|
||||||
|
[ "$_local_exists" = "true" ] && git branch -D "$RELEASE_BRANCH"
|
||||||
|
[ "$_remote_exists" = "true" ] && git push origin --delete "$RELEASE_BRANCH"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! question_answered_with_yes "Create tag $CURRENT_VERSION on main?"; then
|
||||||
|
echo "Tag creation aborted."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
git tag -a "$CURRENT_VERSION" -m "Release $CURRENT_VERSION"
|
||||||
|
|
||||||
|
if question_answered_with_yes "Push tag to origin?"; then
|
||||||
|
git push origin "$CURRENT_VERSION"
|
||||||
|
echo ""
|
||||||
|
echo "Tag $CURRENT_VERSION pushed to origin."
|
||||||
|
echo "Gitea will create a release from the tag."
|
||||||
|
else
|
||||||
|
echo "Tag created locally. Push manually with:"
|
||||||
|
echo " git push origin $CURRENT_VERSION"
|
||||||
|
fi
|
||||||
@@ -1,380 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
|
|
||||||
cMode="KeineSimulation"
|
|
||||||
cMode="simulation"
|
|
||||||
bIsVlcInstalled=false
|
|
||||||
|
|
||||||
|
|
||||||
echo "
|
|
||||||
###################################
|
|
||||||
#### Nachinstallationsarbeiten ####
|
|
||||||
###################################
|
|
||||||
"
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#
|
|
||||||
if [ "$cMode" != "KeineSimulation" ]; then
|
|
||||||
echo " simulation sudo apt-get update"
|
|
||||||
else
|
|
||||||
sudo apt-get update
|
|
||||||
fi
|
|
||||||
|
|
||||||
sSuffixDate=$(date '+%Y-%m-%d_%H:%M:%S')
|
|
||||||
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
echo "A) #### 64 bit Mint XFCE ####"
|
|
||||||
echo "B) #### 32 bit Debian XFCE ####"
|
|
||||||
echo "q) Quit. Abbruch"
|
|
||||||
echo "sonst <enter> zum überspringen."
|
|
||||||
read -p "
|
|
||||||
Geben Sie a oder b ein und die Eingabetaste,
|
|
||||||
Abbruch mit jeder anderen Taste ... " option;
|
|
||||||
case "$option" in
|
|
||||||
[aAmM])
|
|
||||||
echo "A) #### 64 bit Mint XFCE ####"
|
|
||||||
if [ "$cMode" != "KeineSimulation" ]; then
|
|
||||||
echo "simulation
|
|
||||||
sudo apt -y install xfce4-goodies clementine vlc htop hardinfo font-manager asunder gtkhash pcmanfm
|
|
||||||
";
|
|
||||||
bIsVlcInstalled=true
|
|
||||||
else
|
|
||||||
sudo apt -y install xfce4-goodies clementine vlc htop hardinfo font-manager asunder gtkhash pcmanfm
|
|
||||||
bIsVlcInstalled=true
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
[bBdD])
|
|
||||||
echo "#### 32 bit Debian XFCE ####"
|
|
||||||
echo "## sources list"
|
|
||||||
if [ "$cMode" != "KeineSimulation" ]; then
|
|
||||||
echo "### Paketquellen eintragen:"
|
|
||||||
echo " cp /etc/apt/sources.list /etc/apt/sources.list_" $sSuffixDate
|
|
||||||
echo "simulation deb http://deb.debian.org/debian bookworm main contrib non-free > /etc/apt/sources.list"
|
|
||||||
echo "simulation deb-src http://deb.debian.org/debian bookworm main contrib non-free >> /etc/apt/sources.list"
|
|
||||||
echo "simulation deb http://deb.debian.org/debian-security/ bookworm-security main contrib non-free >> /etc/apt/sources.list"
|
|
||||||
echo "simulation deb-src http://deb.debian.org/debian-security/ bookworm-security main contrib non-free >> /etc/apt/sources.list"
|
|
||||||
echo "simulation deb http://deb.debian.org/debian bookworm-updates main contrib non-free >> /etc/apt/sources.list"
|
|
||||||
echo "simulation deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free >> /etc/apt/sources.list"
|
|
||||||
echo "### zusätzliche Standardprogramme installieren:"
|
|
||||||
echo "simulation sudo apt install xfce4-goodies clementine vlc htop hardinfo font-manager asunder gtkhash pcmanfm timeshift gnome-system-tools gnome-disk-utility inxi "
|
|
||||||
bIsVlcInstalled=true
|
|
||||||
echo " FIN #### 64 bit Mint XFCE ####"
|
|
||||||
else
|
|
||||||
echo "### Paketquellen eintragen:"
|
|
||||||
cp /etc/apt/sources.list /etc/apt/sources.list_$sSuffixDate
|
|
||||||
deb http://deb.debian.org/debian bookworm main contrib non-free > /etc/apt/sources.list
|
|
||||||
deb-src http://deb.debian.org/debian bookworm main contrib non-free >> /etc/apt/sources.list
|
|
||||||
deb http://deb.debian.org/debian-security/ bookworm-security main contrib non-free >> /etc/apt/sources.list
|
|
||||||
deb-src http://deb.debian.org/debian-security/ bookworm-security main contrib non-free >> /etc/apt/sources.list
|
|
||||||
deb http://deb.debian.org/debian bookworm-updates main contrib non-free >> /etc/apt/sources.list
|
|
||||||
deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free >> /etc/apt/sources.list
|
|
||||||
echo "### zusätzliche Standardprogramme installieren:"
|
|
||||||
sudo apt install xfce4-goodies clementine vlc htop hardinfo font-manager asunder gtkhash pcmanfm timeshift gnome-system-tools gnome-disk-utility inxi
|
|
||||||
bIsVlcInstalled=true
|
|
||||||
echo " FIN #### 32 bit Debian XFCE ####"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
q) echo "Quit. Abbruch"
|
|
||||||
exit
|
|
||||||
;;
|
|
||||||
*) echo "Unknown parameter"
|
|
||||||
esac
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo ""
|
|
||||||
echo "#### alle Systeme ####"
|
|
||||||
#
|
|
||||||
echo "### Taskleiste mit XFCE-Applets für Systemauslastung und 2x Netzwerkmonitor (LAN + WLAN) ergänzen und konfigurieren"
|
|
||||||
echo " leider fehlt die automatisierung noch "
|
|
||||||
echo " Manuelle Arbeit notwendig "
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
echo "#### nur auf Wunsch / bei Bedarf ####"
|
|
||||||
#
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
### Sensoren ###
|
|
||||||
# alle Abfragen können mit "ja" beantwortet werden!
|
|
||||||
read -p " ### Sensoren ###
|
|
||||||
Geben Sie j oder n ein und die Eingabetaste,
|
|
||||||
Abbruch mit jeder anderen Taste ... " kommando;
|
|
||||||
if [ $kommando == 'j' -o $kommando == 'J' -o $kommando == 'ja' -o $kommando == 'y' -o $kommando == 'Y' ]; then
|
|
||||||
echo "### Sensoren ###"
|
|
||||||
if [ "$cMode" != "KeineSimulation" ]; then
|
|
||||||
echo " simulation "
|
|
||||||
echo " apt -y Automatic yes to prompts; assume "yes" as answer to all prompts and run non-interactively."
|
|
||||||
echo "simulation sudo apt -y install lm-sensors psensor"
|
|
||||||
echo "simulation sudo sensors-detect"
|
|
||||||
echo "# alle Abfragen können mit "ja" beantwortet werden!"
|
|
||||||
echo "simulation sudo service kmod start"
|
|
||||||
else
|
|
||||||
sudo apt install lm-sensors psensor
|
|
||||||
sudo sensors-detect
|
|
||||||
echo "# alle Abfragen können mit "ja" beantwortet werden!"
|
|
||||||
sudo service kmod start
|
|
||||||
echo "## dann psensor konfigurieren im Applet in der Taskleiste"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
if $bIsVlcInstalled; then
|
|
||||||
echo "### Kauf-DVDs abspielen ###"
|
|
||||||
read -p " ### Film DVDs ###
|
|
||||||
Geben Sie j oder n ein und die Eingabetaste,
|
|
||||||
Abbruch mit jeder anderen Taste ... " kommando;
|
|
||||||
if [ $kommando == 'j' -o $kommando == 'J' -o $kommando == 'ja' -o $kommando == 'y' -o $kommando == 'Y' ]; then
|
|
||||||
echo "### Sensoren ###"
|
|
||||||
if [ "$cMode" != "KeineSimulation" ]; then
|
|
||||||
echo " simulation "
|
|
||||||
echo "simulation sudo service kmod start"
|
|
||||||
echo " simulation sudo apt install libdvd-pkg"
|
|
||||||
echo " simulationsudo dpkg-reconfigure libdvd-pkg"
|
|
||||||
else
|
|
||||||
sudo apt install libdvd-pkg
|
|
||||||
sudo dpkg-reconfigure libdvd-pkg
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "Player Fehlt
|
|
||||||
## vlc muss installiert sein! Zum Kauf-DVDs abspielen"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
echo "### Schriften, falls Microsoft-Office-Dokumente weiterverwendet werden sollen oder Dokumentenaustausch mit Microsoft-Nutzern gewünscht ist ###
|
|
||||||
## frei verfügbare, alte Microsoft-Standardschriften installieren:"
|
|
||||||
|
|
||||||
read -p " ### M$ Schriften ###
|
|
||||||
Geben Sie j oder n ein und die Eingabetaste,
|
|
||||||
Abbruch mit jeder anderen Taste ... " kommando;
|
|
||||||
if [ $kommando == 'j' -o $kommando == 'J' -o $kommando == 'ja' -o $kommando == 'y' -o $kommando == 'Y' ]; then
|
|
||||||
echo "### M$ Schriften ###"
|
|
||||||
if [ "$cMode" != "KeineSimulation" ]; then
|
|
||||||
echo "simulation
|
|
||||||
sudo apt install ttf-mscorefonts-installer"
|
|
||||||
else
|
|
||||||
sudo apt install ttf-mscorefonts-installer
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
echo " ## freie Google-Schriften mit gleicher Laufweite wie aktuelle MS-Standardschriften installieren:"
|
|
||||||
read -p " ### Google Schriften ###
|
|
||||||
Geben Sie j oder n ein und die Eingabetaste,
|
|
||||||
Abbruch mit jeder anderen Taste ... " kommando;
|
|
||||||
if [ $kommando == 'j' -o $kommando == 'J' -o $kommando == 'ja' -o $kommando == 'y' -o $kommando == 'Y' ]; then
|
|
||||||
echo
|
|
||||||
echo "### Google Schriften ###"
|
|
||||||
if [ "$cMode" != "KeineSimulation" ]; then
|
|
||||||
|
|
||||||
_gf="google-fonts"
|
|
||||||
fGoogleSchriften=./$_gf".tar.gz"
|
|
||||||
if [ ! -f "$fGoogleSchriften" ]; then
|
|
||||||
echo
|
|
||||||
echo "$fGoogleSchriften nicht gefunden."
|
|
||||||
echo " soll das Archiv "google-fonts.tar.gz" von Github runter geladen werden ca. 1GB gross! "
|
|
||||||
read -p " ### Download Google Schriften ### j/n: " runterLaden;
|
|
||||||
if [ $runterLaden == 'j' -o $runterLaden == 'J' -o $runterLaden == 'ja' -o $runterLaden == 'y' -o $runterLaden == 'Y' ]; then
|
|
||||||
echo " Download Google Schriften ###"
|
|
||||||
echo "simulation
|
|
||||||
_wgeturl=https://github.com/google/fonts/archive/main.tar.gz
|
|
||||||
_gf=google-fonts
|
|
||||||
o Connecting to Github server to download fonts...
|
|
||||||
wget $_wgeturl -O $_gf.tar.gz"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f "$fGoogleSchriften" ]; then
|
|
||||||
echo
|
|
||||||
echo "Extracting the downloaded archive..."
|
|
||||||
echo " simulationtar -zxvf $_gf.tar.gz"
|
|
||||||
echo "Creating the /usr/share/fonts/truetype/$_gf folder"
|
|
||||||
echo " simulationsudo mkdir -p /usr/share/fonts/truetype/$_gf"
|
|
||||||
echo "Installing all .ttf fonts in /usr/share/fonts/truetype/$_gf"
|
|
||||||
echo " simulationfind $PWD/fonts-main/ -name "*.ttf" -exec sudo install -m644 {} /usr/share/fonts/truetype/google-fonts/ \; "
|
|
||||||
echo "Updating the font cache"
|
|
||||||
echo " simulationfc-cache -f"
|
|
||||||
else
|
|
||||||
echo "Schriften Fehlen immer noch. Manuell runterladen und installieren"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# "Simulation"
|
|
||||||
else
|
|
||||||
# "KeineSimulation"
|
|
||||||
|
|
||||||
_gf="google-fonts"
|
|
||||||
fGoogleSchriften=./$_gf".tar.gz"
|
|
||||||
if [ ! -f "$fGoogleSchriften" ]; then
|
|
||||||
echo ""
|
|
||||||
echo "$fGoogleSchriften nicht gefunden."
|
|
||||||
echo " soll das Archiv "google-fonts.tar.gz" von Github runter geladen werden ca. 1GB gross! "
|
|
||||||
read -p " ### Download Google Schriften ### " runterLaden;
|
|
||||||
if [ $runterLaden == 'j' -o $runterLaden == 'J' -o $runterLaden == 'ja' -o $runterLaden == 'y' -o $runterLaden == 'Y' ]; then
|
|
||||||
_wgeturl="https://github.com/google/fonts/archive/main.tar.gz"
|
|
||||||
echo "Connecting to Github server to download fonts..."
|
|
||||||
wget $_wgeturl -O $_gf.tar.gz
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [ -f "$fGoogleSchriften" ]; then
|
|
||||||
echo
|
|
||||||
echo "$fGoogleSchriften nicht gefunden."
|
|
||||||
echo "Extracting the downloaded archive..."
|
|
||||||
tar -zxvf $_gf.tar.gz
|
|
||||||
echo "Creating the /usr/share/fonts/truetype/$_gf folder"
|
|
||||||
sudo mkdir -p /usr/share/fonts/truetype/$_gf
|
|
||||||
echo "Installing all .ttf fonts in /usr/share/fonts/truetype/$_gf"
|
|
||||||
find $PWD/fonts-main/ -name "*.ttf" -exec sudo install -m644 {} /usr/share/fonts/truetype/google-fonts/ \; || echo "An error occured, please run this script again."
|
|
||||||
echo "Updating the font cache"
|
|
||||||
fc-cache -f
|
|
||||||
echo "Done. Now you can delete the tarball file $_gf.tar.gz if you wish."
|
|
||||||
else
|
|
||||||
echo "Schriften Fehlen immer noch. Manuell runterladen und installieren"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# "KeineSimulation"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
echo "#### Chromium Browser installieren:"
|
|
||||||
read -p " ### Chromium ###
|
|
||||||
Geben Sie j oder n ein und die Eingabetaste,
|
|
||||||
Abbruch mit jeder anderen Taste ... " kommando;
|
|
||||||
if [ $kommando == 'j' -o $kommando == 'J' -o $kommando == 'ja' -o $kommando == 'y' -o $kommando == 'Y' ]; then
|
|
||||||
echo "### Chromium ###"
|
|
||||||
if [ "$cMode" != "KeineSimulation" ]; then
|
|
||||||
echo "simulation
|
|
||||||
sudo apt install chromium
|
|
||||||
sudo apt install chromium-browser
|
|
||||||
"
|
|
||||||
echo " tbd DateiName!?
|
|
||||||
## Gnome-Schlüsselbund-Fehlermeldung bei jedem Start von Chrome/Chromium beheben: Starter bzw. .desktop-Datei mit folgendem Parameter ergänzen:
|
|
||||||
## --password-store=basic "
|
|
||||||
else
|
|
||||||
sudo apt install chromium-browser
|
|
||||||
fi88=
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
echo "### Vivaldi Browser installieren:#### "
|
|
||||||
read -p " ### Vivaldi ###
|
|
||||||
Geben Sie j oder n ein und die Eingabetaste,
|
|
||||||
Abbruch mit jeder anderen Taste ... " kommando;
|
|
||||||
if [ $kommando == 'j' -o $kommando == 'J' -o $kommando == 'ja' -o $kommando == 'y' -o $kommando == 'Y' ]; then
|
|
||||||
echo "### ###"
|
|
||||||
if [ "$cMode" != "KeineSimulation" ]; then
|
|
||||||
echo "simulation
|
|
||||||
## nötige Zusatzpakete installieren
|
|
||||||
sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https curl -y
|
|
||||||
## key importieren
|
|
||||||
curl -fsSL https://repo.vivaldi.com/archive/linux_signing_key.pub | gpg --dearmor | sudo tee /usr/share/keyrings/vivaldi.gpg > /dev/null
|
|
||||||
## Repository hinzufügen
|
|
||||||
echo deb [arch=amd64,armhf signed-by=/usr/share/keyrings/vivaldi.gpg] https://repo.vivaldi.com/stable/deb/ stable main | sudo tee /etc/apt/sources.list.d/vivaldi.list
|
|
||||||
sudo apt update && sudo apt install vivaldi-stable"
|
|
||||||
echo " tbd DateiName!?
|
|
||||||
## Gnome-Schlüsselbund-Fehlermeldung bei jedem Start von Chrome/Chromium beheben: Starter bzw. .desktop-Datei mit folgendem Parameter ergänzen:
|
|
||||||
## --password-store=basic "
|
|
||||||
|
|
||||||
|
|
||||||
else
|
|
||||||
echo "## nötige Zusatzpakete installieren"
|
|
||||||
sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https curl -y
|
|
||||||
#
|
|
||||||
echo "## ## key importieren"
|
|
||||||
curl -fsSL https://repo.vivaldi.com/archive/linux_signing_key.pub | gpg --dearmor | sudo tee /usr/share/keyrings/vivaldi.gpg > /dev/null
|
|
||||||
#
|
|
||||||
echo "## ## Repository hinzufügen"
|
|
||||||
echo deb [arch=amd64,armhf signed-by=/usr/share/keyrings/vivaldi.gpg] https://repo.vivaldi.com/stable/deb/ stable main | sudo tee /etc/apt/sources.list.d/vivaldi.list
|
|
||||||
#
|
|
||||||
sudo apt update && sudo apt install vivaldi-stable
|
|
||||||
#
|
|
||||||
echo "## ## Gnome-Schlüsselbund-Fehlermeldung bei jedem Start von Chrome/Chromium beheben: Starter bzw. .desktop-Datei mit folgendem Parameter ergänzen: "
|
|
||||||
echo "## ## --password-store=basic"
|
|
||||||
#
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
echo "####Signal für Desktop (setzt Signalinstallation auf einem Android- Oder Apple-Gerät voraus!)#### "
|
|
||||||
read -p " ### Signal ###
|
|
||||||
Geben Sie j oder n ein und die Eingabetaste,
|
|
||||||
Abbruch mit jeder anderen Taste ... " kommando;
|
|
||||||
if [ $kommando == 'j' -o $kommando == 'J' -o $kommando == 'ja' -o $kommando == 'y' -o $kommando == 'Y' ]; then
|
|
||||||
echo "### ###"
|
|
||||||
if [ "$cMode" != "KeineSimulation" ]; then
|
|
||||||
echo "simulation
|
|
||||||
## zusätzliches Repository nötig!
|
|
||||||
#
|
|
||||||
## NOTE: These instructions only work for 64-bit Debian-based
|
|
||||||
## Linux distributions such as Ubuntu, Mint etc.
|
|
||||||
#
|
|
||||||
## key importieren
|
|
||||||
wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > signal-desktop-keyring.gpg
|
|
||||||
cat signal-desktop-keyring.gpg | sudo tee /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null
|
|
||||||
## Repository hinzufügen:
|
|
||||||
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/signal-desktop-keyring.gpg] https://updates.signal.org/desktop/apt xenial main' | sudo tee /etc/apt/sources.list.d/signal-xenial.list
|
|
||||||
sudo apt update && sudo apt install signal-desktop
|
|
||||||
|
|
||||||
"
|
|
||||||
else
|
|
||||||
echo "## zusätzliches Repository nötig!
|
|
||||||
## NOTE: These instructions only work for 64-bit Debian-based
|
|
||||||
## Linux distributions such as Ubuntu, Mint etc.
|
|
||||||
## key importieren
|
|
||||||
"
|
|
||||||
wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > signal-desktop-keyring.gpg
|
|
||||||
cat signal-desktop-keyring.gpg | sudo tee /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null
|
|
||||||
#
|
|
||||||
echo "## Repository hinzufügen:"
|
|
||||||
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/signal-desktop-keyring.gpg] https://updates.signal.org/desktop/apt xenial main' | sudo tee /etc/apt/sources.list.d/signal-xenial.list
|
|
||||||
sudo apt update && sudo apt install signal-desktop
|
|
||||||
#
|
|
||||||
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
echo "Skript ENDE"
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
echo "Manuelle Schritte"
|
|
||||||
echo
|
|
||||||
echo "### Taskleiste mit XFCE-Applets für Systemauslastung und 2x Netzwerkmonitor (LAN + WLAN) ergänzen und konfigurieren"
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
echo "Wenn
|
|
||||||
### Sensoren ###
|
|
||||||
installiert wurden
|
|
||||||
## dann psensor konfigurieren im Applet in der Taskleiste "
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
|
|
||||||
@@ -1,4 +1,59 @@
|
|||||||
# lxcafe Repository
|
# lxcafe Repository
|
||||||
|
|
||||||
|
Linux Mint post-installation scripts.
|
||||||
|
|
||||||
Ablage für Code Schnipsel
|
## Structure
|
||||||
|
|
||||||
|
- **post_installation_script/** - Main post-installation scripts for Linux Mint XFCE
|
||||||
|
- **post_installation_script_test/** - Docker based testing environment for script development
|
||||||
|
- **.agents/** - Agent instructions for AI-assisted development
|
||||||
|
|
||||||
|
See individual README files in each directory for detailed information on usage and development.
|
||||||
|
|
||||||
|
## Test post installation script
|
||||||
|
To test the full functionality of post-installation script in a safe, isolated environment, use VirtualBox or similar virtualization
|
||||||
|
software to create a virtual machine with Linux Mint XFCE. Then, copy the script to the virtual machine and run it there.
|
||||||
|
This allows you to test the script without affecting your main system.
|
||||||
|
You can also make use of snapshot feature of the virtualization software to easily revert to a clean state after testing,
|
||||||
|
e.g. state directly after Linux Mint installation, before running the post-installation script.
|
||||||
|
This way you can test the script multiple times without needing to reinstall Linux Mint each time.
|
||||||
|
|
||||||
|
## Release Process
|
||||||
|
|
||||||
|
This project uses a two-step release process.
|
||||||
|
|
||||||
|
### Versioning
|
||||||
|
- Version is stored in `VERSION` file (format: v0, v1, v2, ...)
|
||||||
|
- Major version increments only
|
||||||
|
- Script version stored in `SCRIPT_VERSION` variable
|
||||||
|
|
||||||
|
### Step 1: Prepare Release
|
||||||
|
- Make sure you are on main branch with no local changes. Script will abort otherwise
|
||||||
|
Run from repository root:
|
||||||
|
```bash
|
||||||
|
./01_prepare_release.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
The script will:
|
||||||
|
- Update VERSION file and SCRIPT_VERSION in the script
|
||||||
|
- Create a release branch (e.g., `release/v1`)
|
||||||
|
- Push the release branch
|
||||||
|
|
||||||
|
### After step 1 (manual)
|
||||||
|
- Create and merge PR from release branch to main
|
||||||
|
|
||||||
|
### Step 2: Finalize Release (After PR Merged)
|
||||||
|
Run from repository root:
|
||||||
|
```bash
|
||||||
|
./02_finalise_release.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
The script will:
|
||||||
|
- Create and push tag for release version to main
|
||||||
|
|
||||||
|
### After step 2 (manual)
|
||||||
|
- Create a release in gitea
|
||||||
|
|
||||||
|
### Requirements
|
||||||
|
- Clean working tree (no uncommitted changes)
|
||||||
|
- Git remote configured (origin)
|
||||||
@@ -0,0 +1,288 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
SCRIPT_VERSION="v11"
|
||||||
|
|
||||||
|
question_answered_with_yes() {
|
||||||
|
local prompt="$1"
|
||||||
|
local ans
|
||||||
|
printf '%b\n Geben Sie j oder n ein und die Eingabetaste,\n Abbruch mit jeder anderen Taste ... [j/N]: ' "$prompt"
|
||||||
|
read -r ans
|
||||||
|
case "$ans" in
|
||||||
|
j|J|ja|y|Y) return 0 ;;
|
||||||
|
n|N|"") return 1 ;;
|
||||||
|
*) echo "Abbruch."; exit 1 ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "
|
||||||
|
#####################################
|
||||||
|
#### Nachinstallationsarbeiten
|
||||||
|
#### Version: $SCRIPT_VERSION
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
#### Was tut dieses Skript? ####
|
||||||
|
|
||||||
|
# Vorausgesetzt wird eine Installation von Linux Mint (XFCE oder Cinnamon).
|
||||||
|
# Das Skript bietet -teilweise interaktiv- die Installation von zusätzlichen Programmen an, die Linux Mint nicht standardmässig mitbringt.
|
||||||
|
|
||||||
|
# Zu Beginn werden die folgenden zusätzlichen Programme in einem Schritt installiert:
|
||||||
|
#
|
||||||
|
# clementine (Audioplayer und Musikbibliothekverwaltung)
|
||||||
|
# vlc (weltbester Mediaplayer ;-))
|
||||||
|
# htop (Systemmonitortool)
|
||||||
|
# hardinfo (Übersicht der Systemeigenschaften)
|
||||||
|
# font-manager (Schriftarten verwalten)
|
||||||
|
# asunder (Audio-CDs in z.B. mp3-Dateien verwandeln (rippen))
|
||||||
|
# gtkhash (Prüfsummen von Dateien erstellen und überprüfen)
|
||||||
|
|
||||||
|
# Danach geht es interaktiv weiter.
|
||||||
|
"
|
||||||
|
#
|
||||||
|
|
||||||
|
sudo apt-get update
|
||||||
|
echo "#### 64 bit Mint - Es werden notwendige Programme für das Ausführen des Skripts installiert ####"
|
||||||
|
sudo apt -y install unzip
|
||||||
|
echo "#### 64 bit Mint - Es werden weitere hilfreiche Programme installiert ####"
|
||||||
|
sudo apt -y install clementine vlc htop hardinfo font-manager asunder gtkhash
|
||||||
|
|
||||||
|
sSuffixDate=$(date '+%Y-%m-%d_%H:%M:%S')
|
||||||
|
|
||||||
|
detect_desktop() {
|
||||||
|
if [ -n "$XDG_CURRENT_DESKTOP" ]; then
|
||||||
|
case "$XDG_CURRENT_DESKTOP" in
|
||||||
|
XFCE|Xfce|xfce) echo "xfce" ;;
|
||||||
|
X-Cinnamon|Cinnamon|cinnamon) echo "cinnamon" ;;
|
||||||
|
esac
|
||||||
|
elif [ -n "$DESKTOP_SESSION" ]; then
|
||||||
|
case "$DESKTOP_SESSION" in
|
||||||
|
*xfce*|*XFCE*) echo "xfce" ;;
|
||||||
|
*cinnamon*|*Cinnamon*) echo "cinnamon" ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
echo "### Desktop-Umgebung erkennen ###"
|
||||||
|
DETECTED_DESKTOP=$(detect_desktop)
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
|
||||||
|
if [ -z "$DETECTED_DESKTOP" ]; then
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
echo "Desktop-Umgebung konnte nicht erkannt werden."
|
||||||
|
echo "Bitte manuell auswählen:"
|
||||||
|
echo "1) XFCE"
|
||||||
|
echo "2) Cinnamon"
|
||||||
|
echo -n "Auswahl: "
|
||||||
|
read -r desktop_choice
|
||||||
|
case "$desktop_choice" in
|
||||||
|
1) DESKTOP="xfce" ;;
|
||||||
|
2) DESKTOP="cinnamon" ;;
|
||||||
|
*) echo "Ungültige Auswahl. Skript wird beendet."; exit 1 ;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
echo "Erkannte Desktop-Umgebung: $DETECTED_DESKTOP"
|
||||||
|
if question_answered_with_yes "Verwende erkannte Desktop-Umgebung?"; then
|
||||||
|
DESKTOP="$DETECTED_DESKTOP"
|
||||||
|
else
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
echo "Bitte manuell auswählen:"
|
||||||
|
echo "1) XFCE"
|
||||||
|
echo "2) Cinnamon"
|
||||||
|
echo -n "Auswahl: "
|
||||||
|
read -r desktop_choice
|
||||||
|
case "$desktop_choice" in
|
||||||
|
1) DESKTOP="xfce" ;;
|
||||||
|
2) DESKTOP="cinnamon" ;;
|
||||||
|
*) echo "Ungültige Auswahl. Skript wird beendet."; exit 1 ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$DESKTOP" in
|
||||||
|
xfce)
|
||||||
|
source "$SCRIPT_DIR/xfce/xfce.sh"
|
||||||
|
;;
|
||||||
|
cinnamon)
|
||||||
|
source "$SCRIPT_DIR/cinnamon/cinnamon.sh"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo ""
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
echo "#### nur auf Wunsch / bei Bedarf ####"
|
||||||
|
echo
|
||||||
|
### Sensoren ###
|
||||||
|
if question_answered_with_yes " ### Installiere Sensoren? ###"; then
|
||||||
|
echo "### Sensoren ###"
|
||||||
|
sudo apt install lm-sensors psensor
|
||||||
|
sudo sensors-detect
|
||||||
|
sudo service kmod start
|
||||||
|
if [ "$DESKTOP" = "xfce" ]; then
|
||||||
|
echo "## im Anschluss \"psensor\" konfigurieren im XFCE-Applet in der Taskleiste"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
echo "### Kauf-DVDs abspielen ###"
|
||||||
|
if question_answered_with_yes " ### Installiere Paket um Film DVDs abspielen zu können? ###"; then
|
||||||
|
echo "### Kauf-DVDs abspielen ###"
|
||||||
|
sudo apt install libdvd-pkg
|
||||||
|
sudo dpkg-reconfigure libdvd-pkg
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
echo "### Schriften, falls Microsoft-Office-Dokumente weiterverwendet werden sollen oder Dokumentenaustausch mit Microsoft-Nutzern gewünscht ist ###
|
||||||
|
## frei verfügbare, alte Microsoft-Standardschriften installieren:"
|
||||||
|
|
||||||
|
if question_answered_with_yes " ### Installiere M$ Schriften? ###"; then
|
||||||
|
echo "### M$ Schriften ###"
|
||||||
|
sudo apt install ttf-mscorefonts-installer
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
echo " ## Microsoft Aptos Schriftarten installieren:"
|
||||||
|
if question_answered_with_yes " ### Installiere Aptos Schriften? ###"; then
|
||||||
|
echo
|
||||||
|
echo "### Aptos Schriften ###"
|
||||||
|
|
||||||
|
_aptos_zip="/tmp/Microsoft Aptos Fonts.zip"
|
||||||
|
_aptos_url="https://download.microsoft.com/download/8/6/0/860a94fa-7feb-44ef-ac79-c072d9113d69/Microsoft%20Aptos%20Fonts.zip"
|
||||||
|
|
||||||
|
echo "Lade Aptos Schriften herunter..."
|
||||||
|
wget "$_aptos_url" -O "$_aptos_zip"
|
||||||
|
|
||||||
|
echo "Entpacke das Archiv..."
|
||||||
|
unzip -o "$_aptos_zip" -d /tmp/aptos_fonts
|
||||||
|
echo "Erstelle /usr/share/fonts/truetype/aptos/"
|
||||||
|
sudo mkdir -p /usr/share/fonts/truetype/aptos
|
||||||
|
echo "Installiere alle .ttf Schriften..."
|
||||||
|
find /tmp/aptos_fonts -name "*.ttf" -exec sudo install -m644 {} /usr/share/fonts/truetype/aptos/ \; 2>/dev/null || true
|
||||||
|
echo "Aktualisiere den Font-Cache"
|
||||||
|
fc-cache -f
|
||||||
|
echo "Fertig! Aptos Schriftarten sind installiert."
|
||||||
|
|
||||||
|
echo "Entferne temporäre Dateien..."
|
||||||
|
rm -rf "$_aptos_zip" /tmp/aptos_fonts
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
echo " ## freie Google-Schriften"
|
||||||
|
if question_answered_with_yes " ### Installiere Google Schriften? ###"; then
|
||||||
|
echo
|
||||||
|
echo "### Google Schriften ###"
|
||||||
|
|
||||||
|
_google_fonts_dir="/usr/share/fonts/truetype/google-fonts"
|
||||||
|
_google_fonts_url_base="https://gwfh.mranftl.com/api/fonts"
|
||||||
|
|
||||||
|
_google_fonts="arimo carlito caladea inconsolata cousine libre-franklin neuton cabin oswald crimson-text lustria tinos league-spartan pt-sans"
|
||||||
|
|
||||||
|
sudo mkdir -p "$_google_fonts_dir"
|
||||||
|
|
||||||
|
for _font in $_google_fonts; do
|
||||||
|
echo "Lade $_font herunter..."
|
||||||
|
curl -s -o /tmp/"$_font".zip "${_google_fonts_url_base}/$_font?download=zip&subsets=latin,latin-ext&variants=regular,700"
|
||||||
|
if [ -s /tmp/"$_font".zip ] && head -c 2 /tmp/"$_font".zip | grep -q "PK"; then
|
||||||
|
unzip -o /tmp/"$_font".zip -d /tmp/"$_font"_fonts
|
||||||
|
sudo cp /tmp/"$_font"_fonts/fonts/"$_font"/* "$_google_fonts_dir/" 2>/dev/null || \
|
||||||
|
sudo cp /tmp/"$_font"_fonts/* "$_google_fonts_dir/" 2>/dev/null || true
|
||||||
|
rm -rf /tmp/"$_font".zip /tmp/"$_font"_fonts
|
||||||
|
else
|
||||||
|
echo "Fehler: Download von $_font fehlgeschlagen, überspringe..."
|
||||||
|
rm -f /tmp/"$_font".zip
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Aktualisiere den Font-Cache"
|
||||||
|
fc-cache -f
|
||||||
|
echo "Fertig! Google Schriftarten sind installiert."
|
||||||
|
echo "Die Anpassung der Standardschriften und/oder das Erstellen der Ersetzungstabelle in Libre Office muss manuell erfolgen, falls gewünscht."
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
echo "#### Chromium Browser installieren:"
|
||||||
|
if question_answered_with_yes " ### Installiere Chromium? ###"; then
|
||||||
|
echo "### Chromium ###"
|
||||||
|
sudo apt install chromium-browser
|
||||||
|
sudo apt install chromium
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
echo "#### Vivaldi Browser installieren:"
|
||||||
|
if question_answered_with_yes " ### Installiere Vivaldi? ###"; then
|
||||||
|
echo "### ###"
|
||||||
|
echo "## nötige Zusatzpakete installieren"
|
||||||
|
sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https curl -y
|
||||||
|
#
|
||||||
|
echo "## ## key importieren"
|
||||||
|
curl -fsSL https://repo.vivaldi.com/archive/linux_signing_key.pub | gpg --dearmor | sudo tee /usr/share/keyrings/vivaldi.gpg > /dev/null
|
||||||
|
#
|
||||||
|
echo "## ## Repository hinzufügen"
|
||||||
|
echo deb [arch=amd64,armhf signed-by=/usr/share/keyrings/vivaldi.gpg] https://repo.vivaldi.com/stable/deb/ stable main | sudo tee /etc/apt/sources.list.d/vivaldi.list
|
||||||
|
#
|
||||||
|
sudo apt update && sudo apt install vivaldi-stable
|
||||||
|
#
|
||||||
|
echo "## ## Gnome-Schlüsselbund-Fehlermeldung bei jedem Start von Chrome/Chromium beheben: Starter bzw. .desktop-Datei mit folgendem Parameter ergänzen: "
|
||||||
|
echo "## ## --password-store=basic"
|
||||||
|
#
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
echo "####Signal für Desktop (die Nutzung setzt eine Signal-Installation auf einem Android- Oder Apple-Gerät voraus!)#### "
|
||||||
|
if question_answered_with_yes " ### Installiere Signal? ###"; then
|
||||||
|
echo "### ###"
|
||||||
|
echo "## zusätzliches Repository nötig!
|
||||||
|
## NOTE: These instructions only work for 64-bit Debian-based
|
||||||
|
## Linux distributions such as Ubuntu, Mint etc.
|
||||||
|
## key importieren
|
||||||
|
"
|
||||||
|
wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > /tmp/signal-desktop-keyring.gpg
|
||||||
|
cat /tmp/signal-desktop-keyring.gpg | sudo tee /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null
|
||||||
|
#
|
||||||
|
echo "## Repository hinzufügen:"
|
||||||
|
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/signal-desktop-keyring.gpg] https://updates.signal.org/desktop/apt xenial main' | sudo tee /etc/apt/sources.list.d/signal-xenial.list
|
||||||
|
sudo apt update && sudo apt install signal-desktop
|
||||||
|
#
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "###############################"
|
||||||
|
echo "######### Skript ENDE #########"
|
||||||
|
echo "###############################"
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
echo "Verbleibende manuelle Schritte:"
|
||||||
|
|
||||||
|
if [ "$DESKTOP" = "xfce" ]; then
|
||||||
|
echo "### Taskleiste ###: XFCE-Applets für 2x Netzwerkmonitor (LAN + WLAN) konfigurieren"
|
||||||
|
echo "Wenn ### Sensoren ### installiert wurden: psensor konfigurieren im XFCE-Applet in der Taskleiste, falls gewünscht."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Wenn ### Google-Schriften ### installiert wurden: Anpassung der Standardschriften und/oder das Erstellen der Ersetzungstabelle in Libre Office, falls gewünscht."
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
read -p ' ### Um dieses Fenster zu schliessen, Enter drücken ### '
|
||||||
|
exit 0
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
# Post-Installation Script
|
||||||
|
|
||||||
|
This directory contains files belonging to the Linux Mint post-installation scripts.
|
||||||
|
|
||||||
|
## Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
post_installation_script/
|
||||||
|
├── Nachinstallationsarbeiten_LC_Esslingen.sh # Main script (asks for desktop)
|
||||||
|
├── xfce/
|
||||||
|
│ ├── xfce.sh # XFCE-specific configurations
|
||||||
|
│ └── xfce4-panel-profiles.tar.bz2 # XFCE panel backup
|
||||||
|
├── cinnamon/
|
||||||
|
│ └── cinnamon.sh # Cinnamon (reserved for future)
|
||||||
|
├── 01_prepare_release.sh
|
||||||
|
└── 02_finalise_release.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## Prerequisites to run the script
|
||||||
|
- Linux Mint (XFCE or Cinnamon) installed and running
|
||||||
|
- Internet connection for downloading packages and fonts
|
||||||
|
- Required tools: `curl`, `unzip`, `wget`, `fc-cache` (most are pre-installed)
|
||||||
|
|
||||||
|
No external files need to be pre-downloaded.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Run the main script:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd post_installation_script
|
||||||
|
bash Nachinstallationsarbeiten_LC_Esslingen.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
The script will ask you to select your desktop environment (XFCE or Cinnamon), then proceed with the installation.
|
||||||
|
|
||||||
|
The script is interactive and will prompt for confirmation before each installation step.
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
See `../post_installation_script_test/README.md` for container-based testing instructions.
|
||||||
+49
@@ -0,0 +1,49 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Cinnamon-specific script - called by main script
|
||||||
|
# This file contains Cinnamon-specific configurations
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
CINNAMONDIR="$SCRIPT_DIR/cinnamon"
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
echo "### System Monitor Applet ###"
|
||||||
|
if question_answered_with_yes " ### System Monitor Applet in der Taskleiste installieren? ###"; then
|
||||||
|
echo "### System Monitor Applet wird installiert ###"
|
||||||
|
sudo apt-get install gir1.2-gtop-2.0 -y
|
||||||
|
wget -O /tmp/sysmonitor@orcus.zip "https://cinnamon-spices.linuxmint.com/files/applets/sysmonitor@orcus.zip"
|
||||||
|
unzip -o /tmp/sysmonitor@orcus.zip -d ~/.local/share/cinnamon/applets/
|
||||||
|
rm /tmp/sysmonitor@orcus.zip
|
||||||
|
|
||||||
|
CURRENT_APPLETS=$(gsettings get org.cinnamon enabled-applets)
|
||||||
|
echo "DEBUG: current enabled-applets = $CURRENT_APPLETS"
|
||||||
|
INSTANCE_ID=$(gsettings get org.cinnamon next-applet-id)
|
||||||
|
echo "DEBUG: ID for the new applet = $INSTANCE_ID"
|
||||||
|
|
||||||
|
echo "DEBUG: Adding sysmonitor to applets list..."
|
||||||
|
NEW_APPLET="panel1:right:13:sysmonitor@orcus:$INSTANCE_ID"
|
||||||
|
NEW_APPLETS=$(echo "$CURRENT_APPLETS" | sed "s/\\]$/, '$NEW_APPLET']/")
|
||||||
|
gsettings set org.cinnamon enabled-applets "$NEW_APPLETS"
|
||||||
|
echo "DEBUG: Checking updated current enabled-applets = $(gsettings get org.cinnamon enabled-applets)"
|
||||||
|
|
||||||
|
NEXT_ID=$((INSTANCE_ID + 1))
|
||||||
|
echo "DEBUG: Setting next-applet-id to $NEXT_ID..."
|
||||||
|
gsettings set org.cinnamon next-applet-id "$NEXT_ID"
|
||||||
|
echo "DEBUG: Checking updated next-applet-id = $(gsettings get org.cinnamon next-applet-id)"
|
||||||
|
|
||||||
|
echo "copy system monitor config file..."
|
||||||
|
mkdir -p ~/.config/cinnamon/spices/sysmonitor@orcus/
|
||||||
|
cp "$CINNAMONDIR/sysmonitor_settings.json" ~/.config/cinnamon/spices/sysmonitor@orcus/$INSTANCE_ID.json
|
||||||
|
|
||||||
|
if question_answered_with_yes " ### Falls System Monitor Applet in der Taskleiste nicht angezeigt wird: Cinnamon Desktop neu laden? ###"; then
|
||||||
|
echo "Dialog 'Sie befinden sich im Rückfallmodus' mit JA beantworten um Desktop neuzustarten"
|
||||||
|
pkill -HUP -f "cinnamon --replace"
|
||||||
|
else
|
||||||
|
echo "Falls die Taskleiste nicht aktualisiert wurde: Abmelden und wieder anmelden oder neu starten"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Fertig! System Monitor Applet wurde installiert."
|
||||||
|
|
||||||
|
fi
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
[/]
|
||||||
|
enabled-applets=['panel1:left:0:menu@cinnamon.org:0', 'panel1:left:1:separator@cinnamon.org:1', 'panel1:left:2:grouped-window-list@cinnamon.org:2', 'panel1:right:1:systray@cinnamon.org:3', 'panel1:right:2:xapp-status@cinnamon.org:4', 'panel1:right:3:notifications@cinnamon.org:5', 'panel1:right:4:printers@cinnamon.org:6', 'panel1:right:5:removable-drives@cinnamon.org:7', 'panel1:right:6:keyboard@cinnamon.org:8', 'panel1:right:7:favorites@cinnamon.org:9', 'panel1:right:8:network@cinnamon.org:10', 'panel1:right:9:sound@cinnamon.org:11', 'panel1:right:10:power@cinnamon.org:12', 'panel1:right:11:calendar@cinnamon.org:13', 'panel1:right:12:cornerbar@cinnamon.org:14', 'panel1:right:13:sysmonitor@orcus:15']
|
||||||
|
next-applet-id=16
|
||||||
|
panel-edit-mode=false
|
||||||
|
panel-zone-symbolic-icon-sizes='[{"panelId": 1, "left": 28, "center": 28, "right": 16}]'
|
||||||
|
panels-height=['1:40']
|
||||||
|
|
||||||
|
[desktop/a11y/applications]
|
||||||
|
screen-reader-enabled=false
|
||||||
|
|
||||||
|
[desktop/a11y/mouse]
|
||||||
|
dwell-click-enabled=false
|
||||||
|
dwell-threshold=10
|
||||||
|
dwell-time=1.2
|
||||||
|
secondary-click-enabled=false
|
||||||
|
secondary-click-time=1.2
|
||||||
|
|
||||||
|
[desktop/input-sources]
|
||||||
|
sources=[('xkb', 'de')]
|
||||||
|
|
||||||
|
[desktop/interface]
|
||||||
|
toolkit-accessibility=false
|
||||||
|
|
||||||
|
[desktop/screensaver]
|
||||||
|
layout-group=0
|
||||||
|
|
||||||
|
[desktop/sound]
|
||||||
|
event-sounds=false
|
||||||
|
|
||||||
|
[gestures]
|
||||||
|
swipe-down-2='PUSH_TILE_DOWN::end'
|
||||||
|
swipe-down-3='TOGGLE_OVERVIEW::end'
|
||||||
|
swipe-down-4='VOLUME_DOWN::end'
|
||||||
|
swipe-left-2='PUSH_TILE_LEFT::end'
|
||||||
|
swipe-left-3='WORKSPACE_NEXT::end'
|
||||||
|
swipe-left-4='WINDOW_WORKSPACE_PREVIOUS::end'
|
||||||
|
swipe-right-2='PUSH_TILE_RIGHT::end'
|
||||||
|
swipe-right-3='WORKSPACE_PREVIOUS::end'
|
||||||
|
swipe-right-4='WINDOW_WORKSPACE_NEXT::end'
|
||||||
|
swipe-up-2='PUSH_TILE_UP::end'
|
||||||
|
swipe-up-3='TOGGLE_EXPO::end'
|
||||||
|
swipe-up-4='VOLUME_UP::end'
|
||||||
|
tap-3='MEDIA_PLAY_PAUSE::end'
|
||||||
|
|
||||||
|
[settings-daemon/plugins/color]
|
||||||
|
night-light-last-coordinates=(52.5, 13.366667)
|
||||||
@@ -0,0 +1,458 @@
|
|||||||
|
{
|
||||||
|
"layout": {
|
||||||
|
"type": "layout",
|
||||||
|
"pages": [
|
||||||
|
"common",
|
||||||
|
"cpu",
|
||||||
|
"mem",
|
||||||
|
"swap",
|
||||||
|
"net",
|
||||||
|
"load"
|
||||||
|
],
|
||||||
|
"common": {
|
||||||
|
"type": "page",
|
||||||
|
"title": "Common",
|
||||||
|
"sections": [
|
||||||
|
"common_g",
|
||||||
|
"common_c"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"common_g": {
|
||||||
|
"type": "section",
|
||||||
|
"title": "General",
|
||||||
|
"keys": [
|
||||||
|
"onclick_program",
|
||||||
|
"smooth",
|
||||||
|
"draw_border",
|
||||||
|
"graph_width",
|
||||||
|
"graph_spacing",
|
||||||
|
"refresh_rate",
|
||||||
|
"use_padding",
|
||||||
|
"padding_lr",
|
||||||
|
"padding_tb"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"common_c": {
|
||||||
|
"type": "section",
|
||||||
|
"title": "Colors",
|
||||||
|
"keys": [
|
||||||
|
"bg_color",
|
||||||
|
"border_color"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"cpu": {
|
||||||
|
"type": "page",
|
||||||
|
"title": "CPU",
|
||||||
|
"sections": [
|
||||||
|
"cpu_g",
|
||||||
|
"cpu_c"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"cpu_g": {
|
||||||
|
"type": "section",
|
||||||
|
"title": "General",
|
||||||
|
"keys": [
|
||||||
|
"cpu_enabled",
|
||||||
|
"cpu_override_graph_width",
|
||||||
|
"cpu_graph_width",
|
||||||
|
"cpu_tooltip_decimals"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"cpu_c": {
|
||||||
|
"type": "section",
|
||||||
|
"title": "Colors",
|
||||||
|
"keys": [
|
||||||
|
"cpu_color_0",
|
||||||
|
"cpu_color_1",
|
||||||
|
"cpu_color_2",
|
||||||
|
"cpu_color_3"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"mem": {
|
||||||
|
"type": "page",
|
||||||
|
"title": "Memory",
|
||||||
|
"sections": [
|
||||||
|
"mem_g",
|
||||||
|
"mem_c"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"mem_g": {
|
||||||
|
"type": "section",
|
||||||
|
"title": "General",
|
||||||
|
"keys": [
|
||||||
|
"mem_enabled",
|
||||||
|
"mem_override_graph_width",
|
||||||
|
"mem_graph_width"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"mem_c": {
|
||||||
|
"type": "section",
|
||||||
|
"title": "Colors",
|
||||||
|
"keys": [
|
||||||
|
"mem_color_0",
|
||||||
|
"mem_color_1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"swap": {
|
||||||
|
"type": "page",
|
||||||
|
"title": "Swap",
|
||||||
|
"sections": [
|
||||||
|
"swap_g",
|
||||||
|
"swap_c"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"swap_g": {
|
||||||
|
"type": "section",
|
||||||
|
"title": "General",
|
||||||
|
"keys": [
|
||||||
|
"swap_enabled",
|
||||||
|
"swap_override_graph_width",
|
||||||
|
"swap_graph_width"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"swap_c": {
|
||||||
|
"type": "section",
|
||||||
|
"title": "Colors",
|
||||||
|
"keys": [
|
||||||
|
"swap_color_0"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"net": {
|
||||||
|
"type": "page",
|
||||||
|
"title": "Network",
|
||||||
|
"sections": [
|
||||||
|
"net_g",
|
||||||
|
"net_c"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"net_g": {
|
||||||
|
"type": "section",
|
||||||
|
"title": "General",
|
||||||
|
"keys": [
|
||||||
|
"net_enabled",
|
||||||
|
"net_override_graph_width",
|
||||||
|
"net_graph_width",
|
||||||
|
"net_minimum_graph_scale"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"net_c": {
|
||||||
|
"type": "section",
|
||||||
|
"title": "Colors",
|
||||||
|
"keys": [
|
||||||
|
"net_color_0",
|
||||||
|
"net_color_1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"load": {
|
||||||
|
"type": "page",
|
||||||
|
"title": "Load",
|
||||||
|
"sections": [
|
||||||
|
"load_g",
|
||||||
|
"load_c"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"load_g": {
|
||||||
|
"type": "section",
|
||||||
|
"title": "General",
|
||||||
|
"keys": [
|
||||||
|
"load_enabled",
|
||||||
|
"load_override_graph_width",
|
||||||
|
"load_graph_width"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"load_c": {
|
||||||
|
"type": "section",
|
||||||
|
"title": "Colors",
|
||||||
|
"keys": [
|
||||||
|
"load_color_0"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"onclick_program": {
|
||||||
|
"type": "entry",
|
||||||
|
"default": "gnome-system-monitor",
|
||||||
|
"description": "Program to launch on click",
|
||||||
|
"value": "gnome-system-monitor"
|
||||||
|
},
|
||||||
|
"smooth": {
|
||||||
|
"type": "switch",
|
||||||
|
"default": true,
|
||||||
|
"description": "Smooth graphs",
|
||||||
|
"value": true
|
||||||
|
},
|
||||||
|
"draw_border": {
|
||||||
|
"type": "switch",
|
||||||
|
"default": false,
|
||||||
|
"description": "Draw border",
|
||||||
|
"value": true
|
||||||
|
},
|
||||||
|
"graph_width": {
|
||||||
|
"type": "spinbutton",
|
||||||
|
"default": 40,
|
||||||
|
"min": 10,
|
||||||
|
"max": 1000,
|
||||||
|
"step": 1,
|
||||||
|
"description": "Common graph width",
|
||||||
|
"units": "pixels",
|
||||||
|
"tooltip": "If the applet is in a vertical panel, this sets the graph height. The graph width is then the panel width minus padding",
|
||||||
|
"value": 10.0
|
||||||
|
},
|
||||||
|
"graph_spacing": {
|
||||||
|
"type": "spinbutton",
|
||||||
|
"default": 3,
|
||||||
|
"min": -1,
|
||||||
|
"max": 100,
|
||||||
|
"step": 1,
|
||||||
|
"description": "Graph spacing",
|
||||||
|
"units": "pixels",
|
||||||
|
"tooltip": "The number of pixels between each graph. Can be set to -1 to allow single line borders between graphs if borders are enabled",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
"refresh_rate": {
|
||||||
|
"type": "spinbutton",
|
||||||
|
"default": 1000,
|
||||||
|
"min": 100,
|
||||||
|
"max": 60000,
|
||||||
|
"step": 50,
|
||||||
|
"description": "Refresh rate",
|
||||||
|
"units": "ms",
|
||||||
|
"value": 1000
|
||||||
|
},
|
||||||
|
"use_padding": {
|
||||||
|
"type": "switch",
|
||||||
|
"default": false,
|
||||||
|
"description": "Use custom applet padding",
|
||||||
|
"value": false
|
||||||
|
},
|
||||||
|
"padding_lr": {
|
||||||
|
"type": "spinbutton",
|
||||||
|
"default": 1,
|
||||||
|
"min": 0,
|
||||||
|
"max": 100,
|
||||||
|
"step": 1,
|
||||||
|
"description": "Left/right padding",
|
||||||
|
"units": "pixels",
|
||||||
|
"dependency": "use_padding",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
"padding_tb": {
|
||||||
|
"type": "spinbutton",
|
||||||
|
"default": 1,
|
||||||
|
"min": 0,
|
||||||
|
"max": 100,
|
||||||
|
"step": 1,
|
||||||
|
"description": "Top/bottom padding",
|
||||||
|
"units": "pixels",
|
||||||
|
"dependency": "use_padding",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
"bg_color": {
|
||||||
|
"type": "colorchooser",
|
||||||
|
"default": "rgba(0,0,0,0)",
|
||||||
|
"description": "Background color",
|
||||||
|
"value": "rgba(0,0,0,0)"
|
||||||
|
},
|
||||||
|
"border_color": {
|
||||||
|
"type": "colorchooser",
|
||||||
|
"default": "rgb(128,128,128)",
|
||||||
|
"description": "Border color",
|
||||||
|
"value": "rgb(128,128,128)"
|
||||||
|
},
|
||||||
|
"cpu_enabled": {
|
||||||
|
"type": "switch",
|
||||||
|
"default": true,
|
||||||
|
"description": "Enable",
|
||||||
|
"value": true
|
||||||
|
},
|
||||||
|
"cpu_override_graph_width": {
|
||||||
|
"type": "switch",
|
||||||
|
"default": false,
|
||||||
|
"description": "Override graph width",
|
||||||
|
"value": false
|
||||||
|
},
|
||||||
|
"cpu_graph_width": {
|
||||||
|
"type": "spinbutton",
|
||||||
|
"default": 40,
|
||||||
|
"min": 10,
|
||||||
|
"max": 1000,
|
||||||
|
"step": 1,
|
||||||
|
"description": "Graph width",
|
||||||
|
"units": "pixels",
|
||||||
|
"dependency": "cpu_override_graph_width",
|
||||||
|
"value": 40
|
||||||
|
},
|
||||||
|
"cpu_tooltip_decimals": {
|
||||||
|
"type": "spinbutton",
|
||||||
|
"default": 0,
|
||||||
|
"min": 0,
|
||||||
|
"max": 10,
|
||||||
|
"step": 1,
|
||||||
|
"description": "Show this many decimals in the tooltip",
|
||||||
|
"units": "decimals",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
"cpu_color_0": {
|
||||||
|
"type": "colorchooser",
|
||||||
|
"default": "rgb(252,233,79)",
|
||||||
|
"description": "User color",
|
||||||
|
"value": "rgb(252,233,79)"
|
||||||
|
},
|
||||||
|
"cpu_color_1": {
|
||||||
|
"type": "colorchooser",
|
||||||
|
"default": "rgb(252,175,62)",
|
||||||
|
"description": "Nice color",
|
||||||
|
"value": "rgb(252,175,62)"
|
||||||
|
},
|
||||||
|
"cpu_color_2": {
|
||||||
|
"type": "colorchooser",
|
||||||
|
"default": "rgb(239,41,41)",
|
||||||
|
"description": "Kernel color",
|
||||||
|
"value": "rgb(239,41,41)"
|
||||||
|
},
|
||||||
|
"cpu_color_3": {
|
||||||
|
"type": "colorchooser",
|
||||||
|
"default": "rgb(94,0,0)",
|
||||||
|
"description": "IOWait color",
|
||||||
|
"value": "rgb(94,0,0)"
|
||||||
|
},
|
||||||
|
"mem_enabled": {
|
||||||
|
"type": "switch",
|
||||||
|
"default": true,
|
||||||
|
"description": "Enable",
|
||||||
|
"value": true
|
||||||
|
},
|
||||||
|
"mem_override_graph_width": {
|
||||||
|
"type": "switch",
|
||||||
|
"default": false,
|
||||||
|
"description": "Override graph width",
|
||||||
|
"value": false
|
||||||
|
},
|
||||||
|
"mem_graph_width": {
|
||||||
|
"type": "spinbutton",
|
||||||
|
"default": 40,
|
||||||
|
"min": 10,
|
||||||
|
"max": 1000,
|
||||||
|
"step": 1,
|
||||||
|
"description": "Graph width",
|
||||||
|
"units": "pixels",
|
||||||
|
"dependency": "mem_override_graph_width",
|
||||||
|
"value": 40
|
||||||
|
},
|
||||||
|
"mem_color_0": {
|
||||||
|
"type": "colorchooser",
|
||||||
|
"default": "rgb(118,210,255)",
|
||||||
|
"description": "Used color",
|
||||||
|
"value": "rgb(118,210,255)"
|
||||||
|
},
|
||||||
|
"mem_color_1": {
|
||||||
|
"type": "colorchooser",
|
||||||
|
"default": "rgb(52,101,164)",
|
||||||
|
"description": "Cached color",
|
||||||
|
"value": "rgb(52,101,164)"
|
||||||
|
},
|
||||||
|
"swap_enabled": {
|
||||||
|
"type": "switch",
|
||||||
|
"default": true,
|
||||||
|
"description": "Enable",
|
||||||
|
"value": true
|
||||||
|
},
|
||||||
|
"swap_override_graph_width": {
|
||||||
|
"type": "switch",
|
||||||
|
"default": false,
|
||||||
|
"description": "Override graph width",
|
||||||
|
"value": false
|
||||||
|
},
|
||||||
|
"swap_graph_width": {
|
||||||
|
"type": "spinbutton",
|
||||||
|
"default": 40,
|
||||||
|
"min": 10,
|
||||||
|
"max": 1000,
|
||||||
|
"step": 1,
|
||||||
|
"description": "Graph width",
|
||||||
|
"units": "pixels",
|
||||||
|
"dependency": "swap_override_graph_width",
|
||||||
|
"value": 40
|
||||||
|
},
|
||||||
|
"swap_color_0": {
|
||||||
|
"type": "colorchooser",
|
||||||
|
"default": "rgb(114,159,207)",
|
||||||
|
"description": "Used color",
|
||||||
|
"value": "rgb(114,159,207)"
|
||||||
|
},
|
||||||
|
"net_enabled": {
|
||||||
|
"type": "switch",
|
||||||
|
"default": true,
|
||||||
|
"description": "Enable",
|
||||||
|
"value": true
|
||||||
|
},
|
||||||
|
"net_override_graph_width": {
|
||||||
|
"type": "switch",
|
||||||
|
"default": false,
|
||||||
|
"description": "Override graph width",
|
||||||
|
"value": false
|
||||||
|
},
|
||||||
|
"net_graph_width": {
|
||||||
|
"type": "spinbutton",
|
||||||
|
"default": 40,
|
||||||
|
"min": 10,
|
||||||
|
"max": 1000,
|
||||||
|
"step": 1,
|
||||||
|
"description": "Graph width",
|
||||||
|
"units": "pixels",
|
||||||
|
"dependency": "net_override_graph_width",
|
||||||
|
"value": 40
|
||||||
|
},
|
||||||
|
"net_minimum_graph_scale": {
|
||||||
|
"type": "spinbutton",
|
||||||
|
"default": 0,
|
||||||
|
"min": 0,
|
||||||
|
"max": 1000000,
|
||||||
|
"step": 10,
|
||||||
|
"description": "Minimum graph scale",
|
||||||
|
"units": "Mb/s",
|
||||||
|
"tooltip": "The minimum scale for the graph in Megabits per second.\nThe graph will not scale below this minimum, but it will automatically scale if the network speed exceeds this value.\n\nTo always automatically scale, set the value to 0.",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
"net_color_0": {
|
||||||
|
"type": "colorchooser",
|
||||||
|
"default": "rgb(138,226,52)",
|
||||||
|
"description": "Download color",
|
||||||
|
"value": "rgb(138,226,52)"
|
||||||
|
},
|
||||||
|
"net_color_1": {
|
||||||
|
"type": "colorchooser",
|
||||||
|
"default": "rgb(239,41,41)",
|
||||||
|
"description": "Upload color",
|
||||||
|
"value": "rgb(239,41,41)"
|
||||||
|
},
|
||||||
|
"load_enabled": {
|
||||||
|
"type": "switch",
|
||||||
|
"default": true,
|
||||||
|
"description": "Enable",
|
||||||
|
"value": true
|
||||||
|
},
|
||||||
|
"load_override_graph_width": {
|
||||||
|
"type": "switch",
|
||||||
|
"default": false,
|
||||||
|
"description": "Override graph width",
|
||||||
|
"value": false
|
||||||
|
},
|
||||||
|
"load_graph_width": {
|
||||||
|
"type": "spinbutton",
|
||||||
|
"default": 40,
|
||||||
|
"min": 10,
|
||||||
|
"max": 1000,
|
||||||
|
"step": 1,
|
||||||
|
"description": "Graph width",
|
||||||
|
"units": "pixels",
|
||||||
|
"dependency": "load_override_graph_width",
|
||||||
|
"value": 40
|
||||||
|
},
|
||||||
|
"load_color_0": {
|
||||||
|
"type": "colorchooser",
|
||||||
|
"default": "rgb(204,0,0)",
|
||||||
|
"description": "Color",
|
||||||
|
"value": "rgb(204,0,0)"
|
||||||
|
},
|
||||||
|
"__md5__": "9911223138f00e8c746a460d9c0f715a"
|
||||||
|
}
|
||||||
Executable
+32
@@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# XFCE-specific script - called by main script
|
||||||
|
# This file contains XFCE-specific package installations and panel configuration
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
XFCEDIR="$SCRIPT_DIR/xfce"
|
||||||
|
|
||||||
|
echo "### XFCE-specific packages ###"
|
||||||
|
sudo apt -y install xfce4-goodies
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
echo "### Anpassung der Panel-Konfiguration / Taskleiste #### "
|
||||||
|
echo "### SystemMonitor, ArbeitsflächenAnzeige #### "
|
||||||
|
echo
|
||||||
|
echo "Achtung! Es kann vorkommen, dass die Taskleiste nach diesem Schritt verschwunden ist."
|
||||||
|
echo "Ein Abmelden und Wiederanmelden des Benutzers oder ein Reboot behebt das Problem."
|
||||||
|
echo
|
||||||
|
if question_answered_with_yes " ### Änderungen am Panel durchführen? ###"; then
|
||||||
|
echo "### ###"
|
||||||
|
sudo apt install xfce4-panel-profiles -y
|
||||||
|
|
||||||
|
echo "## Austausch der Panel-Konfigurationsdatei:"
|
||||||
|
xfce4-panel-profiles load "$XFCEDIR/xfce4-panel-profiles.tar.bz2"
|
||||||
|
|
||||||
|
if question_answered_with_yes " ### Falls System Monitor Applet in der Taskleiste nicht angezeigt wird: Desktop neu laden? ###"; then
|
||||||
|
xfce4-panel --restart
|
||||||
|
else
|
||||||
|
echo "Falls die Taskleiste nicht aktualisiert wurde: Abmelden und wieder anmelden oder neu starten"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
Binary file not shown.
+4
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Create test image from Dockerfile
|
||||||
|
docker build -t mint-script-test -f Dockerfile .
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
docker run -it --rm \
|
||||||
|
--tmpfs /tmp:rw \
|
||||||
|
--entrypoint bash \
|
||||||
|
-v "$(pwd)/../post_installation_script/":/workspace-source:ro \
|
||||||
|
mint-script-test \
|
||||||
|
-c 'cp -r /workspace-source/* /workspace/ && cd /workspace && exec bash'
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
FROM ubuntu:22.04
|
||||||
|
|
||||||
|
# Install required utilities including sudo
|
||||||
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
|
bash wget tar curl gnupg ca-certificates apt-utils apt coreutils file procps sudo && \
|
||||||
|
apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Configure passwordless sudo for all users (needed for script)
|
||||||
|
RUN echo 'ALL ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
|
||||||
|
|
||||||
|
WORKDIR /workspace
|
||||||
|
ENTRYPOINT ["/bin/bash"]
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
# Post-Installation Script Testing
|
||||||
|
|
||||||
|
This directory contains a quick (but not complete) test for post-installation script in a safe, isolated container environment.
|
||||||
|
The container has no UI installed and therefore can't test the UI related parts of the script (Taskbar adaptions), but
|
||||||
|
it allows to test the logic, prompts, and error handling of the script.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
- Docker or Podman installed on the host system. If Podman is used, an alias for `docker` command should be set up (e.g. `alias docker=podman`)
|
||||||
|
- in order to use the provided scripts without modification.
|
||||||
|
|
||||||
|
## Contents
|
||||||
|
|
||||||
|
- `Dockerfile` - Container image definition for testing
|
||||||
|
- `01_create_image.sh` - script for creating container image locally
|
||||||
|
- `02_start_container_with_image.sh` - script for starting container from created image
|
||||||
|
|
||||||
|
## Purpose
|
||||||
|
|
||||||
|
Provides a reproducible testing environment that allows:
|
||||||
|
|
||||||
|
- Running the post-installation script without affecting the host system
|
||||||
|
- Real `apt` installations (isolated in container)
|
||||||
|
- Testing script logic, prompts, and error handling
|
||||||
|
- Validating syntax and tracing execution
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
The Dockerfile includes:
|
||||||
|
|
||||||
|
- Ubuntu 22.04 base image
|
||||||
|
- Passwordless sudo for real apt installations
|
||||||
|
- Useful utilities: `bash`, `wget`, `tar`, `curl`, `gnupg`, `ca-certificates`, `file`, `procps`, `sudo`
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### Build the test image
|
||||||
|
Run the prepared shell script to build the image
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd post_installation_script_test
|
||||||
|
bash 01_create_image.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Start a container for testing
|
||||||
|
Run the prepared shell script start a new container for testing based in the
|
||||||
|
image and remove container after it is stopped. After container is started an interactive session is started into the container.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd post_installation_script_test
|
||||||
|
bash 02_start_container_with_image.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Test the script file in the running container
|
||||||
|
After container is started an interactive session was started in the container and the script can be started for testing.
|
||||||
|
The source script folder is mounted read-only to `/workspace-source` and contents are copied to `/workspace` at container startup.
|
||||||
|
To test changes made on the host, restart the container - it will copy the updated files.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ls -al
|
||||||
|
bash <scriptName>.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## Security Notes
|
||||||
|
|
||||||
|
- The source script folder is mounted read-only to `/workspace-source`
|
||||||
|
- Contents are automatically copied to `/workspace` (writable) at container startup
|
||||||
|
- This keeps the host script folder untouched while allowing the script to write files (e.g., font extraction)
|
||||||
|
- All apt installations are real but isolated in the container
|
||||||
|
- Use `--tmpfs /tmp:rw` for any temporary writes inside the container
|
||||||
|
- Container is automatically removed after exit (`--rm` flag)
|
||||||
-220
@@ -1,220 +0,0 @@
|
|||||||
<?xml version="1.1" encoding="UTF-8"?>
|
|
||||||
|
|
||||||
<channel name="xfce4-panel" version="1.0">
|
|
||||||
<property name="configver" type="int" value="2"/>
|
|
||||||
<property name="panels" type="array">
|
|
||||||
<value type="int" value="1"/>
|
|
||||||
<value type="int" value="2"/>
|
|
||||||
<property name="panel-1" type="empty">
|
|
||||||
<property name="position" type="string" value="p=6;x=0;y=0"/>
|
|
||||||
<property name="length" type="uint" value="100"/>
|
|
||||||
<property name="position-locked" type="bool" value="true"/>
|
|
||||||
<property name="icon-size" type="uint" value="16"/>
|
|
||||||
<property name="size" type="uint" value="29"/>
|
|
||||||
<property name="plugin-ids" type="array">
|
|
||||||
<value type="int" value="1"/>
|
|
||||||
<value type="int" value="2"/>
|
|
||||||
<value type="int" value="3"/>
|
|
||||||
<value type="int" value="5"/>
|
|
||||||
<value type="int" value="6"/>
|
|
||||||
<value type="int" value="8"/>
|
|
||||||
<value type="int" value="9"/>
|
|
||||||
<value type="int" value="10"/>
|
|
||||||
<value type="int" value="11"/>
|
|
||||||
<value type="int" value="12"/>
|
|
||||||
<value type="int" value="13"/>
|
|
||||||
<value type="int" value="14"/>
|
|
||||||
<value type="int" value="7"/>
|
|
||||||
<value type="int" value="26"/>
|
|
||||||
<value type="int" value="28"/>
|
|
||||||
</property>
|
|
||||||
<property name="nrows" type="uint" value="2"/>
|
|
||||||
<property name="border-width" type="uint" value="1"/>
|
|
||||||
</property>
|
|
||||||
<property name="panel-2" type="empty">
|
|
||||||
<property name="autohide-behavior" type="uint" value="1"/>
|
|
||||||
<property name="position" type="string" value="p=10;x=0;y=0"/>
|
|
||||||
<property name="position-locked" type="bool" value="true"/>
|
|
||||||
<property name="size" type="uint" value="48"/>
|
|
||||||
<property name="plugin-ids" type="array">
|
|
||||||
<value type="int" value="15"/>
|
|
||||||
<value type="int" value="16"/>
|
|
||||||
<value type="int" value="17"/>
|
|
||||||
<value type="int" value="18"/>
|
|
||||||
<value type="int" value="19"/>
|
|
||||||
<value type="int" value="20"/>
|
|
||||||
<value type="int" value="21"/>
|
|
||||||
<value type="int" value="22"/>
|
|
||||||
</property>
|
|
||||||
</property>
|
|
||||||
</property>
|
|
||||||
<property name="plugins" type="empty">
|
|
||||||
<property name="plugin-2" type="string" value="tasklist">
|
|
||||||
<property name="grouping" type="uint" value="1"/>
|
|
||||||
</property>
|
|
||||||
<property name="plugin-3" type="string" value="separator">
|
|
||||||
<property name="expand" type="bool" value="true"/>
|
|
||||||
<property name="style" type="uint" value="0"/>
|
|
||||||
</property>
|
|
||||||
<property name="plugin-5" type="string" value="separator">
|
|
||||||
<property name="style" type="uint" value="0"/>
|
|
||||||
</property>
|
|
||||||
<property name="plugin-6" type="string" value="systray">
|
|
||||||
<property name="show-frame" type="bool" value="false"/>
|
|
||||||
<property name="square-icons" type="bool" value="true"/>
|
|
||||||
<property name="names-ordered" type="array">
|
|
||||||
<value type="string" value="pamac-tray"/>
|
|
||||||
<value type="string" value="connman-gtk"/>
|
|
||||||
</property>
|
|
||||||
<property name="known-legacy-items" type="array">
|
|
||||||
<value type="string" value="ethernet-netzverbindung »wired connection 1« ist aktiv"/>
|
|
||||||
<value type="string" value="netzwerk-manager-applet"/>
|
|
||||||
</property>
|
|
||||||
<property name="known-items" type="array">
|
|
||||||
<value type="string" value="Nextcloud"/>
|
|
||||||
</property>
|
|
||||||
</property>
|
|
||||||
<property name="plugin-8" type="string" value="pulseaudio">
|
|
||||||
<property name="enable-keyboard-shortcuts" type="bool" value="true"/>
|
|
||||||
<property name="show-notifications" type="bool" value="true"/>
|
|
||||||
</property>
|
|
||||||
<property name="plugin-9" type="string" value="power-manager-plugin"/>
|
|
||||||
<property name="plugin-10" type="string" value="notification-plugin"/>
|
|
||||||
<property name="plugin-11" type="string" value="separator">
|
|
||||||
<property name="style" type="uint" value="0"/>
|
|
||||||
</property>
|
|
||||||
<property name="plugin-12" type="string" value="clock"/>
|
|
||||||
<property name="plugin-13" type="string" value="separator">
|
|
||||||
<property name="style" type="uint" value="0"/>
|
|
||||||
</property>
|
|
||||||
<property name="plugin-14" type="string" value="actions"/>
|
|
||||||
<property name="plugin-15" type="string" value="showdesktop"/>
|
|
||||||
<property name="plugin-16" type="string" value="separator"/>
|
|
||||||
<property name="plugin-17" type="string" value="launcher">
|
|
||||||
<property name="items" type="array">
|
|
||||||
<value type="string" value="15869715091.desktop"/>
|
|
||||||
</property>
|
|
||||||
</property>
|
|
||||||
<property name="plugin-18" type="string" value="launcher">
|
|
||||||
<property name="items" type="array">
|
|
||||||
<value type="string" value="15869715092.desktop"/>
|
|
||||||
</property>
|
|
||||||
</property>
|
|
||||||
<property name="plugin-19" type="string" value="launcher">
|
|
||||||
<property name="items" type="array">
|
|
||||||
<value type="string" value="15869715093.desktop"/>
|
|
||||||
</property>
|
|
||||||
</property>
|
|
||||||
<property name="plugin-20" type="string" value="launcher">
|
|
||||||
<property name="items" type="array">
|
|
||||||
<value type="string" value="15869715094.desktop"/>
|
|
||||||
</property>
|
|
||||||
</property>
|
|
||||||
<property name="plugin-21" type="string" value="separator"/>
|
|
||||||
<property name="plugin-22" type="string" value="directorymenu">
|
|
||||||
<property name="base-directory" type="string" value="/home/artix"/>
|
|
||||||
</property>
|
|
||||||
<property name="plugin-1" type="string" value="whiskermenu">
|
|
||||||
<property name="button-icon" type="string" value="artixlinux-logo"/>
|
|
||||||
<property name="show-button-title" type="bool" value="true"/>
|
|
||||||
<property name="launcher-icon-size" type="int" value="3"/>
|
|
||||||
<property name="hover-switch-category" type="bool" value="true"/>
|
|
||||||
<property name="favorites-in-recent" type="bool" value="true"/>
|
|
||||||
<property name="position-search-alternate" type="bool" value="true"/>
|
|
||||||
<property name="position-categories-alternate" type="bool" value="true"/>
|
|
||||||
<property name="command-switchuser" type="string" value="gdmflexiserver"/>
|
|
||||||
<property name="favorites" type="array">
|
|
||||||
<value type="string" value="xfce4-web-browser.desktop"/>
|
|
||||||
<value type="string" value="xfce4-mail-reader.desktop"/>
|
|
||||||
<value type="string" value="xfce4-file-manager.desktop"/>
|
|
||||||
<value type="string" value="xfce4-terminal-emulator.desktop"/>
|
|
||||||
</property>
|
|
||||||
<property name="recent" type="array">
|
|
||||||
<value type="string" value="xfce4-file-manager.desktop"/>
|
|
||||||
<value type="string" value="xfce4-terminal-emulator.desktop"/>
|
|
||||||
</property>
|
|
||||||
</property>
|
|
||||||
<property name="plugin-7" type="string" value="genmon">
|
|
||||||
<property name="command" type="string" value=""/>
|
|
||||||
<property name="use-label" type="bool" value="true"/>
|
|
||||||
<property name="text" type="string" value="(genmon)"/>
|
|
||||||
<property name="update-period" type="int" value="30000"/>
|
|
||||||
<property name="enable-single-row" type="bool" value="true"/>
|
|
||||||
<property name="font" type="string" value="Roboto 11"/>
|
|
||||||
</property>
|
|
||||||
<property name="plugin-26" type="string" value="whiskermenu"/>
|
|
||||||
<property name="plugin-28" type="string" value="cpugraph">
|
|
||||||
<property name="update-interval" type="int" value="2"/>
|
|
||||||
<property name="time-scale" type="int" value="0"/>
|
|
||||||
<property name="size" type="int" value="16"/>
|
|
||||||
<property name="mode" type="int" value="1"/>
|
|
||||||
<property name="color-mode" type="int" value="0"/>
|
|
||||||
<property name="frame" type="int" value="0"/>
|
|
||||||
<property name="border" type="int" value="1"/>
|
|
||||||
<property name="bars" type="int" value="1"/>
|
|
||||||
<property name="per-core" type="int" value="0"/>
|
|
||||||
<property name="tracked-core" type="int" value="0"/>
|
|
||||||
<property name="in-terminal" type="int" value="1"/>
|
|
||||||
<property name="startup-notification" type="int" value="0"/>
|
|
||||||
<property name="load-threshold" type="int" value="0"/>
|
|
||||||
<property name="smt-stats" type="int" value="0"/>
|
|
||||||
<property name="smt-issues" type="int" value="0"/>
|
|
||||||
<property name="per-core-spacing" type="int" value="1"/>
|
|
||||||
<property name="command" type="string" value=""/>
|
|
||||||
<property name="background" type="array">
|
|
||||||
<value type="double" value="1"/>
|
|
||||||
<value type="double" value="1"/>
|
|
||||||
<value type="double" value="1"/>
|
|
||||||
<value type="double" value="0"/>
|
|
||||||
</property>
|
|
||||||
<property name="foreground-1" type="array">
|
|
||||||
<value type="double" value="0"/>
|
|
||||||
<value type="double" value="1"/>
|
|
||||||
<value type="double" value="0"/>
|
|
||||||
<value type="double" value="1"/>
|
|
||||||
</property>
|
|
||||||
<property name="foreground-2" type="array">
|
|
||||||
<value type="double" value="1"/>
|
|
||||||
<value type="double" value="0"/>
|
|
||||||
<value type="double" value="0"/>
|
|
||||||
<value type="double" value="1"/>
|
|
||||||
</property>
|
|
||||||
<property name="foreground-3" type="array">
|
|
||||||
<value type="double" value="0"/>
|
|
||||||
<value type="double" value="0"/>
|
|
||||||
<value type="double" value="1"/>
|
|
||||||
<value type="double" value="1"/>
|
|
||||||
</property>
|
|
||||||
<property name="smt-issues-color" type="array">
|
|
||||||
<value type="double" value="0.90000000000000002"/>
|
|
||||||
<value type="double" value="0"/>
|
|
||||||
<value type="double" value="0"/>
|
|
||||||
<value type="double" value="1"/>
|
|
||||||
</property>
|
|
||||||
<property name="foreground-system" type="array">
|
|
||||||
<value type="double" value="0.90000000000000002"/>
|
|
||||||
<value type="double" value="0.10000000000000001"/>
|
|
||||||
<value type="double" value="0.10000000000000001"/>
|
|
||||||
<value type="double" value="1"/>
|
|
||||||
</property>
|
|
||||||
<property name="foreground-user" type="array">
|
|
||||||
<value type="double" value="0.10000000000000001"/>
|
|
||||||
<value type="double" value="0.40000000000000002"/>
|
|
||||||
<value type="double" value="0.90000000000000002"/>
|
|
||||||
<value type="double" value="1"/>
|
|
||||||
</property>
|
|
||||||
<property name="foreground-nice" type="array">
|
|
||||||
<value type="double" value="0.90000000000000002"/>
|
|
||||||
<value type="double" value="0.80000000000000004"/>
|
|
||||||
<value type="double" value="0.20000000000000001"/>
|
|
||||||
<value type="double" value="1"/>
|
|
||||||
</property>
|
|
||||||
<property name="foreground-iowait" type="array">
|
|
||||||
<value type="double" value="0.20000000000000001"/>
|
|
||||||
<value type="double" value="0.90000000000000002"/>
|
|
||||||
<value type="double" value="0.40000000000000002"/>
|
|
||||||
<value type="double" value="1"/>
|
|
||||||
</property>
|
|
||||||
</property>
|
|
||||||
</property>
|
|
||||||
</channel>
|
|
||||||
Reference in New Issue
Block a user