Coder Social home page Coder Social logo

urtrator's Introduction

URTrator

Main Window

URTrator is a desktop application that should (eventually) replace Urban Terror's and IRC client interfaces for you, because they're pretty shitty :).

Disclaimer: This software isn't written nor supported (for now) by FrozenSand. All code is a community effort.

Right now it can:

  • Obtaining list of Urban Terror servers from master server and updating information about them.
  • Local caching of whole data (in SQLite3 database).
  • Extended Urban Terror launching capabilities (e.g. launching game in another X session).
  • Supporting of multiple profiles with multiple game versions. When you're launching Urban Terror URTrator will check profile you're trying to use and, if version incompatability found, will not launch the game.
  • Favorites servers.
  • Updating single server.
  • Automatically update servers information.
  • Showing information about servers (like in UrT Connector).
  • Clipboard monitoring.

Planning:

  • Friends searching.
  • RCON console.
  • Game updating (not from official servers yet, sorry).
  • Pickup/matchmaking interfaces.
  • All kinds of notifications.
  • Extended profile editor, so every profile could have own configuration files, etc.
  • ...maybe more :)

Installation

Precautions

There is no precautions for latest source with Golang 1.11.2 and GTK+2 2.24.32.

Release

You don't need to install anything, thanks to Go's. URTrator executable contains everything we need. Just download approriate binary and launch it! :) The only thing is to make sure you have GTK2 and sqlite3 installed.

Windows and macOS users will receive full distribution that is ready to be launched OOB, no need to additionally install anything.

Distro-and-OS specific instructions

  • MacOS
  • Windows (to be written)
  • Nixes: read below.

Development version

URTrator written in Go and GTK2, so you should have them installed. Make sure your GOPATH variable is defined.

Then execute:

go get -d go.dev.pztrn.name/urtrator
go install go.dev.pztrn.name/urtrator

First command will get sources of URTrator and dependencies, second command will build executable for you and place it in $GOROOT/bin.

Updating

go get will do initial repo clone for you, but flag -u is required to get updated URTrator source. So, for updating sources just issue:

go get -d -u go.dev.pztrn.name/urtrator

Again, this will only update sources. To build executable you have to issue:

go install go.dev.pztrn.name/urtrator

Important information

macOS users - problems with Retina displays and blurry font

If you're on macOS and experiencing blurry font - apply Retinizer on .app. This will patch everything to use current screen DPI.

This isn't applied by default because it might create problems on displays with standart DPI.

Translation

Feel free to ping me everywhere you can and ask for adding a language for translation, if not already added here.

Also, if you're testing (or using) URTrator from source tree with go run you should also specify URTRATOR_BINDIR variable. This variable tells URTrator where it sources is and from where translations should be taken.

GTK warnings in console

Many GTK warnings in console may appear while using URTrator. Unfortunately, they are out of control, because they are related to Go GTK+2 bindings and nothing can be done on URTrator side.

Why GTK+2?

Because GTK+3 going on "stable api nonsense" way. And also it have some troubles with integrating with current popular WM/DE (like XFCE4, Openbox, etc.). And also I already tired of that shitty Adwaita and Cantarella.

If you want to use GTK+3, well, you can write UI for yourself, Go bindings exist.

urtrator's People

Contributors

gitter-badger avatar pztrn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

urtrator's Issues

Failed install

 /         12:19:38 go install github.com/pztrn/urtrator
go install: version is required when current directory is not in a module
	Try 'go install github.com/pztrn/urtrator@latest' to install the latest version
 /          12:20:28 
go install github.com/pztrn/urtrator@lates                                                                                           1 

go install github.com/pztrn/urtrator@lates: github.com/pztrn/urtrator@lates: invalid version: unknown revision lates

Profile copy

Add possibility to copy profile data into any version.

Show servers update progress

As our requester pretty much can update counters of updated servers, we should also show this counter in toolbar's label.

Servers history

urtrator should be able to keep server's history, including passwords.

Data race

WARNING: DATA RACE
Read at 0x00c420018d60 by goroutine 73:
  github.com/pztrn/urtrator/timer.(*Timer).executeTasks()
      /data/.go/workspace/src/github.com/pztrn/urtrator/timer/timer.go:62 +0x341

