Shell script e Flameshot, salvando 2x

Alguém que entenda de programação, poderia me auxiliar a respeito de um problema: esta sendo salvo o arquivo de imagem 2x na pasta ~/Imagens/Screenshots , porém como tenho conhecimento limitado de programação, não estou conseguindo encontrar o problema

Estou usando a opção ./script --auto

OBS: Sei que existe várias partes do código que não esta sendo usado, é um Frankenstein mesmo, aproveitei um código e fiz alguns ajustes para o meu uso.

#!/bin/sh

# file
time=$(date +%Y-%m-%d_%H-%M)
random=$(($RANDOM % 1000)) # Gera um número aleatório entre 0 e 999
#geometry=$(xrandr | grep 'current' | head -n1 | cut -d',' -f2 | tr -d '[:blank:],current')
#filename="Screenshot-${time}-${random}.png"
filename="Screenshot-${time}.png"
dir="$(xdg-user-dir PICTURES)/Screenshots"
file="${dir}/${filename}"

# directory
if [[ ! -d "$dir" ]]; then
	mkdir -p "$dir"
fi

# notify and view screenshot
notify_view() {
	notify_cmd_shot='dunstify -u low -h string:x-dunst-stack-tag:obscreenshot -i /usr/share/archcraft/icons/dunst/picture.png'
	${notify_cmd_shot} "Copied to clipboard."
	paplay /usr/share/sounds/freedesktop/stereo/screen-capture.oga &>/dev/null &
	#viewnior "${file}"
  viewnior /tmp/clipboard.png
	qtile cmd-obj -o window -f keep_above
	if [[ -e "$file" ]]; then
		${notify_cmd_shot} "Screenshot Saved."
	else
		${notify_cmd_shot} "Screenshot Deleted."
	fi
}

# copy screenshot to clipboard
copy_shot() {
	#xclip -selection clipboard -t image/png -i "${file}"
  xclip -selection clipboard -t image/png -o > /tmp/clipboard.png
}

auto() {
  flameshot gui --clipboard --accept-on-select --path "${dir}"
  copy_shot
	notify_view
}

clip() {
  flameshot gui --clipboard --path "${dir}"
  copy_shot
	notify_view
}

default() {
  flameshot gui --path "${dir}"
}

# execute
if [[ "$1" == "--auto" ]]; then
	auto
elif [[ "$1" == "--clip" ]]; then
	clip
elif [[ "$1" == "default" ]]; then
	default
else
	echo -e "Available Options : --auto --clip --default "
fi

exit 0

Rodei o script na minha máquina e não consegui reproduzir o problema.

Tem certeza que não é algo na maneira como você invoca o script (por exemplo, duas cópias do comando para mesma keybind)? Como é o nome desses arquivos duplicados na pasta Screenshots?

Eu apenas lê. vejo duplicação de arquivo no programa.
O que eu sugiro vc fazer, colocar “read” a cada passo de execução do código e usar o parâmetro de depuração do Bash que é “set -x” você coloca isso após o “#!/bin/sh” isso vai te mostrar o que foi executado e você durante as pausas do “read” ficar observando quando a duplicação do arquivo esta acontecendo.

Descobri o problema, e é quase isso, só que não tem nada haver com keybind, porque esta correto.

Antes de automatizar o salvamento + copiar para o clipboard, usava a opção do próprio programa junto com a opção de salvar automaticamente após copiar para o clipboard

2024-01-18_18-57_000

Só desmarcar que agora salva apenas uma imagem.

1 curtida

Que bom que conseguiu achar o problema, agora seta o que eu te falei “set -x” vai te ajudar muito.
Existe um software de inspeção de código para shellscript, use ele tmb “shellcheck”.

3 curtidas

Se eu soubesse deste set-x antes. :rofl:

Já sofri muito alterando código para o que eu queria

Este tópico foi fechado automaticamente 3 dias depois da última resposta. Novas respostas não são mais permitidas.