wacom-emoji now literate programming, fixed issue with rofi-emoji
This commit is contained in:
		
							parent
							
								
									825c41e5b2
								
							
						
					
					
						commit
						317eca7eb1
					
				| @ -62,6 +62,11 @@ | |||||||
|   - [[#ask-what-type-of-drive-to-unmount][Ask what type of drive to unmount]] |   - [[#ask-what-type-of-drive-to-unmount][Ask what type of drive to unmount]] | ||||||
|   - [[#launch-the-unmounting-functions][Launch the unmounting functions]] |   - [[#launch-the-unmounting-functions][Launch the unmounting functions]] | ||||||
| - [[#starwars][Starwars]] | - [[#starwars][Starwars]] | ||||||
|  | - [[#wacom-setup][Wacom setup]] | ||||||
|  |   - [[#set-our-variables][Set our variables]] | ||||||
|  |   - [[#select-our-screen][Select our screen]] | ||||||
|  |   - [[#adjust-the-tablet][Adjust the tablet]] | ||||||
|  |   - [[#lauch-the-functions][Lauch the functions]] | ||||||
| 
 | 
 | ||||||
| * Presentation | * Presentation | ||||||
|   :PROPERTIES: |   :PROPERTIES: | ||||||
| @ -771,3 +776,171 @@ | |||||||
|     #!/usr/bin/fish |     #!/usr/bin/fish | ||||||
|     telnet towel.blinkenlights.nl |     telnet towel.blinkenlights.nl | ||||||
|   #+END_SRC |   #+END_SRC | ||||||
|  | 
 | ||||||
|  | * Wacom setup | ||||||
|  |   :PROPERTIES: | ||||||
|  |   :CUSTOM_ID: h-e407ceef-2f14-4474-916b-6b687cf9f2e9 | ||||||
|  |   :HEADER-ARGS: :tangle wacom-setup :exports code | ||||||
|  |   :END: | ||||||
|  |   I made a small and quick utility to set up my Wacom tablet so it is only bound | ||||||
|  |   to one screen. This is a fish script, so let’s insert the sheband. | ||||||
|  |   #+BEGIN_SRC fish | ||||||
|  |   #!/usr/bin/fish | ||||||
|  |   #+END_SRC | ||||||
|  | 
 | ||||||
|  | ** Set our variables | ||||||
|  |    :PROPERTIES: | ||||||
|  |    :CUSTOM_ID: h-c46f0eaf-ae46-4595-8d7a-944bc789cc06 | ||||||
|  |    :END: | ||||||
|  |    Let’s first declare our function that will be called to set our variables. | ||||||
|  |    #+BEGIN_SRC fish | ||||||
|  |    function set_device | ||||||
|  |    #+END_SRC | ||||||
|  | 
 | ||||||
|  |    We need some variables in order to correctly set our tablet. First, let’s get | ||||||
|  |    declare what the name of our tablet is, and what the name of its touchpad is. | ||||||
|  |    #+BEGIN_SRC fish | ||||||
|  |      set -g DEVICE "Wacom USB Bamboo PAD Pen stylus" | ||||||
|  |      set -g DEVICETOUCH "Wacom USB Bamboo PAD Finger touch" | ||||||
|  |    #+END_SRC | ||||||
|  | 
 | ||||||
|  |    We will also  modify two settings: the  speed of the cursor  on the touchpad, | ||||||
|  |    and the scroll speed. Let’s declare the name of these two settings. | ||||||
|  |    #+BEGIN_SRC fish | ||||||
|  |      set -g WACOMPROPTOUCHSPEED "Device Accel Velocity Scaling" | ||||||
|  |      set -g WACOMPROPSCROLLPSEED "ScrollDistance" | ||||||
|  |    #+END_SRC | ||||||
|  | 
 | ||||||
|  |    To get the correct values for the area  it can cover, we’ll need to reset our | ||||||
|  |    tablet. | ||||||
|  |    #+BEGIN_SRC fish | ||||||
|  |    xsetwacom set "$DEVICE" ResetArea | ||||||
|  |    #+END_SRC | ||||||
|  | 
 | ||||||
|  |    Now we can get the X and Y areas. | ||||||
|  |    #+BEGIN_SRC fish | ||||||
|  |      set -l AREATOT (xsetwacom get "$DEVICE" Area) | ||||||
|  |      set -g AREAX (echo $AREATOT | awk '{print $3}') | ||||||
|  |      set -g AREAY (echo $AREATOT | awk '{print $4}') | ||||||
|  |    #+END_SRC | ||||||
|  | 
 | ||||||
|  |    Now let’s close our function. | ||||||
|  |    #+BEGIN_SRC fish | ||||||
|  |    end | ||||||
|  |    #+END_SRC | ||||||
|  | 
 | ||||||
|  | ** Select our screen | ||||||
|  |    :PROPERTIES: | ||||||
|  |    :CUSTOM_ID: h-c81850ec-b2dd-4c57-8570-aca14ca4061b | ||||||
|  |    :END: | ||||||
|  |    This function will allow us to select  the screen on which the tablet will be | ||||||
|  |    active.  We can  also select  the option  “desktop” so  that all  screens are | ||||||
|  |    selected. Let’s declare our function. | ||||||
|  |    #+BEGIN_SRC fish | ||||||
|  |    function set_screen | ||||||
|  |    #+END_SRC | ||||||
|  | 
 | ||||||
|  |    First, let’s set what screens are available, including the desktop option. | ||||||
|  |    #+BEGIN_SRC fish | ||||||
|  |      set CONNECTED_DISPLAYS (xrandr -q --current | \ | ||||||
|  |      sed -n 's/^\([^ ]\+\) connected .*/\1/p') desktop | ||||||
|  |    #+END_SRC | ||||||
|  | 
 | ||||||
|  |    Now, let’s select the one we wish to use using rofi. | ||||||
|  |    #+BEGIN_SRC fish | ||||||
|  |      set -g SCREEN (for d in $CONNECTED_DISPLAYS | ||||||
|  |          echo $d | ||||||
|  |      end | rofi -dmenu -i -p "Select your dispaly" | tr -d '\n') | ||||||
|  |    #+END_SRC | ||||||
|  | 
 | ||||||
|  |    Now, let’s get the resolution of our selected screen. | ||||||
|  |    #+BEGIN_SRC fish | ||||||
|  |      set -l LINE (xrandr -q --current | if [ "$SCREEN" = "desktop" ] | ||||||
|  |          sed -n 's/^Screen 0:.*, current \([0-9]\+\) x \([0-9]\+\),.*/\1 \2/p' | ||||||
|  |      else | ||||||
|  |          sed -n "s/^$SCREEN"' connected \(primary \)\{0,1\}\([0-9]\+\)x\([0-9]\+\)+.*/\2 \3/p' | ||||||
|  |      end) | ||||||
|  |    #+END_SRC | ||||||
|  | 
 | ||||||
|  |    From that, let’s get the vertical and horizontal resolution of our screen. | ||||||
|  |    #+BEGIN_SRC fish | ||||||
|  |    echo $LINE | read -g WIDTH HEIGHT | ||||||
|  |    #+END_SRC | ||||||
|  | 
 | ||||||
|  |    If any of our =WIDTH= ou =HEIGHT= it empty, we’ll have to abort the script. | ||||||
|  |    #+BEGIN_SRC fish | ||||||
|  |      if test -z $WIDTH || test -z $HEIGHT | ||||||
|  |          exit 1 | ||||||
|  |      end | ||||||
|  |    #+END_SRC | ||||||
|  | 
 | ||||||
|  |    Let’s close our function now. | ||||||
|  |    #+BEGIN_SRC fish | ||||||
|  |    end | ||||||
|  |    #+END_SRC | ||||||
|  | 
 | ||||||
|  | ** Adjust the tablet | ||||||
|  |    :PROPERTIES: | ||||||
|  |    :CUSTOM_ID: h-7e7bcdd1-dce8-43aa-b26e-cc4f38be2a1b | ||||||
|  |    :END: | ||||||
|  |    This function  will take care  of adjusting our  tablet to our  screen. Let’s | ||||||
|  |    declare our function. | ||||||
|  |    #+BEGIN_SRC fish | ||||||
|  |    function adjust_device | ||||||
|  |    #+END_SRC | ||||||
|  | 
 | ||||||
|  |    If our screen is too high or too  wide for our tablet, we will have to adjust | ||||||
|  |    the  height or  width  of the  area  used by  the tablet.  So  let’s get  the | ||||||
|  |    theoretical new height and width of the area. | ||||||
|  |    #+BEGIN_SRC fish | ||||||
|  |      set RATIOAREAY (math ceil \($AREAX \* $HEIGHT \/ $WIDTH\)) | ||||||
|  |      set RATIOAREAX (math ceil \($AREAY \* $WIDTH \/ $HEIGHT\)) | ||||||
|  |    #+END_SRC | ||||||
|  | 
 | ||||||
|  |    Now,  if  the  current height  of  the  tablet’s  area  is greater  than  the | ||||||
|  |    theoretical new  area, it means the  current area is too  high. Otherwise, it | ||||||
|  |    should be the other way around. Let’s set =NEWAREAX= and =NEWAREAY= that will | ||||||
|  |    be used to set the new area for the tablet. | ||||||
|  | 
 | ||||||
|  |    #+BEGIN_SRC fish | ||||||
|  |      if test $AREAY -gt $RATIOAREAY | ||||||
|  |          set -g NEWAREAX $AREAX | ||||||
|  |          set -g NEWAREAY $RATIOAREAY | ||||||
|  |      else | ||||||
|  |          set -g NEWAREAX $RATIOAREAX | ||||||
|  |          set -g NEWAREAY $AREAY | ||||||
|  |      end | ||||||
|  |    #+END_SRC | ||||||
|  | 
 | ||||||
|  |    Alright, now let’s set the new area with these new variables. | ||||||
|  |    #+BEGIN_SRC fish | ||||||
|  |      xsetwacom set "$DEVICE" Area 0 0 $NEWAREAX $NEWAREAY | ||||||
|  |      xsetwacom set "$DEVICE" MapToOutput "$SCREEN" | ||||||
|  |    #+END_SRC | ||||||
|  | 
 | ||||||
|  |    Let’s slow down the cursor’s speed on the touchpad. | ||||||
|  |    #+BEGIN_SRC fish | ||||||
|  |    xinput set-float-prop $DEVICETOUCH $WACOMPROPTOUCHSPEED 0.5 | ||||||
|  |    #+END_SRC | ||||||
|  | 
 | ||||||
|  |    Let’s also slow down the scroll speed of the touchpad. | ||||||
|  |    #+BEGIN_SRC fish | ||||||
|  |      xsetwacom set $DEVICETOUCH $WACOMPROPSCROLLPSEED "90" | ||||||
|  |    #+END_SRC | ||||||
|  | 
 | ||||||
|  |    Now, let’s close the function. | ||||||
|  |    #+BEGIN_SRC fish | ||||||
|  |    end | ||||||
|  |    #+END_SRC | ||||||
|  | 
 | ||||||
|  | ** Lauch the functions | ||||||
|  |    :PROPERTIES: | ||||||
|  |    :CUSTOM_ID: h-e8699018-acf1-42f9-9ce7-4f7bd1a83f9c | ||||||
|  |    :END: | ||||||
|  |    Back  to the  main  body of  the  script,  we can  now  launch the  functions | ||||||
|  |    sequencially. | ||||||
|  |    #+BEGIN_SRC fish | ||||||
|  |      set_device | ||||||
|  |      set_screen | ||||||
|  |      adjust_device | ||||||
|  |    #+END_SRC | ||||||
|  | |||||||
| @ -2,6 +2,6 @@ | |||||||
| grep -v "#" ~/.config/emoji.txt | rofi -dmenu -i | awk '{print $1}' | tr -d '\n' | xclip -selection clipboard | grep -v "#" ~/.config/emoji.txt | rofi -dmenu -i | awk '{print $1}' | tr -d '\n' | xclip -selection clipboard | ||||||
| 
 | 
 | ||||||
| set emoji (xclip -o -selection clipboard | tr -d '\n') | set emoji (xclip -o -selection clipboard | tr -d '\n') | ||||||
| test -z "$emoji" && exit | test -z "$emoji" && notify-send "No emoji copied" && exit | ||||||
| set -a emoji "copied to clipboard" | set -a emoji "copied to clipboard" | ||||||
| pgrep -x dunst >/dev/null && notify-send $emoji | pgrep -x dunst >/dev/null && notify-send $emoji | ||||||
|  | |||||||
| @ -1,32 +1,46 @@ | |||||||
| #!/usr/bin/fish | #!/usr/bin/fish | ||||||
| 
 | 
 | ||||||
| function set_device | function set_device | ||||||
|  | 
 | ||||||
|     set -g DEVICE "Wacom USB Bamboo PAD Pen stylus" |     set -g DEVICE "Wacom USB Bamboo PAD Pen stylus" | ||||||
|     set -g DEVICETOUCH "Wacom USB Bamboo PAD Finger touch" |     set -g DEVICETOUCH "Wacom USB Bamboo PAD Finger touch" | ||||||
|  | 
 | ||||||
|     set -g WACOMPROPTOUCHSPEED "Device Accel Velocity Scaling" |     set -g WACOMPROPTOUCHSPEED "Device Accel Velocity Scaling" | ||||||
|  |     set -g WACOMPROPSCROLLPSEED "ScrollDistance" | ||||||
|  | 
 | ||||||
|     xsetwacom set "$DEVICE" ResetArea |     xsetwacom set "$DEVICE" ResetArea | ||||||
|     set AREATOT (xsetwacom get "$DEVICE" Area) | 
 | ||||||
|  |     set -l AREATOT (xsetwacom get "$DEVICE" Area) | ||||||
|     set -g AREAX (echo $AREATOT | awk '{print $3}') |     set -g AREAX (echo $AREATOT | awk '{print $3}') | ||||||
|     set -g AREAY (echo $AREATOT | awk '{print $4}') |     set -g AREAY (echo $AREATOT | awk '{print $4}') | ||||||
|  | 
 | ||||||
| end | end | ||||||
| 
 | 
 | ||||||
| function set_screen | function set_screen | ||||||
|     set CONNECTED_DISPLAYS (xrandr -q --current | sed -n 's/^\([^ ]\+\) connected .*/\1/p') desktop | 
 | ||||||
|  |     set CONNECTED_DISPLAYS (xrandr -q --current | \ | ||||||
|  |     sed -n 's/^\([^ ]\+\) connected .*/\1/p') desktop | ||||||
|  | 
 | ||||||
|     set -g SCREEN (for d in $CONNECTED_DISPLAYS |     set -g SCREEN (for d in $CONNECTED_DISPLAYS | ||||||
|         echo $d |         echo $d | ||||||
|     end | rofi -dmenu -i -p "Select your dispaly" | tr -d '\n') |     end | rofi -dmenu -i -p "Select your dispaly" | tr -d '\n') | ||||||
|     set -g LINE (xrandr -q --current | if [ "$SCREEN" = desktop ] | 
 | ||||||
|  |     set -l LINE (xrandr -q --current | if [ "$SCREEN" = "desktop" ] | ||||||
|         sed -n 's/^Screen 0:.*, current \([0-9]\+\) x \([0-9]\+\),.*/\1 \2/p' |         sed -n 's/^Screen 0:.*, current \([0-9]\+\) x \([0-9]\+\),.*/\1 \2/p' | ||||||
|     else |     else | ||||||
|         sed -n "s/^$SCREEN"' connected \(primary \)\{0,1\}\([0-9]\+\)x\([0-9]\+\)+.*/\2 \3/p' |         sed -n "s/^$SCREEN"' connected \(primary \)\{0,1\}\([0-9]\+\)x\([0-9]\+\)+.*/\2 \3/p' | ||||||
|     end) |     end) | ||||||
|  | 
 | ||||||
|     echo $LINE | read -g WIDTH HEIGHT |     echo $LINE | read -g WIDTH HEIGHT | ||||||
|  | 
 | ||||||
|     if test -z $WIDTH || test -z $HEIGHT |     if test -z $WIDTH || test -z $HEIGHT | ||||||
|         return 1 |         exit 1 | ||||||
|     end |     end | ||||||
|  | 
 | ||||||
| end | end | ||||||
| 
 | 
 | ||||||
| function adjust_device | function adjust_device | ||||||
|  | 
 | ||||||
|     set RATIOAREAY (math ceil \($AREAX \* $HEIGHT \/ $WIDTH\)) |     set RATIOAREAY (math ceil \($AREAX \* $HEIGHT \/ $WIDTH\)) | ||||||
|     set RATIOAREAX (math ceil \($AREAY \* $WIDTH \/ $HEIGHT\)) |     set RATIOAREAX (math ceil \($AREAY \* $WIDTH \/ $HEIGHT\)) | ||||||
| 
 | 
 | ||||||
| @ -41,11 +55,10 @@ function adjust_device | |||||||
|     xsetwacom set "$DEVICE" Area 0 0 $NEWAREAX $NEWAREAY |     xsetwacom set "$DEVICE" Area 0 0 $NEWAREAX $NEWAREAY | ||||||
|     xsetwacom set "$DEVICE" MapToOutput "$SCREEN" |     xsetwacom set "$DEVICE" MapToOutput "$SCREEN" | ||||||
| 
 | 
 | ||||||
|     # slow down touchpad |  | ||||||
|     xinput set-float-prop $DEVICETOUCH $WACOMPROPTOUCHSPEED 0.5 |     xinput set-float-prop $DEVICETOUCH $WACOMPROPTOUCHSPEED 0.5 | ||||||
| 
 | 
 | ||||||
|     # slow down scrolling speed |     xsetwacom set $DEVICETOUCH $WACOMPROPSCROLLPSEED "90" | ||||||
|     xsetwacom set $DEVICETOUCH "ScrollDistance" "90" | 
 | ||||||
| end | end | ||||||
| 
 | 
 | ||||||
| set_device | set_device | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user