Previous write at 0x00c420018d60 by main goroutine:
  github.com/pztrn/urtrator/timer.(*Timer).SetTaskNotInProgress-fm()
      /data/.go/workspace/src/github.com/pztrn/urtrator/timer/timer.go:100 +0x1c3
  github.com/pztrn/urtrator/eventer.(*Eventer).reallyLaunchEvent()
      /data/.go/workspace/src/github.com/pztrn/urtrator/eventer/eventer_object.go:73 +0x23b
  github.com/pztrn/urtrator/eventer.(*Eventer).LaunchEvent.func1()
      /data/.go/workspace/src/github.com/pztrn/urtrator/eventer/eventer_object.go:55 +0x5c
  runtime.call32()
      /usr/lib/go/src/runtime/asm_amd64.s:514 +0x47
  reflect.Value.Call()
      /usr/lib/go/src/reflect/value.go:302 +0xc0
  github.com/mattn/go-gtk/glib._go_glib_sourcefunc()
      /data/.go/workspace/src/github.com/mattn/go-gtk/glib/glib.go:1019 +0x1af
  github.com/mattn/go-gtk/glib._cgoexpwrap_fe5c68f3714d__go_glib_sourcefunc()
      github.com/mattn/go-gtk/glib/_obj/_cgo_gotypes.go:1845 +0x38
  runtime.call32()
      /usr/lib/go/src/runtime/asm_amd64.s:514 +0x47
  github.com/mattn/go-gtk/gtk.MainIteration()
      /data/.go/workspace/src/github.com/mattn/go-gtk/gtk/gtk.go:271 +0x2f
  github.com/pztrn/urtrator/eventer.(*Eventer).LaunchEvent()
      /data/.go/workspace/src/github.com/pztrn/urtrator/eventer/eventer_object.go:61 +0x2b4
  github.com/pztrn/urtrator/ui/gtk2.(*MainWindow).serversUpdateCompleted()
      /data/.go/workspace/src/github.com/pztrn/urtrator/ui/gtk2/mainwindow.go:613 +0x1a9
  github.com/pztrn/urtrator/ui/gtk2.(*MainWindow).(github.com/pztrn/urtrator/ui/gtk2.serversUpdateCompleted)-fm()
      /data/.go/workspace/src/github.com/pztrn/urtrator/ui/gtk2/mainwindow_init.go:189 +0x4b
  github.com/pztrn/urtrator/eventer.(*Eventer).reallyLaunchEvent()
      /data/.go/workspace/src/github.com/pztrn/urtrator/eventer/eventer_object.go:73 +0x23b
  github.com/pztrn/urtrator/eventer.(*Eventer).LaunchEvent.func1()
      /data/.go/workspace/src/github.com/pztrn/urtrator/eventer/eventer_object.go:55 +0x5c
  runtime.call32()
      /usr/lib/go/src/runtime/asm_amd64.s:514 +0x47
  reflect.Value.Call()
      /usr/lib/go/src/reflect/value.go:302 +0xc0
  github.com/mattn/go-gtk/glib._go_glib_sourcefunc()
      /data/.go/workspace/src/github.com/mattn/go-gtk/glib/glib.go:1019 +0x1af
  github.com/mattn/go-gtk/glib._cgoexpwrap_fe5c68f3714d__go_glib_sourcefunc()
      github.com/mattn/go-gtk/glib/_obj/_cgo_gotypes.go:1845 +0x38
  runtime.call32()
      /usr/lib/go/src/runtime/asm_amd64.s:514 +0x47
  github.com/mattn/go-gtk/gtk.Main()
      /data/.go/workspace/src/github.com/mattn/go-gtk/gtk/gtk.go:261 +0x2f
  github.com/pztrn/urtrator/ui/gtk2.(*MainWindow).Initialize()
      /data/.go/workspace/src/github.com/pztrn/urtrator/ui/gtk2/mainwindow_init.go:179 +0x1b2d
  main.main()
      /data/.go/workspace/src/github.com/pztrn/urtrator/urtrator.go:33 +0x294

Goroutine 73 (running) created at:
  github.com/pztrn/urtrator/timer.(*Timer).Initialize.func1()
      /data/.go/workspace/src/github.com/pztrn/urtrator/timer/timer.go:96 +0xca

More modern about dialog

Standart GTK about dialog (which following GNOME HUD) is not bad, but there is no way to enable text wrapping, which makes about dialog look very ugly. So we need to make pretty about dialog.

Game updating

Add ability to update game version.

Probably, this should also be dealed with FrozenSand, maybe they can give some kind of API or similar to get access to their update servers?

Extended profile editor

Add ability to create own Urban Terror configuration with mouse and without reading ioq3's sources.

macOS theming is awful

We should do something with Look and Feel thing, because macOS build uses "MS Windows" style.

Place where to put authkey

We need a place in options where to put authkey.

This should not be profile-specific, as we will support (as officially in game) only one auth key at every moment of time.

More filters

Add more servers lists filters, like gamemode, ping limit, etc.

Self-updating

Add ability to self-update, with possibility to disable it in build-time for packaging for distros.

Also, if not disabled while building, toggling should be controlled from settings.

Check servers for acceptable pings

Check if current server ping is within acceptable range (as reported by sv_maxping cvar) and colorize line with red (or lightred) color is ping isn't within 0-sv_maxping range.

RCON console

Add ability to administer servers with RCON console.

Fully-featured profiles editor

Create profiles editor that can be called from profile creation dialog. It should be able to set maximum of possible CVars in Urban Terror's configuration file.

Profile autoselection based on server version

urtrator should be able to automagically select game profile based on server's version, if profile exists. Otherwise it should pop up a message about missing profile for version.

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.