Ferdium Documentation

repository·develop·Indexed 26 days ago

https://github.com/ferdium/ferdium-app

A desktop application for organizing messaging and web services like WhatsApp, Slack, and Telegram into a single interface. This documentation covers installation, migration from Ferdi, custom CSS styling, D-Bus API integration for Linux, internal server configuration, and a developer reference for the ApiInterface and React UI components.

Tokens
12.1K
Snippets
8
Records
76
Agent score
89%

What's inside Ferdium

  1. Integrate Ferdium with Linux desktop environments via D-Bus

    develop
    Ferdium provides an inter-process communication interface on Linux systems using D-Bus. This allows third-party applications (like status bars) to interact with Ferdium to display unread notification counts or to mute/unmute notifications.
  2. Import configuration data into Ferdium

    develop

    To restore a previous setup or migrate to a new instance, you can import a .ferdi-data or .ferdium-data file.

    1. Ensure Ferdium is running on your system.
    2. On the "Get Started" screen, navigate to Help > Import/Export Configuration Data. This will open a local URL in your default browser.
    3. Click on import your data from a ".ferdium-data" or ".ferdi-data" file.
    4. Use the File browser button to select your previously saved export.ferdi-data file.
    5. Click the "Import data" button.
    6. Restart the application.

    Important Notes:

    • Session Data: You must log in to all services manually after importing. Session information is stored locally only and is not included in the export/import process.
    • Duplicate Services: Importing data adds services to your current list rather than overriding them. To avoid duplicates, delete any existing services before performing the import.
  3. Migrate from Ferdi to Ferdium

    develop

    If you are a pre-existing Ferdi user, you can migrate your profile so Ferdium can pick up your existing configurations using migration scripts.

    • Windows users: Use the .ps1 scripts located in ./scripts/migration.
    • UNIX (Linux and MacOS) users: Use the .sh scripts located in ./scripts/migration.

    For detailed instructions, refer to docs/MIGRATION.md.

  4. Export backups from ferdium-internal-server

    develop

    Because ferdium-internal-server runs as a local server, settings are not automatically synced. To manually backup your settings:

    1. In Ferdium, navigate to Help > Import/Export Configuration Data.
    2. This will open the running server page in your web browser.
    3. Select the option to export and save the generated file to your local machine.
  5. Export configuration data from Ferdi or Ferdium

    develop

    You can export your current setup (services, configurations, etc.) to a .ferdi-data file for backup or migration. This works for both account-based and accountless sessions.

    1. Ensure the application is running on your system.
    2. Navigate to Help > Import/Export Configuration Data in the application menu. This will open a URL in your default browser.
    3. Click on export your data to a ".ferdi-data" file.
    4. Save the resulting export.ferdi-data file to a secure location.
  6. Import Franz or Ferdi accounts into ferdium-internal-server

    develop

    You can import a full Franz account, including all settings, services, and workspaces, into ferdium-internal-server:

    1. Ensure CONNECT_WITH_FRANZ is set to true in your env.ini configuration.
    2. In Ferdium, go to Help > Import/Export Configuration Data to open the server page in your browser.
    3. Log in using your Franz account credentials.
    4. The server will automatically create a new user with those credentials and copy your Franz settings, services, and workspaces.
  7. Run the Ferdium D-Bus status bar example

    develop

    Ferdium provides a Python-based example module for status bars (e.g., Waybar or Polybar) located in docs/dbus.

    To run this example, you must have:

    • Python 3.11
    • The dbus-next PyPI package
    • The ferdium-dbus-py client library

    The example script ferdium_bar.py can be used to display unread counts. You can inspect available commands using the --help flag.

  8. Configure ferdium-internal-server via env.ini

    develop

    The ferdium-internal-server uses an env.ini file for configuration. In addition to standard AdonisJS settings, you can configure the following custom setting:

    • CONNECT_WITH_FRANZ (true or false, default: true): When set to true, the server enables connections to the Franz server, allowing you to show the full Franz/Ferdi recipe library and import Franz/Ferdi accounts.
  9. Style Ferdium with custom CSS

    develop

    You can apply custom styles to the Ferdium UI by creating or editing a custom.css file located in the USER_DATA/Ferdium/config/ directory.

    The location of USER_DATA varies by platform:

    • Windows: %APPDATA%
    • Linux: $XDG_CONFIG_HOME or ~/.config/
    • MacOS: ~/Library/Application Support
  10. Use the Select component

    develop

    The Select component is a custom dropdown UI element used for selecting values from a list of options. It supports searching (filtering), keyboard navigation (arrow keys and Enter), and can be configured as a controlled or uncontrolled component. It also integrates with a label and error message system via the IFormField interface.

    Key Features

    • Searchable: If showSearch is true, a search input appears when the dropdown is open.
    • Keyboard Navigation: Supports ArrowUp, ArrowDown, and Enter to navigate and select options.
    • Data Attributes: Any object passed to the data prop is applied as data-* attributes to the underlying hidden input element.
    • Validation: Displays error messages if the error prop is provided.