Giter Club home page Giter Club logo

discover's Introduction

Discover

Yet another Discord overlay for Linux written in Python using GTK3.

Discover-Overlay is a GTK3 overlay written in Python3. It can be configured to show who is currently talking on discord or it can be set to display text and images from a preconfigured channel. It is fully customisable and can be configured to display anywhere on the screen. We fully support X11 and wlroots based environments. We felt the need to make this project due to the shortcomings in support on Linux by the official discord client.

Considerably lighter on system resources and less hack-and-slash included than discord-overlay.

Screenshot

Usage

Easy user instructions can be found on our User website

Got a question about development, bug reports or a feature request? Join our Discord! or open an issue on GitHub

Terminal usage

On top of graphical options there are multiple ways to use this program from the command line

Start the overlay

You can start the overlay by running
discover-overlay

This will close out any already running discover overlay for this user

Close the overlay

discover-overlay --close or discover-overlay -x

This closes the process running the overlay, hence any --rpc commands sent afterwards will do nothing

Open configuration window

discover-overlay --configure or discover-overlay -c

Log debug to file

discover-overlay --debug or discover-overlay -d

This will redirect all debug to the file ~/.config/discover-overlay/output.txt

Hide the currently shown overlays

discover-overlay --rpc --hide

This will not stop the process running the overlay. This means the --rpc commands sent afterwards continue working as expected, and the --show is much quicker than starting the overlay from the start.

Show the overlays

discover-overlay --rpc --show

Note that if the process running the overlay has stopped or crashed then this will do nothing

Mute yourself in voice chat

discover-overlay --rpc --mute

Unmute yourself in voice chat

discover-overlay --rpc --unmute

Deafen yourself in voice chat

discover-overlay --rpc --deaf

Undeafen yourself in voice chat

discover-overlay --rpc --undeaf

Attempt to join voice channel by room ID

discover-overlay --rpc --moveto=X

Using a Room ID from Discord to replace X, this will attempt to join the voice channel.

Populate the channel RPC file with a list of guilds

discover-overlay --rpc --refresh-guilds Requests a list of guilds. Once collected, it will write them to ~/.config/discover-overlay/channels.rpc as a JSON object

Populate the channel RPC file with a list of channels from a guild

discover-overlay --rpc --guild-request=X Using a Server ID from Discord to replace X, this will request a list of channels (text & voice) from the given guild. Once collected, it will write them to ~/.config/discover-overlay/channels.rpc as a JSON object.

Force SteamOS compatibility mode

discover-overlay --steamos Forces the overlay to start as if it was started in a Gamescope & SteamOS session. Intended for testing against Gamescope while still nested in a generic desktop environment

Once Gamescope is started, get the DISPLAY variable for it and run as env -u WAYLAND_DISPLAY DISPLAY=:X discover-overlay --steamos Which will disallow it drawing to the outer desktop and instead connect to Gamescope

Installing

Flatpak via Flathub

Visit our Flathub page or install via commandline

flatpak install io.github.trigg.discover_overlay

Stable

python3 -m pipx install discover-overlay

Latest Testing

git clone https://github.com/trigg/Discover.git
cd Discover
python3 -m pipx install .

Externally Packaged

Note that while we list links to other locations to download, the version provided is unknown and often untested by us. Report bugs in these implementations to their respective project, not here.

Arch AUR

Stable Latest

sudo yum copr enable mavit/discover-overlay
sudo yum install discover-overlay
sudo eselect repository enable guru
sudo emaint -r guru sync
sudo emerge net-voip/discover-overlay

Dependencies

Most requirements should be handled by pip.

A compositor is strongly advised but there is compatibility for X11 sessions without a compositor

It is advised to install python-gobject from your system's own package manager.

Debian/Ubuntu

apt install python3-gi python3-gi-cairo libappindicator3-dev

Libappindicator might conflict with other installed packages, but is optional

with Wayland support

apt install gtk-layer-shell libgtk-layer-shell-dev

Arch

pacman -S python-gobject libappindicator-gtk3

with Wayland support

pacman -S gtk-layer-shell

Fedora

dnf install python3-pip python3-gobject gtk3-devel python3-cairo python-devel python-gobject python-gobject-devel

with Wayland support

dnf install gtk-layer-shell

Usage

Run discover-overlay to start the overlay. Note that by default it will show nothing until you join a voice channel.

Comes with sane-enough default but has a configuration screen to tweak to your own use. Configuration can be reached by running discover-overlay --configure

Desktop shortcuts for both of these are added at install time.

Debugging

See Wiki

Translations

For developers and translators translation information can be found on our Wiki.

Incorrect translations and missing translations

We welcome pull requests and bug reports about missing or wrong translations, but don't have the resources to get it all right. Please be patient with us and alert us if any translations are wildly inaccurate.

A note on terminology

I often use some terms interchangably:

Guild, Server : the leftmost pane in Discord.

Channel, Room, Chat: The next level in, these are all the same thing internally.

Why do you keep making Discord Overlays?

I feel like I shouldn't have to at all! Until we get an official one I might just create a new one every few months. Look forward to Rust/Vulkan version coming in a few months. /s

Are you serious?

Generally, no.

discover's People

Contributors

baumfinder avatar bqleine avatar dybdeskarphet avatar erranticsam avatar hubro avatar iommu avatar janwojcicki avatar joshix-1 avatar luni3359 avatar mavit avatar midget3111 avatar moralcode avatar murdomaclachlan avatar nicolasmaniotto avatar slikie avatar tastypi avatar treuks avatar trigg avatar tyzoid avatar x4e 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

discover's Issues

Not connecting to Discord

Cloned and installed the tool. As soon as I run discover-overlay nothing appears on screen, the tray icon is a grey circle that allows me to change the settings but on the terminal I see the following

/usr/local/bin/discover-overlay:1000: PyGIWarning: AppIndicator3 was imported without specifying a version first. Use gi.require_version('AppIndicator3', '0.1') before import to ensure that the right version gets loaded.
  from gi.repository import AppIndicator3
Could not find monitor : None
Could not find monitor : None

On Ubuntu 18.04.

Project milestones

Let's figure out a roadmap of planned features and use the milestones features in GitHub to monitor progress

What's that? Not code? Boooooooooriiiiing

Names get cut off at large font sizes

If you make the font size large enough the left (beginning) part of the names get cut off. More obvious with longer names and larger avatar size.

It is a minor issue, but I think it is cool if software also handles extreme edge cases well.

More intuitive position adjustment

I have an idea for a much more intuitive design for adjusting the position of the overlay to be used eventually instead of the current one with 2 or 3 dropdowns and 1 number field (also currently one can't adjust the padding from the horizontal sides).

It could work thus:

  1. User opens settings.
  2. User clicks a button for Customize position.
  3. GUI changes to only have following buttons Cancel, Reset, Done[1]
  4. User clicks and drags the existing (placeholder) overlay to a place suitable to them.
  5. User clicks a button on:
    5.1. Cancel, to reset to the starting state.
    5.2. Reset, to reset to a sensible default
    5.3. Done to let the application save the position of the overlay.[2]

This could ideally also include the extra feature of adjusting the scaling factor and limits of the overlay in the customization mode if that is possible. Scaling factor would affect the font size and avatar size. Maybe the current settings could then be hidden behind an Advanced/Expert mode toggle of the UI. I can make a separate comment or issue fleshing out this in greater detail, if this is relevant.

[1] The preferred order of buttons seems to vary based on platform. Ideally maybe your used framework can handle that according to some preferences or platform conventions.Reset button would only be required if it is possible end up in a non-functional state somehow.
[2] Perhaps in percentages of screen size, rather than direct pixels? So as to accommodate resolution changes or monitor switches. Generally any the underlay (stuff beneath the overlay) adjusts (or gets adjusted manually) to changing resolutions or aspect ratios. I guess ideally there can be an option in the config file (and maybe Advanced/Expert mode of the UI) where you can specify whether it should be in pixels or percentages.

Error on trying to run

I installed correctly but when I run discover-overlay I get this error

$ discover-overlay 
Using XShape instead of composite
Traceback (most recent call last):
  File "/usr/local/bin/discover-overlay", line 1058, in <module>
    main()
  File "/usr/local/bin/discover-overlay", line 1039, in main
    create_gui()
  File "/usr/local/bin/discover-overlay", line 984, in create_gui
    win = OverlayWindow()
  File "/usr/local/bin/discover-overlay", line 649, in __init__
    self.set_untouchable()
  File "/usr/local/bin/discover-overlay", line 718, in set_untouchable
    reg = Gdk.cairo_region_create_from_surface(surface)
KeyError: 'could not find foreign type Surface'

Temporary hang on avatar image grab

Currently loading a URL to get an avatar image hangs the GTK main loop which could cause the app to appear un responsive. It also holds up communication & redrawing.

Need to change the image loader to be async and to fallback on default avatar until the image is ready

Coding standard is sub-par

Having a large segment of the code relying on globals and global-scoped functions which pass around a bunch of contexts is absolutely not ideal.

Move all Socket & communication into a class. Narrow down global scoped to entry point only.

No icon shown with a default avatar

Any users in voice chat who have not manually set an avatar are supplied a generic image in Discord, but overlay is supplied with no image.

Sane version management

As we're probably still somewhat off of a formal launch, we should figure out the most sain way of managing versions now rather than later.

"Latest" is not appropriate versioning for a stable release ;). I suggest a separate branch for each version reached, with latest always being the worked on codebase.

N.B - will go hand in hand with project milestones.

Wayland support

Currently in Wayland a small window is drawn which can be minimised and maximised. Not intended outcome

Opening settings twice

`(discover.py:2008): Gtk-CRITICAL **: 22:19:03.347: gtk_widget_get_window: assertion 'GTK_IS_WIDGET (widget)' failed

(discover.py:2008): Gtk-CRITICAL **: 22:19:03.347: gtk_widget_translate_coordinates: assertion 'GTK_IS_WIDGET (dest_widget)' failed

(discover.py:2008): Gtk-CRITICAL **: 22:19:03.347: gtk_widget_get_window: assertion 'GTK_IS_WIDGET (widget)' failed

(discover.py:2008): Gtk-CRITICAL **: 22:19:03.347: gtk_widget_translate_coordinates: assertion 'GTK_IS_WIDGET (dest_widget)' failed

(discover.py:2008): Gtk-CRITICAL **: 22:19:03.347: gtk_widget_get_settings: assertion 'GTK_IS_WIDGET (widget)' failed
/usr/lib/python3.8/site-packages/gi/overrides/Gtk.py:1644: Warning: g_object_get: assertion 'G_IS_OBJECT (object)' failed
return _Gtk_main(*args, **kwargs)

(discover.py:2008): Gtk-CRITICAL **: 22:19:03.348: gtk_widget_get_window: assertion 'GTK_IS_WIDGET (widget)' failed

(discover.py:2008): Gtk-CRITICAL **: 22:19:03.348: gtk_widget_translate_coordinates: assertion 'GTK_IS_WIDGET (dest_widget)' failed

(discover.py:2008): Gtk-CRITICAL **: 22:19:04.582: gtk_widget_get_window: assertion 'GTK_IS_WIDGET (widget)' failed

(discover.py:2008): Gtk-CRITICAL **: 22:19:04.582: gtk_widget_get_window: assertion 'GTK_IS_WIDGET (widget)' failed

(discover.py:2008): Gtk-CRITICAL **: 22:19:04.582: gtk_widget_get_window: assertion 'GTK_IS_WIDGET (widget)' failed
`

[Feature] Add padding option for Overlay Location

Currently, selecting top in Overlay Location put it right at the top - Which is great. Would be useful to have a configurable padding option so it is padded down from the top and allows system ui's to be used.

Can't open settings

