PHPackages                             johndoh/swipe - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. johndoh/swipe

ActiveRoundcube-plugin[Utility &amp; Helpers](/categories/utility)

johndoh/swipe
=============

Adds swipe actions to the message list of Roundcube

0.6(5mo ago)115.3k↓50%6[1 issues](https://github.com/johndoh/roundcube-swipe/issues)GPL-3.0-or-laterJavaScriptPHP &gt;=8.1.0

Since Mar 6Pushed 5mo ago5 watchersCompare

[ Source](https://github.com/johndoh/roundcube-swipe)[ Packagist](https://packagist.org/packages/johndoh/swipe)[ Docs](https://github.com/johndoh/roundcube-swipe/)[ RSS](/packages/johndoh-swipe/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (9)Dependencies (1)Versions (14)Used By (0)

Roundcube Webmail Swipe
=======================

[](#roundcube-webmail-swipe)

This plugin adds left/right/down swipe actions to entries in the the message list on touch devices (tables/phones).

ATTENTION
---------

[](#attention)

This is just a snapshot from the GIT repository and is **NOT A STABLE version of Swipe**. It is Intended for use with the **GIT-master** version of Roundcube and it may not be compatible with older versions. Stable versions of Swipe are available from the [Roundcube plugin repository](https://plugins.roundcube.net/#/packages/johndoh/swipe)(for 1.4 and above) or the [releases section](https://github.com/johndoh/roundcube-swipe/releases) of the GitHub repository.

License
-------

[](#license)

This plugin is released under the [GNU General Public License Version 3+](https://www.gnu.org/licenses/gpl.html).

Even if skins might contain some programming work, they are not considered as a linked part of the plugin and therefore skins DO NOT fall under the provisions of the GPL license. See the README file located in the core skins folder for details on the skin license.

Install
-------

[](#install)

- Place this plugin folder into plugins directory of Roundcube
- Add swipe to $config\['plugins'\] in your Roundcube config

**NB:** When downloading the plugin from GitHub you will need to create a directory called skin and place the files in there, ignoring the root directory in the downloaded archive.

Supported skins
---------------

[](#supported-skins)

- Elastic

Supported browsers
------------------

[](#supported-browsers)

This plugin relies on [Pointer Events](https://caniuse.com/#feat=pointer) and should work in any browser which supports these. Vertical swipe actions require `touch-action: pan-down;` [support](https://caniuse.com/?search=pan-down). There is no support for Legacy Edge or Internet Explorer.

Configuration
-------------

[](#configuration)

To set the default actions add the following to your Roundcube config file:

```
$config['swipe_actions'] = [
  'messagelist' => [
    'left' => '',
    'right' => '',
    'down' => ''
  ],
  'contactlist' => [
    'left' => '',
    'right' => '',
    'down' => 'none'
  ]
];
```

Replace `` with your desired action from the list below. Users can configure the actions, overriding the defaults, from the List Options menu.

Supported actions
-----------------

[](#supported-actions)

*Mesasge List:*The following actions are available for left/right swipe:

- `archive` - Archive the message (Requires the Roundcube Archive plugin)
- `delete` - Delete the message
- `forward` - Forward the message
- `markasjunk` - Mark the message as junk (Requires the Roundcube Markasjunk plugin)
- `move` - Move the message to a chosen folder
- `reply` - Reply to the message
- `reply-all` - Reply all to the message
- `swipe-flagged` - Mark the message as flagged/unflagged
- `swipe-read` - Mark the message as read/unread
- `swipe-select` - Select/deselect the message
- `none` - Swipe disabled

The following actions are available for down swipe:

- `checkmail` - Check for new messages in the current folder
- `none` - Swipe disabled

*Contacts List:*The following actions are available for left/right swipe:

- `vcard_attachments` - Attach the contact to a new message as a vCard (Requires the Roundcube Vcard\_attachments plugin)
- `compose` - Compose a new message to this contact
- `delete` - Delete the contact
- `swipe-select` - Select/deselect the contact
- `none` - Swipe disabled

The following actions are available for down swipe:

- `none` - Swipe disabled

disabled\_actions and dont\_override
------------------------------------

[](#disabled_actions-and-dont_override)

This plugin respects the disabled\_actions config option for Roundcube commands. To prevent users from overriding swipe config you can add any of the following to dont\_override:

- `swipe_actions` - Prevent overriding all swipe config
- `swipe_actions.list` - e.g. `swipe_actions.mesasgelist` Prevent overriding of the swipe actions on a specific list, e.g. mesasgelist
- `swipe_actions.list.direction` - e.g. `swipe_actions.mesasgelist.left` Prevent overriding of the swipe actions on a specific list and direction

Interaction with other plugins
------------------------------

[](#interaction-with-other-plugins)

The `swipe_actions` hook is triggered when the plugin starts up on the list options menu. *Arguments:*

- list\_type - the name of list the swipe actions are being performed on, e.g. messagelist, used when selecting/saving config
- actions - an array of actions for this list in the format:

```
$args['actions'] = [
  'list_name' => '*JS list object name*',
  'selection_id' => '*JS element identifier e.g. UID*',
  'vertical' => [
    '*action_name*' => ['label' => '*display name*'],
    ...
  ],
  'horizontal' => [
    '*action_name*' => ['label' => '*display name*'],
    ...
  ]
];
```

*Return values:*

- list\_type
- actions

The `swipe-action` JS event is triggered when a swipe action is performed. Return `false` to abort the action or return a JSON object like this to assign an action:

```
{
  'class': '',
  'text': '',
  'callback': function(p) {  },
  'command': ''
};
```

Note: Only 1 of callback and command need to be supplied. If no callback is defined then the command is passed to the standard Swipe callback function.

Customizing the Elastic skin
----------------------------

[](#customizing-the-elastic-skin)

The colors and styles used by this plugin can be overridden by adding a `_custom.less` file to the `skins/elastic` sub-folder of this plugin and then recompiling the CSS.

###  Health Score

50

—

FairBetter than 96% of packages

Maintenance71

Regular maintenance activity

Popularity31

Limited adoption so far

Community18

Small or concentrated contributor base

Maturity66

Established project with proven stability

 Bus Factor1

Top contributor holds 94.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~449 days

Recently: every ~544 days

Total

6

Last Release

150d ago

PHP version history (3 changes)0.1PHP &gt;=5.2.1

0.4PHP &gt;=5.4.0

0.6PHP &gt;=8.1.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/db409b928852344aac3d851f33b7f1412026cddfc8a9a258a52d11af1ec23ca5?d=identicon)[johndoh](/maintainers/johndoh)

---

Top Contributors

[![johndoh](https://avatars.githubusercontent.com/u/88682?v=4)](https://github.com/johndoh "johndoh (163 commits)")[![sebastka](https://avatars.githubusercontent.com/u/35309144?v=4)](https://github.com/sebastka "sebastka (6 commits)")[![fvdm](https://avatars.githubusercontent.com/u/93784?v=4)](https://github.com/fvdm "fvdm (1 commits)")[![jonmoesli](https://avatars.githubusercontent.com/u/69861248?v=4)](https://github.com/jonmoesli "jonmoesli (1 commits)")[![ner00](https://avatars.githubusercontent.com/u/2269603?v=4)](https://github.com/ner00 "ner00 (1 commits)")[![NNowakowski](https://avatars.githubusercontent.com/u/16933892?v=4)](https://github.com/NNowakowski "NNowakowski (1 commits)")

---

Tags

swipegesture

### Embed Badge

![Health badge](/badges/johndoh-swipe/health.svg)

```
[![Health](https://phpackages.com/badges/johndoh-swipe/health.svg)](https://phpackages.com/packages/johndoh-swipe)
```

###  Alternatives

[roundcube/carddav

CardDAV adapter for connecting to CardDAV-enabled addressbooks

28155.3k](/packages/roundcube-carddav)[johndoh/globaladdressbook

Adds global address books to Roundcube

706.0k](/packages/johndoh-globaladdressbook)[johndoh/sauserprefs

Control SpamAssassin settings from within Roundcube

583.6k](/packages/johndoh-sauserprefs)[jfcherng-roundcube/show-folder-size

A Roundcube plugin which shows folder size.

2515.2k](/packages/jfcherng-roundcube-show-folder-size)[kolab/calendar

Calendar plugin

3010.5k](/packages/kolab-calendar)[texxasrulez/account_details

Display additional information for the current user and much more.

121.6k](/packages/texxasrulez-account-details)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
