Compare commits
No commits in common. "main" and "v2" have entirely different histories.
20 changed files with 3594 additions and 419 deletions
16
README.md
16
README.md
|
@ -1,16 +0,0 @@
|
|||
# Requirements
|
||||
A non-exhaustive list of system requirements
|
||||
|
||||
General:
|
||||
- rofi or
|
||||
- rofi-lbonn-wayland for wayland support
|
||||
|
||||
Screenshurr:
|
||||
- maim (for X)
|
||||
- xsel (for X)
|
||||
- grim (for wayland)
|
||||
- slurp (for wayland)
|
||||
- wl-clipboard (for wayland)
|
||||
|
||||
Brightnurrs:
|
||||
- acpilight
|
File diff suppressed because one or more lines are too long
|
@ -1,5 +1,4 @@
|
|||
#!/usr/bin/env bash
|
||||
#!/bin/bash
|
||||
|
||||
nimble install -y
|
||||
mkdir -p "$HOME/.local/bin"
|
||||
cp -v "wmtools" "$HOME/.local/bin/wmtools"
|
||||
|
|
|
@ -8,3 +8,4 @@ export info
|
|||
|
||||
var myConfig* = newConfig()
|
||||
|
||||
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
import std/envvars
|
||||
|
||||
const XDG_SESSION_TYPE = "XDG_SESSION_TYPE"
|
||||
const WAYLAND = "wayland"
|
||||
|
||||
proc isWayland*(): bool =
|
||||
if existsEnv(XDG_SESSION_TYPE) and getEnv(XDG_SESSION_TYPE) == WAYLAND:
|
||||
return true
|
||||
return false
|
|
@ -1,14 +0,0 @@
|
|||
import httpclient
|
||||
|
||||
proc download*(link: string): string =
|
||||
var client = newHttpClient(timeout = 10000)
|
||||
try:
|
||||
let resp = client.get(link)
|
||||
if resp.status == $Http200:
|
||||
return resp.body
|
||||
except:
|
||||
echo getCurrentExceptionMsg()
|
||||
return ""
|
||||
|
||||
proc save*(file: string, content: string) =
|
||||
writeFile(file,content)
|
|
@ -16,7 +16,6 @@ import util/screenshurrt
|
|||
import util/calculaturr
|
||||
import util/brightnurrs
|
||||
import util/tideurrl
|
||||
import util/wallpapurr
|
||||
|
||||
proc dispatch*(cfg: Config) =
|
||||
case cfg.run
|
||||
|
@ -52,7 +51,5 @@ proc dispatch*(cfg: Config) =
|
|||
brightnurrs.go()
|
||||
of Tideurrl:
|
||||
tideurrl.go()
|
||||
of Wallpapurr:
|
||||
wallpapurr.go()
|
||||
else:
|
||||
echo "No valid run command given"
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,55 +0,0 @@
|
|||
import jsony
|
||||
import strutils
|
||||
import re
|
||||
import httpclient
|
||||
import emurrjilist
|
||||
|
||||
var emojis: seq[Emoji] = @[]
|
||||
let e_re = re"E[0-9\.]+"
|
||||
const group_line = "# group: "
|
||||
const subgroup_line = "# subgroup: "
|
||||
|
||||
proc parse(body: string) =
|
||||
var current_group = ""
|
||||
var current_subgroup = ""
|
||||
for line in body.split("\n"):
|
||||
if line.startsWith(group_line):
|
||||
let g = line.replace(group_line, "")
|
||||
if current_group != g:
|
||||
current_group = g
|
||||
continue
|
||||
if line.startsWith(subgroup_line):
|
||||
let sub_g = line.replace(subgroup_line, "")
|
||||
if current_subgroup != sub_g:
|
||||
current_subgroup = sub_g
|
||||
continue
|
||||
if line == "" or (line.len > 0 and line[0] == '#'):
|
||||
continue
|
||||
try:
|
||||
let parts = line.split("#")
|
||||
let emo = parts[1].split(e_re)
|
||||
var emoji = Emoji()
|
||||
emoji.emoji = emo[0].strip(chars={' '})
|
||||
emoji.name = emo[1].strip()
|
||||
emoji.group = current_group
|
||||
emoji.subgroup = current_subgroup
|
||||
emojis.add(emoji)
|
||||
except:
|
||||
echo getCurrentExceptionMsg()
|
||||
|
||||
proc getUnicodeOrgEmoji() =
|
||||
const url = "https://unicode.org/Public/emoji/latest/emoji-test.txt"
|
||||
var client = newHttpClient()
|
||||
let page = client.get(url)
|
||||
parse(page.body)
|
||||
|
||||
proc save(emojis: seq[Emoji]) =
|
||||
let file = "emojis.json"
|
||||
writeFile(file, emojis.toJson())
|
||||
|
||||
proc getEmojis() =
|
||||
getUnicodeOrgEmoji()
|
||||
save(emojis)
|
||||
|
||||
when isMainModule:
|
||||
getEmojis()
|
|
@ -1,5 +1,4 @@
|
|||
import os
|
||||
import strutils
|
||||
import parsetoml
|
||||
|
||||
import tool
|
||||
|
@ -11,10 +10,7 @@ type
|
|||
run*: Tool
|
||||
max_lines*: int
|
||||
prepend*: bool
|
||||
to_stdout*: bool
|
||||
screenshot_tool*: ScreenshotTool
|
||||
unsplash_key*: string
|
||||
bg_dir*: string
|
||||
|
||||
let config_dir* = getHomeDir() & ".config/wm_tools/"
|
||||
let config_file* = config_dir & "config.toml"
|
||||
|
@ -47,10 +43,6 @@ proc newConfig*(): Config =
|
|||
cfg.max_lines = toml["max_lines"].getInt
|
||||
if toml.hasKey("screenshot_tool"):
|
||||
cfg.screenshot_tool = toml["screenshot_tool"].getStr.toScreenshotTool
|
||||
if toml.hasKey("unsplash_key"):
|
||||
cfg.unsplash_key = toml["unsplash_key"].getStr
|
||||
if toml.hasKey("bg_dir"):
|
||||
cfg.bg_dir = toml["bg_dir"].getStr.replace("$HOME",getHomeDir())
|
||||
except:
|
||||
echo "Error with Config File:"
|
||||
echo getCurrentExceptionMsg()
|
||||
|
|
|
@ -14,7 +14,6 @@ type
|
|||
ScreenshotTool* = enum
|
||||
None = ""
|
||||
Maim = "maim"
|
||||
Grim = "grim"
|
||||
|
||||
proc newScreenshot*(): Screenshot =
|
||||
var ss = Screenshot()
|
||||
|
@ -42,7 +41,6 @@ proc ScreenshotSizes*(): seq[string] =
|
|||
proc toScreenshotTool*(str: string): ScreenshotTool =
|
||||
case str
|
||||
of "maim": return Maim
|
||||
of "grim": return Grim
|
||||
else: return None
|
||||
|
||||
proc isScreenshotTool*(str: string): bool =
|
||||
|
@ -51,7 +49,6 @@ proc isScreenshotTool*(str: string): bool =
|
|||
proc command*(tool: ScreenshotTool): string =
|
||||
case tool
|
||||
of Maim: return "maim -u %s --format png %f"
|
||||
of Grim: return "grim %s %f"
|
||||
else: return ""
|
||||
|
||||
proc activeWindowCommand*(tool: ScreenshotTool): string =
|
||||
|
@ -60,9 +57,6 @@ proc activeWindowCommand*(tool: ScreenshotTool): string =
|
|||
case tool
|
||||
of Maim:
|
||||
cmd = cmd.replace("%s","-i $(xdotool getactivewindow)")
|
||||
of Grim:
|
||||
echo "Not currently Implemented"
|
||||
quit(1)
|
||||
else: return cmd
|
||||
return cmd
|
||||
|
||||
|
@ -71,11 +65,8 @@ proc regionCommand*(tool: ScreenshotTool): string =
|
|||
case tool
|
||||
of Maim:
|
||||
cmd = cmd.replace("%s","-s")
|
||||
of Grim:
|
||||
cmd = cmd.replace("%s","-g \"$(slurp)\"")
|
||||
else: return cmd
|
||||
return cmd
|
||||
|
||||
const X_CLIPBOARD_CMD* = "xclip -selection clipboard -t image/png"
|
||||
const WL_CLIPBOARD_CMD* = "wl-copy"
|
||||
const CLIPBOARD_CMD* = "xclip -selection clipboard -t image/png"
|
||||
|
||||
|
|
|
@ -17,5 +17,4 @@ type
|
|||
Screenshurrt,
|
||||
Calculaturr,
|
||||
Brightnurrs,
|
||||
Tideurrl,
|
||||
Wallpapurr
|
||||
Tideurrl
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
type
|
||||
WPArgs* = object
|
||||
query*: string
|
||||
last*: bool
|
||||
from_unsplash*: bool
|
|
@ -1,38 +0,0 @@
|
|||
import strutils
|
||||
import osproc
|
||||
|
||||
type
|
||||
Note* = object
|
||||
urgency*: Urgency
|
||||
title*: string
|
||||
content*: string
|
||||
timeout*: int
|
||||
Urgency* = enum
|
||||
Normal = "normal"
|
||||
Low = "low"
|
||||
Urgent = "urgent"
|
||||
Critical = "critical"
|
||||
|
||||
proc newNote*(): Note =
|
||||
return Note(urgency: Normal, title: "Notification", content: "Hello, I am a notifications", timeout: 2000)
|
||||
|
||||
proc `$`*(n: Note): string =
|
||||
let str = "notify-send -u $U $T $C -t $N"
|
||||
.replace("$U", $n.urgency)
|
||||
.replace("$T", n.title.escape)
|
||||
.replace("$C", n.content.escape)
|
||||
.replace("$N", $n.timeout)
|
||||
return str
|
||||
|
||||
proc send*(n: Note) =
|
||||
discard execCmdEx($n)
|
||||
|
||||
proc send*(s: varargs[string,`$`]) =
|
||||
var n = newNote()
|
||||
n.title = s[0]
|
||||
if s.len > 1:
|
||||
n.content = s[1..^1].join("")
|
||||
else:
|
||||
n.content = ""
|
||||
send(n)
|
||||
|
|
@ -25,18 +25,8 @@ proc copyToClipboard*(str: string): bool {.discardable.} =
|
|||
let ok = execCmd("echo -n " & quote(str) & " | xclip -selection clipboard")
|
||||
return ok == 0
|
||||
|
||||
proc listify(data:Info, opts: varargs[string]): string =
|
||||
var text = data.full_text
|
||||
if opts.len > 0:
|
||||
text &= "\n"
|
||||
for opt in opts:
|
||||
text &= markup text
|
||||
text &= "\n"
|
||||
return text
|
||||
|
||||
proc genMenuCmd(data: Info, opts: varargs[string]): string =
|
||||
var cmd = ""
|
||||
# length of the list of opts, plus the full text
|
||||
var x_lines = len(opts) + 1
|
||||
# if the text is empty, we don't want to create a menu item of it
|
||||
if data.full_text != "":
|
||||
|
@ -62,14 +52,11 @@ proc genMenuCmd(data: Info, opts: varargs[string]): string =
|
|||
return cmd
|
||||
|
||||
proc runExec(data: Info, opts: varargs[string]): string =
|
||||
if not myConfig.to_stdout:
|
||||
let cmd = genMenuCmd(data, opts)
|
||||
var output = execCmdEx(cmd)
|
||||
echo "Output:\n" & $output
|
||||
output.output.stripLineEnd()
|
||||
return output.output
|
||||
else:
|
||||
stdout.writeLine listify(data,opts)
|
||||
let cmd = genMenuCmd(data, opts)
|
||||
var output = execCmdEx(cmd)
|
||||
echo "Output:\n" & $output
|
||||
output.output.stripLineEnd()
|
||||
return output.output
|
||||
|
||||
proc outputData*(data: Info, args: varargs[string,`$`]): string {.discardable.} =
|
||||
var output = runExec(data,args)
|
||||
|
|
|
@ -3,13 +3,11 @@ import os
|
|||
import argparse
|
||||
|
||||
import common
|
||||
import common/display
|
||||
import model/pwgen
|
||||
import model/volume
|
||||
import model/brightness
|
||||
import model/screenshot
|
||||
import model/tides
|
||||
import model/wallpapurr
|
||||
|
||||
proc parseArgs*() =
|
||||
let params = commandLineParams()
|
||||
|
@ -17,11 +15,8 @@ proc parseArgs*() =
|
|||
help("WMTools : a set of tools to output option to your program of choice i.e. Rofi")
|
||||
arg("input",help="the tool to run, i.e. furrytime, pingclock, volurrme, etc.")
|
||||
arg("others", nargs = -1)
|
||||
flag("-o","--output",help="outputs to stdout instead of something else")
|
||||
try:
|
||||
var opts = p.parse(params)
|
||||
# TODO sort this but out, handle args for all modules, etc.
|
||||
myConfig.to_stdout = opts.output
|
||||
case opts.input
|
||||
of "furrytime", "fuzzytime", "time":
|
||||
myConfig.run = FurryTime
|
||||
|
@ -55,8 +50,6 @@ proc parseArgs*() =
|
|||
myConfig.run = Brightnurrs
|
||||
of "tideurrl", "tides":
|
||||
myConfig.run = Tideurrl
|
||||
of "wallpapurr", "wallpaper":
|
||||
myConfig.run = Wallpapurr
|
||||
else:
|
||||
echo p.help
|
||||
quit(1)
|
||||
|
@ -152,15 +145,10 @@ proc parseScreenshotArgs*(): Screenshot =
|
|||
help("Args for screenshurrt")
|
||||
arg("screenshurrt",help="can only ever be 'screenshurrt' as you won't have gotten this far otherwise")
|
||||
option("-s","--size",help="size/region i.e. region, fullscreen or window")
|
||||
option("-t","--tool",help="the tool to take the screenshot, i.e. maim or grim")
|
||||
try:
|
||||
var opts = p.parse(params)
|
||||
if opts.size != "":
|
||||
ss.size = opts.size.toScreenshotSize()
|
||||
if opts.tool != "":
|
||||
ss.tool = opts.tool.toScreenshotTool()
|
||||
elif isWayland():
|
||||
ss.tool = GRIM
|
||||
except ShortCircuit as err:
|
||||
if err.flag == "argparse_help":
|
||||
echo err.help
|
||||
|
@ -189,29 +177,3 @@ proc parseTideurrlArgs*(): TideList =
|
|||
stderr.writeLine getCurrentExceptionMsg()
|
||||
quit(1)
|
||||
return t
|
||||
|
||||
proc parseWallpapurrArgs*(): WPArgs =
|
||||
var args = WPArgs()
|
||||
let params = commandLineParams()
|
||||
var p = newParser:
|
||||
help("Args for wallpapurr")
|
||||
arg("wallpapurr",help="can only ever be 'wallpapurr' as you won't have gotten this far otherwise")
|
||||
option("-q","--query",help="query name")
|
||||
flag("-l","--last",help="last image")
|
||||
flag("-n","--unsplash",help="get from unsplash")
|
||||
try:
|
||||
var opts = p.parse(params)
|
||||
if opts.query != "":
|
||||
args.query = opts.query
|
||||
if opts.last:
|
||||
args.last = true
|
||||
if opts.unsplash:
|
||||
args.from_unsplash = true
|
||||
except ShortCircuit as err:
|
||||
if err.flag == "argparse_help":
|
||||
echo err.help
|
||||
quit(1)
|
||||
except UsageError:
|
||||
stderr.writeLine getCurrentExceptionMsg()
|
||||
quit(1)
|
||||
return args
|
||||
|
|
|
@ -2,20 +2,20 @@ import os
|
|||
import strutils
|
||||
import osproc
|
||||
import math
|
||||
import tables
|
||||
|
||||
import ../common
|
||||
import ../parser
|
||||
import ../model/brightness
|
||||
import ../output
|
||||
|
||||
const UP: Table[string,string] = {"linux": "xbacklight -inc %v", "freebsd": "backlight incr %v"}.toTable # %v is amount by
|
||||
const DOWN: Table[string,string] = {"linux": "xbacklight -dec %v", "freebsd": "backlight decr %v"}.toTable() # %v is amount by
|
||||
const SET: Table[string,string] = {"linux": "xbacklight -set %v", "freebsd": "backlight %v"}.toTable() # %v is amount by
|
||||
#const backlight = "intel_backlight"
|
||||
const BACKLIGHT_CMD = "xbacklight"
|
||||
const UP = BACKLIGHT_CMD & " -inc %v" # %v is amount by
|
||||
const DOWN = BACKLIGHT_CMD & " -dec %v" # %v is amount by
|
||||
const SET = BACKLIGHT_CMD & " -set %v" # %v is amount by
|
||||
const default_value = "5"
|
||||
|
||||
proc getBacklight(): string =
|
||||
if hostOS == "freebsd": return ""
|
||||
for dir in walkDir("/sys/class/backlight"):
|
||||
echo dir.path
|
||||
var bl = dir.path.replace("/sys/class/backlight/","")
|
||||
|
@ -50,29 +50,23 @@ proc getDesign(pcnt: float): string =
|
|||
return text
|
||||
|
||||
proc brightnessUp() =
|
||||
let cmd = replace(UP[hostOS],"%v",default_value)
|
||||
let cmd = replace(UP,"%v",default_value)
|
||||
discard execCmd(cmd)
|
||||
proc brightnessDown() =
|
||||
let cmd = replace(DOWN[hostOS],"%v",default_value)
|
||||
let cmd = replace(DOWN,"%v",default_value)
|
||||
discard execCmd(cmd)
|
||||
|
||||
proc getBrightness*(backlight: string) =
|
||||
var data = newInfo("Brightnurrs")
|
||||
if hostOS == "freebsd":
|
||||
let bl = execCmdEx("backlight")
|
||||
let pcnt = bl.output.replace("brightness: ","").strip.parseFloat
|
||||
let text = getDesign(pcnt)
|
||||
data.full_text = text
|
||||
elif backlight == "":
|
||||
if backlight == "":
|
||||
data.full_text = "No Backlight Found"
|
||||
discard outputData(data)
|
||||
quit(1)
|
||||
else:
|
||||
let limit = getLimit(backlight)
|
||||
let current = parseInt(strip(readFile("/sys/class/backlight/" & backlight & "/actual_brightness")))
|
||||
let pcnt = (current/limit)*100
|
||||
let text = getDesign(pcnt)
|
||||
data.full_text = text
|
||||
let limit = getLimit(backlight)
|
||||
let current = parseInt(strip(readFile("/sys/class/backlight/" & backlight & "/actual_brightness")))
|
||||
let pcnt = (current/limit)*100
|
||||
let text = getDesign(pcnt)
|
||||
data.full_text = text
|
||||
let args = @["up", "down"]
|
||||
let option = outputData(data,args)
|
||||
if option in args:
|
||||
|
@ -86,7 +80,7 @@ proc getBrightness*(backlight: string) =
|
|||
else:
|
||||
try:
|
||||
let i = parseInt(option)
|
||||
let cmd = replace(SET[hostOS],"%v",$i)
|
||||
let cmd = replace(SET,"%v",$i)
|
||||
discard execCmd(cmd)
|
||||
backlight.getBrightness()
|
||||
except:
|
||||
|
|
|
@ -5,7 +5,6 @@ import strutils
|
|||
import sequtils
|
||||
|
||||
import ../common
|
||||
import ../common/display
|
||||
import ../output
|
||||
import ../parser
|
||||
import ../model/screenshot
|
||||
|
@ -15,8 +14,6 @@ const FILENAME = "Screenshot-%d.png"
|
|||
const TEMP_DIR = "/tmp/"
|
||||
let DATE_STR = now().format(DATE_FORMAT)
|
||||
|
||||
let CLIPBOARD_CMD = if isWayland(): WL_CLIPBOARD_CMD else: X_CLIPBOARD_CMD
|
||||
|
||||
proc saveToClipboard(filename: string) =
|
||||
let cmd = "cat " & filename & " | " & CLIPBOARD_CMD
|
||||
let status = execCmd(cmd)
|
||||
|
|
|
@ -1,140 +0,0 @@
|
|||
import os
|
||||
import json
|
||||
import osproc
|
||||
import random
|
||||
import strutils
|
||||
import sequtils
|
||||
import httpclient
|
||||
|
||||
import ../common
|
||||
import ../common/http
|
||||
import ../common/display
|
||||
import ../parser
|
||||
import ../output
|
||||
import ../notify
|
||||
|
||||
var UNSPLASH_KEY = ""
|
||||
var BG_DIR = "/tmp/"
|
||||
var LAST_FILE = ""
|
||||
var LAST = ""
|
||||
|
||||
const UNSPLASH_URL = "https://api.unsplash.com/photos/random?query=$QUERY&orientation=landscape"
|
||||
|
||||
proc getFromUnsplash(q: var string): string =
|
||||
let dir = BG_DIR & "/unsplash/" & q & "/"
|
||||
createDir(dir)
|
||||
notify.send("Getting from Unsplash",q)
|
||||
q = q.replace(" ","%20")
|
||||
let uri = UNSPLASH_URL.replace("$QUERY",q)
|
||||
var client = newHttpClient(timeout = 10000)
|
||||
let id = "Client-ID " & UNSPLASH_KEY
|
||||
client.headers = newHttpHeaders({"Authorization": id})
|
||||
try:
|
||||
let resp = client.get(uri)
|
||||
if resp.status == $Http200:
|
||||
let j = parseJson(resp.body)
|
||||
let link = j["links"]["download"].getStr
|
||||
let filename = dir & j["slug"].getStr & ".jpg"
|
||||
let img = download(link)
|
||||
filename.save(img)
|
||||
return filename
|
||||
except:
|
||||
echo getCurrentExceptionMsg()
|
||||
|
||||
proc getFiles(dir: string): seq[string] =
|
||||
var files: seq[string] = @[]
|
||||
for file in walkDir(dir):
|
||||
if file.path.endsWith(".jpg"): files.add(file.path)
|
||||
elif file.kind == pcDir:
|
||||
files = files.concat(getFiles(file.path))
|
||||
return files
|
||||
|
||||
proc getLast() =
|
||||
LAST = readFile(LAST_FILE).strip()
|
||||
|
||||
proc setLastFileName(file: string) =
|
||||
if file.len == 0:
|
||||
echo "no file"
|
||||
return
|
||||
writeFile(LAST_FILE, file)
|
||||
LAST = file
|
||||
|
||||
proc getImageFromDir(): string =
|
||||
notify.send("Getting Random file from:",BG_DIR)
|
||||
var img_files = getFiles(BG_DIR).filter(proc(f: string): bool = f != LAST)
|
||||
randomize()
|
||||
img_files.shuffle()
|
||||
if img_files.len > 0:
|
||||
let img_file = img_files[0]
|
||||
notify.send("Found : ", img_file)
|
||||
return img_file
|
||||
notify.send("No Background Images Found")
|
||||
return ""
|
||||
|
||||
proc getCurrSwayBGPID(): string =
|
||||
let pid = execCmdEx("pgrep swaybg")
|
||||
return pid.output
|
||||
|
||||
proc killCurrSwayBGPID(pid: string) =
|
||||
sleep 2000
|
||||
discard execCmd("kill " & pid)
|
||||
|
||||
|
||||
proc setImage(img: string) =
|
||||
notify.send("Setting Background to:",img)
|
||||
if isWayland():
|
||||
let pid = getCurrSwayBGPID()
|
||||
let swaybg = "swaybg -m fill -i " & img.escape & " &"
|
||||
discard execCmd(swaybg)
|
||||
killCurrSwayBGPID(pid)
|
||||
else:
|
||||
let feh = "feh --bg-fill " & img.escape
|
||||
discard execCmdEx(feh)
|
||||
|
||||
proc setLast() =
|
||||
notify.send("Setting Background to Last", LAST)
|
||||
if isWayland():
|
||||
let pid = getCurrSwayBGPID()
|
||||
let swaybg = "swaybg -m fill -i " & LAST.escape & " &"
|
||||
discard execCmd(swaybg)
|
||||
killCurrSwayBGPID(pid)
|
||||
else:
|
||||
let feh = "feh --bg-fill " & LAST.escape
|
||||
discard execCmdEx(feh)
|
||||
|
||||
proc getDesign(): Info =
|
||||
var data = newInfo("Wallpapurr")
|
||||
return data
|
||||
|
||||
proc queryPrompt(): string =
|
||||
let data = getDesign()
|
||||
let output = data.outputData()
|
||||
return output
|
||||
|
||||
proc go*() =
|
||||
var args = parseWallpapurrArgs()
|
||||
UNSPLASH_KEY = myConfig.unsplash_key
|
||||
BG_DIR = myConfig.bg_dir
|
||||
LAST_FILE = BG_DIR & "/last.txt"
|
||||
|
||||
if args.from_unsplash and args.query == "":
|
||||
args.query = queryPrompt()
|
||||
|
||||
var img = ""
|
||||
if args.query != "" or args.from_unsplash:
|
||||
echo "Query: ", args.query
|
||||
img = getFromUnsplash(args.query)
|
||||
elif args.last:
|
||||
getLast()
|
||||
setLast()
|
||||
quit(0)
|
||||
else:
|
||||
img = getImageFromDir()
|
||||
setImage(img)
|
||||
setLastFilename(img)
|
||||
echo img
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Package
|
||||
|
||||
version = "2.0.8"
|
||||
version = "2.0.1"
|
||||
author = "Paul Wilde"
|
||||
description = "A set of informational tools"
|
||||
license = "AGPL-3.0-or-later"
|
||||
|
@ -14,7 +14,3 @@ requires "nim >= 2.0.0"
|
|||
requires "parsetoml >= 0.7.1"
|
||||
requires "argparse"
|
||||
requires "configparser"
|
||||
requires "jsony"
|
||||
|
||||
task refresh_emoji, "Refresh Emoji Library file":
|
||||
exec "nim c -r src/lib/refresh_emoji.nim"
|
||||
|
|
Loading…
Reference in a new issue