diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/2A5C0A87-204E-49EA-94A7-8E62BB4EFD8A.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/2A5C0A87-204E-49EA-94A7-8E62BB4EFD8A.png new file mode 100644 index 0000000..3c02bab Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/2A5C0A87-204E-49EA-94A7-8E62BB4EFD8A.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/CHANGELOG.md b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/CHANGELOG.md new file mode 100644 index 0000000..a74c4fb --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/CHANGELOG.md @@ -0,0 +1,28 @@ +## 0.0.5 - 2014.11.22 +### Changed +- Use `forecast-config` for managing API keys. +- Fixed bug when precipitation intensity/probability was all 0's. + +## 0.0.4 - 2014.11.21 +### Added +- Sparklines for precipitation intensity and probability for the next hour + (where applicable) and day. + +### Changed +- Bugfix for when `DEFAULT_LAT_LONG` is set and `DEFAULT_LOCATION` is not. + +## 0.0.3 - 2014.11.19 +### Added +- Forecast now uses units appropriate to the location. + +### Changed +- Fix `DEFAULT_LAT_LONG`. + +## 0.0.2 - 2014.11.19 +### Changed +- Remove minutely result for non-US locations since Forecast doesn't have this + data. + +## 0.0.1 - 2014.11.18 +### Added +- Initial release diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/README.md b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/README.md new file mode 100644 index 0000000..0fef7b1 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/README.md @@ -0,0 +1,42 @@ +# Forecast Workflow for Alfred + +![screenshot][screenshot] + +[screenshot]: http://i.imgur.com/mxGnovo.png + +# Requirements + +- [Alfred](http://www.alfredapp.com/) +- [Alfred Powerpack](http://www.alfredapp.com/powerpack/) +- OS X Mavericks + +# Installation + +Download and install the [workflow][download]. + +[download]: https://github.com/kejadlen/forecast.alfredworkflow/releases/download/0.0.5/Forecast.alfredworkflow + +Run `forecast-config VALUE` to set API keys and the default location: + +- `FORECAST_API_KEY`: Get an API key [here][forecast-api-key]. +- `GOOGLE_API_KEY`: Get an API key [here][google-api-key]. (Used for geocoding. + If you never need to search for a location, this can be omitted by using + `DEFAULT_LAT_LONG`.) +- `DEFAULT_LOCATION`: Ex. "Seattle, WA". +- `DEFAULT_LAT_LONG`: Only required if `GOOGLE_API_KEY` is unavailable, since + `DEFAULT_LOCATION` can't be geocoded. Format: `lat,long`. + +[forecast-api-key]: https://developer.forecast.io/register +[google-api-key]: https://developers.google.com/maps/documentation/geocoding/#api_key + +# TODO + +- Handle errors gracefully +- Caching? (Probably unnecessary...) +- Use `Accept-Encoding: gzip` for Forecast calls + +# Attributions + +- [Climacons](http://adamwhitcroft.com/climacons/) +- [Forecast API](https://developer.forecast.io/docs/v2) +- [Google Geocoding API](https://developers.google.com/maps/documentation/geocoding/) diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/alfred.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/alfred.rb new file mode 100644 index 0000000..67085f3 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/alfred.rb @@ -0,0 +1,89 @@ +require 'delegate' +require 'erb' +require 'yaml' + +class Items < DelegateClass(Array) + attr_reader :items + + def initialize + @items = [] + super(@items) + end + + def to_s + ERB.new(<<-XML).result(binding) + + + <%= items.map {|item| item.to_s.split("\n").map {|line| ' ' << line }}.join("\n").strip %> + + XML + end +end + +class Item + attr_reader *%i[ uid arg valid + title subtitle icon ] + def initialize(**kwargs) + @uid = kwargs.fetch(:uid).to_s.encode(xml: :attr) + @arg = kwargs[:arg].to_s.encode(xml: :attr) + @valid = kwargs.fetch(:valid, false) ? 'yes' : 'no' + @title = kwargs.fetch(:title).encode(xml: :text) + @subtitle = kwargs[:subtitle] && kwargs[:subtitle].encode(xml: :text) + @icon = kwargs[:icon] && kwargs[:icon].encode(xml: :text) + end + + def to_s + ERB.new(<<-XML, nil, '%>').result(binding) + uid=<%= uid %> valid="<%= valid %>"> + <%= title %> +% if subtitle + <%= subtitle %> +% end +% if icon + <%= icon %> +% end + + XML + end +end + +module Alfred + class Config + def self.[](key) + config[key] + end + + def self.[]=(key, value) + config[key] = value + end + + def self.config + return @config if defined?(@config) + + bundle_id = `/usr/libexec/PlistBuddy info.plist -c 'print :bundleid'`.strip + @config = self.new(bundle_id) + end + + WORKFLOW_DATA = '~/Library/Application Support/Alfred 2/Workflow Data/' + + attr_reader :path + attr_accessor :config + + def initialize(bundle_id) + dir = File.expand_path(File.join(WORKFLOW_DATA, bundle_id)) + Dir.mkdir(dir) unless Dir.exist?(dir) + + @path = File.join(dir, 'config.yml') + @config = File.exist?(@path) ? YAML.load_file(@path) : {} + end + + def [](key) + config.fetch(key) { '' } + end + + def []=(key, value) + config[key] = value + File.write(path, YAML.dump(config)) + end + end +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/forecast-config.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/forecast-config.rb new file mode 100644 index 0000000..df61417 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/forecast-config.rb @@ -0,0 +1,26 @@ +require_relative 'alfred' + +OPTIONS = %w[ FORECAST_API_KEY + GOOGLE_API_KEY + DEFAULT_LOCATION + DEFAULT_LAT_LONG ] + +input = ARGV.shift || '' + +items = Items.new +OPTIONS.each do |option| + title = if input.empty? + "Unset #{option}" + else + "Set #{option} to #{input}" + end + items << Item.new( + uid: option, + arg: "Alfred::Config['#{option}'] = '#{input}'", + valid: true, + title: title, + subtitle: Alfred::Config[option], + ) +end + +puts items.to_s diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/forecast.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/forecast.rb new file mode 100644 index 0000000..dd24d3e --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/forecast.rb @@ -0,0 +1,138 @@ +require 'delegate' +require 'erb' +require 'yaml' + +require_relative 'alfred' +require_relative 'forecaster' +require_relative 'location' +require_relative 'spark' + +ICONS = { + 'clear-day' => 'Sun', + 'clear-night' => 'Moon', + 'rain' => 'Cloud-Rain', + 'snow' => 'Cloud-Snow', + 'sleet' => 'Cloud-Snow-Alt', + 'wind' => 'Wind', + 'fog' => 'Cloud-Fog', + 'cloudy' => 'Cloud', + 'partly-cloudy-day' => 'Cloud-Sun', + 'partly-cloudy-night' => 'Cloud-Moon', +} + +Precipitation = Struct.new(:intensity, :probability) do + def self.from_forecast(forecast) + self.new(*forecast.values_at('precipIntensity', 'precipProbability')) + end + + def human_intensity + case intensity + when 0...0.002 + 'no' + when 0.002...0.017 + 'very light' + when 0.017...0.1 + 'light' + when 0.1...0.4 + 'moderate' + else + 'heavy' + end + end + + def to_s + "#{(probability*100).to_i}% chance of #{human_intensity} rain." + end +end + +query = ARGV.shift || '' +location = if query.empty? + lat, long = Alfred::Config['DEFAULT_LAT_LONG'].split(?,).map(&:to_f) + Location.new(Alfred::Config['DEFAULT_LOCATION'], lat, long) + else + Location.new(query) + end +forecast = Forecaster.forecast(location) + +items = Items.new + +items << Item.new( + uid: :location, + arg: "#{location.lat.round(4)},#{location.long.round(4)}", + valid: true, + title: location.name, + icon: 'icons/forecast.ico', +) + +currently = forecast['currently'] +precip = Precipitation.from_forecast(currently) +subtitle = [ "#{currently['temperature'].round}°" ] +subtitle << "Feels like #{currently['apparentTemperature'].round}°" +subtitle << precip.to_s if precip.probability > 0 +items << Item.new( + uid: :currently, + title: currently['summary'], + subtitle: subtitle.join(' · '), + icon: "icons/#{ICONS[currently['icon']]}.png", +) + +minutely = forecast['minutely'] +if minutely + intensity = minutely['data'].map {|m| 1000 * m['precipIntensity'] } + intensity = intensity.select.with_index {|_,i| i % 5 == 0 } + min, max = intensity.minmax + + subtitle = ["#{min.round}\" #{Spark.new(intensity)} #{max.round}\""] + + probability = minutely['data'].map {|m| (100 * m['precipProbability']).round } + probability = probability.select.with_index {|_,i| i % 5 == 0 } + min, max = probability.minmax + + subtitle << "#{min}% #{Spark.new(probability, max: 100)} #{max}%" + + items << Item.new( + uid: :minutely, + title: minutely['summary'], + subtitle: subtitle.join(' · '), + icon: "icons/#{ICONS[minutely['icon']]}.png", + ) +end + +hourly = forecast['hourly'] + +intensity = hourly['data'].map {|m| 1000 * m['precipIntensity'] } +intensity = intensity.select.with_index {|_,i| i % 4 == 0 } +min, max = intensity.minmax + +subtitle = ["#{min.round}\" #{Spark.new(intensity)} #{max.round}\""] + +probability = hourly['data'].map {|m| (100 * m['precipProbability']).round } +probability = probability.select.with_index {|_,i| i % 4 == 0 } +min, max = probability.minmax + +subtitle << "#{min}% #{Spark.new(probability, max: 100)} #{max}%" + +items << Item.new( + uid: :hourly, + title: hourly['summary'], + subtitle: subtitle.join(' · '), + icon: "icons/#{ICONS[hourly['icon']]}.png", +) + +forecast['daily']['data'][1..6].each do |data| + wday = Time.at(data['time']).strftime('%A') + precip = Precipitation.from_forecast(data) + + subtitle = [ "Low: #{data['apparentTemperatureMin'].round}°", + "High: #{data['apparentTemperatureMax'].round}°" ] + subtitle << precip.to_s if precip.probability > 0 + + items << Item.new( + uid: wday, + title: "#{wday} - #{data['summary']}", + subtitle: subtitle.join(' · '), + icon: "icons/#{ICONS[data['icon']]}.png", + ) +end + +puts items.to_s diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/forecaster.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/forecaster.rb new file mode 100644 index 0000000..7379bd3 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/forecaster.rb @@ -0,0 +1,23 @@ +require 'json' +require 'open-uri' + +require_relative 'alfred' + +Forecaster = Struct.new(:api_key) do + def self.forecast(location) + forecaster.forecast(location) + end + + def self.forecaster + return @forecaster if defined?(@forecaster) + + @forecaster = self.new(Alfred::Config['FORECAST_API_KEY']) + end + + def forecast(location) + lat, long = location.lat, location.long + url = "https://api.forecast.io/forecast/#{api_key}/#{lat},#{long}?units=auto" + response = JSON.load(open(url)) + end +end + diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/geocoder.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/geocoder.rb new file mode 100644 index 0000000..e397a8e --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/geocoder.rb @@ -0,0 +1,30 @@ +require 'json' +require 'open-uri' +require 'uri' + +require_relative 'alfred' + +Geocoder = Struct.new(:api_key) do + def self.geocode(location) + geocoder.geocode(location) + end + + def self.geocoder + return @geocoder if defined?(@geocoder) + + @geocoder = self.new(Alfred::Config['GOOGLE_API_KEY']) + end + + def geocode(location) + url = 'https://maps.googleapis.com/maps/api/geocode/json' + query = URI.encode_www_form(address: location, api_key: api_key) + response = JSON.load(open("#{url}?#{query}")) + result = response['results'][0] + + name = result['formatted_address'] + location = result['geometry']['location'] + lat, long = location.values_at('lat', 'lng') + + [name, lat, long] + end +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icon.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icon.png new file mode 100644 index 0000000..1d96821 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icon.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Download.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Download.png new file mode 100644 index 0000000..4187ce2 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Download.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Drizzle-Alt.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Drizzle-Alt.png new file mode 100644 index 0000000..31f4e8d Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Drizzle-Alt.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Drizzle-Moon-Alt.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Drizzle-Moon-Alt.png new file mode 100644 index 0000000..d51e635 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Drizzle-Moon-Alt.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Drizzle-Moon.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Drizzle-Moon.png new file mode 100644 index 0000000..079ae74 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Drizzle-Moon.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Drizzle-Sun-Alt.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Drizzle-Sun-Alt.png new file mode 100644 index 0000000..f40345e Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Drizzle-Sun-Alt.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Drizzle-Sun.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Drizzle-Sun.png new file mode 100644 index 0000000..bc475f4 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Drizzle-Sun.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Drizzle.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Drizzle.png new file mode 100644 index 0000000..eadc3e3 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Drizzle.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Fog-Alt.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Fog-Alt.png new file mode 100644 index 0000000..24e2d6f Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Fog-Alt.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Fog-Moon-Alt.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Fog-Moon-Alt.png new file mode 100644 index 0000000..1359eee Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Fog-Moon-Alt.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Fog-Moon.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Fog-Moon.png new file mode 100644 index 0000000..bf148f9 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Fog-Moon.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Fog-Sun-Alt.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Fog-Sun-Alt.png new file mode 100644 index 0000000..5179981 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Fog-Sun-Alt.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Fog-Sun.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Fog-Sun.png new file mode 100644 index 0000000..cbc7e7f Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Fog-Sun.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Fog.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Fog.png new file mode 100644 index 0000000..b02b45e Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Fog.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Hail-Alt.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Hail-Alt.png new file mode 100644 index 0000000..76cd34e Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Hail-Alt.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Hail-Moon-Alt.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Hail-Moon-Alt.png new file mode 100644 index 0000000..5671d7c Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Hail-Moon-Alt.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Hail-Moon.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Hail-Moon.png new file mode 100644 index 0000000..23b98d1 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Hail-Moon.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Hail-Sun-Alt.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Hail-Sun-Alt.png new file mode 100644 index 0000000..4704ebd Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Hail-Sun-Alt.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Hail-Sun.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Hail-Sun.png new file mode 100644 index 0000000..66d052b Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Hail-Sun.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Hail.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Hail.png new file mode 100644 index 0000000..9d03310 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Hail.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Lightning-Moon.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Lightning-Moon.png new file mode 100644 index 0000000..f02c182 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Lightning-Moon.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Lightning-Sun.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Lightning-Sun.png new file mode 100644 index 0000000..9768843 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Lightning-Sun.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Lightning.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Lightning.png new file mode 100644 index 0000000..01a3725 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Lightning.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Moon.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Moon.png new file mode 100644 index 0000000..78fd657 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Moon.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Rain-Alt.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Rain-Alt.png new file mode 100644 index 0000000..e0ae91e Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Rain-Alt.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Rain-Moon-Alt.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Rain-Moon-Alt.png new file mode 100644 index 0000000..3dee696 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Rain-Moon-Alt.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Rain-Moon.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Rain-Moon.png new file mode 100644 index 0000000..752b309 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Rain-Moon.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Rain-Sun-Alt.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Rain-Sun-Alt.png new file mode 100644 index 0000000..3d394c6 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Rain-Sun-Alt.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Rain-Sun.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Rain-Sun.png new file mode 100644 index 0000000..874b6f2 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Rain-Sun.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Rain.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Rain.png new file mode 100644 index 0000000..ac81b60 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Rain.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Refresh.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Refresh.png new file mode 100644 index 0000000..8131b78 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Refresh.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Snow-Alt.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Snow-Alt.png new file mode 100644 index 0000000..397934c Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Snow-Alt.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Snow-Moon-Alt.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Snow-Moon-Alt.png new file mode 100644 index 0000000..0c98467 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Snow-Moon-Alt.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Snow-Moon.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Snow-Moon.png new file mode 100644 index 0000000..0627039 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Snow-Moon.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Snow-Sun-Alt.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Snow-Sun-Alt.png new file mode 100644 index 0000000..11468ea Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Snow-Sun-Alt.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Snow-Sun.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Snow-Sun.png new file mode 100644 index 0000000..1aad15d Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Snow-Sun.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Snow.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Snow.png new file mode 100644 index 0000000..dfc8731 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Snow.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Sun.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Sun.png new file mode 100644 index 0000000..09e754c Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Sun.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Upload.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Upload.png new file mode 100644 index 0000000..8f88ab3 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Upload.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Wind-Moon.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Wind-Moon.png new file mode 100644 index 0000000..b837e38 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Wind-Moon.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Wind-Sun.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Wind-Sun.png new file mode 100644 index 0000000..cc0b3e6 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Wind-Sun.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Wind.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Wind.png new file mode 100644 index 0000000..929b81a Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud-Wind.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud.png new file mode 100644 index 0000000..9419d36 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Cloud.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Compass-East.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Compass-East.png new file mode 100644 index 0000000..6468a60 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Compass-East.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Compass-North.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Compass-North.png new file mode 100644 index 0000000..417066e Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Compass-North.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Compass-South.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Compass-South.png new file mode 100644 index 0000000..f5a7484 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Compass-South.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Compass-West.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Compass-West.png new file mode 100644 index 0000000..22d9eac Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Compass-West.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Compass.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Compass.png new file mode 100644 index 0000000..12ffc33 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Compass.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Degrees-Celcius.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Degrees-Celcius.png new file mode 100644 index 0000000..7e8e593 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Degrees-Celcius.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Degrees-Fahrenheit.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Degrees-Fahrenheit.png new file mode 100644 index 0000000..cfba4a5 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Degrees-Fahrenheit.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-First-Quarter.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-First-Quarter.png new file mode 100644 index 0000000..eb5db64 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-First-Quarter.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-Full.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-Full.png new file mode 100644 index 0000000..d59ab86 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-Full.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-Last-Quarter.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-Last-Quarter.png new file mode 100644 index 0000000..04823cc Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-Last-Quarter.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-New.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-New.png new file mode 100644 index 0000000..1ac14eb Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-New.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-Waning-Crescent.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-Waning-Crescent.png new file mode 100644 index 0000000..46b4b4b Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-Waning-Crescent.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-Waning-Gibbous.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-Waning-Gibbous.png new file mode 100644 index 0000000..5916506 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-Waning-Gibbous.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-Waxing-Crescent.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-Waxing-Crescent.png new file mode 100644 index 0000000..8f02971 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-Waxing-Crescent.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-Waxing-Gibbous.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-Waxing-Gibbous.png new file mode 100644 index 0000000..67daddb Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon-Waxing-Gibbous.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon.png new file mode 100644 index 0000000..8f55b3f Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Moon.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Shades.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Shades.png new file mode 100644 index 0000000..bf979e5 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Shades.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Snowflake.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Snowflake.png new file mode 100644 index 0000000..380f49d Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Snowflake.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Sun-Low.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Sun-Low.png new file mode 100644 index 0000000..2b3cd27 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Sun-Low.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Sun-Lower.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Sun-Lower.png new file mode 100644 index 0000000..4696a7b Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Sun-Lower.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Sun.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Sun.png new file mode 100644 index 0000000..b7fbb7d Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Sun.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Sunrise.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Sunrise.png new file mode 100644 index 0000000..bbb7e27 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Sunrise.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Sunset.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Sunset.png new file mode 100644 index 0000000..4919d59 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Sunset.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Thermometer-100.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Thermometer-100.png new file mode 100644 index 0000000..4ae9592 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Thermometer-100.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Thermometer-25.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Thermometer-25.png new file mode 100644 index 0000000..43f1655 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Thermometer-25.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Thermometer-50.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Thermometer-50.png new file mode 100644 index 0000000..0ab9fad Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Thermometer-50.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Thermometer-75.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Thermometer-75.png new file mode 100644 index 0000000..3d81d8a Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Thermometer-75.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Thermometer-Zero.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Thermometer-Zero.png new file mode 100644 index 0000000..a0d446b Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Thermometer-Zero.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Thermometer.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Thermometer.png new file mode 100644 index 0000000..580a9f3 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Thermometer.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Tornado.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Tornado.png new file mode 100644 index 0000000..b0d9a6a Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Tornado.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Umbrella.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Umbrella.png new file mode 100644 index 0000000..73d8666 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Umbrella.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Wind.png b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Wind.png new file mode 100644 index 0000000..e7bef73 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/Wind.png differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/forecast.ico b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/forecast.ico new file mode 100644 index 0000000..69040d4 Binary files /dev/null and b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/icons/forecast.ico differ diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/info.plist b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/info.plist new file mode 100644 index 0000000..0813733 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/info.plist @@ -0,0 +1,159 @@ + + + + + bundleid + com.kejadlen.forecast + category + Internet + connections + + 2A5C0A87-204E-49EA-94A7-8E62BB4EFD8A + + + destinationuid + 5E2D96BA-31B2-4800-9A2B-B999285680A0 + modifiers + 0 + modifiersubtext + + + + 450E8285-E286-4D33-AADF-1ACF99F41031 + + + destinationuid + 373F7A50-59E2-4225-B665-E63FBBBAF7E5 + modifiers + 0 + modifiersubtext + + + + + createdby + Alpha Chen + description + + disabled + + name + Forecast + objects + + + config + + plusspaces + + url + http://forecast.io/#/f/{query} + utf8 + + + type + alfred.workflow.action.openurl + uid + 5E2D96BA-31B2-4800-9A2B-B999285680A0 + version + 0 + + + config + + argumenttype + 1 + escaping + 127 + keyword + forecast + runningsubtext + Retriving location/weather... + script + ruby forecast.rb {query} + title + Forecast + type + 0 + withspace + + + type + alfred.workflow.input.scriptfilter + uid + 2A5C0A87-204E-49EA-94A7-8E62BB4EFD8A + version + 0 + + + config + + escaping + 0 + script + ruby -r./alfred -e "{query}" + type + 0 + + type + alfred.workflow.action.script + uid + 373F7A50-59E2-4225-B665-E63FBBBAF7E5 + version + 0 + + + config + + argumenttype + 1 + escaping + 127 + keyword + forecast-config + script + ruby forecast-config.rb {query} + title + Configure the Forecast workflow + type + 0 + withspace + + + type + alfred.workflow.input.scriptfilter + uid + 450E8285-E286-4D33-AADF-1ACF99F41031 + version + 0 + + + readme + + uidata + + 2A5C0A87-204E-49EA-94A7-8E62BB4EFD8A + + ypos + 10 + + 373F7A50-59E2-4225-B665-E63FBBBAF7E5 + + ypos + 130 + + 450E8285-E286-4D33-AADF-1ACF99F41031 + + ypos + 130 + + 5E2D96BA-31B2-4800-9A2B-B999285680A0 + + ypos + 10 + + + webaddress + http://github.com/kejadlen/forecast.alfredworkflow + + diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/location.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/location.rb new file mode 100644 index 0000000..bbe7b2b --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/location.rb @@ -0,0 +1,16 @@ +require_relative 'geocoder' + +class Location + attr_accessor :name, :lat, :long, :geocoder + + def initialize(name, lat=nil, long=nil, geocoder=Geocoder) + @name, @lat, @long, @geocoder = name, lat, long, geocoder + + geocode! unless lat && long + end + + def geocode! + self.name, self.lat, self.long = geocoder.geocode(name) + end +end + diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/spark.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/spark.rb new file mode 100644 index 0000000..b6bed93 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/spark.rb @@ -0,0 +1,17 @@ +class Spark + # TICKS = %w[▁ ▂ ▃ ▄ ▅ ▆ ▇ █] # Alfred doesn't render the last bar correctly + # for some reason... + TICKS = %w[▁ ▂ ▃ ▄ ▅ ▆ ▇] + + attr_reader :data, :min, :max + + def initialize(data, **kwargs) + @data = data.map(&:round) + @min = kwargs.fetch(:min) { 0 } + @max = [(kwargs.fetch(:max) { data.max }).to_f, 1.0].max + end + + def to_s + data.map {|i| TICKS[(TICKS.size - 1) * (i - min) / max] }.join + end +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/test_alfred.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/test_alfred.rb new file mode 100644 index 0000000..ca519b0 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/test_alfred.rb @@ -0,0 +1,22 @@ +require 'minitest/autorun' + +require_relative 'alfred' + +class TestConfig < Minitest::Test + def setup + @config = Alfred::Config.new('com.kejadlen.test') + end + + def teardown + File.delete(@config.path) if File.exist?(@config.path) + end + + def test_config + assert_nil @config[:foo] + + @config[:foo] = 123 + assert_equal 123, @config[:foo] + assert File.exist?(@config.path) + assert_equal '{:foo=>123}', File.read(@config.path) + end +end diff --git a/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/test_spark.rb b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/test_spark.rb new file mode 100644 index 0000000..9f99290 --- /dev/null +++ b/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.8694C3FC-8218-4B98-BB1F-F1CEC686477C/test_spark.rb @@ -0,0 +1,10 @@ +require 'minitest/autorun' + +require_relative 'spark' + +class TestSpark < Minitest::Test + def test_div_by_zero + spark = Spark.new([0, 0, 0]) + assert_equal '▁▁▁', spark.to_s + end +end