[github-contribution] add themes
|
@ -1,8 +1,12 @@
|
||||||
# Github Contributions Widget
|
# Github Contributions Widget
|
||||||
|
|
||||||
Shows the contribution graph, similar to the one on the github profile page:
|
The widget is inspired by the https://github-contributions.now.sh/ and relies on it's API.
|
||||||
|
|
||||||
![screenshot](./screenshot.jpg)
|
It shows the contribution graph, similar to the one on the github profile page: ![screenshot](./screenshots/screenshot.jpg)
|
||||||
|
|
||||||
|
You might wonder what could be the reason to have your github's contributions in front of you all day long? The more you contribute, the nicer widget looks! Check out [Thomashighbaugh](https://github.com/Thomashighbaugh)'s graph:
|
||||||
|
|
||||||
|
![](./screenshots/Thomashighbaugh.png)
|
||||||
|
|
||||||
## Customization
|
## Customization
|
||||||
|
|
||||||
|
@ -10,20 +14,37 @@ It is possible to customize the widget by providing a table with all or some of
|
||||||
|
|
||||||
| Name | Default | Description |
|
| Name | Default | Description |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| `username` | 'streetturtle' | Username |
|
| `username` | `streetturtle` | GitHub username |
|
||||||
| `days` | `365` | Number of days in the past, more days - wider the widget |
|
| `days` | `365` | Number of days in the past, more days - wider the widget |
|
||||||
| `empty_color` | `beautiful.bg_normal` | Color of the days with no contributions |
|
| `color_of_empty_cells` | Theme's default | Color of the days with no contributions |
|
||||||
| `with_border` | `true` | Should the graph contains border or not |
|
| `with_border` | `true` | Should the graph contains border or not |
|
||||||
| `margin_top` | `1` | Top margin |
|
| `margin_top` | `1` | Top margin |
|
||||||
|
| `theme` | `standard` | Color theme of the graph, see below |
|
||||||
|
|
||||||
Few more screenshots:
|
_Note:_ widget height is 21px (7 rows of 3x3 cells). So it would look nice on the wibar of 22-24px height.
|
||||||
|
|
||||||
|
### Themes
|
||||||
|
|
||||||
|
Following themes are available:
|
||||||
|
|
||||||
|
| Theme name | Preview |
|
||||||
|
|---|---|
|
||||||
|
| standard | ![standard](./screenshots/standard.png) |
|
||||||
|
| classic | ![classic](./screenshots/classic.png) |
|
||||||
|
| teal | ![teal](./screenshots/teal.png) |
|
||||||
|
| leftpad | ![leftpad](./screenshots/leftpad.png) |
|
||||||
|
| dracula | ![dracula](./screenshots/dracula.png) |
|
||||||
|
| pink | ![pink](./screenshots/pink.png) |
|
||||||
|
|
||||||
|
To add a new theme, simply add a new entry in `themes` table (themes.lua) with the colors of your theme.
|
||||||
|
|
||||||
|
### Screenshots
|
||||||
|
|
||||||
1000 days, with border:
|
1000 days, with border:
|
||||||
![screenshot1](./screenshot1.jpg)
|
![screenshot1](./screenshots/screenshot1.jpg)
|
||||||
|
|
||||||
365 days, no border:
|
365 days, no border:
|
||||||
![screenshot2](./screenshot2.jpg)
|
![screenshot2](./screenshots/screenshot2.jpg)
|
||||||
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
|
|
@ -9,12 +9,11 @@
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
|
|
||||||
local awful = require("awful")
|
local awful = require("awful")
|
||||||
|
local naughty = require("naughty")
|
||||||
local wibox = require("wibox")
|
local wibox = require("wibox")
|
||||||
local beautiful = require("beautiful")
|
local widget_themes = require("awesome-wm-widgets.github-contributions-widget.themes")
|
||||||
|
|
||||||
local GET_CONTRIBUTIONS_CMD = [[bash -c "curl -s https://github-contributions.now.sh/api/v1/%s | jq -r '[.contributions[] | select ( .date | strptime(\"%%Y-%%m-%%d\") | mktime < now)][:%s]| .[].color'"]]
|
local GET_CONTRIBUTIONS_CMD = [[bash -c "curl -s https://github-contributions.now.sh/api/v1/%s | jq -r '[.contributions[] | select ( .date | strptime(\"%%Y-%%m-%%d\") | mktime < now)][:%s]| .[].color'"]]
|
||||||
-- in case github-contributions.now.sh stops working contributions can be scrapped from the github.com with the command below. Note that the order is reversed.
|
|
||||||
local GET_CONTRIBUTIONS_CMD_FALLBACK = [[bash -c "curl -s https://github.com/users/%s/contributions | grep -o '\" fill=\"\#[0-9a-fA-F]\{6\}\" da' | grep -o '\#[0-9a-fA-F]\{6\}'"]]
|
|
||||||
|
|
||||||
local github_contributions_widget = wibox.widget{
|
local github_contributions_widget = wibox.widget{
|
||||||
reflection = {
|
reflection = {
|
||||||
|
@ -24,13 +23,12 @@ local github_contributions_widget = wibox.widget{
|
||||||
widget = wibox.container.mirror
|
widget = wibox.container.mirror
|
||||||
}
|
}
|
||||||
|
|
||||||
local color_dict = {
|
local function show_warning(message)
|
||||||
color_calendar_graph_day_L4_bg = '#216e39',
|
naughty.notify{
|
||||||
color_calendar_graph_day_L3_bg = '#239a3b',
|
preset = naughty.config.presets.critical,
|
||||||
color_calendar_graph_day_L2_bg = '#7bc96f',
|
title = 'Github Contributions Widget',
|
||||||
color_calendar_graph_day_L1_bg = '#c6e48b',
|
text = message}
|
||||||
color_calendar_graph_day_bg = '#ebedf0',
|
end
|
||||||
}
|
|
||||||
|
|
||||||
local function worker(args)
|
local function worker(args)
|
||||||
|
|
||||||
|
@ -38,18 +36,26 @@ local function worker(args)
|
||||||
|
|
||||||
local username = args.username or 'streetturtle'
|
local username = args.username or 'streetturtle'
|
||||||
local days = args.days or 365
|
local days = args.days or 365
|
||||||
local empty_color = args.empty_color or beautiful.bg_normal
|
local color_of_empty_cells = args.color_of_empty_cells
|
||||||
local with_border = args.with_border
|
local with_border = args.with_border
|
||||||
local margin_top = args.margin_top or 1
|
local margin_top = args.margin_top or 1
|
||||||
|
local theme = args.theme or 'standard'
|
||||||
|
|
||||||
|
if widget_themes[theme] == nil then
|
||||||
|
show_warning('Theme ' .. theme .. ' does not exist')
|
||||||
|
theme = 'standard'
|
||||||
|
end
|
||||||
|
|
||||||
if with_border == nil then with_border = true end
|
if with_border == nil then with_border = true end
|
||||||
|
|
||||||
local function hex2rgb(hex)
|
local function hex2rgb(hex)
|
||||||
if hex == '#ebedf0' then hex = empty_color end
|
if color_of_empty_cells ~= nil and hex == widget_themes[theme]['color_calendar_graph_day_bg'] then
|
||||||
hex = tostring(hex):gsub("#","")
|
hex = color_of_empty_cells
|
||||||
return tonumber("0x" .. hex:sub(1, 2)),
|
end
|
||||||
tonumber("0x" .. hex:sub(3, 4)),
|
hex = tostring(hex):gsub('#','')
|
||||||
tonumber("0x" .. hex:sub(5, 6))
|
return tonumber('0x' .. hex:sub(1, 2)),
|
||||||
|
tonumber('0x' .. hex:sub(3, 4)),
|
||||||
|
tonumber('0x' .. hex:sub(5, 6))
|
||||||
end
|
end
|
||||||
|
|
||||||
local function get_square(color)
|
local function get_square(color)
|
||||||
|
@ -70,9 +76,9 @@ local function worker(args)
|
||||||
|
|
||||||
local col = {layout = wibox.layout.fixed.vertical}
|
local col = {layout = wibox.layout.fixed.vertical}
|
||||||
local row = {layout = wibox.layout.fixed.horizontal}
|
local row = {layout = wibox.layout.fixed.horizontal}
|
||||||
local a = 6 - os.date('%w')
|
local a = 5 - os.date('%w')
|
||||||
for i = 0, a do
|
for i = 0, a do
|
||||||
table.insert(col, get_square('#ebedf0'))
|
table.insert(col, get_square(color_of_empty_cells))
|
||||||
end
|
end
|
||||||
|
|
||||||
local update_widget = function(widget, stdout, _, _, _)
|
local update_widget = function(widget, stdout, _, _, _)
|
||||||
|
@ -81,7 +87,7 @@ local function worker(args)
|
||||||
table.insert(row, col)
|
table.insert(row, col)
|
||||||
col = {layout = wibox.layout.fixed.vertical}
|
col = {layout = wibox.layout.fixed.vertical}
|
||||||
end
|
end
|
||||||
table.insert(col, get_square(color_dict[colors:match('var%(%-%-(.*)%)'):gsub('-', '_')]))
|
table.insert(col, get_square(widget_themes[theme][colors:match('var%(%-%-(.*)%)'):gsub('-', '_')]))
|
||||||
a = a + 1
|
a = a + 1
|
||||||
end
|
end
|
||||||
github_contributions_widget:setup(
|
github_contributions_widget:setup(
|
||||||
|
|
After Width: | Height: | Size: 384 B |
After Width: | Height: | Size: 494 B |
After Width: | Height: | Size: 497 B |
After Width: | Height: | Size: 409 B |
After Width: | Height: | Size: 409 B |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 6.0 KiB |
After Width: | Height: | Size: 408 B |
After Width: | Height: | Size: 409 B |
|
@ -0,0 +1,46 @@
|
||||||
|
local themes = {
|
||||||
|
standard = {
|
||||||
|
color_calendar_graph_day_L4_bg = '#216e39',
|
||||||
|
color_calendar_graph_day_L3_bg = '#30a14e',
|
||||||
|
color_calendar_graph_day_L2_bg = '#40c463',
|
||||||
|
color_calendar_graph_day_L1_bg = '#9be9a8',
|
||||||
|
color_calendar_graph_day_bg = '#ebedf0'
|
||||||
|
},
|
||||||
|
classic = {
|
||||||
|
color_calendar_graph_day_L4_bg = '#196127',
|
||||||
|
color_calendar_graph_day_L3_bg = '#239a3b',
|
||||||
|
color_calendar_graph_day_L2_bg = '#7bc96f',
|
||||||
|
color_calendar_graph_day_L1_bg = '#c6e48b',
|
||||||
|
color_calendar_graph_day_bg = '#ebedf0',
|
||||||
|
},
|
||||||
|
teal = {
|
||||||
|
color_calendar_graph_day_L4_bg = '#458B74',
|
||||||
|
color_calendar_graph_day_L3_bg = '#66CDAA',
|
||||||
|
color_calendar_graph_day_L2_bg = '#76EEC6',
|
||||||
|
color_calendar_graph_day_L1_bg = '#7FFFD4',
|
||||||
|
color_calendar_graph_day_bg = '#ebedf0',
|
||||||
|
},
|
||||||
|
leftpad = {
|
||||||
|
color_calendar_graph_day_L4_bg = '#F6F6F6',
|
||||||
|
color_calendar_graph_day_L3_bg = '#DDDDDD',
|
||||||
|
color_calendar_graph_day_L2_bg = '#A5A5A5',
|
||||||
|
color_calendar_graph_day_L1_bg = '#646464',
|
||||||
|
color_calendar_graph_day_bg = '#2F2F2F',
|
||||||
|
},
|
||||||
|
dracula = {
|
||||||
|
color_calendar_graph_day_L4_bg = '#ff79c6',
|
||||||
|
color_calendar_graph_day_L3_bg = '#bd93f9',
|
||||||
|
color_calendar_graph_day_L2_bg = '#6272a4',
|
||||||
|
color_calendar_graph_day_L1_bg = '#44475a',
|
||||||
|
color_calendar_graph_day_bg = '#282a36'
|
||||||
|
},
|
||||||
|
pink = {
|
||||||
|
color_calendar_graph_day_L4_bg = '#61185f',
|
||||||
|
color_calendar_graph_day_L3_bg = '#a74aa8',
|
||||||
|
color_calendar_graph_day_L2_bg = '#ca5bcc',
|
||||||
|
color_calendar_graph_day_L1_bg = '#e48bdc',
|
||||||
|
color_calendar_graph_day_bg = '#ebedf0',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return themes
|