├── .gitignore ├── CHANGES.txt ├── Howdoi.alfredworkflow ├── LICENSE ├── README.md ├── icon.png ├── images └── howdoi-alfred-window.png └── info.plist /.gitignore: -------------------------------------------------------------------------------- 1 | prefs.plist 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /CHANGES.txt: -------------------------------------------------------------------------------- 1 | 0.0.2 2 | ------ 3 | - Added support for optional large type and opening URLs with ⌘↩ 4 | 5 | 0.0.1 6 | ------ 7 | - Hello World! 8 | -------------------------------------------------------------------------------- /Howdoi.alfredworkflow: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gleitz/alfred-howdoi/1e4c8df441f9727d5742b9820f06e5b9c0efa0e8/Howdoi.alfredworkflow -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Benjamin Gleitzman 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | Sherlock, your neighborhood command-line sloth sleuth 4 | 5 |

6 | 7 | # howdoi 8 | 9 | ## Instant coding answers via Alfred 10 | 11 | ⚡ Never open your browser to look for help again ⚡ 12 | 13 | ## Introduction to howdoi 14 | 15 | Are you a hack programmer? Do you find yourself constantly Googling for 16 | how to do basic programming tasks? 17 | 18 | Suppose you want to know how to format a date in bash. Why open your 19 | browser and read through blogs (risking major distraction) when you can 20 | simply stay in Alfred and ask: 21 | 22 | $ howdoi properly use tar command 23 | > tar -czf /tmp/workspace.tar.gz . 24 | 25 | ## Installation 26 | 27 | - Make sure howdoi is installed on your machine with `brew install howdoi`. 28 | - Install [howdoi for Alfred](the https://alfred.app/workflows/gleitz/howdoi/) from the Alfred Gallery. 29 | 30 | ## Usage 31 | 32 | Invoke the Alfred workflow with the keyword Question Keyword (default: `howdoi`) and then your query. The output will be shown as large type and also copied to the clipboard. Use ⌘↩ to open the answer's web page instead. 33 | 34 | ![Typing the howdoi query](images/howdoi-alfred-window.png) 35 | 36 | New to howdoi? You can get started by running: 37 | 38 | howdoi howdoi 39 | 40 | ## Notes 41 | 42 | If `howdoi` is installed to a non-standard Homebrew location (or with `pip`) then you need to tell Alfred about your appropriate `PATH`. 43 | 44 | - Open the Workflow in Alfred 45 | - Click "prepare workflow configuration" in the top right (the icon looks like `(x)`) 46 | - Select the "Environment Variables" tab 47 | - Make a new entry with name `PATH` and value as the text output of entering `echo $PATH` in a terminal (e.g. `/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/username/.homebrew/bin`) 48 | 49 | ## Useful Links 50 | 51 | - [howdoi](https://github.com/gleitz/howdoi/) github page 52 | -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gleitz/alfred-howdoi/1e4c8df441f9727d5742b9820f06e5b9c0efa0e8/icon.png -------------------------------------------------------------------------------- /images/howdoi-alfred-window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gleitz/alfred-howdoi/1e4c8df441f9727d5742b9820f06e5b9c0efa0e8/images/howdoi-alfred-window.png -------------------------------------------------------------------------------- /info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | bundleid 6 | com.gleitzman.howdoi 7 | connections 8 | 9 | 59A90524-0AB4-45CD-9BD9-642C53C9826B 10 | 11 | 62E18CD4-113F-4B75-BB04-9E8F61F4EA84 12 | 13 | 84E8677F-3EF2-4489-ACE5-31C54323E398 14 | 15 | 16 | destinationuid 17 | 62E18CD4-113F-4B75-BB04-9E8F61F4EA84 18 | modifiers 19 | 0 20 | modifiersubtext 21 | 22 | sourceoutputuid 23 | DA9817A7-4BA4-4680-9D0D-6914F0DF1A04 24 | vitoclose 25 | 26 | 27 | 28 | 8F30E883-4C9A-4ECD-A412-B27F3FEB3A23 29 | 30 | 31 | destinationuid 32 | 0D390F5D-AC85-4455-BAD0-170CC0F9D545 33 | modifiers 34 | 0 35 | modifiersubtext 36 | 37 | vitoclose 38 | 39 | 40 | 41 | A91D4A20-800F-4739-B887-4AD9FDD3C5F7 42 | 43 | 44 | destinationuid 45 | 59A90524-0AB4-45CD-9BD9-642C53C9826B 46 | modifiers 47 | 0 48 | modifiersubtext 49 | 50 | vitoclose 51 | 52 | 53 | 54 | destinationuid 55 | 84E8677F-3EF2-4489-ACE5-31C54323E398 56 | modifiers 57 | 0 58 | modifiersubtext 59 | 60 | vitoclose 61 | 62 | 63 | 64 | D866DA1D-5E55-49F2-AF16-AB9C87C22355 65 | 66 | 67 | destinationuid 68 | A91D4A20-800F-4739-B887-4AD9FDD3C5F7 69 | modifiers 70 | 0 71 | modifiersubtext 72 | 73 | vitoclose 74 | 75 | 76 | 77 | destinationuid 78 | 8F30E883-4C9A-4ECD-A412-B27F3FEB3A23 79 | modifiers 80 | 1048576 81 | modifiersubtext 82 | Open answer web page 83 | vitoclose 84 | 85 | 86 | 87 | 88 | createdby 89 | Benjamin Gleitzman 90 | description 91 | Instant coding answers 92 | disabled 93 | 94 | name 95 | Howdoi 96 | objects 97 | 98 | 99 | config 100 | 101 | autopaste 102 | 103 | clipboardtext 104 | 105 | ignoredynamicplaceholders 106 | 107 | transient 108 | 109 | 110 | type 111 | alfred.workflow.output.clipboard 112 | uid 113 | 59A90524-0AB4-45CD-9BD9-642C53C9826B 114 | version 115 | 3 116 | 117 | 118 | config 119 | 120 | alignment 121 | 0 122 | backgroundcolor 123 | 124 | fadespeed 125 | 0 126 | fillmode 127 | 0 128 | font 129 | 130 | ignoredynamicplaceholders 131 | 132 | largetypetext 133 | {query} 134 | textcolor 135 | 136 | wrapat 137 | 50 138 | 139 | type 140 | alfred.workflow.output.largetype 141 | uid 142 | 62E18CD4-113F-4B75-BB04-9E8F61F4EA84 143 | version 144 | 3 145 | 146 | 147 | config 148 | 149 | concurrently 150 | 151 | escaping 152 | 0 153 | script 154 | howdoi "${1}" 155 | scriptargtype 156 | 1 157 | scriptfile 158 | 159 | type 160 | 0 161 | 162 | type 163 | alfred.workflow.action.script 164 | uid 165 | A91D4A20-800F-4739-B887-4AD9FDD3C5F7 166 | version 167 | 2 168 | 169 | 170 | config 171 | 172 | argumenttype 173 | 0 174 | keyword 175 | {var:question_keyword} 176 | subtext 177 | Instant coding answers 178 | text 179 | Howdoi 180 | withspace 181 | 182 | 183 | type 184 | alfred.workflow.input.keyword 185 | uid 186 | D866DA1D-5E55-49F2-AF16-AB9C87C22355 187 | version 188 | 1 189 | 190 | 191 | config 192 | 193 | conditions 194 | 195 | 196 | inputstring 197 | {var:show_large_type} 198 | matchcasesensitive 199 | 200 | matchmode 201 | 5 202 | matchstring 203 | 204 | outputlabel 205 | Large Type 206 | uid 207 | DA9817A7-4BA4-4680-9D0D-6914F0DF1A04 208 | 209 | 210 | elselabel 211 | else 212 | hideelse 213 | 214 | 215 | type 216 | alfred.workflow.utility.conditional 217 | uid 218 | 84E8677F-3EF2-4489-ACE5-31C54323E398 219 | version 220 | 1 221 | 222 | 223 | config 224 | 225 | browser 226 | 227 | skipqueryencode 228 | 229 | skipvarencode 230 | 231 | spaces 232 | 233 | url 234 | 235 | 236 | type 237 | alfred.workflow.action.openurl 238 | uid 239 | 0D390F5D-AC85-4455-BAD0-170CC0F9D545 240 | version 241 | 1 242 | 243 | 244 | config 245 | 246 | concurrently 247 | 248 | escaping 249 | 0 250 | script 251 | howdoi --link "${1}" 252 | scriptargtype 253 | 1 254 | scriptfile 255 | 256 | type 257 | 0 258 | 259 | type 260 | alfred.workflow.action.script 261 | uid 262 | 8F30E883-4C9A-4ECD-A412-B27F3FEB3A23 263 | version 264 | 2 265 | 266 | 267 | readme 268 | # howdoi 269 | 270 | ## Instant coding answers via Alfred 271 | 272 | ⚡ Never open your browser to look for help again ⚡ 273 | 274 | ## Introduction to howdoi 275 | 276 | Are you a hack programmer? Do you find yourself constantly Googling for how to do basic programming tasks? 277 | 278 | Suppose you want to know how to use the tar command. Why open your browser and read through blogs (risking major distraction) when you can simply stay in the console and ask howdoi: 279 | 280 | $ howdoi properly use tar command 281 | > tar -czf /tmp/workspace.tar.gz . 282 | 283 | ## Installation 284 | 285 | Make sure howdoi is installed on your machine with `brew install howdoi`. 286 | 287 | ## Usage 288 | 289 | Invoke the Alfred workflow with the keyword Question Keyword (default: `howdoi`) and then your query. The output will be shown as large type and also copied to the clipboard. Use ⌘↩ to open the answer's web page instead. 290 | 291 | ![Typing the howdoi query](images/howdoi-alfred-window.png) 292 | 293 | New to howdoi? You can get started by running: 294 | 295 | howdoi howdoi 296 | 297 | ## Useful Links 298 | 299 | - [howdoi](https://github.com/gleitz/howdoi/) github page 300 | uidata 301 | 302 | 0D390F5D-AC85-4455-BAD0-170CC0F9D545 303 | 304 | xpos 305 | 580 306 | ypos 307 | 355 308 | 309 | 59A90524-0AB4-45CD-9BD9-642C53C9826B 310 | 311 | xpos 312 | 580 313 | ypos 314 | 40 315 | 316 | 62E18CD4-113F-4B75-BB04-9E8F61F4EA84 317 | 318 | xpos 319 | 580 320 | ypos 321 | 190 322 | 323 | 84E8677F-3EF2-4489-ACE5-31C54323E398 324 | 325 | note 326 | Should show as Large Type? 327 | xpos 328 | 460 329 | ypos 330 | 220 331 | 332 | 8F30E883-4C9A-4ECD-A412-B27F3FEB3A23 333 | 334 | note 335 | Get link from howdoi 336 | xpos 337 | 255 338 | ypos 339 | 355 340 | 341 | A91D4A20-800F-4739-B887-4AD9FDD3C5F7 342 | 343 | note 344 | Get answer from howdoi 345 | xpos 346 | 255 347 | ypos 348 | 190 349 | 350 | D866DA1D-5E55-49F2-AF16-AB9C87C22355 351 | 352 | xpos 353 | 50 354 | ypos 355 | 190 356 | 357 | 358 | userconfigurationconfig 359 | 360 | 361 | config 362 | 363 | default 364 | howdoi 365 | placeholder 366 | 367 | required 368 | 369 | trim 370 | 371 | 372 | description 373 | 374 | label 375 | Question Keyword 376 | type 377 | textfield 378 | variable 379 | question_keyword 380 | 381 | 382 | config 383 | 384 | default 385 | 386 | required 387 | 388 | text 389 | If unchecked, answer will still be copied to the clipboard 390 | 391 | description 392 | 393 | label 394 | Show as Large Type 395 | type 396 | checkbox 397 | variable 398 | show_large_type 399 | 400 | 401 | variablesdontexport 402 | 403 | version 404 | 0.0.2 405 | webaddress 406 | http://github.com/gleitz/howdoi 407 | 408 | 409 | --------------------------------------------------------------------------------