Hello,
I can't figure out how to configure the settings.
Could someone explain that to me?
Thank you!

AttributeError: 'X11Display' object has no attribute 'get_monitor'

Basic system information:

  • Running Slackware 14.2 at Kernel version 4.4.217
  • Desktop is XFCE
  • Running dual monitors

Issue

Installing works fine, but when I attempt to run from a command line I get:

Traceback (most recent call last):                                                                                                                                                                                                                                             
  File "/home/murdo/.local/bin/discover-overlay", line 8, in <module>                                                                                                                                                                                                          
    sys.exit(entrypoint())                                                                                                                                                                                                                                                     
  File "/home/murdo/.local/lib/python3.7/site-packages/discover_overlay/discover_overlay.py", line 1077, in entrypoint                                                                                                                                                         
    main()                                                                                                                                                                                                                                                                     
  File "/home/murdo/.local/lib/python3.7/site-packages/discover_overlay/discover_overlay.py", line 1055, in main                                                                                                                                                               
    create_gui()                                                                                                                                                                                                                                                               
  File "/home/murdo/.local/lib/python3.7/site-packages/discover_overlay/discover_overlay.py", line 997, in create_gui                                                                                                                                                          
    win = OverlayWindow()                                                                                                                                                                                                                                                      
  File "/home/murdo/.local/lib/python3.7/site-packages/discover_overlay/discover_overlay.py", line 663, in __init__                                                                                                                                                            
    self.force_location()                                                                                                                                                                                                                                                      
  File "/home/murdo/.local/lib/python3.7/site-packages/discover_overlay/discover_overlay.py", line 743, in force_location                                                                                                                                                      
    monitor = display.get_monitor(self.monitor)                                                                                                                                                                                                                                
AttributeError: 'X11Display' object has no attribute 'get_monitor' 

Images for Readme

Let's make the readme more useful. I'll start.

Screenshot from 2020-09-23 16-28-44

Might also be worth a demo video to show off features.

Cannot debug the project anymore with VS Code

I had to copy the __main__.py file from which discover-overlay over to the project to be able to run it with the debugger.

Here's my launch.json file

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Module",
            "type": "python",
            "request": "launch",
            "module": "discover_overlay"
        }
    ]
}

"Edge Padding" for voice overlay only affects vertical padding

This way, for example, changing Edge padding when overlay is vertically centered does practically nothing. It also seems unintuitive. Should edge padding affect both vertical/horizontal paddings or maybe it should be split into two separate options?

Moveable test window to position chat overlay

As a straightforward way to choose where the text channel overlay will appear a window could pop up and after the user positions & sizes it to their need the location can be recorded and used to draw the text channel of choice.

Packaging

Look into whether packaging for various distributions is necessary or not.

Compositor missing

Cannot run program on my machine, I receive the following error:

$ ./discover.py
REQUIRES COMPOSITING

I'm running Manjaro with i3.
System details:

$ inxi -Gxx
Graphics:  Device-1: NVIDIA GM200 [GeForce GTX 980 Ti] vendor: eVga.com. driver: nvidia v: 450.66 bus ID: 01:00.0 
           chip ID: 10de:17c8 
           Display: x11 server: X.Org 1.20.8 driver: nvidia resolution: 1: 1080x1920~60Hz 2: 2560x1440~60Hz s-dpi: 101 
           OpenGL: renderer: GeForce GTX 980 Ti/PCIe/SSE2 v: 4.6.0 NVIDIA 450.66 direct render: Yes 
$ uname -a
Linux Aether 5.4.64-1-MANJARO #1 SMP PREEMPT Wed Sep 9 18:26:19 UTC 2020 x86_64 GNU/Linux

Latest version crashes when connects to Discord

I launched the latest (pull from Github) from the command line since it didn't seem to work. The following is the output

