Finally fixed sound starting on some videos. Simply used -ao null. Cleaned up formatting of code and changed import order, etc.
This commit is contained in:
parent
ba50123ab9
commit
2aa974137c
Binary file not shown.
Binary file not shown.
|
@ -1,8 +1,8 @@
|
||||||
Package: fxwinwrap
|
Package: fxwinwrap64
|
||||||
Version: 0.1-3
|
Version: 0.1-3
|
||||||
Section: base
|
Section: base
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Architecture: i386
|
Architecture: amd64
|
||||||
Depends: openjdk-8-jre (>= 8u45-b14-1), openjfx (>= 8u60-b27-4), ffmpegthumbnailer (>= 2.0.10-0.1), mplayer2 (>=2.0-728-g2c378c7-4), gifsicle (>=1.86-1), nitrogen (>=1.5.2-2)
|
Depends: openjdk-8-jre (>= 8u45-b14-1), openjfx (>= 8u60-b27-4), ffmpegthumbnailer (>= 2.0.10-0.1), mplayer2 (>=2.0-728-g2c378c7-4), gifsicle (>=1.86-1), nitrogen (>=1.5.2-2)
|
||||||
Maintainer: Maxim Stewart 1itdominator@gmail.com
|
Maintainer: Maxim Stewart 1itdominator@gmail.com
|
||||||
Description: A GUI to handle setting XWinWrap options.
|
Description: A GUI to handle setting XWinWrap options.
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,4 +1,5 @@
|
||||||
import javafx.stage.*;
|
import javafx.stage.Stage;
|
||||||
|
import javafx.stage.DirectoryChooser;
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.Scene;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.scene.image.Image;
|
import javafx.scene.image.Image;
|
||||||
|
@ -11,12 +12,17 @@ import javafx.scene.input.KeyEvent;
|
||||||
import javafx.scene.input.KeyCode;
|
import javafx.scene.input.KeyCode;
|
||||||
import javafx.scene.input.MouseEvent;
|
import javafx.scene.input.MouseEvent;
|
||||||
import javafx.geometry.Insets;
|
import javafx.geometry.Insets;
|
||||||
import java.io.*;
|
|
||||||
import javafx.beans.value.ChangeListener;
|
|
||||||
import javafx.beans.value.ObservableValue;
|
|
||||||
import javafx.concurrent.Task;
|
import javafx.concurrent.Task;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.UncheckedIOException;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
|
||||||
|
import javafx.beans.value.ChangeListener;
|
||||||
|
import javafx.beans.value.ObservableValue;
|
||||||
|
|
||||||
|
|
||||||
public class Controller {
|
public class Controller {
|
||||||
private DirectoryChooser folderChooser = new DirectoryChooser(); // Selects a dir
|
private DirectoryChooser folderChooser = new DirectoryChooser(); // Selects a dir
|
||||||
|
@ -26,9 +32,8 @@ public class Controller {
|
||||||
private Image pth = new Image("."); // Path to image
|
private Image pth = new Image("."); // Path to image
|
||||||
private ImageView imgView = new ImageView(pth); // Image view area
|
private ImageView imgView = new ImageView(pth); // Image view area
|
||||||
private Process pb; // Process runner
|
private Process pb; // Process runner
|
||||||
private String tmpPath, resolution, xScreenVal, output,
|
private String tmpPath, resolution, xScreenVal, output, textAreaPth = "",
|
||||||
startScrpt = System.getProperty("user.dir") + "/resources/bin/StartXWW.sh", // Gets shell that starts stuff local
|
startScrpt = System.getProperty("user.dir") + "/resources/bin/StartXWW.sh"; // Gets shell that starts stuff local
|
||||||
textAreaPth = "";
|
|
||||||
private int applyType = 1;
|
private int applyType = 1;
|
||||||
private Stage fileChooserStage;
|
private Stage fileChooserStage;
|
||||||
@FXML private ListView<?> selXScreenSvr;
|
@FXML private ListView<?> selXScreenSvr;
|
||||||
|
@ -36,11 +41,9 @@ public class Controller {
|
||||||
@FXML private TilePane tilePane;
|
@FXML private TilePane tilePane;
|
||||||
@FXML private TextField dirPathField, filePathField; // Text fields
|
@FXML private TextField dirPathField, filePathField; // Text fields
|
||||||
@FXML private CheckBox useXSvrn; // Check boxes
|
@FXML private CheckBox useXSvrn; // Check boxes
|
||||||
@FXML private ChoiceBox<?> playbackResolution, setMonPosOffset, listSaveLoc; // Choice box fields
|
@FXML private ChoiceBox<?> playbackResolution, setMonPosOffset, listSaveLoc; // Choice box fields
|
||||||
@FXML private Button applyBttn, closeBttn, fileBttn, clear, // Buttons
|
@FXML private Button applyBttn, closeBttn, fileBttn, clear, killBttn, saveBttn; // Buttons
|
||||||
killBttn, saveBttn;
|
|
||||||
|
|
||||||
// This method is called by the FXMLLoader when initialization is complete
|
|
||||||
@FXML void initialize() throws Exception {
|
@FXML void initialize() throws Exception {
|
||||||
assert dirPathField != null : "fx:id=\"dirPathField\" was not injected: check your FXML file 'Window.fxml'.";
|
assert dirPathField != null : "fx:id=\"dirPathField\" was not injected: check your FXML file 'Window.fxml'.";
|
||||||
assert clear != null : "fx:id=\"clear\" was not injected: check your FXML file 'Window.fxml'.";
|
assert clear != null : "fx:id=\"clear\" was not injected: check your FXML file 'Window.fxml'.";
|
||||||
|
@ -53,22 +56,15 @@ public class Controller {
|
||||||
assert setMonPosOffset != null : "fx:id=\"setMonPosOffset\" was not injected: check your FXML file 'Window.fxml'.";
|
assert setMonPosOffset != null : "fx:id=\"setMonPosOffset\" was not injected: check your FXML file 'Window.fxml'.";
|
||||||
assert playbackResolution != null : "fx:id=\"playbackResolution\" was not injected: check your FXML file 'Window.fxml'.";
|
assert playbackResolution != null : "fx:id=\"playbackResolution\" was not injected: check your FXML file 'Window.fxml'.";
|
||||||
assert useXSvrn != null : "fx:id=\"useXSvrn\" was not injected: check your FXML file 'Window.fxml'.";
|
assert useXSvrn != null : "fx:id=\"useXSvrn\" was not injected: check your FXML file 'Window.fxml'.";
|
||||||
// Initialize your logic here: all @FXML variables will have been injected
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handler for TextArea[fx:id="dirPathField"] onKeyReleased
|
|
||||||
@FXML void setNewDir(MouseEvent event) { newDir(); }
|
@FXML void setNewDir(MouseEvent event) { newDir(); }
|
||||||
@FXML void onEnter(KeyEvent event) {
|
@FXML void onEnter(KeyEvent event) {
|
||||||
if (event.getCode().equals(KeyCode.ENTER)) {
|
if (event.getCode().equals(KeyCode.ENTER)) {
|
||||||
textAreaPth = dirPathField.getText();
|
textAreaPth = dirPathField.getText();
|
||||||
System.out.println(textAreaPth);
|
System.out.println(textAreaPth);
|
||||||
newDir();
|
newDir();
|
||||||
}
|
} else {}
|
||||||
else {}
|
|
||||||
}
|
|
||||||
|
|
||||||
@FXML void test(ActionEvent event) {
|
|
||||||
newDir();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Scan selected dir
|
// Scan selected dir
|
||||||
|
@ -82,7 +78,7 @@ public class Controller {
|
||||||
|
|
||||||
if (directory != null) {
|
if (directory != null) {
|
||||||
System.out.println("Directory: " + directory);
|
System.out.println("Directory: " + directory);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fileList = directory.listFiles();
|
fileList = directory.listFiles();
|
||||||
|
@ -91,10 +87,10 @@ public class Controller {
|
||||||
for (int i=0; i<fileList.length; i++) {
|
for (int i=0; i<fileList.length; i++) {
|
||||||
String path = "" + fileList[i];
|
String path = "" + fileList[i];
|
||||||
if (path.toLowerCase().matches("^.*?(mp4|mpeg|mpg|wmv|mkv|flv|webm|avi|png|jpg|jpeg|gif).*$")) {
|
if (path.toLowerCase().matches("^.*?(mp4|mpeg|mpg|wmv|mkv|flv|webm|avi|png|jpg|jpeg|gif).*$")) {
|
||||||
imgView = new ImageView();
|
imgView = new ImageView();
|
||||||
imgView.setFitWidth(300); // Need these here to get grid properly.
|
imgView.setFitWidth(300); // Need these here to get grid properly.
|
||||||
imgView.setFitHeight(200);
|
imgView.setFitHeight(200);
|
||||||
tilePane.getChildren().add(imgView);
|
tilePane.getChildren().add(imgView);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,63 +99,58 @@ public class Controller {
|
||||||
newDir2();
|
newDir2();
|
||||||
return null;
|
return null;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
new Thread(getDir).start();
|
new Thread(getDir).start();
|
||||||
}
|
}
|
||||||
public void newDir2() {
|
public void newDir2() {
|
||||||
for (int i=0; i<fileList.length; i++) {
|
for (int i=0; i<fileList.length; i++) {
|
||||||
String path = "" + fileList[i];
|
String path = "" + fileList[i], tmpP = "" + fileList[i];
|
||||||
if (path.toLowerCase().matches("^.*?(mp4|mpeg|mpg|wmv|mkv|flv|webm|avi).*$")) {
|
if (tmpP.toLowerCase().matches("^.*?(mp4|mpeg|mpg|wmv|mkv|flv|webm|avi).*$")) {
|
||||||
String movieImg = "ffmpegthumbnailer -w -t='00:30:00' -c png -i " + fileList[i] +
|
String movieImg = "ffmpegthumbnailer -w -t='00:30:00' -c png -i " +
|
||||||
" -s 300 -o /tmp/image.png",
|
fileList[i] + " -s 300 -o /tmp/image.png",
|
||||||
vExec = "mplayer " + fileList[i];
|
vExec = "mplayer " + fileList[i];
|
||||||
try {
|
try {
|
||||||
pb = Runtime.getRuntime().exec(movieImg);
|
pb = Runtime.getRuntime().exec(movieImg);
|
||||||
pb.waitFor();
|
pb.waitFor();
|
||||||
} catch(Throwable imgIOErr) {
|
} catch(Throwable imgIOErr) {
|
||||||
System.out.println(imgIOErr);
|
System.out.println(imgIOErr);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImageView view = (ImageView) (tilePane.getChildren().get(i));
|
ImageView view = (ImageView) (tilePane.getChildren().get(i));
|
||||||
pth = new Image("file:///tmp/image.png");
|
pth = new Image("file:///tmp/image.png");
|
||||||
Platform.runLater(new Runnable() {
|
Platform.runLater(new Runnable() {
|
||||||
@Override public void run() {
|
@Override public void run() { view.setImage(pth); }
|
||||||
view.setImage(pth);
|
});
|
||||||
}
|
|
||||||
});
|
|
||||||
view.setOnMouseClicked(mouse -> {
|
|
||||||
if (mouse.getClickCount() == 2 && !mouse.isConsumed()) {
|
|
||||||
mouse.consume();
|
|
||||||
try {
|
|
||||||
pb = Runtime.getRuntime().exec(vExec);
|
|
||||||
} catch(IOException vidIOErr) {
|
|
||||||
throw new UncheckedIOException(vidIOErr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
filePathField.setText(path);
|
|
||||||
});
|
|
||||||
} else if(path.toLowerCase().matches("^.*?(png|jpg|jpeg|gif).*$")) {
|
|
||||||
String title = "" + fileList[i];
|
|
||||||
pth = new Image("file://" + fileList[i]);
|
|
||||||
ImageView view = (ImageView) (tilePane.getChildren().get(i));
|
|
||||||
|
|
||||||
Platform.runLater(new Runnable() {
|
view.setOnMouseClicked(mouse -> {
|
||||||
@Override public void run() {
|
if (mouse.getClickCount() == 2 && !mouse.isConsumed()) {
|
||||||
view.setImage(pth);
|
mouse.consume();
|
||||||
}
|
try {
|
||||||
});
|
pb = Runtime.getRuntime().exec(vExec);
|
||||||
final ImageView imgViewPoped = new ImageView("file://" + fileList[i]);
|
} catch(IOException vidIOErr) {
|
||||||
// image click actions
|
throw new UncheckedIOException(vidIOErr);
|
||||||
view.setOnMouseClicked(mouse -> {
|
}
|
||||||
if (mouse.getClickCount() == 2 && !mouse.isConsumed()) {
|
}
|
||||||
mouse.consume();
|
filePathField.setText(path);
|
||||||
displayImg(imgViewPoped, title);
|
});
|
||||||
}
|
} else if(tmpP.toLowerCase().matches("^.*?(png|jpg|jpeg|gif).*$")) {
|
||||||
filePathField.setText(path);
|
ImageView view = (ImageView) (tilePane.getChildren().get(i));
|
||||||
});
|
String title = "file://" + fileList[i];
|
||||||
} else {
|
pth = new Image(title);
|
||||||
System.out.println("Not a video or image file.");
|
|
||||||
}
|
Platform.runLater(new Runnable() {
|
||||||
|
@Override public void run() { view.setImage(pth); }
|
||||||
|
});
|
||||||
|
|
||||||
|
final ImageView imgViewPoped = new ImageView(title);
|
||||||
|
// image click actions
|
||||||
|
view.setOnMouseClicked(mouse -> {
|
||||||
|
if (mouse.getClickCount() == 2 && !mouse.isConsumed()) {
|
||||||
|
mouse.consume();
|
||||||
|
displayImg(imgViewPoped, title);
|
||||||
|
}
|
||||||
|
filePathField.setText(path);
|
||||||
|
});
|
||||||
|
} else { System.out.println("Not a video or image file."); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Open image in new window
|
// Open image in new window
|
||||||
|
@ -199,9 +190,9 @@ public class Controller {
|
||||||
|
|
||||||
// Saves to file with selected and needed settings
|
// Saves to file with selected and needed settings
|
||||||
if(filePathField.getText().toLowerCase().matches("^.*?(png|jpg|jpeg|gif).*$"))
|
if(filePathField.getText().toLowerCase().matches("^.*?(png|jpg|jpeg|gif).*$"))
|
||||||
sveFileLoc = new File(System.getProperty("user.home") + "/" + ".config/nitrogen/bg-saved.cfg");
|
sveFileLoc = new File(System.getProperty("user.home") + "/" + ".config/nitrogen/bg-saved.cfg");
|
||||||
else
|
else
|
||||||
sveFileLoc = new File(System.getProperty("user.home") + "/" + listSaveLoc.getValue());
|
sveFileLoc = new File(System.getProperty("user.home") + "/" + listSaveLoc.getValue());
|
||||||
|
|
||||||
fileWriter = new FileWriter(sveFileLoc);
|
fileWriter = new FileWriter(sveFileLoc);
|
||||||
resolution = "" + playbackResolution.getValue() + "" + setMonPosOffset.getValue();
|
resolution = "" + playbackResolution.getValue() + "" + setMonPosOffset.getValue();
|
||||||
|
@ -216,21 +207,21 @@ public class Controller {
|
||||||
applyType = 1;
|
applyType = 1;
|
||||||
// GIF
|
// GIF
|
||||||
} else if (filePathField.getText().toLowerCase().contains(".gif")) {
|
} else if (filePathField.getText().toLowerCase().contains(".gif")) {
|
||||||
output = "xwinwrap -ov -g " + resolution + " -st -sp -b -nf -s -ni -- gifview -a -w WID " + filePathField.getText();
|
output = "xwinwrap -ov -g " + resolution + " -st -sp -b -nf -s -ni -- gifview -a -w WID " + filePathField.getText();
|
||||||
fileWriter.write(output);
|
fileWriter.write(output);
|
||||||
applyType = 1;
|
applyType = 1;
|
||||||
// Standard images using nitrogen
|
// Standard images using nitrogen
|
||||||
} else if(filePathField.getText().toLowerCase().contains(".jpg") ||
|
} else if(filePathField.getText().toLowerCase().contains(".jpg") ||
|
||||||
filePathField.getText().toLowerCase().contains(".png")) {
|
filePathField.getText().toLowerCase().contains(".png")) {
|
||||||
output = "[xin_0] \n file=" + filePathField.getText() + "\nmode=0 \nbgcolor=#000000\n" +
|
output = "[xin_0] \n file=" + filePathField.getText() + "\nmode=0 \nbgcolor=#000000\n" +
|
||||||
"[xin_1] \nfile=" + filePathField.getText() + "\nmode=0 \nbgcolor=#000000";
|
"[xin_1] \nfile=" + filePathField.getText() + "\nmode=0 \nbgcolor=#000000";
|
||||||
fileWriter.write(output);
|
fileWriter.write(output);
|
||||||
applyType = 2;
|
applyType = 2;
|
||||||
//VIDEO
|
//VIDEO
|
||||||
} else {
|
} else {
|
||||||
output = "xwinwrap -ov -g " + resolution + " -st -sp -b -nf -s -ni -- mplayer -wid WID -really-quiet -nosound -loop 0 " + filePathField.getText();
|
output = "xwinwrap -ov -g " + resolution + " -st -sp -b -nf -s -ni -- mplayer -wid WID -really-quiet -ao null -loop 0 " + filePathField.getText();
|
||||||
fileWriter.write(output);
|
fileWriter.write(output);
|
||||||
applyType = 1;
|
applyType = 1;
|
||||||
}
|
}
|
||||||
fileWriter.close();
|
fileWriter.close();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue