1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00

Compare commits

..

No commits in common. "master" and "0.2.2" have entirely different histories.

2262 changed files with 354052 additions and 30401 deletions

View File

@ -1,6 +1,6 @@
{
"projectName": "wtf",
"projectOwner": "wtfutil",
"projectOwner": "senorprogrammer",
"repoType": "github",
"repoHost": "https://github.com",
"files": [
@ -8,6 +8,7 @@
],
"imageSize": 48,
"commit": true,
"contributorsPerLine": 6,
"contributors": [
{
"login": "senorprogrammer",
@ -308,780 +309,8 @@
"name": "Renán Romero",
"avatar_url": "https://avatars0.githubusercontent.com/u/538234?v=4",
"profile": "http://www.romeroruiz.com",
"contributions": []
},
{
"login": "sticreations",
"name": "Bastian Groß",
"avatar_url": "https://avatars1.githubusercontent.com/u/5031240?v=4",
"profile": "https://github.com/sticreations",
"contributions": []
},
{
"login": "nicholas-eden",
"name": "nicholas-eden",
"avatar_url": "https://avatars1.githubusercontent.com/u/2496835?v=4",
"profile": "https://github.com/nicholas-eden",
"contributions": []
},
{
"login": "danrabinowitz",
"name": "Dan Rabinowitz",
"avatar_url": "https://avatars1.githubusercontent.com/u/279390?v=4",
"profile": "https://github.com/danrabinowitz",
"contributions": []
},
{
"login": "dvdmssmnn",
"name": "David Missmann",
"avatar_url": "https://avatars1.githubusercontent.com/u/6897575?v=4",
"profile": "https://github.com/dvdmssmnn",
"contributions": []
},
{
"login": "mweb",
"name": "Mathias Weber",
"avatar_url": "https://avatars2.githubusercontent.com/u/882006?v=4",
"profile": "https://github.com/mweb",
"contributions": []
},
{
"login": "TheRedSpy15",
"name": "TheRedSpy15",
"avatar_url": "https://avatars1.githubusercontent.com/u/32081703?v=4",
"profile": "https://github.com/TheRedSpy15",
"contributions": []
},
{
"login": "HaraldNordgren",
"name": "Harald Nordgren",
"avatar_url": "https://avatars0.githubusercontent.com/u/9569897?v=4",
"profile": "https://www.linkedin.com/in/harald-nordgren-44778192",
"contributions": []
},
{
"login": "StormFireFox1",
"name": "Matei Alexandru Gardus",
"avatar_url": "https://avatars0.githubusercontent.com/u/11583824?v=4",
"profile": "http://stormfirefox1.github.io",
"contributions": []
},
{
"login": "Seanstoppable",
"name": "Sean Smith",
"avatar_url": "https://avatars2.githubusercontent.com/u/1523955?v=4",
"profile": "https://github.com/Seanstoppable",
"contributions": []
},
{
"login": "kaskavalci",
"name": "Halil Kaskavalci",
"avatar_url": "https://avatars1.githubusercontent.com/u/1646238?v=4",
"profile": "http://kaskavalci.com",
"contributions": []
},
{
"login": "jdenoy",
"name": "Johan Denoyer",
"avatar_url": "https://avatars2.githubusercontent.com/u/246715?v=4",
"profile": "http://www.johandenoyer.fr",
"contributions": []
},
{
"login": "skymeyer",
"name": "Jelle Vink",
"avatar_url": "https://avatars1.githubusercontent.com/u/593516?v=4",
"profile": "https://skymeyer.be",
"contributions": []
},
{
"login": "ImDevinC",
"name": "Devin Collins",
"avatar_url": "https://avatars1.githubusercontent.com/u/3997333?v=4",
"profile": "http://imdevinc.com",
"contributions": []
},
{
"login": "linenoise",
"name": "Danne Stayskal",
"avatar_url": "https://avatars3.githubusercontent.com/u/18333?v=4",
"profile": "http://danne.stayskal.com/",
"contributions": []
},
{
"login": "maxbeizer",
"name": "Max Beizer",
"avatar_url": "https://avatars1.githubusercontent.com/u/2006658?v=4",
"profile": "https://www.maxbeizer.com",
"contributions": []
},
{
"login": "E3V3A",
"name": "E:V:A",
"avatar_url": "https://avatars1.githubusercontent.com/u/194392?v=4",
"profile": "http://tinyurl.com/nwmj4as",
"contributions": []
},
{
"login": "GaboFDC",
"name": "Gabriel",
"avatar_url": "https://avatars0.githubusercontent.com/u/1425500?v=4",
"profile": "https://github.com/GaboFDC",
"contributions": []
},
{
"login": "AndrewScibek",
"name": "Andrew Scibek",
"avatar_url": "https://avatars2.githubusercontent.com/u/10111411?v=4",
"profile": "https://github.com/AndrewScibek",
"contributions": []
},
{
"login": "FriedCosey",
"name": "FriedCosey",
"avatar_url": "https://avatars0.githubusercontent.com/u/29709822?v=4",
"profile": "https://github.com/FriedCosey",
"contributions": []
},
{
"login": "michelegera",
"name": "Michele Gerarduzzi",
"avatar_url": "https://avatars1.githubusercontent.com/u/3891?v=4",
"profile": "https://michelegera.dev/",
"contributions": []
},
{
"login": "rudolphjacksonm",
"name": "Jack Morris",
"avatar_url": "https://avatars3.githubusercontent.com/u/13438569?v=4",
"profile": "https://github.com/rudolphjacksonm",
"contributions": []
},
{
"login": "foorb",
"name": "foorb",
"avatar_url": "https://avatars0.githubusercontent.com/u/14993807?v=4",
"profile": "https://github.com/foorb",
"contributions": []
},
{
"login": "baberlevi",
"name": "Levi Baber",
"avatar_url": "https://avatars0.githubusercontent.com/u/5819098?v=4",
"profile": "http://researchit.las.iastate.edu",
"contributions": []
},
{
"login": "gnanderson",
"name": "Graham Anderson",
"avatar_url": "https://avatars0.githubusercontent.com/u/38514?v=4",
"profile": "https://github.com/gnanderson",
"contributions": []
},
{
"login": "bosr",
"name": "Romain Bossart",
"avatar_url": "https://avatars2.githubusercontent.com/u/1936828?v=4",
"profile": "https://github.com/bosr",
"contributions": []
},
{
"login": "sosiska",
"name": "Kirill Motkov",
"avatar_url": "https://avatars0.githubusercontent.com/u/969838?v=4",
"profile": "http://eonix.ru",
"contributions": []
},
{
"login": "Choromanski",
"name": "Brian Choromanski",
"avatar_url": "https://avatars1.githubusercontent.com/u/3665694?v=4",
"profile": "http://www.BrianChoromanski.com",
"contributions": []
},
{
"login": "Sean-Der",
"name": "Sean DuBois",
"avatar_url": "https://avatars0.githubusercontent.com/u/1302304?v=4",
"profile": "http://siobud.com",
"contributions": []
},
{
"login": "gary-kim",
"name": "Gary Kim",
"avatar_url": "https://avatars1.githubusercontent.com/u/47195730?v=4",
"profile": "https://github.com/gary-kim",
"contributions": []
},
{
"login": "DylanBartels",
"name": "Dylan",
"avatar_url": "https://avatars1.githubusercontent.com/u/6660171?v=4",
"profile": "https://dylanbartels.com",
"contributions": []
},
{
"login": "l13t",
"name": "Dmytro Prokhorenkov",
"avatar_url": "https://avatars0.githubusercontent.com/u/1990354?v=4",
"profile": "http://liet.me",
"contributions": []
},
{
"login": "elliotrushton",
"name": "Elliot",
"avatar_url": "https://avatars1.githubusercontent.com/u/590442?v=4",
"profile": "https://github.com/elliotrushton",
"contributions": []
},
{
"login": "chenrui333",
"name": "chenrui",
"avatar_url": "https://avatars3.githubusercontent.com/u/1580956?v=4",
"profile": "http://chenrui.dev",
"contributions": []
},
{
"login": "sudermanjr",
"name": "Andrew Suderman",
"avatar_url": "https://avatars0.githubusercontent.com/u/7624765?v=4",
"profile": "https://github.com/sudermanjr",
"contributions": []
},
{
"login": "rwhogg",
"name": "Bob 'Wombat' Hogg",
"avatar_url": "https://avatars3.githubusercontent.com/u/2373856?v=4",
"profile": "https://github.com/rwhogg",
"contributions": []
},
{
"login": "hxw",
"name": "Christopher Hall",
"avatar_url": "https://avatars0.githubusercontent.com/u/143462?v=4",
"profile": "https://github.com/hxw",
"contributions": []
},
{
"login": "hneiva",
"name": "Heitor Neiva",
"avatar_url": "https://avatars1.githubusercontent.com/u/3451557?v=4",
"profile": "https://github.com/hneiva",
"contributions": []
},
{
"login": "herbygillot",
"name": "Herby Gillot",
"avatar_url": "https://avatars3.githubusercontent.com/u/618376?v=4",
"profile": "https://github.com/herbygillot",
"contributions": []
},
{
"login": "brudil",
"name": "James Canning",
"avatar_url": "https://avatars3.githubusercontent.com/u/382352?v=4",
"profile": "http://brudil.com",
"contributions": []
},
{
"login": "jeffz",
"name": "jeffz",
"avatar_url": "https://avatars1.githubusercontent.com/u/45892?v=4",
"profile": "https://twitter.com/jeffz4000",
"contributions": []
},
{
"login": "mikkeljuhl",
"name": "Mikkel Jeppesen Juhl",
"avatar_url": "https://avatars0.githubusercontent.com/u/1764035?v=4",
"profile": "https://mikkeljuhl.com",
"contributions": []
},
{
"login": "lesteenman",
"name": "Erik",
"avatar_url": "https://avatars1.githubusercontent.com/u/963290?v=4",
"profile": "https://github.com/lesteenman",
"contributions": []
},
{
"login": "nyourchuck",
"name": "Nate Yourchuck",
"avatar_url": "https://avatars1.githubusercontent.com/u/155574?v=4",
"profile": "https://github.com/nyourchuck",
"contributions": []
},
{
"login": "Ameobea",
"name": "Casey Primozic",
"avatar_url": "https://avatars3.githubusercontent.com/u/4335849?v=4",
"profile": "https://cprimozic.net/",
"contributions": []
},
{
"login": "andor-pierdelacabeza",
"name": "Alvaro [Andor]",
"avatar_url": "https://avatars3.githubusercontent.com/u/2430915?v=4",
"profile": "http://pierdelacabeza.com/maruja",
"contributions": []
},
{
"login": "Midnight-Conqueror",
"name": "Joel Valentine",
"avatar_url": "https://avatars1.githubusercontent.com/u/17101621?v=4",
"profile": "https://github.com/Midnight-Conqueror",
"contributions": []
},
{
"login": "v-braun",
"name": "Viktor Braun",
"avatar_url": "https://avatars0.githubusercontent.com/u/4738210?v=4",
"profile": "https://www.viktor-braun.de",
"contributions": []
},
{
"login": "ChrisDBrown",
"name": "ChrisDBrown",
"avatar_url": "https://avatars3.githubusercontent.com/u/3877652?v=4",
"profile": "https://www.chrisdbrown.co.uk/",
"contributions": []
},
{
"login": "Narengowda",
"name": "Narendra L",
"avatar_url": "https://avatars2.githubusercontent.com/u/582821?v=4",
"profile": "https://narengowda.github.io/",
"contributions": []
},
{
"login": "ibaum",
"name": "ibaum",
"avatar_url": "https://avatars1.githubusercontent.com/u/24609103?v=4",
"profile": "https://github.com/ibaum",
"contributions": []
},
{
"login": "noxer",
"name": "Tim Scheuermann",
"avatar_url": "https://avatars3.githubusercontent.com/u/566185?v=4",
"profile": "https://github.com/noxer",
"contributions": []
},
{
"login": "indradhanush",
"name": "Indradhanush Gupta",
"avatar_url": "https://avatars0.githubusercontent.com/u/2682729?v=4",
"profile": "https://indradhanush.github.io/",
"contributions": []
},
{
"login": "VictorAvelar",
"name": "Victor Hugo Avelar Ossorio",
"avatar_url": "https://avatars3.githubusercontent.com/u/7926849?v=4",
"profile": "https://victoravelar.com",
"contributions": []
},
{
"login": "scw007",
"name": "Steven Whitehead",
"avatar_url": "https://avatars3.githubusercontent.com/u/4001640?v=4",
"profile": "https://github.com/scw007",
"contributions": []
},
{
"login": "lawrencecraft",
"name": "Lawrence Craft",
"avatar_url": "https://avatars0.githubusercontent.com/u/660580?v=4",
"profile": "https://github.com/lawrencecraft",
"contributions": []
},
{
"login": "aviaviavi",
"name": "Avi Press",
"avatar_url": "https://avatars1.githubusercontent.com/u/1388071?v=4",
"profile": "http://avi.press",
"contributions": []
},
{
"login": "Tardog",
"name": "Sarah Kraßnigg",
"avatar_url": "https://avatars0.githubusercontent.com/u/22562624?v=4",
"profile": "https://github.com/Tardog",
"contributions": []
},
{
"login": "jmks",
"name": "Jason Schweier",
"avatar_url": "https://avatars1.githubusercontent.com/u/4923990?v=4",
"profile": "http://jmks.ca",
"contributions": []
},
{
"login": "massa1240",
"name": "Massa",
"avatar_url": "https://avatars2.githubusercontent.com/u/8268483?v=4",
"profile": "https://github.com/massa1240",
"contributions": []
},
{
"login": "Boot-Error",
"name": "Vighnesh SK",
"avatar_url": "https://avatars3.githubusercontent.com/u/8546140?v=4",
"profile": "http://boot-error.github.io",
"contributions": []
},
{
"login": "alexfornuto",
"name": "Alex Fornuto",
"avatar_url": "https://avatars3.githubusercontent.com/u/2349184?v=4",
"profile": "http://alexfornuto.com",
"contributions": []
},
{
"login": "stevenwhitehead",
"name": "stevenwhitehead",
"avatar_url": "https://avatars0.githubusercontent.com/u/30630257?v=4",
"profile": "https://github.com/stevenwhitehead",
"contributions": []
},
{
"login": "jdenoy-saagie",
"name": "Johan Denoyer",
"avatar_url": "https://avatars2.githubusercontent.com/u/55875303?v=4",
"profile": "https://github.com/jdenoy-saagie",
"contributions": []
},
{
"login": "caalberts",
"name": "Albert Salim",
"avatar_url": "https://avatars1.githubusercontent.com/u/4749355?v=4",
"profile": "https://albertsalim.dev",
"contributions": []
},
{
"login": "felicianotech",
"name": "Ricardo N Feliciano",
"avatar_url": "https://avatars1.githubusercontent.com/u/6017470?v=4",
"profile": "https://Feliciano.Tech",
"contributions": []
},
{
"login": "3mard",
"name": "Omer Davutoglu",
"avatar_url": "https://avatars3.githubusercontent.com/u/42009880?v=4",
"profile": "https://github.com/3mard",
"contributions": []
},
{
"login": "hemu",
"name": "Hemu",
"avatar_url": "https://avatars0.githubusercontent.com/u/1871299?v=4",
"profile": "https://github.com/hemu",
"contributions": []
},
{
"login": "Daanikus",
"name": "Dan Bent",
"avatar_url": "https://avatars0.githubusercontent.com/u/18027087?v=4",
"profile": "https://github.com/Daanikus",
"contributions": []
},
{
"login": "C123R",
"name": "C123R",
"avatar_url": "https://avatars3.githubusercontent.com/u/20225764?v=4",
"profile": "https://cizer.dev",
"contributions": []
},
{
"login": "madepolli",
"name": "Matjaž Depolli",
"avatar_url": "https://avatars1.githubusercontent.com/u/7237000?v=4",
"profile": "https://github.com/madepolli",
"contributions": []
},
{
"login": "schoentoon",
"name": "Toon Schoenmakers",
"avatar_url": "https://avatars1.githubusercontent.com/u/417618?v=4",
"profile": "https://blog.schoentoon.blue",
"contributions": []
},
{
"login": "TDHTTTT",
"name": "TDHTTTT",
"avatar_url": "https://avatars2.githubusercontent.com/u/24703459?v=4",
"profile": "http://tdhttt.com",
"contributions": []
},
{
"login": "jottr",
"name": "jottr",
"avatar_url": "https://avatars0.githubusercontent.com/u/2744198?v=4",
"profile": "https://github.com/jottr",
"contributions": []
},
{
"login": "NickyMateev",
"name": "Nikolay Mateev",
"avatar_url": "https://avatars3.githubusercontent.com/u/15074116?v=4",
"profile": "https://www.linkedin.com/in/nikolay-mateev-79187b167/",
"contributions": []
},
{
"login": "Gibstick",
"name": "Charlie Wang",
"avatar_url": "https://avatars1.githubusercontent.com/u/1320418?v=4",
"profile": "https://charliewang.io",
"contributions": []
},
{
"login": "liyiheng",
"name": "liyiheng",
"avatar_url": "https://avatars3.githubusercontent.com/u/16461061?v=4",
"profile": "https://github.com/liyiheng",
"contributions": []
},
{
"login": "bjoernw",
"name": "Bjoern Weidlich",
"avatar_url": "https://avatars1.githubusercontent.com/u/1467156?v=4",
"profile": "https://bjoern.svbtle.com",
"contributions": []
},
{
"login": "firecat53",
"name": "Scott Hansen",
"avatar_url": "https://avatars1.githubusercontent.com/u/568113?v=4",
"profile": "https://github.com/firecat53",
"contributions": []
},
{
"login": "davidsbond",
"name": "David Bond",
"avatar_url": "https://avatars3.githubusercontent.com/u/6227720?v=4",
"profile": "https://davidsbond.github.io",
"contributions": []
},
{
"login": "yesnault",
"name": "Yvonnick Esnault",
"avatar_url": "https://avatars3.githubusercontent.com/u/395454?v=4",
"profile": "https://github.com/yesnault",
"contributions": []
},
{
"login": "leterio",
"name": "Vinícius Letério",
"avatar_url": "https://avatars0.githubusercontent.com/u/15060358?v=4",
"profile": "https://github.com/leterio",
"contributions": []
},
{
"login": "acaloiaro",
"name": "Adriano",
"avatar_url": "https://avatars3.githubusercontent.com/u/3331648?v=4",
"profile": "https://adriano.fyi",
"contributions": []
},
{
"login": "jonhadfield",
"name": "Jon Hadfield",
"avatar_url": "https://avatars1.githubusercontent.com/u/843944?v=4",
"profile": "https://github.com/jonhadfield",
"contributions": []
},
{
"login": "Tdnshah",
"name": "Tejas Shah",
"avatar_url": "https://avatars2.githubusercontent.com/u/13272752?v=4",
"profile": "https://github.com/Tdnshah",
"contributions": []
},
{
"login": "mogensen",
"name": "Frederik Mogensen",
"avatar_url": "https://avatars2.githubusercontent.com/u/592710?v=4",
"profile": "https://github.com/mogensen",
"contributions": []
},
{
"login": "rsaarelm",
"name": "Risto Saarelma",
"avatar_url": "https://avatars1.githubusercontent.com/u/41840?v=4",
"profile": "https://github.com/rsaarelm",
"contributions": []
},
{
"login": "sam-github",
"name": "Sam Roberts",
"avatar_url": "https://avatars2.githubusercontent.com/u/17607?v=4",
"profile": "https://sam-github.github.io/",
"contributions": []
},
{
"login": "gerchardon",
"name": "gerchardon",
"avatar_url": "https://avatars0.githubusercontent.com/u/5973160?v=4",
"profile": "https://github.com/gerchardon",
"contributions": []
},
{
"login": "mryanmurphy",
"name": "Matt",
"avatar_url": "https://avatars2.githubusercontent.com/u/641427?v=4",
"profile": "https://github.com/mryanmurphy",
"contributions": []
},
{
"login": "ripienaar",
"name": "R.I.Pienaar",
"avatar_url": "https://avatars0.githubusercontent.com/u/82342?v=4",
"profile": "http://devco.net/",
"contributions": []
},
{
"login": "fmotrifork",
"name": "Frederik Mogensen",
"avatar_url": "https://avatars3.githubusercontent.com/u/18327738?v=4",
"profile": "https://github.com/fmotrifork",
"contributions": []
},
{
"login": "aeter",
"name": "aeter",
"avatar_url": "https://avatars0.githubusercontent.com/u/238607?v=4",
"profile": "https://github.com/aeter",
"contributions": []
},
{
"login": "timhwang21",
"name": "Tim Hwang",
"avatar_url": "https://avatars3.githubusercontent.com/u/5831434?v=4",
"profile": "http://timhwang21.gitbook.io",
"contributions": []
},
{
"login": "cyingfan",
"name": "Ying Fan Chong",
"avatar_url": "https://avatars1.githubusercontent.com/u/10404961?v=4",
"profile": "http://about.me/yingfan",
"contributions": []
},
{
"login": "MartinJohns",
"name": "Martin Johns",
"avatar_url": "https://avatars1.githubusercontent.com/u/5269069?v=4",
"profile": "https://github.com/MartinJohns",
"contributions": []
},
{
"login": "jamietanna",
"name": "Jamie Tanna",
"avatar_url": "https://avatars0.githubusercontent.com/u/3315059?v=4",
"profile": "https://www.jvt.me",
"contributions": []
},
{
"login": "trimble",
"name": "Todd Trimble",
"avatar_url": "https://avatars3.githubusercontent.com/u/371317?v=4",
"profile": "https://github.com/trimble",
"contributions": []
},
{
"login": "mhanberg",
"name": "Mitchell Hanberg",
"avatar_url": "https://avatars2.githubusercontent.com/u/5523984?v=4",
"profile": "https://www.mitchellhanberg.com",
"contributions": []
},
{
"login": "franga2000",
"name": "Miha Frangež",
"avatar_url": "https://avatars3.githubusercontent.com/u/3891092?v=4",
"profile": "https://franga2000.com",
"contributions": []
},
{
"login": "sahilister",
"name": "Sahil Dhiman",
"avatar_url": "https://avatars0.githubusercontent.com/u/52946452?v=4",
"profile": "https://blog.sahilister.in/",
"contributions": []
},
{
"login": "applegreengrape",
"name": "Pingzhou | 平舟",
"avatar_url": "https://avatars2.githubusercontent.com/u/17727004?v=4",
"profile": "https://pzoo.netlify.app/",
"contributions": []
},
{
"login": "YuviGold",
"name": "Yuval Goldberg",
"avatar_url": "https://avatars0.githubusercontent.com/u/29873449?v=4",
"profile": "https://github.com/YuviGold",
"contributions": []
},
{
"login": "dabcoder",
"name": "David Bouchare",
"avatar_url": "https://avatars3.githubusercontent.com/u/5034531?v=4",
"profile": "https://github.com/dabcoder",
"contributions": []
},
{
"login": "stone",
"name": "Fredrik Steen",
"avatar_url": "https://avatars3.githubusercontent.com/u/29077?v=4",
"profile": "https://github.com/stone",
"contributions": []
},
{
"login": "zye1996",
"name": "zye1996",
"avatar_url": "https://avatars2.githubusercontent.com/u/28901953?v=4",
"profile": "https://github.com/zye1996",
"contributions": []
},
{
"login": "pgaxatte",
"name": "Pierre Gaxatte",
"avatar_url": "https://avatars.githubusercontent.com/u/30696904?v=4",
"profile": "https://github.com/pgaxatte",
"contributions": []
},
{
"login": "xntrik",
"name": "Christian Frichot",
"avatar_url": "https://avatars.githubusercontent.com/u/678260?v=4",
"profile": "https://xntrik.wtf",
"contributions": []
},
{
"login": "LKaemmerling",
"name": "Lukas Kämmerling",
"avatar_url": "https://avatars.githubusercontent.com/u/4281581?v=4",
"profile": "https://lukas-kaemmerling.de",
"contributions": []
},
{
"login": "inetAnt",
"name": "Antoine Meillet",
"avatar_url": "https://avatars.githubusercontent.com/u/1765366?v=4",
"profile": "https://inetant.net/",
"contributions": []
},
{
"login": "cclauss",
"name": "Christian Clauss",
"avatar_url": "https://avatars.githubusercontent.com/u/3709715?v=4",
"profile": "https://www.patreon.com/cclauss",
"contributions": [
]
}
],
"contributorsPerLine": 7,
"commitConvention": "none"
]
}

1
.github/FUNDING.yml vendored
View File

@ -1 +0,0 @@
github: senorprogrammer

View File

@ -1,6 +1,16 @@
---
name: 🐞 Report a Bug
about: Tell us what's broken
name: Bug Report
about: Something is broken?
---
## What's broken?
#### What's the problem?
#### How did you expect it to behave?
#### Operating system
#### Terminal program & version
#### WTF version

View File

@ -1,6 +1,11 @@
---
name: ⚡️ Request a Feature
about: Tell us what it should do
name: Feature Request
about: You have a neat idea that should be implemented?
---
## What should it do?
#### What problem does this solve?
#### How do envision it working?

View File

@ -1,8 +1,8 @@
---
name: ❓Ask a Question
about: Tell us how we can help
name: ❓ Support Question
about: Have a problem that you can't figure out?
---
## How can we help?
#### What problem are you having and how can we help?

View File

@ -3,6 +3,9 @@ name: Improvement
about: You have some improvement to make wtf better?
---
Thanks for submitting a pull request. Please provide enough information so that others can review your pull request.
#### What problem does this solve?
#### Is this related to an existing Issue? If so, which one?

View File

@ -3,7 +3,9 @@ name: Other
about: You have some other ideas you want to introduce?
---
Thanks for submitting a pull request. Please provide enough information so that others can review your pull request.
<!-- Thanks for submitting a pull request! Please provide enough information so that others can review your pull request. -->
#### What problem does this solve?

View File

@ -1,11 +0,0 @@
version: 2
updates:
- package-ecosystem: gomod
directory: "/"
schedule:
interval: daily
open-pull-requests-limit: 10
reviewers:
- senorprogrammer
assignees:
- senorprogrammer

View File

@ -1,51 +0,0 @@
name: "Code scanning - action"
on:
push:
pull_request:
schedule:
- cron: '0 3 * * 3,6'
jobs:
CodeQL-Build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
fetch-depth: 2
# If this run was triggered by a pull request event, then checkout
# the head of the pull request instead of the merge commit.
- run: git checkout HEAD^2
if: ${{ github.event_name == 'pull_request' }}
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
# Override language selection by uncommenting this and choosing your languages
# with:
# languages: go, javascript, csharp, python, cpp, java
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1

View File

@ -1,22 +0,0 @@
name: golangci-lint
on:
push:
tags:
- v*
branches:
- master
pull_request:
jobs:
golangci:
name: lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: golangci-lint
uses: golangci/golangci-lint-action@v2
with:
# Required: the version of golangci-lint is required and must be
# specified without patch version: we always use the latest patch version.
# https://github.com/golangci/golangci-lint/releases
version: v1.39
args: ./...

View File

@ -1,30 +0,0 @@
name: goreleaser
on:
push:
tags:
- '*'
jobs:
goreleaser:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
-
name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.16
-
name: Run GoReleaser
uses: goreleaser/goreleaser-action@v2
with:
version: latest
args: release --rm-dist
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GH_PAT }}

View File

@ -1,70 +0,0 @@
name: static check
on: pull_request
jobs:
imports:
name: Imports
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: check
uses: grandcolline/golang-github-actions@4356d0458ea4bfdb55fcb296437812acef970f9b
with:
run: imports
token: ${{ secrets.GITHUB_TOKEN }}
errcheck:
name: Errcheck
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: check
uses: grandcolline/golang-github-actions@4356d0458ea4bfdb55fcb296437812acef970f9b
with:
run: errcheck
token: ${{ secrets.GITHUB_TOKEN }}
#lint:
#name: Lint
#runs-on: ubuntu-latest
#steps:
#- uses: actions/checkout@master
#- name: check
#uses: grandcolline/golang-github-actions@4356d04
#with:
#run: lint
#token: ${{ secrets.GITHUB_TOKEN }}
shadow:
name: Shadow
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: check
uses: grandcolline/golang-github-actions@4356d0458ea4bfdb55fcb296437812acef970f9b
with:
run: shadow
token: ${{ secrets.GITHUB_TOKEN }}
staticcheck:
name: StaticCheck
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: check
uses: grandcolline/golang-github-actions@4356d0458ea4bfdb55fcb296437812acef970f9b
with:
run: staticcheck
token: ${{ secrets.GITHUB_TOKEN }}
#sec:
#name: Sec
#runs-on: ubuntu-latest
#steps:
#- uses: actions/checkout@master
#- name: check
#uses: grandcolline/golang-github-actions@4356d04
#with:
#run: sec
#token: ${{ secrets.GITHUB_TOKEN }}
#flags: "-exclude=G104"

2
.gitignore vendored
View File

@ -18,8 +18,6 @@ ftw*
gcal/client_secret.json
gspreadsheets/client_secret.json
profile.pdf
report.*
.vscode
# All things node
node_modules/

View File

@ -1,18 +0,0 @@
run:
timeout: 2m
linters:
enable:
- vet
- errcheck
- staticcheck
# - dupl
# - funlen
# - goconst
# - gocritic
- gofmt
# - golint
# - misspell
# - stylecheck
- unconvert
# - whitespace

View File

@ -1,30 +1,15 @@
env:
- GO111MODULE=on
- GOPROXY="https://proxy.golang.org,direct"
archives:
- id: default
wrap_in_directory: true
builds:
- binary: wtfutil
goos:
- darwin
- linux
goarch:
- amd64
- arm
- arm64
before:
hooks:
- make install
brews:
-
name: wtfutil
homepage: 'https://wtfutil.com'
description: 'The personal information dashboard for your terminal.'
tap:
owner: wtfutil
name: homebrew-wtfutil
builds:
- binary: wtf
goos:
- darwin
- linux
goarch:
- 386
- amd64
archive:
wrap_in_directory: true

View File

@ -1,14 +1,12 @@
language: go
go:
- "1.16.x"
- "1.10"
sudo: false
before_install:
# Make sure travis builds work for forks
- mkdir -p $TRAVIS_BUILD_DIR $GOPATH/src/github.com/wtfutil
- test ! -d $GOPATH/src/github.com/wtfutil/wtf && mv $TRAVIS_BUILD_DIR $GOPATH/src/github.com/wtfutil/wtf || true
- export TRAVIS_BUILD_DIR=$HOME/gopath/src/github.com/wtfutil/wtf
- cd $HOME/gopath/src/github.com/wtfutil/wtf
- export GOPROXY="https://proxy.golang.org,direct"
- mkdir -p $TRAVIS_BUILD_DIR $GOPATH/src/github.com/senorprogrammer
- test ! -d $GOPATH/src/github.com/senorprogrammer/wtf && mv $TRAVIS_BUILD_DIR $GOPATH/src/github.com/senorprogrammer/wtf || true
- export TRAVIS_BUILD_DIR=$HOME/gopath/src/github.com/senorprogrammer/wtf
- cd $HOME/gopath/src/github.com/senorprogrammer/wtf
script: go get ./... && ./scripts/check-uncommitted-vendor-files.sh && go test -v github.com/wtfutil/wtf/...
script: go get ./... && go get github.com/go-test/deep && go test -v github.com/senorprogrammer/wtf/wtf_tests/...

View File

@ -1,628 +1,7 @@
# Changelog
## Unreleased
### ⚡️ Added
* Yahoo Finance module added, by [@inetAnt](https://github.com/inetAnt)
### 🐞 Fixed
* Fixed error closing the Jira module response body, [#1070](https://github.com/wtfutil/wtf/issues/1070) by [@senorprogrammer](https://github.com/senorprogrammer)
## v0.36.0
### ⚡️ Added
* HealthChecks module added, by [@stone](https://github.com/stone)
* Asana module added, by [@xntrik](https://github.com/xntrik)
* Kubernetes module now displays the Ready Replicas and Total Replicas count, by [@LKaemmerling](https://github.com/LKaemmerling)
* Now builds using Go 1.16, which provides support for Apple's M1 ARM hardware, by [@LKaemmerling](https://github.com/LKaemmerling)
### 🐞 Fixed
* Numerous dangling response bodies closed, by [@dabcoder](https://github.com/dabcoder)
* HackerNews read-on-response error fixed, by [@LKaemmerling](https://github.com/LKaemmerling)
* CircleCI read-on-response error fixed, by [@dabcoder](https://github.com/dabcoder)
## v0.35.0
### ⚡️ Added
* CircleCI module now supports `numberOfBuilds` setting defining how many builds to display, [#1020](https://github.com/wtfutil/wtf/issues/1020) by [@dabcoder](https://github.com/dabcoder)
* The <kbd>\\</kbd> key now opens module documentation in the browser for the currently-focused module, by [@senorprogrammer](https://github.com/senorprogrammer)
* Krisinformation module added, by [@stone](https://github.com/stone)
* Covid module has been added, by [@dabcoder](https://github.com/dabcoder)
* Support for a "Language" configuration key added. Supports any BCP 47 tag for identifying a langauge, by [@senorprogrammer](https://github.com/senorprogrammer)
### 🐞 Fixed
* CryptoLive prices update again, [#1041](https://github.com/wtfutil/wtf/issues/1041) by [@zye1996](https://github.com/zye1996)
## v0.34.0
2020-11-08
### ⚡️ Added
* DigitalOcean module now supports custom column definitions in the default layout. See [the docs](https://wtfutil.com/modules/digitalocean/) for details, [#986](https://github.com/wtfutil/wtf/issues/986) by [@senorprogrammer](https://github.com/senorprogrammer)
* Finnhub stock quotes module added, [#930](https://github.com/wtfutil/wtf/issues/930) by [@applegreengrape](https://github.com/applegreengrape)
* Grafana Alerts module added, by [@schoentoon](https://github.com/schoentoon)
### 👍 Updated
* Updated `google.golang.org/api` from 0.30.0 to 0.33.0
* Updated `github.com/digitalocean/godo` from 1.46.0 to 1.52.0
* Updated `github.com/xanzy/go-gitlab` from 0.38.1 to 0.39.0
* Updated `github.com/zorkian/go-datadog-api` from 2.29.0+incompatible to 2.30.0+incompatible
* Updated `golang.org/x/text` from 0.3.3 to 0.3.4
## v0.33.0
2020-10-13
### ⚡️ Added
* FeedReader module supports [display mode switching](https://github.com/wtfutil/wtf/pull/976) via the `t` key, by [@cyingfan](https://github.com/cyingfan)
* Clocks module now supports `natural` ordering option, [#896](https://github.com/wtfutil/wtf/issues/896) by [@seanstoppable](https://github.com/Seanstoppable)
* Exit banner message added, by [@senorprogrammer](https://github.com/senorprogrammer)
* [UptimeRobot module added](https://github.com/wtfutil/wtf/pull/983), by [@franga2000](https://github.com/franga2000)
* Gitlab module now defaults the domain to `https://gitlab.com`, by [@jmks](https://github.com/jmks)
### 🐞 Fixed
* Exchange Rates module now displays rates in alphabetical order, sorted by the base rate, by [@senorprogrammer](https://github.com/senorprogrammer)
* Feed Reader module no longer crashes on feeds that don't have a published date, [#958](https://github.com/wtfutil/wtf/issues/958) by [@cyingfan](https://github.com/cyingfan)
* Stray blank lines no longer appear at the end of highlightable lists, [#977](https://github.com/wtfutil/wtf/pull/977) by [@cyingfan](https://github.com/cyingfan)
* `config.yml` now properly set to `0600` instead of `0666`, by [@cyingfan](https://github.com/cyingfan)
* Now blank-imports the `time/tzinfo` package to provide timezone support for Windows users, [#994](https://github.com/wtfutil/wtf/issues/994) by [@trimble](https://github.com/trimble)
### 👍 Updated
* Updated `github.com/gdamore/tcell` from 1.3.0 to 1.4.0
* Updated `github.com/shirou/gopsutil` from 2.20.7+incompatible to 2.20.9+incompatible
* Updated `github.com/mmcdole/gofeed` from 1.0.0 to 1.1.0
* Updated `github.com/digitalocean/godo` from 1.42.1 to 1.46.0
* Updated `github.com/xanzy/go-gitlab` from 0.33.0 to 0.38.1
* Updated `github.com/adlio/trello` from 1.7.0 to 1.8.0
* Updated `github.com/alecthomas/chroma` from 0.8.0 to 0.8.1
* Updated `github.com/nicklaw5/helix` from 0.5.9 to 0.7.0
* Now requires Go 1.15 for compilation in Dockerfiles and go.mod, by [@seanstoppable](https://github.com/Seanstoppable)
## v0.32.0
### ⚡️ Added
* PagerDuty module now supports `showOncallEnd` setting, which determines whether or not to display the oncall rotation end date, by [@senorprogrammer](https://github.com/senorprogrammer)
* Exchange Rates module now supports `precision` setting, which determines how many decimal places to display, [#897](https://github.com/wtfutil/wtf/issues/897) by [@senorprogrammer](https://github.com/senorprogrammer)
### 🐞 Fixed
* Todo module's edit modal now shows up quickly, [#876](https://github.com/wtfutil/wtf/issues/876) by [@aeter](https://github.com/aeter)
* Jira module title now displays properly, [#942](https://github.com/wtfutil/wtf/issues/942) by [@timhwang21](https://github.com/timhwang21)
### 👍 Updated
* Updated `alecthomas/chroma` from 0.7.3 to 0.8.0
* Updated `digitalocean/godo` from 1.38.0 to 1.42.1
* Updated `google.golang.org/api` from 0.29.0 to 0.30.0
* Updated `shirou/gopsutil` from 2.20.6+incompatible to 2.20.7+incompatible
## v0.31.0
### ⚡️ Added
* [docker-credential-helpers](https://github.com/docker/docker-credential-helpers) support added to provide optional securing of module secrets, [#517](https://github.com/wtfutil/wtf/issues/517) by [@sam-github](https://github.com/sam-github)
* `make lint` now uses [golangci-lint](https://github.com/golangci/golangci-lint-action), by [@sam-github](https://github.com/sam-github)
* GitHub module now supports per-section configuration, [#864](https://github.com/wtfutil/wtf/issues/864) by [@mryanmurphy](https://github.com/mryanmurphy)
* PagerDuty module now accepts Team ID and User ID as filters, by [@mryanmurphy](https://github.com/mryanmurphy)
* Weather module now supports a `useEmoji` setting, toggling the use of emoji characters in the title, by [@jonhadfield](https://github.com/jonhadfield)
* Pocket documentation added, by [@3mard](https://github.com/3mard)
### 🐞 Fixed
* GitLab Todo module now allows domain to be set, defaults to `https://gitlab.com`, by [@gerchardon](https://github.com/gerchardon)
* Pi-hole module now works with Pi-hole v4 and v5, by [@jonhadfield](https://github.com/jonhadfield)
* Null pointer exception fixed in VictorOps module, by [@ripienaar](https://github.com/ripienaar)
### 👍 Updated
* Updated `google.golang.org/api` from 0.25.0 to 0.29.0
* Updated `pkg/profile` from 1.4.0 to 1.5.0
* Updated `nicklaw5/helix` from 0.5.8 to 0.5.9
* Updated `digitalocean/godo` from 1.37.0 to 1.38.0
* Updated `gopkg.in/yaml.v2` from 2.2.8 to 2.3.0
* Updated `xanzy/go-gitlab` from 0.31.0 to 0.33.0
* Updated `stretchr/testify` from 1.5.1 to 1.6.1
* Updated `golang.org/x/text` from 0.3.2 to 0.3.3
* Updated `shirou/gopsutil` from 2.20.4+incompatible to 2.20.6+incompatible
## v0.30.0
### ⚡️ Added
* Expansive keyboard controls for the [GitLab](https://wtfutil.com/modules/gitlab/) module, by [@mogensen](https://github.com/mogensen)
* [IPInfo](https://wtfutil.com/modules/ipaddress/ipinfo/) module now supports IPv6 lookup, by [@acaloiaro](https://github.com/acaloiaro)
* The GitHub repo now runs a set of actions that lint PRs for code quality and conformity and comment in-line on the PRs. See here for action details https://github.com/wtfutil/wtf/actions
### 🐞 Fixed
* Random capital letters around display, [#811](https://github.com/wtfutil/wtf/issues/811) by [@jonhadfield](https://github.com/jonhadfield)
* [Feed Reader](https://wtfutil.com/modules/feedreader/) module now properly sorts multi-feed items by date, by [@rsaarelm](https://github.com/rsaarelm)
### 👍 Updated
* Updated `zorkian/go-datadog-api` from 2.28.0+incompatible to 2.29.0+incompatible
* Updated `shirou/gopsutil` from 2.20.3+incompatible to 2.20.4+incompatible
* Updated `google.golang.org/api` from 0.22.0 to 0.23.0
## 0.29.0
### ⚡️ Added
* gCal module now has a `showEndTime` boolean option for displaying meeting end times, by [@acaloiaro](https://github.com/acaloiaro)
* [Pi-hole](https://wtfutil.com/modules/pihole/) module added, by [@jonhadfield](https://github.com/jonhadfield)
### 🐞 Fixed
* Docker module subheading display, [#847](https://github.com/wtfutil/wtf/issues/847) by [@senorprogrammer](https://github.com/senorprogrammer)
* Improved display of currencies for the Exchange Rate module, by [@indradhanush](https://github.com/indradhanush)
### 👍 Updated
* Updated `nicklaw5/helix` from 0.5.7 to 0.5.8
* Updated `digitalocean/godo` from 1.34.0 to 1.35.1
* Updated `xanzy/go-gitlab` from 0.28.0 to 0.31.0
* Updated `shirou/gopsutil` from 2.20.2+incompatible to 2.20.3+incompatible
* Updated `alecthomas/chroma` from 0.7.1 to 0.7.2
* Updated `google.golang.org/api` from 0.21.0 to 0.22.0
## v0.28.0
### ⚡️ Added
* Support for customizing CPU, Mem, and Swap display in ResourceUsage, by [@leterio](https://github.com/leterio)
### 👍 Updated
* Now prefers Go 1.14 for compilation (should still work under 1.13 however)
* Updated `shirou/gopsutil` from 2.20.1+incompatible to 2.20.2+incompatible
* Updated `google.golang.org/api` from 0.17.0 to 0.20.0
* Updated `digitalocean/godo` from 1.30.0 to 1.32.0
* Updated `xanzy/go-gitlab` from 0.26.0 to 0.28.0
* Updated `adlio/trello` from 1.6.0 to 1.7.0
* Updated `zorkian/go-datadog-api` from 2.27.0+incompatible to 2.28.0+incompatible
## 0.27.0
### ⚡️ Added
* GitLab Todo module added, by [@elliotrushton](https://github.com/elliotrushton)
* [CDS](https://wtfutil.com/modules/cds/) module added, by [@yesnault](https://github.com/yesnault)
### 🐞 Fixed
* The `vendor` directory has been removed, [#792](https://github.com/wtfutil/wtf/issues/792) by [@bjoernw](https://github.com/bjoernw)
### 👍 Updated
* Updated `zorkian/go-datadog-api` from 2.26.0+incompatible to 2.27.0+incompatible
* Updated `google.golang.org/api` from 0.15.0 to 0.17.0
* Updated `github.com/nicklaw5/helix` from 0.5.5 to 0.5.7
* Updated `xanzy/go-gitlab` from 0.23.0 to 0.26.0
* Updated `stretchr/testify` from o.4.0 to 0.5.1
## 0.26.0
### ⚡️ Added
* `myName` config setting added to PagerDuty module, by [@senorprogrammer](https://github.com/senorprogrammer)
* `withDate` config setting added to Digital Clock module, by [@senorprogrammer](https://github.com/senorprogrammer)
* Twitch module added, by [@bjoernw](https://github.com/bjoernw)
* HackerNews module now opens HN comments when there is no alternative external link, [#758](https://github.com/wtfutil/wtf/issues/758) by [@senorprogrammer](https://github.com/senorprogrammer)
* gCal module now now allows users to hide all-day events, [#733](https://github.com/wtfutil/wtf/issues/733) by [@senorprogrammer](https://github.com/senorprogrammer)
* SpaceX module added, by [@bjoernw](https://github.com/bjoernw)
* Support for obeying `XDG_CONFIG_HOME` when set, [#699](https://github.com/wtfutil/wtf/issues/699) by [@Seanstoppable](https://github.com/Seanstoppable)
### 🐞 Fixed
* Module templating working again, [#748](https://github.com/wtfutil/wtf/issues/748) by [@senorprogrammer](https://github.com/senorprogrammer)
* CmdRunner title spacing issue fixed, [#784](https://github.com/wtfutil/wtf/issues/784) by [@senorprogrammer](https://github.com/senorprogrammer)
* Colors in cmdrunner fixed when using nodejs chalk et al., [#618](https://github.com/wtfutil/wtf/issues/618) by [@Seanstoppable](https://github.com/Seanstoppable)
* Docker buid instructions updated and improved, by [@firecat53](https://github.com/firecat53)
* Kubernetes module can now be used with multiple contexts, [#809](https://github.com/wtfutil/wtf/issues/809) by [@davidsbond](https://github.com/davidsbond)
### 👍 Updated
* Updated `digitalocean/godo` from 1.22.0 to 1.30.0
* Updated `google.golang.org/api` from 0.14.0 to 0.15.0
* Updated `alecthomas/chroma` from 0.7.0 to 0.7.1
* Updated `pkg/errors` from 0.8.1 to 0.9.1
* Updated `xanzy/go-gitlab` from 0.22.2 to 0.23.0
* Updated `shirou/gopsutil` from 2.19.11 to 2.20.1
* Updated `zorkian/go-datadog-api` from 2.25.0 to 2.26.0
* Updated `gopkg.in/yaml.v2` from 2.2.7 to 2.2.8
* Updated `nicklaw5/helix` from 0.5.4 to 0.5.5
## 0.25.0
### ⚡️ Added
* [DigitalOcean](https://wtfutil.com/modules/digitalocean/) module added, by [@senorprogrammer](https://github.com/senorprogrammer)
* [Transmission](https://wtfutil.com/modules/transmission/) module now supports a `hideComplete` configuration setting, by [@schoentoon](https://github.com/schoentoon)
* Pocket module added, [#742] by [@3mard](https://github.com/3mard)
* [Exchange Rates](https://wtfutil.com/modules/exchange_rates/) module added, by [@schoentoon](https://github.com/schoentoon)
* [GitHub](https://wtfutil.com/modules/github/) modules supports 'p' keyboard command to open **p**ull requests, by [@NickyMateev](https://github.com/NickyMateev)
* [GitHub](https://wtfutil.com/modules/github/) modules supports 'i' keyboard command to open **i**ssues, by [@NickyMateev](https://github.com/NickyMateev)
* [Jenkins](https://wtfutil.com/modules/jenkins/) module now supports multi-configuration projects, by [@NickyMateev](https://github.com/NickyMateev)
### 🐞 Fixed
* Subreddit out of bounds error fixed, [#753](https://github.com/wtfutil/wtf/issues/753) by [@TDHTTTT](https://github.com/TDHTTTT)
* Homebrew builds now contain version information, [#557](https://github.com/wtfutil/wtf/issues/557) by [@jottr](https://github.com/jottr)
* CmdRunner flicker problem, [#732](https://github.com/wtfutil/wtf/issues/732) by [@Gibstick](https://github.com/Gibstick)
### 👍 Updated
* Switched from `gocenter.io` as the Go proxy to `proxy.golang.org`, by [@chenrui333](https://github.com/chenrui333)
* Updated `go-datadog-api` to version 2.25.0+incompatible
* Updated `adlio/trello` to version 1.6.0
* Updated `alecthomas/chroma` to version 0.7.0
* Updated `olekukonko/tablewriter` to version 0.0.3
* Updated `pkg/profile` to version 1.4.0
* Updated `yaml.v2` to 2.2.7
* Updated `google.golang.org/api` to 0.14.0
* Updated `xanzy/go-gitlab` to 0.22.2
* Uodated `shirou/gopsutil` to 2.19.11+incompatible
## v0.24.0
### ⚡️ Added
* Proper, usable [Docker file](https://github.com/wtfutil/wtf/blob/master/Dockerfile) added, by [@Boot-Error](https://github.com/Boot-Error)
* [GitLab](https://wtfutil.com/modules/gitlab/) module displays issues assigned to, and opened by, the user, by [@caalberts](https://github.com/caalberts)
* [TravisCI](https://wtfutil.com/modules/travisci/) now checks for uncommitted vendor changes, by [@indradhanush](https://github.com/indradhanush)
* Football module added, by [@C123R](https://github.com/C123R)
* [resourceuseage](https://wtfutil.com/modules/resourceusage/) now supports a `cpuCombined` setting, by [@madepolli](https://github.com/madepolli)
* [Twitter Stats](https://wtfutil.com/modules/twitter/twittertweets/) module added, by [@Ameobea](https://github.com/Ameobea)
### 🐞 Fixed
* Github PRs do not count against issues, by [@alexfornuto](https://github.com/alexfornuto)
* Todo scrolling now works properly, [#707](https://github.com/wtfutil/wtf/issues/707) by [3mard](https://github.com/3mard)
* Configs with a missing `color` key now load properly, [#718](https://github.com/wtfutil/wtf/issues/718) and [#730](https://github.com/wtfutil/wtf/issues/730) by [@senorprogrammer](https://github.com/senorprogrammer)
## 0.23.0
### ⚡️ Added
* [Azure DevOps](https://wtfutil.com/modules/azure-devops/) module added, by [@v-braun](https://github.com/v-braun)
* [Dev.to](https://wtfutil.com/modules/devto/) module added, by [@VictorAvelar](https://github.com/VictorAvelar)
* [TravisCI]() module now supports enterprise endpoints, [#652](https://github.com/wtfutil/wtf/issues/652) by [@scw007](https://github.com/scw007)
* [Subreddit](https://wtfutil.com/modules/subreddit/) module added, by [@lawrencecraft](https://github.com/lawrencecraft)
* [gCal](https://wtfutil.com/modules/google/gcal/) module now supports a `hourFormat` setting for defining whether to display 12 or 24-hour times, [#665](https://github.com/wtfutil/wtf/issues/665) by [@senorprogrammer](https://github.com/senorprogrammer)
* [Scarf](https://scarf.sh) installation instructions added to README, by [@aviaviavi](https://github.com/aviaviavi)
* Spotify widget now supports colour themes, [#659](https://github.com/wtfutil/wtf/issues/659) by [@Tardog](https://github.com/Tardog)
* [Buildkite](https://wtfutil.com/modules/buildkite/) module added, by [@jmks](https://github.com/jmks)
* [Improvements](https://github.com/wtfutil/wtf/pull/680) to the [CmdRunner](https://wtfutil.com/modules/cmdrunner/) module, by [@noxer](https://github.com/noxer)
### 🐞 Fixed
* gCal calendar event time colour can now be changed by setting the `eventTime` configuration setting, [#638](https://github.com/wtfutil/wtf/issues/638) by [@indradhanush](https://github.com/indradhanush)
* [Clocks](https://wtfutil.com/modules/clocks/) now obeys global row colour settings, [#658](https://github.com/wtfutil/wtf/issues/658) by [@senorprogrammer](https://github.com/senorprogrammer)
* [Transmission](https://wtfutil.com/modules/transmission/) module no longer blocks rendering when a Transmission daemon cannot be found, [#661](https://github.com/wtfutil/wtf/issues/661) by [@senorprogrammer](https://github.com/senorprogrammer)
* [Trello](https://wtfutil.com/modules/trello/) module now respects project list order, [#664](https://github.com/wtfutil/wtf/issues/664) by [@Seanstoppable](https://github.com/Seanstoppable)
* [Todo](https://wtfutil.com/modules/todo/) module now respects checkbox settings, [#616](https://github.com/wtfutil/wtf/issues/616) by [@Seanstoppable](https://github.com/Seanstoppable)
* [Todoist](https://wtfutil.com/modules/todoist/) module now properly handles todo items with due date and times, [#645](https://github.com/wtfutil/wtf/issues/645) by [@massa1240](https://github.com/massa1240)
* Invalid pointer error in [Azure DevOps](https://wtfutil.com/modules/azure-devops/) fixed by [@Boot-Error](https://github.com/Boot-Error)
* Renamed slice error in [Dev](https://wtfutil.com/modules/devto/) fixed by [@Boot-Error](https://github.com/Boot-Error)
### 👍 Updated
* Updated `go-datadog-api` to version v2.24.0
* Updated `go-github` to version 26.13
* Updated `watcher` to version 1.0.7
* Updated `google-api-go-client` to version 0.10.0
* Updated `chroma` to version 0.6.7
* Updated `go-gitlab` to version 0.20.1
* Updated `trello` to version 1.4.0
* Updated `tcell` to version 1.3.0
* Updated `gopsutil` to version 2.19.9+incompatible
* Updated `yaml` to version 2.2.4
## v0.22.0
### ⚡️ Added
* [Arpansagovau](https://wtfutil.com/modules/weather_services/arpansagovau/) (arpansa.gov.au) module added, by [@jeffz](https://github.com/jeffz)
* 'calendarReadLevel' setting added to gCal module, by [@mikkeljuhl](https://github.com/mikkeljuhl)
* Todoist module now catches and displays API errors, by [@Seanstoppable](https://github.com/Seanstoppable)
* TravisCI sort orders now configurable, by [@nyourchuck](https://github.com/nyourchuck)
* Google Analytics module now supports real-time metrics, [#581](https://github.com/wtfutil/wtf/issues/581) by [@Ameobea](https://github.com/Ameobea)
* Colors in configuration can now be defined using long-form hex, i.e.: #ff0000, by [@Seanstoppable](https://github.com/Seanstoppable)
* GitHub module pull requests are now selectable and openable via keyboard, [#547](https://github.com/wtfutil/wtf/issues/547) by [@Midnight-Conqueror](https://github.com/Midnight-Conqueror)
* [Docker](https://wtfutil.com/modules/docker/) module added, [#594](https://github.com/wtfutil/wtf/issues/594) by [@v-braun](https://github.com/v-braun)
* NewRelic module now supports displaying data from multiple apps, [#471](https://github.com/wtfutil/wtf/issues/471) by [@ChrisDBrown](https://github.com/ChrisDBrown) and [@Seanstoppable](https://github.com/Seanstoppable)
* [Digital Clock](https://wtfutil.com/modules/digitalclock/) module added, by [@Narengowda](https://github.com/Narengowda)
### 🐞 Fixed
* ScrollableWidget bounds checking error fixed, [#578](https://github.com/wtfutil/wtf/issues/578) by [@Seanstoppable](https://github.com/Seanstoppable)
* Now properly URL-decodes Jenkins branch names, [#575](https://github.com/wtfutil/wtf/issues/575) by [@lesteenman](https://github.com/lesteenman)
* Jira column sizes render properly, [#574](https://github.com/wtfutil/wtf/issues/574) by [@lesteenman](https://github.com/lesteenman)
* Todoist module updated to latest API version, by [@Seanstoppable](https://github.com/Seanstoppable)
* gCal colour highlighting working again, [#611](https://github.com/wtfutil/wtf/issues/611) by [@senorprogrammer](https://github.com/senorprogrammer)
* Per-module background and text colour settings working again, [#568](https://github.com/wtfutil/wtf/issues/568) by [@Seanstoppable](https://github.com/Seanstoppable)
* Git module no longer forces sorting of repositories, [#608](https://github.com/wtfutil/wtf/pull/608) by [@Seanstoppable](https://github.com/Seanstoppable)
* GitHub PR icons render properly without phantom characters, by [@Midnight-Conqueror](https://github.com/Midnight-Conqueror)
* GitLab configuration now takes a list of project paths, [#566](https://github.com/wtfutil/wtf/issues/566) by [@senorprogrammer](https://github.com/senorprogrammer)
* Kubernetes configuration segfault fixed, [#549](https://github.com/wtfutil/wtf/issues/549) by [@ibaum](https://github.com/ibaum)
## v0.21.0
### ⚡️ Added
* Power Soure module support added for FreeBSD, by [@hxw](https://github.com/hxw)
### 🐞 Fixed
* Power indicator displays ∞ on Linux when fully-charged and on AC power, [#534](https://github.com/wtfutil/wtf/issues/534) by [@Seanstoppable](https://github.com/Seanstoppable)
* Default background color is now the terminal background color, making transparency support possible in MacOS and Linux, by [@Seanstoppable](https://github.com/Seanstoppable)
* `xdg-open` now used as the opener for HTTP/HTTPS by default, by [@hxw](https://github.com/hxw)
* Transmission port over-ride now working, [#565](https://github.com/wtfutil/wtf/issues/565) by [@Seanstoppable](https://github.com/Seanstoppable)
* Default config is now created on first run, [#553](https://github.com/wtfutil/wtf/issues/553) by [@senorprogrammer](https://github.com/senorprogrammer)
## v0.20.0
### ⚡️ Added
* Kubernetes module added, [#142](https://github.com/wtfutil/wtf/issues/142) by [@sudermanjr](https://github.com/sudermanjr)
### 🐞 Fixed
* Tab and Esc keys work properly in modal dialogs, [#520](https://github.com/wtfutil/wtf/issues/520) by [@Seanstoppable](https://github.com/Seanstoppable)
* `wtfutil -m` flag now works with non-enabled modules, [#529](https://github.com/wtfutil/wtf/issues/529) by [@Seanstoppable](https://github.com/Seanstoppable)
* Jenkins job filtering preserved across redraws, [#532](https://github.com/wtfutil/wtf/issues/532) by [@Seanstoppable](https://github.com/Seanstoppable)
## v0.19.1
### ⚡️ Added
* Dockerfile, by [@senorprogrammer](https://github.com/senorprogrammer)
* Add build targets for arm and arm64 architectures, by [@senorprogrammer](https://github.com/senorprogrammer)
## v0.19.0
### ☠️ Breaking Change
* HIBP module now requires an API key to operate. See [Authentication and the Have I Been Pwned API](https://www.troyhunt.com/authentication-and-the-have-i-been-pwned-api/) for more details, [#508](https://github.com/wtfutil/wtf/issues/508) by [@senorprogrammer](https://github.com/senorprogrammer)
### ⚡️ Added
* OpsGenie module now supports "region" configuration option ("us" or "eu"), by [@l13t](https://github.com/l13t)
### 🐞 Fixed
* Fixes the error message shown when an explicitly-specified custom config file cannot be found or cannot be read, by [@senorprogrammer](https://github.com/senorprogrammer)
* Rollbar module works again, [#507](https://github.com/wtfutil/wtf/issues/507) by [@Seanstoppable](https://github.com/Seanstoppable)
* The default config that gets installed on first run is much improved, [#504](https://github.com/wtfutil/wtf/issues/504) by [@senorprogrammer](https://github.com/senorprogrammer)
* Default config file is now `chmod 0600` to ensure only the owning user can read it, by [@senorprogrammer](https://github.com/senorprogrammer)
## v0.18.0
### ⚡️ Added
* Google Analytics module, by [@DylanBartels](https://github.com/DylanBartels)
### 🐞 Fixed
* Now created ~/.config if that directory is missing, [#510](https://github.com/wtfutil/wtf/issues/510) by [@senorprogrammer](https://github.com/senorprogrammer)
## v0.17.1
### 🐞 Fixed
* Fixes an issue in which the default config file was not being created on first run
## v0.17.0
### 🐞 Fixed
* FeedReader story sorting bug fixed
* NewRelic dependency vendored
## v0.16.1
## v0.16.0
### ⚡️ Added
* Config and recipe added for installing via Homebrew
## v0.15.0
### ❗Changed
* The installed binary has been renamed from `wtf` to `wtfutil`. [Read more about it here](https://wtfutil.com/blog/2019-07-10-wtfutil-release/).
## v0.14.0
### ⚡️ Added
* CmdRunner module now supports custom titles, by [@Seanstoppable](https://github.com/Seanstoppable)
* FeedReader module added (https://wtfutil.com/modules/feedreader/), a rudimentary Rss & Atom feed reader
### 🐞 Fixed
* Cryptolive module works again, [#481](https://github.com/wtfutil/wtf/issues/481) by [@Seanstoppable](https://github.com/Seanstoppable)
* gCal module now supports setting an explicit time zone via the "timezone" config attribute, [#382](https://github.com/wtfutil/wtf/issues/382) by [@jeangovil](https://github.com/jeangovil)
* Misconfigured module positions in `config.yaml` now attempt to provide informative error messages on launch, [#482](https://github.com/wtfutil/wtf/issues/482)
## v0.13.0
### ⚡️ Added
* Transmission module addedd (https://wtfutil.com/modules/transmission/)
## v0.12.0
### ⚡️ Added
* Textfile module's text wrapping is configurable via the 'wrapText' boolean setting
* Have I Been Pwned (HIBP) module added (https://wtfutil.com/modules/hibp/)
## v0.11.0
### ⚡️ Added
* GitHub module now supports custom queries for issues and pull requests, by [@Sean-Der](https://github.com/Sean-Der)
### 🐞 Fixed
* Todoist now properly updates list items when Refresh is called
* Keyboard modal displays properly when tabbing between widgets, [#467](https://github.com/wtfutil/wtf/issues/467)
## v0.10.3
### ❗Changed
* Invalid glog dependency removed, by [@bosr](https://github.com/bosr)
## v0.10.2
### 🐞 Fixed
* Weather module no longer crashes if there's no weather data or no internet connection
* Gitlab no longer prevents installing with missing param, [#455](https://github.com/wtfutil/wtf/issues/455)
## v0.10.1
### 🐞 Fixed
* Trello now displays multiple lists properly, [#454](https://github.com/wtfutil/wtf/issues/454)
## v0.10.0
### ⚡️ Added
* DataDog module is now scrollable and interactive, by [@Seanstoppable](https://github.com/Seanstoppable)
* Focusable hot key numbers are now assigned in a stable order, [#435](https://github.com/wtfutil/wtf/issues/435) by [@Seanstoppable](https://github.com/Seanstoppable)
* Zendesk widget now has help text, by [@Seanstoppable](https://github.com/Seanstoppable)
* Scrollable widget added to provide common keyboard-navigation list functionality, by [@Seanstoppable](https://github.com/Seanstoppable)
* Logging functionality extracted out from Log module, by [@Seanstoppable](https://github.com/Seanstoppable)
* Improved sample configs with up-to-date attributes and examples, by [@retgits](https://github.com/retgits)
* PagerDuty config now supports schedule filtering using the `scheduleIDs` config option, by [@senporprogrammer](https://github.com/senporprogrammer)
## v0.9.2
### ⚡️ Added
* Keyboard management system for modules reworked. Now has a KeyboardWidget to simplify adding keyboard commands
### Fixed
* WTF versions are now prefixed with `v` again so module systems pick up the latest versions
## 0.9.1
### ⚡️ Added
* Increased the pagination limit for GitHub to 100, by [@Seanstoppable](https://github.com/Seanstoppable)
* Support for multiple instances of the same widget added, by [@Seanstoppable](https://github.com/Seanstoppable)
## 0.9.0
* Null release
## 0.8.0
### ⚡️ Added
* Dependencies are now managed and installed using Go modules. See README.md for details, [#406](https://github.com/wtfutil/wtf/issues/406) by [@retgits](https://github.com/retgits)
## 0.7.2
### ⚡️ Added
* NBA Scores now navigable via arrow keys, [#415](https://github.com/wtfutil/wtf/issues/415)
### 🐞 Fixed
* Multi-page sigils off-by-one error fixed, [#413](https://github.com/wtfutil/wtf/issues/413)
* Many points of potential and probable race conditions have been improved to not have race conditions. WTF should be quite a bit more stable now
* In the Twitter module, the following have been fixed:
* Help text says "Twitter" instead of "TextFile"
* Keyboard-command "o" opens the current Twitter handle in the browser
* Keyboard-command "o" is documented in the help text
## 0.7.1
### 🐞 Fixed
* HackerNews row selections are visible again, [#411](https://github.com/wtfutil/wtf/issues/411)
## 0.7.0
### ⚡️ Added
* Jenkins now supports coloured balls, [#358](https://github.com/wtfutil/wtf/issues/358) by [@rudolphjacksonm](https://github.com/rudolphjacksonm)
* Jenkins now supports regular expressions, [#359](https://github.com/wtfutil/wtf/issues/359) by [@rudolphjacksonm](https://github.com/rudolphjacksonm)
* Complete refactoring of the module settings system, reducing the dependency on `config` and making it possible to configure modules by other means, by [@senporprogrammer](https://github.com/senporprogrammer)
## 0.6.0
### ⚡️ Added
* Jira widget navigable via up/down arrow keys, by [@jdenoy](https://github.com/jdenoy)
* Windows security module improved, by [@E3V3A](https://github.com/E3V3A)
* Function modules moved into the `/modules` directory, by [@Seanstoppable](https://github.com/Seanstoppable)
* NBA Score module added by [@FriedCosey](https://github.com/FriedCosey)
### 🐞 Fixed
* Now displays an error on start-up if a widget has mis-configured `position` attributes ([#389](https://github.com/wtfutil/wtf/issues/389) by @senporprogrammer)
## 0.5.0
### ⚡️ Added
* Resource Usage module added by [@nicholas-eden](https://github.com/nicholas-eden)
* Recursive repo search in Git module ([#126](https://github.com/wtfutil/wtf/issues/126) by [@anandsudhir](http://github.com/anandsudhir))
* HTTP/HTTPS handling in OpenFile() util function by [@jdenoy](https://github.com/jdenoy)
* Honor system http proxies when using non-default transport by [@skymeyer](https://github.com/skymeyer)
* VictorOps module added by [ImDevinC](https://github.com/ImDevinC)
* Module templates added by [retgits](https://github.com/retgits)
## 0.4.0
### ⚡️ Added
* Mecurial module added ([@mweb](https://github.com/mweb))
* Can now define numeric hotkeys in config ([@mweb](https://github.com/mweb))
* Linux firewall support added ([@TheRedSpy15](https://github.com/TheRedSpy15))
* Spotify Web module added ([@StormFireFox1](https://github.com/StormFireFox1))
### 🐞 Fixed
* Google Calendar module now displays all-day events ([#306](https://github.com/wtfutil/wtf/issues/306) by [@nicholas-eden](https://github.com/nicholas-eden))
* Google Calendar configuration much improved ([#326](https://github.com/wtfutil/wtf/issues/326) by [@dvdmssmnn](https://github.com/dvdmssmnn))
## 0.3.0
### ⚡️ Added
* Spotify module added (@sticreations)
* Clocks module now supports configurable datetime formats (@danrabinowitz)
* Twitter module now supports subscribing to multiple screen names
### 🐞 Fixed
* Textfile module now watches files for changes ([#276](https://github.com/wtfutil/wtf/issues/276) by @senporprogrammer)
* Nav shortcuts now use numbers rather than letters to allow the use of letters in widget menus
* Twitter widget no longer crashes app when closing the help modal
## 0.2.2
#### Aug 25, 2018
#### unreleased
### ⚡️ Added
@ -633,8 +12,8 @@
### 🐞 Fixed
* Textfile syntax highlighting now included in stand-alone binary ([#261](https://github.com/wtfutil/wtf/issues/261) by @senporprogrammer)
* Config param now supports relative paths starting with `~` ([#295](https://github.com/wtfutil/wtf/issues/295) by @anandsudhir)
* Textfile syntax highlighting now included in stand-alone binary ([#261](https://github.com/senorprogrammer/wtf/issues/261) by @senporprogrammer)
* Config param now supports relative paths starting with `~` ([#295](https://github.com/senorprogrammer/wtf/issues/295) by @anandsudhir)
## 0.2.1
#### Aug 17, 2018
@ -647,10 +26,10 @@
* Twitter screen name now configurable in configuration file (@senorprogrammer)
* Gerrit module no longer dies if it can't connect to the server (@anandsudhir)
* Pretty Weather properly displays colours again (([#298](https://github.com/wtfutil/wtf/issues/298) by @bertl4398)
* Clocks row colour configuration fixed (([#282](https://github.com/wtfutil/wtf/issues/282) by @anandsudhir)
* Sigils no longer display when there's only one option (([#291](https://github.com/wtfutil/wtf/issues/291) by @anandsudhir)
* Jira module now responds to the "/" key (([#268](https://github.com/wtfutil/wtf/issues/268)) by @senorprogrammer)
* Pretty Weather properly displays colours again (([#298](https://github.com/senorprogrammer/wtf/issues/298) by @bertl4398)
* Clocks row colour configuration fixed (([#282](https://github.com/senorprogrammer/wtf/issues/282) by @anandsudhir)
* Sigils no longer display when there's only one option (([#291](https://github.com/senorprogrammer/wtf/issues/291) by @anandsudhir)
* Jira module now responds to the "/" key (([#268](https://github.com/senorprogrammer/wtf/issues/268)) by @senorprogrammer)
## 0.2.0
#### Aug 3, 2018

View File

@ -1,13 +1,17 @@
# Contributing
When contributing to this repository, please first discuss the change you wish to make via issue,
email, or any other method with the owners of this repository before making a change.
Note that we have a code of conduct. Please follow it in all your interactions with the project.
## Pull Request Process
1. Ensure any install or build dependencies are removed before the end of the layer when doing a
build.
2. Update the static documentation with details of changes to the interface, this includes new environment
variables, useful file locations and configuration parameters.
Documentation lives at [wtfdocs](https://github.com/wtfutil/wtfdocs) and is a [Hugo](https://gohugo.io) app. See Hugo's documentation for usage.
Documentation lives in the `_site` directory and is a [Hugo](https://gohugo.io) app. See Hugo's documentation for usage.
## Code of Conduct
@ -66,7 +70,7 @@ further defined and clarified by project maintainers.
### Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project owner at chriscummer@me.com. All
reported by contacting the project team at [INSERT EMAIL ADDRESS]. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.

View File

@ -1,26 +0,0 @@
FROM golang:1.16-alpine as build
ARG version=master
RUN apk add git make ncurses && \
git clone https://github.com/wtfutil/wtf.git $GOPATH/src/github.com/wtfutil/wtf && \
cd $GOPATH/src/github.com/wtfutil/wtf && \
git checkout $version
ENV GOPROXY=https://proxy.golang.org,direct
ENV GO111MODULE=on
ENV GOSUMDB=off
WORKDIR $GOPATH/src/github.com/wtfutil/wtf
ENV PATH=$PATH:./bin
RUN make build
FROM alpine
COPY --from=build /go/src/github.com/wtfutil/wtf/bin/wtfutil /usr/local/bin/
RUN adduser -h /config -DG users -u 20000 wtf
USER wtf
ENTRYPOINT ["wtfutil"]

View File

@ -1,18 +0,0 @@
FROM golang:1.16 as build
ARG version=master
RUN git clone https://github.com/wtfutil/wtf.git $GOPATH/src/github.com/wtfutil/wtf && \
cd $GOPATH/src/github.com/wtfutil/wtf && \
git checkout $version
ENV GOPROXY=https://proxy.golang.org,direct
ENV GO111MODULE=on
ENV GOSUMDB=off
WORKDIR $GOPATH/src/github.com/wtfutil/wtf
ENV PATH=$PATH:./bin
RUN make build && \
cp bin/wtfutil /usr/local/bin/

384
Gopkg.lock generated Normal file
View File

@ -0,0 +1,384 @@
# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
[[projects]]
digest = "1:5c3894b2aa4d6bead0ceeea6831b305d62879c871780e7b76296ded1b004bc57"
name = "cloud.google.com/go"
packages = ["compute/metadata"]
pruneopts = "UT"
revision = "64a2037ec6be8a4b0c1d1f706ed35b428b989239"
version = "v0.26.0"
[[projects]]
branch = "master"
digest = "1:1164f5eccc8905c03a2c688141c81f06522ed5fd2eb65cb43debeb730a018276"
name = "github.com/adlio/trello"
packages = ["."]
pruneopts = "UT"
revision = "8a458717123e328d9103a3bf075e64bc1ec961f8"
[[projects]]
digest = "1:9253f97cfbbe049b631877c80badecc69620711b3e335f6cf97a7809681da388"
name = "github.com/alecthomas/chroma"
packages = [
".",
"formatters",
"formatters/html",
"lexers",
"lexers/a",
"lexers/b",
"lexers/c",
"lexers/circular",
"lexers/d",
"lexers/e",
"lexers/f",
"lexers/g",
"lexers/h",
"lexers/i",
"lexers/internal",
"lexers/j",
"lexers/k",
"lexers/l",
"lexers/m",
"lexers/n",
"lexers/o",
"lexers/p",
"lexers/q",
"lexers/r",
"lexers/s",
"lexers/t",
"lexers/v",
"lexers/w",
"lexers/x",
"lexers/y",
"styles",
]
pruneopts = "UT"
revision = "5d7fef2ae60b501bbf28d476c3f273b8017d8261"
version = "v0.5.0"
[[projects]]
branch = "master"
digest = "1:b5d1ba5dc01e8129b7df5cf95380a66b0e0f122850189b7ec255953b15522f16"
name = "github.com/andygrunwald/go-gerrit"
packages = ["."]
pruneopts = "UT"
revision = "197fe0d2e796b3d985b9cd91be8afd4415692f39"
[[projects]]
branch = "master"
digest = "1:6d7646b01dbbacd8c50be0cbddbcb633619f819e51f47a4114c8d4518ae7ac02"
name = "github.com/briandowns/openweathermap"
packages = ["."]
pruneopts = "UT"
revision = "5f41b7c9d92de5d74bf32f4486375c7547bc8a3c"
[[projects]]
digest = "1:2209584c0f7c9b68c23374e659357ab546e1b70eec2761f03280f69a8fd23d77"
name = "github.com/cenkalti/backoff"
packages = ["."]
pruneopts = "UT"
revision = "2ea60e5f094469f9e65adb9cd103795b73ae743e"
version = "v2.0.0"
[[projects]]
branch = "master"
digest = "1:710109527a119c813d4fac773712dd92f449ed7c2f7b81f49822f94d290c8f72"
name = "github.com/danwakefield/fnmatch"
packages = ["."]
pruneopts = "UT"
revision = "cbb64ac3d964b81592e64f957ad53df015803288"
[[projects]]
branch = "master"
digest = "1:e3e85f98942fe3b51b8f9316d8d1dc1925353b26639d456030368ae278bb0475"
name = "github.com/darkSasori/todoist"
packages = ["."]
pruneopts = "UT"
revision = "ec6b38b374ab9c60cc9716d2083ae66eb9383d03"
[[projects]]
digest = "1:ffe9824d294da03b391f44e1ae8281281b4afc1bdaa9588c9097785e3af10cec"
name = "github.com/davecgh/go-spew"
packages = ["spew"]
pruneopts = "UT"
revision = "8991bc29aa16c548c550c7ff78260e27b9ab7c73"
version = "v1.1.1"
[[projects]]
digest = "1:72dc2b6056e7097f829260e4a2ff08d32fec6017df1982a66e110ab4128486f8"
name = "github.com/dlclark/regexp2"
packages = [
".",
"syntax",
]
pruneopts = "UT"
revision = "487489b64fb796de2e55f4e8a4ad1e145f80e957"
version = "v1.1.6"
[[projects]]
branch = "master"
digest = "1:6f9339c912bbdda81302633ad7e99a28dfa5a639c864061f1929510a9a64aa74"
name = "github.com/dustin/go-humanize"
packages = ["."]
pruneopts = "UT"
revision = "9f541cc9db5d55bce703bd99987c9d5cb8eea45e"
[[projects]]
branch = "master"
digest = "1:40d0056c1b1f503c366ba441df92a82b5a2654d6f3747b1689a611eb5c9ce0a2"
name = "github.com/gdamore/encoding"
packages = ["."]
pruneopts = "UT"
revision = "b23993cbb6353f0e6aa98d0ee318a34728f628b9"
[[projects]]
branch = "master"
digest = "1:00b9cce210566117aff926677c005aeaea6c85374e67bdcb72783af237c48f97"
name = "github.com/gdamore/tcell"
packages = [
".",
"terminfo",
]
pruneopts = "UT"
revision = "de7e78efa4a71b3f36c7154989c529dbdf9ae623"
[[projects]]
digest = "1:15042ad3498153684d09f393bbaec6b216c8eec6d61f63dff711de7d64ed8861"
name = "github.com/golang/protobuf"
packages = ["proto"]
pruneopts = "UT"
revision = "b4deda0973fb4c70b50d226b1af49f3da59f5265"
version = "v1.1.0"
[[projects]]
branch = "master"
digest = "1:4be3c01ef56542da4f1268c52a8b88bae5309ec3dade7755e250bc933e13ac70"
name = "github.com/google/go-github"
packages = ["github"]
pruneopts = "UT"
revision = "d7732128a00e8e95e8fe896017da18ee20b2180d"
[[projects]]
branch = "master"
digest = "1:a63cff6b5d8b95638bfe300385d93b2a6d9d687734b863da8e09dc834510a690"
name = "github.com/google/go-querystring"
packages = ["query"]
pruneopts = "UT"
revision = "53e6ce116135b80d037921a7fdd5138cf32d7a8a"
[[projects]]
digest = "1:a2cff208d4759f6ba1b1cd228587b0a1869f95f22542ec9cd17fff64430113c7"
name = "github.com/jessevdk/go-flags"
packages = ["."]
pruneopts = "UT"
revision = "c6ca198ec95c841fdb89fc0de7496fed11ab854e"
version = "v1.4.0"
[[projects]]
digest = "1:c65a16ac77d0b1aefc7009cabb6ac5ad05def02025f5be85f450c03f52cc6f86"
name = "github.com/lucasb-eyer/go-colorful"
packages = ["."]
pruneopts = "UT"
revision = "345fbb3dbcdb252d9985ee899a84963c0fa24c82"
version = "v1.0"
[[projects]]
digest = "1:cdb899c199f907ac9fb50495ec71212c95cb5b0e0a8ee0800da0238036091033"
name = "github.com/mattn/go-runewidth"
packages = ["."]
pruneopts = "UT"
revision = "ce7b0b5c7b45a81508558cd1dba6bb1e4ddb51bb"
version = "v0.0.3"
[[projects]]
branch = "master"
digest = "1:3a16300d913e1050d4a7ff296106a11b72da05c5dd3475f2ae1feb0830866461"
name = "github.com/olebedev/config"
packages = ["."]
pruneopts = "UT"
revision = "ed90d2035b8114c30b9cb65e7d52e10a7148f8c6"
[[projects]]
digest = "1:40e195917a951a8bf867cd05de2a46aaf1806c50cf92eebf4c16f78cd196f747"
name = "github.com/pkg/errors"
packages = ["."]
pruneopts = "UT"
revision = "645ef00459ed84a119197bfb8d8205042c6df63d"
version = "v0.8.0"
[[projects]]
digest = "1:cfa0d7741863a0e1d30e0ccdd4b48a96a471cdb47892303de8b92c3713af3e77"
name = "github.com/pkg/profile"
packages = ["."]
pruneopts = "UT"
revision = "5b67d428864e92711fcbd2f8629456121a56d91f"
version = "v1.2.1"
[[projects]]
digest = "1:0028cb19b2e4c3112225cd871870f2d9cf49b9b4276531f03438a88e94be86fe"
name = "github.com/pmezard/go-difflib"
packages = ["difflib"]
pruneopts = "UT"
revision = "792786c7400a136282c1664665ae0a8db921c6c2"
version = "v1.0.0"
[[projects]]
digest = "1:0665976cc6d8c2e60dafca32820b6b7eca70f37ded0bcccc103388e1c0d05c53"
name = "github.com/radovskyb/watcher"
packages = ["."]
pruneopts = "UT"
revision = "6145e1439b9de93806925353403f91d2abbad8a5"
version = "v1.0.2"
[[projects]]
branch = "master"
digest = "1:9deb696e9739b45e91369ffb3876d4e0d2bc45e0d35062fb3c5aa44fa77eff6c"
name = "github.com/rivo/tview"
packages = ["."]
pruneopts = "UT"
revision = "21f50f5bc400083b4eb23304887d9cd0fc00d075"
[[projects]]
digest = "1:18752d0b95816a1b777505a97f71c7467a8445b8ffb55631a7bf779f6ba4fa83"
name = "github.com/stretchr/testify"
packages = ["assert"]
pruneopts = "UT"
revision = "f35b8ab0b5a2cef36673838d662e249dd9c94686"
version = "v1.2.2"
[[projects]]
branch = "master"
digest = "1:ca067f3d378064d50a239b1f0d4dcd2dab6356f7643993bdf02c91d6e621c028"
name = "github.com/xanzy/go-gitlab"
packages = ["."]
pruneopts = "UT"
revision = "f3bc634ab936f7e4ee5e21334ccfdfeb5601d477"
[[projects]]
branch = "master"
digest = "1:3b19ea715e070a74397f3cfe950f0b555e66a3c23461e553777f52112a81b0e6"
name = "github.com/yfronto/newrelic"
packages = ["."]
pruneopts = "UT"
revision = "7c9c2852e8f9e69a80bff4f4f1fe4cdd15eeba19"
[[projects]]
branch = "master"
digest = "1:f6f2814b88ad3dd5ca45e1e9a7a0caba1ddb1bfaf1c4173ebd991d854e1669eb"
name = "github.com/zorkian/go-datadog-api"
packages = ["."]
pruneopts = "UT"
revision = "d7b8b10db6a7eb1c1c2424b10a795a1662e80c9a"
[[projects]]
branch = "master"
digest = "1:d6b719875cf8091fbab38527d81d34e71f4521b9ee9ccfbd4a32cff2ac5af96e"
name = "golang.org/x/net"
packages = [
"context",
"context/ctxhttp",
]
pruneopts = "UT"
revision = "aaf60122140d3fcf75376d319f0554393160eb50"
[[projects]]
branch = "master"
digest = "1:bea0314c10bd362ab623af4880d853b5bad3b63d0ab9945c47e461b8d04203ed"
name = "golang.org/x/oauth2"
packages = [
".",
"google",
"internal",
"jws",
"jwt",
]
pruneopts = "UT"
revision = "3d292e4d0cdc3a0113e6d207bb137145ef1de42f"
[[projects]]
digest = "1:37672ad5821719e2df8509c2edd4ba5ae192463237c73c3a2d24ef8b2bc9e36f"
name = "golang.org/x/text"
packages = [
"encoding",
"encoding/internal/identifier",
"internal/gen",
"transform",
"unicode/cldr",
]
pruneopts = "UT"
revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0"
version = "v0.3.0"
[[projects]]
branch = "master"
digest = "1:c8d95fbc783cab4e8986b1bf3dbe5312db7521e4342ac755280cfa78ce0ee792"
name = "google.golang.org/api"
packages = [
"calendar/v3",
"gensupport",
"googleapi",
"googleapi/internal/uritemplates",
"sheets/v4",
]
pruneopts = "UT"
revision = "e21acd801f91da814261b938941d193bb036441a"
[[projects]]
digest = "1:c8907869850adaa8bd7631887948d0684f3787d0912f1c01ab72581a6c34432e"
name = "google.golang.org/appengine"
packages = [
".",
"internal",
"internal/app_identity",
"internal/base",
"internal/datastore",
"internal/log",
"internal/modules",
"internal/remote_api",
"internal/urlfetch",
"urlfetch",
]
pruneopts = "UT"
revision = "b1f26356af11148e710935ed1ac8a7f5702c7612"
version = "v1.1.0"
[[projects]]
digest = "1:342378ac4dcb378a5448dd723f0784ae519383532f5e70ade24132c4c8693202"
name = "gopkg.in/yaml.v2"
packages = ["."]
pruneopts = "UT"
revision = "5420a8b6744d3b0345ab293f6fcba19c978f1183"
version = "v2.2.1"
[solve-meta]
analyzer-name = "dep"
analyzer-version = 1
input-imports = [
"github.com/adlio/trello",
"github.com/alecthomas/chroma/formatters",
"github.com/alecthomas/chroma/lexers",
"github.com/alecthomas/chroma/styles",
"github.com/andygrunwald/go-gerrit",
"github.com/briandowns/openweathermap",
"github.com/darkSasori/todoist",
"github.com/dustin/go-humanize",
"github.com/gdamore/tcell",
"github.com/google/go-github/github",
"github.com/jessevdk/go-flags",
"github.com/olebedev/config",
"github.com/pkg/profile",
"github.com/radovskyb/watcher",
"github.com/rivo/tview",
"github.com/stretchr/testify/assert",
"github.com/xanzy/go-gitlab",
"github.com/yfronto/newrelic",
"github.com/zorkian/go-datadog-api",
"golang.org/x/oauth2",
"golang.org/x/oauth2/google",
"google.golang.org/api/calendar/v3",
"google.golang.org/api/sheets/v4",
"gopkg.in/yaml.v2",
]
solver-name = "gps-cdcl"
solver-version = 1

99
Gopkg.toml Normal file
View File

@ -0,0 +1,99 @@
# Gopkg.toml example
#
# Refer to https://golang.github.io/dep/docs/Gopkg.toml.html
# for detailed Gopkg.toml documentation.
#
# required = ["github.com/user/thing/cmd/thing"]
# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]
#
# [[constraint]]
# name = "github.com/user/project"
# version = "1.0.0"
#
# [[constraint]]
# name = "github.com/user/project2"
# branch = "dev"
# source = "github.com/myfork/project2"
#
# [[override]]
# name = "github.com/x/y"
# version = "2.4.0"
#
# [prune]
# non-go = false
# go-tests = true
# unused-packages = true
[[constraint]]
name = "github.com/briandowns/openweathermap"
branch = "master"
[[constraint]]
name = "github.com/gdamore/tcell"
branch = "master"
#[[constraint]]
#name = "github.com/go-test/deep"
#version = "1.0.1"
[[constraint]]
name = "github.com/google/go-github"
branch = "master"
[[constraint]]
name = "github.com/xanzy/go-gitlab"
branch = "master"
[[constraint]]
name = "github.com/andygrunwald/go-gerrit"
branch = "master"
[[constraint]]
name = "github.com/jessevdk/go-flags"
version = "1.4.0"
[[constraint]]
name = "github.com/olebedev/config"
branch = "master"
[[constraint]]
name = "github.com/radovskyb/watcher"
version = "1.0.2"
[[constraint]]
name = "github.com/rivo/tview"
branch = "master"
[[constraint]]
name = "github.com/yfronto/newrelic"
branch = "master"
[[constraint]]
name = "golang.org/x/oauth2"
branch = "master"
[[constraint]]
name = "google.golang.org/api"
branch = "master"
[[constraint]]
name = "gopkg.in/yaml.v2"
version = "2.2.1"
[[constraint]]
name = "github.com/adlio/trello"
branch = "master"
[[constraint]]
name = "github.com/darkSasori/todoist"
branch = "master"
[prune]
go-tests = true
unused-packages = true
[[constraint]]
branch = "master"
name = "github.com/zorkian/go-datadog-api"

View File

@ -1,8 +1,6 @@
*Mozilla Public License, version 2.0*
Copyright 2018, Chris Cummer
1. Definitions
1.1. “Contributor” means each individual or legal entity that creates, contributes to the creation of, or owns Covered Software.
Mozilla Public License, version 2.0 1. Definitions 1.1. “Contributor” means each individual or legal entity that creates, contributes to the creation of, or owns Covered Software.
1.2. “Contributor Version” means the combination of the Contributions of others (if any) used by a Contributor and that particular Contributors Contribution.
@ -26,9 +24,9 @@ that the Covered Software was made available under the terms of version 1.1 or e
1.10. “Modifications” means any of the following:
any file in Source Code Form that results from an addition to, deletion from, or modification of the contents of Covered Software; or
any file in Source Code Form that results from an addition to, deletion from, or modification of the contents of Covered Software; or
any new file in Source Code Form that contains any Covered Software.
any new file in Source Code Form that contains any Covered Software.
1.11. “Patent Claims” of a Contributor means any patent claim(s), including without limitation, method, process, and apparatus claims, in any patent Licensable by such Contributor that would be infringed, but for the grant of the License, by the making, using, selling, offering for sale, having made, import, or transfer of either its Contributions or its Contributor Version.
@ -38,9 +36,7 @@ that the Covered Software was made available under the terms of version 1.1 or e
1.14. “You” (or “Your”) means an individual or a legal entity exercising rights under this License. For legal entities, “You” includes any entity that controls, is controlled by, or is under common control with You. For purposes of this definition, “control” means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
2. License Grants and Conditions
2.1. Grants Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
2. License Grants and Conditions 2.1. Grants Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
under intellectual property rights (other than patent or trademark) Licensable by such Contributor to use, reproduce, make available, modify, display, perform, distribute, and otherwise exploit its Contributions, either on an unmodified basis, with Modifications, or as part of a Larger Work; and
@ -66,9 +62,7 @@ This License does not grant any rights in the trademarks, service marks, or logo
2.7. Conditions Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in Section 2.1.
3. Responsibilities
3.1. Distribution of Source Form All distribution of Covered Software in Source Code Form, including any Modifications that You create or to which You contribute, must be under the terms of this License. You must inform recipients that the Source Code Form of the Covered Software is governed by the terms of this License, and how they can obtain a copy of this License. You may not attempt to alter or restrict the recipients rights in the Source Code Form.
3. Responsibilities 3.1. Distribution of Source Form All distribution of Covered Software in Source Code Form, including any Modifications that You create or to which You contribute, must be under the terms of this License. You must inform recipients that the Source Code Form of the Covered Software is governed by the terms of this License, and how they can obtain a copy of this License. You may not attempt to alter or restrict the recipients rights in the Source Code Form.
3.2. Distribution of Executable Form If You distribute Covered Software in Executable Form then:
@ -82,37 +76,23 @@ You may distribute such Executable Form under the terms of this License, or subl
3.5. Application of Additional Terms You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, You may do so only on Your own behalf, and not on behalf of any Contributor. You must make it absolutely clear that any such warranty, support, indemnity, or liability obligation is offered by You alone, and You hereby agree to indemnify every Contributor for any liability incurred by such Contributor as a result of warranty, support, indemnity or liability terms You offer. You may include additional disclaimers of warranty and limitations of liability specific to any jurisdiction.
4. Inability to Comply Due to Statute or Regulation
4. Inability to Comply Due to Statute or Regulation If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Software due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be placed in a text file included with all distributions of the Covered Software under this License. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it.
If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Software due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be placed in a text file included with all distributions of the Covered Software under this License. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it.
5. Termination
5.1. The rights granted under this License will terminate automatically if You fail to comply with any of its terms. However, if You become compliant, then the rights granted under this License from a particular Contributor are reinstated (a) provisionally, unless and until such Contributor explicitly and finally terminates Your grants, and (b) on an ongoing basis, if such Contributor fails to notify You of the non-compliance by some reasonable means prior to 60 days after You have come back into compliance. Moreover, Your grants from a particular Contributor are reinstated on an ongoing basis if such Contributor notifies You of the non-compliance by some reasonable means, this is the first time You have received notice of non-compliance with this License from such Contributor, and You become compliant prior to 30 days after Your receipt of the notice.
5. Termination 5.1. The rights granted under this License will terminate automatically if You fail to comply with any of its terms. However, if You become compliant, then the rights granted under this License from a particular Contributor are reinstated (a) provisionally, unless and until such Contributor explicitly and finally terminates Your grants, and (b) on an ongoing basis, if such Contributor fails to notify You of the non-compliance by some reasonable means prior to 60 days after You have come back into compliance. Moreover, Your grants from a particular Contributor are reinstated on an ongoing basis if such Contributor notifies You of the non-compliance by some reasonable means, this is the first time You have received notice of non-compliance with this License from such Contributor, and You become compliant prior to 30 days after Your receipt of the notice.
5.2. If You initiate litigation against any entity by asserting a patent infringement claim (excluding declaratory judgment actions, counter-claims, and cross-claims) alleging that a Contributor Version directly or indirectly infringes any patent, then the rights granted to You by any and all Contributors for the Covered Software under Section 2.1 of this License shall terminate.
5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or Your distributors under this License prior to termination shall survive termination.
6. Disclaimer of Warranty
6. Disclaimer of Warranty Covered Software is provided under this License on an “as is” basis, without warranty of any kind, either expressed, implied, or statutory, including, without limitation, warranties that the Covered Software is free of defects, merchantable, fit for a particular purpose or non-infringing. The entire risk as to the quality and performance of the Covered Software is with You. Should any Covered Software prove defective in any respect, You (not any Contributor) assume the cost of any necessary servicing, repair, or correction. This disclaimer of warranty constitutes an essential part of this License. No use of any Covered Software is authorized under this License except under this disclaimer.
Covered Software is provided under this License on an “as is” basis, without warranty of any kind, either expressed, implied, or statutory, including, without limitation, warranties that the Covered Software is free of defects, merchantable, fit for a particular purpose or non-infringing. The entire risk as to the quality and performance of the Covered Software is with You. Should any Covered Software prove defective in any respect, You (not any Contributor) assume the cost of any necessary servicing, repair, or correction. This disclaimer of warranty constitutes an essential part of this License. No use of any Covered Software is authorized under this License except under this disclaimer.
7. Limitation of Liability Under no circumstances and under no legal theory, whether tort (including negligence), contract, or otherwise, shall any Contributor, or anyone who distributes Covered Software as permitted above, be liable to You for any direct, indirect, special, incidental, or consequential damages of any character including, without limitation, damages for lost profits, loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses, even if such party shall have been informed of the possibility of such damages. This limitation of liability shall not apply to liability for death or personal injury resulting from such partys negligence to the extent applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so this exclusion and limitation may not apply to You.
7. Limitation of Liability
8. Litigation Any litigation relating to this License may be brought only in the courts of a jurisdiction where the defendant maintains its principal place of business and such litigation shall be governed by laws of that jurisdiction, without reference to its conflict-of-law provisions. Nothing in this Section shall prevent a partys ability to bring cross-claims or counter-claims.
Under no circumstances and under no legal theory, whether tort (including negligence), contract, or otherwise, shall any Contributor, or anyone who distributes Covered Software as permitted above, be liable to You for any direct, indirect, special, incidental, or consequential damages of any character including, without limitation, damages for lost profits, loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses, even if such party shall have been informed of the possibility of such damages. This limitation of liability shall not apply to liability for death or personal injury resulting from such partys negligence to the extent applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so this exclusion and limitation may not apply to You.
9. Miscellaneous This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not be used to construe this License against a Contributor.
8. Litigation
Any litigation relating to this License may be brought only in the courts of a jurisdiction where the defendant maintains its principal place of business and such litigation shall be governed by laws of that jurisdiction, without reference to its conflict-of-law provisions. Nothing in this Section shall prevent a partys ability to bring cross-claims or counter-claims.
9. Miscellaneous
This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not be used to construe this License against a Contributor.
10. Versions of the License
10.1. New Versions Mozilla Foundation is the license steward. Except as provided in Section 10.3, no one other than the license steward has the right to modify or publish new versions of this License. Each version will be given a distinguishing version number.
10. Versions of the License 10.1. New Versions Mozilla Foundation is the license steward. Except as provided in Section 10.3, no one other than the license steward has the right to modify or publish new versions of this License. Each version will be given a distinguishing version number.
10.2. Effect of New Versions You may distribute the Covered Software under the terms of the version of the License under which You originally received the Covered Software, or under the terms of any subsequent version published by the license steward.
@ -120,14 +100,10 @@ This License represents the complete agreement concerning the subject matter her
10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses If You choose to distribute Source Code Form that is Incompatible With Secondary Licenses under the terms of this version of the License, the notice described in Exhibit B of this License must be attached.
Exhibit A - Source Code Form License Notice
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
Exhibit A - Source Code Form License Notice This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice.
You may add additional accurate notices of copyright ownership.
Exhibit B - “Incompatible With Secondary Licenses” Notice
This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.
Exhibit B - “Incompatible With Secondary Licenses” Notice This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.

164
Makefile
View File

@ -1,164 +1,22 @@
.PHONY: build clean contrib_check coverage docker-build docker-install help install isntall lint run size test uninstall
.PHONY: contrib_check dependencies install run size
# detect GOPATH if not set
ifndef $(GOPATH)
$(info GOPATH is not set, autodetecting..)
TESTPATH := $(dir $(abspath ../../..))
DIRS := bin pkg src
# create a ; separated line of tests and pass it to shell
MISSING_DIRS := $(shell $(foreach entry,$(DIRS),test -d "$(TESTPATH)$(entry)" || echo "$(entry)";))
ifeq ($(MISSING_DIRS),)
$(info Found GOPATH: $(TESTPATH))
export GOPATH := $(TESTPATH)
else
$(info ..missing dirs "$(MISSING_DIRS)" in "$(TESTDIR)")
$(info GOPATH autodetection failed)
endif
endif
# Set go modules to on and use GoCenter for immutable modules
export GO111MODULE = on
export GOPROXY = https://proxy.golang.org,direct
# Determines the path to this Makefile
THIS_FILE := $(lastword $(MAKEFILE_LIST))
APP=wtfutil
define HEADER
____ __ ____ .___________. _______
\ \ / \ / / | || ____|
\ \/ \/ / `---| |----`| |__
\ / | | | __|
\ /\ / | | | |
\__/ \__/ |__| |__|
endef
export HEADER
# -------------------- Actions -------------------- #
## build: builds a local version
build:
@echo "$$HEADER"
@echo "Building..."
go build -o bin/${APP}
@echo "Done building"
go build -race -o bin/wtf
## clean: removes old build cruft
clean:
rm -rf ./dist
rm -rf ./bin/${APP}
@echo "Done cleaning"
## contrib-check: checks for any contributors who have not been given due credit
contrib-check:
contrib_check:
npx all-contributors-cli check
## coverage: figures out and displays test code coverage
coverage:
go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.out
## docker-build: builds in docker
docker-build:
@echo "Building ${APP} in Docker..."
docker build -t wtfutil:build --build-arg=version=master -f Dockerfile.build .
@echo "Done with docker build"
## docker-install: installs a local version of the app from docker build
docker-install:
@echo "Installing..."
docker create --name wtf_build wtfutil:build
docker cp wtf_build:/usr/local/bin/wtfutil ~/.local/bin/
$(eval INSTALLPATH = $(shell which ${APP}))
@echo "${APP} installed into ${INSTALLPATH}"
docker rm wtf_build
## gosec: runs the gosec static security scanner against the source code
gosec:
gosec -tests ./...
## help: prints this help message
help:
@echo "Usage: \n"
@sed -n 's/^##//p' ${MAKEFILE_LIST} | column -t -s ':' | sed -e 's/^/ /'
## isntall: an alias for 'install'
isntall:
@$(MAKE) -f $(THIS_FILE) install
## install: installs a local version of the app
install:
$(eval GOVERS = $(shell go version))
@echo "$$HEADER"
@echo "Installing ${APP} with ${GOVERS}..."
@go clean
@go install -ldflags="-s -w -X main.version=$(shell git describe --always --abbrev=6) -X main.date=$(shell date +%FT%T%z)"
@mv ~/go/bin/wtf ~/go/bin/${APP}
$(eval INSTALLPATH = $(shell which ${APP}))
@echo "${APP} installed into ${INSTALLPATH}"
go clean
go install -ldflags="-s -w -X main.version=$(shell git describe --always --abbrev=6) -X main.date=$(shell date +%FT%T%z)"
which wtf
## lint: runs a number of code quality checks against the source code
lint:
golangci-lint cache clean
golangci-lint run
structcheck ./...
varcheck ./...
# lint:
# @echo "\033[35mhttps://github.com/kisielk/errcheck\033[0m"
# errcheck ./app
# errcheck ./cfg
# errcheck ./flags
# errcheck ./help
# errcheck ./logger
# errcheck ./modules/...
# errcheck ./utils
# errcheck ./view
# errcheck ./wtf
# errcheck ./main.go
# @echo "\033[35mhttps://golang.org/cmd/vet/k\033[0m"
# go vet ./app
# go vet ./cfg
# go vet ./flags
# go vet ./help
# go vet ./logger
# go vet ./modules/...
# go vet ./utils
# go vet ./view
# go vet ./wtf
# go vet ./main.go
# @echo "\033[35m# https://staticcheck.io/docs/k\033[0m"
# staticcheck ./app
# staticcheck ./cfg
# staticcheck ./flags
# staticcheck ./help
# staticcheck ./logger
# staticcheck ./modules/...
# staticcheck ./utils
# staticcheck ./view
# staticcheck ./wtf
# staticcheck ./main.go
# @echo "\033[35m# https://github.com/mdempsky/unconvert\033[0m"
# unconvert ./...
## loc: displays the lines of code (LoC) count
loc:
@loc --exclude _sample_configs/ _site/ docs/ Makefile *.md
## run: executes the locally-installed version
run: build
@echo "$$HEADER"
bin/${APP}
bin/wtf
## test: runs the test suite
test: build
@echo "$$HEADER"
go test ./...
## uninstall: uninstals a locally-installed version
uninstall:
@rm ~/go/bin/${APP}
size:
loc --exclude vendor/ _sample_configs/ _site/ docs/ Makefile *.md *.toml

453
README.md
View File

@ -1,435 +1,71 @@
<p align="center">
<img src="./images/logo_transparent.png?raw=true" title="WTF" alt="WTF" width="560" height="560" />
</p>
[![All Contributors](https://img.shields.io/badge/all_contributors-43-orange.svg?style=flat-square)](#contributors)
[![Build Status](https://travis-ci.com/senorprogrammer/wtf.svg?branch=master)](https://travis-ci.com/senorprogrammer/wtf)
[![Gitter Chat](https://badges.gitter.im/wtfutil/Lobby.svg)](https://gitter.im/wtfutil/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Twitter](https://img.shields.io/badge/follow-on%20twitter-blue.svg)](https://twitter.com/wtfutil)
[![All Contributors](https://img.shields.io/github/contributors/senorprogrammer/wtf.svg?longCache=true&style=flat-square&colorB=orange&label=all%20contributors)](#contributors)
[![Go Report Card](https://goreportcard.com/badge/github.com/senorprogrammer/wtf)](https://goreportcard.com/report/github.com/senorprogrammer/wtf)
# WTF
A personal terminal-based dashboard utility, designed for
displaying infrequently-needed, but very important, daily data.
Follow [on Twitter](https://twitter.com/wtfutil) for news and latest updates.
<p align="center">
<a href="#contributors"><img alt="All Contributors" src="https://img.shields.io/badge/all_contributors-114-orange.svg?style=flat-square"></a>
<a href="https://travis-ci.com/wtfutil/wtf"><img alt="Travis Status" src="https://img.shields.io/travis/com/wtfutil/wtf/master.svg?label=travis&maxAge=43200"></a>
<a href="https://goreportcard.com/report/github.com/wtfutil/wtf"><img alt="Go Report Card" src="https://goreportcard.com/badge/github.com/wtfutil/wtf"></a>
<a href="https://twitter.com/wtfutil"><img alt="Twitter" src="https://img.shields.io/badge/follow-on%20twitter-blue.svg"></a>
<img src="./docs/img/screenshot.jpg" title="screenshot" width="720" height="420" />
</p>
WTF (aka 'wtfutil') is the personal information dashboard for your terminal, providing at-a-glance access to your very important but infrequently-needed stats and data.
## Quick Start
Used by thousands of developers and tech people around the world, WTF is free and open-source. To support the continued use and development of WTF, please consider sponsoring WTF via [GitHub Sponsors](https://github.com/sponsors/senorprogrammer).
### Are you a contributor or sponsor?
Awesome! [See here](https://wtfutil.com/#exit-message) for how you can change the exit message, the message WTF shows when quitting, to something special just for you.
#
<p></p>
* [Installation](#installation)
* [Installing via Homebrew](#installing-via-homebrew)
* [Installing via MacPorts](#installing-via-macports)
* [Installing a Binary](#installing-a-binary)
* [Installing from Source](#installing-from-source)
* [Running via Docker](#running-via-docker)
* [Communication](#communication)
* [Slack](#slack)
* [Twitter](#twitter)
* [Documentation](#documentation)
* [Modules](#modules)
* [Getting Bugs Fixed or Features Added](#getting-bugs-fixed-or-features-added)
* [Contributing to the Source Code](#contributing-to-the-source-code)
* [Adding Dependencies](#adding-dependencies)
* [Contributing to the Documentation](#contributing-to-the-documentation)
* [Contributors](#contributors)
* [Acknowledgements](#acknowledgments)
<p align="center">
<img src="./images/screenshot.jpg" title="screenshot" width="720" height="420" />
</p>
## Installation
### Installing via Homebrew
The simplest way from Homebrew:
```console
brew install wtfutil
wtfutil
```
That version can sometimes lag a bit, as recipe updates take time to get accepted into `homebrew-core`. If you always want the bleeding edge of releases, you can tap it:
```console
brew tap wtfutil/wtfutil
brew install wtfutil
wtfutil
```
### Installing via MacPorts
You can also install via [MacPorts](https://www.macports.org/):
```console
sudo port selfupdate
sudo port install wtfutil
wtfutil
```
### Installing a Binary
[Download the latest binary](https://github.com/wtfutil/wtf/releases) from GitHub.
WTF is a stand-alone binary. Once downloaded, copy it to a location you can run executables from (ie: `/usr/local/bin/`), and set the permissions accordingly:
[Download and run the latest binary](https://github.com/senorprogrammer/wtf/releases) or install from source:
```bash
chmod a+x /usr/local/bin/wtfutil
```
and you should be good to go.
### Installing from Source
If you want to run the build command from within your `$GOPATH`:
```bash
# Set the Go proxy
export GOPROXY="https://proxy.golang.org,direct"
# Disable the Go checksum database
export GOSUMDB=off
# Enable Go modules
export GO111MODULE=on
go get -u github.com/wtfutil/wtf
cd $GOPATH/src/github.com/wtfutil/wtf
go get -u github.com/senorprogrammer/wtf
cd $GOPATH/src/github.com/senorprogrammer/wtf
make install
make run
```
If you want to run the build command from a folder that is not in your `$GOPATH`:
```bash
# Set the Go proxy
export GOPROXY="https://proxy.golang.org,direct"
go get -u github.com/wtfutil/wtf
cd $GOPATH/src/github.com/wtfutil/wtf
make install
make run
```
### Installing from Source using Docker
All building is done inside a docker container. You can then copy the binary to
your local machine.
```bash
curl -o Dockerfile.build https://raw.githubusercontent.com/wtfutil/wtf/master/Dockerfile.build
docker build -f Dockerfile.build -t wtfutil --build-arg=version=master .
docker create --name wtf_build wtfutil
docker cp wtf_build:/usr/local/bin/wtfutil ~/.local/bin
docker rm wtf_build
```
**Note:** WTF is _only_ compatible with Go versions **1.16.0** or later (due to the use of Go modules and newer standard library functions). If you would like to use `gccgo` to compile, you _must_ use `gccgo-9` or later which introduces support for Go modules.
### Installing via Arch User Repository
Arch Linux users can utilise the [wtfutil](https://aur.archlinux.org/packages/wtfutil) package to build it from source, or [wtfutil-bin](https://aur.archlinux.org/packages/wtfutil-bin/) to install pre-built binaries.
## Running via Docker
You can run `wtf` inside a docker container:
```bash
# download or create the Dockerfile
curl -o Dockerfile https://raw.githubusercontent.com/wtfutil/wtf/master/Dockerfile
# build the docker container
docker build -t wtfutil .
# or for a particular tag or branch
docker build --build-arg=version=v0.25.0 -t wtfutil .
# run the container
docker run -it wtfutil
# run container with a local config file
docker run -it -v path/to/config.yml:/config/config.yml wtfutil --config=/config/config.yml
```
## Communication
### Slack
If youre a member of the Gophers Slack community (https://invite.slack.golangbridge.org) theres a WTFUtil channel you should join for all your WTF questions, development conversations, etc.
Find #wtfutil on https://gophers.slack.com/ and join us.
### Twitter
Also, follow [on Twitter](https://twitter.com/wtfutil) for news and latest updates.
**Note:** WTF is _only_ compatible with Go versions **1.9.2** or later. It currently _does not_ compile with `gccgo`.
## Documentation
See [https://wtfutil.com](https://wtfutil.com) for the definitive
documentation. Here's some short-cuts:
* [Installation](https://wtfutil.com/quick_start/)
* [Configuration](https://wtfutil.com/configuration/files/)
* [Module Documentation](https://wtfutil.com/modules/)
* [Installation](http://wtfutil.com/posts/installation/)
* [Configuration](http://wtfutil.com/posts/configuration/)
* [Module Documentation](http://wtfutil.com/posts/modules/)
## Modules
## Contributing
Modules are the chunks of functionality that make WTF useful. Modules are added and configured by including their configuration values in your `config.yml` file. The documentation for each module describes how to configure them.
Some interesting modules you might consider adding to get you started:
* [DigitalOcean](https://wtfutil.com/modules/digitalocean/)
* [GitHub](https://wtfutil.com/modules/github/)
* [Google Calendar](https://wtfutil.com/modules/google/gcal/)
* [HackerNews](https://wtfutil.com/modules/hackernews/)
* [Have I Been Pwned](https://wtfutil.com/modules/hibp/)
* [NewRelic](https://wtfutil.com/modules/newrelic/)
* [OpsGenie](https://wtfutil.com/modules/opsgenie/)
* [Security](https://wtfutil.com/modules/security/)
* [Transmission](https://wtfutil.com/modules/transmission/)
* [Trello](https://wtfutil.com/modules/trello/)
## Getting Bugs Fixed or Features Added
WTF is open-source software, informally maintained by a small collection of volunteers who come and go at their leisure. There are absolutely no guarantees that, even if an issue is opened for them, bugs will be fixed or features added.
If there is a bug that you really need to have fixed or a feature you really want to have implemented, you can greatly increase your chances of that happening by creating a bounty on [BountySource](https://www.bountysource.com) to provide an incentive for someone to tackle it.
## Contributing to the Source Code
First, kindly read [Talk, then code](https://dave.cheney.net/2019/02/18/talk-then-code) by Dave Cheney. It's great advice and will often save a lot of time and effort.
Next, kindly read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests.
Then create your branch, write your code, submit your PR, and join the rest of the awesome people who've contributed their time and effort towards WTF. Without their contributors, WTF wouldn't be possible.
Don't worry if you've never written Go before, or never contributed to an open source project before, or that your code won't be good enough. For a surprising number of people WTF has been their first Go project, or first open source contribution. If you're here, and you've read this far, you're the right stuff.
## Contributing to the Documentation
Documentation now lives in its own repository here: [https://github.com/wtfutil/wtfdocs](https://github.com/wtfutil/wtfdocs).
Please make all additions and updates to documentation in that repository.
Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests.
### Adding Dependencies
Dependency management in WTF is handled by [Go modules](https://github.com/golang/go/wiki/Modules). Please check out that page for more details on how Go modules work.
Dependency management in WTF is handled by [dep](https://github.com/golang/dep). See that page for installation and usage details.
If the work you're doing requires the addition of a new dependency,
please be sure to use `dep` to [vendor your dependencies](https://golang.github.io/dep/docs/daily-dep.html#adding-a-new-dependency).
## Contributors
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center"><a href="https://twitter.com/senorprogrammer"><img src="https://avatars0.githubusercontent.com/u/6413?v=4" width="48px;" alt=""/><br /><sub><b>Chris Cummer</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/anandsudhir"><img src="https://avatars2.githubusercontent.com/u/3252403?v=4" width="48px;" alt=""/><br /><sub><b>Anand Sudhir Prayaga</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/jeangovil"><img src="https://avatars1.githubusercontent.com/u/34973359?v=4" width="48px;" alt=""/><br /><sub><b>Hossein Mehrabi</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/Fengyalv"><img src="https://avatars0.githubusercontent.com/u/11779018?v=4" width="48px;" alt=""/><br /><sub><b>FengYa</b></sub></a><br /></td>
<td align="center"><a href="https://fluxionnetwork.github.io/fluxion/"><img src="https://avatars2.githubusercontent.com/u/17337753?v=4" width="48px;" alt=""/><br /><sub><b>deltax</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/BillKeenan"><img src="https://avatars0.githubusercontent.com/u/1319630?v=4" width="48px;" alt=""/><br /><sub><b>Bill Keenan</b></sub></a><br /></td>
<td align="center"><a href="http://blog.sapara.com"><img src="https://avatars2.githubusercontent.com/u/118081?v=4" width="48px;" alt=""/><br /><sub><b>June S</b></sub></a><br /></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/XanthusL"><img src="https://avatars3.githubusercontent.com/u/16461061?v=4" width="48px;" alt=""/><br /><sub><b>liyiheng</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/baustinanki"><img src="https://avatars2.githubusercontent.com/u/9014288?v=4" width="48px;" alt=""/><br /><sub><b>baustinanki</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/lixin9311"><img src="https://avatars0.githubusercontent.com/u/371475?v=4" width="48px;" alt=""/><br /><sub><b>lucus lee</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/mxplusb"><img src="https://avatars1.githubusercontent.com/u/7537841?v=4" width="48px;" alt=""/><br /><sub><b>Mike Lloyd</b></sub></a><br /></td>
<td align="center"><a href="http://rubiojr.rbel.co"><img src="https://avatars3.githubusercontent.com/u/10998?v=4" width="48px;" alt=""/><br /><sub><b>Sergio Rubio</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/FarhadF"><img src="https://avatars3.githubusercontent.com/u/17374492?v=4" width="48px;" alt=""/><br /><sub><b>Farhad Farahi</b></sub></a><br /></td>
<td align="center"><a href="http://lasantha.blogspot.com/"><img src="https://avatars1.githubusercontent.com/u/634604?v=4" width="48px;" alt=""/><br /><sub><b>Lasantha Kularatne</b></sub></a><br /></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/dlom"><img src="https://avatars1.githubusercontent.com/u/823331?v=4" width="48px;" alt=""/><br /><sub><b>Mark Old</b></sub></a><br /></td>
<td align="center"><a href="http://flw.tools/"><img src="https://avatars0.githubusercontent.com/u/5546718?v=4" width="48px;" alt=""/><br /><sub><b>flw</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/davebarda"><img src="https://avatars0.githubusercontent.com/u/6024927?v=4" width="48px;" alt=""/><br /><sub><b>David Barda</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/matrinox"><img src="https://avatars2.githubusercontent.com/u/4261980?v=4" width="48px;" alt=""/><br /><sub><b>Geoff Lee</b></sub></a><br /></td>
<td align="center"><a href="http://international.github.io"><img src="https://avatars3.githubusercontent.com/u/1022918?v=4" width="48px;" alt=""/><br /><sub><b>George Opritescu</b></sub></a><br /></td>
<td align="center"><a href="https://twitter.com/Grazfather"><img src="https://avatars3.githubusercontent.com/u/497310?v=4" width="48px;" alt=""/><br /><sub><b>Grazfather</b></sub></a><br /></td>
<td align="center"><a href="http://www.mikecordell.com/"><img src="https://avatars2.githubusercontent.com/u/1691120?v=4" width="48px;" alt=""/><br /><sub><b>Michael Cordell</b></sub></a><br /></td>
</tr>
<tr>
<td align="center"><a href="http://patrick.ibexcps.com"><img src="https://avatars2.githubusercontent.com/u/1215497?v=4" width="48px;" alt=""/><br /><sub><b>Patrick José Pereira</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/sherodtaylor"><img src="https://avatars2.githubusercontent.com/u/1483092?v=4" width="48px;" alt=""/><br /><sub><b>sherod taylor</b></sub></a><br /></td>
<td align="center"><a href="http://cogentia.io"><img src="https://avatars2.githubusercontent.com/u/3062663?v=4" width="48px;" alt=""/><br /><sub><b>Andrew Scott</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/lsipii"><img src="https://avatars1.githubusercontent.com/u/12018440?v=4" width="48px;" alt=""/><br /><sub><b>Lassi Piironen</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/BlackWebWolf"><img src="https://avatars0.githubusercontent.com/u/14799210?v=4" width="48px;" alt=""/><br /><sub><b>BlackWebWolf</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/andrewzolotukhin"><img src="https://avatars0.githubusercontent.com/u/1894885?v=4" width="48px;" alt=""/><br /><sub><b>andrewzolotukhin</b></sub></a><br /></td>
<td align="center"><a href="https://retgits.github.io"><img src="https://avatars1.githubusercontent.com/u/8568280?v=4" width="48px;" alt=""/><br /><sub><b>Leon Stigter</b></sub></a><br /></td>
</tr>
<tr>
<td align="center"><a href="https://tamimi.se"><img src="https://avatars3.githubusercontent.com/u/21756?v=4" width="48px;" alt=""/><br /><sub><b>Amr Tamimi</b></sub></a><br /></td>
<td align="center"><a href="https://jagdeep.me"><img src="https://avatars3.githubusercontent.com/u/3717137?v=4" width="48px;" alt=""/><br /><sub><b>Jagdeep Singh</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/darkSasori"><img src="https://avatars0.githubusercontent.com/u/889171?v=4" width="48px;" alt=""/><br /><sub><b>Lineu Felipe</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/kvj"><img src="https://avatars2.githubusercontent.com/u/159124?v=4" width="48px;" alt=""/><br /><sub><b>Konstantin</b></sub></a><br /></td>
<td align="center"><a href="http://www.brendanoleary.com"><img src="https://avatars2.githubusercontent.com/u/6044920?v=4" width="48px;" alt=""/><br /><sub><b>Brendan O'Leary</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/bertl4398"><img src="https://avatars2.githubusercontent.com/u/1226441?v=4" width="48px;" alt=""/><br /><sub><b>bertl4398</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/Ferenc-"><img src="https://avatars2.githubusercontent.com/u/6553695?v=4" width="48px;" alt=""/><br /><sub><b>Ferenc-</b></sub></a><br /></td>
</tr>
<tr>
<td align="center"><a href="http://rohanverma.net"><img src="https://avatars1.githubusercontent.com/u/952036?v=4" width="48px;" alt=""/><br /><sub><b>Rohan Verma</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/fimtitzgerald"><img src="https://avatars1.githubusercontent.com/u/19293566?v=4" width="48px;" alt=""/><br /><sub><b>Tim Fitzgerald</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/ruggi"><img src="https://avatars2.githubusercontent.com/u/1081051?v=4" width="48px;" alt=""/><br /><sub><b>Federico Ruggi</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/ctwoodward"><img src="https://avatars2.githubusercontent.com/u/7293328?v=4" width="48px;" alt=""/><br /><sub><b>Craig Woodward</b></sub></a><br /></td>
<td align="center"><a href="https://twitter.com/ReadmeCritic"><img src="https://avatars3.githubusercontent.com/u/15367484?v=4" width="48px;" alt=""/><br /><sub><b>ReadmeCritic</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/jdevelop"><img src="https://avatars0.githubusercontent.com/u/141402?v=4" width="48px;" alt=""/><br /><sub><b>Eugene</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/Trinergy"><img src="https://avatars1.githubusercontent.com/u/12983705?s=460&v=4" width="48px;" alt=""/><br /><sub><b>Kenny Wu</b></sub></a><br /></td>
</tr>
<tr>
<td align="center"><a href="http://www.romeroruiz.com"><img src="https://avatars0.githubusercontent.com/u/538234?v=4" width="48px;" alt=""/><br /><sub><b>Renán Romero</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/sticreations"><img src="https://avatars1.githubusercontent.com/u/5031240?v=4" width="48px;" alt=""/><br /><sub><b>Bastian Groß</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/nicholas-eden"><img src="https://avatars1.githubusercontent.com/u/2496835?v=4" width="48px;" alt=""/><br /><sub><b>nicholas-eden</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/danrabinowitz"><img src="https://avatars1.githubusercontent.com/u/279390?v=4" width="48px;" alt=""/><br /><sub><b>Dan Rabinowitz</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/dvdmssmnn"><img src="https://avatars1.githubusercontent.com/u/6897575?v=4" width="48px;" alt=""/><br /><sub><b>David Missmann</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/mweb"><img src="https://avatars2.githubusercontent.com/u/882006?v=4" width="48px;" alt=""/><br /><sub><b>Mathias Weber</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/TheRedSpy15"><img src="https://avatars1.githubusercontent.com/u/32081703?v=4" width="48px;" alt=""/><br /><sub><b>TheRedSpy15</b></sub></a><br /></td>
</tr>
<tr>
<td align="center"><a href="https://www.linkedin.com/in/harald-nordgren-44778192"><img src="https://avatars0.githubusercontent.com/u/9569897?v=4" width="48px;" alt=""/><br /><sub><b>Harald Nordgren</b></sub></a><br /></td>
<td align="center"><a href="http://stormfirefox1.github.io"><img src="https://avatars0.githubusercontent.com/u/11583824?v=4" width="48px;" alt=""/><br /><sub><b>Matei Alexandru Gardus</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/Seanstoppable"><img src="https://avatars2.githubusercontent.com/u/1523955?v=4" width="48px;" alt=""/><br /><sub><b>Sean Smith</b></sub></a><br /></td>
<td align="center"><a href="http://kaskavalci.com"><img src="https://avatars1.githubusercontent.com/u/1646238?v=4" width="48px;" alt=""/><br /><sub><b>Halil Kaskavalci</b></sub></a><br /></td>
<td align="center"><a href="http://www.johandenoyer.fr"><img src="https://avatars2.githubusercontent.com/u/246715?v=4" width="48px;" alt=""/><br /><sub><b>Johan Denoyer</b></sub></a><br /></td>
<td align="center"><a href="https://skymeyer.be"><img src="https://avatars1.githubusercontent.com/u/593516?v=4" width="48px;" alt=""/><br /><sub><b>Jelle Vink</b></sub></a><br /></td>
<td align="center"><a href="http://imdevinc.com"><img src="https://avatars1.githubusercontent.com/u/3997333?v=4" width="48px;" alt=""/><br /><sub><b>Devin Collins</b></sub></a><br /></td>
</tr>
<tr>
<td align="center"><a href="http://danne.stayskal.com/"><img src="https://avatars3.githubusercontent.com/u/18333?v=4" width="48px;" alt=""/><br /><sub><b>Danne Stayskal</b></sub></a><br /></td>
<td align="center"><a href="https://www.maxbeizer.com"><img src="https://avatars1.githubusercontent.com/u/2006658?v=4" width="48px;" alt=""/><br /><sub><b>Max Beizer</b></sub></a><br /></td>
<td align="center"><a href="http://tinyurl.com/nwmj4as"><img src="https://avatars1.githubusercontent.com/u/194392?v=4" width="48px;" alt=""/><br /><sub><b>E:V:A</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/GaboFDC"><img src="https://avatars0.githubusercontent.com/u/1425500?v=4" width="48px;" alt=""/><br /><sub><b>Gabriel</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/AndrewScibek"><img src="https://avatars2.githubusercontent.com/u/10111411?v=4" width="48px;" alt=""/><br /><sub><b>Andrew Scibek</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/FriedCosey"><img src="https://avatars0.githubusercontent.com/u/29709822?v=4" width="48px;" alt=""/><br /><sub><b>FriedCosey</b></sub></a><br /></td>
<td align="center"><a href="https://michelegera.dev/"><img src="https://avatars1.githubusercontent.com/u/3891?v=4" width="48px;" alt=""/><br /><sub><b>Michele Gerarduzzi</b></sub></a><br /></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/rudolphjacksonm"><img src="https://avatars3.githubusercontent.com/u/13438569?v=4" width="48px;" alt=""/><br /><sub><b>Jack Morris</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/foorb"><img src="https://avatars0.githubusercontent.com/u/14993807?v=4" width="48px;" alt=""/><br /><sub><b>foorb</b></sub></a><br /></td>
<td align="center"><a href="http://researchit.las.iastate.edu"><img src="https://avatars0.githubusercontent.com/u/5819098?v=4" width="48px;" alt=""/><br /><sub><b>Levi Baber</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/gnanderson"><img src="https://avatars0.githubusercontent.com/u/38514?v=4" width="48px;" alt=""/><br /><sub><b>Graham Anderson</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/bosr"><img src="https://avatars2.githubusercontent.com/u/1936828?v=4" width="48px;" alt=""/><br /><sub><b>Romain Bossart</b></sub></a><br /></td>
<td align="center"><a href="http://eonix.ru"><img src="https://avatars0.githubusercontent.com/u/969838?v=4" width="48px;" alt=""/><br /><sub><b>Kirill Motkov</b></sub></a><br /></td>
<td align="center"><a href="http://www.BrianChoromanski.com"><img src="https://avatars1.githubusercontent.com/u/3665694?v=4" width="48px;" alt=""/><br /><sub><b>Brian Choromanski</b></sub></a><br /></td>
</tr>
<tr>
<td align="center"><a href="http://siobud.com"><img src="https://avatars0.githubusercontent.com/u/1302304?v=4" width="48px;" alt=""/><br /><sub><b>Sean DuBois</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/gary-kim"><img src="https://avatars1.githubusercontent.com/u/47195730?v=4" width="48px;" alt=""/><br /><sub><b>Gary Kim</b></sub></a><br /></td>
<td align="center"><a href="https://dylanbartels.com"><img src="https://avatars1.githubusercontent.com/u/6660171?v=4" width="48px;" alt=""/><br /><sub><b>Dylan</b></sub></a><br /></td>
<td align="center"><a href="http://liet.me"><img src="https://avatars0.githubusercontent.com/u/1990354?v=4" width="48px;" alt=""/><br /><sub><b>Dmytro Prokhorenkov</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/elliotrushton"><img src="https://avatars1.githubusercontent.com/u/590442?v=4" width="48px;" alt=""/><br /><sub><b>Elliot</b></sub></a><br /></td>
<td align="center"><a href="http://chenrui.dev"><img src="https://avatars3.githubusercontent.com/u/1580956?v=4" width="48px;" alt=""/><br /><sub><b>chenrui</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/sudermanjr"><img src="https://avatars0.githubusercontent.com/u/7624765?v=4" width="48px;" alt=""/><br /><sub><b>Andrew Suderman</b></sub></a><br /></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/rwhogg"><img src="https://avatars3.githubusercontent.com/u/2373856?v=4" width="48px;" alt=""/><br /><sub><b>Bob 'Wombat' Hogg</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/hxw"><img src="https://avatars0.githubusercontent.com/u/143462?v=4" width="48px;" alt=""/><br /><sub><b>Christopher Hall</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/hneiva"><img src="https://avatars1.githubusercontent.com/u/3451557?v=4" width="48px;" alt=""/><br /><sub><b>Heitor Neiva</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/herbygillot"><img src="https://avatars3.githubusercontent.com/u/618376?v=4" width="48px;" alt=""/><br /><sub><b>Herby Gillot</b></sub></a><br /></td>
<td align="center"><a href="http://brudil.com"><img src="https://avatars3.githubusercontent.com/u/382352?v=4" width="48px;" alt=""/><br /><sub><b>James Canning</b></sub></a><br /></td>
<td align="center"><a href="https://twitter.com/jeffz4000"><img src="https://avatars1.githubusercontent.com/u/45892?v=4" width="48px;" alt=""/><br /><sub><b>jeffz</b></sub></a><br /></td>
<td align="center"><a href="https://mikkeljuhl.com"><img src="https://avatars0.githubusercontent.com/u/1764035?v=4" width="48px;" alt=""/><br /><sub><b>Mikkel Jeppesen Juhl</b></sub></a><br /></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/lesteenman"><img src="https://avatars1.githubusercontent.com/u/963290?v=4" width="48px;" alt=""/><br /><sub><b>Erik</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/nyourchuck"><img src="https://avatars1.githubusercontent.com/u/155574?v=4" width="48px;" alt=""/><br /><sub><b>Nate Yourchuck</b></sub></a><br /></td>
<td align="center"><a href="https://cprimozic.net/"><img src="https://avatars3.githubusercontent.com/u/4335849?v=4" width="48px;" alt=""/><br /><sub><b>Casey Primozic</b></sub></a><br /></td>
<td align="center"><a href="http://pierdelacabeza.com/maruja"><img src="https://avatars3.githubusercontent.com/u/2430915?v=4" width="48px;" alt=""/><br /><sub><b>Alvaro [Andor]</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/Midnight-Conqueror"><img src="https://avatars1.githubusercontent.com/u/17101621?v=4" width="48px;" alt=""/><br /><sub><b>Joel Valentine</b></sub></a><br /></td>
<td align="center"><a href="https://www.viktor-braun.de"><img src="https://avatars0.githubusercontent.com/u/4738210?v=4" width="48px;" alt=""/><br /><sub><b>Viktor Braun</b></sub></a><br /></td>
<td align="center"><a href="https://www.chrisdbrown.co.uk/"><img src="https://avatars3.githubusercontent.com/u/3877652?v=4" width="48px;" alt=""/><br /><sub><b>ChrisDBrown</b></sub></a><br /></td>
</tr>
<tr>
<td align="center"><a href="https://narengowda.github.io/"><img src="https://avatars2.githubusercontent.com/u/582821?v=4" width="48px;" alt=""/><br /><sub><b>Narendra L</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/ibaum"><img src="https://avatars1.githubusercontent.com/u/24609103?v=4" width="48px;" alt=""/><br /><sub><b>ibaum</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/noxer"><img src="https://avatars3.githubusercontent.com/u/566185?v=4" width="48px;" alt=""/><br /><sub><b>Tim Scheuermann</b></sub></a><br /></td>
<td align="center"><a href="https://indradhanush.github.io/"><img src="https://avatars0.githubusercontent.com/u/2682729?v=4" width="48px;" alt=""/><br /><sub><b>Indradhanush Gupta</b></sub></a><br /></td>
<td align="center"><a href="https://victoravelar.com"><img src="https://avatars3.githubusercontent.com/u/7926849?v=4" width="48px;" alt=""/><br /><sub><b>Victor Hugo Avelar Ossorio</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/scw007"><img src="https://avatars3.githubusercontent.com/u/4001640?v=4" width="48px;" alt=""/><br /><sub><b>Steven Whitehead</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/lawrencecraft"><img src="https://avatars0.githubusercontent.com/u/660580?v=4" width="48px;" alt=""/><br /><sub><b>Lawrence Craft</b></sub></a><br /></td>
</tr>
<tr>
<td align="center"><a href="http://avi.press"><img src="https://avatars1.githubusercontent.com/u/1388071?v=4" width="48px;" alt=""/><br /><sub><b>Avi Press</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/Tardog"><img src="https://avatars0.githubusercontent.com/u/22562624?v=4" width="48px;" alt=""/><br /><sub><b>Sarah Kraßnigg</b></sub></a><br /></td>
<td align="center"><a href="http://jmks.ca"><img src="https://avatars1.githubusercontent.com/u/4923990?v=4" width="48px;" alt=""/><br /><sub><b>Jason Schweier</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/massa1240"><img src="https://avatars2.githubusercontent.com/u/8268483?v=4" width="48px;" alt=""/><br /><sub><b>Massa</b></sub></a><br /></td>
<td align="center"><a href="http://boot-error.github.io"><img src="https://avatars3.githubusercontent.com/u/8546140?v=4" width="48px;" alt=""/><br /><sub><b>Vighnesh SK</b></sub></a><br /></td>
<td align="center"><a href="http://alexfornuto.com"><img src="https://avatars3.githubusercontent.com/u/2349184?v=4" width="48px;" alt=""/><br /><sub><b>Alex Fornuto</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/stevenwhitehead"><img src="https://avatars0.githubusercontent.com/u/30630257?v=4" width="48px;" alt=""/><br /><sub><b>stevenwhitehead</b></sub></a><br /></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/jdenoy-saagie"><img src="https://avatars2.githubusercontent.com/u/55875303?v=4" width="48px;" alt=""/><br /><sub><b>Johan Denoyer</b></sub></a><br /></td>
<td align="center"><a href="https://albertsalim.dev"><img src="https://avatars1.githubusercontent.com/u/4749355?v=4" width="48px;" alt=""/><br /><sub><b>Albert Salim</b></sub></a><br /></td>
<td align="center"><a href="https://Feliciano.Tech"><img src="https://avatars1.githubusercontent.com/u/6017470?v=4" width="48px;" alt=""/><br /><sub><b>Ricardo N Feliciano</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/3mard"><img src="https://avatars3.githubusercontent.com/u/42009880?v=4" width="48px;" alt=""/><br /><sub><b>Omer Davutoglu</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/hemu"><img src="https://avatars0.githubusercontent.com/u/1871299?v=4" width="48px;" alt=""/><br /><sub><b>Hemu</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/Daanikus"><img src="https://avatars0.githubusercontent.com/u/18027087?v=4" width="48px;" alt=""/><br /><sub><b>Dan Bent</b></sub></a><br /></td>
<td align="center"><a href="https://cizer.dev"><img src="https://avatars3.githubusercontent.com/u/20225764?v=4" width="48px;" alt=""/><br /><sub><b>C123R</b></sub></a><br /></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/madepolli"><img src="https://avatars1.githubusercontent.com/u/7237000?v=4" width="48px;" alt=""/><br /><sub><b>Matjaž Depolli</b></sub></a><br /></td>
<td align="center"><a href="https://blog.schoentoon.blue"><img src="https://avatars1.githubusercontent.com/u/417618?v=4" width="48px;" alt=""/><br /><sub><b>Toon Schoenmakers</b></sub></a><br /></td>
<td align="center"><a href="http://tdhttt.com"><img src="https://avatars2.githubusercontent.com/u/24703459?v=4" width="48px;" alt=""/><br /><sub><b>TDHTTTT</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/jottr"><img src="https://avatars0.githubusercontent.com/u/2744198?v=4" width="48px;" alt=""/><br /><sub><b>jottr</b></sub></a><br /></td>
<td align="center"><a href="https://www.linkedin.com/in/nikolay-mateev-79187b167/"><img src="https://avatars3.githubusercontent.com/u/15074116?v=4" width="48px;" alt=""/><br /><sub><b>Nikolay Mateev</b></sub></a><br /></td>
<td align="center"><a href="https://charliewang.io"><img src="https://avatars1.githubusercontent.com/u/1320418?v=4" width="48px;" alt=""/><br /><sub><b>Charlie Wang</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/liyiheng"><img src="https://avatars3.githubusercontent.com/u/16461061?v=4" width="48px;" alt=""/><br /><sub><b>liyiheng</b></sub></a><br /></td>
</tr>
<tr>
<td align="center"><a href="https://bjoern.svbtle.com"><img src="https://avatars1.githubusercontent.com/u/1467156?v=4" width="48px;" alt=""/><br /><sub><b>Bjoern Weidlich</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/firecat53"><img src="https://avatars1.githubusercontent.com/u/568113?v=4" width="48px;" alt=""/><br /><sub><b>Scott Hansen</b></sub></a><br /></td>
<td align="center"><a href="https://davidsbond.github.io"><img src="https://avatars3.githubusercontent.com/u/6227720?v=4" width="48px;" alt=""/><br /><sub><b>David Bond</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/yesnault"><img src="https://avatars3.githubusercontent.com/u/395454?v=4" width="48px;" alt=""/><br /><sub><b>Yvonnick Esnault</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/leterio"><img src="https://avatars0.githubusercontent.com/u/15060358?v=4" width="48px;" alt=""/><br /><sub><b>Vinícius Letério</b></sub></a><br /></td>
<td align="center"><a href="https://adriano.fyi"><img src="https://avatars3.githubusercontent.com/u/3331648?v=4" width="48px;" alt=""/><br /><sub><b>Adriano</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/jonhadfield"><img src="https://avatars1.githubusercontent.com/u/843944?v=4" width="48px;" alt=""/><br /><sub><b>Jon Hadfield</b></sub></a><br /></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/Tdnshah"><img src="https://avatars2.githubusercontent.com/u/13272752?v=4" width="48px;" alt=""/><br /><sub><b>Tejas Shah</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/mogensen"><img src="https://avatars2.githubusercontent.com/u/592710?v=4" width="48px;" alt=""/><br /><sub><b>Frederik Mogensen</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/rsaarelm"><img src="https://avatars1.githubusercontent.com/u/41840?v=4" width="48px;" alt=""/><br /><sub><b>Risto Saarelma</b></sub></a><br /></td>
<td align="center"><a href="https://sam-github.github.io/"><img src="https://avatars2.githubusercontent.com/u/17607?v=4" width="48px;" alt=""/><br /><sub><b>Sam Roberts</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/gerchardon"><img src="https://avatars0.githubusercontent.com/u/5973160?v=4" width="48px;" alt=""/><br /><sub><b>gerchardon</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/mryanmurphy"><img src="https://avatars2.githubusercontent.com/u/641427?v=4" width="48px;" alt=""/><br /><sub><b>Matt</b></sub></a><br /></td>
<td align="center"><a href="http://devco.net/"><img src="https://avatars0.githubusercontent.com/u/82342?v=4" width="48px;" alt=""/><br /><sub><b>R.I.Pienaar</b></sub></a><br /></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/fmotrifork"><img src="https://avatars3.githubusercontent.com/u/18327738?v=4" width="48px;" alt=""/><br /><sub><b>Frederik Mogensen</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/aeter"><img src="https://avatars0.githubusercontent.com/u/238607?v=4" width="48px;" alt=""/><br /><sub><b>aeter</b></sub></a><br /></td>
<td align="center"><a href="http://timhwang21.gitbook.io"><img src="https://avatars3.githubusercontent.com/u/5831434?v=4" width="48px;" alt=""/><br /><sub><b>Tim Hwang</b></sub></a><br /></td>
<td align="center"><a href="http://about.me/yingfan"><img src="https://avatars1.githubusercontent.com/u/10404961?v=4" width="48px;" alt=""/><br /><sub><b>Ying Fan Chong</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/MartinJohns"><img src="https://avatars1.githubusercontent.com/u/5269069?v=4" width="48px;" alt=""/><br /><sub><b>Martin Johns</b></sub></a><br /></td>
<td align="center"><a href="https://www.jvt.me"><img src="https://avatars0.githubusercontent.com/u/3315059?v=4" width="48px;" alt=""/><br /><sub><b>Jamie Tanna</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/trimble"><img src="https://avatars3.githubusercontent.com/u/371317?v=4" width="48px;" alt=""/><br /><sub><b>Todd Trimble</b></sub></a><br /></td>
</tr>
<tr>
<td align="center"><a href="https://www.mitchellhanberg.com"><img src="https://avatars2.githubusercontent.com/u/5523984?v=4" width="48px;" alt=""/><br /><sub><b>Mitchell Hanberg</b></sub></a><br /></td>
<td align="center"><a href="https://franga2000.com"><img src="https://avatars3.githubusercontent.com/u/3891092?v=4" width="48px;" alt=""/><br /><sub><b>Miha Frangež</b></sub></a><br /></td>
<td align="center"><a href="https://blog.sahilister.in/"><img src="https://avatars0.githubusercontent.com/u/52946452?v=4" width="48px;" alt=""/><br /><sub><b>Sahil Dhiman</b></sub></a><br /></td>
<td align="center"><a href="https://pzoo.netlify.app/"><img src="https://avatars2.githubusercontent.com/u/17727004?v=4" width="48px;" alt=""/><br /><sub><b>Pingzhou &#124; 平舟</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/YuviGold"><img src="https://avatars0.githubusercontent.com/u/29873449?v=4" width="48px;" alt=""/><br /><sub><b>Yuval Goldberg</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/dabcoder"><img src="https://avatars3.githubusercontent.com/u/5034531?v=4" width="48px;" alt=""/><br /><sub><b>David Bouchare</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/stone"><img src="https://avatars3.githubusercontent.com/u/29077?v=4" width="48px;" alt=""/><br /><sub><b>Fredrik Steen</b></sub></a><br /></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/zye1996"><img src="https://avatars2.githubusercontent.com/u/28901953?v=4" width="48px;" alt=""/><br /><sub><b>zye1996</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/pgaxatte"><img src="https://avatars.githubusercontent.com/u/30696904?v=4" width="48px;" alt=""/><br /><sub><b>Pierre Gaxatte</b></sub></a><br /></td>
<td align="center"><a href="https://xntrik.wtf"><img src="https://avatars.githubusercontent.com/u/678260?v=4" width="48px;" alt=""/><br /><sub><b>Christian Frichot</b></sub></a><br /></td>
<td align="center"><a href="https://lukas-kaemmerling.de"><img src="https://avatars.githubusercontent.com/u/4281581?v=4" width="48px;" alt=""/><br /><sub><b>Lukas Kämmerling</b></sub></a><br /></td>
<td align="center"><a href="https://inetant.net/"><img src="https://avatars.githubusercontent.com/u/1765366?v=4" width="48px;" alt=""/><br /><sub><b>Antoine Meillet</b></sub></a><br /></td>
<td align="center"><a href="https://www.patreon.com/cclauss"><img src="https://avatars.githubusercontent.com/u/3709715?v=4" width="48px;" alt=""/><br /><sub><b>Christian Clauss</b></sub></a><br /></td>
</tr>
</table>
Thanks go to these wonderful people for contributing back to this
project:
<!-- markdownlint-enable -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore -->
| [<img src="https://avatars0.githubusercontent.com/u/6413?v=4" width="48px;"/><br /><sub><b>Chris Cummer</b></sub>](https://twitter.com/senorprogrammer)<br /> | [<img src="https://avatars2.githubusercontent.com/u/3252403?v=4" width="48px;"/><br /><sub><b>Anand Sudhir Prayaga</b></sub>](https://github.com/anandsudhir)<br /> | [<img src="https://avatars1.githubusercontent.com/u/34973359?v=4" width="48px;"/><br /><sub><b>Hossein Mehrabi</b></sub>](https://github.com/jeangovil)<br /> | [<img src="https://avatars0.githubusercontent.com/u/11779018?v=4" width="48px;"/><br /><sub><b>FengYa</b></sub>](https://github.com/Fengyalv)<br /> | [<img src="https://avatars2.githubusercontent.com/u/17337753?v=4" width="48px;"/><br /><sub><b>deltax</b></sub>](https://fluxionnetwork.github.io/fluxion/)<br /> | [<img src="https://avatars0.githubusercontent.com/u/1319630?v=4" width="48px;"/><br /><sub><b>Bill Keenan</b></sub>](https://github.com/BillKeenan)<br /> |
| :---: | :---: | :---: | :---: | :---: | :---: |
| [<img src="https://avatars2.githubusercontent.com/u/118081?v=4" width="48px;"/><br /><sub><b>June S</b></sub>](http://blog.sapara.com)<br /> | [<img src="https://avatars3.githubusercontent.com/u/16461061?v=4" width="48px;"/><br /><sub><b>liyiheng</b></sub>](https://github.com/XanthusL)<br /> | [<img src="https://avatars2.githubusercontent.com/u/9014288?v=4" width="48px;"/><br /><sub><b>baustinanki</b></sub>](https://github.com/baustinanki)<br /> | [<img src="https://avatars0.githubusercontent.com/u/371475?v=4" width="48px;"/><br /><sub><b>lucus lee</b></sub>](https://github.com/lixin9311)<br /> | [<img src="https://avatars1.githubusercontent.com/u/7537841?v=4" width="48px;"/><br /><sub><b>Mike Lloyd</b></sub>](https://github.com/mxplusb)<br /> | [<img src="https://avatars3.githubusercontent.com/u/10998?v=4" width="48px;"/><br /><sub><b>Sergio Rubio</b></sub>](http://rubiojr.rbel.co)<br /> |
| [<img src="https://avatars3.githubusercontent.com/u/17374492?v=4" width="48px;"/><br /><sub><b>Farhad Farahi</b></sub>](https://github.com/FarhadF)<br /> | [<img src="https://avatars1.githubusercontent.com/u/634604?v=4" width="48px;"/><br /><sub><b>Lasantha Kularatne</b></sub>](http://lasantha.blogspot.com/)<br /> | [<img src="https://avatars1.githubusercontent.com/u/823331?v=4" width="48px;"/><br /><sub><b>Mark Old</b></sub>](https://github.com/dlom)<br /> | [<img src="https://avatars0.githubusercontent.com/u/5546718?v=4" width="48px;"/><br /><sub><b>flw</b></sub>](http://flw.tools/)<br /> | [<img src="https://avatars0.githubusercontent.com/u/6024927?v=4" width="48px;"/><br /><sub><b>David Barda</b></sub>](https://github.com/davebarda)<br /> | [<img src="https://avatars2.githubusercontent.com/u/4261980?v=4" width="48px;"/><br /><sub><b>Geoff Lee</b></sub>](https://github.com/matrinox)<br /> |
| [<img src="https://avatars3.githubusercontent.com/u/1022918?v=4" width="48px;"/><br /><sub><b>George Opritescu</b></sub>](http://international.github.io)<br /> | [<img src="https://avatars3.githubusercontent.com/u/497310?v=4" width="48px;"/><br /><sub><b>Grazfather</b></sub>](https://twitter.com/Grazfather)<br /> | [<img src="https://avatars2.githubusercontent.com/u/1691120?v=4" width="48px;"/><br /><sub><b>Michael Cordell</b></sub>](http://www.mikecordell.com/)<br /> | [<img src="https://avatars2.githubusercontent.com/u/1215497?v=4" width="48px;"/><br /><sub><b>Patrick José Pereira</b></sub>](http://patrick.ibexcps.com)<br /> | [<img src="https://avatars2.githubusercontent.com/u/1483092?v=4" width="48px;"/><br /><sub><b>sherod taylor</b></sub>](https://github.com/sherodtaylor)<br /> | [<img src="https://avatars2.githubusercontent.com/u/3062663?v=4" width="48px;"/><br /><sub><b>Andrew Scott</b></sub>](http://cogentia.io)<br /> |
| [<img src="https://avatars1.githubusercontent.com/u/12018440?v=4" width="48px;"/><br /><sub><b>Lassi Piironen</b></sub>](https://github.com/lsipii)<br /> | [<img src="https://avatars0.githubusercontent.com/u/14799210?v=4" width="48px;"/><br /><sub><b>BlackWebWolf</b></sub>](https://github.com/BlackWebWolf)<br /> | [<img src="https://avatars0.githubusercontent.com/u/1894885?v=4" width="48px;"/><br /><sub><b>andrewzolotukhin</b></sub>](https://github.com/andrewzolotukhin)<br /> | [<img src="https://avatars1.githubusercontent.com/u/8568280?v=4" width="48px;"/><br /><sub><b>Leon Stigter</b></sub>](https://retgits.github.io)<br /> | [<img src="https://avatars3.githubusercontent.com/u/21756?v=4" width="48px;"/><br /><sub><b>Amr Tamimi</b></sub>](https://tamimi.se)<br /> | [<img src="https://avatars3.githubusercontent.com/u/3717137?v=4" width="48px;"/><br /><sub><b>Jagdeep Singh</b></sub>](https://jagdeep.me)<br /> |
| [<img src="https://avatars0.githubusercontent.com/u/889171?v=4" width="48px;"/><br /><sub><b>Lineu Felipe</b></sub>](https://github.com/darkSasori)<br /> | [<img src="https://avatars2.githubusercontent.com/u/159124?v=4" width="48px;"/><br /><sub><b>Konstantin</b></sub>](https://github.com/kvj)<br /> | [<img src="https://avatars2.githubusercontent.com/u/6044920?v=4" width="48px;"/><br /><sub><b>Brendan O'Leary</b></sub>](http://www.brendanoleary.com)<br /> | [<img src="https://avatars2.githubusercontent.com/u/1226441?v=4" width="48px;"/><br /><sub><b>bertl4398</b></sub>](https://github.com/bertl4398)<br /> | [<img src="https://avatars2.githubusercontent.com/u/6553695?v=4" width="48px;"/><br /><sub><b>Ferenc-</b></sub>](https://github.com/Ferenc-)<br /> | [<img src="https://avatars1.githubusercontent.com/u/952036?v=4" width="48px;"/><br /><sub><b>Rohan Verma</b></sub>](http://rohanverma.net)<br /> |
| [<img src="https://avatars1.githubusercontent.com/u/19293566?v=4" width="48px;"/><br /><sub><b>Tim Fitzgerald</b></sub>](https://github.com/fimtitzgerald)<br /> | [<img src="https://avatars2.githubusercontent.com/u/1081051?v=4" width="48px;"/><br /><sub><b>Federico Ruggi</b></sub>](https://github.com/ruggi)<br /> | [<img src="https://avatars2.githubusercontent.com/u/7293328?v=4" width="48px;"/><br /><sub><b>Craig Woodward</b></sub>](https://github.com/ctwoodward)<br /> | [<img src="https://avatars3.githubusercontent.com/u/15367484?v=4" width="48px;"/><br /><sub><b>ReadmeCritic</b></sub>](https://twitter.com/ReadmeCritic)<br /> | [<img src="https://avatars0.githubusercontent.com/u/141402?v=4" width="48px;"/><br /><sub><b>Eugene</b></sub>](https://github.com/jdevelop)<br /> | [<img src="https://avatars1.githubusercontent.com/u/12983705?s=460&v=4" width="48px;"/><br /><sub><b>Kenny Wu</b></sub>](https://github.com/Trinergy)<br /> |
| [<img src="https://avatars0.githubusercontent.com/u/538234?v=4" width="48px;"/><br /><sub><b>Renán Romero</b></sub>](http://www.romeroruiz.com)<br /> |
<!-- ALL-CONTRIBUTORS-LIST:END -->
## Acknowledgments
@ -437,8 +73,9 @@ Dependency management in WTF is handled by [Go modules](https://github.com/golan
The inspiration for `WTF` came from Monica Dinculescu's
[tiny-care-terminal](https://github.com/notwaldorf/tiny-care-terminal).
WTF is built atop [tcell](https://github.com/gdamore/tcell) and [tview](https://github.com/rivo/tview), fantastic projects both. WTF is built, packaged, and deployed via [GoReleaser](https://goreleaser.com).
Many thanks to <a href="https://lendesk.com">Lendesk</a> for supporting this project by
providing time to develop it.
<p align="center">
<img src="./images/dude_wtf.png?raw=true" title="Dude WTF" width="251" height="201" />
<img src="./docs/img/dude_wtf.png?raw=true" title="Dude WTF" width="251" height="201" />
</p>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 KiB

View File

@ -14,8 +14,9 @@ wtf:
graphIcon: "💀"
graphStars: 25
position:
top: 1
top: 2
left: 0
height: 2
width: 2
refreshInterval: 30
refreshInterval: 30
updateInterval: 15

View File

@ -0,0 +1,236 @@
wtf:
colors:
background: gray
border:
focusable: darkslateblue
focused: orange
normal: gray
grid:
# How _wide_ the columns are, in terminal characters. In this case we have
# five columns, each of which are 37 characters wide
columns: [37, 37, 37, 37, 37]
# How _high_ the rows are, in terminal lines. In this case we have five rows
# that support ten line of text, and one of four
rows: [10, 10, 10, 10, 10, 4]
refreshInterval: 1
mods:
bamboohr:
enabled: true
position:
top: 0
left: 0
height: 2
width: 1
refreshInterval: 900
clocks:
colors:
rows:
even: "lightblue"
odd: "white"
enabled: true
locations:
# From https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
Avignon: "Europe/Paris"
Barcelona: "Europe/Madrid"
Dubai: "Asia/Dubai"
UTC: "Etc/UTC"
Vancouver: "America/Vancouver"
Toronto: "America/Toronto"
position:
top: 3
left: 1
height: 1
width: 1
refreshInterval: 15
# Valid options are: alphabetical, chronological
sort: "alphabetical"
cmdrunner:
args: ["-g", "batt"]
cmd: "pmset"
enabled: true
position:
top: 6
left: 2
height: 1
width: 2
refreshInterval: 30
gcal:
colors:
title: "red"
description: "lightblue"
highlights:
- ['1on1|1\/11', 'green']
- ['apple|google|aws', 'blue']
- ['interview|meet\ ', 'lightseagreen']
- ['lunch', 'yellow']
past: "gray"
conflictIcon: "🚨"
currentIcon: "💥"
displayResponseStatus: true
email: "your.email@example.com"
enabled: true
eventCount: 12
position:
top: 0
left: 0
height: 4
width: 1
refreshInterval: 300
secretFile: "~/.config/wtf/gcal/client_secret.json"
withLocation: true
gspreadsheets:
colors:
values: "green"
cells:
names:
- "Cell 1 name"
- "Cell 2 name"
addresses:
- "A1"
- "A2"
enabled: true
position:
top: 0
left: 0
width: 1
height: 1
refreshInterval: "300"
secretFile: "~/.config/wtf/gspreadsheets/client_secret.json"
sheetId: "id_of_google_spreadsheet"
git:
commitCount: 5
enabled: true
position:
top: 0
left: 2
height: 2
width: 3
refreshInterval: 8
repositories:
- "/Users/chris/go/src/github.com/senorprogrammer/wtf"
github:
enabled: true
position:
top: 2
left: 2
height: 2
width: 3
refreshInterval: 300
repositories:
repo-name: "owner id"
wtf: "senorprogrammer"
username: "senorprogrammer"
jira:
colors:
rows:
even: "lightblue"
odd: "white"
domain: "https://company.atlassian.net"
enabled: true
position:
top: 1
left: 1
height: 1
width: 1
project: "WTF"
refreshInterval: 900
username: "chris.cummer"
newrelic:
applicationId: 10594735
enabled: true
deployCount: 10
position:
top: 4
left: 2
height: 2
width: 3
refreshInterval: 900
opsgenie:
displayEmpty: true
enabled: true
position:
top: 2
left: 0
height: 2
width: 1
refreshInterval: 21600
power:
enabled: true
position:
top: 5
left: 0
height: 2
width: 1
refreshInterval: 15
security:
enabled: true
position:
top: 4
left: 0
height: 2
width: 1
refreshInterval: 3600
status:
enabled: false
position:
top: 5
left: 0
height: 1
width: 1
refreshInterval: 1
system:
enabled: true
position:
top: 5
left: 1
height: 2
width: 1
refreshInterval: 3600
todo:
checkedIcon: "X"
colors:
checked: gray
highlight:
fore: "black"
back: "orange"
enabled: true
filename: "todo.yml"
position:
top: 0
left: 1
height: 2
width: 1
refreshInterval: 3600
weather:
apiKey: [YOUR API KEY]
# From http://openweathermap.org/help/city_list.txt
cityids:
- 3370352
- 1283240
WTF_OWM_API_KEY: [YOUR API KEY]
colors:
current: "lightblue"
enabled: true
language: "EN"
position:
top: 2
left: 1
height: 1
width: 1
refreshInterval: 90
tempUnit: "C"
blockfolio:
enabled: true
displayHoldings: true
refreshInterval: 400
device_token: "device token here, you can find how to get it here https://github.com/bob6664569/blockfolio-api-client"
colors:
name: blue
grows: green
drop: red
position:
top: 3
left: 1
width: 1
height: 1

View File

@ -1,21 +0,0 @@
wtf:
mods:
battery:
type: power
title: "⚡️"
enabled: true
position:
top: 0
left: 0
height: 1
width: 1
refreshInterval: 15
security_info:
type: security
enabled: true
position:
top: 0
left: 1
height: 1
width: 1
refreshInterval: 3600

Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 KiB

View File

@ -1,21 +0,0 @@
wtf:
colors:
border:
focusable: darkslateblue
focused: orange
normal: gray
grid:
columns: [32, 32, 32, 32, 32, 32]
rows: [10, 10, 10, 10, 10, 10]
refreshInterval: 2
mods:
kubernetes:
enabled: true
kubeconfig: /Users/testuser/.kube/config
namespaces: ["demo", "kube-system"]
objects: ["nodes","deployments", "pods"]
position:
top: 0
left: 0
height: 6
width: 3

Binary file not shown.

Before

Width:  |  Height:  |  Size: 891 KiB

View File

@ -1,180 +0,0 @@
wtf:
colors:
background: black
border:
focusable: darkslateblue
focused: orange
normal: gray
checked: yellow
highlight:
fore: black
back: gray
rows:
even: yellow
odd: white
grid:
# How _wide_ the columns are, in terminal characters. In this case we have
# four columns, each of which are 35 characters wide.
columns: [35, 35, 35, 35]
# How _high_ the rows are, in terminal lines. In this case we have four rows
# that support ten line of text and one of four.
rows: [10, 10, 10, 10, 4]
refreshInterval: 1
openFileUtil: "open"
mods:
# You can have multiple widgets of the same type.
# The "key" is the name of the widget and the type is the actual
# widget you want to implement.
europe_time:
title: "Europe"
type: clocks
colors:
rows:
even: "lightblue"
odd: "white"
enabled: true
locations:
GMT: "Etc/GMT"
Amsterdam: "Europe/Amsterdam"
Berlin: "Europe/Berlin"
Barcelona: "Europe/Madrid"
Copenhagen: "Europe/Copenhagen"
London: "Europe/London"
Rome: "Europe/Rome"
Stockholm: "Europe/Stockholm"
position:
top: 0
left: 0
height: 1
width: 1
refreshInterval: 15
sort: "alphabetical"
americas_time:
title: "Americas"
type: clocks
colors:
rows:
even: "lightblue"
odd: "white"
enabled: true
locations:
UTC: "Etc/UTC"
Vancouver: "America/Vancouver"
New_York: "America/New_York"
Sao_Paulo: "America/Sao_Paulo"
Denver: "America/Denver"
Iqaluit: "America/Iqaluit"
Bahamas: "America/Nassau"
Chicago: "America/Chicago"
position:
top: 0
left: 1
height: 1
width: 1
refreshInterval: 15
sort: "alphabetical"
battery:
type: power
title: "⚡️"
enabled: true
position:
top: 1
left: 3
height: 1
width: 1
refreshInterval: 15
todolist:
type: todo
checkedIcon: "X"
colors:
checked: gray
highlight:
fore: "black"
back: "orange"
enabled: true
filename: "todo.yml"
position:
top: 1
left: 0
height: 2
width: 1
refreshInterval: 3600
ip:
type: ipinfo
title: "My IP"
colors:
name: "lightblue"
value: "white"
enabled: true
position:
top: 0
left: 2
height: 1
width: 2
refreshInterval: 150
security_info:
type: security
title: "Staying safe"
enabled: true
position:
top: 1
left: 2
height: 1
width: 1
refreshInterval: 3600
readme:
type: textfile
enabled: true
filePaths:
- "~/.config/wtf/config.yml"
format: true
formatStyle: "monokai"
position:
top: 1
left: 1
height: 1
width: 1
refreshInterval: 15
news:
type: hackernews
title: "HackerNews"
enabled: true
numberOfStories: 10
position:
top: 2
left: 1
height: 1
width: 3
storyType: top
refreshInterval: 900
resources:
type: resourceusage
enabled: true
position:
top: 3
left: 0
height: 2
width: 1
refreshInterval: 1
uptime:
type: cmdrunner
args: [""]
cmd: "uptime"
enabled: true
position:
top: 4
left: 1
height: 1
width: 3
refreshInterval: 30
disks:
type: cmdrunner
cmd: "df"
args: ["-h"]
enabled: true
position:
top: 3
left: 1
height: 1
width: 3
refreshInterval: 3600

View File

@ -0,0 +1,65 @@
wtf:
colors:
#background: gray
border:
focusable: darkslateblue
focused: orange
normal: gray
grid:
columns: [40, 40]
rows: [13, 13, 4]
refreshInterval: 1
mods:
clocks:
colors:
rows:
even: "lightblue"
odd: "white"
enabled: true
locations:
Avignon: "Europe/Paris"
Barcelona: "Europe/Madrid"
Dubai: "Asia/Dubai"
UTC: "Etc/UTC"
Vancouver: "America/Vancouver"
Toronto: "America/Toronto"
position:
top: 0
left: 0
height: 1
width: 1
refreshInterval: 15
sort: "alphabetical"
security:
enabled: true
position:
top: 1
left: 0
height: 1
width: 1
refreshInterval: 3600
status:
enabled: true
position:
top: 2
left: 0
height: 1
width: 2
refreshInterval: 1
system:
enabled: true
position:
top: 0
left: 1
height: 1
width: 1
refreshInterval: 3600
textfile:
enabled: true
filePath: "~/.config/wtf/config.yml"
position:
top: 1
left: 1
height: 1
width: 1
refreshInterval: 15

View File

@ -1,17 +0,0 @@
wtf:
grid:
columns: [20, 20]
rows: [3, 3]
refreshInterval: 1
mods:
uptime:
type: cmdrunner
args: [""]
cmd: "uptime"
enabled: true
position:
top: 0
left: 0
height: 1
width: 1
refreshInterval: 30

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 KiB

View File

@ -1,42 +0,0 @@
wtf:
colors:
background: black
border:
focusable: darkslateblue
grid:
columns: [40, 40]
rows: [16]
refreshInterval: 1
mods:
americas_time:
title: "Americas"
type: clocks
enabled: true
locations:
UTC: "Etc/UTC"
Vancouver: "America/Vancouver"
New_York: "America/New_York"
Sao_Paolo: "America/Sao_Paulo"
Denver: "America/Denver"
Iqaluit: "America/Iqaluit"
Bahamas: "America/Nassau"
Chicago: "America/Chicago"
position:
top: 0
left: 0
height: 1
width: 1
refreshInterval: 15
sort: "chronological"
textfile:
enabled: true
filePaths:
- "~/.config/wtf/config.yml"
format: true
formatStyle: "vim"
position:
top: 0
left: 1
height: 1
width: 1
refreshInterval: 15

View File

@ -0,0 +1,6 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

59
_site/config.toml vendored Normal file
View File

@ -0,0 +1,59 @@
baseURL = "https://wtfutil.com/"
defaultContentLanguage = "en"
defaultContentLanguageInSubdir= false
enableMissingTranslationPlaceholders = false
languageCode = "en-us"
publishDir = "../docs"
pygmentsCodeFences = true
pygmentsUseClasses = true
pygmentsStyle = "monokailight"
theme = "docdock"
title = "WTF - the terminal dashboard"
# [Languages]
# [Languages.en]
# title = "Documentation for WTF"
# weight = 1
# languageName = "English"
#
# [Languages.fr]
# title = "Documentation du WTF"
# weight = 2
# languageName = "Français"
[params]
editURL = "https://github.com/vjeantet/hugo-theme-docdock/edit/master/exampleSite/content/"
showVisitedLinks = true # default is false
themeStyle = "flex" # "original" or "flex" # default "flex"
themeVariant = "" # choose theme variant "green", "gold" , "gray", "blue" (default)
ordersectionsby = "weight" # ordersectionsby = "title"
disableHomeIcon = false # default is false
disableSearch = false # default is false
disableNavChevron = false # set true to hide next/prev chevron, default is false
highlightClientSide = false # set true to use highlight.pack.js instead of the default hugo chroma highlighter
menushortcutsnewtab = false # set true to open shortcuts links to a new tab/window
enableGitInfo = true
[outputs]
home = [ "HTML", "RSS", "JSON"]
[[menu.shortcuts]]
pre = "<h3>More</h3>"
name = "<i class='fa fa-github'></i> <label>WTF on Github</label>"
identifier = "ds"
url = "https://github.com/senorprogrammer/wtf"
weight = 10
[[menu.shortcuts]]
name = "<i class='fa fa-cloud-download'></i> <label>Download WTF</label>"
url = "https://github.com/senorprogrammer/wtf/releases"
weight = 11
[[menu.shortcuts]]
name = "<i class='fa fa-bullhorn'></i> <label>Credits</label>"
url = "https://github.com/senorprogrammer/wtf/blob/master/README.md#contributors"
weight = 30

12
_site/config.toml-orig vendored Normal file
View File

@ -0,0 +1,12 @@
baseURL = "https://wtfutil.com/"
languageCode = "en-us"
publishDir = "../docs"
pygmentsCodeFences = true
pygmentsUseClasses = true
sectionPagesMenu = "main"
theme = "hyde-hyde"
title = "WTF - A Terminal Dashboard"
[params]
author = "Chris Cummer"
authorimage = "/img/wtf.png"

0
_site/content/_footer.md Normal file
View File

20
_site/content/_index.md Normal file
View File

@ -0,0 +1,20 @@
---
title: "WTF"
date: 2018-08-14T01:51:58-07:00
draft: false
weight: 0
---
<h1><span style="font-family: monospace; font-weight: heavy;">WTF</span></h1>
<img src='/imgs/screenshot.jpg' width="900" height="524" />
<span style="font-family: monospace; font-size: 1.6em;">WTF</span> is a personal information dashboard for your terminal, developed for those who spend most of their day in the command line.
It allows you to monitor systems, services, and important information that you otherwise might keep browser tabs open for, the kinds of things you don't always need visible, but do check in on every now and then.
Keep an eye on your **OpsGenie** schedules, **Google Calendar**, **Git** and **GitHub** repositories, and **New Relic** deployments.
See who's away in **BambooHR**, which **Jira** tickets are assigned to you, and what time it is in Barcelona.
It even has weather. And clocks. And emoji.

View File

@ -0,0 +1,79 @@
---
title: "Configuration"
date: 2018-04-15T21:17:16-07:00
draft: false
weight: 5
---
## Index
* [Configuration Files](#configuration-files)
* [Example Configuration Files](#example-configuration-files)
* [Custom Configuration Files](#custom-configuration-files)
* [Configuration Attributes](#configuration-attributes)
* [Grid Layout](#grid-layout)
## Configuration Files
By default WTF looks in a `~/.config/wtf/` directory for a YAML file called
`config.yml`. If the `~/.config/wtf/` directory doesn't exist, WTF will create that directory
on start-up, and then display instructions for creating a new
configuration file.
In other words, WTF expects to have a YAML config file at: `~/.config/wtf/config.yml`.
#### Example Configuration Files
A couple of example config files are provided in the `_sample_configs/`
directory of the Git repository.
To try out WTF quickly, copy
`simple_config.yml` into `~/.config/wtf/` as `config.yml` and relaunch WTF. You
should see the app launch and display the <a href="/posts/modules/security/">Security</a>,
<a href="/posts/modules/clocks/">Clocks</a> and <a href="/posts/modules/status/">Status</a> widgets onscreen.
#### Custom Configuration Files
To try out different configurations (or run multiple instances of WTF),
you can pass the path to a config file via command line arguments on
start-up.
To load a custom configuration file (ie: one that's not
`~/.config/wtf/config.yml`), pass in the path to configuration file as a
parameter on launch:
```bash
$> wtf --config=path/to/custom/config.yml
```
#### Configuration Attributes
A number of top-level attributes can be set to customize your WTF
install. See <a href="/posts/configuration/attributes/">Attributes</a> for details.
## Grid Layout
WTF uses the `Grid` layout system from [tview](https://github.com/rivo/tview/blob/master/grid.go) to position widgets
onscreen. It's not immediately obvious how this works, so here's an
explanation:
Think of your terminal screen as a matrix of letter positions, say `100` chrs wide and `58` chrs tall.
Columns breaks up the width of the screen into chunks, each chunk a specified number of characters wide. use
`[10, 10, 10, 10, 10, 10, 10, 10, 10, 10]`
Ten columns that are ten characters wide
Rows break up the height of the screen into chunks, each chunk a specified number of characters tall. If we wanted to have five rows:
`[10, 10, 10, 10, 18]`
The co-ordinate system starts at top-left and defines how wide and tall a widget is. If we wanted to put a 2-col, 2-row widget in the bottom of the screen, we'd position it at:
```
top: 4 // top starts in the 4th row
left: 9 // left starts in the 9th column
height: 2 // span down rows 4 & 5 (18 characters in size, total)
width: 2 // span across cols 9 & 10 (20 characters in size, total)
```

View File

@ -0,0 +1,85 @@
---
title: "Attributes"
date: 2018-05-16T21:51:23-07:00
draft: false
weight: 5
---
The following top-level attributes are configurable in `config.yml`.
See this <a href="https://github.com/senorprogrammer/wtf/blob/master/_sample_configs/simple_config.yml">example config file</a> for more details.
```yaml
wtf:
colors:
background: "red"
border:
focusable: "darkslateblue"
focused: "orange"
normal: "gray"
grid:
# How _wide_ the columns are, in terminal characters. In this case we have
# six columns, each of which are 35 characters wide
columns: [35, 35, 35, 35, 35, 35]
# How _high_ the rows are, in terminal lines. In this case we have five rows
# that support ten line of text, one of three lines, and one of four
rows: [10, 10, 10, 10, 10, 3, 4]
openFileUtil: open # the name of the utility to call to open files
refreshInterval: 1 # the app refreshes once per second
term: "xterm-256color"
```
### Attributes
`colors.background` <br />
The color to draw the background of the app in. Use this to match your
terminal colors. May be over-written by individual module
configurations. <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11
color name</a>.
`colors.border.focusable` <br />
The color in which to draw the border of widgets that can accept
keyboard focus. <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11
color name</a>.
`colors.border.focused` <br />
The color in which to draw the border of the widget that currently has
keyboard focus. <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11
color name</a>.
`colors.border.normal` <br />
The color in which to draw the borders of the widgets that cannot accept
focus. <br/>
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11
color name</a>.
`grid.columns` <br />
An array that defines the widths of all the columns. <br />
Values: See <a href="https://github.com/rivo/tview/wiki/Grid">tview's
Grid</a> for details.
`grid.rows` <br />
An array that defines the heights of all the rows. <br />
Values: See <a href="https://github.com/rivo/tview/wiki/Grid">tview's
Grid</a> for details.
`openFileUtil` <br />
Command to use to open a file or URL
`refreshInterval` <br />
How often, in seconds, the UI refreshes itself. <br />
**Note:** This implementation is probably wrong and buggy and likely to
change. <br />
Values: A positive integer, `0..n`.
`term` <br />
_Optional_. <br />
Sets a custom value for the terminal type this app runs in. Leave this entry out of the config if you simply want to use your terminal's
default setting. <br />
**Note:** If an invalid value is provided for this setting, the app will
crash with a `"terminal entry not found"` error. <br />
Values: Any valid terminal type (ie: vt100, xterm, xterm-256color, ansi,
etc.).

View File

@ -0,0 +1,28 @@
---
title: "iTerm2"
date: 2018-05-24T09:57:40-07:00
draft: false
weight: 10
---
Many terminal apps don't properly display multibyte emoji characters
properly. This **may** fix the issue for you in iTerm2, it also may not.
By default iTerm2 uses a unicode rendering format
that is not comletely compatible with some emoji characters. Instead what you'll
see is the emoji over-lapping normal text characters, or drawing outside
the bounds of where they should be.
In iTerm2 open:
```bash
Preferences -> Profiles -> Text
```
and check **on** the "Use Unicode Version 9 Widths" checkbox. Then
restart WTF.
<img src="/imgs/iterm2prefs.png" width="800" height="437" alt="iTerm2
Prefs" />
(*Note:* This issue is not unique to iTerm2. As of this writing it also
affects <a href="https://en.wikipedia.org/wiki/Terminal_(macOS)">Terminal</a>, and <a href="https://hyper.is">Hyper</a>.)

View File

@ -0,0 +1,46 @@
---
title: "Getting Started"
date: 2018-05-21T16:11:58-07:00
draft: false
weight: 1
---
## Quick Start
1. <a href="https://github.com/senorprogrammer/wtf/releases">Download</a> the stand-alone, compiled binary.
2. Unzip the downloaded file.
3. From the command line, `cd` into the newly-created `/wtf` directory.
4. From the command line, run the app: `./wtf`
This should launch the app in your terminal using the default simple
configuration. See <a href="/posts/configuration/">Configuration</a> for
more details.
## Command-line Options
`--config, -c` <br />
Allows you to define a custom config file to use. See <a href="/posts/configuration/">Configuration</a> for more details.
`--help, -h` <br />
Shows help information for the command-line arguments that WTF
takes.
`--module, -m` <br />
Shows help information for the specific named module, if that module
supports help text. <br />
Example: `wtf --module=todo`.
`--version, -v` <br />
Shows version info.
## Keyboard Commands
<span class="caption">Key:</span> `Ctrl-R` <br />
<span class="caption">Action:</span> Force-refresh the data for all modules.
<span class="caption">Key:</span> `Esc` <br />
<span class="caption">Action:</span> Unfocus the currently-focused
widget.
<span class="caption">Key:</span> `Tab` <br />
<span class="caption">Action:</span> Move between focusable modules (`Shift-Tab` to move backwards).

View File

@ -0,0 +1,17 @@
---
title: "Glossary"
date: 2018-04-17T12:34:51-07:00
draft: false
---
### Module
A discreet unit of data collection and display. A data interface
concept. A package inside the app.
Examples: New Relic, Git, Weather.
### Widget
The onscreen representation of a Module. The widget is responsible for
being the interface between the app and the data collection.
Widgets are defined by a required `widget.go` file in a Module.

View File

@ -0,0 +1,34 @@
---
title: "Installation"
date: 2018-05-18T09:59:40-07:00
draft: false
---
## As a Binary
Grab the latest version from here:
```bash
https://github.com/senorprogrammer/wtf/releases
```
expand it, and `cd` into the resulting directory. Then run:
```bash
./wtf
```
and that should also do it.
## From Source
Download the source code repo and install the dependencies:
```bash
go get -u github.com/senorprogrammer/wtf
cd $GOPATH/src/github.com/senorprogrammer/wtf
go install -ldflags="-s -w"
make run
```
and that should do it.

View File

@ -0,0 +1,21 @@
---
title: "Modules"
date: 2018-05-07T18:04:58-07:00
draft: false
weight: 10
---
The heart of WTF is the modules. A module is a discreet unit of
functionality that extracts data from some source and packages that data
for display.
For example, the <a href="/posts/modules/newrelic">New Relic</a> module
uses New Relic's API to retrieve a list of the latest deploys and
packages that information as a list for display in the "New Relic"
widget.
The <a href="/posts/modules/clocks">Clocks</a> module takes a list of
timezones and packages that information as a list of city/time pairs for
display in the "Clocks" widget.
See available modules at left.

View File

@ -0,0 +1,48 @@
---
title: "BambooHR"
date: 2018-05-07T20:17:37-07:00
draft: false
weight: 10
---
Connects to the BambooHR API and displays who will be Away today.
## Source Code
```bash
wtf/bamboohr/
```
## Configuration
```yaml
bamboohr:
apiKey: "3276d7155dd9ee27b8b14f8743a408a9"
enabled: true
position:
top: 0
left: 1
height: 2
width: 1
refreshInterval: 900
subdomain: "testco"
```
### Attributes
`apiKey` <br />
Value: Your <a href="https://www.bamboohr.com/api/documentation/">BambooHR API</a> token.
`enabled` <br />
Whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: Any positive integer, `0..n`.
`subdomain` <br />
Value: Your <a href="https://www.bamboohr.com/api/documentation/">BambooHR API</a> subdomain name.

View File

@ -0,0 +1,49 @@
---
title: "CircleCI"
date: 2018-06-10T19:26:08-04:00
draft: false
weight: 20
---
<img src="/imgs/modules/circleci.png" class="screenshot" width="609" height="150" alt="circleci screenshot" />
Added in `v0.0.7`.
Displays build information for your CircleCI account.
## Source Code
```bash
wtf/circleci/
```
## Configuration
```yaml
circleci:
apiKey: "3276d7155dd9ee27b8b14f8743a408a9"
enabled: true
position:
top: 4
left: 1
height: 1
width: 2
refreshInterval: 900
```
### Attributes
`apiKey` <br />
Value: Your <a href="https://circleci.com/account/api">CircleCI API</a> token.
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.

View File

@ -0,0 +1,79 @@
---
title: "Clocks"
date: 2018-05-07T19:47:31-07:00
draft: false
weight: 30
---
<img src="/imgs/modules/clocks.png" class="screenshot" width="320" height="191" alt="clocks screenshot" />
Displays a configurable list of world clocks, the local time, and date.
## Source Code
```bash
wtf/clocks/
```
## Configuration
```yaml
clocks:
colors:
rows:
even: "lightblue"
odd: "white"
enabled: true
locations:
# From https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
Avignon: "Europe/Paris"
Barcelona: "Europe/Madrid"
Dubai: "Asia/Dubai"
New York: "America/New York"
Toronto: "America/Toronto"
UTC: "Etc/UTC"
Vancouver: "America/Vancouver"
position:
top: 4
left: 0
height: 1
width: 1
refreshInterval: 15
# Valid options are: alphabetical, chronological
sort: "alphabetical"
```
### Attributes
`colors.rows.even` <br />
The foreground color for even-numbered rows. <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11
color name</a>.
`colors.rows.odd` <br />
The foreground color for the odd-numbered rows. <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11
color name</a>.
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`locations` <br />
Defines the timezones for the world clocks that you want to display.
`key` is a unique label that will be displayed in the UI. `value` is a
timezone name. <br />
Values: Any <a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones">TZ database timezone</a>.
`position` <br />
Defines where in the grid this module's widget will be displayed.
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.
`sort` <br />
Defines the display order of the clocks in the widget. <br />
Values: `alphabetical` or `chronological`. `alphabetical` will sort in
acending order by `key`, `chronological` will sort in ascending order by
date/time.

View File

@ -0,0 +1,53 @@
---
title: "CmdRunner"
date: 2018-05-17T17:17:10-07:00
draft: false
weight: 40
---
Runs a terminal command on a schedule.
## Source Code
```bash
wtf/cmdrunner/
```
## Configuration
```yaml
cmdrunner:
args: ["-g", "batt"]
cmd: "pmset"
enabled: true
position:
top: 6
left: 1
height: 1
width: 3
refreshInterval: 30
```
### Attributes
`args` <br />
The arguments to the command, with each item as an element in an array.
Example: for `curl -I cisco.com`, the arguments array would be `["-I", "cisco.com"]`.
`cmd` <br />
The terminal command to be run, withouth the arguments. Ie: `ping`,
`whoami`, `curl`. <br />
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`position` <br />
Defines where in the grid this module's widget will be displayed.
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.

View File

@ -0,0 +1,8 @@
---
title: "Crypo Currencies"
date: 2018-05-07T18:04:58-07:00
draft: false
weight: 50
---
For all modules cryptocurrency-related.

View File

@ -0,0 +1,80 @@
---
title: "Bittrex"
date: 2018-06-04T20:06:40-07:00
draft: false
weight: 5
---
<img class="screenshot" src="/imgs/modules/bittrex.png" width="320" height="412" alt="bittrex screenshot" />
Added in `v0.0.5`.
Get the last 24 hour summary of cryptocurrencies market using [Bittrex](https://bittrex.com).
## Source Code
```bash
wtf/cryptoexchanges/bittrex/
```
## Configuration
```yaml
bittrex:
enabled: true
position:
top: 1
left: 2
height: 3
width: 1
refreshInterval: 5
summary:
BTC:
displayName: Bitcoin
market:
- LTC
- ETH
colors:
base:
name: orange
displayName: red
market:
name: red
field: white
value: green
```
### Attributes
`colors.base.name` <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11
color name</a>.
`colors.base.dispayName` <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11
color name</a>.
`colors.market.name` <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11
color name</a>.
`colors.market.field` <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11
color name</a>.
`colors.market.value` <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11
color name</a>.
`summary` <br />
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.

View File

@ -0,0 +1,69 @@
---
title: "Blockfolio"
date: 2018-06-13T09:29:59-07:00
draft: false
weight: 10
---
<img class="screenshot" src="/imgs/modules/blockfolio.png" width="320" height="185" alt="blockfolio screenshot" />
Added in `v0.0.8`.
Display your Blockfolio crypto holdings.
## Source
```bash
wtf/blockfolio/
```
## Configuration
```yaml
blockfolio:
colors:
name: blue
grows: green
drop: red
device_token: "device token"
displayHoldings: true
enabled: true
position:
top: 3
left: 1
width: 1
height: 1
refreshInterval: 400
```
### Attributes
`colors.name` <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11
color name</a>.
`colors.grows` <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11
color name</a>.
`colors.drop` <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11
color name</a>.
`device_token` <br />
Value: See [this gist](https://github.com/bob6664569/blockfolio-api-client) for
details on how to get your Blockfolio API token.
`displayHoldings` <br />
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.

View File

@ -0,0 +1,99 @@
---
title: "CryptoLive"
date: 2018-06-03T20:06:40-07:00
draft: false
weight: 15
---
<img class="screenshot" src="/imgs/modules/cryptolive.png" width="320" height="203" alt="cryptolive screenshot" />
Added in `v0.0.5`.
Compare crypto currencies using [CryptoCompare](https://cryptocompare.com).
## Source Code
```bash
wtf/cryptoexchanges/cryptolive/
```
## Configuration
```yaml
cryptolive:
enabled: true
position:
top: 5
left: 2
height: 1
width: 2
updateInterval: 15
currencies:
BTC:
displayName: Bitcoin
to:
- USD
- EUR
- ETH
- LTC
- DOGE
LTC:
displayName: Ethereum
to:
- USD
- EUR
- BTC
top:
BTC:
displayName: Bitcoin
limit: 5
to:
- USD
colors:
from:
name: coral
displayName: grey
to:
name: white
price: green
top:
from:
name: grey
displayName: coral
to:
name: red
field: white
value: green
```
### Attributes
`colors.from.name` <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11
color name</a>.
`colors.from.dispayName` <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11
color name</a>.
`colors.to.name` <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11
color name</a>.
`colors.to.price` <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11
color name</a>.
`currencies` <br />
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.

View File

@ -0,0 +1,56 @@
---
title: "Datadog"
date: 2018-08-18T00:00:00Z
draft: false
weight: 60
---
Connects to the Datadog API and displays alerting modules.
## Source Code
```bash
wtf/datadog/
```
## Configuration
```yaml
datadog:
apiKey: "<yourapikey>"
applicationKey: "<yourapplicationkey>"
enabled: true
monitors:
tags:
- "team:ops"
position:
top: 4
left: 3
height: 1
width: 2
```
### Attributes
`apiKey` <br />
Value: Your <a href="https://docs.datadoghq.com/api/?lang=python#overview">Datadog API</a> key.
`applicationKey` <br />
Value: Your <a href="https://docs.datadoghq.com/api/?lang=python#overview">Datadog Application</a> key.
`monitors` <br />
Configuration for the monitors functionality.
`tags` <br />
Array of tags you want to query monitors by.
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.

View File

@ -0,0 +1,124 @@
---
title: "Gerrit"
date: 2018-06-27T15:55:42-07:00
draft: false
weight: 70
---
<img class="screenshot" src="/imgs/modules/gerrit.png" width="640" height="167" alt="gerrit screenshot" />
Displays information about your projects hosted on Gerrit:
#### Open Incoming Reviews
All open reviews that are requesting your approval.
#### My Outgoing Reviews
All open reviews created by you.
## Source Code
```bash
wtf/gerrit/
```
## Keyboard Commands
<span class="caption">Key:</span> `/` <br />
<span class="caption">Action:</span> Open/close the widget's help window.
<span class="caption">Key:</span> `h` <br />
<span class="caption">Action:</span> Show the previous project.
<span class="caption">Key:</span> `l` <br />
<span class="caption">Action:</span> Show the next project.
<span class="caption">Key:</span> `j` <br />
<span class="caption">Action:</span> Select the next review in the list.
<span class="caption">Key:</span> `k` <br />
<span class="caption">Action:</span> Select the previous review in the list.
<span class="caption">Key:</span> `r` <br />
<span class="caption">Action:</span> Refresh the data.
<span class="caption">Key:</span> `←` <br />
<span class="caption">Action:</span> Show the previous project.
<span class="caption">Key:</span> `→` <br />
<span class="caption">Action:</span> Show the next project.
<span class="caption">Key:</span> `↓` <br />
<span class="caption">Action:</span> Select the next review in the list.
<span class="caption">Key:</span> `↑` <br />
<span class="caption">Action:</span> Select the previous review in the list.
<span class="caption">Key:</span> `[return]` <br />
<span class="caption">Action:</span> Open the selected review in the browser.
## Configuration
```yaml
gerrit:
colors:
rows:
even: "lightblue"
odd: "white"
domain: https://gerrit-review.googlesource.com
enabled: true
password: "mypassword"
position:
top: 2
left: 3
height: 2
width: 2
projects:
- org/test-project"
- dotfiles
refreshInterval: 300
username: "myname"
verifyServerCertificate: false
```
### Attributes
`colors.rows.even` <br />
Define the foreground color for even-numbered rows. <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11
color name</a>.
`colors.rows.odd` <br />
Define the foreground color for odd-numbered rows. <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11
color name</a>.
`domain` <br />
Your Gerrit corporate domain. <br />
Values: A valid URI.
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`password` <br />
Value: Your <a href="https://gerrit-review.googlesource.com/Documentation/user-upload.html#http">Gerrit HTTP Password</a>.
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`projects` <br />
A list of Gerrit project names to fetch data for. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.
`username` <br />
Your Gerrit username.
`verifyServerCertificate` <br />
_Optional_ <br />
Determines whether or not the server's certificate chain and host name are verified. <br />
Values: `true`, `false`.

View File

@ -0,0 +1,94 @@
---
title: "Git"
date: 2018-05-09T14:20:48-07:00
draft: false
weight: 80
---
<img class="screenshot" src="/imgs/modules/git.png" width="720" height="292" alt="git screenshot" />
Displays information about local git repositories: branch, changed
files, and recent commits.
#### Branch
The name of the currently-active git branch.
#### Changed Files
A list of all the files that have changed since the last
commit, and their status.
#### Recent Commits
A list of `n` recent commits, who committed it, and when.
## Source Code
```bash
wtf/git/
```
## Keyboard Commands
<span class="caption">Key:</span> `/` <br />
<span class="caption">Action:</span> Open/close the widget's help window.
<span class="caption">Key:</span> `h` <br />
<span class="caption">Action:</span> Show the previous git repository.
<span class="caption">Key:</span> `l` <br />
<span class="caption">Action:</span> Show the next git repository.
<span class="caption">Key:</span> `←` <br />
<span class="caption">Action:</span> Show the previous git repository.
<span class="caption">Key:</span> `→` <br />
<span class="caption">Action:</span> Show the next git repository.
## Configuration
```yaml
git:
commitCount: 5
commitFormat: "[forestgreen]%h [grey]%cd [white]%s [grey]%an[white]"
dateFormat: "%H:%M %d %b %y"
enabled: true
position:
top: 0
left: 3
height: 2
width: 2
refreshInterval: 8
repositories:
- "/Users/chris/go/src/github.com/senorprogrammer/wtf"
- "/Users/user/fakeapp"
```
### Attributes
`commitCount` <br />
The number of past commits to display. <br />
Values: A positive integer, `0..n`.
`commitFormat` <br />
_Optional_ The string format for the commit message. <br />
`dateFormat` <br />
_Optional_ The string format for the date/time in the commit message.
<br />
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.
`repositories` <br />
Defines which git repositories to watch. <br />
Values: A list of zero or more local file paths pointing to valid git repositories.

View File

@ -0,0 +1,101 @@
---
title: "GitHub"
date: 2018-05-09T19:20:20-07:00
draft: false
weight: 90
---
<img class="screenshot" src="/imgs/modules/github.png" width="640" height="384" alt="github screenshot" />
Displays information about your git repositories hosted on GitHub:
#### Open Review Requests
All open code review requests assigned to you.
#### Open Pull Requests
All open pull requests created by you.
## Source Code
```bash
wtf/github/
```
## Keyboard Commands
<span class="caption">Key:</span> `/` <br />
<span class="caption">Action:</span> Open/close the widget's help window.
<span class="caption">Key:</span> `h` <br />
<span class="caption">Action:</span> Show the previous git repository.
<span class="caption">Key:</span> `l` <br />
<span class="caption">Action:</span> Show the next git repository.
<span class="caption">Key:</span> `←` <br />
<span class="caption">Action:</span> Show the previous git repository.
<span class="caption">Key:</span> `→` <br />
<span class="caption">Action:</span> Show the next git repository.
## Configuration
```yaml
github:
apiKey: "3276d7155dd9ee27b8b14f8743a408a9"
baseURL: ""
enabled: true
enableStatus: true
position:
top: 2
left: 3
height: 2
width: 2
refreshInterval: 300
repositories:
wesker-api: "UmbrellaCorp"
wtf: "senorprogrammer"
uploadURL: ""
username: "senorprogrammer"
```
### Attributes
`apiKey` <br />
Value: Your <a href="https://developer.github.com/v3/oauth_authorizations/#create-a-new-authorization">GitHub API</a> token.
`baseURL` <br />
_Optional_ <br />
Value: Your <a href="https://developer.github.com/enterprise/2.13/v3/enterprise-admin/">GitHub Enterprise</a> API URL.
`enabled` <br />
Whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`enableStatus` <br />
Display pull request mergeability status ('dirty', 'clean', 'unstable',
'blocked').<br />
Values: `true`, `false`.
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.
`repositories` <br />
A list of key/value pairs each describing a GitHub repository to fetch data
for. <br />
<span class="caption">Key:</span> The name of the repository. <br />
<span class="caption">Value:</span> The name of the account or organization that owns the repository.
`uploadURL` <br />
_Optional_ <br />
Value: Your <a href="https://developer.github.com/enterprise/2.13/v3/enterprise-admin/">GitHub Enterprise</a> upload URL (often the same as API URL).
`username` <br />
Your GitHub username. Used to figure out which review requests you've
been added to.

View File

@ -0,0 +1,90 @@
---
title: "GitLab"
date: 2018-06-08T13:14:11-07:00
draft: false
weight: 100
---
<img class="screenshot" src="/imgs/modules/gitlab.png" width="640" height="390" alt="gitlab screenshot" />
Added in `v0.0.8`.
Displays information about your projects hosted on GitLab:
#### Open Approval Requests
All open merge requests that are requesting your approval.
#### Open Merge Requests
All open merge requests created by you.
## Source Code
```bash
wtf/gitlab/
```
## Keyboard Commands
<span class="caption">Key:</span> `/` <br />
<span class="caption">Action:</span> Open/close the widget's help window.
<span class="caption">Key:</span> `h` <br />
<span class="caption">Action:</span> Show the previous project.
<span class="caption">Key:</span> `l` <br />
<span class="caption">Action:</span> Show the next project.
<span class="caption">Key:</span> `←` <br />
<span class="caption">Action:</span> Show the previous project.
<span class="caption">Key:</span> `→` <br />
<span class="caption">Action:</span> Show the next project.
## Configuration
```yaml
gitlab:
apiKey: "3276d7155dd9ee27b8b14f8743a408a9"
enabled: true
position:
top: 2
left: 3
height: 2
width: 2
refreshInterval: 300
projects:
tasks: "gitlab-org/release"
gitlab-ce: "gitlab-org"
username: "senorprogrammer"
```
### Attributes
`apiKey` <br />
Value: A <a href="https://docs.gitlab.com/ce/user/profile/personal_access_tokens.html">GitLab personal access token</a>. Requires at least `api` access.
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.
`domain` <br />
_Optional_. Your GitLab corporate domain. <br />
Values: A valid URI.
`projects` <br />
A list of key/value pairs each describing a GitLab project to fetch data
for. <br />
<span class="caption">Key:</span> The name of the project. <br />
<span class="caption">Value:</span> The namespace of the project.
`username` <br />
Your GitLab username. Used to figure out which requests require your approval

View File

@ -0,0 +1,76 @@
---
title: "Gitter"
date: 2018-08-02T12:36:08-04:00
draft: false
weight: 110
---
Added in `v0.2.1`.
Displays chat messages from Gitter.
<img src="/imgs/modules/gitter.png" width="847" height="160" alt="gitter screenshot" />
## Source Code
```bash
wtf/gitter/
```
## Keyboard Commands
<span class="caption">Key:</span> `j` <br />
<span class="caption">Action:</span> Select the next message in the list.
<span class="caption">Key:</span> `k` <br />
<span class="caption">Action:</span> Select the previous message in the list.
<span class="caption">Key:</span> `r` <br />
<span class="caption">Action:</span> Refresh the data.
<span class="caption">Key:</span> `↓` <br />
<span class="caption">Action:</span> Select the next message in the list.
<span class="caption">Key:</span> `↑` <br />
<span class="caption">Action:</span> Select the previous message in the list.
## Configuration
```yaml
gitter:
apiToken: "ab345546asdfasb465234fgjgh068f39a35c3e4139ee383f7"
enabled: true
numberOfMessages: 10
position:
top: 4
left: 1
height: 1
width: 4
roomUri: wtfutil/Lobby
refreshInterval: 300
```
### Attributes
`apiToken` <br />
Value: Your <a href="https://developer.gitter.im/apps">Gitter</a>Personal Access Token.
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`numberOfMessages` <br />
_Optional_ <br />
Maximum number of _(newest)_ messages to be displayed. Default is `10`<br />
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`roomUri` <br />
_Optional_ <br /
URI of the room you would like to see the chat messages from. Default is `wtfutil/Lobby`<br />
Values: `new`, `top`, `job`, `ask`
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.

View File

@ -0,0 +1,10 @@
---
title: "Google Apps"
date: 2018-08-14T01:39:58-07:00
draft: false
weight: 120
---
Google Apps.
{{% children %}}

View File

@ -0,0 +1,125 @@
---
title: "Google Calendar"
date: 2018-05-10T08:25:33-07:00
draft: false
weight: 10
---
<img class="screenshot" src="/imgs/modules/gcal.png" width="320" height="389" alt="gcal screenshot" />
Displays your upcoming Google calendar events.
**Not:** Setting up access to Google Calendars for Go is a bit unobvious. Check out Google's [Go Quickstart](https://developers.google.com/calendar/quickstart/go)
first and if you have problems, then take a look at this [comment by WesleydeSouza](https://github.com/senorprogrammer/wtf/issues/83#issuecomment-393665229) which offers a slightly different approach.
## Source Code
```bash
wtf/gcal/
```
## Configuration
```yaml
gcal:
colors:
title: "red"
description: "lightblue"
highlights:
- ['1on1|1\/11', 'green']
- ['apple|google|aws', 'blue']
- ['interview|meet', 'magenta']
- ['lunch', 'yellow']
past: "gray"
conflictIcon: "🚨"
currentIcon: "💥"
displayResponseStatus: true
email: "chriscummer@me.com"
enabled: true
eventCount: 12
multiCalendar: true
position:
top: 0
left: 0
height: 4
width: 1
refreshInterval: 300
secretFile: "~/.config/wtf/gcal/client_secret.json"
showDeclined: true
withLocation: true
```
### Attributes
`colors.title` <br />
The default colour for calendar event titles. <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11 color</a> name.
`colors.description` <br />
The default color for calendar event descriptions. <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11 color</a> name.
`colors.highlights` <br />
A list of arrays that define a regular expression pattern and a color.
If a calendar event title matches a regular expression, the title will
be drawn in that colour. Over-rides the default title colour. <br />
Values: [a valid regular expression, any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11 color</a> name.]
`colors.past` <br />
The color for calendar events that have passed. <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11 color</a> name.
`conflictIcon` <br />
The icon displayed beside calendar events that have conflicting times
(they intersect or overlap in some way). <br />
Values: Any displayable unicode character.
`currentIcon` <br />
The icon displayed beside the current calendar event. <br />
Values: Any displayable unicode character.
`displayLocation` <br />
Whether or not to display the location of the calendar event. <br />
Values: `true`, `false`.
`displayResponseStatus` <br />
Whether or not to display your response status to the calendar event.
<br />
Values: `true`, `false`.
`email` <br />
The email address associated with your Google account. Necessary for
determining `responseStatus`. <br />
Values: A valid email address string.
`enabled` <br />
Whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`eventCount` <br />
The number of calendar events to display. <br />
Values: A positive integer, `0..n`.
`multiCalendar` <br />
Whether or not to display your primary calendar or all calendars you
have access to. <br />
Values: `true`, or `false`
`position` <br />
Where in the grid this module's widget will be displayed. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.
`secretFile` <br />
Your <a href="https://developers.google.com/calendar/quickstart/go">Google client secret</a> JSON file. <br />
Values: A string representing a file path to the JSON secret file.
`showDeclined` <br />
_Optional_. Whether or not to display events you've declined to attend. <br />
Values: `true`, or `false`
`withLocation` <br />
Whether or not to show the location of the appointment. <br />
Values: `true`, or `false`

View File

@ -0,0 +1,63 @@
---
title: "Google Spreadsheets"
date: 2018-06-10T18:26:26-04:00
draft: false
weight: 50
---
Added in `v0.0.7`.
Display information from cells in a Google Spreadsheet.
```bash
wtf/gspreadsheets/
```
## Configuration
```yaml
gspreadsheets:
colors:
values: "green"
cells:
names:
- "Cell 1 name"
- "Cell 2 name"
addresses:
- "A1"
- "A2"
enabled: true
position:
top: 0
left: 0
width: 1
height: 1
refreshInterval: "300"
secretFile: "~/.config/wtf/gspreadsheets/client_secret.json"
sheetId: "id_of_google_spreadsheet"
```
### Attributes
`colors.values` <br />
The color to display the cell values in. <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11 color</a> name.
`cells.names` <br />
`cells.addresses` <br />
`enabled` <br />
Whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`position` <br />
Where in the grid this module's widget will be displayed. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.
`secretFile` <br />
Your <a href="https://developers.google.com/sheets/api/quickstart/go">Google client secret</a> JSON file. <br />
Values: A string representing a file path to the JSON secret file.

View File

@ -0,0 +1,75 @@
---
title: "Hacker News"
date: 2018-08-02T16:36:08-04:00
draft: false
weight: 123
---
Added in `v0.1.2`.
Displays stories from Hacker News.
<img src="/imgs/modules/hackernews.png" width="843" height="201" alt="hackernews screenshot" />
## Source Code
```bash
wtf/hackernews/
```
## Keyboard Commands
<span class="caption">Key:</span> `[return]` <br />
<span class="caption">Action:</span> Open the selected story in the browser.
<span class="caption">Key:</span> `j` <br />
<span class="caption">Action:</span> Select the next story in the list.
<span class="caption">Key:</span> `k` <br />
<span class="caption">Action:</span> Select the previous story in the list.
<span class="caption">Key:</span> `r` <br />
<span class="caption">Action:</span> Refresh the data.
<span class="caption">Key:</span> `↓` <br />
<span class="caption">Action:</span> Select the next story in the list.
<span class="caption">Key:</span> `↑` <br />
<span class="caption">Action:</span> Select the previous story in the list.
## Configuration
```yaml
hackernews:
enabled: true
numberOfStories: 10
position:
top: 4
left: 1
height: 1
width: 2
storyType: top
refreshInterval: 900
```
### Attributes
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`numberOfStories` <br />
_Optional_ <br />
Defines number of stories to be displayed. Default is `10`<br />
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`storyType` <br />
_Optional_ <br /
Defines type of stories to be displayed. Default is `top` stories<br />
Values: `new`, `top`, `job`, `ask`
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.

View File

@ -0,0 +1,10 @@
---
title: "IP Addresses"
date: 2018-05-07T18:04:58-07:00
draft: false
weight: 125
---
For all modules IP address-related.
{{% children %}}

View File

@ -0,0 +1,55 @@
---
title: "IP-API"
date: 2018-06-10T19:41:52-04:00
draft: false
weight: 10
---
Added in `v0.0.7`.
Displays your current IP address information, from [IP-APIcom](http://ip-api.com).
**Note:** IP-API.com has a free-plan rate limit of 120 requests per
minute.
## Source Code
```bash
wtf/ipapi/
```
## Configuration
```yaml
ipinfo:
colors:
name: red
value: white
enabled: true
position:
top: 1
left: 2
height: 1
width: 1
refreshInterval: 150
```
### Attributes
`colors.name` <br />
The default colour for the row names. <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11 color</a> name.
`colors.value` <br />
The default colour for the row values. <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11 color</a> name.
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.

View File

@ -0,0 +1,56 @@
---
title: "IPInfo"
date: 2018-06-01T23:18:48-07:00
draft: false
weight: 20
---
<img class="screenshot" src="/imgs/modules/ipinfo.png" width="320" height="199" alt="ipinfo screenshot" />
Displays your current IP address information, from ipinfo.io.
**Note:** IPInfo.io has a free-plan rate limit of 1000 requests per day.
## Source Code
```bash
wtf/ipinfo/
```
## Configuration
```yaml
ipinfo:
colors:
name: red
value: white
enabled: true
position:
top: 1
left: 2
height: 1
width: 1
refreshInterval: 150
```
### Attributes
`colors.name` <br />
The default colour for the row names. <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11 color</a> name.
`colors.value` <br />
The default colour for the row values. <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11 color</a> name.
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.

View File

@ -0,0 +1,63 @@
---
title: "Jenkins"
date: 2018-06-09T20:53:35-07:00
draft: false
weight: 130
---
<img class="screenshot" src="/imgs/modules/jenkins.png" alt="jenkins screenshot" width="320" height="68" />
Added in `v0.0.8`.
Displays jenkins status of given builds in a project or view
## Source Code
```bash
wtf/jenkins/
```
## Configuration
```yaml
jenkins:
apiKey: "3276d7155dd9ee27b8b14f8743a408a9"
enabled: true
position:
top: 2
left: 3
height: 2
width: 3
refreshInterval: 300
url: "https://jenkins.domain.com/jenkins/view_url"
user: "username"
verifyServerCertificate: true
```
### Attributes
`apiKey` <br />
Value: Your <a href="https://wiki.jenkins.io/display/JENKINS/Remote+access+API">Jenkins API</a> key.
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`position` <br />
Defines where in the grid this module's widget will be displayed.
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.
`user` <br />
Your Jenkins username. <br />
`url` <br />
The url to your Jenkins project or view. <br />
Values: A valid URI.
`verifyServerCertificate` <br />
_Optional_ <br />
Determines whether or not the server's certificate chain and host name are verified. <br />
Values: `true`, `false`.

View File

@ -0,0 +1,136 @@
---
title: "Jira"
date: 2018-05-10T10:44:35-07:00
draft: false
weight: 140
---
<img class="screenshot" src="/imgs/modules/jira.png" width="640" height="188" alt="jira screenshot" />
Displays all Jira issues assigned to you for the specified project.
## Source Code
```bash
wtf/jira/
```
## Keyboard Commands
<span class="caption">Key:</span> `[return]` <br />
<span class="caption">Action:</span> Open the selected issue in the browser.
<span class="caption">Key:</span> `j` <br />
<span class="caption">Action:</span> Select the next item in the list.
<span class="caption">Key:</span> `k` <br />
<span class="caption">Action:</span> Select the previous item in the list.
<span class="caption">Key:</span> `↓` <br />
<span class="caption">Action:</span> Select the next item in the list.
<span class="caption">Key:</span> `↑` <br />
<span class="caption">Action:</span> Select the previous item in the list.
## Configuration
### Single Jira Project
```yaml
jira:
apiKey: "3276d7155dd9ee27b8b14f8743a408a9"
colors:
rows:
even: "lightblue"
odd: "white"
domain: "https://umbrellacorp.atlassian.net"
email: "chriscummer@me.com"
enabled: true
jql: "issueType = Story"
position:
top: 4
left: 1
height: 1
width: 2
project: "ProjectA"
refreshInterval: 900
username: "chris.cummer"
verifyServerCertificate: true
```
### Multiple Jira Projects
If you want to monitor multiple Jira projects, use the following
configuration (note the difference in `project`):
```yaml
jira:
apiKey: "3276d7155dd9ee27b8b14f8743a408a9"
colors:
rows:
even: "lightblue"
odd: "white"
domain: "https://umbrellacorp.atlassian.net"
email: "chriscummer@me.com"
enabled: true
jql: "issueType = Story"
position:
top: 4
left: 1
height: 1
width: 2
project: ["ProjectA", "ProjectB"]
refreshInterval: 900
username: "chris.cummer"
verifyServerCertificate: true
```
### Attributes
`apiKey` <br />
Value: Your <a href="https://confluence.atlassian.com/cloud/api-tokens-938839638.html">Jira API</a> key.
`colors.rows.even` <br />
Define the foreground color for even-numbered rows. <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11
color name</a>.
`colors.rows.odd` <br />
Define the foreground color for odd-numbered rows. <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11
color name</a>.
`domain` <br />
Your Jira corporate domain. <br />
Values: A valid URI.
`email` <br />
The email address associated with your Jira account. <br />
Values: A valid email address string.
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`jql` <br />
_Optional_ <br />
Custom JQL to be appended to the search query. <br />
Values: See <a href="https://confluence.atlassian.com/jiracore/blog/2015/07/search-jira-like-a-boss-with-jql">Search Jira like a boss with JQL</a> for details.
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`project` <br />
The Jira project to fetch information for. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.
`username` <br />
Your Jira username. <br />
`verifyServerCertificate` <br />
_Optional_ <br />
Determines whether or not the server's certificate chain and host name are verified. <br />
Values: `true`, `false`.

View File

@ -0,0 +1,55 @@
---
title: "Logger"
date: 2018-06-16T14:22:18-07:00
draft: false
weight: 150
---
Displays the contents of the WTF log file. The log file is located at `~/.config/wtf/log.txt`.
To log to this file in your own modules:
```golang
require "github.com/senorprogrammer/wtf/logger"
logger.Log("This is a log entry")
```
## Source Code
```bash
wtf/logger/
```
## Keyboard Commands
Arrow keys scroll through the log file.
## Configuration
```yaml
logger:
enabled: true
position:
top: 5
left: 4
height: 2
width: 1
refreshInterval: 1
```
### Attributes
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
**Note:** If you're using logging and logging is _disabled_, your logs
will still be written to file, the widget just won't be shown onscreen.
If you have `logger.Log` calls in your code, regardless of this setting,
they will be written out. <br />
Values: `true`, `false`.
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.

View File

@ -0,0 +1,58 @@
---
title: "New Relic"
date: 2018-05-09T09:01:14-07:00
draft: false
weight: 160
---
<img class="screenshot" src="/imgs/modules/newrelic.png" width="640" height="189" alt="newrelic screenshot" />
Connects to the New Relic API and displays the last n deploys of the
monitored application: deploy ID, deploy time, and who deployed it.
## Source Code
```bash
wtf/newrelic/
```
## Configuration
```yaml
newrelic:
apiKey: "3276d7155dd9ee27b8b14f8743a408a9"
applicationId: 10549735
deployCount: 6
enabled: true
position:
top: 4
left: 3
height: 1
width: 2
refreshInterval: 900
```
### Attributes
`apiKey` <br />
Value: Your <a href="https://docs.newrelic.com/docs/apis/getting-started/intro-apis/access-rest-api-keys">New Relic API</a> token.
`applicationId` <br />
The integer ID of the New Relic application you wish to report on. <br
/>
Values: A positive integer, `0..n`.
`deployCount` <br />
The number of past deploys to display on screen. <br />
Values: A positive integer, `0..n`.
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.

View File

@ -0,0 +1,52 @@
---
title: "OpsGenie"
date: 2018-05-08T20:53:40-07:00
draft: false
weight: 170
---
<img class="screenshot" src="/imgs/modules/opsgenie.png" width="320" height="389" alt="opsgenie screenshot" />
Connects to the OpsGenie API and displays all your scheduled rotations
and who's currently on call.
## Source Code
```bash
wtf/opsgenie/
```
## Configuration
```yaml
opsgenie:
apiKey: "3276d7155dd9ee27b8b14f8743a408a9"
displayEmpty: false
enabled: true
position:
top: 2
left: 1
height: 2
width: 1
refreshInterval: 21600
```
### Attributes
`apiKey` < br />
Value: Your <a href="https://docs.opsgenie.com/docs/api-integration">OpsGenie API</a> token.
`displayEmpty` <br />
Whether schedules with no assigned person on-call should be displayed. <br />
Values: `true`, `false`.
`enabled` <br />
Whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`position` <br />
Where in the grid this module's widget will be displayed. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.

View File

@ -0,0 +1,44 @@
---
title: "Power"
date: 2018-05-26T19:26:23-07:00
draft: false
weight: 180
---
<img class="screenshot" src="/imgs/modules/power.png" width="320" height="129" alt="power screenshot" />
Displays information about the current power source.
For battery, also displays the current charge, estimated time remaining,
and whether it is charging or discharging.
## Source Code
```bash
wtf/power/
```
## Configuration
```yaml
power:
enabled: true
position:
top: 5
left: 0
height: 2
width: 1
refreshInterval: 15
```
### Attributes
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.

View File

@ -0,0 +1,70 @@
---
title: "Security"
date: 2018-05-08T20:33:28-07:00
draft: false
weight: 200
---
<img class="screenshot" src="/imgs/modules/security.png" width="320" height="192" alt="security screenshot" />
Displays some general information about the state of the machine's wifi
connection, firewall, DNS settings, and logged-in users.
#### Wifi Network
<ul class="list-ornate">
<li>The name of the current network</li>
<li>Whether or not the network uses <a href="https://www.howtogeek.com/167783/htg-explains-the-difference-between-wep-wpa-and-wpa2-wireless-encryption-and-why-it-matters/">encryption</a> and if so, what flavour</li>
</ul>
#### Firewall
<ul class="list-ornate">
<li>Whether or not the <a href="https://support.apple.com/en-ca/HT201642">firewall</a> is enabled</li>
<li>Whether or not <a href="https://support.apple.com/en-ca/HT201642">Stealth Mode</a> is enabled</li>
</ul>
#### DNS
<ul class="list-ornate">
<li>Which <a hre="https://developers.cloudflare.com/1.1.1.1/what-is-1.1.1.1/">DNS resolvers</a> (servers) the machine is configured to use</li>
</ul>
#### Users
<ul class="list-ornate">
<li> Which users are logged into the machine. Note: Does not yet
show hidden users.</li>
</ul>
## Source Code
```bash
wtf/security/
```
## Configuration
```yaml
security:
enabled: true
position:
top: 1
left: 2
height: 1
width: 1
refreshInterval: 3600
```
### Attributes
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.

View File

@ -0,0 +1,67 @@
---
title: "Textfile"
date: 2018-05-09T11:13:11-07:00
draft: false
weight: 210
---
<img class="screenshot" src="/imgs/modules/textfile.png" width="320" height="133" alt="textfile screenshot" />
Displays the contents of the specified text file in the widget.
## Source Code
```bash
wtf/textfile/
```
## Keyboard Commands
<span class="caption">Key:</span> `/` <br />
<span class="caption">Action:</span> Open/close the widget's help window.
<span class="caption">Key:</span> `o` <br />
<span class="caption">Action:</span> Opens the text file in whichever text editor is associated with that file type.
## Configuration
```yaml
textfile:
enabled: true
filePath: "~/Desktop/notes.md"
format: true
formatStyle: "dracula"
position:
top: 5
left: 4
height: 2
width: 1
refreshInterval: 15
```
### Attributes
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`filePath` <br />
The path to the file to be displayed in the widget. <br />
`format` <br />
Whether or not to try and format and syntax highlight the displayedtext. <br />
Values: `true`, `false`. <br />
Default: `false`.
`formatStyle` <br />
The style of syntax highlighting to format the text with. <br />
Values: See [Chroma styles](https://github.com/alecthomas/chroma/tree/master/styles) for all
valid options. <br />
Default: `vim`.
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.

View File

@ -0,0 +1,112 @@
---
title: "Todo"
date: 2018-05-10T12:41:50-07:00
draft: false
weight: 220
---
<img class="screenshot" src="/imgs/modules/todo.png" width="320" height="388" alt="todo screenshot" />
An interactive todo list.
## Source Code
```bash
wtf/todo/
```
## Keyboard Commands
<span class="caption">Key:</span> `[return]` <br />
<span class="caption">Action:</span> Edit the selected item. <br />
<span class="caption">Action:</span> Close the modal item dialog and save changes. <br />
<span class="caption">Key:</span> `[esc]` <br />
<span class="caption">Action:</span> Remove focus from the selected item. <br />
<span class="caption">Action:</span> Close the modal item dialog without saving changes.
<span class="caption">Key:</span> `[space]` <br />
<span class="caption">Action:</span> Check/uncheck the selected item.
<span class="caption">Key:</span> `/` <br />
<span class="caption">Action:</span> Open/close the widget's help window.
<span class="caption">Key:</span> `j` <br />
<span class="caption">Action:</span> Select the next item in the list.
<span class="caption">Key:</span> `k` <br />
<span class="caption">Action:</span> Select the previous item in the list.
<span class="caption">Key:</span> `n` <br />
<span class="caption">Action:</span> Create a new list item.
<span class="caption">Key:</span> `o` <br />
<span class="caption">Action:</span> Opens the todo list file in
whichever text editor is associated with that file type.
<span class="caption">Key:</span> `↓` <br />
<span class="caption">Action:</span> Select the next item in the list.
<span class="caption">Key:</span> `↑` <br />
<span class="caption">Action:</span> Select the previous item in the list.
<span class="caption">Key:</span> `Ctrl-d` <br />
<span class="caption">Action:</span> Delete the selected item.
<span class="caption">Key:</span> `Ctrl-J` <br />
<span class="caption">Action:</span> Move the selected item down the list.
<span class="caption">Key:</span> `Ctrl-K` <br />
<span class="caption">Action:</span> Move the selected item up the list.
## Configuration
```yaml
todo:
checkedIcon: "X"
colors:
checked: gray
highlight:
fore: "black"
back: "orange"
enabled: true
filename: "todo.yml"
position:
top: 2
left: 2
height: 2
width: 1
refreshInterval: 3600
```
### Attributes
`checkedIcon` <br />
The icon used to denote a "checked" todo item. <br />
Values: Any displayable unicode character.
`colors.checked` <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11 color</a> name.
`colors.highlight.fore` <br />
The foreground color for the currently-selected row. <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11 color</a> name.
`colors.highlight.back` <br />
The background color for the currently-selected row. <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11 color</a> name.
`enabled` <br />
Whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`filename` <br />
The name for the todo file. <br />
Values: Any valid filename, ideally ending in `yml`.
`position` <br />
Where in the grid this module's widget will be displayed. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.

View File

@ -0,0 +1,89 @@
---
title: "Todoist"
date: 2018-07-05T22:55:55-03:00
draft: false
weight: 230
---
<img class="screenshot" src="/imgs/modules/todoist.png" alt="todoist screenshot" />
Added in `v0.0.11`.
Displays all items on specified project.
## Source Code
```bash
wtf/todoist/
```
## Keyboard Commands
<span class="caption">Key:</span> `h` <br />
<span class="caption">Action:</span> Show the previous project.
<span class="caption">Key:</span> `←` <br />
<span class="caption">Action:</span> Show the previous project.
<span class="caption">Key:</span> `l` <br />
<span class="caption">Action:</span> Show the next project.
<span class="caption">Key:</span> `→` <br />
<span class="caption">Action:</span> Show the next project.
<span class="caption">Key:</span> `j` <br />
<span class="caption">Action:</span> Select the next item in the list.
<span class="caption">Key:</span> `↓` <br />
<span class="caption">Action:</span> Select the next item in the list.
<span class="caption">Key:</span> `k` <br />
<span class="caption">Action:</span> Select the previous item in the list.
<span class="caption">Key:</span> `↑` <br />
<span class="caption">Action:</span> Select the previous item in the list.
<span class="caption">Key:</span> `c` <br />
<span class="caption">Action:</span> Close current item.
<span class="caption">Key:</span> `d` <br />
<span class="caption">Action:</span> Delete current item.
<span class="caption">Key:</span> `r` <br />
<span class="caption">Action:</span> Reload all projects.
## Configuration
```yaml
todoist:
apiKey: "3276d7155dd9ee27b8b14f8743a408a9"
enabled: true
position:
top: 0
left: 2
height: 1
width: 1
projects:
- 122247497
refreshInterval: 3600
```
### Attributes
`apiKey` <br />
Value: Your <a href="https://developer.todoist.com/sync/v7/">Todoist API</a> token.
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`position` <br />
Where in the grid this module's widget will be displayed. <br />
`projects` <br />
The todoist projects to fetch items from. <br />
Values: The integer ID of the project.
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.

View File

@ -0,0 +1,73 @@
---
title: "TravisCI"
date: 2018-07-18T14:36:08-04:00
draft: false
weight: 240
---
<img class="screenshot" src="/imgs/modules/travisci.png" width="640" height="187" alt="travisci screenshot" />
Added in `v0.0.12`.
Displays build information for your Travis CI account.
## Source Code
```bash
wtf/travisci/
```
## Keyboard Commands
<span class="caption">Key:</span> `[return]` <br />
<span class="caption">Action:</span> Open the selected build in the browser.
<span class="caption">Key:</span> `j` <br />
<span class="caption">Action:</span> Select the next build in the list.
<span class="caption">Key:</span> `k` <br />
<span class="caption">Action:</span> Select the previous build in the list.
<span class="caption">Key:</span> `r` <br />
<span class="caption">Action:</span> Refresh the data.
<span class="caption">Key:</span> `↓` <br />
<span class="caption">Action:</span> Select the next build in the list.
<span class="caption">Key:</span> `↑` <br />
<span class="caption">Action:</span> Select the previous build in the list.
## Configuration
```yaml
travisci:
apiKey: "3276d7155dd9ee27b8b14f8743a408a9"
enabled: true
position:
top: 4
left: 1
height: 1
width: 2
pro: false
refreshInterval: 900
```
### Attributes
`apiKey` <br />
Value: Your <a href="https://developer.travis-ci.org/authentication">Travis CI API</a> access token.
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`pro` <br />
Determines whether or not this module will use the Pro version of Travis CI.<br />
Values: `true`, `false`.
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.

View File

@ -0,0 +1,85 @@
---
title: "Trello"
date: 2018-05-10T10:44:35-07:00
draft: false
weight: 250
---
<img class="screenshot" src="/imgs/modules/trello.png" width="640" height="197" alt="trello screenshot" />
Displays all Trello cards on specified lists.
## Source Code
```bash
wtf/trello/
```
## Configuration
### Single Trello List
```yaml
trello:
accessToken: "7b8b14f8743a408a93276d7155dd9ee2"
apiKey: "3276d7155dd9ee27b8b14f8743a408a9"
board: Main
enabled: true
list: "Todo"
position:
height: 1
left: 2
top: 0
width: 1
refreshInterval: 3600
username: myname
```
### Multiple Trello Lists
If you want to monitor multiple Trello lists, use the following
configuration (note the difference in `list`):
```yaml
trello:
accessToken: "7b8b14f8743a408a93276d7155dd9ee2"
apiKey: "3276d7155dd9ee27b8b14f8743a408a9"
board: Main
enabled: true
list: ["Todo", "Done"]
position:
height: 1
left: 2
top: 0
width: 1
refreshInterval: 3600
username: myname
```
### Attributes
`accessToken` <br />
Value: Your Trello access token.
`apiKey` <br />
Value: Your Trello API key.
`board` <br />
The name of the Trello board. <br />
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`list` <br />
The Trello lists to fetch cards from. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.
`username` <br />
Your Trello username. <br />
`position` <br />
Where in the grid this module's widget will be displayed. <br />

View File

@ -0,0 +1,61 @@
---
title: "Twitter"
date: 2018-07-31T20:21:37-07:00
draft: false
weight: 260
---
Added in `v0.2.0`.
Connects to the Twitter API and displays a single user's tweets.
NOTE: This only works for single-application developer accounts for now.
To make this work, you'll need a couple of things:
1. A [Twitter developer account](https://developer.twitter.com/content/developer-twitter/en.html)
2. A [Twitter bearer token](https://developer.twitter.com/en/docs/basics/authentication/overview/application-only).
Once you have your developer account, a relatively painless way to get a
bearer token is to use [TBT](https://github.com/Trinergy/twitter_bearer_token).
## Source Code
```bash
wtf/twitter/
```
## Configuration
```yaml
twitter:
bearerToken: "3276d7155dd9ee27b8b14f8743a408a9"
enabled: true
position:
top: 0
left: 1
height: 1
width: 1
refreshInterval: 20000
screenName: "wtfutil"
```
### Attributes
`bearerToken` <br />
Value: Your <a href="https://developer.twitter.com/en/docs/basics/authentication/overview/application-only.html">Twitter single-application Bearer Token</a>
`enabled` <br />
Whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: Any positive integer, `0..n`.
`screenName` <br />
The screen name of the Twitter user who's tweets you want to follow. <br />
Values: Any valid Twitter user's screen name.

View File

@ -0,0 +1,10 @@
---
title: "Weather Services"
date: 2018-05-07T18:04:58-07:00
draft: false
weight: 270
---
For all modules weather-related.
{{% children %}}

View File

@ -0,0 +1,66 @@
---
title: "Pretty Weather"
date: 2018-06-02T05:32:04-07:00
draft: false
weight: 10
---
<img class="screenshot" src="/imgs/modules/prettyweather.png" width="320" height="191" alt="prettyweather screenshot" />
Displays weather information as ASCII art from
[Wttr.in](http://wttr.in).
## Source Code
```bash
wtf/prettyweather/
```
## Configuration
```yaml
prettyweather:
enabled: true
city: "tehran"
position:
top: 3
left: 5
height: 1
width: 1
refreshInterval: 300
unit: "c"
view: 0
language: "en"
```
### Attributes
`city` <br />
_Optional_. It will grab the current location from your IP address if
omitted.<br />
Values: The name of any city supported by [Wttr.in](http://wttr.in).
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.
`unit` <br />
_Optional_. It will use metric if you are out of US and imperial for US.<br />
The temperature scale in which to display temperature values. <br />
Values: `F` for Fahrenheit, `C` for Celcius.
`view` <br />
_Optional_ Wttr.in view configuration. <br />
Values: See `curl wttr.in/:help` for more details.
`language` <br />
_Optional_ Wttr.in language configuration. <br />
Values: See `curl wttr.in/:translation` for more details.

View File

@ -0,0 +1,94 @@
---
title: "Weather"
date: 2018-05-09T11:44:13-07:00
draft: false
weight: 20
---
<img class="screenshot" src="/imgs/modules/weather.png" width="320" height="187" alt="weather screenshot" />
Displays a configurable list of current weather report, including
current temperature, sunrise time, and sunset time.
## Source Code
```bash
wtf/weather/
```
## Keyboard Commands
<span class="caption">Key:</span> `/` <br />
<span class="caption">Action:</span> Open/close the widget's help window.
<span class="caption">Key:</span> `h` <br />
<span class="caption">Action:</span> Show the previous weather location.
<span class="caption">Key:</span> `l` <br />
<span class="caption">Action:</span> Show the next weather location.
<span class="caption">Key:</span> `←` <br />
<span class="caption">Action:</span> Show the previous weather location.
<span class="caption">Key:</span> `→` <br />
<span class="caption">Action:</span> Show the next weather location.
## Configuration
```yaml
weather:
apiKey: "2dfb3e3650a1950adddb6badf5ba1aaa"
# From http://openweathermap.org/help/city_list.txt
cityids:
- 6173331
- 3128760
- 6167865
- 6176823
colors:
current: "lightblue"
enabled: true
language: "EN"
position:
top: 0
left: 2
height: 1
width: 1
refreshInterval: 900
tempUnit: "C"
```
### Attributes
`apiKey` <br />
Your <a href="https://openweathermap.org/appid">OpenWeatherMap API</a> key.
`cityids` <br />
A list of the <a
href="http://openweathermap.org/help/city_list.txt">OpenWeatherMap city
IDs</a> for the cities you want to view. <br />
Values: A list of positive integers, `0..n`
`colors.current` <br />
The color to highlight the current temperature in. <br />
Values: Any <a href="https://en.wikipedia.org/wiki/X11_color_names">X11
color name</a>.
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`language` <br />
The human language in which to present the weather data. <br />
Values: Any <a href="https://openweathermap.org/current">language identifier</a> specified by OpenWeatherMap.
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`refreshInterval` <br />
How often, in seconds, this module will update its data. <br />
Values: A positive integer, `0..n`.
`tempUnit` <br />
The temperature scale in which to display temperature values. <br />
Values: `F` for Fahrenheit, `C` for Celcius.

View File

@ -0,0 +1,73 @@
---
title: "Zendesk"
date: 2018-07-23T18:55:37-08:00
draft: false
weight: 280
---
Added in `v0.1.0`.
Displays tickets in the "New" status - i.e. have not yet been assigned.
## Source Code
```bash
wtf/zendesk/
```
## Keyboard Commands
<span class="caption">Key:</span> `[return]` <br />
<span class="caption">Action:</span> Open the selected ticket in the browser.
<span class="caption">Key:</span> `j` <br />
<span class="caption">Action:</span> Select the next item in the list.
<span class="caption">Key:</span> `k` <br />
<span class="caption">Action:</span> Select the previous item in the list.
<span class="caption">Key:</span> `↓` <br />
<span class="caption">Action:</span> Scroll down the list.
<span class="caption">Key:</span> `↑` <br />
<span class="caption">Action:</span> Scroll up the list.
## Configuration
```yaml
zendesk:
apiKey: "3276d7155dd9ee27b8b14f8743a408a9"
enabled: true
position:
top: 0
left: 2
height: 1
width: 1
status: "new"
subdomain: "your_domain"
username: "your_email@acme.com"
```
### Attributes
`apiKey` <br />
Value: Your Zendesk API token.
`enabled` <br />
Determines whether or not this module is executed and if its data displayed onscreen. <br />
Values: `true`, `false`.
`position` <br />
Defines where in the grid this module's widget will be displayed. <br />
`status` <br />
The status of tickets you want to retrieve.
Values: `new`, `open`, `pending`, `hold`.
`subdomain` <br />
Value: Your Zendesk subdomain.
`username` <br />
Your Zendesk username
Values: A valid Zendesk username (usually an email address).

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Some files were not shown because too many files have changed in this diff Show More