[github-contribution] add themes
|
@ -1,8 +1,12 @@
|
|||
# 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
|
||||
|
||||
|
@ -10,20 +14,37 @@ It is possible to customize the widget by providing a table with all or some of
|
|||
|
||||
| Name | Default | Description |
|
||||
|---|---|---|
|
||||
| `username` | 'streetturtle' | Username |
|
||||
| `username` | `streetturtle` | GitHub username |
|
||||
| `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 |
|
||||
| `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:
|
||||
![screenshot1](./screenshot1.jpg)
|
||||
![screenshot1](./screenshots/screenshot1.jpg)
|
||||
|
||||
365 days, no border:
|
||||
![screenshot2](./screenshot2.jpg)
|
||||
|
||||
![screenshot2](./screenshots/screenshot2.jpg)
|
||||
|
||||
## Installation
|
||||
|
||||
|
|
|
@ -9,12 +9,11 @@
|
|||
-------------------------------------------------
|
||||
|
||||
local awful = require("awful")
|
||||
local naughty = require("naughty")
|
||||
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'"]]
|
||||
-- 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{
|
||||
reflection = {
|
||||
|
@ -24,13 +23,12 @@ local github_contributions_widget = wibox.widget{
|
|||
widget = wibox.container.mirror
|
||||
}
|
||||
|
||||
local color_dict = {
|
||||
color_calendar_graph_day_L4_bg = '#216e39',
|
||||
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',
|
||||
}
|
||||
local function show_warning(message)
|
||||
naughty.notify{
|
||||
preset = naughty.config.presets.critical,
|
||||
title = 'Github Contributions Widget',
|
||||
text = message}
|
||||
end
|
||||
|
||||
local function worker(args)
|
||||
|
||||
|
@ -38,18 +36,26 @@ local function worker(args)
|
|||
|
||||
local username = args.username or 'streetturtle'
|
||||
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 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
|
||||
|
||||
local function hex2rgb(hex)
|
||||
if hex == '#ebedf0' then hex = empty_color end
|
||||
hex = tostring(hex):gsub("#","")
|
||||
return tonumber("0x" .. hex:sub(1, 2)),
|
||||
tonumber("0x" .. hex:sub(3, 4)),
|
||||
tonumber("0x" .. hex:sub(5, 6))
|
||||
if color_of_empty_cells ~= nil and hex == widget_themes[theme]['color_calendar_graph_day_bg'] then
|
||||
hex = color_of_empty_cells
|
||||
end
|
||||
hex = tostring(hex):gsub('#','')
|
||||
return tonumber('0x' .. hex:sub(1, 2)),
|
||||
tonumber('0x' .. hex:sub(3, 4)),
|
||||
tonumber('0x' .. hex:sub(5, 6))
|
||||
end
|
||||
|
||||
local function get_square(color)
|
||||
|
@ -70,9 +76,9 @@ local function worker(args)
|
|||
|
||||
local col = {layout = wibox.layout.fixed.vertical}
|
||||
local row = {layout = wibox.layout.fixed.horizontal}
|
||||
local a = 6 - os.date('%w')
|
||||
local a = 5 - os.date('%w')
|
||||
for i = 0, a do
|
||||
table.insert(col, get_square('#ebedf0'))
|
||||
table.insert(col, get_square(color_of_empty_cells))
|
||||
end
|
||||
|
||||
local update_widget = function(widget, stdout, _, _, _)
|
||||
|
@ -81,7 +87,7 @@ local function worker(args)
|
|||
table.insert(row, col)
|
||||
col = {layout = wibox.layout.fixed.vertical}
|
||||
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
|
||||
end
|
||||
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
|