A comprehensive Nextcloud theme that customizes the interface for IONOS HiDrive Next, featuring custom branding, global navigation, and enhanced user experience.
- Custom Branding: IONOS-specific logos, colors, and styling
- Global Navigation: Modern Svelte-based navigation component
- Multi-language Support: Translations for German, English, Spanish, French, Italian, Dutch, and Swedish
- Enhanced UI: Custom CSS styling and layout improvements
- Theme Enforcement: Optional exclusive theme mode
- Responsive Design: Mobile and desktop optimized
- Nextcloud server installation
- Admin access to Nextcloud configuration
- Node.js v20+ (for development)
-
Install the theme:
# Copy theme to Nextcloud themes directory cp -r nc-ionos-theme /path/to/nextcloud/themes/
-
Activate the theme:
Option A: Using occ command (recommended):
# Navigate to your Nextcloud directory cd /path/to/nextcloud # Activate the theme sudo -u www-data php occ config:system:set theme --value="nc-ionos-theme"
Option B: Manual configuration: Add to your Nextcloud
config.php
:'theme' => 'nc-ionos-theme',
-
Optional: Enforce theme (makes it exclusive):
Using occ command:
sudo -u www-data php occ config:system:set enforce-theme --value="nc-ionos-theme"
Manual configuration:
'enforce-theme' => 'nc-ionos-theme',
-
Configure IONOS settings:
Using occ command:
sudo -u www-data php occ config:system:set ionos_homepage --value="https://www.ionos.com" sudo -u www-data php occ config:system:set ionos_help_target_link --value="https://help.ionos.com"
Manual configuration: Add to your
config.php
:'ionos_homepage' => 'https://www.ionos.com', 'ionos_help_target_link' => 'https://help.ionos.com',
nc-ionos-theme/
โโโ README.md # This file
โโโ LICENSE.txt # AGPL-3.0 license
โโโ defaults.php # Theme configuration and branding
โโโ apps/ # App-specific customizations
โ โโโ files/js/ # File app JavaScript overrides
โโโ core/ # Core Nextcloud customizations
โ โโโ css/ # Custom stylesheets
โ โโโ js/custom-elements/ # Global navigation component
โ โโโ l10n/ # Translation files
โ โโโ templates/ # PHP template overrides
โ โโโ translationfiles/ # Translation source files
โโโ IONOS/ # Svelte global navigation development
โโโ src/ # Svelte source code
โโโ package.json # Node.js dependencies
โโโ vite.config.ts # Build configuration
The theme includes a modern Svelte-based global navigation component located in the IONOS/
directory.
cd IONOS/
npm install
npm run dev # Start development server
npm run build # Build for production
cd IONOS/
make run-dev # Start containerized development
make run-build # Build in container
Primary brand color is defined in defaults.php
:
public function getColorPrimary(): string {
return '#745bca'; // IONOS purple
}
- Add new language files in
core/l10n/
- Create corresponding
.po
files incore/translationfiles/
- Update the template in
core/translationfiles/templates/core.pot
Add styles to core/css/
directory:
guest.css
- Styling for guest/login pagesserver.css
- General server styling
The theme supports various configuration options in Nextcloud's config.php
:
Option | Description | Default |
---|---|---|
theme |
Activate the theme | 'nc-ionos-theme' |
enforce-theme |
Make theme exclusive | 'nc-ionos-theme' |
ionos_homepage |
IONOS homepage URL | Required |
ionos_help_target_link |
Help documentation URL | Required |
Supported languages:
- ๐ฉ๐ช German (de_DE)
- ๐บ๐ธ English (en)
- ๐ช๐ธ Spanish (es)
- ๐ซ๐ท French (fr)
- ๐ฎ๐น Italian (it)
- ๐ณ๐ฑ Dutch (nl)
- ๐ธ๐ช Swedish (sv)
The theme includes a sophisticated synchronization system to keep core customizations in sync with upstream Nextcloud changes.
The .github/scripts/generate_core_patches.sh
script automates the process of generating Git patches for synchronizing changes from the parent Nextcloud repository to the theme's core directory.
# Default: exclude localization files
./.github/scripts/generate_core_patches.sh
# Include localization files in patches
INCLUDE_L10N=true ./.github/scripts/generate_core_patches.sh
Environment Variable | Description | Default |
---|---|---|
INCLUDE_L10N |
Include/exclude localization files | false |
- Analyzes commits: Scans commits after a specified start commit that affect the
core/
directory - Filters files: Only includes files that exist in the target directory or are newly created templates
- Generates patches: Creates individual patch files for each relevant commit
- Maintains history: Preserves commit messages and adds cherry-pick trailers for traceability
- Always excluded: CSS files, certain legacy templates
- Conditionally excluded: l10n files (when
INCLUDE_L10N=false
) - Template files: Only existing templates in target + newly created after start commit
- Other files: Only if they exist in the target directory
After patch generation:
cd themes/nc-ionos-theme
# Apply each patch
git am < patches/0001-*.patch
git am < patches/0002-*.patch
# ... continue for all patches
# If conflicts occur
git add .
git am --continue
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). See LICENSE.txt for details.
- Follow Conventional Commits for commit messages
- Use semantic versioning for releases
- Ensure all code passes linting and formatting checks
Example commit:
git commit -sm "feat(navigation): add user menu dropdown component"
HiDrive Next - powered by IONOS SE
This theme transforms Nextcloud into a branded experience for IONOS customers, providing seamless integration with the IONOS ecosystem while maintaining all Nextcloud functionality.