Coder Social home page Coder Social logo

toxy's Introduction

Toxy

Tox client for Windows that loosely follows the official mockup and aims to be TCS compliant. Tox is a free (as in freedom) Skype replacement.

Feel free to contribute.

Features

  • Standard features like:
    • Nickname customization
    • Status customization
    • Friendlist
    • One to one conversations
    • Friendrequests
  • Avatars
  • Group chats
  • Voice chats
  • Video chats
  • Proxy support (SOCKS5 & HTTP)
  • Read receipts
  • File transfers
  • Typing detection
  • DNS discovery (tox1 and tox3)

Screenshots

Main Window Main Window with settings)

Compiling Toxy

Submodules

git submodule update --init --recursive

NuGet dependencies

  • AForge.Video
  • NAudio
  • Squirrel

These should be downloaded by Visual Studio automatically. This requires NuGet to be installed.

An up-to-date list of NuGet dependencies can be found in Toxy/packages.config

Separate dependencies

Once you have obtained Tox, place libtox.dll in the libs folder.

toxy's People

Contributors

alexbakker avatar basedman avatar derrick- avatar impyy avatar jleew526 avatar michaelschattgen avatar punker76 avatar timbo93 avatar urbancmc 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

Watchers

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

toxy's Issues

Hard-coded ToxConfigNodes

The Bootstrap node list appears to be hard-coded in "Toxy\Managers\Config.cs" which is a bad idea when those nodes need to be removed or new nodes are added.

All other clients dynamically parse the wikipage located here https://wiki.tox.chat/users/nodes (rather badly I might add).

It's actually very easy to parse the page using the do=export_xhtml command combined with C# XmlDocument (It's even easier/prettier with XDocument but Linq has performance penalties).

Here's an example method of parsing the node list dynamically like other clients:

    public class ToxNodes
    {
        public string Ipv4Address { get; set; }
        public string Ipv6Address { get; set; }
        public string Port { get; set; }
        public string Public { get; set; }
        public string Maintainer { get; set; }
        public string Location { get; set; }

        public override string ToString()
        {
            return this.Maintainer;
        }
    }

    private List<ToxNodes> QueryToxNodeList()
    {
        List<ToxNodes> nodeList = new List<ToxNodes>();
        WebClient wc = new WebClient();
        XmlDocument xmldoc = new XmlDocument();

        string toxNodeList = wc.DownloadString("https://wiki.tox.chat/users/nodes?do=export_xhtml");

        if (string.IsNullOrEmpty(toxNodeList))
        {
            return nodeList;
        }

        using (StringReader sr = new StringReader(toxNodeList))
        {
            xmldoc.Load(sr);
        }

        XmlNodeList nodes = xmldoc.SelectNodes("html//body//div//div//table//tr"); // xpath can be simplified as just "//tr"

        if (nodes != null)
        {
            string[] nodeArrayTypes = nodes[0].InnerText.Split(new[]
            {
                ' '
            }, StringSplitOptions.RemoveEmptyEntries);

            if (nodeArrayTypes.Length == 7)
            {
                // Todo: Verify index text matches expected index of items; and/or save index and use in below loop?
                //"IPv4"
                //"IPv6"
                //"Port"
                //"Public"
                //"Key"
                //"Maintainer"
                //"Location"
            }

            // skip first node
            for (int i = 1; i < nodes.Count - 1; i++)
            {
                string[] nodeArrayValue = nodes[i].InnerText.Split(new[]
                {
                    ' '
                }, StringSplitOptions.RemoveEmptyEntries);

                nodeList.Add(new ToxNodes
                {
                    Ipv4Address = nodeArrayValue[0],
                    Ipv6Address = nodeArrayValue[1],
                    Port = nodeArrayValue[2],
                    Public = nodeArrayValue[3],
                    Maintainer = nodeArrayValue[4],
                    Location = nodeArrayValue[5],
                });
            }
        }

        return nodeList;
    }

Feature req: Show build version

It would be really good to have an idea of the build version or at least the build date somewhere in the app.

I've yet to understand how the Updater functions and is it bound to the actual app, but a date at the end of the Settings tab, for example, would be really informative.

Search box border

A) Currently the border colours should be inverted: Border must be white when hovered and grey otherwise.

B) Change border colour according to colour scheme/theme.

Feature Request: Add SOCKS proxy configuration

Hello.

I am planning to use Toxy and route it through TOR to bypass firewall restrictions imposed by some networks I connect to.

Another application (uTox) has proxy configuration options but GUI is buggy, while your app seems to work better.

Regards,
NewEraCracker

False failure to load tox_save, program exits.

Program exits when loading old save file.

In ToxSharp, Tox.Load() always return false when tox_load returns -1

