그동안 리눅스에서 bypass DPI 프로그램으로 Green-Tunnel 을 사용해 오고 있었습니다.
그런데. 금일 Arch 리눅스에서 패키지 업그레이드를 단행하엿고. node 버전이 올라갔는데. Green Tunnel 이 Node 버전 문제(deprecated har-validator@5.1.5, deprecated uuid@3.4.0, deprecated request@2.88.2) 로 에러를 뱉어 내면서 더 이상 실행이 되지 않앗씁니다. 아 오늘 신작 영화 뜨는 날인데 큰일입니다.
해결 방법은
1. node 패키지 다운 그레이드 하고, 해당 패키지 추후 업그레이드 항목에서 제외 버젼대 고정. 추후 다른 프로그램들 업데이트시 의존성 문제가 생길 가능성 농후.. 일단 보류
2. 또다른 bypass DPI 프로그램을 찾아서 설치.
검색 결과 젤 윗단에 나오는 Spoof-dpi 발견. Arch AUR에서 검색 "$ yay -S spoof-dpi-bin" 설치가 안 됩니다.
SpoofDPI GIT 사이트 방문; 설명서대로 진행
- 설치 : $ curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s linux
- 실행 : $ spoof-dpi --port=12345
예전 1번 패키지 다운/고정 할때는 검색하고/적용하는 데 시간 좀 투자 했었는데. 2번은 검색해서 금방 적용했습니다. 잘 됩니다.
이제. 신작 영화 감상하러 갑니다. 야호! 빅토리!!! ( 아래는 qutebrowser에서 DPI pass 프락시 설정하는 2가지 방법 예시입니다. )
(2023-12-16) 게시글 내용 추가 ......................................
- Screenshot 설명
1.사용한Apps 순서대로
1-1. qutebrowser
":set content proxy " : 하단 50% 영역, 실시간으로 세팅값을 수정 할 수 있습니다. 껏다 크면 초기화 됩니다. 설정값이 저장 되지 않습니다.
스케베 웹사이트 열려져 있음. Cstom CSS 사용중.
~/.config/css/나의css
Opera 웹브라워 쓸땐,색상 다 맞춰서, 만들어서 세팅햇었는데 지금은 파일을 찾아봐도 못찻겟네요.
quteborwser 사용하면서, custom css 로, 색상 통일해서 만들다가.. 중도 포기함.. 가운데 색상이 삐쿠나서 맘에 안들어요 ㅠ.ㅠ
1-2. urxvt terminal -> tmux (Session 이름은 "Main", Main tmux session에 3개의 윈도우 탭이 떠있고, 활성화 된 윈도우는 1번. spoof-dpi 프로그램이 실행중...
$ spoof-dpi -port-1234 실행
(보통, 특정 서버/데몬들은 systemctl 유닛으로 자동 시작. 모든 하드가 마운트되고, 외장하드도 마운트 된 후, 실행해야 할 필요가 있는 서버/데몬 류들은 tmux 에서 수동 실행. 껏다 켜기 편함.
$ pkill Xorg 명령어로 X를 종료하고 tty 화면으로 복귀하는데. tmux 라 X 가 종료 되어도 여전히 잘 돌아감. 추후, 다시 startx 로 X로 진입한 후에.. tmux attach 로 다시 붙여서 계속 사용함
1-3. Bluetooth Manger (GTK+ Apps)
다른 bluetooth cli 툴이나 데몬으로 자동 시작 세팅, pulse audio 연계, 블루투스 장비가 1개만 연결되면, 자동 실행 연결.
블루투스 장비가 여러개 켜진 경우.. 해당 앱으로 등록된 Buletooth 장비 선택... $ playerctl cli 앱으로 pulse 츨력 방향사운드 지정. 특정 앱들, 블루투스 오디오나. 기타 여러개의 스피커 중 하나로 출력 지정.
1-4. qutebrower
qutebrowser 설정 파일 : ~/config/qutebrower/[autoconfig.yml, config.py]
"o qute://settings" 엔터 : qutebrower 세팅 페이지 열림, "/proxy" 로 키워드 검색, 해당 메뉴 부분에 설정값 지정, autoconfig,yml 파일에 저장됨. 여기서 설정한 값들은 영구적임, 브라우저 재시동하면 변경된 세팅값으로 유지됨.
- autoconfig.yml 은 vim으로 열어서 수동 편집하면 절대 안됨. 그러나 저는 mpv 커맨드만 수동 추가해서 사용함
------------------------------------------------------------------------------------------------------------------------------
config_version: 2
settings:
backend:
global: webengine
bindings.commands:
global:
normal:
',M': hint links spawn umpv {hint-url}
',m': spawn umpv {url}
;M: hint --rapid links spawn umpv {hint-url}
(중략)
------------------------------------------------------------------------------------------------------------------------------
- custom 설정 필요시, config.py 파일 편집기로 수동 추가 편집
| /home/nietz/.config/qutebrowser/config.py
------------------------------------------------------------------------------------------------------------------------------
# Uncomment this to still load settings configured via autoconfig.yml
config.load_autoconfig()
# 디폴트 세팅값은 config,.py 이 존재하면,, config.py 파일이 사용되고, autoconfig.yml 파일의 설정값은 사용하지 않는다.
# 위 "config.load_autoconfig()" 라인을 기재 해주면.. 1. autoconfig.yml 기본 설정 파일을 로딩 먼저 사용 한 후,, 이후 아래 라인에 커스텀 설정한 값들을 불러온다.
# A comma-separated list of regexes to use for 'next' links.
# Type: List of Regex
c.hints.next_regexes = ['\\bnext\\b', '\\bmore\\b', '\\bnewer\\b', '\\b[>→≫]\\b', '\\b(>>|»)\\b', '\\bcontinue\\b']
# A comma-separated list of regexes to use for 'prev' links.
# Type: List of Regex
c.hints.prev_regexes = ['\\bprev(ious)?\\b', '\\bback\\b', '\\bolder\\b', '\\b[<←≪]\\b', '\\b(<<|«)\\b']
# Setting dark mode
config.set("colors.webpage.darkmode.enabled", True)
c.content.user_stylesheets = ['/home/nietz/.config/qutebrowser/css/나의.css']
config.bind('<Ctrl-R>', 'config-cycle content.user_stylesheets "~/.config/qutebrowser/css/나의.css" "~/.config/qutebrowser/css/apprentice-all-sites.css" "~/.config/qutebrowser/css/darculized-all-sites.css" "~/.config/qutebrowser/css/gruvbox-all-sites.css" "~/.config/qutebrowser/css/solarized-dark-all-sites.css" "~/.config/qutebrowser/css/solarized-light-all-sites.css" ')
------------------------------------------------------------------------------------------------------------------------------
2. 1. sxiv : feh 와 같은 image viewer (나의 main 이미지 뷰어인 feh 와 달리 sxiv는 이미지의 내용이 바뀌면, 자동 변경되서 보여진다.) mpd cover art 용도로 사용
| File : ~/.local/bin/notification
------------------------------------------------------------------------------------------------------------------------------
#!/bin/bash
# by nietz
function music {
MUSIC_DIR="$HOME/Music/"
ICON="$MUSIC_DIR/cover.png"
ICON2="$MUSIC_DIR/cover_ori.png"
while true; do
mpc idleloop |
while read update; do
#pkill dunst
#killall -SIGUSR1 dunst # pause
#killall -SIGUSR2 dunst # resume
if [ $update == "player" ]; then
#pkill dunst
#nohup dunst > /dev/null 2&1
ffmpeg -i "$MUSIC_DIR/`mpc current -f '%file%'`" -vf scale=100:-1 \
-codec png -y $ICON >/dev/null 2>&1;
ffmpeg -i "$MUSIC_DIR/`mpc current -f '%file%'`" -vf scale=480:-1 \
-codec png -y $ICON2 >/dev/null 2>&1;
# Get fields from mpc, split by tabs.
IFS=$'\t' read album artist title \
<<< "$(mpc --format="%album%\t%artist%\t%title%")"
notify-send --urgency=normal --expire-time=5000 --app-name=mpd \
--icon=$ICON " $title" " by $artist"
#notify-send --urgency=low --expire-time=5000 --app-name=mpd \
# --icon=/home/nietz/Music/cover.png "<b>$title</b>" "<i>$artist\n$album</i>"
elif [ $update == "mixer" ]; then
# Get volume
vol=`mpc | tail -n1 | awk '{print $2}'`
#vol=`mpc | sed -n 3p | awk '{print $1 " " $2}'`
#vol=`mpc | sed -n 3p | cut -d '%' -f 1 | cut -d ' ' -f 2`
notify-send --urgency=low --expire-time=1000 --app-name=mpd \
--icon=$ICON " Volume: $vol" "Mixer Changed"
fi
# if [[ `mpc | wc -l` == 1 ]]; then
# after=""
# else
# after=`mpc | head -n1 | awk -F "-" '{print $2 " - " $1 }'`
# if [[ $before != $after ]]; then
# notify-send $after
# fi
# fi
# before=$after
done
done
}
case $1 in
music) music ;;
*) exit 1 ;;
esac
------------------------------------------------------------------------------------------------------------------------------
- tmux 상에서 "$ notification music 2>/dev/null" command로 데몬 형태로 실행
A. 노래가 다름 곡이나 이전 곡으로 변경되면,, cover 이미지가 자동 변경되고, notification 알림을 cover 이미지와 함께 보여준다.
B. 노래가 중지/시작 또는 mpd 볼륨 업/다운 등 상태 변경이 발생하면, notification 알림을 cover 이미지와 함께 보여준다.
2.2 . ncmpcpp
테마/설정값 변경: ~/.config/ncmpcpp/config
------------------------------------------------------------------------------------------------------------------------------
(중략)
## Note: Custom command that will be executed each
## time song changes. Useful for notifications etc.
## mpd 에서 Track 이 이전이나 다음 곡으로 변경될 때 실행 되는 스크립트
#execute_on_song_change = "~/.local/bin/ncmpcpp_notify"
execute_on_song_change = "~/.xmonad/scripts/ncmpcpp_coverart.sh"
(중략)
------------------------------------------------------------------------------------------------------------------------------
| File : ~/.xmonad/scripts/ncmpcpp_coverart.sh
------------------------------------------------------------------------------------------------------------------------------
#!/bin/bash
MUSIC_DIR="$HOME/Music/"
COVER=/tmp/cover.jpg
function reset_background
{
printf "\e]20;;100x100+1000+1000\a"
}
if [[ -n "$(pgrep mopidy)" ]] ; then
MPRIS_URL="$(playerctl -p mopidy metadata xesam:url)"
MPRIS_ARTURL="$(playerctl -p mopidy metadata mpris:artUrl)"
MPRIS_ARTURL_PREFIX=""
rm -f /tmp/mopidy_coverart_temp.jpg
if ( echo "$MPRIS_ARTURL" | grep -qi "/images/" )
then
#echo "local track" # possible download coverart
MPRIS_ARTURL_PREFIX="http://127.0.0.1:6680"
MPRIS_ARTURL=$MPRIS_ARTURL_PREFIX$MPRIS_ARTURL
#echo $MPRIS_ARTURL
wget "$MPRIS_ARTURL" -O /tmp/mopidy_coverart_temp.jpg >/dev/null 2>&1;
elif ( echo "$MPRIS_URL" | grep -qi "file://" )
then
# impossible download coverart . file path ??
#echo "file:// is local file url string. $MPRIS_URL : How to convert local file path string?"
reset_background
exit 0;
else
#echo "Streaming track: pass MPRIS http url"
wget "$MPRIS_ARTURL" -O /tmp/mopidy_coverart_temp.jpg >/dev/null 2>&1;
fi
convert "/tmp/mopidy_coverart_temp.jpg" -resize 800x -background "#312e39" \
-extent 1100x800 "$COVER" >/dev/null 2>&1;
printf "\e]20;${COVER};100x100+103+25:op=keep-aspect\a"
#echo $MPRIS_ARTURL;
exit 0;
fi
{
reset_background
album="$(mpc --format %album% current)"
file="$(mpc --format %file% current)"
album_dir="${file%/*}"
[[ -z "$album_dir" ]] && exit 1
album_dir="$MUSIC_DIR/$album_dir"
covers="$(find "$album_dir" -type d -exec find {} -maxdepth 1 -type f -iregex ".*/.*\(${album}\|cover\|folder\|artwork\|front\).*[.]\(jpe?g\|png\|gif\|bmp\)" \; )"
src="$(echo -n "$covers" | head -n1)"
rm -f "$COVER"
#rm -f "/tmp/tmp1234567.jpg"
src="$(echo $COVER)"
#ffmpeg -i "$MUSIC_DIR/`mpc current -f '%file%'`" -vf scale=400:-1 \
ffmpeg -i "$MUSIC_DIR/`mpc current -f '%file%'`" \
-y "/tmp/tmp1234567.jpg" >/dev/null 2>&1;
if [[ -n "$src" ]] ; then
#resize the image's height to 300px & extent it to cover the urxvt length
#convert "$src" -resize 300x -background "#2f343f" -extent 1100x400 "$COVER"
convert "/tmp/tmp1234567.jpg" -resize 280x -background "#312e39" \
-extent 1100x280 "$COVER" >/dev/null 2>&1;
if [[ -f "$COVER" ]] ; then
#-- original script --
#scale down the cover to 30% of the original
#place it 1% away from left and 50% away from top.
#printf "\e]20;${COVER};70x70+0+4:op=keep-aspect\a"
#---------------------
#no need to scale down, i have extent it
#printf "\e]20;${COVER};125x125+122+25:op=keep-aspect\a"
#printf "\e]20;${COVER};125x125+0+25:op=keep-aspect\a"
reset_background
#printf "\e]20;${COVER};100x100+0+0:op=keep-aspect\a"
printf "\e]20;/tmp/cover.jpg;100x100+0+0:op=keep-aspect\a"
else
reset_background
fi
else
reset_background
fi
} &
------------------------------------------------------------------------------------------------------------------------------
| File : .zshrc (or .bashrc)
------------------------------------------------------------------------------------------------------------------------------
# for mopidy(or mpd) visualizer
open_mopidy_fifo() {
local fifo
readonly fifo='/tmp/mpd.fifo'
mkfifo "$fifo"
while :; do socat -d -T 1 -u UDP4-LISTEN:5555 OPEN:"$fifo"; done &
}
# for mpd or mopidy
ncmpcpp() {
if ! pidof "$(type mpd)" >/dev/null; then
mpd
#[[ -z $(pgrep -xU $UID socat) ]] && open_mopidy_fifo;
if type mpdscribble >/dev/null; then
killall mpdscribble >&/dev/null
mpdscribble
fi
$(type /usr/bin/ncmpcpp) "$@" -S visualizer
else
$(type /usr/bin/ncmpcpp) "$@" -S visualizer
fi
printf "\e]20;;100x100+1000+1000\a"
pkill mpd
}
------------------------------------------------------------------------------------------------------------------------------
- 샐행 : $ ncmpcpp (/usr/bin/ncmpcpp 가 아니라 .zshrc에 정의된 ncmpcpp alias 임)
ncmpcpp 가 실행되는 터미널 우측 부분에, w3m-imgdisplay 이용 coverart를 그려준다.
원래 이걸 거의 10여년간 썻었는데. 올해 어느순간.. 작동이 안되서.. 위에 sxiv Apps을 이용하는 방법으로 대체해서 사용하고 있습니다.
2-3. cava : Cross-platform Audio Visualizer
https://github.com/karlstav/cava (Arch AUR 에 있음)
2-4. 야동 전용 mpv
설치한 BypassDPI Spoof-dpi 이용. 스케베 사이트에 접속해서. 보고 싶은 품번 영화의 마그넷을 추출해서, mpv "--profile=야동" 인자로 간략히 실행한다.
원키 단축키 할당: "Mod + F8" 영상을 보고 있다가. 먼가 이상한 낌새가 느껴비녀. 단축키 누르면, mpv 창이 unvisible 되고, 음량 소리가 mute 된다.
A. xmonad WM 의 NSP(Named ScratchPad) 의 scratchpad 할당
B. mpv socat 통신이용, mpv Toggle (mute/unmute)
------------------------------------------------------------------------------------------------
-- 위 Screenshot 이미지의 XMonad 레이아웃 : 설명
------------------------------------------------------------------------------------------------
😀 XMonad WM : 극강의 미니멀. 간결하다. 공간의 낭비가 없다. 확장 라이브러리. 빠르다. 빠르다. 빠르다
* 워크스페이스(=윈도우에서 말하는 가상 데스크탑 (?)) : 9 개 설정
"mod + {1..9}" 키 : 1~9 번 워크 스페이스
* 3:1 의 비율(또는 5:5 비율)로 화면을 분할하는(물리 스크린을 가상 스크린으로 분할하는) 단축키와 화면분활 복원하는 단축키 설정
- 좌측 스크린(75%)은 작업 전용, 우측 스크린은(25%)은 미디어 전용
| 촤측 스크린 에는 6번 워크스페이스를 사용 : A. 주는 "BSP(Binary Space Partitioning) Layout, B. 부는 "PostionRestoreFloat Layout" 2개를 설정 사용 . C. fullscreen 토글 단축키
보통 "윈도우 + f" 를 fullscreen 토글 키롤 많이들 할당 합니다.(화면의 커서가 있는 웹브라우저에서 단축키를 누르면 4:3 비율로 가득찬 풀 스크린 웹서핑 모드로 전환
| 우측 스크린 에는 5번 워크스페이스를 사용 : Media 전용 워크스페이스로 사용합니다.
5번 워크스페이스는 세로로(위에서 부터 아래로) 75% 의 영역을 Vertical Tiled Layout 으로 지정,, 세로로 하단 25% 의 영역은 mpv 영상(주로 TV 와 유투브) 을 float 띠우기 위한 고정된 영역으로 미리 비워둡니다. 여기서 띠울 mpv는 titled stack에 포함되어 있지 않고, float stack 속해 잇기때문에.. mpv의 풀스크린 토글 단축키 "f" 키를 누르면... 우측 가상 스크린의 세로로 가득찬 풀 스크린 화면이 아닌,, 물리 모니터를 가득 채우는 1920x1080 해상도로 화면이 가득차게 됩니다.
* 작업 워크페이스와 미디어 워크스페이스를 분리 해 놓았기 때문에.. 작업하다가 "왼도우 + j" , "윈도우 + k" 키롤 창 이동을 해도. 미디어 쪽으로 포커스가 절대 가지 않습니다. (mpv 채널 변경. 유투브 트랙 변경, 등... mpv가 리로드 되도, 기존 활성화된 윈도우의 포커스와 무관하게 독립적으로 작동함)
3. 상/하단 상태바 : xmobar (xmonad : 하스켈, xmobar : 하스켈, 2개는 일종의 세트 상품임, xmonad와 xmobar 서로 연됭 잘됨.)
(. 그러나 요즈음 대사수의 WM 에서의 대세는 polyabar 라고 하는 듯. 물론 XMonad에 Polyabar 연동 모듈도 존재하는 듯)
상단 상태바 영역 Toggle(visible/unvisible) : 단축키 A
하단 상태바 영역 Toggle : 단축키 B
상/하단 상태바 동시 Toggle : 단축키 C
3-1. 상단 xmobar 위에 trayer : 워크스페이스, 활성 윈도우창 정보 뷰어 용도
"6:Work 5 9:Kodi 1 2 3 7" : 물리 모니터 순서, 워크 스페이스 순서.
- 모니터가 2대 연결되어 있고, 순서대로
| 왼쪽 첫번째 모니터에(물리 스크린) : Vitual(가상) 2개의 스크린 : 6번 5번 워크스페이스 가 떠 있음. 활성화된 워크스페이스는 "진한 흰색" 인 6번 워크
| 오르쪽 두번째 모니터에 9:Kodi 워크스페이스가 떠 있음
- 상태바에 나오지 않는 4번 워크스페이스에 실행중인(떠 있는 ) 윈도우 창은 없음
- 1 2 3 7 번 워크스페이스에는 왼도우 창들이 떠있음.
7번 워크스페이스: VirtualBox 전용.. Layout Mode : No Border FuulScreen : 윈도우 10인 떠 있음
3-2. 하단 xmobar : 시스템 모니터링 용도
xmobar는 low, mid, high 값으로 각각의 모니터링 수치를 직접 세세하게 지정 할 수 잇음
ex). "Net: | 6MB/s" 처럼
low : 0k ~ 100k : 살색
mid : 101k ~ 1M : 회색
high : 1M ~ : 빨강색
디폴트 아이들 상태나, 시스템 로우 사용상태시,, 편안한 야동의 살색값,, 컴퓨터가 먼가 열일하면 흥분해서 빨강색으로 변함.
4. 미디어 워크스페이스 설명
Two Key 단축키 :
1. 원키 : Vertical Titled Stack Layout : sxiv, tmux -> (ncmpccc, cava) 실행
tmux Session Name : Music , tmux status off
2. 워키 : 야동 mpv, NSP Floating Layout
아마 요즘 대세는 tmux script 일 겁니다 tmux -> ncmpcpp, coverart
터미널 하나 띠우고,, tmux 스크립트 만들어서 tmux 죄측 pane이나 우측 pane 부분에 "ueberzug" 이용 터미널에 coverart를 그려주고, 나머지 한쪽 Pane 에다가, ncmpcpp 를 실행
제가 새로 1키 단축키를 위한 tmux 자동 배치/실행 스크립트를 만든다면, 아래와 같이 만들것 같습니다.
Sesson Name: Music : tmux 상태창 끄기 (tmux status off)
1. 첫번째 윈도우 탭. 이하 아래 사이즈로 배치,
2. 2번째 윈도우 탭에 상단의 "~/.local/bin/notificaiton music 2>/dev/null" 실행
3. tmux focus(포커스)는 첫뻔째 윈도우 탭의, 2번째 Pane으로 지정
--------------------------------------------------------
50% : coverart ueberzug
--------------------------------------------------------
40%: ncmpcpp
--------------------------------------------------------
10%: cava (audio visualizer)
--------------------------------------------------------
- tmux -> ncmpcpp, coverart (with uberzug) 자동 배치 tmux 스크립트는 아마 인터넷으로 검색하면 상대적으로 쉬이 찾을 수 잇을 것 같습니다.
- 금방 생각난 스크립트 필요 없는 음악 실행하는 또다른 방법 :
1. 좌측 워크스페이스 : musikcube 이란 음악 앱입니다. 그냥 실행하면 노래 재생 잘 됩니다. 서버/클라이언트 지원
2. 우측 워크슾이스 : mpd 계열 음악앱들
(순서대로) .. 특정 스크립트들 필요 없음, 오직 app 3개면 충분
2.-1. miniplayer : coverart를 자동 지원하는 mpd 터미널 클라이언트 입니다. 현재 kitty 터미널에서만 실행되는 듯 합니다. covert width, height 값 수동 지정해서 조절 필요 (색상 통일을 위해, kitty 터미널 색상 테마 수정 필요)
2-2. ncmpcpp : mpd 터미널 클라이언트
2-3. cava
긴 글 읽어 주셔서 감사합니다. 누군가에게는 도움이 되시길....


