Code Monkey home page Code Monkey logo

schildichat-desktop's Introduction

SchildiChat Web/Desktop

SchildiChat Web/Desktop is a fork of Element Web/Desktop.

The most important changes of SchildiChat Web/Desktop compared to Element Web/Desktop are:

  • Customizable room list style (compact single line, intermediate and roomy with two line preview)
  • Option to show direct and group chats in a combined list
  • Improved theming options
  • Message bubbles
  • โ€ฆ and more!

Desktop downloads with installation instructions are listed on our website: https://schildi.chat/desktop
Hosted web variant: https://app.schildi.chat/

Feel free to join the discussion on matrix.

Public key used to sign the Debian packages
pub   rsa4096 2020-12-08 [SC]
      560BB70DA86A6633A39CEC6023358905FE294D01
uid           Super apt repo key <[email protected]>
sub   rsa4096 2020-12-08 [E]

Building SchildiChat Web/Desktop

This particular repo is a wrapper project for element-desktop, element-web, matrix-react-sdk and matrix-js-sdk. It's the recommended starting point to build SchildiChat for Web and Desktop.

The master branch contains the latest release.
Development happens in the sc branch, which might be broken at any time!

schildichat-desktop <-- this repo (recommended starting point to build SchildiChat for Web and Desktop)
|-- element-desktop (electron wrapper)
|-- element-web ("skin" for matrix-react-sdk)
|-- matrix-react-sdk (most of the development happens here)
`-- matrix-js-sdk (Matrix client js sdk)

Install dependencies

Debian build dependencies

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 11 (bullseye):

# apt install vim curl git make gcc g++ python jq libsqlcipher-dev pkg-config libsecret-1-dev libarchive-tools openssl libssl-dev tcl

# curl -sL https://deb.nodesource.com/setup_16.x | bash -
# apt update
# apt install nodejs

# curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
# echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
# apt update
# apt install yarn

$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
$ echo 'export PATH="$PATH:$HOME/.cargo/bin"' >> .bashrc
$ source .bashrc

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

Signed macOS builds

To sign a macOS build set the environment or make variable CSC_IDENTITY_AUTO_DISCOVERY to true or set CSC_NAME to your certificate name or id.

To notarize a build with Apple set NOTARIZE_APPLE_ID to your AppleID and set the keychain item NOTARIZE_CREDS to an App specific AppleID password.

Initial setup

As already noted above, master contains the latest release and sc is the development branch!

git clone -b master --recurse-submodules https://github.com/SchildiChat/schildichat-desktop.git
cd schildichat-desktop
make setup # optional step if using the other make targets

Create release builds

# The single make targets are explained below
make {web|debian|windows-setup|windows-portable|macos|...}-release

After that these packages which belong to their respective make target should appear in release/<version>/.

Builds distributed via GitHub releases

  • 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 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 {...}-release targets not used for GitHub releases

  • pacman: File ready for installation on an Arch Linux (based) system via pacman -U schildichat-desktop-<version>.pacman
  • rpm: Build a *.rpm for Linux
  • windows-unpacked: SchildiChat_win-unpacked_v<version>.zip: unpacked archive for a Windows system
  • macos-mas: Build a *.pkg for release in the Mac App Store

Build SchildiChat Web and deploy it directly to your web server

Put the config.json with the configuration 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/

schildichat-desktop's People

Contributors

autoteelar avatar bubu avatar comradekingu avatar fnogcps avatar friskygote avatar germe-fur avatar gitvib avatar kloenk avatar linerly avatar magostinelli avatar misibacsi avatar randomitalianguy avatar realpixelcode avatar shosseinib avatar sivizius avatar spiritcroc avatar st-48-1240162 avatar su-ex avatar tw4nn avatar waclaw66 avatar weblate avatar yu-re-ka avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

schildichat-desktop's Issues

Distribute packages the usual way, more formats

AppImage and search of encrypted chats

Is it possible to enable search for encrypted chats in the appimage builds?
This would be really great, as these builds are the simplest way to get schildichat desktop on non Debian based linux distributions.

Custom backgrounds and theming

  • Expose custom background for room list to the UI
  • Custom background for room view
  • Test and verify the custom themes option in the labs settings
  • Expose border radii to custom themes

Presence and other indicators cut avatars too much

One of the changes from SchildiChat-web compared to Element are bigger avatars in the room list. If we have a presence indicator or a public room symbol displayed over this avatar, the circle missing from the image is too big (likely scaled with the picture instead of staying at the indicator size).

Send button as alternative to enter key

One user requested a send button next to the message input field, which can be used instead of the enter button to send messages.
The use-case is likely when having the setting to use enter-button to create newlines (-> Settings/preferences/Use Ctrl + Enter to send a message - element does not have this yet btw, it was picked from here), and not having to remember how to send messages in this case.
The icon is probably best taken from SchildiChat-Android, and we might want to make this a setting (off by default?) - or maybe show it only when ctrl+enter to send is enabled.

Bubble layout: Glitches editing messages

Bildschirmfoto von 2020-11-04 19-23-08

  • align buttons always on the right side
  • put message tail triangle below
    minimum message box width (done through buttons)
  • remove buttons background color that overflows to the right
  • msg options box for selected text: stick to right

Feature-Request: MultiAccount-support

I like to request Multi-Account-Support for Schildi.

At first, it would be enough to have a selectbox to choose the "active" connection. the "others" can be disconnected.
This should be easy to add to the ui logic.

Switch: Disconnect active useraccount -> switch db -> connect selected useraccount.

Later, multiply active accounts should be possible.

Add tabbed panel as a third column for Emoji and Stickers

A third column for Emoji and Sticker would be a nice UX enhancement. There is already a basic implementation of it, but only for room info:
104842969-93b8d700-58c8-11eb-941f-b648cb91cd87 (Custom)

Telegram got this back in 2017 and I really enjoy the better and faster handling.
The screen ratio also fits better to bubbled messages, since incoming and outgoing messages are closer together (less eye movement).
It's source code is available and I found the relevant code changes if someone is interested looking into it.

Screenshots:
Before (Source:1,2)
chat-window-1 (Handy)
telegram-desktop-3 (Handy)

After Source
telegram-emoji-screen (Handy)

Move images and other media out of message bubbles

Some stickers are too small, while others are not, they are handled like images.
This is due to them being in a bubble because they shrink their content.
Thus only the image body sets the width (which is only the time for stickers instead also the filename).

It might be a good idea to move images and other media out of the message bubbles, as already done for the Android app.

Anonymous usage data prompt from Element

After login, there is a popup to enable sending anonymous usage data to "improve SchildiChat", but this is likely still reported upstream, so it might be better to remove it.

MacOS Support

Hi everyone!

Is there a plan to support MacOS in the near future? I'm a Mac user myself and would love to help get this working, but unfortunately C is not the language I typically use, so editing the makefile myself is not really an option. Maybe I could help by providing the necessary platform?

Side-column design bugs when collapsed to single avatar stroke

image

  • The user avatar doesn't align to the middle solved upstream
  • The search function is (nearly) useless, clicking on it will only expand the stroke (and it's difficult to click on)
  • The "favorites" label stroke and such immediately cut off to ..., maybe make it so that it gets an icon when it's collapsed like this (favorites = star?)

Configurable room list element size (avatar and name with preview)

Would be helpful if room-boxes could be scaled according to a slider, to be bigger or smaller according to preference.

A continuous slider is not possible with the upstream implementation right now.
So there are two options:

  1. Find a better way to implement that
  2. Stick to 5 3 size options or so:
    • tiny: inline avatar + name
    • small: slightly bigger avatar + name (maybe with preview in the same line and/or wrapping to a second)
    • medium: icon as big as name + single line preview (Element right now)
    • big: medium with bigger icon
    • huge: SchildiChat right now (with two line preview)

And consider decorator size: https://matrix.to/#/!eSTlitQAfqxWWEHMFD:matrix.org/$orPaGuWZcFvyJKfcJ6lJyaPLmSO2fWQvL7xQt2PK86w

Check highest font size: https://matrix.to/#/!eSTlitQAfqxWWEHMFD:matrix.org/$Cfzf-Iycxiw2EayeQepRrPdQ6X50iSmVkdWrcuJuHQ0?via=supercable.onl&via=matrix.org&via=matrix.sp-codes.de

Visually seperate images from the background

Just like discord, have a different gradient (i.e. lighter with dark mode, darker with light mode) behind image bubbles to distinguish them against the background, it also makes it easier to recognise "images" in chat history even if they're still loading.

Alternative "seen by" UI behaviour

With the new bubble-message UI, its pretty appearant that the new seen-by bubbles are not properly aligned right with the UI (and similar)

Similar to #35, is it possible for these to not move the chat-log?

Additionally, from a UI sketch i saw somewhere else, here's some suggestions:
image
image

Improve "is typing" UI behaviour

This is an issue with core element as well, but is it possible for the "is typing" box to not move up the chat when it pops up?

flatpak for aarm64 pattform

Hi,

if the flatpak build "chat.schildi.desktop" from flathub is done by this team, pls provide an aarm64 version for Pine Tablet and Phones. thx.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.