CloudCompare is a powerful, open source 3D point cloud and mesh processing software available on all major platforms (Windows, MacOS, Linux). It is my current favorite tool for visualizing 3D point clouds.
Notepad++ is undoubtedly one of the most popular code/text editors available for Windows. While it does not run natively on Linux (or macOS), many have ran it successfully with Wine. There is also a clone of Notepad++ called Notepadqq that runs natively on Linux that is written using the well-known cross-platform UI library Qt.
Screenshot tools for Linux and macOS generally produce image files in the
.png file format. PNG is a lossless compression format, meaning that it can be compressed without losing quality, which is unlike another commonly used image format, JPG. There are 3 command-line tools which can be used to compress PNG files, pngout, optipng, and advpng.
➜ pngout terminator-terminal-window.png In: 11405 bytes terminator-terminal-window.png /c6 /f5 Out: 8790 bytes terminator-terminal-window.png /c2 /f5 Chg: -2615 bytes ( 77% of original) ➜ optipng -o7 terminator-terminal-window.png ** Processing: terminator-terminal-window.png 800x266 pixels, 3x8 bits/pixel, RGB+transparency Input IDAT size = 8715 bytes Input file size = 8790 bytes Trying: zc = 9 zm = 9 zs = 0 f = 0 IDAT size = 8140 zc = 9 zm = 8 zs = 0 f = 0 IDAT size = 8140 Selecting parameters: zc = 9 zm = 8 zs = 0 f = 0 IDAT size = 8140 Output IDAT size = 8140 bytes (575 bytes decrease) Output file size = 8215 bytes (575 bytes = 6.54% decrease) ➜ advpng -z4 terminator-terminal-window.png 8215 7232 88% terminator-terminal-window.png 8215 7232 88%
In the past, I’ve written about different remote desktop products/solutions, including NoMachine for remoting into traditional desktop machines, but also a few alternatives for accessing and controlling Android devices from a computer. Today I’d like to mention TeamViewer, a product free for non-commercial use that supports computer to computer, Android to computer, and computer to Android connections.
The following screenshots were taken on a macOS Sierra machine remotely logged onto a rooted Samsung Galaxy S4 Android tablet.
- Download the SDelete program provided by Microsoft onto your Windows Guest machine.
- Clean up unnecessary files and programs. One useful utility is WinDirStat.
- Run the following command in the terminal to write zeroes over unused disk storage in your Windows guest:
sdelete64 -z c:
- Shut down your VM and run the following command on your Windows Guest VDI:
VBoxManage modifyhd /misc/virtualbox-vms/Windows10/Windows10LargeDisk.vdi
- Create a new VDI with the new desired maximum size:
VBoxManage createhd --filename /misc/virtualbox-vms/Windows10/Windows10Disk.vdi --size 92160
- Clone the existing VDI into the newly allocated one:
VBoxManage clonehd /misc/virtualbox-vms/Windows10/Windows10LargeDisk.vdi /misc/virtualbox-vms/Windows10/Windows10Disk.vdi --existing
- Enroll in Apple’s Beta Software Program.
- Download a fresh copy of VMware Workstation Player for Windows or Linux from the official VMware site. The free trial of this product has no expiration if used for non-commercial purposes.
- You’ll need to unlock your installation of VMware to use Mac operating system as a guest following these instructions (external link).
- On a computer running an official/genuine instance of OS X, download macOS Sierra from the App Store:
- Once the download completes, open the
Terminalapplication, and either save a new file with the following contents,
#!/bin/bash # Mount the installer image hdiutil attach /Applications/Install\ macOS\ Sierra.app/Contents/SharedSupport/InstallESD.dmg -noverify -nobrowse -mountpoint /Volumes/install_app # Create the macOS-Sierra Blank ISO Image of 7316mb with a Single Partition - Apple Partition Map hdiutil create -o /tmp/macOS-Sierra.cdr -size 7316m -layout SPUD -fs HFS+J # Mount the macOS-Sierra Blank ISO Image hdiutil attach /tmp/macOS-Sierra.cdr.dmg -noverify -nobrowse -mountpoint /Volumes/install_build # Restore the Base System into the macOS-Sierra Blank ISO Image asr restore -source /Volumes/install_app/BaseSystem.dmg -target /Volumes/install_build -noprompt -noverify -erase # Remove Package link and replace with actual files rm /Volumes/OS\ X\ Base\ System/System/Installation/Packages cp -rp /Volumes/install_app/Packages /Volumes/OS\ X\ Base\ System/System/Installation/ # Copy macOS Sierra installer dependencies cp -rp /Volumes/install_app/BaseSystem.chunklist /Volumes/OS\ X\ Base\ System/BaseSystem.chunklist cp -rp /Volumes/install_app/BaseSystem.dmg /Volumes/OS\ X\ Base\ System/BaseSystem.dmg # Unmount the installer image hdiutil detach /Volumes/install_app # Unmount the macOS-Sierra ISO Image hdiutil detach /Volumes/OS\ X\ Base\ System/ # Convert the macOS-Sierra ISO Image to ISO/CD master (Optional) hdiutil convert /tmp/macOS-Sierra.cdr.dmg -format UDTO -o /tmp/macOS-Sierra.iso # Rename the macOS-Sierra ISO Image and move it to the desktop mv /tmp/macOS-Sierra.iso.cdr ~/Desktop/macOS-Sierra.iso
curl https://www.nickmcummins.com/make-macos-sierra-iso.sh > /tmp/make-macos-sierra-iso.sh
and then execute it by running
sudo chmod +x /tmp/make-macos-sierra-iso.sh && /tmp/make-make-macos-sierra-iso.sh. Once completed, you should see a file named
macOS-Sierra.isoon your desktop.
- Now boot up VMware Player and create a new virtual machine using the File dialog. Using the iso disk image we just created, and with macOS 10.12 selected as the guest os, finish the setup for your new image.
- You’ll need to erase the virtual hard disk medium as seen in the following screenshots.
- Now you will be able to proceed with the installation. Once completed, you should be all ready to enjoy your new macOS Sierra vm!
This basically involves two steps:
- Client-side support, aka adding the required decoding libraries on the local computer. See official documentation: Enabling the H.264 codec on the NoMachine client host. Here is an example of following the steps on my Macbook Air:
brew update brew install ffmpeg && brew upgrade ffmpeg cd /usr/local/Cellar/ffmpeg/3.0.2/lib sudo cp libavcodec.dylib /Applications/NoMachine/Contents/Frameworks/lib sudo cp libavutil.dylib /Applications/NoMachine/Contents/Frameworks/lib
Setting a custom resolution to that of the guest monitor
Say you have two monitors physically connected to the server, supporting by default maximum resolutions of
1600x900. If you are logging in to the remote server from a machine that has a larger display, it may be difficult to add the new resolution. I have attempted to follow dozens of similar instructions I found online, with little luck. The only thing that worked for me seems like a hack, but it works.
➜ xrandr | grep -i primary DVI-D-0 connected primary 1440x900+0+0 (normal left inverted right x axis y axis) 410mm x 257mm
We’ll be using the scale option of randr to change our resolution in this case, i.e. (x resolution)(x scale factor) = (desired x resolution); (y resolution)(y scale factor) = (desired y resolution). You’ll want to use at least a few decimal places for non-truncating decimal numbers unless your scaling factor is a rational number:
xrandr --output DVI-D-0 --scale 1.3333333x1.33333333
Afterwards, you should see this represented if you run the initial
xrandr command above.
➜ xrandr | grep -i primary DVI-D-0 connected primary 1920x1200+0+0 (normal left inverted right x axis y axis) 410mm x 257mm
Back in July the alpha version of a new Skype Linux app was announced with
.rpm versions available for download. Of course, there are many options for Linux users who want to connect to Skype, most of which wrap around the official web client (https://web.skype.com). Here is a side-by-side screenshot of a Google Chrome app wrapper around Skype Web (left) and the new official Skype app (right):
Out of interest here is a screenshot of the running processes behind the new app:
This took me a while to get down — given the complexity introduced here in the number of possible locations for things to be configured at a user and global level — but I have been able to create desktop directory entries and have them appear in whiskermenu properly. I highly recommend not to use a tool sure as alacarte or xame, as they may introduce more complexity and complicate your configuration files to the point that they are impossible to edit and produce any results in your menu.
➜ ls /home/nick/.local/share/desktop-directories alacarte-made-1.directory chrome-apps.directory gps-apps.directory alacarte-made.directory development-apps.directory settings-apps.directory chat-apps.directory game-apps.directory
Here’s the contents of
game-apps.directory as an example to be followed for all the category files you create:
[Desktop Entry] Comment= Type=Directory Name=Games Icon=/home/nick/Pictures/icons/IconScanner/png/GameCenter.png
.menu files are stored in a subdirectory called
applications-merged because of the fact that I used various GUI tools to create my entries. Placing your
.menu files in the parent menus directory should suffice.
➜ ls /home/nick/.config/menus/applications-merged chat-apps.menu game-apps.menu theplatform-apps.menu xdg-desktop-menu-dummy.menu development-apps.menu gps-apps.menu user-chrome-apps.menu
The freedesktop .menu file looks as follows, for our games category example:
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN" "http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd"> <Menu> <Name>Applications</Name> <Menu> <Name>game-apps</Name> <Directory>game-apps.directory</Directory> <Include> <Filename>American Truck Simulator.desktop</Filename> <Filename>steam.desktop</Filename> <Filename>m64py.desktop</Filename> <Filename>desmume.desktop</Filename> <Filename>dolphin-emu.desktop</Filename> <Filename>PPSSPP.desktop</Filename> <Filename>chrome-ikffjkehicicbeijfeneenheeijonfjc-Default.desktop</Filename> <Filename>flightgear.desktop</Filename> </Include> </Menu> </Menu>
*.desktop files must exist in an applications directory:
➜ ls /usr/share/applications | grep steam steam.desktop
and the contents of one should look something like
[Desktop Entry] Name=Steam Comment=Application for managing and playing games on Steam Exec=/usr/bin/steam %U Icon=steam Terminal=false Type=Application Categories=Network;FileTransfer;Game; MimeType=x-scheme-handler/steam; Exec=steam steam://open/friends
Finally, you will need to add an entry to a
.menu file similar to the following. My full menu file’s path is
/home/nick/.config/menus/xfce-applications.menu since I am using XFCE as my desktop environment:
<Menu> <Name>game-apps</Name> <Directory>game-apps.directory</Directory> <Layout> <Merge type="menus"/> <Filename>American Truck Simulator.desktop</Filename> <Filename>steam.desktop</Filename> <Separator/> <Filename>dolphin-emu.desktop</Filename> <Filename>desmume.desktop</Filename> <Filename>m64py.desktop</Filename> <Filename>PPSSPP.desktop</Filename> <Separator/> <Filename>flightgear.desktop</Filename> <Separator/> <Filename>chrome-ikffjkehicicbeijfeneenheeijonfjc-Default.desktop</Filename> <Merge type="files"/> </Layout> </Menu> <Layout> <Merge type="menus"/> <Menuname>game-apps</Menuname> </Layout> </Menu>