아니.. 고수님 보다는 리눅스 장인 이라고 하는게 더 어울릴것 같아요 ㅎㅎ
그런데.. 저같은 초보를 위해서 해당 부분이 어떤거고 뭘 하는건지 짤막한 소개를 좀 해주시면 감사하겠습니다.
토렌트는 법이 무서워서 쫄보라 못쓰고 있고..
저도 화면 저렇게 멋있게 꾸미고 싶네요..
특히 앨범 커버 나오는거랑 비쥬얼라이져..
어떻게 하는지 찾아봤는데 아직 마음에 드는 방법을 찾지 못했음다...
게시글 자세히 보강하였습니다. 앨범 커버는 게시글 대로 하면 아마 잘 나올 겁니다.
터미널에서 실행해서 사용후, ctrl-c 키를 입력하면 spoof-dpi 가 정지되고, 함께 gnome network proxy 도 disable 되도록 작성되었습니다.
firefox 는 network settings 의 proxy 설정을 use system proxy settings 를 선택해 두면 잘 동작하고, chrome 은 별도의 설정없이 잘 동작하는 것을 확인했습니다.
@IPZ-721 님 글은 잘 보고 있는데, DE 커스텀까지는 버거운 사용자입니다. (__)
==========================
#!/bin/bash
ctrl_c() {
echo ""
echo "========================================"
echo "Stopped spoof-dpi, turn off gnome proxy."
echo "========================================"
gsettings set org.gnome.system.proxy mode 'none'
}
# set gnome proxy
gsettings set org.gnome.system.proxy.http host '127.0.0.1'
gsettings set org.gnome.system.proxy.http port 12345
gsettings set org.gnome.system.proxy use-same-proxy true
gsettings set org.gnome.system.proxy ignore-hosts "['localhost', '127.0.0.0/8', '::1']"
# turn on gnome proxy
gsettings set org.gnome.system.proxy mode 'manual'
# ctrl-c 감지, ctrl_c 함수를 이용해서 proxy 해제
trap ctrl_c SIGINT
echo "=========================================="
echo "Turned on gnome proxy and start spoof-dpi."
echo "=========================================="
# start spoof-dpi
spoof-dpi -port 12345
# 중지하고 싶은 경우 ctrl-c 입력,
# spoof-dpi 를 중지하고, gnome proxy 를 끔
댓글 감사합니다. 또 하나 배워갑니다.
너무 흥분해서 댓글을 달았네요. 부끄러워서 삭제했습니다.ㅎㅎ
한 개의 모니터에 virtual screen 두 개를 지정하고 그걸 워크스페이스로 할당하는 것 같네요. 관련 키워드로 검색을 해봐야 겠습니다. 신문물(?)을 선보여 주셔서 감사합니다.
p.s. haskel...monad..뭐죠? 무서워요ㄷㄷㄷ