{"id":13406346,"url":"https://github.com/element-hq/element-desktop","last_synced_at":"2026-02-17T17:06:26.272Z","repository":{"id":37955067,"uuid":"226332148","full_name":"element-hq/element-desktop","owner":"element-hq","description":"A glossy Matrix collaboration client for desktop.","archived":false,"fork":false,"pushed_at":"2025-04-10T15:23:33.000Z","size":30717,"stargazers_count":1250,"open_issues_count":425,"forks_count":293,"subscribers_count":28,"default_branch":"develop","last_synced_at":"2025-04-11T04:59:00.480Z","etag":null,"topics":["desktop","element","element-web","hacktoberfest","matrix","matrix-chat"],"latest_commit_sha":null,"homepage":"https://element.io","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/element-hq.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-AGPL-3.0","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-06T13:07:36.000Z","updated_at":"2025-04-10T19:26:45.000Z","dependencies_parsed_at":"2023-10-14T15:25:29.573Z","dependency_job_id":"ae5aae71-6ce7-4ccb-b587-d28e3d1d0df4","html_url":"https://github.com/element-hq/element-desktop","commit_stats":null,"previous_names":["element-hq/element-desktop","vector-im/element-desktop"],"tags_count":298,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/element-hq%2Felement-desktop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/element-hq%2Felement-desktop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/element-hq%2Felement-desktop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/element-hq%2Felement-desktop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/element-hq","download_url":"https://codeload.github.com/element-hq/element-desktop/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248345273,"owners_count":21088244,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["desktop","element","element-web","hacktoberfest","matrix","matrix-chat"],"created_at":"2024-07-30T19:02:27.788Z","updated_at":"2026-02-17T17:06:26.265Z","avatar_url":"https://github.com/element-hq.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"![Build](https://github.com/vector-im/element-desktop/actions/workflows/build.yaml/badge.svg)\n![Static Analysis](https://github.com/vector-im/element-desktop/actions/workflows/static_analysis.yaml/badge.svg)\n[![Localazy](https://img.shields.io/endpoint?url=https%3A%2F%2Fconnect.localazy.com%2Fstatus%2Felement-web%2Fdata%3Fcontent%3Dall%26title%3Dlocalazy%26logo%3Dtrue)](https://localazy.com/p/element-web)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=element-desktop\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=element-desktop)\n[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=element-desktop\u0026metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=element-desktop)\n[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=element-desktop\u0026metric=bugs)](https://sonarcloud.io/summary/new_code?id=element-desktop)\n\n# Element Desktop\n\nElement Desktop is a Matrix client for desktop platforms with Element Web at its core.\n\n# First Steps\n\nBefore you do anything else, fetch the dependencies:\n\n```\npnpm install\n```\n\n# Fetching Element\n\nSince this package is just the Electron wrapper for Element Web, it doesn't contain any of the Element Web code,\nso the first step is to get a working copy of Element Web. There are a few ways of doing this:\n\n```\n# Fetch the prebuilt release Element package from the element-web GitHub releases page. The version\n# fetched will be the same as the local element-desktop package.\n# We're explicitly asking for no config, so the packaged Element will have no config.json.\npnpm run fetch --noverify --cfgdir \"\"\n```\n\n...or if you'd like to use GPG to verify the downloaded package:\n\n```\n# Fetch the Element public key from the element.io web server over a secure connection and import\n# it into your local GPG keychain (you'll need GPG installed). You only need to to do this\n# once.\npnpm run fetch --importkey\n# Fetch the package and verify the signature\npnpm run fetch --cfgdir \"\"\n```\n\n...or either of the above, but fetching a specific version of Element:\n\n```\n# Fetch the prebuilt release Element package from the element-web GitHub releases page. The version\n# fetched will be the same as the local element-desktop package.\npnpm run fetch --noverify --cfgdir \"\" v1.5.6\n```\n\nIf you only want to run the app locally and don't need to build packages, you can\nprovide the `webapp` directory directly:\n\n```\n# Assuming you've checked out and built a copy of element-web in ../element-web.\n# Note that you will not be able to `pnpm build` after this, but `pnpm start`\n# will work fine.\nln -s ../element-web/webapp ./\n```\n\n[TODO: add support for fetching develop builds, arbitrary URLs and arbitrary paths]\n\n# Building\n\n## Native Build\n\nTODO: List native pre-requisites\n\nOptionally, [build the native modules](https://github.com/vector-im/element-desktop/blob/develop/docs/native-node-modules.md),\nwhich include support for searching in encrypted rooms and secure storage. Skipping this step is fine, you just won't have those features.\n\nThen, run\n\n```\npnpm run build\n```\n\nThis will do a couple of things:\n\n- Run the `setversion` script to set the local package version to match whatever\n  version of Element you installed above.\n- Run electron-builder to build a package. The package built will match the operating system\n  you're running the build process on.\n\n## Docker\n\nAlternatively, you can also build using docker, which will always produce the linux package:\n\n```\n# Run this once to make the docker image\npnpm run docker:setup\n\npnpm run docker:install\n# if you want to build the native modules (this will take a while)\npnpm run docker:build:native\npnpm run docker:build\n```\n\nAfter running, the packages should be in `dist/`.\n\n# Starting\n\nIf you'd just like to run the electron app locally for development:\n\n```\npnpm start\n```\n\n# Config\n\nIf you'd like the packaged Element to have a configuration file, you can create a\nconfig directory and place `config.json` in there, then specify this directory\nwith the `--cfgdir` option to `pnpm run fetch`, eg:\n\n```\nmkdir myconfig\ncp /path/to/my/config.json myconfig/\npnpm run fetch --cfgdir myconfig\n```\n\nThe config dir for the official Element app is in `element.io`. If you use this,\nyour app will auto-update itself using builds from element.io.\n\n# Profiles\n\nTo run multiple instances of the desktop app for different accounts, you can\nlaunch the executable with the `--profile` argument followed by a unique\nidentifier, e.g `element-desktop --profile Work` for it to run a separate profile and\nnot interfere with the default one.\n\nAlternatively, a custom location for the profile data can be specified using the\n`--profile-dir` flag followed by the desired path.\n\n# User-specified config.json\n\n- `%APPDATA%\\$NAME\\config.json` on Windows\n- `$XDG_CONFIG_HOME/$NAME/config.json` or `~/.config/$NAME/config.json` on Linux\n- `~/Library/Application Support/$NAME/config.json` on macOS\n\nIn the paths above, `$NAME` is typically `Element`, unless you use `--profile\n$PROFILE` in which case it becomes `Element-$PROFILE`, or it is using one of\nthe above created by a pre-1.7 install, in which case it will be `Riot` or\n`Riot-$PROFILE`.\n\nYou may also specify a different path entirely for the `config.json` file by\nproviding the `--config $YOUR_CONFIG_JSON_FILE` to the process, or via the\n`ELEMENT_DESKTOP_CONFIG_JSON` environment variable.\n\n# Translations\n\nTo add a new translation, head to the [translating doc](https://github.com/vector-im/element-web/blob/develop/docs/translating.md).\n\nFor a developer guide, see the [translating dev doc](https://github.com/vector-im/element-web/blob/develop/docs/translating-dev.md).\n\n# Report bugs \u0026 give feedback\n\nIf you run into any bugs or have feedback you'd like to share, please let us know on GitHub.\n\nTo help avoid duplicate issues, please [view existing issues](https://github.com/vector-im/element-web/issues?q=is%3Aopen+is%3Aissue+sort%3Areactions-%2B1-desc) first (and add a +1) or [create a new issue](https://github.com/vector-im/element-web/issues/new/choose) if you can't find it. Please note that this issue tracker is associated with the [element-web](https://github.com/vector-im/element-web) repo, but is also applied to the code in this repo as well.\n\n## Copyright \u0026 License\n\nCopyright (c) 2016-2017 OpenMarket Ltd\n\nCopyright (c) 2017 Vector Creations Ltd\n\nCopyright (c) 2017-2025 New Vector Ltd\n\nThis software is multi licensed by New Vector Ltd (Element). It can be used either:\n\n(1) for free under the terms of the GNU Affero General Public License (as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version); OR\n\n(2) for free under the terms of the GNU General Public License (as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version); OR\n\n(3) under the terms of a paid-for Element Commercial License agreement between you and Element (the terms of which may vary depending on what you and Element have agreed to).\nUnless required by applicable law or agreed to in writing, software distributed under the Licenses is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the Licenses for the specific language governing permissions and limitations under the Licenses.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felement-hq%2Felement-desktop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felement-hq%2Felement-desktop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felement-hq%2Felement-desktop/lists"}