tox_load(), is known to return -1 sometimes even though the load is successful.
See: irungentoo/toxcore#1090

 /* Load the messenger from data of size length.
 * NOTE: The Tox save format isn't stable yet meaning this function sometimes
 * returns -1 when loading older saves. This however does not mean nothing was
 * loaded from the save.
 *
 *  returns 0 on success
 *  returns -1 on failure
 *  returns +1 on finding encrypted save data
 */
 int tox_load(Tox *tox, const uint8_t *data, uint32_t length);

Suggest: allow the program to continue, possibly with warning.

Unable to call anyone if I'm in a group chat

If I join a group chat I'm unable to call anyone, that's because of establishing a new toxGroup call right after I join a group. Maybe it will be better to do it when pressing a button?

FilterAudio

filterAudio.EchoFilterEnabled = false;

doesn't work because that field is not existing.

More / better sound filter

I get different background noises from most of my contacts and some are high enough to be annoying in conversations. Since I have used the mumble client/server before and it filters the sound so much better imo (very clear of noises), that I was wondering if it's possible to adjust the current filter (settings?), or if their filter could be implemented somehow?
I like the tox' core design and simpleness so this would be very nice to have a sound filter that does a superb job also.

VisualStudio Designer

It seems, that the "DataType switch" crashed VisualStudioDesigner. Does somebody know why? I tried to fix the MainWindowView for a long time, but i found no solution for this issue.

Underline errors bug

If I use english language, yep, it's correct and underline when i have errors in words. But if i use Russian (and think others language different from English) it say that all my words are not correct. Please, make check box in settings for turn off underlines or add custom dictionaries. Thank you!
screen

Assembly Dependencies Organization

Hi,

is there any way to make it easier to organize the needed dependencies. Maybe a nuGet Package with all current dll files. It would safe time because you have to check each depedency about the correct version now.

Greets,
TimBo

Translating Toxy

Hi!

Like Toxy, and I would like to help with translation into Russian.
I think you will have in the near future a lot of wishing to translations into other languages.

Prompt me, how can I give you a file with translation into Russian language. (Ru.xaml). I am ready to send you by e-mail or other means.

Compiling guide

You forgot to specify that for automatic download files in VisualStudio need NuGet (I did not have it after installing VisualStudio 2012)

Toxy run bug

If toxy (compiled) client located in C:\Program Files (x86)\ or C:\Program files\ it only run from button "run as administrator". If i run by double-click i get:
image

OS -- Win 8.1 Pro x64

Feature Request: Installer

There should be an easy Installer for Toxy.
I like Squirrel.Windows because of its good usability.
Also an updater is included, so you have only one pipeline for the installer and further versions.
If you want more informations about Squirrel you can find a video from dotnetconf2015 here

What do you think about an installer for Toxy?
Do you have other ideas on this topic?

MainWindow.xaml invalid markup bug

Hi all!
I'm using Visual Studio Community 2013
When I load the project and open MainWindow.xaml, it's showing error saying "The name 'GroupControlModelView' does not exist in the namespace 'clr-namespace:Toxy.ViewModels'. And it's impossible to navigate to GroupControlModelView.cs file from MainWindow.xaml. But it exists in the Toxy.ViewModels namespace.
This error causing the design of MainWindow.xaml unable to show.
But when I run the app, it's running without any errors. And if I comment lines in DataTemplate which is assigned to the GroupControlView, which are in the chatListBox's resources, the error disappears.

Hide in tray

It seems I can't save the preference for Hide in tray. Every time I check it and save it, it is unchecked upon restart of the program.
It seems the program has a problem writing that preference in the Config XML file.

Randomize Nospam button

Nospam textbox is way too large, the button gets overlapped by the scrollbar. Shorten the textbox so that the button's right side aligns with the top and bottom controls' sides.

Crash when trying to call.

Windows 8.1 x64

ToxAvError error = toxav.Call(selectedChatNumber, ToxAvCallType.Audio, 30, out call_index);

System.AccessViolationException was unhandled HResult=-2147467261 Message=Attempted to read or write protected memory. This is often an indication that other memory is corrupt. Source=SharpTox StackTrace: at SharpTox.Av.ToxAvFunctions.toxav_call(IntPtr toxav, Int32& call_index, Int32 friend_number, ToxAvCallType call_type, Int32 ringing_seconds) at SharpTox.Av.ToxAvFunctions.Call(IntPtr toxav, Int32 friend_number, ToxAvCallType call_type, Int32 ringing_seconds, Int32& call_index) at SharpTox.Av.ToxAv.Call(Int32 friend_number, ToxAvCallType call_type, Int32 ringing_seconds, Int32& call_index) at Toxy.MainWindow.CallButton_OnClick(Object sender, RoutedEventArgs e) in d:\Documents\GitHub\Toxy\Toxy\MainWindow.xaml.cs:line 1501 at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) at System.Windows.Controls.Button.OnClick() at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e) at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) at System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent) at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args) at System.Windows.Input.InputManager.ProcessStagingArea() at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport) at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel) at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler) at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs) at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam) at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg) at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame) at System.Windows.Application.RunInternal(Window window) at System.Windows.Application.Run() at Toxy.App.Main() in d:\Documents\GitHub\Toxy\Toxy\obj\Debug\App.g.cs:line 0 at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart() InnerException:

Feature req: Contact aliases & Bug: Text color

  1. This comes incredibly handy, especially if you could list the contact's name and the alias.

  2. Upon changing BaseColors from Dark to Light, one's past messages remain with a white fore color, thus rendering them invisible.

Tox Adhoc network

i want to run my tox on local network(ad-hoc) without any access to internet, but tox clients could find each other, any suggestion how i might be able to make it work.

thank you.

Bug: URLs sent in chat messages sometimes don't work properly

I have contacts on Toxy who will sometimes send chat messages including URLs. If the user doesn't include a space between the last thing they typed and the URL, the previous word gets highlighted as part of the URL.

For example, if I typed the following message: "Hey, check this out:www.google.com", the underlined URL would be "out:www.google.com". Clicking on this obviously doesn't work because the browser can't interpret the "out:" portion.

Furthermore, using shift+enter (without including a space) and pasting the URL results in the same behavior:

Hey, check this out:
www.google.com

This still results in the URL appearing as:

Hey, check this "out:
www.google.com"

(Quotes used to show what is included in the clickable URL).

Can this behavior be changed so that only the appropriate URL characters are underlined?

Thanks!

Feature Request: Sort/Filter "Friends" List

As my Toxy contact list grows, it's becoming more difficult to find the contact(s) I want to send a message to. It would be great if the friends list could be sorted and/or filtered by alphabetical order and/or online/away status.

I know there's a search box that would allow me to find a single user at a time, but this isn't a perfect solution if, for example, I want to add a number of currently online users to a group chat.

Thanks, and keep up the great work!

Own messages turn black on BaseDark

Each message you post when chatting is first grey-coloured, and then turns black, which makes it uncomfortable to read. It should either stay gray or shift colours in another way.

Feature Request: Inline image pasting

If I just need to send a screenshot or other copied image, it would be nice to be able to paste inline rather than having to save it to a file first and send it that way.

Inconsistencies in language settings

In the language XAML file, there is a Local_Chat_Header string that you can change, which should alter the "Chats" text shown in the top left, as the Local_Requests_Header changes the "Requests" text shown in the top left.
Image of Chat Header
The code is
<system:String x:Key="Local_Chats_Header">Chats</system:String>
However, changing this code does not affect the Chat header.
Image of edited chat header which seems misleading.

Also there are some inconsistencies in which settings headers you're allowed to change/translate.
For example, you can change the "Language", "Change nospam", and "Pick an accent color" strings to another language, but there are no fields available to allow the translation of "Audio", "Video", and "Miscellaneous Settings" headers.
Image of English settings
Image of Dutch settings

Feature Request: Hide/Block Contacts

It's me again!

First of all, I really like using Toxy, and I'd like to thank the entire development team for your efforts. It's a very useful tool, and I really appreciate how responsive the team has been to previous feature requests I've made here.

I was thinking today that it would be nice to be able to hide and/or block a contact in my contact list. There are people who appear in my contact list that I interact with very infrequently, and it'd be nice to be able to hide them until such time as either:

  1. A message is sent by a hidden contact.

  2. I choose to "unhide" a contact so that they appear on my main chat list.

Perhaps one way to do this would be to introduce the concept of "groups" to the software. I could then group contacts by "Work", "Friends", "Family", etc. so that I only see contacts that are relevant to me at the time.

Another thought (which is perhaps already taken into account by the Tox protocol, but I'm not extremely well-versed it how it works) is that it would be good to be able to block an abusive or otherwise unwanted contact. Is deleting that contact enough to facilitate this, or would a "block" feature in Toxy be useful?

Thanks again!

"Copy Key" Menu Option Truncates Characters

I recently emailed my Tox ID to an acquaintance, and he added me to Toxy. Once we were connected, I right-clicked his name in the friendlist and selected "Copy ID". I pasted this key to some mutual acquaintances, but they received the following message when trying to add the key:

"An error occurred, the checksum in this address is bad".

I determined that the "Copy ID" feature appears to be truncating the last 12 characters of an ID. For example:

Key in clipboard after using "Copy ID":
997AFAC041320205C95E46717EDF7C3A0B4F22D76FE4E97A7DAE8C710F987DXX

Actual key (last two characters obscured for privacy):
997AFAC041320205C95E46717EDF7C3A0B4F22D76FE4E97A7DAE8C710F987DXXE28XXXEF8DXX

I'm using the latest (2014-12-29) build.

Thanks!

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.