texxasrulez / force_elastic
Roundcube webmail plugin that forces the Elastic skin on phones and tablets at runtime (no user preference changes).
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:roundcube-plugin
Requires
- php: >=7.3
- roundcube/plugin-installer: ^0.3.0
README
Forces the Elastic skin for requests coming from mobile devices — without changing the user's saved skin preference or your system default. This keeps small screens functional even when users have selected legacy/non-responsive skins.
- Repo: https://github.com/texxasrulez/force_elastic
- Type:
roundcube-plugin
- Requires: Roundcube 1.4+ (Elastic introduced in 1.4), PHP 7.3+
What it does
- Detects mobile clients early in request flow (
startup
andauthenticate
hooks). - Sets the runtime skin to
elastic
and, when present, updates the Output object's skin. - Uses Roundcube's browser detector if available; otherwise falls back to a tight UA regex.
- Never persists preferences. Desktop users keep their chosen skin.
Install via Composer (recommended)
This path installs straight from Packagist/Git and lets Roundcube's plugin-installer wire it up.
- From your Roundcube root directory:
composer require texxasrulez/force_elastic
- Enable the plugin in
config/config.inc.php
:
// Append to your existing list, do not duplicate other plugins $config['plugins'] = array_merge($config['plugins'] ?? [], ['force_elastic']); // or set explicitly: // $config['plugins'] = ['force_elastic', /* other plugins... */];
- Clear Roundcube caches (good hygiene after plugin changes):
bin/cleandb.sh || true bin/update.sh --skip-deps || true
Installing directly from Git (optional)
If you prefer to track the GitHub repo without Packagist:
cd /path/to/roundcube
composer config repositories.force_elastic git https://github.com/texxasrulez/force_elastic.git
composer require texxasrulez/force_elastic:dev-main
Manual install (no Composer)
- Copy the
force_elastic
plugin folder into Roundcube:
/path/to/roundcube/plugins/force_elastic
- Enable it in
config/config.inc.php
as shown above.
Configuration
An optional config file is provided. Copy plugins/force_elastic/config.inc.php.dist
to plugins/force_elastic/config.inc.php
and adjust as needed.
// Skin to force on mobile devices (keep 'elastic' unless you know what you're doing) $config['force_elastic.skin'] = 'elastic'; // Optionally disable the fallback UA sniff; rely solely on Roundcube's browser detector $config['force_elastic.use_ua_sniff'] = true;
No configuration is required for default behavior.
How detection works
- Prefer Roundcube's built-in browser detector (if available on your version/path).
- Fall back to a conservative
User-Agent
regex for common phones/tablets. - Apply skin change at runtime only; no DB writes and no preference mutations.
Uninstall
- Remove
'force_elastic'
from$config['plugins']
inconfig/config.inc.php
. - If installed via Composer:
composer remove texxasrulez/force_elastic
. - Delete
plugins/force_elastic/
if manually installed.
Troubleshooting
- Elastic isn’t applied on mobile: Check proxies/CDNs that might rewrite
User-Agent
. If so, rely on Roundcube's detector by disabling UA sniff in the plugin config. - Conflicts with other skin/branding plugins: Ensure
force_elastic
is loaded after any plugin that explicitly sets a skin for all requests. - Caching: Clear browser cache and Roundcube caches after first install.