From 63d3c3dd1dfc3d435f4807f69666674b00dc6bd3 Mon Sep 17 00:00:00 2001 From: Pavel Makhov Date: Thu, 14 Nov 2019 22:23:43 -0500 Subject: [PATCH] Add stackoverflow widget --- stackoverflow-widget/README.md | 46 +++++++++ stackoverflow-widget/screenshot.png | Bin 0 -> 41268 bytes stackoverflow-widget/so-icon.svg | 1 + stackoverflow-widget/stackoverflow.lua | 123 +++++++++++++++++++++++++ 4 files changed, 170 insertions(+) create mode 100644 stackoverflow-widget/README.md create mode 100644 stackoverflow-widget/screenshot.png create mode 100644 stackoverflow-widget/so-icon.svg create mode 100644 stackoverflow-widget/stackoverflow.lua diff --git a/stackoverflow-widget/README.md b/stackoverflow-widget/README.md new file mode 100644 index 0000000..c906bf1 --- /dev/null +++ b/stackoverflow-widget/README.md @@ -0,0 +1,46 @@ +# Stackoverflow widget + +When clicked, widget shows latest questions from stackoverflow.com with a given tag(s). + +![screenshot](./screenshot.png) + +## Customization + +It is possible to customize widget by providing a table with all or some of the following config parameters: + +| Name | Default | Description | +|---|---|---| +| `icon`| `/.config/awesome/awesome-wm-widgets/stackoverflow-widget/so-icon.svg| Path to the icon| +| `limit` | 5 | Number of items to show in the widget +| `tagged` | awesome-wm | Tag, or comma-separated tags | + +## Installation + +1. Clone this repo (if not cloned yet) under **~/.config/awesome/**: + + ```bash + git clone https://github.com/streetturtle/awesome-wm-widgets.git ~/.config/awesome/ + ``` + +1. Require widget at the top of the **rc.lua**: + + ```lua + local stackoverflow_widget = require("awesome-wm-widgets.stackoverflow-widget.stackoverflow") + ``` + +1. Add widget to the tasklist: + + ```lua + s.mytasklist, -- Middle widget + { -- Right widgets + layout = wibox.layout.fixed.horizontal, + ... + --default + stackoverflow_widget(), + --customized + stackoverflow_widget({ + limit = 10 + }) + ... + ``` + diff --git a/stackoverflow-widget/screenshot.png b/stackoverflow-widget/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..b0058ab79b1f994e9d3af340f2398203ed966b20 GIT binary patch literal 41268 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 X2pW+9N2CLAeIOMDO++dDR`7oS_6;qd literal 0 HcmV?d00001 diff --git a/stackoverflow-widget/so-icon.svg b/stackoverflow-widget/so-icon.svg new file mode 100644 index 0000000..5298d4c --- /dev/null +++ b/stackoverflow-widget/so-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/stackoverflow-widget/stackoverflow.lua b/stackoverflow-widget/stackoverflow.lua new file mode 100644 index 0000000..3ac9bfe --- /dev/null +++ b/stackoverflow-widget/stackoverflow.lua @@ -0,0 +1,123 @@ +------------------------------------------------- +-- Stackoverflow Widget for Awesome Window Manager +-- Shows new questions by a given tag +-- More details could be found here: +-- https://github.com/streetturtle/awesome-wm-widgets/tree/master/stackoverflow-widget + +-- @author Pavel Makhov +-- @copyright 2019 Pavel Makhov +------------------------------------------------- + +local awful = require("awful") +local wibox = require("wibox") +local watch = require("awful.widget.watch") +local json = require("json") +local spawn = require("awful.spawn") +local gears = require("gears") +local beautiful = require("beautiful") + +local HOME_DIR = os.getenv("HOME") + +local GET_QUESTIONS_CMD = [[bash -c "curl --compressed -s -X GET 'http://api.stackexchange.com/2.2/questions/no-answers?page=1&pagesize=%s&order=desc&sort=activity&tagged=%s&site=stackoverflow'"]] + +local stackoverflow_widget = {} + +local function worker(args) + + local args = args or {} + + local icon = args.icon or HOME_DIR .. '/.config/awesome/awesome-wm-widgets/stackoverflow-widget/so-icon.svg' + local limit = args.limit or 5 + local tagged = args.tagged or 'awesome-wm' + + local rows = { + { widget = wibox.widget.textbox }, + layout = wibox.layout.fixed.vertical, + } + + local popup = awful.popup{ + visible = true, + ontop = true, + visible = false, + shape = gears.shape.rounded_rect, + border_width = 1, + border_color = beautiful.bg_focus, + maximum_width = 400, + preferred_positions = top, + offset = { y = 5 }, + widget = {} + } + + stackoverflow_widget = wibox.widget { + { + image = icon, + widget = wibox.widget.imagebox + }, + { + id = "txt", + widget = wibox.widget.textbox + }, + layout = wibox.layout.fixed.horizontal, + set_text = function(self, new_value) + self.txt.text = new_value + end, + } + + local update_widget = function(widget, stdout, stderr, _, _) + + local result = json.decode(stdout) + + for i = 0, #rows do rows[i]=nil end + for _, item in ipairs(result.items) do + local tags = '' + for i = 1, #item.tags do tags = tags .. item.tags[i] .. ' ' end + local row = wibox.widget { + { + { + { + text = item.title, + widget = wibox.widget.textbox + }, + { + text = tags, + align = 'right', + widget = wibox.widget.textbox + }, + layout = wibox.layout.align.vertical + }, + margins = 8, + layout = wibox.container.margin + }, + widget = wibox.container.background + } + + row:connect_signal("button::release", function(_, _, _, button) + spawn.with_shell("google-chrome " .. item.link) + popup.visible = false + end) + + row:connect_signal("mouse::enter", function(c) c:set_bg(beautiful.bg_focus) end) + row:connect_signal("mouse::leave", function(c) c:set_bg(beautiful.bg_normal) end) + + table.insert(rows, row) + end + + popup:setup(rows) + end + + stackoverflow_widget:buttons( + awful.util.table.join( + awful.button({}, 1, function() + if popup.visible then + popup.visible = not popup.visible + else + popup:move_next_to(mouse.current_widget_geometry) + end + end) + ) + ) + watch(string.format(GET_QUESTIONS_CMD, limit, tagged), 300, update_widget, stackoverflow_widget) + return stackoverflow_widget +end + +return setmetatable(stackoverflow_widget, { __call = function(_, ...) return worker(...) end })