INFO:root:Autostart info : desktop /home/cossu/.local/share/applications/discover_overlay.desktop auto None
INFO:root:Could not find monitor : None
INFO:root:Could not find monitor : None
INFO:root:Loading saved channel 741761057802158081
INFO:root:Could not find monitor : None
INFO:root:Could not find monitor : None
INFO:root:ID is 350229604365107211
INFO:root:Logged in as gjkf
INFO:root:Changing text room: 741761057802158081
Traceback (most recent call last):
  File "/home/cossu/.local/lib/python3.6/site-packages/discover_overlay/discord_connector.py", line 399, in do_read
    self.on_message(msg)
  File "/home/cossu/.local/lib/python3.6/site-packages/discover_overlay/discord_connector.py", line 266, in on_message
    self.add_text(message)
  File "/home/cossu/.local/lib/python3.6/site-packages/discover_overlay/discord_connector.py", line 89, in add_text
    message["timestamp"], "%Y-%m-%dT%H:%M:%S.%f%z")
  File "/usr/lib/python3.6/_strptime.py", line 559, in _strptime_time
    tt = _strptime(data_string, format)[0]
  File "/usr/lib/python3.6/_strptime.py", line 362, in _strptime
    (data_string, format))
ValueError: time data '2020-09-23T22:11:44.545Z' does not match format '%Y-%m-%dT%H:%M:%S.%f%z'

After that, no matter what I do, the application won't respond.

EDIT: since in the settings window for the chat there was no text channel available to be selected, I modified the config in ~/.config/discover_overlay/config.ini to another text channel and restarted the application. It correctly loaded all the text channels but at the end, the same error appeared. When I started again discover_overlay while I was already in a voice room, it no longer loaded the text channels.

Smoother Cropping of round avatar

This goes strongly into nitpick-territory, but makes the look a bit less perfect:

The round avatar seems to be created by cutting of all pixels over the radius. Unfortunatly this creates a rough edge that looks pixelated.

if self.round_avatar:
context.arc(x+(self.avatar_size/2), y+(self.avatar_size/2), self.avatar_size/2,0,2*math.pi)
context.clip()

Screenshot (upscaled 2x):

grafik

For comparison DiscordOverlay (where I assume a browser rendering engine is applying a bit of antialiasing):

grafik

Horizontal edge padding feature missing

