Difference between revisions of "Ubuntu Customization"
(→Coping with Mac styled Global Application Menus) |
(→Coping with Mac styled Global Application Menus) |
||
Line 175: | Line 175: | ||
You can also completely cripple and disable Mac like menus by removing the offending package. | You can also completely cripple and disable Mac like menus by removing the offending package. | ||
sudo apt-get remove indicator-appmenu | sudo apt-get remove indicator-appmenu | ||
− | Warning, removing indicator-appmenu will cripple Dash. It | + | Warning, removing indicator-appmenu will cripple Dash. It is said to disable HUD? In a practical sense the crippling may go unnoticed by some users. After removing indicator-appmenu you may not miss a thing! It won't hurt to try, you can always put it back. You need to reboot after removal to experience the changes. |
+ | |||
+ | Test: after removal of indicator-appmenu and a reboot, the HUD service was still running. | ||
+ | 2159 ? Ss 0:00 /usr/lib/x86_64-linux-gnu/hud/window-stack-bridge | ||
+ | 2243 ? Ssl 0:00 /usr/lib/x86_64-linux-gnu/hud/hud-service | ||
+ | Furthermore, Global Menu was completely gone! Now menus are back where they are supposed to be, on the application window! Tested successful on Ubuntu 14.04. | ||
| |
Revision as of 22:11, 3 July 2015
Many customizations will use The apt-get Package Management Tool to install applications or servers to the system. Others will require editing system files. Know your Ubuntu version 'lsb_release -a' for package availability and compatibility.
Contents
- 1 Secure Shell Support for Remote Login
- 2 Add new user to system
- 3 Mount some shares from a Windows machine or SMB NAS
- 4 Numlock On by Default
- 5 Double Click to Launch
- 6 Restore the Classic Menu that's missing from Unity
- 7 Fast Light File Manager Nautilus Replacement
- 8 IP Network Configuration (GUI - Network Manager)
- 9 IP Network Configuration (Console)
- 10 install configure vncserver
- 11 Enable Other Package Repositories
- 12 Install or Update the Flash Plugin Package
- 13 Persistent Path Environment Variable
- 14 blacklisting a kernel module at boot
- 15 changing your default console editor
- 16 Unity Tweak Tool
- 17 Coping with Mac styled Global Application Menus
Secure Shell Support for Remote Login
If the ssh server is not already installed, we will use apt-get to install. As root or using sudo do the following:
apt-get install openssh-server openssh-client service ssh start
Add new user to system
As root or using sudo do the following
useradd -c "Nicole Ploof" -m -s /bin/bash nicolep passwd nicolep passwd -u nicolep
The first line creates a new user account on the system, using the next available UID for users and creates a home directory /home/nicolep with the default shell bash assigned. The next line prompts you to set a password for user nicolep and the last line ensures the login is unlocked. Substitute nicolep for the username of your choice as well as -c comments in quotes for the first and last name of your choice.
Development of seamless windows network share integration for linux in some respects has been, over the many years, very disappointing. There are basically a couple well known approaches. First, use the "Browse Network" from nautilus file manager for temporary access after providing your username and password for the windows share, or secondly, hard coding your username and password along with the network path in /etc/fstab for a persistent share available on boot.
fstab example: persistent mounts using exposed credentials
There are more than one ways to do this. This example uses cifs to permanently mount the shares so that they will be available after reboot. If the system complains add the 'noauto' parameter.
- First edit your /etc/hosts file and add the hostname and IP address of the windows share or file server
- Next create mount points in /mnt for each windows share
- Make sure you have cifs installed
- Edit /etc/fstab and add a line for each windows share, see examples:
//apollo/public/ /mnt/public cifs username=nicolep,password=yourpass,iocharset=utf8,sec=ntlm 0 0 //apollo/media/ /mnt/media cifs username=nicolep,password=yourpass,iocharset=utf8,sec=ntlm 0 0 //apollo/video/ /mnt/video cifs username=nicolep,password=yourpass,iocharset=utf8,sec=ntlm 0 0
- mount the shares
mount -a
- This provides read-only access to the network shares.
Example with file permission specified and full rw access
//apollo/public /mnt/public cifs defaults,dir_mode=0777,file_mode=0777,domain=workgroup,username=nicolep,password=yourpass,uid=1000
troubleshooting: devs keep breaking samba
KERNEL CHANGE BREAKS CIFS.
Somewhere between kernel 4.10.0-38 4.15.0-20 a change was made that COULD PREVENT your cifs shares from mounting. Kernels at and before 4.10 used SMB (Server Message Block) version 1.0 as the default if not specified. Most folks did not specify it so it defaulted to 1.0 and worked. Microsoft ditched 1.0 in Windows 10 and dropped support. Linux kernel developers decided to change the kernel code to no longer default to SMB 1.0 and now default to a newer version. For people that are using legacy networks or NAS devices, it breaks the mounting example from above.
Solution: Specify the SMB version.
The solution is to tell mount.cifs to use the SMB2, SMB2.1 or SMB3.0 protocol using the "vers" parameter. in Linux CIFS Utils and Samba Specify 1.0, 2.0, 2.1, or 3.0.
For the following full line example a linux desktop is connecting to an older NAS device. It is necessary to specify SMB version 1.0. Example:
//apollo/video/ /mnt/video cifs defaults,vers=1.0,domain=workgroup,username=nicolep,password=mythtv,iocharset=utf8,sec=ntlm 0 0
FAILED TO CLOSE BROKEN PIPE
Update 2024 Kernel 5.15 Samba 2:4.15.13+dfsg-0ubuntu1.6 -
cp: failed to close 'filename': Broken pipe
A problem with this latest at the time samba Can't copy large files to Windows share - Error closing file: Input/output error issue workaround, specify prior version of cifs on fstab, see example:
//apollo/video/ /mnt/video cifs vers=2.0,defaults,domain=workgroup,username=nicolep,password=yourpass,uid=1000
For more information see: Windows network share integration for linux - discussion of methods available. Includes an fstab example providing full read/write access to network share.
Numlock On by Default
Double Click to Launch
Restore the Classic Menu that's missing from Unity
How to Install and Launch the Classic Gnome Menu in Ubuntu 14.04
Ubuntu may seem completely different from what it used to be due to the new Unity Desktop for GNOME. The GNOME Classic Menu in Ubuntu is missing, it has been replaced by Unity with its crashy "Dashboard" where you find your applications by clicking "Dashboard Home" and hoping it doesn't trigger the notorious and unresolved GPU Freeze loop. To get the classic menu back without switching to GNOME desktop you can install classicmenu-indicator for Unity desktop. Like the classic GNOME Menu, it includes all the applications and structure of the classic menu. It’s easy to navigate and access applications for those who are used to it.
As root or using sudo do the following:
apt-add-repository ppa:diesch/testing apt-get update apt-get install classicmenu-indicator
After installing it, go and launch the application from Unity Dash. It’s called Classic Menu Indicator. When you launch it, it will automatically dock at the top panel over towards the right side. It should be just left of the speaker or clock. It will look like three horizontal bars.
Fast Light File Manager Nautilus Replacement
PCMan File Manager (PCManFM) is meant to be a replacement for Nautilus, Konqueror and Thunar. PCManFM is the standard file manager in LXDE.
apt-get install pcmanfm
IP Network Configuration (GUI - Network Manager)
Network Manager is a GUI interface used to configure networking on most modern desktop Linux systems including Ubuntu and Fedora.
- In xfce you can go to the APPLICATIONS menu and choose SETTINGS, NETWORK CONNECTIONS.
- In Gnome / Unity you can go to the Network icon in the Application Indicator (updown arrow icon) typically top right of the screen and then click Edit Connections.
Once the Network Connections dialog is open, select the interface you want to configure, and then click Edit, select the IPv4 Settings tab. Enter the network settings here.
- Instead of a netmask of 255.255.255.0 for a typical Class C LAN, you can enter the number "24" for the Netmask.
When a static IP address is configured via the graphical Network Connections utility, the setting is saved to the following path
/etc/NetworkManager/system-connections/
To change the settings from console without creating a conflict in settings location you can edit the file
vi /etc/NetworkManager/system-connections/Wired connection 1
The file isn't meant to be edited by the user (CLI - Command Line Interface), but by the Network Manager tools.
nmcli is a tool that allows NetworkManager management from command line.
IP Network Configuration (Console)
When configuring IP networking using the GUI interface "Network Manager" settings are stored differently than when configuring via traditional CLI (Command Line Interface). This is a design often criticized for the confusion it can create. The administrator can choose to disable Network Manager and use the traditional Debian etc/network/interfaces file.
On a headless console only system the use of Network Manager would not make sense. It can be disabled and the traditional CLI method may be used. To disable Network Manager do the following as 'root' or use the sudo command.
service network-manager stop echo "manual" | tee /etc/init/network-manager.override
More on disabling "Network Manager" can be found on this external source: How to disable Network Manager on Linux
install configure vncserver
Install the vnc server
apt-get install vnc4server
Or if you prefer TightVNC
apt-get install tightvncserver
You need to set a default password. Do this from console
vncserver
Enter and verify the password of your choice.
Note: This requires a local user to be logged into a desktop session before a remote client can connect. It is also possible to make vncserver start as a system service. See the following guide on this wiki:
Enable Other Package Repositories
Ubuntu uses apt for package management. Apt stores a list of repositories, which are places with collections of software packages, in a text file. This file can be edited from the command line with root privilege or sudo.
vi /etc/apt/sources.list apt-get update
Removing the # in front of repositories, such as "deb http://archive.canonical.com/ubuntu saucy partner" will allow access to those packages. Running "apt-get update" is necessary after making changes to the file. 3rd party repositories can also be manually added to the text file.
Install or Update the Flash Plugin Package
Adobe Flash Player 11.2 was released in 2012 was the last version Adobe plans to release to the Linux community with the exception of limited security related updates. To update Flash or install simply use apt-get
apt-get install adobe-flashplugin
If you experience problems please refer to our complete guide to Install Update Flash Plugin Ubuntu.
Persistent Path Environment Variable
- Bash as login shell will load /etc/profile, ~/.bash_profile, ~/.bash_login, ~/.profile in the order
- Bash as non-login interactive shell will load ~/.bashrc
- Bash as non-login non-interactive shell will load the configuration specified in environment variable $BASH_ENV
The Ubuntu desktop session is no longer affected by .profile. Additionally bash doesn't parse .profile if either .bash_profile or .bash_login exists.
A path set in .bash_profile will only be set in a bash login shell (bash -l). If you put your path in .profile it will be available to your complete desktop session.
To add a directory to your, or a specific user's $PATH, edit ~/.profile
vi ~/.profile
To make the change persist
PATH="$HOME/bin:$PATH"
and change it to:
PATH="$HOME/bin:$PATH:/foo"
to make the change immediate for your session
export PATH=$PATH:/foo
- /etc/environment - This file is specifically meant for system-wide environment variable settings.
- /etc/.profile - This file gets executed whenever a bash login shell is entered
To set a persistent path for all users on the system, edit the /etc/environment file.
blacklisting a kernel module at boot
There maybe a time when you need to disable some modules from being loaded during your system's boot time. In this "how to" we will discus some of the few ways how to blacklist module including its dependencies, that is, disable permanently module from loading during the boot time. Source: How to blacklist a module on Ubuntu/Debian Linux
In a quick example, if you wish to disable the sound generated by the PC speaker, do the following:
vi /etc/modprobe.d
Then add the following:
blacklist snd_pcsp
Now the module snd_pcsp will not be loaded when you reboot. No more sound from the PC speaker. beep will be silent. To enable the module once again you can simply remark it by placing a # in front and reboot.
changing your default console editor
Ubuntu default text editor seems to be "nano" which is a pico style text editor. It is for DOS people (because it is like the old MSDOS6 DOS EDIT.) DOS SUCKS.
Type:
sudo update-alternatives --config editor
You will get a text like below.
There are 4 choices for the alternative editor (providing /usr/bin/editor). Selection Path Priority Status ------------------------------------------------------------ * 0 /bin/nano 40 auto mode 1 /bin/ed -100 manual mode 2 /bin/nano 40 manual mode 3 /usr/bin/vim.basic 30 manual mode 4 /usr/bin/vim.tiny 10 manual mode Press enter to keep the current choice[*], or type selection number: 3
run the following:
export EDITOR=vim
To make it permanent, add this line to ~/.profile
export EDITOR=vim
Unity Tweak Tool
Unity Tweak Tool offers 20 different customization options under 4 categories.
Installation:
sudo apt-get install unity-tweak-tool gnome-tweak-tool
Once you have installed Unity tool, type “Unity” (without quotes) in Dash and click on the Unity Tweak Tools icon.
Coping with Mac styled Global Application Menus
The AppMenu (Global Menu) - Unity's Global Menu - 14.04
Change the global menu to show in the windows title bar (all apps)
- System -> Appearance -> click on the "Behavior" tab. Select the radio box for "In the window's title bar."
Once clicked, the application menus appear within the window decoration inline with the menu buttons. This isn't exactly a complete fix but is preferred to the auto-hide behavior that is default. The command line alternatives:
gsettings set com.canonical.Unity integrated-menus true
and
gsettings set com.canonical.Unity integrated-menus false
You can also completely cripple and disable Mac like menus by removing the offending package.
sudo apt-get remove indicator-appmenu
Warning, removing indicator-appmenu will cripple Dash. It is said to disable HUD? In a practical sense the crippling may go unnoticed by some users. After removing indicator-appmenu you may not miss a thing! It won't hurt to try, you can always put it back. You need to reboot after removal to experience the changes.
Test: after removal of indicator-appmenu and a reboot, the HUD service was still running.
2159 ? Ss 0:00 /usr/lib/x86_64-linux-gnu/hud/window-stack-bridge 2243 ? Ssl 0:00 /usr/lib/x86_64-linux-gnu/hud/hud-service
Furthermore, Global Menu was completely gone! Now menus are back where they are supposed to be, on the application window! Tested successful on Ubuntu 14.04.