mirror of
https://github.com/SchildiChat/schildichat-desktop.git
synced 2025-07-04 06:22:21 +02:00
Compare commits
40 commits
v1.7.12
...
v1.7.22-sc
Author | SHA1 | Date | |
---|---|---|---|
![]() |
d8e3854033 | ||
![]() |
8d8a5044f1 | ||
![]() |
2654090ccc | ||
![]() |
e31047073f | ||
![]() |
1f5be68a19 | ||
![]() |
e2465f6176 | ||
![]() |
4efaa0782b | ||
![]() |
a95770fb49 | ||
![]() |
e417f25130 | ||
![]() |
80e65529bb | ||
![]() |
263a269da9 | ||
![]() |
3d4259827d | ||
![]() |
52a7dfcd82 | ||
![]() |
ed9740a4c2 | ||
![]() |
cdd8ec775c | ||
![]() |
88ef11d716 | ||
![]() |
acd5e71f6c | ||
![]() |
412cbad76b | ||
![]() |
dfef402e7f | ||
![]() |
651ffc13df | ||
![]() |
f0b142e996 | ||
![]() |
9896d3718d | ||
![]() |
3b93d5e2c6 | ||
![]() |
d3c91d680b | ||
![]() |
d0b44c9f96 | ||
![]() |
32f684a88a | ||
![]() |
26a25f1f34 | ||
![]() |
b6e2375d57 | ||
![]() |
f455ac64c3 | ||
![]() |
d88e73bebe | ||
![]() |
bfb153dfed | ||
![]() |
2616080e27 | ||
![]() |
1a1f8ae42a | ||
![]() |
93547b09d8 | ||
![]() |
2f51bd750d | ||
![]() |
de5fa4e9e4 | ||
![]() |
511bc6a2bc | ||
![]() |
7cfef33376 | ||
![]() |
1efd1b0ffe | ||
![]() |
3c3c600ec7 |
23 changed files with 698 additions and 54 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1 +1,3 @@
|
|||
release.mk
|
||||
/release
|
||||
/local-pkgbuild
|
||||
|
|
201
LICENSE
Normal file
201
LICENSE
Normal file
|
@ -0,0 +1,201 @@
|
|||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
95
Makefile
95
Makefile
|
@ -1,18 +1,52 @@
|
|||
.PHONY: all web desktop desktop-common linux windows clean
|
||||
.PHONY: all setup reskindex web desktop desktop-common linux debian pacman local-pkgbuild local-pkgbuild-install windows windows-portable
|
||||
.PHONY: web-release debian-release pacman-release windows-setup-release windows-unpacked-release windows-portable-release windows-release release
|
||||
.PHONY: clean
|
||||
|
||||
CFGDIR ?= configs/sc
|
||||
|
||||
all: desktop
|
||||
all: release
|
||||
|
||||
YARN ?= yarnpkg
|
||||
|
||||
VERSION := $(shell grep version element-desktop/package.json | sed 's|.*: \"\(.*\)\",|\1|')
|
||||
WEB_APP_NAME := $(shell grep '"name"' element-web/package.json | head -n 1 | sed 's|.*: \"\(.*\)\",|\1|')
|
||||
DESKTOP_APP_NAME := $(shell grep '"name"' element-desktop/package.json | head -n 1 | sed 's|.*: \"\(.*\)\",|\1|')
|
||||
PRODUCT_NAME := $(shell grep '"productName"' element-desktop/package.json | sed 's|.*: \"\(.*\)\",|\1|')
|
||||
|
||||
WEB_OUT := element-web/dist
|
||||
WEB_OUT_DIST_VERSION := $(VERSION)
|
||||
OUT_WEB := $(WEB_OUT)/$(WEB_APP_NAME)-$(WEB_OUT_DIST_VERSION).tar.gz
|
||||
|
||||
DESKTOP_OUT := element-desktop/dist
|
||||
OUT_DEB64 := $(DESKTOP_OUT)/$(DESKTOP_APP_NAME)_$(VERSION)_amd64.deb
|
||||
OUT_PAC64 := $(DESKTOP_OUT)/$(DESKTOP_APP_NAME)-$(VERSION).pacman
|
||||
OUT_APPIMAGE64 := $(DESKTOP_OUT)/$(PRODUCT_NAME)-$(VERSION).AppImage
|
||||
OUT_TARXZ64 := $(DESKTOP_OUT)/$(DESKTOP_APP_NAME)-$(VERSION).tar.xz
|
||||
OUT_WIN64 := $(DESKTOP_OUT)/$(PRODUCT_NAME)\ Setup\ $(VERSION).exe
|
||||
OUT_WIN64_PORTABLE := $(DESKTOP_OUT)/$(PRODUCT_NAME)\ $(VERSION).exe
|
||||
OUT_WIN64_BETTER_NAME := $(PRODUCT_NAME)_Setup_v$(VERSION).exe
|
||||
OUT_WIN64_UNPACKED_BETTER_NAME := $(PRODUCT_NAME)_win-unpacked_v$(VERSION).zip
|
||||
OUT_WIN64_PORTABLE_BETTER_NAME := $(PRODUCT_NAME)_win-portable_v$(VERSION)
|
||||
OUT_MACOS := $(DESKTOP_OUT)/$(PRODUCT_NAME)-$(VERSION).dmg
|
||||
|
||||
RELEASE_DIR := release
|
||||
CURRENT_RELEASE_DIR := $(RELEASE_DIR)/$(VERSION)
|
||||
|
||||
|
||||
-include release.mk
|
||||
|
||||
|
||||
web:
|
||||
setup:
|
||||
if [ ! -L "element-desktop/webapp" ]; then ./setup.sh; fi
|
||||
cp $(CFGDIR)/config.json element-web/
|
||||
|
||||
reskindex: setup
|
||||
$(YARN) --cwd matrix-react-sdk reskindex
|
||||
$(YARN) --cwd element-web reskindex
|
||||
|
||||
web: export DIST_VERSION=$(WEB_OUT_DIST_VERSION)
|
||||
web: setup reskindex
|
||||
$(YARN) --cwd element-web dist
|
||||
echo "$(VERSION)" > element-web/webapp/version
|
||||
|
||||
desktop-common: web
|
||||
$(YARN) --cwd element-desktop run fetch --cfgdir ''
|
||||
|
@ -29,11 +63,64 @@ debian: desktop-common
|
|||
pacman: desktop-common
|
||||
$(YARN) --cwd element-desktop run build64pacman
|
||||
|
||||
appimage: desktop-common
|
||||
$(YARN) --cwd element-desktop run build64appimage
|
||||
|
||||
windows: desktop-common
|
||||
$(YARN) --cwd element-desktop run build64windows
|
||||
|
||||
windows-portable: desktop-common
|
||||
$(YARN) --cwd element-desktop run build64windows-portable
|
||||
|
||||
macos: desktop-common
|
||||
$(YARN) --cwd element-desktop run build --mac dmg -c.mac.identity=null
|
||||
|
||||
local-pkgbuild: debian
|
||||
./create_local_pkgbuild.sh $(VERSION) $(DESKTOP_APP_NAME) $(PRODUCT_NAME) $(OUT_DEB64)
|
||||
|
||||
local-pkgbuild-install: local-pkgbuild
|
||||
cd local-pkgbuild; makepkg --install
|
||||
|
||||
web-release: web
|
||||
mkdir -p $(CURRENT_RELEASE_DIR)
|
||||
cp $(OUT_WEB) $(CURRENT_RELEASE_DIR)
|
||||
|
||||
debian-release: debian
|
||||
mkdir -p $(CURRENT_RELEASE_DIR)
|
||||
cp $(OUT_DEB64) $(CURRENT_RELEASE_DIR)
|
||||
|
||||
pacman-release: pacman
|
||||
mkdir -p $(CURRENT_RELEASE_DIR)
|
||||
cp $(OUT_PAC64) $(CURRENT_RELEASE_DIR)
|
||||
|
||||
appimage-release: appimage
|
||||
mkdir -p $(CURRENT_RELEASE_DIR)
|
||||
cp $(OUT_APPIMAGE64) $(CURRENT_RELEASE_DIR)
|
||||
|
||||
windows-setup-release: windows
|
||||
mkdir -p $(CURRENT_RELEASE_DIR)
|
||||
cp $(OUT_WIN64) $(CURRENT_RELEASE_DIR)/$(OUT_WIN64_BETTER_NAME)
|
||||
|
||||
windows-unpacked-release: windows
|
||||
mkdir -p $(CURRENT_RELEASE_DIR)
|
||||
cd element-desktop/dist/win-unpacked && zip -r ../../../$(CURRENT_RELEASE_DIR)/$(OUT_WIN64_UNPACKED_BETTER_NAME) *
|
||||
|
||||
windows-portable-release: windows-portable
|
||||
./windowsportable.sh $(OUT_WIN64_PORTABLE) $(OUT_WIN64_PORTABLE_BETTER_NAME) $(CURRENT_RELEASE_DIR) $(VERSION)
|
||||
|
||||
windows-release: windows-setup-release windows-unpacked-release windows-portable-release
|
||||
|
||||
macos-release: macos
|
||||
mkdir -p $(CURRENT_RELEASE_DIR)
|
||||
cp $(OUT_MACOS) $(CURRENT_RELEASE_DIR)
|
||||
|
||||
release: web-release debian-release pacman-release windows-release
|
||||
|
||||
clean:
|
||||
$(YARN) --cwd matrix-js-sdk clean
|
||||
$(YARN) --cwd matrix-react-sdk clean
|
||||
$(YARN) --cwd element-web clean
|
||||
$(YARN) --cwd element-desktop clean
|
||||
rm -f element-desktop/webapp
|
||||
rm -rf element-web/dist
|
||||
rm -rf local-pkgbuild
|
||||
|
|
83
README.md
83
README.md
|
@ -1,37 +1,32 @@
|
|||
# SchildiChat-Desktop
|
||||
# SchildiChat Web/Desktop
|
||||
|
||||
SchildiChat-Desktop is a fork of [Element-Web](https://github.com/vector-im/element-web)/[-Desktop](https://github.com/vector-im/element-desktop).
|
||||
|
||||
The most important changes of SchildiChat-Desktop compared to Element are:
|
||||
SchildiChat Web/Desktop is a fork of Element [Web](https://github.com/vector-im/element-web)/[Desktop](https://github.com/vector-im/element-desktop).
|
||||
|
||||
The most important changes of SchildiChat Web/Desktop compared to Element Web/Desktop are:
|
||||
- A unifed chat list for both direct and group chats
|
||||
- Message bubbles
|
||||
- Bigger items in the room list
|
||||
- … and more!
|
||||
|
||||
While SchildiChat-Desktop should be already usable as is, it's still better seen as a
|
||||
proof-of-concept rather than a finished product, as there are still a few UX bugs
|
||||
remaining, and no ways to configure Schildi's features.
|
||||
Furthermore, I don't know how much more work I'm going to put into this, but
|
||||
if anybody wants to help improving it, contributions are welcome!
|
||||
|
||||
Downloads for Desktop: https://github.com/SchildiChat/schildichat-desktop/releases <br/>
|
||||
Hosted web variant: https://schildiweb.spiritcroc.de/
|
||||
Desktop downloads with installation instructions are listed on our website: [https://schildi.chat/desktop](https://schildi.chat/desktop)
|
||||
Hosted web variant: [https://app.schildi.chat/](https://app.schildi.chat/)
|
||||
|
||||
Feel free to [join the discussion on matrix](https://matrix.to/#/#schildichat-web:matrix.org).
|
||||
|
||||
<img src="https://raw.githubusercontent.com/SchildiChat/schildichat-desktop/sc/screenshots/1.png"/>
|
||||
|
||||
|
||||
# Building SchildiChat-Desktop
|
||||
## Building SchildiChat Web/Desktop
|
||||
|
||||
This particular repo is a wrapper project for element-desktop, element-web, matrix-react-sdk and matrix-js-sdk, in order to build SchildiChat-Desktop.
|
||||
This particular repo is a wrapper project for element-desktop, element-web, matrix-react-sdk and matrix-js-sdk in order to build SchildiChat Web **and** Desktop.
|
||||
|
||||
### Install dependencies
|
||||
|
||||
## Debian compilation dependencies
|
||||
#### Debian build dependencies
|
||||
|
||||
Since Debian is usually slow to update packages on its stable releases, some dependencies
|
||||
might not be recent enough to building Schildi.
|
||||
Here are the dependencies which I had to install for compilation on Debian 10:
|
||||
Since Debian is usually slow to update packages on its stable releases,
|
||||
some dependencies might not be recent enough to build SchildiChat.
|
||||
The following are the dependencies required to build SchildiChat Web/Desktop on Debian 10:
|
||||
|
||||
```
|
||||
# apt install vim curl git make gcc g++ libsqlcipher-dev pkg-config libsecret-1-dev bsdtar
|
||||
|
@ -49,18 +44,58 @@ $ echo 'export PATH="$PATH:$HOME/.cargo/bin"' >> .bashrc
|
|||
$ source .bashrc
|
||||
```
|
||||
|
||||
## Initial setup
|
||||
#### macOS build dependencies
|
||||
|
||||
##### Install brew package manager
|
||||
```
|
||||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
```
|
||||
|
||||
##### Install packages
|
||||
|
||||
```
|
||||
brew install tcl rust node gpg vim curl git yarn git make gcc
|
||||
```
|
||||
|
||||
|
||||
### Initial setup
|
||||
|
||||
```
|
||||
git clone --recurse-submodules https://github.com/SchildiChat/schildichat-desktop.git
|
||||
cd schildichat-desktop
|
||||
./setup.sh
|
||||
make setup # optional step if using the other make targets
|
||||
```
|
||||
|
||||
## Build
|
||||
### Create release builds
|
||||
|
||||
`make`
|
||||
Those are the builds distributed via GitHub releases.
|
||||
|
||||
## Install
|
||||
```
|
||||
# The single make targets are explained below
|
||||
make [{web|debian|windows-setup|windows-portable|macos}-release]
|
||||
```
|
||||
|
||||
Installable packages should appear in element-desktop/dist/.
|
||||
After that these packages which belong to to their respective make target should appear in release/\<version\>/:
|
||||
- `web`: _schildichat-web-\<version\>.tar.gz_: archive that can be unpacked and served by a **web** server (copy `config.sample.json` to `config.json` and adjust the [configuration](https://github.com/SchildiChat/element-web/blob/sc/docs/config.md) to your likings)
|
||||
- `debian`: file ready for installation on a **Debian Linux** (based) system via `dpkg -i schildichat-desktop_<version>_amd64.deb`
|
||||
- `windows-setup`: _SchildiChat_Setup_v\<version\>.exe_: file ready for **installation** on a **Windows** system
|
||||
- `windows-portable`: _SchildiChat_win-portable_v\<version\>.zip_: **portable** version for a **Windows** system – take SchildiChat together with your login data around with you (the archive contains a readme with **instructions** and **notes**)
|
||||
- `macos`: Build a *.dmg for macOS
|
||||
|
||||
#### Additional make targets not used for GitHub releases
|
||||
- `pacman`: file ready for installation on an **Arch Linux** (based) system via `pacman -U schildichat-desktop-<version>.pacman`
|
||||
- `windows-unpacked`: _SchildiChat_win-unpacked_v\<version\>.zip_: **unpacked** archive for a **Windows** system
|
||||
|
||||
### Build SchildiChat Web and deploy it directly to your web server
|
||||
|
||||
Put the `config.json` with the [configuration](https://github.com/SchildiChat/element-web/blob/sc/docs/config.md) you want for your hosted instance in a subfolder of the `configs` folder.
|
||||
Then create a file named `release.mk` and fill it similar to that:
|
||||
```
|
||||
.PHONY: your-deploy-web
|
||||
|
||||
YOUR_CFGDIR := configs/your_subfolder
|
||||
your-deploy-%: CFGDIR := $(YOUR_CFGDIR)
|
||||
|
||||
your-deploy-web: web
|
||||
rsync --info=progress2 -rup --del element-web/webapp/ you@yourwebserver:/the/folder/served/for/schildi/
|
||||
```
|
||||
|
|
|
@ -50,22 +50,31 @@ logo_alternative() {
|
|||
# Analog to SchildiChat-Android's alternative_package.sh
|
||||
case "$package_add" in
|
||||
"a")
|
||||
# cyan
|
||||
logo_alternative "#00ACC1" "#006064" "#B2EBF2"
|
||||
# blue
|
||||
logo_alternative "#2196F3" "#0D47A1" "#BBDEFB"
|
||||
;;
|
||||
"b")
|
||||
# orange: 900 color recuded in value
|
||||
logo_alternative "#FB8C00" "#7f2c00" "#FFE0B2"
|
||||
;;
|
||||
"c")
|
||||
# purple
|
||||
logo_alternative "#5E35B1" "#311B92" "#D1C4E9"
|
||||
;;
|
||||
"d")
|
||||
# red: 900 color reduced in value
|
||||
logo_alternative "#E53935" "#4c0b0b" "#FFCDD2"
|
||||
;;
|
||||
"d")
|
||||
# purple
|
||||
logo_alternative "#5E35B1" "#311B92" "#D1C4E9"
|
||||
;;
|
||||
"e")
|
||||
# pink
|
||||
logo_alternative "#D81B60" "#880E4F" "#F8BBD0"
|
||||
;;
|
||||
"x")
|
||||
# cyan
|
||||
logo_alternative "#00ACC1" "#006064" "#B2EBF2"
|
||||
;;
|
||||
"z")
|
||||
# white
|
||||
logo_alternative "#ffffff" "#000000" "#eeeeee"
|
||||
;;
|
||||
esac
|
||||
|
|
|
@ -11,30 +11,20 @@
|
|||
"https://scalar-staging.vector.im/api",
|
||||
"https://scalar-staging.riot.im/scalar/api"
|
||||
],
|
||||
"hosting_signup_link": "https://element.io/matrix-services?utm_source=element-web&utm_medium=web",
|
||||
"bug_report_endpoint_url": "https://element.io/bugreports/submit",
|
||||
"showLabsSettings": true,
|
||||
"roomDirectory": {
|
||||
"servers": [
|
||||
"matrix.org"
|
||||
]
|
||||
},
|
||||
"piwik": {
|
||||
"url": "https://piwik.riot.im/",
|
||||
"siteId": 1,
|
||||
"policyUrl": "https://element.io/cookie-policy"
|
||||
},
|
||||
"enable_presence_by_hs_url": {
|
||||
"https://matrix.org": false,
|
||||
"https://matrix-client.matrix.org": false
|
||||
},
|
||||
"terms_and_conditions_links": [
|
||||
{
|
||||
"url": "https://element.io/privacy",
|
||||
"url": "https://schildi.chat/desktop/privacy",
|
||||
"text": "Privacy Policy"
|
||||
},
|
||||
{
|
||||
"url": "https://element.io/cookie-policy",
|
||||
"text": "Cookie Policy"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
42
create_local_pkgbuild.sh
Executable file
42
create_local_pkgbuild.sh
Executable file
|
@ -0,0 +1,42 @@
|
|||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
mydir="$(dirname "$(realpath "$0")")"
|
||||
cd "$mydir"
|
||||
|
||||
version="$1"
|
||||
appName="$2"
|
||||
productName="$3"
|
||||
debOut="$4"
|
||||
|
||||
template_dir="local-pkgbuild-template"
|
||||
out_dir="local-pkgbuild"
|
||||
|
||||
if [ -z "$version" ] || [ -z "$appName" ] || [ -z "$productName" ] || [ -z "$debOut" ]; then
|
||||
echo "Usage: $0 version appName productName debOut"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
debName="$(basename "$debOut")"
|
||||
|
||||
rm -rf "$out_dir"
|
||||
mkdir "$out_dir"
|
||||
|
||||
setup_file() {
|
||||
local file="$1"
|
||||
local outfile="$2"
|
||||
if [ -z "$outfile" ]; then
|
||||
local outfile="$file"
|
||||
fi
|
||||
cat "$template_dir/$file" \
|
||||
| sed "s|---version---|$version|g" \
|
||||
| sed "s|---appName---|$appName|g" \
|
||||
| sed "s|---productName---|$productName|g" \
|
||||
| sed "s|---debName---|$debName|g" \
|
||||
> "$out_dir/$outfile"
|
||||
}
|
||||
|
||||
setup_file PKGBUILD
|
||||
setup_file schildichat-desktop.sh "$appName.sh"
|
||||
ln -r -s "$debOut" "$out_dir/$debName"
|
1
deploy/.gitignore
vendored
Normal file
1
deploy/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
repos/*
|
80
deploy/create-github-release.sh
Executable file
80
deploy/create-github-release.sh
Executable file
|
@ -0,0 +1,80 @@
|
|||
#!/usr/bin/env bash
|
||||
#
|
||||
# Based upon https://hinty.io/ivictbor/publish-and-upload-release-to-github-with-bash-and-curl/
|
||||
# and https://gist.github.com/stefanbuck/ce788fee19ab6eb0b4447a85fc99f447
|
||||
#
|
||||
|
||||
set -e
|
||||
# set -x
|
||||
|
||||
version="$1"
|
||||
releasepath="$2"
|
||||
|
||||
github_api_token=`cat ~/githubtoken`
|
||||
release_notes_file="/tmp/scrn.md"
|
||||
|
||||
owner=SchildiChat
|
||||
repo=schildichat-desktop
|
||||
target=sc
|
||||
|
||||
# Define variables
|
||||
GH_API="https://api.github.com"
|
||||
GH_REPO="$GH_API/repos/$owner/$repo"
|
||||
AUTH="Authorization: token $github_api_token"
|
||||
|
||||
# Validate token
|
||||
curl -o /dev/null -sH "$AUTH" $GH_REPO || { echo "Error: Invalid repo, token or network issue!"; exit 1; }
|
||||
|
||||
# Get release notes
|
||||
$EDITOR "$release_notes_file"
|
||||
release_notes=`cat "$release_notes_file"`
|
||||
|
||||
# Create draft release
|
||||
echo "Create GitHub draft release ..."
|
||||
json_string=`jq -n --arg tag "v$version" --arg target "$target" --arg body "$release_notes" '{
|
||||
tag_name: $tag,
|
||||
target_commitish: $target,
|
||||
name: $tag,
|
||||
body: $body,
|
||||
draft: true,
|
||||
prerelease: false
|
||||
}'`
|
||||
# echo "$json_string"
|
||||
res=`echo "$json_string" | curl -sH "$AUTH" $GH_REPO/releases -d @-`
|
||||
# echo "$res" | jq "."
|
||||
|
||||
# Get release id
|
||||
id=`echo $res | jq ".id"`
|
||||
# echo "id: $id"
|
||||
|
||||
# Upload assets
|
||||
find "$releasepath" -type f | while read filename; do
|
||||
echo ""
|
||||
echo "Uploading $filename ..."
|
||||
|
||||
# Construct url
|
||||
GH_ASSET="https://uploads.github.com/repos/$owner/$repo/releases/$id/assets?name=$(basename $filename)"
|
||||
|
||||
# Upload
|
||||
res=`curl --progress-bar --data-binary @"$filename" -H "$AUTH" -H "Content-Type: application/octet-stream" $GH_ASSET`
|
||||
state=`echo $res | jq ".state"`
|
||||
if [ "$state" == "\"uploaded\"" ]; then
|
||||
echo "Success!"
|
||||
else
|
||||
echo "Error:"
|
||||
echo $res | jq "."
|
||||
exit -1
|
||||
fi
|
||||
done
|
||||
|
||||
# Publish draft
|
||||
res=`curl -sH "$AUTH" $GH_REPO/releases/$id -d '{"draft": false}'`
|
||||
draft=`echo $res | jq ".draft"`
|
||||
echo ""
|
||||
if [ "$draft" == "false" ]; then
|
||||
echo "Release v$version published on GitHub!"
|
||||
else
|
||||
echo "Error:"
|
||||
echo $res | jq "."
|
||||
exit -1
|
||||
fi
|
35
deploy/update-aur-bin.sh
Executable file
35
deploy/update-aur-bin.sh
Executable file
|
@ -0,0 +1,35 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
# set -x
|
||||
|
||||
DEPLOY_ROOT="$(dirname "$(realpath "$0")")"
|
||||
|
||||
version="$1"
|
||||
debpath="$2"
|
||||
|
||||
repopath="$DEPLOY_ROOT/repos/aur-bin"
|
||||
repourl="ssh://aur@aur.archlinux.org/schildichat-desktop-bin.git"
|
||||
|
||||
sha256sum=($(sha256sum $debpath))
|
||||
|
||||
[ -d "$repopath" ] || git clone $repourl $repopath
|
||||
|
||||
pushd "$repopath" > /dev/null
|
||||
|
||||
git fetch
|
||||
git reset --hard origin/master
|
||||
|
||||
sed -i "s|^_pkgver=.*$|_pkgver=$version|" PKGBUILD
|
||||
sed -i "s|^sha256sums=('.*'$|sha256sums=('$sha256sum'|" PKGBUILD
|
||||
|
||||
makepkg --printsrcinfo > .SRCINFO
|
||||
|
||||
git add .SRCINFO PKGBUILD
|
||||
git commit -m "Bump version to v$version"
|
||||
|
||||
git push
|
||||
|
||||
popd > /dev/null
|
||||
|
||||
echo "Release v$version published on AUR!"
|
46
deploy/update-flathub.sh
Executable file
46
deploy/update-flathub.sh
Executable file
|
@ -0,0 +1,46 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
# set -x
|
||||
|
||||
DEPLOY_ROOT="$(dirname "$(realpath "$0")")"
|
||||
|
||||
version="$1"
|
||||
debpath="$2"
|
||||
|
||||
repopath="$DEPLOY_ROOT/repos/flathub"
|
||||
repourl="git@github.com:flathub/chat.schildi.desktop.git"
|
||||
|
||||
downloadurl="https://github.com/SchildiChat/schildichat-desktop/releases/download/v${version}/schildichat-desktop_${version}_amd64.deb"
|
||||
sha256sum=($(sha256sum $debpath))
|
||||
debsize=($(wc -c $debpath))
|
||||
debdate=$(date +%Y-%m-%d -r $debpath)
|
||||
|
||||
[ -d "$repopath" ] || git clone $repourl $repopath
|
||||
|
||||
pushd "$repopath" > /dev/null
|
||||
|
||||
git fetch
|
||||
git reset --hard origin/master
|
||||
|
||||
jsonFile="chat.schildi.desktop.json"
|
||||
jsonString=$(jq -r "." $jsonFile)
|
||||
|
||||
xmlFile="chat.schildi.desktop.appdata.xml"
|
||||
|
||||
jsonString=$(echo $jsonString | jq -r ".modules[]? |= ((select(.name?==\"schildichat\") | .sources[0].url = \"${downloadurl}\") // .)")
|
||||
jsonString=$(echo $jsonString | jq -r ".modules[]? |= ((select(.name?==\"schildichat\") | .sources[0].sha256 = \"${sha256sum}\") // .)")
|
||||
jsonString=$(echo $jsonString | jq -r ".modules[]? |= ((select(.name?==\"schildichat\") | .sources[0].size = ${debsize}) // .)")
|
||||
|
||||
echo $jsonString | jq --indent 4 "." > $jsonFile
|
||||
|
||||
sed -i "s|^\s\s<releases>$| <releases>\n <release version=\"$version\" date=\"$debdate\"/>|" $xmlFile
|
||||
|
||||
git add $jsonFile $xmlFile
|
||||
git commit -m "Bump version to v$version"
|
||||
|
||||
git push
|
||||
|
||||
popd > /dev/null
|
||||
|
||||
echo "Release v$version published on flathub!"
|
|
@ -1 +1 @@
|
|||
Subproject commit 3172fb927ddd4a63456028159f40d202512620de
|
||||
Subproject commit 8fb350141acbd8d61cbb9e837c7f947809131956
|
|
@ -1 +1 @@
|
|||
Subproject commit fc486a5044adcc6b39180ffaabd75360f242e635
|
||||
Subproject commit 84434c6e1662114268bd50847f2a57800e45f44f
|
25
local-pkgbuild-template/PKGBUILD
Normal file
25
local-pkgbuild-template/PKGBUILD
Normal file
|
@ -0,0 +1,25 @@
|
|||
# Maintainer: su-ex <codeworks@supercable.onl>
|
||||
# Maintainer: SpiritCroc <aur@spiritcroc.de>
|
||||
# Contributor: David Mehren <david.mehren@udo.edu>
|
||||
|
||||
pkgname=---appName----git
|
||||
_pkgver=---version---
|
||||
pkgver=${_pkgver//-/.}
|
||||
pkgrel=1
|
||||
pkgdesc="SchildiChat is a Matrix client based on Element with a more traditional instant messaging experience."
|
||||
arch=('x86_64')
|
||||
url="https://schildi.chat"
|
||||
license=('Apache')
|
||||
depends=('sqlcipher')
|
||||
provides=('---appName---')
|
||||
conflicts=('---appName---')
|
||||
source=("---debName---"
|
||||
"---appName---.sh")
|
||||
sha256sums=('SKIP'
|
||||
'SKIP')
|
||||
|
||||
package() {
|
||||
msg2 "Extracting the data.tar.xz..."
|
||||
bsdtar -xf data.tar.xz -C "$pkgdir/"
|
||||
install -Dm755 "${srcdir}"/---appName---.sh "${pkgdir}"/usr/bin/---appName---
|
||||
}
|
3
local-pkgbuild-template/schildichat-desktop.sh
Normal file
3
local-pkgbuild-template/schildichat-desktop.sh
Normal file
|
@ -0,0 +1,3 @@
|
|||
#!/bin/sh
|
||||
|
||||
exec "/opt/---productName---/---appName---" "$@"
|
|
@ -1 +1 @@
|
|||
Subproject commit 2ef998e8eca5aea54ab5f70e913d8b628290a8c1
|
||||
Subproject commit a9c4c51e62c1fd41138d0e062223bf549d5dceee
|
|
@ -1 +1 @@
|
|||
Subproject commit 6538fca287d25a6f9d986904e315f10b3e0baa5e
|
||||
Subproject commit c1e1e0c5526d3aba6907d0faeabaaf312f842d41
|
|
@ -37,3 +37,18 @@ forall_repos() {
|
|||
"$@"
|
||||
popd
|
||||
}
|
||||
|
||||
ensure_yes() {
|
||||
read -e -p "$1 [y/N] " choice
|
||||
|
||||
if [[ "$choice" != [Yy]* ]]; then
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
check_branch() {
|
||||
if [[ $(git branch --show-current) != "$1" ]]; then
|
||||
repo_name=$(basename `git rev-parse --show-toplevel`)
|
||||
ensure_yes "$repo_name not in branch $1. Continue?"
|
||||
fi
|
||||
}
|
||||
|
|
|
@ -3,13 +3,25 @@
|
|||
set -e
|
||||
|
||||
mydir="$(dirname "$(realpath "$0")")"
|
||||
branch=${BRANCH:-"sc"}
|
||||
|
||||
pushd "$mydir" > /dev/null
|
||||
|
||||
source ./merge_helpers.sh
|
||||
|
||||
check_branch $branch
|
||||
forall_repos check_branch $branch
|
||||
|
||||
forall_repos git fetch upstream
|
||||
forall_repos git merge upstream/master
|
||||
|
||||
# Automatic theme update
|
||||
pushd "matrix-react-sdk" > /dev/null
|
||||
./theme.sh
|
||||
popd > /dev/null
|
||||
|
||||
# Refresh environment
|
||||
make clean
|
||||
make setup
|
||||
|
||||
popd > /dev/null
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 278 KiB |
BIN
screenshots/2.png
Normal file
BIN
screenshots/2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 259 KiB |
6
setup.sh
6
setup.sh
|
@ -5,12 +5,14 @@ set -e
|
|||
yarn=yarnpkg
|
||||
|
||||
pushd matrix-js-sdk
|
||||
$yarn unlink &>/dev/null || true
|
||||
$yarn link
|
||||
$yarn install
|
||||
popd
|
||||
|
||||
pushd matrix-react-sdk
|
||||
$yarn link matrix-js-sdk
|
||||
$yarn unlink &>/dev/null || true
|
||||
$yarn link
|
||||
$yarn install
|
||||
popd
|
||||
|
@ -18,14 +20,10 @@ popd
|
|||
pushd element-web
|
||||
$yarn link matrix-js-sdk
|
||||
$yarn link matrix-react-sdk
|
||||
$yarn link
|
||||
$yarn install
|
||||
popd
|
||||
|
||||
pushd element-desktop
|
||||
#$yarn link matrix-js-sdk
|
||||
#$yarn link matrix-react-sdk
|
||||
#$yarn link riot-web
|
||||
$yarn install
|
||||
ln -s ../element-web/webapp ./ || true
|
||||
popd
|
||||
|
|
63
windowsportable.sh
Executable file
63
windowsportable.sh
Executable file
|
@ -0,0 +1,63 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
portable_exe=$1
|
||||
dest_name=$2
|
||||
release_dir=$3
|
||||
version=$4
|
||||
|
||||
dest_path=$release_dir/$dest_name/SchildiChat
|
||||
|
||||
mkdir -p $dest_path/app
|
||||
cp "$portable_exe" $dest_path/app/dontclick.exe
|
||||
|
||||
cat >$dest_path/SchildiChat_Portable.bat <<EOL
|
||||
REM -- Adapted from: https://superuser.com/a/1226026
|
||||
|
||||
REM -- Path to the directory of this script (make sure to remove ending slash)
|
||||
set CURRENT_DIR=%~dp0
|
||||
REM -- Great example from Strawberry Perl's portable shell launcher:
|
||||
if not "" == "%CURRENT_DIR%" if #%CURRENT_DIR:~-1%# == #\# set CURRENT_DIR=%CURRENT_DIR:~0,-1%
|
||||
|
||||
REM -- Path to data directory
|
||||
set DATA_DIR=%CURRENT_DIR%\data
|
||||
|
||||
REM -- Ensure directories exists
|
||||
if not exist %DATA_DIR%\AppData\Roaming mkdir %DATA_DIR%\AppData\Roaming
|
||||
|
||||
REM -- OVERRIDE the user environment variable to point to a portable directory
|
||||
set USERPROFILE=%DATA_DIR%
|
||||
|
||||
REM -- (Optional) Some programs do not use these environment variables
|
||||
set APPDATA=%DATA_DIR%\AppData\Roaming>nul
|
||||
set ALLUSERSPROFILE=%DATA_DIR%\AppData\Roaming>nul
|
||||
set PROGRAMDATA=%DATA_DIR%\AppData\Roaming>nul
|
||||
|
||||
REM -- Start the application
|
||||
start "" /D"%CURRENT_DIR%\app" "dontclick.exe"
|
||||
EOL
|
||||
|
||||
cat >$dest_path/README.txt <<EOL
|
||||
Just extract this zip file to a folder of your choice (e.g. on a USB-Stick).
|
||||
The .\app\dontclick.exe file is the real portable executable.
|
||||
SchildiChat_Portable.bat is a batch script to run this executable but with the data in the .\data folder instead of the system's %APPDATA%.
|
||||
Thus you can move your data along with this portable app.
|
||||
To update just extract the new zip file to the same folder as the previous version whilst merging folders and overwriting files.
|
||||
EOL
|
||||
|
||||
# if $version looks like semver with leading v, strip it before writing to file
|
||||
if [[ ${version} =~ ^v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+(-.+)?$ ]]; then
|
||||
echo ${version:1} > $dest_path/app/version
|
||||
else
|
||||
echo ${version} > $dest_path/app/version
|
||||
fi
|
||||
|
||||
pushd $dest_path/..
|
||||
zip -r ../$dest_name.zip *
|
||||
popd
|
||||
|
||||
rm -r $release_dir/$dest_name
|
||||
|
||||
echo
|
||||
echo "Packaged $release_dir/$dest_name.zip"
|
Loading…
Add table
Add a link
Reference in a new issue