Unless a different system for positional adjustment gets implemented (e.g. #28 ), it would be useful to be able to adjust the offset from horizontal (left and right) edges as well. Currently Edge padding only applies to vertical (top and bottom) padding.

[Feature] Grouped Server List Text

Would it be possible to group the server list into different selections on the menu like one for server than one for the text channels within that server you have selected. I see that it kind of has them grouped anyway on the list but ive got quite a few servers and some have many text channels so scrolling through the entire list takes a long time.

Icon missing

When the settings window is open, it has no icon in the system tray

Not starting on Kubuntu 16.04

Now, even though Ubuntu 16.04 is officially supported by Canonical until 2021-04, you don't have to spend your time on supporting such an old distro at all and I will upgrade this computer eventually.

Out of the box, I had this issue:

Traceback (most recent call last):                                                                                                                                                                                                                                    
  File "/home/k/.local/bin/discover-overlay", line 5, in <module>                                                                                                                                                                                                     
    from discover_overlay.discover_overlay import entrypoint                                                                                                                                                                                                          
  File "/home/k/.local/lib/python3.5/site-packages/discover_overlay/__init__.py", line 1, in <module>                                                                                                                                                                 
    from .discover_overlay import *                                                                                                                                                                                                                                   
  File "/home/k/.local/lib/python3.5/site-packages/discover_overlay/discover_overlay.py", line 19, in <module>                                                                                                                                                        
    import cairo                                                                                                                                                                                                                                                      
ImportError: No module named 'cairo'

After installing sudo apt-get install libcairo2 libcairo2-dev (as suggested here) I get:

Traceback (most recent call last):
  File "/home/k/.local/bin/discover-overlay", line 8, in <module>
    sys.exit(entrypoint())
  File "/home/k/.local/lib/python3.5/site-packages/discover_overlay/discover_overlay.py", line 1077, in entrypoint
    main()
  File "/home/k/.local/lib/python3.5/site-packages/discover_overlay/discover_overlay.py", line 1055, in main
    create_gui()
  File "/home/k/.local/lib/python3.5/site-packages/discover_overlay/discover_overlay.py", line 997, in create_gui
    win = OverlayWindow()
  File "/home/k/.local/lib/python3.5/site-packages/discover_overlay/discover_overlay.py", line 662, in __init__
    self.set_untouchable()
  File "/home/k/.local/lib/python3.5/site-packages/discover_overlay/discover_overlay.py", line 731, in set_untouchable
    reg = Gdk.cairo_region_create_from_surface(surface)
KeyError: 'could not find foreign type Surface'

After installing sudo apt install python3-gi-cairo (as suggested here) I get:

Segmentation fault (core dumped)

Adding sudo apt install libgirepository1.0-dev still gave the segfault.

Let me know if you want me to try anything else or give you some information.

Close window placement on exiting settings menu

Currently if you open either voice or text overlay settings, click place window, position yellow box somewhere and then close the settings window, the yellow box remains until the settings window is reopened and "Save this position" is pressed.

Would be useful if when you close the settings window, it either saves the yellow window, opens a dialogue which asks you if you want to save it, or just removes the yellow window. I know which of these 3 will probably be implemented, but a man can dream.

[FEATURE] Twitch chat integration

Something to think about for the future. Could be super useful for all of those Linux streamers out there.
Alternatively, could probably just find a discord bot which hooks into twitch chat

Rename close to something more common

Hey. One thing that stood out to me a bit (with this as well as DiscordOverlayLinux) is that there is a button labelled "close" whilst I'm used to it being labelled "Quit" or "Exit" instead. I feel that "close" is more related to partial terminations (closing a window) whilst "quit" and "exit" more clearly communicate that any related processes will be terminated.

I recommend looking at some application tray icons and surveying what they are labelled to come to your own conclusions. Here are mine:

Close:   0
Exit:      4
Quit:    11

Software observed:

  • OBS
  • Steam
  • Itch.io
  • Discord
  • Zoom
  • Pidgin
  • Slack
  • Jami
  • Telegram
  • Skype
  • Korganizer
  • Joplin
  • Nextcloud
  • gnome-pie
  • easystroke

Crash when starting with autostart disabled

Me again, experiencing any and all bugs that can possibly happen! Updated to release version 0.2 to play around with it a bit, but it seems to have introduced a new launch crash, giving the following output:

INFO:root:Autostart info : desktop /home/murdo/.local/share/applications/discover_overlay.desktop auto None
Traceback (most recent call last):
  File "/usr/bin/discover-overlay", line 8, in <module>
    sys.exit(entrypoint())
  File "/home/murdo/.local/lib/python3.7/site-packages/discover_overlay/discover_overlay.py", line 125, in entrypoint
    discover.main()
  File "/home/murdo/.local/lib/python3.7/site-packages/discover_overlay/discover_overlay.py", line 109, in main
    self.create_gui()
  File "/home/murdo/.local/lib/python3.7/site-packages/discover_overlay/discover_overlay.py", line 46, in create_gui
    self.menu = self.make_menu()
  File "/home/murdo/.local/lib/python3.7/site-packages/discover_overlay/discover_overlay.py", line 74, in make_menu
    autostart_opt.set_active(self.a.is_auto())
TypeError: Argument 1 does not allow None as a value

I'm assuming it's some kind of error to do with not specifying any arguments, either in the launch command or somewhere in the code where it expects them.

Tags in the text overlay

Whenever there's any kind of tag (either a user or a role), the tag does not show the correct name, but the id, as follows

image

This is what is supposed to be showed:

image

Settings window for text channel options

I think settings for text channels need a notable disconnect from voice settings. To this end I propose that the text channel settings get a window to themselves

Problems with 'xdg'

I'm on KDE Neon and xdg isn't included by default. I went over and installed it with sudo apt install python3-xdg, but I'm getting an error:

ModuleNotFoundError: No module named 'xdg.BaseDirectory'

Some commands...
pip3 freeze | grep xdg

pyxdg==0.26
xdg==4.0.1

Here ran python3, imported xdg and then typed xdg. and double-tapped Tab:

xdg.HOME             xdg.Path(            xdg.XDG_CONFIG_HOME  xdg.XDG_RUNTIME_DIR
xdg.List(            xdg.XDG_CACHE_HOME   xdg.XDG_DATA_DIRS    xdg.os
xdg.Optional(        xdg.XDG_CONFIG_DIRS  xdg.XDG_DATA_HOME   

Changing line 20 to the following fixes the issues for me.
from xdg import XDG_CONFIG_HOME as xdg_config_home

New message popup option

An option to only show recently received messages and not keep a log when chat is inactive would make the overlay feel less cluttered

Installation script

We'll need at least a bash script or something to aid users in installation

[Feature] Mumble support

Would be pretty neat to have Mumble integration. Could even support positional audio visually perhaps?
e.g. someone on the left of you in game appears on that side of the screen, someone ahead at the centre top etc...

Program crashes when changing avatar size while present

I was fiddling with the settings and found that changing the avatar size makes the program crash, sometimes the first time, always the second time you add/decrement the value.

if "deaf" in user and user["deaf"]:
alpha = 0.5
pix = None
if user["id"] in self.avatars:
pix = self.avatars[user["id"]]
if self.align_right:
self.draw_text(
context, user["username"], w - self.avatar_size - self.horz_edge_padding, y)
self.draw_avatar_pix(

pix is None on line 194, but then when draw_avatar_pix is run, self.def_avatar is also None, so it throws the following error:

Traceback (most recent call last):
  File "/home/user/Projects/Discover/discover_overlay/voice_overlay.py", line 124, in draw
    self.do_draw(context)
  File "/home/user/Projects/Discover/discover_overlay/voice_overlay.py", line 154, in do_draw
    self.draw_avatar(context, user, rh)
  File "/home/user/Projects/Discover/discover_overlay/voice_overlay.py", line 198, in draw_avatar
    self.draw_avatar_pix(
  File "/home/user/Projects/Discover/discover_overlay/voice_overlay.py", line 254, in draw_avatar_pix
    Gdk.cairo_set_source_pixbuf(context, pixbuf, x, y)
TypeError: Argument 1 does not allow None as a value
Traceback (most recent call last):
  File "/home/user/Projects/Discover/discover_overlay/voice_overlay.py", line 124, in draw
    self.do_draw(context)
  File "/home/user/Projects/Discover/discover_overlay/voice_overlay.py", line 154, in do_draw
    self.draw_avatar(context, user, rh)
  File "/home/user/Projects/Discover/discover_overlay/voice_overlay.py", line 198, in draw_avatar
    self.draw_avatar_pix(
  File "/home/user/Projects/Discover/discover_overlay/voice_overlay.py", line 254, in draw_avatar_pix
    Gdk.cairo_set_source_pixbuf(context, pixbuf, x, y)
TypeError: Argument 1 does not allow None as a value
Traceback (most recent call last):
  File "/home/user/Projects/Discover/discover_overlay/voice_overlay.py", line 154, in do_draw
    self.draw_avatar(context, user, rh)
  File "/home/user/Projects/Discover/discover_overlay/voice_overlay.py", line 198, in draw_avatar
    self.draw_avatar_pix(
  File "/home/user/Projects/Discover/discover_overlay/voice_overlay.py", line 254, in draw_avatar_pix
    Gdk.cairo_set_source_pixbuf(context, pixbuf, x, y)
TypeError: Argument 1 does not allow None as a value
python3: ../../../../src/cairo.c:524: cairo_destroy: Assertion `CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&cr->ref_count)' failed.

Pop up style doesn't do anything

After setting up a text channel - floating, enabled etc, it works as expected.

However, When "Popup Style" is ticked, no text is shown even when messages are received.

Using Manjaro gnome

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.