Skip to main content

Tg

Project description

tg

Terminal telegram client.

(!) usable but still in development

Features

  • view mediafiles: photo, video, voice/video notes, documents
  • ability to send pictures, documents, audio, video
  • reply, edit, forward, delete, send messages
  • stickers
  • notifications
  • record and send voice msgs
  • auto download files
  • toggle chats: pin/unpin, mark as read/unread, mute/unmute
  • Message history

TODO:

  • secret chats
  • list contacts
  • search
  • show users and their status in current chat
  • create new chat
  • bots (bot keyboard)

Requirements

  • tdlib

    For macOS:

    brew install tdlib
    
  • python3.8

  • pip3 install python-telegram

  • config file at ~/.config/tg/conf.py

    PHONE = "[your phone number]"
    ENC_KEY = "[telegram db encryption key]"
    
  • terminal-notifier or other program for notifications

  • ffmpeg to record voice msgs and upload videos correctly

Usage

Clone repository and run it:

git clone git@github.com:paul-nameless/tg.git
cd tg
PYTHONPATH=. python3 tg/main.py

Configuration

Config file should be stored at ~/.config/tg/conf.py. This is simple python file.

Simple config:

PHONE = "[your phone number]"
ENC_KEY = "[telegram db encryption key]"

Advanced configuration:

import os

# You can write anything you want here, file will be executed at start time
# You can keep you sensitive information in password managers or gpg
# encrypted files for example
def get_pass(key):
    # retrieves key from password store
    return os.popen("pass show {} | head -n 1".format(key)).read().strip()


PHONE = get_pass("i/telegram-phone")
ENC_KEY = get_pass("i/telegram-enc-key")

# log level for debugging
LOG_LEVEL = "DEBUG"

# If you have problems with tdlib shipped with the client, you can install and
# use your own
TDLIB_PATH = "/usr/local/Cellar/tdlib/1.6.0/lib/libtdjson.dylib"

# you can use any other notification cmd, it is simple python file which
# can format title, msg, subtitle and icon_path paramters
# In these exapmle, kitty terminal is used and when notification is pressed
# it will focus on the tab of running tg
NOTIFY_CMD = '/usr/local/bin/terminal-notifier -title "{title}" -subtitle "{subtitle}" -message "{msg}" -appIcon "{icon_path}" -sound default -execute \'/Applications/kitty.app/Contents/MacOS/kitty @ --to unix:/tmp/kitty focus-tab --no-response -m title:tg\''

# you can customize to use your own voice recording cmd
VOICE_RECORD_CMD = "ffmpeg -f avfoundation -i ':0' -ar 22050 -b:a 32k '{file_path}'"

Keybindings

vi like keybindings are used in the project. Can be used commands like 4j - 4 lines down.

For navigation arrow keys also can be used.

Chats:

  • j,k: move up/down
  • J,K: move 10 chats up/down
  • l: open msgs of the chat
  • m: mute/unmute current chat
  • p: pin/unpin current chat
  • u: mark read/unread
  • r: read current chat

Msgs:

  • j,k: move up/down
  • J,K: move 10 msgs up/down
  • G: move to the last msg (at the bottom)
  • l: if video, pics or audio then open app specified in mailcap file, for example:
    # Images
    image/png; icat %s && read
    audio/*; mpv %s
    
    if text, open in less (to view multiline msgs)
  • e: edit current msg
  • <space>: space can be used to select multiple msgs for deletion or forwarding
  • y: yank (copy) selected msgs with to internal buffer
  • p: forward (paste) yanked (copied) msgs to current chat
  • dd: delete msg for everybody (multiple messages will be deleted if selected)
  • i or a: insert mode, type new message
  • I or A: open vim to write long msg and send
  • v: record and send voice message
  • r,R: reply to a current msg
  • sv: send video
  • sa: send audio
  • sp: send picture
  • sd: send document
  • c: copy current msg text or path to file if this is document, photo or video
  • ]: next chat
  • [: prev chat

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tg-0.0.2.tar.gz (60.2 kB view hashes)

Uploaded Source

Built Distribution

tg-0.0.2-py3-none-any.whl (60.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page