blob: b6cda248192d986bcf8b285d061514f932fe5353 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
#!/bin/bash
#################################
# This is /home/miguel/bin/surf #
#################################
# TODO: bookmarks with %s to fill in selection from xclip
# TODO: add bookmark with _NET_WM_NAME
SURF=/home/miguel/git/surf/surf
TABBED=/home/miguel/git/tabbed/tabbed
XDOTOOL=/usr/bin/xdotool
DMENU=/usr/bin/dmenu
BOOKMARKS=/home/miguel/doc/BOOKMARKS
SEARCH_DUCKDUCK="https://www.duckduckgo.com?q=%s"
SEARCH_STARTPAGE="https://www.startpage.com/do/search?query=%s"
SEARCH_GOOGLE="https://www.google.com/search?q=%s"
BCK="#333"
FOR="#FFF"
SELBCK="#38F"
SELFOR="#FFF"
SEARCH=$SEARCH_DUCKDUCK
WM_CLASSNAME=surf-tabbed
# 4k adjutsment
export GDK_SCALE=2
export GDK_DPI_SCALE=0.5
# try to find a running tabbed with our classname.
# if nothing found, start a new instance and return its id.
get_tabbed_id()
{
local ID=$($XDOTOOL search -classname ^${WM_CLASSNAME}$)
if [ -z "$ID" ]
then
ID=$($TABBED -p +999 -t $SELBCK -T $SELFOR -u $BCK -U $FOR -dcn ${WM_CLASSNAME})
fi
echo $ID
}
# get query from dmenu/bookmarks, automatically decide between search or url
# $1 - prompt
# $2 - url (optional)
get_query()
{
query_nocut=$(echo -e "$2\n - - - - - - - -" | cat - $BOOKMARKS | $DMENU -i -l 30 -p $1)
query=$(echo $query_nocut | cut -s -f 2 -d '*')
if [ -z "$query" ]
then
query=$query_nocut
fi
if [ -z "$query" ]
then
exit 0
fi
[[ "$query" =~ \.|/ ]] || query=$(echo $SEARCH | sed "s/%s/${query}/" | tr " " "+" )
echo "$query"
}
#open surf:
# $1 window_id
# $2 OLD - open in existing tab/window
# NEW - open in new tab/indow
# $3 url to open (optional, otherwise dmenu prompt shown to type url)
#
open_surf()
{
window_id=$1
target=$2
open_url=$3
if [ "$window_id" -gt 0 ]; then
url=$(xprop -id $window_id _SURF_URI | sed 's/.*\"\(.*\)\".*/\1/')
fi
if [ $# -eq 2 ]; then
if [ "$target" == "OLD" ]; then
query=$(get_query "surf>" $url)
else
query=$(get_query "SURF>" $url)
fi
elif [ $# -eq 3 ]; then
query=$open_url
else
echo "illegal number of parameters!"
exit -1
fi
# TODO!
#query=$(echo $query | sed "s/%s/$(xclip -out)/" | tr " " "+" ) # current url too
if [ -z "$query" ]
then
exit 0
fi
tabbed_id=$(get_tabbed_id)
echo Opening: [$query] in tabbed [$tabbed_id] with window id [$window_id]
if [ "$target" == "OLD" ]; then
xprop -id $window_id -f _SURF_GO 8s -set _SURF_GO "${query}"
else
$SURF -N -e $tabbed_id "${query}" > /dev/null 2>&1 &
wmctrl -a $tabbed_id -i
fi
}
main()
{
if [ $# -eq 2 ]; then
open_surf $1 $2
elif [ $# -eq 1 ]; then
open_surf 0 NEW $1
elif [ $# -eq 0 ]; then
open_surf 0 NEW
else
echo "illegal number of parameters!"
exit -1
fi
}
# call our main with all paramters
main $@
|