├── .github
└── FUNDING.yml
├── .gitignore
├── .jshintrc
├── .rubocop.yml
├── .test.py
├── .travis.yml
├── AWS
├── asg-status.5m.sh
├── awsmonthcost.1h.sh
├── cloudwatch-alarms.30s.py
├── ec2-start-stop.1h.sh
├── ecs-cluster.10m.sh
├── elb.30s.sh
├── pipeline-status.1m.py
├── profile-changer.1s.sh
└── sqs-status.1m.sh
├── CONTRIBUTING.md
├── Cloud
├── GCP
│ └── gcp-project-switcher.1d.sh
└── scaleway.sh
├── Cryptocurrency
├── 99-crypto.py
├── Bitcoin
│ ├── bitcoin.de
│ │ └── last.30s.sh
│ ├── bitfinex.com
│ │ ├── bitfinex_all.sh
│ │ └── bitfinex_btcusd.sh
│ ├── bitoex.com
│ │ └── bitoex-buy-and-sell.10s.sh
│ ├── bitstamp.net
│ │ └── last.10s.sh
│ ├── bitx.co
│ │ └── buy-and-sell.1m.py
│ ├── blocktime.10s.sh
│ ├── btc.5m.sh
│ ├── coinbase.com
│ │ ├── accounts.1h.rb
│ │ ├── balance.1h.sh
│ │ ├── buy-and-sell.10s.sh
│ │ ├── buy.10s.sh
│ │ ├── sell.10s.sh
│ │ ├── spot-buy-and-sell.1m.sh
│ │ └── spotrate.10s.sh
│ ├── coinmarketcap.com
│ │ ├── btc-gbp.py
│ │ └── btc-usd.py
│ ├── coinone.co.kr
│ │ └── coinone.15s.py
│ ├── huobi.com
│ │ └── huobiprice.1s.py
│ ├── mayer-multiple.sh
│ ├── mempool.sh
│ ├── tr-markets.1m.py
│ └── winkdex.com
│ │ └── winkdex.1m.sh
├── Blackcoin
│ ├── blk-gbp.py
│ └── blk-usd.py
├── CoinbaseBuy.1m.rkt
├── CoinbasePrices.sh
├── CryptoPrices.5m.sh
├── Dash
│ ├── dash-coincap-binance.5m.sh
│ └── dash-coincap-poloniex.5m.sh
├── Dogecoin
│ ├── doge-gbp.py
│ └── doge-usd.py
├── Ethereum
│ ├── eth-gbp.py
│ ├── eth-usd.1s.py
│ ├── eth.5m.sh
│ ├── eth_all_in_one.5s.sh
│ ├── eth_basefee.30s.sh
│ ├── eth_gas_widget.10m.rb
│ ├── eth_wallet_balances.1m.py
│ ├── ethbtc.sh
│ ├── ether-eur-kraken.30s.sh
│ ├── ethgas.1m.sh
│ ├── ethminer.5s.py
│ ├── ethusd.1m.sh
│ └── gasnow.10s.sh
├── Helium
│ └── helium-hotspot-rewards.15m.js
├── Lisk
│ ├── lsk-gbp.py
│ ├── lsk-usd.py
│ └── lskbtc.sh
├── Litecoin
│ ├── ltc-gbp.py
│ ├── ltc-usd.1s.py
│ └── ltc.5m.sh
├── Monero
│ ├── monero-btc-bitfinex.30s.sh
│ ├── monero-btc-kraken.30s.sh
│ ├── monero-btc-poloniex.30s.sh
│ ├── monero-cny-bter.30s.sh
│ ├── monero-usd-bitfinex.30s.sh
│ ├── monero-usd-kraken.30s.sh
│ └── monero-usd-poloniex.30s.sh
├── Polygon
│ └── polygon_gas_widget.10m.rb
├── Ripple
│ ├── xrp-gbp.py
│ ├── xrp-usd.py
│ └── xrpusd.1m.sh
├── Solana
│ └── Solana_Price_Ticker.30s.py
├── SurBTC-Ticker.10m.sh
├── Vertcoin
│ ├── vtc-btc-bittrex.30s.sh
│ └── vtc-btc-bittrex_detail.30s.sh
├── binance-ticker.6s.py
├── bitso-btc-eth-xrp.30s.sh
├── bitso-prices.10s.sh
├── btcmarkets.10s.sh
├── c20.py
├── cardano.10s.py
├── coin-alert.5s.sh
├── coincap.1m.py
├── coincaplite.1m.py
├── coinmarketcap.30m.py
├── cryptocompare-portfolio.1m.rb
├── decred-btc-poloniex.30s.sh
├── garlicoin.1m.sh
├── guild.1m.py
├── mempool.space
├── miner_stat_fetch.1m.py
├── nomics_bitbar.py
├── okx_ticker.10s.py
└── slushpool.5m.js
├── Dev
├── Acquia
│ ├── .INSTALL.md
│ ├── .acquia-includes.php
│ ├── 001-acquia-list-apps.1h.php
│ └── 001-acquia-list-ides.1h.php
├── AzureDevOps
│ └── build-status.1m.js
├── Buildkite
│ └── buildkite.1m.sh
├── Codeship
│ ├── codeship-single.30s.py
│ ├── codeship.1m.js
│ └── codeship.1m.py
├── Docker
│ ├── docker-disk.1m.sh
│ ├── docker-stats.10s.sh
│ ├── docker-status.1m.sh
│ ├── docker-sync-status.1m.sh
│ └── numContainers.5s.sh
├── Git
│ ├── DevStatus.10m.sh
│ ├── daily-standup.sh
│ ├── get_pull_requests_bitbar.1h.rb
│ └── gitfinderinfo.1s.sh
├── GitHub
│ ├── gh.5m.js
│ ├── github-ci.1m.php
│ ├── github-contribution.10m.rb
│ ├── github-pr-buddy.30m.py
│ ├── github-release-buddy.30m.py
│ ├── github-review-requests-TS-5m.ts
│ ├── github-review-requests.5m.py
│ ├── github-trending.1h.rb
│ ├── github_status.10m.py
│ ├── github_watch.1h.rb
│ ├── github_work_list.1m.mjs
│ ├── merge-freeze.5m.rb
│ ├── notifications.30s.py
│ ├── prnotii.5m.js
│ ├── pull-requests.5m.js
│ ├── repo-issues.5m.js
│ └── swift-trending.15m.swift
├── Gitlab
│ ├── gitlab-ci-status.5s.sh
│ ├── gitlab_ci.1m.py
│ ├── gitlab_glance.15m.py
│ ├── gitlab_merge_requests.1m.js
│ ├── gitlab_projects.js
│ └── gitlab_status.10m.sh
├── Homebrew
│ ├── brew-services.10m.rb
│ └── brew-updates.1h.rb
├── Hosting
│ ├── DigitalOcean
│ │ └── digitalocean.1h.js
│ ├── Heroku
│ │ ├── heroku.1m.rb
│ │ ├── herokuappserrors.1h.rb
│ │ └── listapps.5m.sh
│ └── Linode
│ │ └── Linode.5m.php
├── Jenkins
│ ├── jenkins-agent-status.5m.sh
│ ├── jenkins-all-jobs.status.1m.py
│ ├── jenkins-latest-build-status.1m.rb
│ ├── jenkins-multiple-projects-status.1m.sh
│ └── jenkins-status.1m.sh
├── Jira
│ ├── jira-issues.10m.py
│ └── jira.1m.sh
├── Kaiten
│ └── kaiten-dashboard.5m.sh
├── Kubernetes
│ ├── k-get-pods.30s.sh
│ ├── kubecontext.1s.py
│ ├── kubeswitcher.1m.sh
│ └── minikube.5s.sh
├── Nagios
│ ├── nagios.30s.sh
│ └── thruk.py
├── NugetDownloadCount.5h.py
├── PID
│ └── pidkiller.sh
├── Pastebin
│ └── pastebin.3m.sh
├── PhpStormXdebugStatus.3s.sh
├── Shell
│ ├── aka.1h.sh
│ └── run-fastlane.rb
├── SshMenu.sh
├── Tutorial
│ ├── alternate_options.sh
│ ├── ansi.sh
│ ├── config.sh
│ ├── cycle_text_and_detail.sh
│ ├── emoji.sh
│ ├── images.sh
│ ├── is_bitbar.sh
│ ├── is_darkmode.sh
│ ├── refresh.sh
│ └── submenus.sh
├── Vagrant
│ ├── vagrant.2m.pl
│ └── vagrant.30s.pl
├── Wakatime
│ └── wakatime.1m.js
├── appcenter-status.1m.rb
├── average_app_store_review_times.1h.rb
├── backlog-show-my-task.1m.rb
├── bamboo_build_status.1m.sh
├── buildbot9_status.py
├── checkRedisMemory.sh
├── checkman.10s.rb
├── circleci-check.5m.py
├── cloudflare.1m.js
├── clubhouse.rb
├── colima-status.2s.sh
├── colima.10s.sh
├── drone-status.1m.sh
├── emacs-package-updates.1h.sh
├── gerrit_incoming_crs.5m.py
├── getopenPRs.10m.sh
├── git_python.5m.py
├── gogs-issues.5m.js
├── gosquared-now.30s.py
├── gulpLauncher.1h.js
├── icinga2-status.py
├── icinga2.24m.py
├── ips.30s.sh
├── lightsalmon.12h.sh
├── mac-mux.sh
├── machinebox.1m.sh
├── meta_package_manager.7h.py
├── noti.1m.py
├── ntl-site-status.1m.js
├── pantheon-list-sites.1h.php
├── podman.5s.sh
├── process-monitoring.1s.sh
├── project-list.5m.js
├── rabbitmq-status.1m.php
├── redmine-show-my-task.1m.rb
├── rescuetime.1h.py
├── sentry.5m.js
├── servicemonitor.1m.py
├── stash-pull-requests.2m.rb
├── tail.5s.sh
├── totp.20s.sh
├── travis-check.2m.py
├── uptimekuma.30s.py
├── utimerobot.30s.py
├── vigil-check.5m.js
├── virtualbox-running_vms.30s.rb
├── vso-pull-requests.1m.js
└── xcode-version.1h.sh
├── E-Commerce
├── Shopibar.15m.js
└── nvidia.3m.py
├── Email
├── gmail-checker-improved.1m.pl
├── gmail-checker.sh
├── imap.1m.rb
├── mu-email-checker.sh
├── notmuch-mail-count.30s.rb
├── offlineimap-notification.1s.py
├── simple-gmail-checker.sh
├── simple-mail-checker.1m.py
└── unread.1m.sh
├── Enabled
└── .gitignore
├── Environment
├── CO2-Signal.10m.py
├── carbon-intensity.15m.js
├── carbon-intensity.1h.js
├── conda-envs.15m.py
├── corona.1h.sh
├── covid-19_stats.15m.sh
├── covid-19_today.15m.sh
├── electricitymaps.5m.py
├── quake.1m.sh
└── solaredge.5m.py
├── Finance
├── 001-options.1h.go
├── awin-sales.60s.py
├── dolar_blue.5m.py
├── exchange-rates.5m.sh
├── ginmon.1d.sh
├── hours.1m.py
├── mintable.1h.zsh
├── moex.1m.rb
├── precious-metals.1h.php
├── rbc.10m.sh
├── robinhood.1m.py
├── robinhood2.1m.py
├── shiller-pe.4h.sh
├── stock-ticker.30s.py
├── stock.5s.sh
├── teller-track-spending.1h.sh
├── transferwise-currency-tracker.1m.py
└── yahoo_stock_ticker.10m.py
├── Games
├── baj.2m.sh
├── bgo.2m.sh
├── jackpot.6h.py
├── minecraftplayers.1m.py
├── riggedCoinFlip.1h.sh
├── steam-dashboard.1m.sh
├── wordle.py
└── xboxfeed.10m.js
├── Google
└── gcloud-start-stop.10m.sh
├── IoT
├── BMWcharge.15m.py
├── evcc.10s.rb
├── homebridge.10s.py
└── wled.1m.js
├── Lifestyle
├── SaveToLinkPack.1h.rb
├── Things
│ ├── thingsdoingnow.10s.sh
│ ├── thingsinbox.6s.sh
│ └── thingstoday.6s.sh
├── Todo
│ ├── NotePlan3.15m.rb
│ ├── noteplan-menubar-56px.b64
│ ├── todo-md.30s.pl
│ ├── todo.15m.rb
│ ├── todo.30s.sh
│ └── todoNotePlan.15m.rb
├── Trello
│ ├── trello_board.30s.py
│ └── trello_notifications.15m.sh
├── USCIS_CaseStatusUpdates.15m.sh
├── ZoomsToday
│ ├── open-zoom.sh
│ └── zooms-today.1h.sh
├── bear-calls.sh
├── brewfather-batch-status.15m.js
├── church-liturgical-calendar.1h.sh
├── current_task.1m.rb
├── dadjokes.5m.sh
├── deathTimer.5m.py
├── digital-zeitgebers.30m.py
├── fortune.5m.sh
├── githubzen.1m.py
├── habitica.1h.js
├── iss.1m.sh
├── journal.sh
├── librelinkup.1m.py
├── memento_mori.py
├── moon-phase.1h.js
├── muezzin.5m.sh
├── nightscout.1m.sh
├── org-agenda.30m.rb
├── qurandaily.1d.py
├── random_quotes.5m.sh
├── sleepingtime.1m.sh
├── smile.12h.sh
├── sureflap.15s.rb
├── syncthing-conflicts.10m.py
├── syncthing.10s.sh
├── taskpaper.10s.py
├── taskpaper_current_task.29s.py
├── taskwarrior.4m.py
├── tescomobileirl.1h.py
├── text_on_menubar.1h.py
├── time_on_earth.10m.rb
├── todoist.1m.py
├── track-correios-packages.1h.js
├── transmission.4m.py
├── unsplash-background.3h.sh
├── votd.1d.rb
├── wallpaperbing.1h.sh
├── write-into-menubar-bitbar-plugin.1s.sh
├── zoom-avs-status.1s.scpt
├── zoom_mute.3s.sh
├── zoom_onair.15s.py
└── zoom_shortcuts.1d.sh
├── Music
├── airconnect.1d.sh
├── bbitunes.10s.sh
├── check-lms.10s.pl
├── cmus.10s.sh
├── fip.1m.sh
├── itunes.10s.sh
├── itunesRating.10s.sh
├── ksing.1d.py
├── lastfm.10s.rb
├── mpd-control.20s.sh
├── music-controls-info.10s.sh
├── music-controls-like.10s.sh
├── music-controls-next.10s.sh
├── music-controls-playpause.10s.sh
├── music-controls-previous.10s.sh
├── music.10s.sh
├── musicRating.10s.sh
├── nowplaying.5s.sh
├── pianobarctl.15s.sh
├── plex-status-improved-30s.py
├── plex-status.1m.sh
├── quodlibet-control.1s.py
├── songkick.1d.py
├── sonosBar.py
├── spotctl.10s.sh
├── spotify-next.1d.sh
├── spotify-pause.9999d.sh
├── spotify.10s.sh
├── swinsian.10s.sh
└── vox.30s.sh
├── Network
├── 001-bandwidth_KBps_MBps.1s.sh
├── SSH-Remotes.1d.sh
├── TRIPPing.1h.sh
├── aria2.3s.py
├── aria2.sh
├── bandwidth-test-min.2h.sh
├── bandwidth-test.2h.sh
├── bandwidth.1s.py
├── bandwidth.1s.sh
├── bandwidth_all.1s.sh
├── bandwidth_primary.1s.sh
├── bandwidth_total.2s.lua
├── bitping.10s.sh
├── bluetooth_connection.5s.sh
├── checkhosts.1m.go
├── dnscrypt-proxy-switcher.10s.sh
├── dnsswitcher.1d.sh
├── emoji-active-network-interface.sh
├── external-ip-1.0.1h.sh
├── external-ip.1h.sh
├── got-internet.2s.sh
├── iCloud-Private-Relay-Status.6m.sh
├── iTermSshMenu.sh
├── internal-ip.1h.sh
├── internet-status.2s.sh
├── ip-flag.2m.rb
├── isccond.5m.sh
├── mrd-quick-connect.5s.js
├── mullvad-vpn-status.5m.sh
├── netinfo.60s.sh
├── netstats.5s.sh
├── network-latency.5s.py
├── network-location.1h.sh
├── network-toggler.sh
├── nord-vpn-status.js
├── openfortivpn.sh
├── openvpn.5m.sh
├── pi-hole.10m.py
├── pia-vpn-status.5m.sh
├── ping.10s.sh
├── pivpn.1m.php
├── protonvpn.15m.py
├── proxy_status.5s.sh
├── sbcdash-client.1h.py
├── sent-received.1s.sh
├── simple-latency.11s.sh
├── ssh-status.10min.sh
├── ssh-tunnel.1s.sh
├── ssh.sh
├── ssid_info.sh
├── tor.2s.sh
├── uRadMonitor2.30s.sh
├── umbrella_status.15m.sh
├── updatevpnbookpass.1d.sh
├── viscosity-active-connection.1s.sh
├── vnc_short.1d.sh
├── vpn-check.3s.sh
├── vpn-country-flag.js
├── vpn-next.2s.sh
├── vpn_advanced.sh
├── w06_transfer.10s.rb
├── wakeonlan.sh
├── website-status.sh
├── wifi-toggle-by-lid.sh
├── wifiname.sh
├── wifisignal.sh
├── wireguard.sh
└── zerotier-status.1s.py
├── Politics
├── PredictIt.sh
├── congress.1h.R
├── five-thirty-eight.15m.rb
└── parliament.uk-count.5m.py
├── README.md
├── Science
├── apod.1h.py
├── fah-score.1m.py
├── people-in-space.6h.js
└── pubmed.py
├── Sports
├── F1.1s.py
├── SpursBar.6h.rb
├── bundesliga.1h.py
├── cricket_bar.1m.php
├── crossfit-regionals.1d.sh
├── fcbarcelona-dk.1h.py
├── live_cricket.2m.py
├── live_nba.1m.py
├── live_tennis.1m.py
├── worldcup.1m.php
└── your-team-soccer-matches.10m.js
├── System
├── AirPodsPower.sh
├── Battery
│ ├── battery-dot.1h.swift
│ ├── battery_cycles.12h.sh
│ ├── keyboard-system_profiler.1m.rb
│ ├── keyboard.1m.sh
│ ├── lowbatterymode.1h.sh
│ ├── mAh.10s.sh
│ ├── mouse.1m.sh
│ ├── trackpad-system_profiler.1m.rb
│ └── trackpad.1m.sh
├── ColorfulBatteryLevel.5s.sh
├── DarkModeToggle.sh
├── Day-Night-Color-Profile-Selector.15s.sh
├── DoNotDisturb.1s.py
├── HandoffToggle.1d.sh
├── MicToggle.1s.sh
├── Screenshotter.1d.sh
├── WhereAmI.48h.sh
├── Yubikey.30m.sh
├── ad-pass-expiry.sh
├── adminCheck.1m.sh
├── app_use_cpu.1m.sh
├── appearance-options.1d.sh
├── arp-spoof-detector.sh
├── battery_estimator.5s.sh
├── battery_health.2s.py
├── bluetooth_inspector.10m.rb
├── caffeinate.10h.sh
├── caffeinate.1h.sh
├── clipboard-base64-encoder.sh
├── clipboard-history.3s.sh
├── copy-ssh-keys.sh
├── copy-to-clipboard.sh
├── cpu-high-usage.5s.py
├── cpu-load.5s.sh
├── cpu-thermal-throttle.30s.sh
├── cpu-usage-kill.5s.sh
├── currentFiles.1h.rb
├── deleteVSCodeTemp.sh
├── disk-read-write.1s.sh
├── diskAvailable.sh
├── downloads.1h.sh
├── ejector.5s.sh
├── emacs.24h.sh
├── fan_speed.5s.js
├── firewall.10m.sh
├── firewall_status_indicator.10s.sh
├── getComputerInfo.sh
├── host-switcher.1d.sh
├── infinit-drive.10s.py
├── keyboard-symbol.py
├── killdock.1d.sh
├── lastpass.py
├── launch-agents.10s.sh
├── load_temp_fan.10s.sh
├── lock-screen.10h.sh
├── macos-proxy-switcher.1m.sh
├── macosnightshift.1h.sh
├── mas.1d.sh
├── mdf.1m.sh
├── memory_pressure.20s.py
├── memusage.5s.py
├── mfa-yubikey.1d.sh
├── microphone.sh
├── mtop.5s.sh
├── mysql-status.1m.sh
├── ntfs.1d.sh
├── pmset.5m.sh
├── postgresql-status.1m.sh
├── power-wattage-advanced.30m.sh
├── power_status.15s.sh
├── power_wattage.30s.sh
├── quickfolders.10m.sh
├── ram-load.5s.py
├── real-cpu-usage-chart.10s.sh
├── real-cpu-usage.10s.sh
├── rebootreminder.1h.sh
├── recent-apps.10s.py
├── redis-memcached.10s.sh
├── samplerate.sh
├── screenshot.1d.py
├── secure-totp.sh
├── show-hide-desktop-icons.1h.py
├── showdotfiles.2m.sh
├── showhide-files.1d.py
├── swap-usage.1m.sh
├── systeminfo.1s.sh
├── timemachine.2m.rb
├── top5-memory-consuming-processes.sh
├── totp.30s.sh
├── trackpad-dot.1h.swift
├── trash-collector.5s.sh
├── umbrella.5s.sh
├── unmount.10.js
├── uptime.1m.sh
├── uptime.5m.sh
├── usbInfo.10s.py
├── virtualbox-vms.5s.sh
├── webpack-status.1s.sh
└── wkma.5s.sh
├── Time
├── CalendarLite.1m.sh
├── DayAndNightClock.sh
├── ProcessBarOfYear.1d.sh
├── WorldTimeGrid.10s.py
├── age-clock.py
├── age-ticker.1s.py
├── aideadlines.15m.py
├── alarmclock.1s.sh
├── beats.1s.lisp
├── cal.1d.sh
├── countdown.1s.py
├── countdown_timer.1s.rb
├── countdown_timer_2.1s.py
├── date-picker.1m.sh
├── ddate.30m.js
├── epoch.60s.sh
├── fuzzyclock.1s.py
├── googlecal.30m.js
├── itstimeto.15m.py
├── lapse.30m.sh
├── persiandate.1m.sh
├── pomodoro.1s.sh
├── pomodoro2.30s.sh
├── prayer-time.1m.py
├── productivitycountdowns.1h.sh
├── progress-procrastination.15s.sh
├── progress.1h.sh
├── rescuetime-activities.3m.py
├── solar-time.1s.py
├── spent_time.1s.py
├── stopwatch.1s.sh
├── sunrise.4h.swift
├── switchtimezones.5s.sh
├── timetable.1m.py
├── timezone.5s.sh
├── timezonesplus.30s.sh
├── toggl.10m.sh
├── ts-convert.sh
├── unixtime.5s.sh
├── waketime.1m.sh
├── watson.1m.sh
├── weeknumber.1m.sh
├── worktime-tracker.1s.rb
└── worldclock.1s.sh
├── Tools
├── BitBar
│ ├── bitbar-plugin-installer.1d.php
│ └── version.12h.rb
├── JsonUtils.1d.sh
├── PagerDuty
│ ├── pagerDutyIncidents.30s.js
│ ├── pagerDutyOnCall.30s.js
│ ├── pagerduty.30s.rb
│ └── pagerduty_incidents.1m.sh
├── Slack
│ ├── slack-multi-teams.1m.rb
│ ├── slack-status.sh
│ ├── slack-team-notifications.1m.js
│ └── slack-unread.1s.py
├── addnote.5s.py
├── aerospace-viewer.5s.sh
├── aggregator.5m.sh
├── bitbarDockerContainers.1m.py
├── catchpoint.m5.php
├── chunkwm_skhd.1s.sh
├── clipboard_bar.1d.php
├── cryptbar.5m.sh
├── desktop_cleaner.rb
├── dev-toolbox.1h.sh
├── keybase-encrypt.10m.rb
├── octoprint.1m.sh
├── pass.sh
├── password_bar.5m.php
├── prusa_link.30s.rb
├── rclone-mount.1m.sh
├── rsyncbackup.js
├── screen.2m.sh
├── sensibo.60s.sh
├── statuspage.1m.png
├── statuspage.1m.rb
├── todolist.2m.sh
├── todotxt.15s.sh
├── wallpaper_refresh.1h.sh
├── whos-home-unifi.1m.py
├── wol
│ └── wol-nas.10s.sh
├── yabai-viewer.1s.py
├── yabai.365d.sh
└── yabai_skhd.1s.sh
├── Travel
├── airspace.5m.py
├── commuter.365d.py
├── gwr-wifi-status.1m.py
├── leapcard.1h.py
├── renaultze.10m.py
└── travel-time.5m.php
├── Weather
├── FlagoftheCharles.15m.rb
├── Foobot.10m.rb
├── GeoIPWeather.15m.rb
├── KRAL.metar.5m.php
├── aqi.15m.sh
├── emojiWeather.30m.js
├── homeassistant.py
├── metar.5m.rb
├── netatmo.5m.go
├── pirate_weather.15.py
├── sunrise-sunset
│ ├── LICENSE
│ ├── README.md
│ ├── sun-full.png
│ ├── sun-indicator.png
│ └── sun.1m.py
├── typerlc-weather.15m.sh
├── weather-alerts.1min.ts
├── weather.15m.py
├── weather.15m.sh
├── weather.1h.py
├── wttr-in.15m.sh
└── yahoo-weather.5m.py
├── Web
├── Reddit
│ ├── reddit.1m.py
│ ├── redditnotify.30s.py
│ └── subreddit_links.rb
├── Twitch
│ ├── livestreamer-now-playing.5m.js
│ └── play-with-livestreamer.5m.js
├── XKCD
│ ├── new-xkcd.5m.js
│ └── xkcd.1h.sh
├── YouTube
│ ├── YouTubeTicker.1m.js
│ └── subgap.1s.py
├── beeminder.10m.py
├── beeminder_one_goal.1m.py
├── bilibili.py
├── bitbar-uptime_robot.py
├── commitstrip.1h.sh
├── cornify.1m.sh
├── counttabs.5m.sh
├── disqus_comments.rb
├── edd.15m.py
├── faith_in_humanity_score.6h.py
├── fb-dns
│ ├── 001-fb_dns.5s.sh
│ ├── LICENSE
│ ├── README.md
│ └── screen-shot.png
├── feedly.rb
├── freshdesk.3m.rb
├── git-repo-stars.1h.js
├── googleapps.sh
├── hackernews.10m.py
├── hololive.5m.rb
├── isItUp.5s.js
├── leetcode_reminder.5m.py
├── mailchimp.10m.rb
├── next_train.1m.sh
├── nightscout.30s.js
├── openui5ver.1h.sh
├── plausible-stats.1m.js
├── pocket.10m.py
├── putio.5m.py
├── reputationizer.5m.sh
├── rss.15m.php
├── service-status.5s.js
├── todays_tweets.30m.py
├── toggl.1m.js
├── twitter.1m.py
├── waniKaniStats.5m.rb
├── wanikani.15m.py
├── weibo.1h.py
├── whirlpool-watched.1m.rb
├── wikipedia_on_this_day.12h.rb
└── zendesk.2m.rb
└── personal
└── homecoming.1d.sh
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: matryer
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .DS_Store
3 | .ruby-version
4 | .idea
5 |
--------------------------------------------------------------------------------
/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "esversion": 6,
3 | "asi": true
4 | }
5 |
--------------------------------------------------------------------------------
/.rubocop.yml:
--------------------------------------------------------------------------------
1 | Lint/BooleanSymbol:
2 | Enabled: false
3 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | os: osx
2 | osx_image: xcode11.2
3 |
4 |
5 | addons:
6 | homebrew:
7 | packages:
8 | - python
9 | - shellcheck
10 | - luarocks
11 | - node
12 | - cpanminus
13 | - clisp
14 | - golang
15 | - r
16 | casks:
17 | - racket
18 |
19 | before_install:
20 | - pip3 install virtualenv
21 | - mkdir ~/venv
22 | - virtualenv -p python2 ~/venv
23 |
24 | install:
25 | - pip3 install pyflakes
26 | - source ~/venv/bin/activate
27 | - pip install pyflakes
28 | - gem install rubocop
29 | - luarocks install luacheck
30 | - npm install -g jshint
31 | - sudo cpanm Mozilla::CA
32 | - go get -u golang.org/x/lint/golint
33 | - export PATH="$PATH:${GOROOT:-$HOME/go}/bin"
34 | - raco pkg install --deps search-auto rackjure
35 | - Rscript -e 'install.packages("lintr", repos="http://cran.rstudio.com/")'
36 |
37 |
38 | script: ./.test.py
39 |
--------------------------------------------------------------------------------
/AWS/awsmonthcost.1h.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # AWS Cost
4 | # v1.0.0
5 | # Sean Luce
6 | # seanluce
7 | # Show the current months AWS costs.
8 |
9 | #Assumes AWS CLI is installed, 'pip install awscli' or 'pip3 install awscli', and 'aws configure' has been ran.
10 |
11 | start=$(date -v1d +%Y-%m-%d)
12 | end=$(date -v+1m -v1d -v-1d +%Y-%m-%d)
13 | export PATH="/usr/local/bin:/usr/bin:$PATH"
14 | prefix=$(aws ce get-cost-and-usage --time-period Start="$start",End="$end" --granularity MONTHLY --metric "BlendedCost" | awk '/Unit/ {print $2;}' | sed 's/[,"]//g')
15 | cost=$(aws ce get-cost-and-usage --time-period Start="$start",End="$end" --granularity MONTHLY --metric "BlendedCost" | awk '/Amount/ {print $2;}' | sed 's/[,"]//g' | xargs printf "%.*f\n" 2)
16 | echo "$cost" "$prefix"
--------------------------------------------------------------------------------
/Cloud/GCP/gcp-project-switcher.1d.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Metadata allows your plugin to show up in the app, and website.
4 | #
5 | # GCP Project Switcher
6 | # v1.0
7 | # Daniel Palma
8 | # danthelion
9 | # https://i.imgur.com/EuTdul2.png
10 | # See current active GCP project and easily switch between others.
11 |
12 | export PATH='/usr/local/bin:/usr/bin:$PATH'
13 |
14 | gcloud_executable=gcloud
15 | if ! command -v gcloud &> /dev/null
16 | then
17 | gcloud_executable="/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin/gcloud"
18 |
19 | fi
20 |
21 | active_project=$(${gcloud_executable} config get-value project)
22 |
23 | echo "$active_project"
24 | echo "---"
25 |
26 | project_id_array=($(${gcloud_executable} projects list --format="value(name)" | awk '{print $1}'))
27 | for i in "${!project_id_array[@]}"; do
28 | if [[ "${project_id_array[$i]}" == "$active_project" ]] ;then
29 | printf ":white_check_mark: "
30 | fi
31 | echo "${project_id_array[$i]} | shell=${gcloud_executable} param1=config param2=set param3=project param4=${project_id_array[$i]} | refresh=true"
32 | done
33 |
--------------------------------------------------------------------------------
/Cryptocurrency/Bitcoin/bitcoin.de/last.30s.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Bitcoin.de price ticker
4 | # v1.0
5 | # alex_rockt
6 | # alex_rockt
7 | # Shows the current bitcoin price for Bitcoins from Bitcoin.de.
8 | # http://i.imgur.com/mP8Vec2.png
9 | # none
10 |
11 | DATA=$(curl -s "https://bitcoinapi.de/widget/current-btc-price/rate.json")
12 |
13 | echo -n "BTC: "; echo "$DATA" | egrep -o '"price_eur":"[0-9.]+(\,)?([0-9]{0,2}\\)?' | sed 's/"price_eur":"//' | sed 's/\\/ EUR/'
14 | echo "---"
15 | echo "$DATA" | egrep -o '"date_de":"[0-9]{2}.[0-9]{2}.[0-9]{2} [0-9]{2}:[0-9]{2}"' | sed 's/"date_de":"//' | sed 's/\\/ EUR/' | sed 's/"//'
16 |
--------------------------------------------------------------------------------
/Cryptocurrency/Bitcoin/bitfinex.com/bitfinex_btcusd.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Shows last BTC price (in USD) on Bitfinex BTCUSD Order Book.
4 | #
5 | # Bitfinex BTCUSD last price
6 | # v1.0
7 | # Roberto Santacroce Martins
8 | # mileschet
9 | # Shows last BTC price (in USD) on Bitfinex BTCUSD Order Book.
10 | # http://i.imgur.com/AJU4wmc.png
11 | #
12 | # by Roberto Santacroce Martins
13 | # Based on Coinbase bitbar plugin by Mat Ryer
14 |
15 | echo -n "₿"; curl -s "https://api.bitfinex.com/v1/pubticker/BTCUSD" | egrep -o '"last_price":"[0-9]+(\.)?([0-9]{0,2}")?' | sed 's/"last_price"://'| sed 's/\"//g' | cut -d . -f 1 | sed -re 's/([0-9])([0-9]{3})($|[^0-9])/\1,\2\3/'
16 |
--------------------------------------------------------------------------------
/Cryptocurrency/Bitcoin/bitoex.com/bitoex-buy-and-sell.10s.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # BitoEX Buy and Sell
3 | # v1.0
4 | # Ryan Chen
5 | # ryanchentw
6 | # Show latest buy and seller values in TWD from BitoEX. BitoEX is a popular BTC exchange in TW https://www.bitoex.com
7 |
8 |
9 | regexp='"([0-9,]+)","([0-9,]+)"'
10 | resp=$(curl -s https://www.bitoex.com/sync/dashboard_fixed/"$(date +%s)")
11 |
12 | if [[ $resp =~ $regexp ]]; then
13 | echo Buy: NT$ "${BASH_REMATCH[1]}"
14 | echo Sell: NT$ "${BASH_REMATCH[2]}"
15 | echo '---'
16 | echo 'Go chart | href=https://www.bitoex.com/charts?locale=zh-tw'
17 | fi
18 |
--------------------------------------------------------------------------------
/Cryptocurrency/Bitcoin/bitstamp.net/last.10s.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Shows last BTC price (in USD) on Bitstamp exchange.
4 | #
5 | # Bitstamp last price
6 | # v1.0
7 | # Damien Lajarretie
8 | # dlajarretie
9 | # Shows last BTC price (in USD) on Bitstamp exchange.
10 | # http://i.imgur.com/aQCqOW6.png
11 | #
12 | # by Damien Lajarretie
13 | # Based on Coinbase bitbar plugin by Mat Ryer
14 |
15 | echo -n "Bitstamp: $"; curl -s "https://www.bitstamp.net/api/ticker/" | egrep -o '"last": "[0-9]+(\.)?([0-9]{0,2}")?' | sed 's/"last": //' | sed 's/\"//g'
--------------------------------------------------------------------------------
/Cryptocurrency/Bitcoin/bitx.co/buy-and-sell.1m.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | # BitX Buy and Sell
4 | # v1.1
5 | # Konrad Blum
6 | # kblum
7 | # Shows latest buy and sell values (in ZAR) for Bitcoins on the BitX exchange.
8 | # https://cloud.githubusercontent.com/assets/868608/24828465/e257fc20-1c5d-11e7-9641-5abed32bcb9b.png
9 | # python
10 |
11 | import urllib.request, urllib.error, urllib.parse
12 | import json
13 | from datetime import datetime
14 |
15 |
16 | def run():
17 | base_api_url = 'https://api.mybitx.com'
18 |
19 | currency_pair = 'XBTZAR'
20 | url = '{0}/api/1/ticker?pair={1}'.format(base_api_url, currency_pair)
21 |
22 | response = urllib.request.urlopen(url).read()
23 | data = json.loads(response)
24 |
25 | timestamp = datetime.fromtimestamp(int(data['timestamp'])/1000.0)
26 |
27 | # lines below will cycle through in menu bar
28 | print(('Buy: R{0:,}'.format(float(data['ask']))))
29 | print(('Sell: R{0:,}'.format(float(data['bid']))))
30 |
31 | print('---')
32 |
33 | # lines below will only appear when opening menu
34 | print('BitX Market Data - XBT/ZAR')
35 | print(('Updated: {0:%Y-%m-%d %H:%M:%S}'.format(timestamp)))
36 |
37 |
38 | if __name__ == '__main__':
39 | run()
40 |
--------------------------------------------------------------------------------
/Cryptocurrency/Bitcoin/blocktime.10s.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # BTC Block Time
4 | # v1.0
5 | # BitFlib
6 | # BitFlib
7 | # Displays the height of the last bitcoin block aka block time (received from mempool explorer api; requires tor).
8 | # https://i.imgur.com/m16z0vd.png
9 | # tor
10 | # string(VAR_MEMPOOL_TOR_ADDRESS="http://mempoolhqx4isw62xs7abwphsq7ldayuidyx2v2oethdhhj6mlo2r6ad.onion"): mempool explorer tor address
11 |
12 | # requires installed TOR proxy service.
13 | curl -sSL --socks5-hostname 127.0.0.1:9050 ${VAR_MEMPOOL_TOR_ADDRESS}/api/blocks/tip/height
14 |
--------------------------------------------------------------------------------
/Cryptocurrency/Bitcoin/coinbase.com/buy-and-sell.10s.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Coinbase.com Buy and Sell
3 | # v1.0
4 | # Mat Ryer
5 | # matryer
6 | # Shows latest Buy and Sell values (in USD) for Bitcoins in the Coinbase exchange.
7 |
8 | echo -n "Buy: $"; curl -s "https://coinbase.com/api/v1/prices/buy?currency=USD" | egrep -o ',"amount":"[0-9]+(\.)?([0-9]{0,2}")?' | sed 's/,"amount"://' | sed 's:^.\(.*\).$:\1:'
9 | echo -n "Sell: $"; curl -s "https://coinbase.com/api/v1/prices/sell?currency=USD" | egrep -o ',"amount":"[0-9]+(\.)?([0-9]{0,2}")?' | sed 's/,"amount"://' | sed 's:^.\(.*\).$:\1:'
10 |
--------------------------------------------------------------------------------
/Cryptocurrency/Bitcoin/coinbase.com/buy.10s.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Coinbase.com Buy
3 | # v1.0
4 | # Mat Ryer
5 | # matryer
6 | # Shows latest buy values (in USD) for Bitcoins in the Coinbase exchange.
7 |
8 | echo -n "Buy: $"; curl -s "https://coinbase.com/api/v1/prices/buy?currency=USD" | egrep -o ',"amount":"[0-9]+(\.)?([0-9]{0,2}")?' | sed 's/,"amount"://' | sed 's:^.\(.*\).$:\1:'
9 |
--------------------------------------------------------------------------------
/Cryptocurrency/Bitcoin/coinbase.com/sell.10s.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Coinbase.com Buy
3 | # v1.0
4 | # Mat Ryer
5 | # matryer
6 | # Shows latest sell values (in USD) for Bitcoins in the Coinbase exchange.
7 |
8 | echo -n "Sell: $"; curl -s "https://coinbase.com/api/v1/prices/sell?currency=USD" | egrep -o ',"amount":"[0-9]+(\.)?([0-9]{0,2}")?' | sed 's/,"amount"://' | sed 's:^.\(.*\).$:\1:'
9 |
--------------------------------------------------------------------------------
/Cryptocurrency/Bitcoin/coinbase.com/spotrate.10s.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Coinbase.com Spot rate
3 | # v1.0
4 | # Mat Ryer
5 | # matryer
6 | # Shows latest spot rate values (in USD) for Bitcoins in the Coinbase exchange.
7 |
8 | echo -n "BTC: $"; curl -s "https://coinbase.com/api/v1/prices/spot_rate?currency=USD" | egrep -o '"amount":"[0-9]+(\.)?([0-9]{0,2}")?' | sed 's/"amount"://' | sed 's:^.\(.*\).$:\1:'
9 |
--------------------------------------------------------------------------------
/Cryptocurrency/Bitcoin/coinone.co.kr/coinone.15s.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | # Coinone Ticker
4 | # v1.1
5 | # Sunwoo Lee
6 | # eldkqmfhf123
7 | # coineone.co.kr Ticker
8 |
9 | import urllib.request, urllib.error, urllib.parse
10 | import json
11 |
12 | def parse():
13 | base_url = 'https://api.coinone.co.kr/ticker/?currency='
14 | # You can change it to btc / eth / etc / xrp
15 | currency = 'btc'
16 |
17 | url = base_url + currency
18 |
19 | response = urllib.request.urlopen(url).read()
20 | response_data = json.loads(response)
21 |
22 | print("{0}: {1}".format(currency.upper(), response_data['last']))
23 | print("---")
24 | print("By Skriex | href=http://github.com/eldkqmfhf123")
25 |
26 |
27 | if __name__ == '__main__':
28 | parse()
29 |
--------------------------------------------------------------------------------
/Cryptocurrency/Bitcoin/huobi.com/huobiprice.1s.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 | # coding=utf-8
3 |
4 | # Huobi last price
5 | # v1.0
6 | # Sam Xie
7 | # mountain3th
8 | # A very simple huobi last price display tool
9 | # python
10 | #
11 | # by mountain3th/Sam Xie
12 |
13 | import urllib2
14 |
15 |
16 | def price():
17 | response = urllib2.urlopen('https://api.huobi.com/staticmarket/td_btc.html').read()
18 | lines = response.split('\n')
19 | last_line = lines[-2]
20 | last_second_line = lines[-3]
21 | open_price = float(lines[2])
22 | last_price = float(last_second_line.split(',')[1])
23 | current_price = float(last_line.split(',')[1])
24 | return open_price, last_price, current_price
25 |
26 | def prices_output():
27 | open_price, last_price, current_price = price()
28 | return u'火币网:¥%s%s %.2f' % (current_price, u'⬆️' if current_price > last_price else u'⬇️', (current_price - open_price) / open_price * 100) + '%'
29 |
30 | if __name__ == '__main__':
31 | print prices_output().encode('utf-8')
32 |
--------------------------------------------------------------------------------
/Cryptocurrency/Bitcoin/mayer-multiple.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Mayer Multiple (BTC)
4 | # Tadek Teleżyński
5 | # tadeoos
6 | #
7 | # Displays Mayer Multiple for Bitcoin
8 | #
9 | # https://i.imgur.com/NsOofDJ.png
10 |
11 | RESULT=$(curl -s "https://mayermultiple.info/current.json")
12 | MM=$(echo "$RESULT" | grep -E -o '"current_mayer_multiple": "[0-9]+(\.)?([0-9]{0,2}")?' | sed 's/"current_mayer_multiple"://' | sed 's/\"//g')
13 | BTC=$(echo "$RESULT" | grep -E -o '"btc_price": "[0-9]+(\.)?([0-9]{0,2}")?' | sed 's/"btc_price"://' | sed 's/\"//g')
14 | AMM=$(echo "$RESULT" | grep -E -o '"average_mayer_multiple": "[0-9]+(\.)?([0-9]{0,2}")?' | sed 's/"average_mayer_multiple"://' | sed 's/\"//g')
15 | PTH=$(echo "$RESULT" | grep -E -o '"percentage_time_higher": "[0-9]+(\.)?([0-9]{0,2}")?' | sed 's/"percentage_time_higher"://' | sed 's/\"//g')
16 |
17 | if (( $(echo "$MM < 2.4" |bc -l) )); then
18 | echo "$MM | color='green'";
19 | else
20 | echo "$MM";
21 | fi
22 | echo "---"
23 | echo -n "BTC $"; echo "$BTC"
24 | echo -n "Average Mayer Multiple is "; echo "$AMM"
25 | echo -n "Mayer Multiple has historically been higher "; echo -n "$PTH"; echo "% of the time";
26 |
--------------------------------------------------------------------------------
/Cryptocurrency/Bitcoin/winkdex.com/winkdex.1m.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Winkdex.com Buy
3 | # v1.0
4 | # Baron Reznik
5 | # xiezusan
6 | # Shows latest buy values (in USD) for Bitcoins based on the latest price according to WinkDex.
7 |
8 | PRICE=$(curl -s -H "Accept-Encoding: gzip" "https://winkdex.com/api/v0/price" | gzcat | python -c 'import json,sys;obj=json.load(sys.stdin); print obj["price"]';)
9 | echo -n "WinkDex: $"; echo "$((PRICE/100)).$((PRICE%100))";
10 | echo "---";
11 | echo "Data Provided by WINKDEX(SM) | href=https://winkdex.com/";
12 |
--------------------------------------------------------------------------------
/Cryptocurrency/CoinbaseBuy.1m.rkt:
--------------------------------------------------------------------------------
1 | #!/usr/local/bin/racket
2 | #lang rackjure
3 |
4 | ; Coinbase buy prices
5 | ; v1.0
6 | ; Daniel Kvasnicka
7 | ; dkvasnicka
8 | ; Fetches BUY proces for cryptocurrencies traded at Coinbase
9 | ; racket, rackjure package
10 |
11 | (require net/url
12 | json)
13 |
14 | (define currencies '(BTC ETH LTC)) ; change to set watched coins
15 | (define url-template "https://api.coinbase.com/v2/prices/~s-USD/buy")
16 |
17 | (define get-json
18 | (compose bytes->jsexpr
19 | port->bytes
20 | get-pure-port
21 | string->url))
22 |
23 | (displayln
24 | (string-join
25 | (map
26 | (compose
27 | (λ~> 'data 'amount)
28 | get-json
29 | (curry format url-template))
30 | currencies)
31 | " • "))
32 |
--------------------------------------------------------------------------------
/Cryptocurrency/Ethereum/eth_all_in_one.5s.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # All-in-One ETH Price & GasNow Indicator
4 | # v1.0
5 | # take3315
6 | # take3315
7 | # One line display to check the current ETH price, gasnow quick/fast/standard level in one go
8 | # https://imgur.com/a/525iUFo.png
9 | # https://beaconcha.in/gasnow
10 |
11 |
12 | response=$(curl -s https://beaconcha.in/api/v1/execution/gasnow)
13 | read code rapid fast standard slow timestamp price priceusd <<<${response//[^0-9]/ }
14 | if ((fast > 60000000000)); then
15 | color="tomato"
16 | elif ((fast < 30000000000)); then
17 | color="limegreen"
18 | else
19 | color="gold"
20 | fi
21 | echo "\$$price ${rapid:0:((${#rapid} - 9))}/${fast:0:((${#fast} - 9))}/${standard:0:((${#standard} - 9))} | color=$color"
22 |
--------------------------------------------------------------------------------
/Cryptocurrency/Ethereum/eth_basefee.30s.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | #
3 | # Ethereum Base Fee
4 | # v1.0.0
5 | # David Dornseifer
6 | # dpdornseifer
7 | # Ethereum EIP1559 base fee
8 | # https://ethgasstation.info/
9 | # https://i.imgur.com/66j14MI.png
10 | # jq
11 |
12 | # current Ethereum base fee and prediction for next block
13 |
14 | export PATH="/usr/local/bin:/opt/homebrew/bin:$PATH"
15 |
16 | jq=$(command -v jq)
17 |
18 | response=$(curl -s https://api.ethgasstation.info/api/fee-estimate)
19 | read baseFee nextBaseFee priorityFee < <(echo $(echo ${response} | jq -r '.baseFee, .nextBaseFee, .priorityFee.fast'))
20 |
21 | if (( ${nextBaseFee} > ${baseFee} )); then
22 | nextBaseFeeColor="red"
23 | elif (( ${nextBaseFee} < ${baseFee} )); then
24 | nextBaseFeeColor="green"
25 | else
26 | nextBaseFeeColor="white"
27 | fi
28 |
29 | echo "Ξ BaseFee: \t ${baseFee} | color=white"
30 | echo "Ξ NextBlock: \t ${nextBaseFee} | color=${nextBaseFeeColor}"
--------------------------------------------------------------------------------
/Cryptocurrency/Ethereum/eth_gas_widget.10m.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 |
3 | # Ethereum Gas Fees
4 | # v1.0
5 | # Masumi Kawasaki
6 | # geeknees
7 | # Widget for monitoring Ethereum Gas Fees from https://etherscan.io/
8 | # ruby
9 | # https://raw.githubusercontent.com/geeknees/xbar-plugins/main/eth_gas_widget/screenshot.png
10 | # https://github.com/geeknees/xbar-plugins
11 |
12 | require 'open-uri'
13 | require 'json'
14 |
15 | ENDPOINT = "https://api.etherscan.io/api?module=gastracker&action=gasoracle&apikey="
16 | APIKEY = ""
17 |
18 | charset = nil
19 | html = URI.open(ENDPOINT+APIKEY) do |f|
20 | charset = f.charset
21 | f.read
22 | end
23 |
24 | response = JSON.parse(html)
25 |
26 | puts "⟠ #{response['result']['ProposeGasPrice']}"
27 | puts '---'
28 |
29 | response['result'].each do |k, v|
30 | puts "#{k}: #{v.to_f.floor(5)}"
31 | end
32 |
--------------------------------------------------------------------------------
/Cryptocurrency/Ethereum/ethbtc.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Shows last Ethereum price on Bitfinex in BTC.
4 | #
5 | # Ethereum BFX price
6 | # 0.1
7 | # Corvin Wimmer
8 | # corv89
9 | # Shows last Ethereum price on Bitfinex in BTC.
10 | # http://i.imgur.com/w6D7HHe.png
11 |
12 | echo -n "ETH "; curl -s "https://api.bitfinex.com/v1/pubticker/ETHBTC" | grep -Eo 'last_price":"[0-9]+\.[0-9]+' | sed 's/last_price":"//'
--------------------------------------------------------------------------------
/Cryptocurrency/Ethereum/ether-eur-kraken.30s.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Kraken.com ETHEUR last price
4 | # v1.0
5 | # G.G.
6 | # ggrelet
7 | # Gives the last price of ether to euro from Kraken.com
8 | # https://i.imgur.com/iGX2yjR.png
9 | # bash
10 |
11 | val=$(curl -s "https://api.kraken.com/0/public/Ticker?pair=ETHEUR" | tr -d '{}"[]' | tr ':,' '\n' | grep -A1 "^c$" | tail -1)
12 |
13 | echo "$(printf "𝚵 %.3f \n" "$val") | size=13"
14 | echo "---"
15 | echo "Kraken.com | href=\"https://www.kraken.com/\""
16 |
--------------------------------------------------------------------------------
/Cryptocurrency/Ethereum/ethgas.1m.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # Metadata allows your plugin to show up in the app, and website.
4 | #
5 | # GasRN
6 | # v1.0
7 | # the-decentraliizer
8 | # the-decentralizer
9 | # Grabs and parses data from https://beaconcha.in/api/v1/execution/gasnow
10 | # bash
11 | # https://user-images.githubusercontent.com/5545555/231251410-06cb8b22-fe5a-40c0-bccf-c194dcdabc0c.png
12 |
13 |
14 | response=$(curl -s 'https://beaconcha.in/api/v1/execution/gasnow')
15 | read code rapid fast standard slow timestamp priceUSD <<<${response//[^0-9]/ }
16 | echo "Ξ Rapid ${rapid:0:((${#rapid} - 9))} | color=green"
17 | echo "---"
18 | echo "Ξ Fast ${fast:0:((${#fast} - 9))} | color=orange"
19 | echo "---"
20 | echo "Ξ Standard ${standard:0:((${#standard} - 9))} | color=blue"
21 | echo "---"
22 | echo "Ξ Slow ${slow:0:((${#slow} - 9))} | color=purple"
23 | echo "---"
24 | # using long form for users that might not have the bash 4.0+
25 | echo "Ξ Price \$${priceUSD::${#priceUSD}-3} | color=red"
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/Cryptocurrency/Ethereum/ethusd.1m.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Shows last Ethereum price in USD.
4 | #
5 | # Ethereum last price
6 | # 0.1B
7 | # Nikita Zhavoronkov
8 | # Har01d
9 | # Shows last Ethereum price in USD.
10 | # http://i.imgur.com/lF2AA7o.png
11 | #
12 | # by Nikita Zhavoronkov
13 | # Based on Coinbase bitbar plugin by Mat Ryer
14 |
15 | echo -n "𝚵 "; curl -s "https://api.coinbase.com/v2/prices/ETH-USD/spot" | egrep -o '"amount":"[0-9]+(\.)?' | sed 's/"amount"://' | sed 's:^.\(.*\).$:\1:'
--------------------------------------------------------------------------------
/Cryptocurrency/Ethereum/gasnow.10s.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # ETH Gas Price
4 | # v2.0.1
5 | # Biran Yucel
6 | # biranyucel
7 | # ETH GasPrice forecast system.
8 | # https://i.imgur.com/f1hPKO2.png
9 | # https://ethgasstation.info/
10 | #
11 | #ETH GasPrice forecast system based on SparkPool Pending Transaction Mempool
12 |
13 | response=$(curl -s https://beaconcha.in/api/v1/execution/gasnow)
14 | read code rapid fast standard slow timestamp <<<${response//[^0-9]/ }
15 | echo "𝚵 Rapid ${rapid:0:((${#rapid} - 9))} | color=green"
16 | echo "𝚵 Fast ${fast:0:((${#fast} - 9))} | color=orange"
17 | echo "𝚵 Standard ${standard:0:((${#standard} - 9))} | color=blue"
18 | echo "𝚵 Slow ${slow:0:((${#slow} - 9))} | color=purple"
19 |
--------------------------------------------------------------------------------
/Cryptocurrency/Lisk/lskbtc.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Shows last Lisk price on Poloniex in BTC.
4 | #
5 | # Lisk/BTC Poloniex price
6 | # 0.1
7 | # Corvin Wimmer
8 | # corv89
9 | # Shows last Lisk price on Bitfinex in BTC.
10 | # http://i.imgur.com/j5qaX2t.png
11 |
12 | echo -n "LSK "; curl -s https://poloniex.com/public\?command=returnTicker | grep -Eo '"BTC_LSK":{"id":163,"last":"[0-9]+\.[0-9]+' | sed 's/"BTC_LSK":{"id":163,"last":"//'
13 |
--------------------------------------------------------------------------------
/Cryptocurrency/Polygon/polygon_gas_widget.10m.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 |
3 | # Polygon Gas Fees
4 | # v1.0
5 | # Masumi Kawasaki
6 | # geeknees
7 | # Widget for monitoring Polygon Gas Fees from https://polygonscan.com/
8 | # ruby
9 | # https://raw.githubusercontent.com/geeknees/xbar-plugins/main/polygon_gas_widget/screenshot.png
10 | # https://github.com/geeknees/xbar-plugins
11 |
12 | require 'open-uri'
13 | require 'json'
14 |
15 | ENDPOINT = "https://api.polygonscan.com/api?module=gastracker&action=gasoracle&apikey="
16 | APIKEY = ""
17 |
18 | charset = nil
19 | html = URI.open(ENDPOINT+APIKEY) do |f|
20 | charset = f.charset
21 | f.read
22 | end
23 |
24 | response = JSON.parse(html)
25 |
26 | puts "♾️ #{response['result']['ProposeGasPrice']}"
27 | puts '---'
28 |
29 | response['result'].each do |k, v|
30 | puts "#{k}: #{v.to_f.floor(5)}"
31 | end
32 |
--------------------------------------------------------------------------------
/Cryptocurrency/Ripple/xrpusd.1m.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Shows last Ripple (XRP) price in USD.
4 | #
5 | # XRP last price
6 | # v1.0
7 | # Kevin Bost
8 | # kevbost
9 | # Shows last Ripple (XRP) price in USD.
10 | # http://i.imgur.com/iAMBYVv.png
11 | #
12 | # by Kevin Bost
13 | # Based on Ethereum bitbar plugin by Nikita Zhavoronkov
14 |
15 | echo -n "ˣʳᵖ"; curl -s "https://coinmarketcap-nexuist.rhcloud.com/api/xrp/price" | egrep -o '"usd":[0-9]+(\.)?([0-9]{2})?' | sed 's/"usd"://' | sed 's/\"//g'
16 |
--------------------------------------------------------------------------------
/Cryptocurrency/btcmarkets.10s.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # BTC Markets ETH & BTC Ticker
4 | # v1.0
5 | # Fred Wu
6 | # fredwu
7 | # Displays the latest Etherium and Bitcoin prices in AUD and their 24h trade volumes from BTC Markets.
8 | # http://i.imgur.com/7UwilDM.png
9 |
10 | echo -n "ETH "; curl -s https://api.btcmarkets.net/market/ETH/AUD/tick | \
11 | grep -Eo 'lastPrice":[0-9\.]+' | sed 's/lastPrice"://' | tr -d '\n'; \
12 | echo -n " BTC "; curl -s https://api.btcmarkets.net/market/BTC/AUD/tick | \
13 | grep -Eo 'lastPrice":[0-9\.]+' | sed 's/lastPrice"://'
14 |
15 | echo '---'
16 | echo 'Volume 24h'
17 |
18 | for COIN_TYPE in 'ETH' 'BTC'
19 | do
20 | echo -n "$COIN_TYPE "; \
21 | curl -s "https://api.btcmarkets.net/market/$COIN_TYPE/AUD/tick" | \
22 | grep -Eo 'volume24h":[0-9\.]+' | sed 's/volume24h"://' | tr -d '\n'; \
23 | echo '| href=https://www.btcmarkets.net/'
24 | done
25 |
--------------------------------------------------------------------------------
/Cryptocurrency/garlicoin.1m.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Garlicoin Balance
4 | # v1.1
5 | # ferdizz
6 | # ferdizz
7 | # Shows your current Garlicoin balance.
8 | # https://raw.githubusercontent.com/ferdizz/files/master/garlic-screenshot.png
9 | # bash
10 |
11 | balance=0
12 |
13 | declare -a addresses=(
14 | "INSERT-YOUR-WALLET-ADDRESS-#1-HERE"
15 | "INSERT-YOUR-WALLET-ADDRESS-#2-HERE" # <-- Repeat for every address you want to add
16 | )
17 |
18 | for i in "${addresses[@]}"
19 | do
20 | res="$(curl -s 'https://garli.co.in/ext/getbalance/'"$i")"
21 | balance="$(echo "$balance + $res" | bc)"
22 | done
23 |
24 | echo "$(printf '%.1f' "$balance") ₲"
25 | echo "---"
26 | echo "$balance Garlicoins"
27 |
28 | # GPuEScAvXJvviVMaTH2xg4KPgPDD52AK1M if you want to donate some of that sweet sweet garlic
--------------------------------------------------------------------------------
/Dev/Acquia/.INSTALL.md:
--------------------------------------------------------------------------------
1 | ## Install Acquia Cloud plugins
2 |
3 | 1. Install the pre-requisites:
4 | 1. [Composer](https://getcomposer.org/download/)
5 | 2. [BitBar PHP](https://github.com/SteveEdson/bitbar-php)
6 | ```
7 | composer global require steveedson/bitbar-php
8 | ```
9 | 3. [Acquia CLI](https://docs.acquia.com/acquia-cli/install/)
10 | ```
11 | curl -OL https://github.com/acquia/cli/releases/latest/download/acli.phar
12 | chmod +x acli.phar
13 | mv acli.phar /usr/local/bin/acli
14 | ```
15 | 4. Authenticate with Acquia CLI:
16 | ```
17 | acli login
18 | ```
19 | 2. Follow the typical installation process for xBar plugins by browsing for the plugin in the xBar UI and clicking "install."
20 |
21 | That's it!
--------------------------------------------------------------------------------
/Dev/Docker/docker-stats.10s.sh:
--------------------------------------------------------------------------------
1 | #!/bin/zsh
2 |
3 | # Metadata allows the plugin to show up in the xbar app and website.
4 | #
5 | # Docker stats
6 | # v0.1
7 | # Tom Adamczewski
8 | # tadamcz
9 | # Shows stats about currently running Docker containers
10 | # https://images2.imgbox.com/e6/1a/3AEpT9sd_o.png
11 | # string(VAR_MENU_BAR_TEXT='🐳'): The text that will appear in the Menu Bar
12 |
13 | echo $VAR_MENU_BAR_TEXT
14 | echo "---"
15 | while read -r line; do
16 | # add `| font='MesloLGL Nerd Font Mono'` to every line
17 | echo "$line" " | font='MesloLGL Nerd Font Mono'"
18 | done < <(/usr/local/bin/docker stats --no-stream)
19 | echo "Refresh | terminal=false refresh=true"
--------------------------------------------------------------------------------
/Dev/Docker/numContainers.5s.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # NumContainers
4 | # v1.0
5 | # cghamburg
6 | # cghamburg
7 | # Print number of running Docker containers with whale unicode char
8 | # docker
9 |
10 | CONTAINERS=$(/usr/local/bin/docker ps --format '{{.Names}}' | sort)
11 | NUM_CONTAINERS=0
12 | if [ -n "$CONTAINERS" ]
13 | then
14 | NUM_CONTAINERS=$(echo "${CONTAINERS}" | wc -l | tr -d '[:space:]')
15 | fi
16 | echo "$(printf "🐳 %.0f \n" "${NUM_CONTAINERS}") | size=13"
17 | echo "---"
18 | echo "${CONTAINERS}"
19 |
--------------------------------------------------------------------------------
/Dev/GitHub/github_watch.1h.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 |
3 | # GitHub Watch
4 | # v0.1.0
5 | # D. Khamsing
6 | # dkhamsing
7 | # Show GitHub stars ⭐️ for a list of repos
8 | # http://i.imgur.com/z1qhSun.png
9 | # ruby
10 | # https://github.com/dkhamsing
11 |
12 | require 'open-uri'
13 | require 'json'
14 |
15 | REPOS = [
16 | 'matryer/bitbar',
17 | 'dkhamsing/awesome_bot'
18 | ]
19 |
20 | VERSION = '0.1.0'
21 |
22 | CONFIG_GITHUB_WATCH = 'stargazers_count'
23 |
24 | CONFIG_SYMBOL = '★'
25 |
26 | GITHUB_REPO_API = 'https://api.github.com/repos'
27 |
28 | def get_stars(repos)
29 | s = []
30 | repos.each do |r|
31 | repo_url = "#{GITHUB_REPO_API}/#{r}"
32 | c = open repo_url
33 | j = JSON.parse c.read
34 | s.push j[CONFIG_GITHUB_WATCH]
35 | end
36 | s
37 | end
38 |
39 | def line(r, s)
40 | repo_url = "https://github.com/#{r}"
41 | puts "#{r} #{CONFIG_SYMBOL} #{s} | href=#{repo_url}"
42 | end
43 |
44 | # bitbar output
45 | begin
46 | get_stars(REPOS).each_with_index { |s, i| line REPOS[i], s.to_s }
47 | rescue => e
48 | puts "#{CONFIG_SYMBOL} | color=red"
49 | puts "Error: #{e}"
50 | exit
51 | end
52 |
--------------------------------------------------------------------------------
/Dev/Hosting/Linode/Linode.5m.php:
--------------------------------------------------------------------------------
1 | #!/usr/bin/php
2 |
3 | Linode Status
5 | // v1.0
6 | // Brendon Cheves
7 | // misfitius
8 | // Uses linode-cli to check the status of your Linodes.
9 | // linode-cli,php
10 |
11 | $status = true;
12 | $json = shell_exec('/usr/local/bin/linode-cli linodes list --json');
13 | $servers = json_decode($json);
14 | $output = '---' . "\n";
15 | foreach($servers as $server)
16 | {
17 | $status &= ($server->status == 'running');
18 | $output .= $server->label . ' : ' . $server->status . '|color=' . ($server->status == 'running' ? 'green' : 'red') . "\n";
19 | }
20 | $output .= 'Go to Linode account|href=https://manager.linode.com';
21 |
22 | echo 'Linode|color=' . ($status ? 'green' : 'red') . "\n" . $output;
23 | ?>
24 |
--------------------------------------------------------------------------------
/Dev/Jenkins/jenkins-status.1m.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Check status of single Jenkins project
3 | # Stratouklos
4 | # Stratouklos
5 |
6 | USER="username"
7 | PASS="pass"
8 | BASE_URL="my-jenkins.com"
9 | JOBNAME="jobname"
10 |
11 | RESULT=$(curl -silent http://${USER}:${PASS}@${BASE_URL}/job/${JOBNAME}/lastBuild/api/json?pretty=true | grep "result" | awk '{print $3}')
12 |
13 | if [[ $RESULT == *"SUCCESS"* ]]
14 | then
15 | echo '🍏'
16 | else
17 | echo '🍎'
18 | fi
19 |
--------------------------------------------------------------------------------
/Dev/Kubernetes/k-get-pods.30s.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | # List some running Kubernetes things
4 | # v1.0
5 | # Robert Prince
6 | # robertp
7 | # Simple plugin that shows running Kubernetes pods, services, deployments, ...
8 | # brew,kubectl
9 | # https://i.imgur.com/sH9yhBW.png
10 |
11 | export PATH=/usr/local/bin:"${PATH}"
12 |
13 | numpods=$(kubectl get pods -A 2> /dev/null | grep -v NAME | wc -l | sed 's/ //g')
14 | numsvc=$(kubectl get services -A 2> /dev/null | grep -v NAME | wc -l | sed 's/ //g')
15 | numdeps=$(kubectl get deployments -A 2> /dev/null | grep -v NAME | wc -l | sed 's/ //g')
16 |
17 | # if [[ "$numpods" -eq "0" && "$numsvc" -eq "0" && "$numdeps" -eq "0" ]]; then echo "no k8s"; exit; fi
18 |
19 | if [[ "$numpods" -eq "0" && "$numsvc" -eq "0" && "$numdeps" -eq "0" ]]; then exit; fi
20 |
21 | echo "[$numpods pods / $numsvc services / $numdeps deployments]"
22 |
23 | echo "---"
24 | echo "==== PODS ===="
25 | kubectl get pods -A | while read -r line; do echo "${line} | font=Menlo"; done
26 | echo "---"
27 | echo "==== SERVICES ===="
28 | kubectl get services -A | while read -r line; do echo "${line} | font=Menlo"; done
29 | echo "---"
30 | echo "==== DEPLOYMENTS ===="
31 | kubectl get deployments -A | while read -r line; do echo "${line} | font=Menlo"; done
32 |
--------------------------------------------------------------------------------
/Dev/PID/pidkiller.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Display and kill running processes
4 | #
5 | # by Dan Engel (im@dan-engel.fyi)
6 | #
7 |
8 | # metadata
9 | # PID Killer
10 | # v1.10.1
11 | # Dan Engel
12 | # dengel29
13 | # Display and kill running processes
14 | # https://user-images.githubusercontent.com/8292535/108005602-1651c500-7034-11eb-982f-edc41a9554db.png
15 |
16 | echo "Current PIDs"
17 | echo "---"
18 | echo "Click on an item to kill the process | font=Tahoma-Bold"
19 |
20 | if [[ "$1" = 'kill' ]]; then
21 | kill -9 "$2"
22 | fi
23 |
24 | list=`lsof -i | awk '{a[$1","$2];}END {for (i in a) print i;}'`;
25 | IFS=$'\n' arr=($list)
26 | IFS=','
27 | echo "${#arr[@]} running currently | color=green font=Tahoma size=12"
28 | for val in "${arr[@]}"; do
29 | item=($val)
30 | echo "${item[0]}:${item[1]} | font=AndaleMono bash=$0 param1=kill param2=${item[1]} terminal=false refresh=true"
31 | done
32 |
--------------------------------------------------------------------------------
/Dev/PhpStormXdebugStatus.3s.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # PHPstorm debugger status
4 | # v1.0
5 | # Harings Rob
6 | # haringsrob
7 | # Shows the current status of phpstorm debugger
8 | # bash
9 | # https://github.com/haringsrob/
10 |
11 | if lsof -i :9000 | grep -q phpstorm; then
12 | echo 'Xdebug on | color=#008000'
13 | else
14 | echo 'Xdebug off | color=#FF0000'
15 | fi
16 |
--------------------------------------------------------------------------------
/Dev/Shell/run-fastlane.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 |
3 | # Run fastlane
4 | # v1.0
5 | # Rishabh Tayal
6 | # Run fastlane from menu bar
7 | # rishabhtayal
8 | # bash
9 |
10 | # ------------- Modify the config below -------------
11 | configs = [
12 | {
13 | 'lane_name' => 'YOUR_LANE_NAME',
14 | 'path' => 'YOUR_PROJECT_PATH',
15 | 'use_bundle' => true
16 | },
17 | {
18 | 'lane_name' => 'YOUR_LANE_NAME',
19 | 'path' => 'YOUR_ANOTHER_PROJECT_PATH',
20 | 'use_bundle' => true
21 | }
22 | # YOU CAN ADD MORE CONFIG MAPS HERE
23 | ]
24 |
25 | # ------------ Ignore below this line ---------------
26 |
27 | require 'pathname'
28 |
29 | puts 'run-fastlane'
30 |
31 | puts '---'
32 |
33 | configs.each do |item|
34 | command = "cd #{item['path']} && "
35 | command << if item['use_bundle']
36 | 'bundle exec fastlane'
37 | else
38 | 'fastlane'
39 | end
40 | command << ' ' + item['lane_name']
41 |
42 | project_name = Pathname.new(item['path']).split.last.to_s
43 | puts "#{project_name}: #{item['lane_name']} | bash=\"#{command}\""
44 | end
45 |
--------------------------------------------------------------------------------
/Dev/SshMenu.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # SSH Menu
4 | # v1.0
5 | # Christopher Haen
6 | # Chrisischris
7 | # Provides a simple menu of ssh hosts when clicked on opens a new ssh session in terminal
8 | #
9 | #
10 |
11 | echo "ssh | color='white'"
12 | echo "---"
13 | #Enter list of servers below give it a name and an address
14 | echo "ServerName(Edit script file) | bash='ssh user@server'"
15 | #^Copy to add more servers
16 | #After adding or changing refresh plugins
17 |
--------------------------------------------------------------------------------
/Dev/Tutorial/alternate_options.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Alternate Options Tutorial
3 | # v1.0
4 | # Mat Ryer
5 | # matryer
6 | # http://i.imgur.com/EDYR52G.png
7 | # Example of how to include alternate items that replace the one before it when the Option key is pressed.
8 | echo "Hello"
9 | echo "Option key is pressed | alternate=true"
10 |
11 | echo "Another"
--------------------------------------------------------------------------------
/Dev/Tutorial/ansi.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Show ANSI colors
4 | # v1.0
5 | # Kent Karlsson
6 | # vogonistic
7 | # Example of how to use ANSI color codes
8 | # http://i.imgur.com/kGVgf6y.png
9 | # https://github.com/matryer/bitbar-plugins/blob/master/Tutorial/ansi.sh
10 |
11 | echo -e "\033[34mA\033[32mN\033[31mS\033[33mI\033[0m | ansi=true"
12 | echo "---"
13 |
14 | T='gYw' # The test text
15 | echo -e " 40m 41m 42m 43m\
16 | 44m 45m 46m 47m | ansi=true font=courier trim=false";
17 |
18 | for FGs in ' m' ' 1m' ' 30m' '1;30m' ' 31m' '1;31m' ' 32m' \
19 | '1;32m' ' 33m' '1;33m' ' 34m' '1;34m' ' 35m' '1;35m' \
20 | ' 36m' '1;36m' ' 37m' '1;37m';
21 | do FG=${FGs// /}
22 | echo -en " $FGs \033[$FG $T "
23 | for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
24 | do echo -en "$EINS \033[$FG\033[$BG $T \033[0m";
25 | done
26 | echo " | ansi=true font=courier trim=false";
27 | done
28 | echo "---"
29 | echo "Open color codes in browser… | href=http://misc.flogisoft.com/bash/tip_colors_and_formatting#colors"
30 | echo "Refresh | refresh=true"
31 |
--------------------------------------------------------------------------------
/Dev/Tutorial/config.sh:
--------------------------------------------------------------------------------
1 | #!/usr/local/bin/bash
2 | # shellcheck disable=SC2154
3 |
4 | # Home Config
5 | # v1.0
6 | # Kodie Grantham
7 | # kodie
8 | # Example of how to mimic the functionality of the home-config npm module in a bash BitBar plugin
9 | # bash4
10 | # https://github.com/kodie/bitbar-home-config
11 |
12 | typeset -A cfg
13 | cfg[home_config,color]="red"
14 | cfg[home_config,text]="Try editing $HOME/.bitbarrc"
15 |
16 | cfgFile="$HOME/.bitbarrc"
17 | if [ ! -e "$cfgFile" ]; then touch "$cfgFile"; fi
18 | while read -r cfgLine; do
19 | if [[ -z $cfgLine ]]; then continue; fi
20 | if [[ ${cfgLine:0:1} == '[' ]]; then cfgKey=${cfgLine:1:-1};
21 | else IFS='='; cfgVar=($cfgLine); unset IFS; cfg[$cfgKey,${cfgVar[0]}]=${cfgVar[1]}; fi
22 | done < "$cfgFile"
23 |
24 | echo "Config Example | dropdown=false color=${cfg[home_config,color]}"
25 | echo "---"
26 | echo "${cfg[home_config,text]}"
27 |
--------------------------------------------------------------------------------
/Dev/Tutorial/cycle_text_and_detail.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | #
4 | # Include BitBar metadata like this at the top of the file
5 | # (commented out, of course):
6 | #
7 | # Cycle text and detail text
8 | # v1.0
9 | # Mat Ryer
10 | # matryer
11 | # Example of how to include items that cycle in the top, and items that only appear in the dropdown.
12 | # https://camo.githubusercontent.com/5cec3248a9fc4eede235ead682a65f977577f670/68747470733a2f2f7261772e6769746875622e636f6d2f6d6174727965722f6269746261722f6d61737465722f446f63732f4269744261722d4578616d706c652d4d656e752e706e67
13 | # https://github.com/matryer/bitbar-plugins/blob/master/Tutorial/cycle_text_and_detail.sh
14 | #
15 | # Text above --- will be cycled through in the menu bar,
16 | # whereas text underneath will be visible only when you
17 | # open the menu.
18 | #
19 |
20 | echo one
21 | echo two
22 | echo three
23 | echo ---
24 | echo These lines are only visible
25 | echo when you open the menu.
26 |
--------------------------------------------------------------------------------
/Dev/Tutorial/emoji.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Show emoji
4 | # v1.0
5 | # Kent Karlsson
6 | # vogonistic
7 | # Example of how to use emojis
8 | # http://i.imgur.com/z4T9X6G.png
9 | # https://github.com/matryer/bitbar-plugins/blob/master/Tutorial/emoji.sh
10 |
11 | echo ":sparkles: :coffee: :mushroom:"
12 | echo "---"
13 |
14 | echo "Random emojis:exclamation:"
15 | echo ":smile: :smile_cat: :smiley: :smiley_cat: :smiling_imp:"
16 | echo ":tent: :thought_balloon: :thumbsdown: :thumbsup: :ticket:"
17 | echo ":pig: :dolphin: :elephant: :honeybee: :horse:"
18 | echo "No :coffee: | emojize=false"
19 |
20 | echo "---"
21 | echo "Open emoji cheat sheet in browser… | href=http://www.emoji-cheat-sheet.com/"
22 | echo "Refresh | refresh=true"
23 |
--------------------------------------------------------------------------------
/Dev/Tutorial/is_bitbar.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Is BitBar?
4 | # Mat Ryer and Tyler Bunnell
5 | # matryer
6 | # Example script showing use of $BITBAR environment variable
7 | # https://i.imgur.com/TcZJI06.png
8 | # 1.0
9 | #
10 | # Example script showing how to let your scripts determine
11 | # whether they are expected to deliver BitBar output or not.
12 | #
13 | # Put this script in your BitBar plugins folder and notice
14 | # it says "In BitBar", but run it directly in Terminal, and it
15 | # says "In Terminal".
16 | BitBar=${BitBar}
17 |
18 | if [ "$BitBar" ]; then
19 | # this script is being called from within
20 | # BitBar.
21 | echo "In BitBar"
22 | else
23 | # this script is being called from within
24 | # Terminal.
25 | echo "In Terminal"
26 | fi
27 |
--------------------------------------------------------------------------------
/Dev/Tutorial/is_darkmode.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Is Dark Mode?
4 | # v1.0
5 | # Dave Wikoff
6 | # derimagia
7 | # Example script showing how to let your scripts determine whether OSX is in Dark Mode so you can adjust appearance. Must restart Bitbar after changing setting.
8 | #
9 | # http://i.imgur.com/2ark3Bq.png
10 | BitBarDarkMode=${BitBarDarkMode}
11 |
12 | if [ "$BitBarDarkMode" ]; then
13 | # OSX has Dark Mode enabled.
14 | echo "Dark | color=white"
15 | else
16 | # OSX does not have Dark Mode
17 | echo "Light | color=black"
18 | fi
19 |
--------------------------------------------------------------------------------
/Dev/Tutorial/refresh.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Refresh Me
4 | # v1.0
5 | # Karl Piper
6 | # KarlPiper
7 | # How to refresh just one plugin, or restart BitBar entirely.
8 | # https://raw.githubusercontent.com/KarlPiper/Plugins-for-Bitbar/master/images/refresh.png
9 | # bash
10 |
11 | if [[ "$1" = "restart" ]]; then
12 | osascript <Submenus
4 | # v1.0
5 | # iosdeveloper
6 | # iosdeveloper
7 | # Example of how to include multiple levels of menu items in v1.8 and later.
8 | # http://i.imgur.com/9zJJHns.png
9 |
10 | echo "Submenu Tutorial"
11 | echo "---"
12 |
13 | echo "Places"
14 | echo "--London"
15 | echo "--Paris"
16 | echo "--Tokyo"
17 | echo "Fruit"
18 | echo "--Apple"
19 | echo "--Orange"
20 | echo "--Melon"
21 | echo "----Watermelon"
22 | echo "----Honeydew"
23 |
--------------------------------------------------------------------------------
/Dev/average_app_store_review_times.1h.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | # -*- coding: utf-8 -*-
3 |
4 | # Average Review Times
5 | # v0.1.2
6 | # mfks17
7 | # mfks17
8 | # Average App Store Review Times
9 | # https://raw.githubusercontent.com/mfks17/bitbar-plugin-AppStore/master/Screenshots/01.png
10 | # ruby, nokogiri
11 | # https://github.com/mfks17/bitbar-plugin-AppStore
12 |
13 | require 'open-uri'
14 | require 'nokogiri'
15 |
16 | url = 'http://appreviewtimes.com/'
17 |
18 | charset = nil
19 | html = open(url) do |f|
20 | charset = f.charset
21 | f.read
22 | end
23 |
24 | doc = Nokogiri::HTML.parse(html, nil, charset)
25 |
26 | puts 'Average Review Times'
27 | puts '---'
28 | puts '📱 iOS App Store ' + doc.xpath('/html/body/div[2]/div/div[2]/div[1]/p[1]').text
29 |
30 | puts '💻 Mac App Store ' + doc.xpath('/html/body/div[2]/div/div[3]/div[1]/p[1]').text
31 |
--------------------------------------------------------------------------------
/Dev/checkRedisMemory.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Check remote memory usage of Redis Server
3 | # v1.0
4 | # Jimmy Spivey
5 | # JimDeanSpivey
6 | # This will invoke SSH command locally and connect to a server that runs redis, where it will check the memory usage. You will likely run into this error: "ssh_askpass: exec(/usr/libexec/ssh-askpass): No such file or directory" You will need to install ssh_askpass found here: https://github.com/markcarver/mac-ssh-askpass to fix that and also enable to you to ssh from BitBar.
7 | # ssh_askpass
8 | # http://i.imgur.com/ikCSVBq.png
9 | #
10 | # Dependencies:
11 | # ssh_askpass (https://github.com/markcarver/mac-ssh-askpass)
12 |
13 |
14 | HOST="user@hostname"
15 |
16 | printf 'Redis: '
17 | RESULT=$(ssh $HOST "redis-cli INFO | grep -o '[0-9\.]*[A-Z]\s' | head -2")
18 | printf "%s" "$RESULT" | head -1
19 | echo ---
20 | LINE1=$(echo "$RESULT" | head -n1)
21 | LINE2=$(echo "$RESULT" | tail -n1)
22 | echo 'Used Memory: '"$LINE1"
23 | echo 'Peak Memory: '"$LINE2"
24 |
25 |
--------------------------------------------------------------------------------
/Dev/gulpLauncher.1h.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env /usr/local/bin/node
2 |
3 |
4 | /* jshint esversion: 6 */
5 | /* jshint asi: true */
6 |
7 | /*
8 | * Gulp Launcher
9 | * v1.0
10 | * Aaron Crawford
11 | * aaroncrawford
12 | * https://i.imgur.com/RAxo5tG.png
13 | * Quickly launch gulp processes on projects. Useful for agency developers with a lot of projects. Editing of file required to list your projects.
14 | * node
15 | */
16 |
17 | // EDIT ME
18 | var file = '/path/to/_projects.json'
19 | // Example _projects.json file : (you can just create an array in this file, but our file was huge so we decided to store in a separate file)
20 | /*
21 |
22 | [
23 | {
24 | "name": "Project 1",
25 | "path": "/path/to/readable/file/project1/src"
26 | },
27 | {
28 | "name": "Project 2",
29 | "path": "/path/to/readable/file/project2/src"
30 | }
31 | ]
32 |
33 | */
34 |
35 |
36 | var fs = require('fs')
37 |
38 | fs.readFile(file, 'utf8', (e, data) => {
39 | console.log('🥤')
40 | console.log('---')
41 |
42 | var projects = JSON.parse(data)
43 |
44 | projects.map((d) => {
45 | var path = d.path.replace(" ", "\\\\ ")
46 | // Currently just goes to the directory and runs 'gulp'. If you want to modify this process, edit this line
47 | console.log(`${d.name}|bash="cd ${path} && gulp" terminal=true`)
48 | })
49 | })
50 |
51 |
52 |
--------------------------------------------------------------------------------
/Dev/ips.30s.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Display local and external IP and allow copying it. This plugin will connect to icanhazip.com to determine external IP address.
4 | #
5 | # by Martin Braun (martin-braun.net)
6 | #
7 |
8 | # metadata
9 | # IPs
10 | # v1.0.0
11 | # Martin Braun
12 | # martin-braun
13 | # Display local and external IP and allow copying it. This plugin will connect to icanhazip.com to determine external IP address.
14 | # https://i.imgur.com/8eSN3Hw.png
15 |
16 | locip=`osascript -e "IPv4 address of (system info)"`
17 | pubip=`curl -4s icanhazip.com` > /dev/null
18 |
19 | if [[ "$1" = 'copy' ]]; then
20 | echo "$2" | tr -d '\n' | pbcopy
21 | fi
22 |
23 | echo "${locip/192.168./..}"
24 | echo "---"
25 | echo "Click on an IP to copy it | font=Tahoma-Bold"
26 | echo "---"
27 | echo "Local: $locip | font=AndaleMono bash=$0 param1=copy param2=$locip terminal=false refresh=false"
28 | echo "External: $pubip | font=AndaleMono bash=$0 param1=copy param2=$pubip terminal=false refresh=false"
29 |
--------------------------------------------------------------------------------
/Dev/process-monitoring.1s.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # process-monitoring
4 | # v0.1.0
5 | # Olivier Tille
6 | # oliviernt
7 | # Monitors CPU and Memory usage for a certain process
8 | # http://i.imgur.com/ApLSN8L.png
9 | #
10 | # https://github.com/oliviernt/bitbar-plugins/blob/monitoring/Dev/Monitoring/process-monitoring.1s.sh
11 |
12 | PROCESS="BitBar.app"
13 |
14 | # shellcheck disable=SC2009
15 | id=$(ps aux | grep -i "${PROCESS}" | grep -v grep | awk '{print $2}')
16 | echo -n "${PROCESS}: "
17 | top -l 1 -pid "$id" -stats cpu,mem | tail -1 | awk '{print "CPU: " $1 " - MEM: " $2}'
18 | echo "---"
19 | top -l 1 -pid "$id"
20 |
--------------------------------------------------------------------------------
/Dev/tail.5s.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # tail
4 | # v2.0
5 | # Mat Ryer
6 | # matryer
7 | # Tails a text file. Perfect for tailing logs in the menu bar.
8 | # https://cloud.githubusercontent.com/assets/101659/12247623/b65b6f1e-b8ac-11e5-8ec2-6d9d885bfb6f.png
9 | #
10 | # https://github.com/matryer/bitbar-plugins/blob/master/Dev/Logs/tail.5s.sh
11 |
12 | # string(VAR_FILE=""): The file to tail.
13 | # number(VAR_LINES=15): The number of lines to show.
14 |
15 | # If you're using xbar, use the app to install this and set the preferences
16 | # in the UI.
17 |
18 | # For old BitBar builds, set the values by uncommenting these lines:
19 | # VAR_FILE=/path/to/file
20 | # VAR_LINES=15
21 |
22 | echo -n "↧ "
23 | basename "$VAR_FILE"
24 | echo ---
25 | tail -n $VAR_LINES $VAR_FILE
26 |
--------------------------------------------------------------------------------
/Dev/virtualbox-running_vms.30s.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 |
3 | # Show running Virtualbox VMs with option to shutdown (save state) using VBoxManage.
4 | #
5 | # Virtualbox running VMs
6 | # 1.0
7 | # Harald Ringvold
8 | # haraldringvold
9 | # Show running virtualbox VMs with option to shutdown (save state) using VBoxManage.
10 | # http://i.imgur.com/YmFrYQH.png
11 | # Ruby,VBoxManage
12 |
13 |
14 | ENV['PATH'] = ENV['PATH']+':/usr/local/bin'
15 |
16 | status = `VBoxManage list runningvms`
17 |
18 | if status != ""
19 | vms = status.split(/\n/)
20 |
21 | print "🇻"
22 | print "#{vms.length}" if vms
23 | puts ""
24 | puts "---"
25 |
26 | vms.each do |vm|
27 | data_image = /('.*?'|".*?"|\S+).({.*?})/.match vm
28 | name = data_image[1].tr('"','')
29 | id = data_image[2].tr('{}','')
30 |
31 | puts "#{name}| color=black"
32 | puts "#{id}"
33 | puts "Save | color=green bash=VBoxManage param1=controlvm param2=#{id} param3=savestate"
34 | puts "---"
35 | end
36 | else
37 | # if no VMs are running
38 | puts "🇻"
39 | end
40 |
41 |
--------------------------------------------------------------------------------
/Dev/xcode-version.1h.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Xcode Version
3 | # v1.0
4 | # Florian Hirschmann
5 | # hirschfl
6 | # Shows the Xcode version that is currently selected with xcode-select.
7 | # xcodebuild
8 |
9 | xcodebuild -version | head -1
10 |
--------------------------------------------------------------------------------
/E-Commerce/nvidia.3m.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | # 1080ti Stock Checker
4 | # v2.0
5 | # Alex Haynes
6 | # alexh
7 | # Checks nvidia site if 1080ti are in stock
8 | # https://images.nvidia.com/pascal/img/gtx1080ti/gallery/gallery-2.jpg
9 | # python
10 |
11 | import urllib.request, json, time
12 | with urllib.request.urlopen("http://api.findgpu.com/gpus?" + str(int(time.time()))) as url:
13 | data = json.loads(url.read().decode())
14 | my_item = next((item for item in data if item['gpu_id'] == "900-1G611-2550-000"), None)
15 | in_stock = my_item['in_stock']
16 | if in_stock == 'false':
17 | status = ":heavy_multiplication_x:"
18 | else:
19 | status = ":white_check_mark:"
20 | print ("1080Ti: " + status)
21 | print ("---")
22 | print ("Buy Now" + "| href=https://www.nvidia.com/en-us/geforce/products/10series/geforce-gtx-1080-ti/")
23 |
--------------------------------------------------------------------------------
/Email/gmail-checker.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # Gmail Checker
4 | # v1.0.1
5 | # Nadav Cohen
6 | # nadavc
7 | # Checks gmail and displays inbox count
8 | # http://i.imgur.com/LYrIphK.png
9 | # NOTE: If you have Two Factor Authentication (2FA) enabled for your Google account and try to use your regular password,
10 | # you'll get an "integer expression expected" error. This is actually an "Unauthorized" error. Please make an "App Password"
11 | # for your Google account and use that in password: https://myaccount.google.com/apppasswords
12 |
13 | USERNAME="GMAIL_USERNAME"
14 | PASSWORD="GMAIL_PASSWORD"
15 | COLOR=black
16 | RESULT=$(curl -s -u $USERNAME:$PASSWORD "https://mail.google.com/mail/feed/atom" | egrep -o '[0-9]*' | cut -c 12-)
17 |
18 | if [ "$RESULT" -ne "0" ]; then
19 | COLOR=red
20 | fi
21 |
22 | echo "📬 $RESULT|color=$COLOR"
23 |
--------------------------------------------------------------------------------
/Email/mu-email-checker.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Mu Email Checker
4 | # v1.0.1
5 | # Andrew Sanchez
6 | # andrewsanchez
7 | # Displays results of basic mu find commands
8 | # http://i67.tinypic.com/104pa1w.png
9 |
10 | # Count total number of emails in inbox, unread mail and drafts indexed with mu
11 | # Also includes the output for unread emails in the drop down menu
12 | # Based on a blog post by Ben Maughan at the excellent pragmaticemacs.com
13 | # http://pragmaticemacs.com/emacs/an-unobtrusive-email-monitor-for-mu4e-on-the-mac/
14 | # See related post to include mails in outbox using postfix
15 | # http://pragmaticemacs.com/emacs/using-postfix-instead-of-smtpmail-to-send-email-in-mu4e/
16 |
17 | export LANG=en_US.UTF-8
18 |
19 | mu="/usr/local/bin/mu"
20 |
21 | # mu find patterns
22 | pinbox="maildir:/INBOX"
23 | punread="$pinbox AND flag:unread"
24 | pdrafts="maildir:/drafts"
25 |
26 | # Total mail in inbox
27 | total="$("$mu" find "$pinbox" | wc -l)"
28 |
29 | # Unread mails in inbox
30 | unread="$("$mu" find "$punread" 2> /dev/null)"
31 | unread_total="$("$mu" find "$punread" 2> /dev/null | wc -l)"
32 |
33 | # Drafts
34 | drafts="$("$mu" find "$pdrafts" | wc -l)"
35 |
36 | if [ "$unread_total" -gt 0 ]
37 | then
38 | printf "📪 %i/%i/%i\n" "$unread_total" "$total" "$drafts"
39 | echo ---
40 | echo "$unread"
41 | fi
42 |
--------------------------------------------------------------------------------
/Email/notmuch-mail-count.30s.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | # encoding: UTF-8
3 |
4 | # Notmuch inbox & unread counter
5 | # v1.0
6 | # Slamet Kristanto
7 | # drselump14
8 | # Show mutt inbox using notmuch inbox and unread
9 | # https://www.dropbox.com/s/cgkjb7hv6s1yx1a/Screenshot%202017-02-08%2020.40.02.png?raw=1
10 | # mutt,notmuch
11 |
12 | inbox = `/usr/local/bin/notmuch search tag:inbox tag:unread`
13 |
14 | mails = inbox.encode('UTF-8', :invalid => :replace).split("\n")
15 | count = mails.length
16 | if count > 0
17 | puts "📮 #{count} | color=red size=12"
18 | else
19 | puts ''
20 | end
21 |
22 | puts "---"
23 |
24 | mails.each do |m|
25 | mail = m.gsub(/thread.*\]/,'')[0..25].gsub(/\|/,':')
26 | puts "#{mail} | color=green size=12 bash='/usr/local/bin/mutt' "
27 | end
28 |
29 |
--------------------------------------------------------------------------------
/Email/simple-gmail-checker.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Simple Gmail Checker
3 | # v0.1.0
4 | # Murat Bastas
5 | # murat
6 | # Checks gmail and displays inbox count + unread mails' subjects
7 | # sh,libxml2
8 |
9 | USERNAME="example@gmail.com"
10 | PASSWORD="verysecretpassword"
11 |
12 | RESULT=$(curl -s -u $USERNAME:$PASSWORD "https://mail.google.com/mail/feed/atom" | xmllint --format -)
13 | COUNT=$(echo "$RESULT" | grep -E -o '[0-9]*' | cut -c 12-)
14 | ENTRIES=$(echo "$RESULT" | sed -n 's|\(.*\)|\1|p' | tr -s ' ')
15 |
16 | if [ "$COUNT" -ne 0 ]; then
17 | echo "📬 $COUNT | color=white"
18 | else
19 | echo "📭"
20 | fi
21 | echo "---"
22 |
23 | count=0
24 | echo "$ENTRIES" | while read -r line || [[ -n $line ]];
25 | do
26 | if [ $count -eq 1 ]; then
27 | echo "---"
28 | fi
29 |
30 | echo "$line | href=https://mail.google.com"
31 | (( count++ ))
32 | done
33 |
34 |
--------------------------------------------------------------------------------
/Email/unread.1m.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Mail
3 | # v1.0
4 | # Harrison Page
5 | # harrisonpage
6 | # Show unread count from Mail.app in menubar
7 | # bash,osascript
8 | # https://raw.githubusercontent.com/harrisonpage/unread/main/unread.png
9 | set -e
10 |
11 | OUTPUT=$(osascript -e 'tell Application "Mail"' -e 'unread count of inbox' -e 'end tell')
12 |
13 | if [[ $OUTPUT -gt 0 ]]
14 | then
15 | echo -n "📬"
16 | else
17 | echo -n "📪"
18 | fi
19 | echo " ${OUTPUT}"
20 |
--------------------------------------------------------------------------------
/Enabled/.gitignore:
--------------------------------------------------------------------------------
1 | # Ignore directory contents
2 | *
3 | # Except for
4 | !.gitignore
5 |
--------------------------------------------------------------------------------
/Environment/quake.1m.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Recent Big Earthquake
3 | # v1.1
4 | # Aaron Edell
5 | # aaronedell
6 | # Displays the most significant earthquakes in the last 30 days from http://earthquake.usgs.gov
7 | # http://i.imgur.com/lF8Qdpk.png
8 | # Bash GNU AWK
9 | # http://earthquake.usgs.gov
10 |
11 |
12 |
13 | echo '🌎'
14 | echo '---'
15 |
16 | echo ; curl -s https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/significant_month.csv | tail -n +2 | awk -F"," '{print $5" " $14$15}'
17 | echo '---'
18 | echo 'Data from http://earthquake.usgs.gov | color=green href=http://earthquake.usgs.gov'
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/Finance/dolar_blue.5m.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | # coding=utf-8
3 |
4 | # ARS/USD Blue tracker
5 | # v1.0
6 | # Ignacio Van Droogenbroeck
7 | # xe-nvdk
8 | # Displays the latest dollar blue rate
9 | # https://i.imgur.com/zJsoTl8.jpg
10 | # python
11 | # scrapy
12 |
13 | from lxml import html
14 | import requests
15 |
16 | page = requests.get('https://www.dolarhoy.com')
17 |
18 | tree = html.fromstring(page.content)
19 | buy = tree.xpath('/html/body/div/div[2]/div[1]/div[1]/div[2]/section/div/div/div/div[1]/div/div[1]/div/div[1]/div[1]/div[2]')
20 | sale = tree.xpath('/html/body/div/div[2]/div[1]/div[1]/div[2]/section/div/div/div/div[1]/div/div[1]/div/div[1]/div[2]/div[2]')
21 |
22 | print('B: ' + buy[0].text + ' S: ' + sale[0].text)
23 |
--------------------------------------------------------------------------------
/Finance/exchange-rates.5m.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # Exchange Rates
4 | # v1.0
5 | # Mehmet Akif Tütüncü
6 | # makiftutuncu
7 | # https://github.com/makiftutuncu/exchange-bitbar/raw/master/Screenshot.png
8 | # This is a BitBar plugin for showing exchange rates of currencies in your menu bar. See https://github.com/makiftutuncu/exchange-bitbar#configuration for configuration.
9 | # shell,curl,jq
10 | #
11 | # Exchange Rates by Mehmet Akif Tütüncü
12 | #
13 | # This is a BitBar plugin for showing exchange rates of currencies in your menu bar.
14 | # See https://github.com/makiftutuncu/exchange-bitbar#configuration for configuration.
15 |
16 | export PATH="/usr/local/bin:$PATH"
17 |
18 | # Currency pairs for which rates will show as array
19 | CURRENCY_PAIRS=("USD-TRY" "EUR-TRY")
20 |
21 | for pair in "${CURRENCY_PAIRS[@]}";
22 | do
23 | URL=$(echo $pair | awk -F '-' '{print "https://akifs-exchange-api.herokuapp.com/rates?source="$1"&target="$2}')
24 | RESPONSE=$(curl -s -X GET $URL | jq -r '"\(.source),\(.target),\(.rate)"')
25 | echo $RESPONSE | awk -F ',' '{printf "💵 %s-%s: %0.3f\n", $1, $2, $3}'
26 | done
27 |
--------------------------------------------------------------------------------
/Finance/mintable.1h.zsh:
--------------------------------------------------------------------------------
1 | #!/bin/zsh
2 |
3 | # Mintable
4 | # v2.0.0
5 | # Kevin Schaich
6 | # kevinschaich
7 | # Automate your personal finances – for free, with no ads, and no data collection.
8 | # https://user-images.githubusercontent.com/9244728/86181837-c6ea7300-bafc-11ea-8442-c943eece3a03.png
9 | # node,mintable
10 | # https://github.com/kevinschaich/mintable
11 |
12 | export PATH="/usr/local/bin:$PATH"
13 |
14 | output=$(/usr/local/bin/mintable fetch) || exit $?
15 |
16 | declare output_status
17 |
18 | if [[ $? -eq 0 ]]
19 | then
20 | output_status="🍃"
21 | else
22 | output_status="❌"
23 | fi
24 |
25 | echo $output_status
26 | echo ---
27 | echo "..."
28 | echo $output | tail -n 15 | head -n 12
29 |
30 | echo "---"
31 | link=`echo $output | tail -n 1`
32 | echo $link
33 | echo "View Spreadsheet | color=green href=$link"
34 |
35 | echo "---"
36 | echo "Refresh Now | color=blue refresh=true"
37 |
--------------------------------------------------------------------------------
/Finance/robinhood.1m.py:
--------------------------------------------------------------------------------
1 | #!/usr/local/bin/python
2 | # -*- coding: utf-8 -*-
3 |
4 | # Robinhood
5 | # v1.0
6 | # Jonathan Grant
7 | # jonathangrant
8 | # Shows your total portfolio value.
9 | # python,Robinhood
10 |
11 |
12 | from Robinhood import Robinhood as R
13 |
14 | me = R()
15 | me.login(username="Your Username Here", password="Your Password Here")
16 | data = me.portfolios()
17 | start = data.get('equity_previous_close', '0')
18 | now = data.get('equity', '0')
19 | color = 'white'
20 | difference = float(now) - float(start)
21 | if difference > 0:
22 | color = 'green'
23 | elif difference < 0:
24 | color = 'red'
25 | print('${:,.2f}|color={}'.format(float(now), color))
26 | print('---')
27 | print('Start of Day: ${:,.2f}|color={}'.format(float(start), 'white'))
28 | print('Difference: ${:,.2f}|color={}'.format(float(difference), color))
29 |
--------------------------------------------------------------------------------
/Finance/robinhood2.1m.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | # Robinhood2
4 | # v1.0
5 | # Adam Jilling
6 | # ajilling
7 | # Shows your total portfolio value and daily change
8 | # https://i.ibb.co/SBY7NXy/bitbar-robinhood.png
9 | # python,robin_stocks
10 |
11 | import robin_stocks as rh
12 |
13 | login = rh.login('', '')
14 |
15 | portfolio = rh.profiles.load_portfolio_profile()
16 | current_value = portfolio['equity']
17 | open_value = portfolio['equity_previous_close']
18 |
19 | change = float(current_value) - float(open_value)
20 |
21 | # TODO: colors not working in Big Sur
22 | color = 'white'
23 | move = ''
24 | if (change > 0):
25 | color = 'green'
26 | move = '▲'
27 | elif (change < 0):
28 | color = 'red'
29 | move = '▼'
30 |
31 | output1 = '{:,.2f}'.format(float(current_value))
32 | output2 = ' ' + move
33 | output3 = '{:,.2f}'.format(abs(float(change)))
34 | print(output1 + output2 + output3)
35 |
--------------------------------------------------------------------------------
/Finance/shiller-pe.4h.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Shiller PE ratio
4 | # Jørgen
5 | # jtorvald
6 | # Gets the current Shiller PE ratio. Information is provided ‘as is’ and solely for informational purposes, not for trading purposes or advice, and may be delayed.
7 | # bash, curl
8 |
9 | SHILLER_PE=$(curl -s https://www.multpl.com/shiller-pe | grep "Current Shiller PE Ratio is" | awk '{print $16}' | cut -d, -f1)
10 |
11 | if [ "$(echo "17 > $SHILLER_PE" | bc -l)" -eq 1 ]; then
12 | ICON="💸 "
13 | COLOR=green
14 | elif [ "$(echo "21 > $SHILLER_PE" | bc -l)" -eq 1 ]; then
15 | ICON="💵 "
16 | COLOR=orange
17 | else
18 | ICON=""
19 | COLOR=black
20 | fi
21 |
22 | echo "${ICON}$SHILLER_PE | color=${COLOR}"
23 | echo "---"
24 | echo "Current Shiller PE ${SHILLER_PE} | color=${COLOR}"
25 | echo "See chart | href=https://www.multpl.com/shiller-pe"
26 |
--------------------------------------------------------------------------------
/Finance/stock.5s.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Stock Info
4 | # 1.0
5 | # clark
6 | # flyingtimes
7 | # use baidu stock api to monitor stock price. the price only show up in market time.
8 |
9 | if [ "$(date +%H)" -lt 9 ]; then
10 | echo "not trade time|color=red"
11 | exit
12 | fi
13 | if [ "$(date +%H)" -gt 15 ]; then
14 | echo "not trade time|color=red"
15 | exit
16 | fi
17 | if [ "$(date +%w)" -gt 5 ]; then
18 | echo "not trade time|color=red"
19 | exit
20 | fi
21 | if [ "$(date +%w)" -eq 0 ]; then
22 | echo "not trade time|color=red"
23 | exit
24 | fi
25 |
26 | # change folloing code to select your stock
27 | stocknum="sz000410"
28 | # apply for your own api key at http://apistore.baidu.com/apiworks/servicedetail/115.html
29 | apikey="apikey:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
30 |
31 | curl --get --include "http://apis.baidu.com/apistore/stockservice/stock?stockid=$stocknum&list=1" -H "$apikey" -s|grep "{"|awk -F "," '{print $4,$9,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36}'|awk -F ":| " '{printf"%s,%.2f,%.2f%|color=red\ns5:%.2f,%.0f|color=green\ns4:%.2f,%.0f|color=green\ns3:%.2f,%.0f|color=green\ns2:%.2f,%.0f|color=green\ns1:%.2f,%.0f|color=green\nb1:%.2f,%.0f|color=red\nb2:%.2f,%.0f|color=red\nb3:%.2f,%.0f|color=red\nb4:%.2f,%.0f|color=red\nb5:%.2f,%.0f|color=red\n",$2,$4,$6,$46,$44,$42,$40,$38,$36,$34,$32,$30,$28,$10,$8,$14,$12,$18,$16,$22,$20,$26,$24}'
32 |
--------------------------------------------------------------------------------
/Games/baj.2m.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # BAJ
3 | # v1.0
4 | # Justin Honold
5 | # astrostl
6 | # Checks for active turns at http://www.boiteajeux.net/ every two minutes
7 | # https://cloud.githubusercontent.com/assets/1126471/12343875/45b78bbe-bafd-11e5-960f-33b77c5d3e41.png
8 | #
9 |
10 | baj_login='LOGIN'
11 | baj_password='PASSWORD'
12 |
13 | url="http://www.boiteajeux.net/gestion.php"
14 | data="pAction=login&password=${baj_password}&username=${baj_login}"
15 |
16 | fetch() { curl --cookie-jar - --data "$data" --location --silent "$url"; }
17 | extract() { sed -n '//{s/.*\[\([0-9]*\)\].*/\1/p;q;}'; }
18 |
19 | turns="$(extract < <(fetch))"
20 |
21 | if ((turns < 1)); then
22 | echo "BAJ: 0"
23 | else
24 | echo "BAJ: $turns | color=red"
25 | fi
26 |
27 | echo "---"
28 | echo "Play | href=http://www.boiteajeux.net/"
29 |
--------------------------------------------------------------------------------
/Games/bgo.2m.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # BGO
3 | # v1.0.1
4 | # Justin Honold
5 | # astrostl
6 | # Checks for active turns at http://www.boardgaming-online.com/ every two minutes
7 | # https://cloud.githubusercontent.com/assets/1126471/12794798/82c49950-ca7c-11e5-855b-b1c69a0f9f31.png
8 | #
9 |
10 | bgo_login='LOGIN'
11 | bgo_pass='PASSWORD'
12 |
13 | url="http://www.boardgaming-online.com/"
14 | data="&identifiant=${bgo_login}&mot_de_passe=${bgo_pass}"
15 |
16 | fetch() { curl --cookie-jar - --data "$data" --location --silent "$url"; }
17 | extract() { sed -n '/^nbp=/{s/nbp=\([0-9]*\);/\1/p;q;}'; }
18 |
19 | turns="$(extract < <(fetch))"
20 |
21 | if ((turns < 1)); then
22 | echo "BGO: 0"
23 | else
24 | echo "BGO: $turns | color=red"
25 | fi
26 |
27 | echo "---"
28 | echo "Play | href=http://www.boardgaming-online.com/"
29 |
--------------------------------------------------------------------------------
/Lifestyle/Todo/noteplan-menubar-56px.b64:
--------------------------------------------------------------------------------
1 | iVBORw0KGgoAAAANSUhEUgAAADgAAAA4CAQAAAACj/OVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAHdElNRQfkChwAHRNqrC5wAAABSElEQVRYw2NgGAWjYBRQCXAy8AIxnYAxw384NKKHhf9R4KiFoxYOpIXGDPxkWsjFYEKqZQ5Q476QYSFMRpfcYJtDgoU3yQvuZ2iG/mfwIsLCBgxdl8hLFhD4h0EMj4VKWPX8p8RCEHzPwILVwv84IZGgHY8RG9H4t/GodSU+FmPwGEMsVCI1axygwLIF5Gb+V2RY9oGy8oaV4R9J1rFQo5BLIdIyR2qWrBcJWLaL2nXELwIWnqCmZROJDNIsalgmT1KS+cMgTIllzCSmUAh8A0zZZIEXFGT8Y6Ra1kCFoq2IeOt24DEG3Skb8Khtprx6wlYfMjJ8pbR6wq8Zm6gwZRZextCoRUQTwx1D113yGlGrSWhEbSG3zapOQTPxO1RGhdSsIUd2y5uNQWa0bzFq4ciyMAjJOnF6jdXYMrgwmI6Oj42CUUAVAABntNYrW391eQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMC0xMC0yOFQwMDoyOToxOSswMDowMDOfhXoAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjAtMTAtMjhUMDA6Mjg6MjMrMDA6MDCH/w5VAAAAAElFTkSuQmCC
2 |
--------------------------------------------------------------------------------
/Lifestyle/Todo/todo.30s.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | #
3 | # z0mbix
4 | # z0mbix
5 | # Simple Todo Tracker
6 | # 1.0
7 | #
8 | # Track todos in a simple ~/.todo file
9 | #
10 |
11 | todo_file="$HOME/.todo"
12 | count=$(grep -c '[^[:space:]]' "$todo_file" | awk '{print $1}')
13 | echo "Todos: $count"
14 | echo "---"
15 | cat "$todo_file"
16 |
--------------------------------------------------------------------------------
/Lifestyle/ZoomsToday/open-zoom.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | if [ -n "$1" ]; then
4 | open "$1"
5 | fi
6 |
--------------------------------------------------------------------------------
/Lifestyle/bear-calls.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # mreider
3 | # mreider
4 | # Handy bear calls
5 | # 1.0
6 |
7 | Replace these with your home page and bookmarks page
8 |
9 | HOMEPAGE='bear://x-callback-url/open-note?id=3B82C004-4B7D-4B66-A492-6D0F3EEDA40A-4300-00001FDE04293478'
10 | BOOKMARKS='bear://x-callback-url/open-note?id=68496A87-42BE-479A-AE9C-3117CB1CB9FB-31243-00045FA30CF5DC43'
11 |
12 | rawurlencode() {
13 | local string="${1}"
14 | local strlen=${#string}
15 | local encoded=""
16 | local pos c o
17 |
18 | for (( pos=0 ; posChurch of England Liturgical Calendar
4 | # v1.0
5 | # Christian Selvaratnam
6 | # cselvaratnam
7 | # Displays the title of the church season or festival of the day and the Collect of the Day from the Church of England website.
8 | # https://github.com/cselvaratnam/images/blob/6c68f941510460f27aca9677389f155f3abe6891/church-liturgical-calendar.png
9 | # bash
10 | # https://bio.site/selvaratnam
11 |
12 | # Collect the front page of the Church of England website
13 | web=$(curl -f -s -S https://www.churchofengland.org/)
14 |
15 | # Extract the season/festival title from the Prayer for the Day
16 | full_title=$(echo $web | sed 's/.*