dmenu-websearch, Jalan Pintas Pencari Kata yang Praktis
Created at: 2022-08-14
Author by: BanditHijo
Pendahuluan
dmenu-websearch ini saya buat karena kemalasan saya dalam melakukan pencarian kata/frasa tertentu namun harus membuka website terkait. Tidak praktis. Saya ingin kata/frasa tersebut cukup saya inputkan dari menu di desktop kemudian browser akan menuntun saya ke halaman hasil pencarian di website terkait.
Fitur-fitur
dmenu-websearch ini memiliki fitur:
- mencari kata/frasa dari target website yang sudah didefinisikan di dalam file urlquery
- menambahkan target urlquery baru
- menghapus target urlquery yang ada (konfirmasi sebelum dihapus)
Snippet Code
dmenu-websearch script (Bash)
Simpan file dmenu-websearch
di PATH direktori.
~/.local/bin/dmenu-websearch
1#!/bin/bash23# Released under MIT License45# Copyright (C) 2021 Rizqi Nur Assyaufi <bandithijo@gmail.com>67# Permission is hereby granted, free of charge, to any person obtaining a copy8# of this software and associated documentation files (the "Software"), to deal9# in the Software without restriction, including without limitation the rights10# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell11# copies of the Software, and to permit persons to whom the Software is12# furnished to do so, subject to the following conditions:1314# The above copyright notice and this permission notice shall be included in15# all copies or substantial portions of the Software.1617# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR18# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,19# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE20# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER21# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,22# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN23# THE SOFTWARE.2425# Deps:26# - dmenu27# - jq2829MENU="dmenu"3031FILE="$HOME/.urlquery"3233if [ ! -f $FILE ]; then34 cp urlquery.example $HOME/.urlquery35fi3637FILEOPT=$(cat $FILE)3839OPTIONS="40[41${FILEOPT}42[ \"Add:New:Query\", \"\" ],43[ \"Delete:Query\", \"\" ]44]45"4647OBJ_LENGTH=$(echo $OPTIONS | jq length)48OBJ_MENU=$(echo $OPTIONS | jq -r ".[][0]" | $MENU -i -p " WebSearch:")49OBJ_SELECTED=$(echo $OBJ_MENU | cut -d' ' -f1)50OBJ_KEYWORDS=$(echo $OBJ_MENU | cut -d' ' -f2- | tr " " "+")5152add_query() {53 PREFIXMENU=$(echo "" | dmenu -p "Add prefix menu:" <&-)54 if [ ! -z $PREFIXMENU ]; then55 URLQUERY=$(echo "" | dmenu -p "Add url query:" <&-)56 echo "[ \"$PREFIXMENU\", \"$URLQUERY\" ]," >> $FILE57 fi58 exit59}6061delete_query() {62 OBJ_MENU=$(echo $OPTIONS | jq -r ".[][0]" | head -n -2 | $MENU -i -p "Delete Menu:")63 OBJ_SELECTED=$OBJ_MENU64 if [ ! -z $OBJ_SELECTED ]; then65 CONFIRM_DELETE=$(echo -e "no\nyes" | dmenu -p "Do you want to delete this url?")66 if [ $CONFIRM_DELETE = "yes" ]; then67 sed -i "/$OBJ_SELECTED/d" $FILE68 fi69 fi70 exit71}7273main() {74 for i in $(seq 0 $((OBJ_LENGTH - 1))); do75 if [ $OBJ_SELECTED = "Add:New:Query" ]; then76 add_query77 fi7879 if [ $OBJ_SELECTED = "Delete:Query" ]; then80 delete_query81 fi8283 if [ $OBJ_SELECTED = $(echo $OPTIONS | jq -r --arg i $i '.[($i|tonumber)][0]') ]; then84 URLQUERY=$(echo $OPTIONS | jq -r --arg i $i '.[($i|tonumber)][1]')85 KEYWORDS=$(echo $OBJ_KEYWORDS)86 xdg-open "${URLQUERY}${KEYWORDS}" 2> /dev/null87 fi88 done89}9091main
urlquery (plaintext)
Simpan file .urlquery
di HOME direktori.
~/.urlquery
1[ "Arch:Manpage", "https://man.archlinux.org/search?q=" ],2[ "Arch:Wiki", "https://wiki.archlinux.org/index.php?search=" ],3[ "Arch:Packages", "https://archlinux.org/packages/?q=" ],4[ "Arch:Packages:AUR", "https://aur.archlinux.org/packages/?K=" ],5[ "DuckDuckGo:Search", "https://duckduckgo.com/?q=" ],6[ "GitHub:Search", "https://github.com/search?q=" ],7[ "Google:Search", "https://duckduckgo.com/?q=!g+" ],8[ "Google:Search:Image", "https://duckduckgo.com/?q=!gi+" ],9[ "Google:Translate", "https://translate.google.com/?sl=auto&tl=id&text=" ],10[ "Ruby:Gems", "https://rubygems.org/search?query=" ],11[ "Ruby:Toolbox", "https://www.ruby-toolbox.com/search?q=" ],12[ "Ruby:LibHunt", "https://ruby.libhunt.com/search?query=" ],13[ "Twitter:Search", "https://twitter.com/search?q=" ],14[ "Youtube:Search", "https://www.youtube.com/results?search_query=" ],15[ "Twitch:Search", "https://www.twitch.tv/search?term=" ],16[ "NPM:Search", "https://www.npmjs.com/search?q=" ],
Pesan Penulis
Penggunaan lebih lanjut saya serahkan pada imajinasi dan kreatifitas teman-teman.
Terima kasih sudah mampir yaa.
Referensi
-
http://kb.mozillazine.org/Using_keyword_searches
Diakses tanggal: 2022/08/14 -
https://github.com/bandithijo/dmenu-websearch
Diakses tanggal: 2022/08/14