Author: | Francesco Poli |
---|---|
Contact: | invernomuto@paranoici.org |
Version: | 0.97 |
Copyright: | Expat license |
Notice: | Copyright (c) 2007-2024 Francesco Poli Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
About this document | |
---|---|
Web form | HyperText Markup Language |
Source form | reStructuredText |
Web stylesheet | Cascading StyleSheets |
Build directives | Makefile |
Contents
In another document (HTML, reST) you saw how to configure the console environment on our example Debian testing workstation/desktop box. Now that the console is comfortable enough, you can setup the desktop environment.
First of all, install X.Org and related packages:
# aptitude install xorg
Also install some benchmarking utilities:
# aptitude install mesa-utils
Create the following file:
$ cat ~/.Xresources ! set a nice font UXTerm*Font: -misc-fixed-medium-*-*-*-15-*-*-*-*-*-iso10646-* UXTerm*wideFont: -misc-fixed-medium-*-*-ja-18-*-*-*-*-*-iso10646-* UXTerm*scaleHeight: 1.2 UXTerm*utf8Title: true ! set my favorite colors UXTerm*background: black UXTerm*foreground: white UXTerm*colorBDMode: off UXTerm*colorULMode: off ! no scrollbar UXTerm*scrollBar: off ! set cursor blinking UXTerm*cursorBlink: on ! set buffer size UXTerm*saveLines: 1000 ! configure selection rules UXTerm*on2Clicks: regex [^/@ \n]+ UXTerm*on3Clicks: regex [^ \n]+ UXTerm*on4Clicks: regex [^#$]+ UXTerm*on5Clicks: line
If you already have an open X session and want these changes to be activated immediately, issue the following command:
$ xrdb -merge ~/.Xresources
from inside the X session itself.
Install some additional fonts for X.Org:
# aptitude install xfonts-terminus xfonts-terminus-oblique # aptitude install fonts-freefont-ttf
If you are also interested in cyrillic fonts, install the following fonts:
# aptitude install xfonts-cyrillic xfonts-cronyx-100dpi xfonts-cronyx-75dpi
Some useful packages of multi-language fonts:
# aptitude --without-recommends install fonts-droid-fallback # aptitude install fonts-baekmuk
and a package of icon fonts:
# aptitude install fonts-octicons
Also, install an appropriate font browser:
# aptitude --without-recommends install gucharmap
Install a light-weight and highly configurable window manager:
# aptitude install fluxbox
Set up a customized .xsession file for your regular user:
$ cat ~/.xsession # MANAGER: start desktop/window manager fluxbox & MANAGERPID=$! # speed up keyboard xset r rate 400 40 # disable bell beep xset b off # HANG POINT: wait for desktop/window manager to exit wait $MANAGERPID # save log file savelog -p -c 4 ~/.xsession-errors
Now, you can login as your regular user from a new virtual terminal (for instance by pressing [Ctrl+Alt+F3]) and open a Fluxbox session by issuing the following command:
$ startx
You should see a basic desktop: if this is the case, use the right mouse button to access the Fluxbox menu and select Applications, Terminal Emulators and XTerm. Inside the terminal emulator, issue the following command:
$ xwininfo
after which you can click on the background and check whether the screen resolution fits your hardware (on our example box, it should be 1600x900, with a 24 bit color depth).
Now you can type the following command into the terminal emulator:
$ glxinfo | grep direct
in order to check whether direct rendering is activated.
You can exit the Fluxbox session by selecting Exit from the Fluxbox menu.
Install some background images:
# aptitude install propaganda-debian
and an appropriate image viewer to be used as wallpaper setter:
# aptitude install feh
If the latter was already installed, you may mark it as manually installed:
# aptitude unmarkauto feh
After opening a Fluxbox session, set your favorite wallpaper:
$ fbsetbg -t /usr/share/wallpapers/The-Brothers-Gibb-1.JPG
Now you want this choice to be remembered for the next sessions. Edit ~/.fluxbox/init so that:
$ grep rootCommand ~/.fluxbox/init session.screen0.rootCommand: fbsetbg -l
Now select a tiny and yet readable font (you can use xfontsel to find the one that's best for you) and modify the following two lines in your Fluxbox configuration file:
$ grep 'session\.style' ~/.fluxbox/init session.styleOverlay: ~/.fluxbox/overlay session.styleFile: /usr/share/fluxbox/styles/Meta
Then, create the style customization file:
$ cat ~/.fluxbox/overlay background: none *font: -*-terminus-*-r-*-*-12-*-*-*-*-*-iso10646-*
Modify your Fluxbox configuration file so that:
$ grep slit ~/.fluxbox/init session.screen0.slit.placement: TopRight session.screen0.slit.direction: Horizontal session.screen0.slit.onTop: False session.screen0.slit.autoHide: False
Set 4 workspaces with short names:
$ grep '\.workspace' ~/.fluxbox/init session.screen0.workspaceNames: W1,W2,W3,W4 session.screen0.workspaces: 4
Disable window position adjustments:
$ grep edge ~/.fluxbox/init session.screen0.edgeSnapThreshold: 0
It's good to have window position shown:
$ grep position ~/.fluxbox/init session.screen0.showwindowposition: True
Set a nice focus model:
$ grep focus ~/.fluxbox/init session.screen0.focusModel: StrictMouseFocus session.screen0.focusLastWindow: True session.screen0.focusNewWindows: False
Disable automatic window raising:
$ grep Raise ~/.fluxbox/init session.screen0.autoRaise: False session.autoRaiseDelay: 250
Enable content display for moving windows:
$ grep opaque ~/.fluxbox/init session.screen0.opaqueMove: True
Also, integrate tab labels into titlebars, so that they do not occupy room on the screen:
$ grep tabs ~/.fluxbox/init session.screen0.tabs.intitlebar: True session.screen0.tabs.usePixmap: False
Install a suite of screensavers:
# aptitude install xscreensaver xscreensaver-data-extra xscreensaver-gl-extra # aptitude install xscreensaver-screensaver-bsod \ xscreensaver-screensaver-webcollage unicode-screensaver
Also install other complementary packages:
# aptitude install xplanet-images
In order to have the screensaver system started on each Fluxbox session you open, insert the following two lines into your regular user's ~/.xsession file (between MANAGER and HANG POINT):
$ grep -A 1 'start screensaver' ~/.xsession # start screensaver xscreensaver -no-splash &
and the following two lines as well (after the HANG POINT):
$ grep -A 1 'stop screensaver' ~/.xsession # stop screensaver xscreensaver-command -exit
Now it's time to configure Xscreensaver for your regular user. Open a Fluxbox session and run the following command (from a terminal emulator):
$ xscreensaver-demo
Set "Blank After" 15 minutes and "Cycle After" 5 minutes; then uncheck "Lock Screen". Go to the "Advanced" tab and check "Grab Desktop Images", uncheck "Grab Video Frames" and "Choose Random Image", check "Power Management Enabled" (set "Standby After" 30 minutes, "Suspend After" 30 minutes, and "Off After" 45 minutes), uncheck "Quick Power-off in Blank Only Mode", check "Fade to Black when Blanking", uncheck "Fade from Black When Unblanking" (set "Fade Duration" to 3 seconds); select "Program" fortune.
Go back to the "Display Modes" tab and make sure you choose the "Random Screen Saver" mode. After that, enable the screenhacks you like, while disabling the ones you don't like. If you share my tastes, enable and configure the screenhacks as described in the following table:
screenhack | enable | configuration |
---|---|---|
Abstractile | no | |
Anemone | yes | |
Anemotaxis | yes | |
Antinspect | yes | |
Antmaze | yes | |
AntSpotlight | yes | |
Apollonian | no | |
Apple2 | yes | set "Run basic programs" and uncheck "Show frame rate" |
Atlantis | yes | |
Attraction | yes | |
Atunnel | yes | |
Barcode | yes | |
Beats | yes | |
BinaryRing | yes | |
Blaster | yes | |
BlinkBox | yes | |
BlitSpin | yes | |
BlockTube | yes | |
Boing | yes | set "Smoothing" and unset all the other options |
Bouboule | yes | |
BouncingCow | yes | |
Boxed | yes | |
BoxFit | yes | |
Braid | no | |
BSOD | yes | |
Bubble3D | yes | |
Bumps | yes | |
Cage | yes | |
Carousel | no | |
CCurve | yes | |
Celtic | yes | |
Circuit | yes | |
Cityflow | yes | |
Cloudlife | yes | |
CompanionCube | yes | |
Compass | yes | |
Coral | no | |
COVID19 | yes | |
Crackberg | yes | |
Crumbler | yes | |
Crystal | no | |
Cube21 | yes | |
Cubenetic | yes | |
CubeStack | yes | |
CubeStorm | yes | |
CubeTwist | yes | |
CubicGrid | no | |
CWaves | yes | |
Cynosure | yes | |
DangerBall | yes | |
DecayScreen | yes | |
Deco | no | |
DeepStars | yes | |
Deluxe | no | |
Demon | no | |
Discoball | yes | |
Discrete | no | |
Distort | yes | |
Drift | no | |
DymaxionMap | yes | |
Endgame | yes | |
EnergyStream | yes | |
Engine | yes | |
Epicycle | yes | |
Eruption | yes | |
Esper | yes | |
EtruscanVenus | yes | |
Euler2D | yes | |
Extrusion | yes | |
FadePlot | no | |
Fiberlamp | yes | |
FilmLeader | yes | |
Fireworkx | yes | |
Flame | no | |
FlipFlop | yes | |
FlipScreen3D | yes | |
FlipText | no | |
Flow | yes | |
FluidBalls | yes | |
Flurry | yes | |
FlyingToasters | yes | |
FontGlide | no | |
FuzzyFlakes | yes | |
Galaxy | yes | |
Gears | yes | |
Geodesic | yes | |
GeodesicGears | yes | |
GFlux | yes | |
Gibson | yes | |
GLBlur | yes | |
GLCells | yes | |
Gleidescope | yes | |
GLHanoi | yes | |
GlitchPEG | no | |
GLKnots | yes | |
GLMatrix | no | |
GLPlanet | yes | |
GLSchool | yes | |
GLSlideshow | no | |
GLSnake | yes | |
GLText | yes | set "Display date and time" |
Goop | no | |
Grav | no | |
GravityWell | yes | |
Greynetic | no | |
Halftone | no | |
Halo | no | |
Handsy | yes | |
Headroom | yes | |
Helix | no | |
Hexadrop | no | |
Hexstrut | yes | |
Hilbert | yes | |
Hopalong | no | |
Hydrostat | yes | |
HyperTorus | yes | |
Hypnowheel | no | |
IFS | no | |
IMSmap | no | |
Interaggregate | yes | |
Interference | no | |
Intermomentary | yes | |
JigglyPuff | yes | |
Jigsaw | yes | |
Juggler3D | yes | |
Julia | no | |
Kaleidescope | no | |
Kaleidocycle | yes | |
Klein | yes | |
Kumppa | no | |
Lament | yes | |
Lavalite | yes | |
LCDscrub | no | |
Lockward | yes | |
Loop | no | |
m6502 | no | |
Maze | yes | |
Maze3D | yes | |
MemScroller | yes | |
Menger | yes | |
Metaballs | yes | |
MirrorBlob | yes | |
Moebius | yes | |
MoebiusGears | yes | |
Moire | no | |
Moire2 | no | |
Molecule | yes | set "Label Atoms", "Describe Molecule", "Draw Atomic Nuclei", and "Draw Atomic Bonds", and unset the other options |
Morph3D | yes | |
Mountain | no | |
Munch | no | |
NerveRot | no | |
Noof | yes | |
Noseguy | yes | |
Pacman | yes | |
Pedal | no | |
Peepers | yes | |
Penetrate | no | |
Penrose | no | |
Petri | no | |
Phosphor | yes | |
Photopile | no | |
Piecewise | yes | |
Pinion | yes | |
Pipes | no | |
Polyhedra | yes | |
Polyominoes | no | |
Polytopes | yes | |
Pong | yes | |
Popsquares | yes | |
ProjectivePlane | yes | |
Providence | yes | |
Pulsar | no | |
Pyro | no | |
Qix | no | |
QuasiCrystal | no | |
Queens | yes | |
RaverHoop | yes | |
RazzleDazzle | no | |
RDbomb | no | |
Ripples | yes | |
Rocks | yes | |
RomanBoy | yes | |
Rorschach | no | |
RotZoomer | yes | |
Rubik | yes | |
RubikBlocks | yes | |
SBalls | yes | |
Scooter | yes | |
ShadeBobs | yes | |
Sierpinski | no | |
Sierpinski3D | no | |
SkyTentacles | yes | |
SlideScreen | yes | |
Slip | no | |
Sonar | yes | set "Simulation (don't ping)" |
SpeedMine | yes | |
SphereEversion | yes | |
Spheremonics | yes | |
SplitFlap | yes | |
Splodesic | yes | |
Spotlight | yes | |
Sproingies | yes | |
Squiral | no | |
Stairs | yes | |
Starfish | no | |
StarWars | no | |
StonerView | yes | |
Strange | no | |
Substrate | yes | |
Superquadrics | yes | |
Surfaces | no | |
Swirl | no | |
Tangram | yes | |
Tessellimage | yes | |
Thornbird | no | |
Timetunnel | yes | unset "Draw Logo" and the other options |
TopBlock | yes | |
Triangle | no | |
TronBit | yes | |
Truchet | no | |
Twang | yes | |
Unicode | yes | set "font color: blue" and "background color: black" |
Unicrud | yes | |
UnknownPleasures | yes | |
Vermiculate | no | |
VFeedback | no | |
VidWhacker | no | |
Vigilance | yes | |
Voronoi | no | |
Wander | no | |
WebCollage | no | |
WhirlWindWarp | no | |
WindupRobot | yes | |
Wormhole | yes | |
XAnalogTV | yes | |
XFlame | yes | |
XJack | no | |
XLyap | no | |
XMatrix | yes | |
XRaySwarm | no | |
XSpiroGraph | no | |
Zoom | yes |
When you're done with the screenhack selection, select Quit from the File menu and your configuration will be saved.
Make sure an appropriate external key binding file is referenced from the main configuration file:
$ grep keyFile ~/.fluxbox/init session.keyFile: ~/.fluxbox/keys
and modify the the key file so that it looks like:
$ cat ~/.fluxbox/keys OnTitlebar Mouse1 :MacroCmd {Focus} {Raise} {ActivateTab} OnTitlebar Move1 :StartMoving OnLeftGrip Move1 :StartResizing bottomleft OnRightGrip Move1 :StartResizing bottomright OnWindowBorder Move1 :StartMoving OnTitlebar Mouse2 :StartTabbing OnTitlebar Double Mouse1 :Shade OnTitlebar Mouse3 :WindowMenu OnWindow Mod1 Mouse1 :MacroCmd {Raise} {Focus} {StartMoving} OnWindow Mod1 Mouse3 :MacroCmd {Raise} {Focus} {StartResizing BottomRight} OnDesktop Mouse1 :hideMenus OnDesktop Mouse2 :workspaceMenu OnDesktop Mouse3 :rootMenu OnDesktop Mouse4 :nextWorkspace OnDesktop Mouse5 :prevWorkspace Mod4 Tab :NextWindow (workspace=[current]) Mod4 Shift Tab :PrevWindow (workspace=[current]) Mod4 F1 :Workspace 1 Mod4 F2 :Workspace 2 Mod4 F3 :Workspace 3 Mod4 F4 :Workspace 4 Mod4 F5 :Workspace 5 Mod4 F6 :Workspace 6 Mod4 F7 :Workspace 7 Mod4 F8 :Workspace 8 Mod4 F9 :Workspace 9 Mod4 F10 :Workspace 10 Mod4 F11 :Workspace 11 Mod4 F12 :Workspace 12 Mod4 x :ExecCommand uxterm -ls Mod4 l :ExecCommand xscreensaver-command -lock Mod4 d :DetachClient Mod4 r :Raise Mod4 f :Fullscreen Mod4 t :ExecCommand synclient TouchpadOff=1 Mod4 y :ExecCommand synclient TouchpadOff=0 Mod4 w :ToggleDecor Mod4 Up :MoveUp 1 Mod4 Left :MoveLeft 1 Mod4 Down :MoveDown 1 Mod4 Right :MoveRight 1 Mod4 Shift Up :MoveUp 18 Mod4 Shift Left :MoveLeft 18 Mod4 Shift Down :MoveDown 18 Mod4 Shift Right :MoveRight 18
The first few directives set a classical configuration for mouse behavior in Fluxbox. The remaining directives customize some other aspects. This way, you can click on the desktop wallpaper with the middle or right mouse button to get the workspace or main menu, respectively; clicking on the desktop with the left mouse button will close those menus, instead; by using the mouse wheel on the desktop, you can also switch to the previous or next workspace. Moreover, you can use the [Logo] keys as a keyboard shortcut enablers: [Logo+Tab] will focus the next window, [Logo+Shift+Tab] will focus the previous one, [Logo+F1] will switch to the first workspace, and likewise for the other function keys, [Logo+X] will open a new terminal emulator (with a login shell inside), [Logo+L] will lock the screen, [Logo+D] will take the focused window out of a tab-group (you can stack a window onto another one, by dragging its title bar with the middle mouse button and dropping it on the title bar of the other, thus obtaining a tab-group), [Logo+R] will raise a window above the other ones, [Logo+F] will bring a window to fullscreen mode and back to its original state, [Logo+T] will disable a touchpad (if any), [Logo+Y] will re-enable it, [Logo+W] will toggle decorations for the focused window, [Logo+CursorKey] will move the focused window by 1 pixel, and [Logo+Shift+CursorKey] will move the focused window by 18 pixels.
Install a nice panel:
# aptitude install xfce4-panel
Then start the panel for your regular user:
$ xfce4-panel --disable-wm-check --sm-client-disable
and configure it by right-clicking on it and selecting Panel Properties from the menu. Select "Panel 2" and click on the "Remove the currently selected panel" button. Once only "Panel 1" is left, you can customize it. In the "Display" tab, select mode "Horizontal", check "Lock panel" (after moving it to the bottom of the screen), select automatically hide the panel "Intelligently", set row size (pixels) "30", number of rows "1", length (pixels) maximum value (the screen width, shown as 1600 pixels in our example workstation), uncheck "Automatically increase the length". In the "Appearance" tab, disable "Dark mode", select style "None (use system style)", enable icons "Adjust size automatically". In the "Items" tab, add the following items (and remove any other loaded item): a Launcher with one subitem named "Terminal", command /usr/bin/uxterm -ls, icon /usr/share/icons/hicolor/scalable/apps/xterm-color.svg, a second Launcher with one subitem named "Lock screen", command /usr/bin/xscreensaver-command -lock, icon /usr/share/pixmaps/xscreensaver.svg), a Separator (style "Transparent", uncheck "Expand"), a Workspace Switcher (appearance "Miniature View", number of rows "1", disable "Switch workspaces using the mouse wheel"), a Separator (style "Transparent", uncheck "Expand"), a Window Buttons (check "Show button labels", uncheck "Show flat buttons", uncheck "Show handle", check "Show tooltips", sorting order "Timestamp", middle click action "Nothing", uncheck "Group windows by application", uncheck "Restore minimized windows to current workspace", check "Draw window frame when hovering a button", uncheck "Switch windows using the mouse wheel", uncheck "Show windows from all workspaces", uncheck "Show only minimized windows", check "Show windows from all monitors"), a Separator (style "Transparent", but this time check "Expand"), a Status Tray Plugin (enable "Adjust size automatically", uncheck "Arrange items in a single row", uncheck "Hide items by default", uncheck "Square items", uncheck "Menu is primary action", uncheck "Request symbolic icons"), a Separator (style "Transparent", uncheck "Expand"), a Clock (leave "Timezone" and "Command" blank, select apperance layout "Digital", tooltip format "Thursday 25 April 2024", clock layout "Time Only", font "Sans Bold 11", format "23:55"), a Separator (style "Transparent", uncheck "Expand").
Now, in order to have the panel started on each Fluxbox session you open, insert the following two lines into your regular user's ~/.xsession file (between MANAGER and HANG POINT):
$ grep panel ~/.xsession # start panel xfce4-panel --disable-wm-check --sm-client-disable &
and disable the Fluxbox toolbar and its systray:
$ grep 'toolbar\.visible' ~/.fluxbox/init session.screen0.toolbar.visible: False $ grep 'toolbar\.tools' ~/.fluxbox/init session.screen0.toolbar.tools: workspacename, prevworkspace, nextworkspace, iconbar, prevwindow, nextwindow, clock
Install a nice system monitor and some auxiliary tools:
# aptitude install conky-std cowsay ddate
In order to configure the system monitor for your regular user, create the directory:
$ mkdir -p ~/.config/conky/
and edit ~/.config/conky/conky.conf so that it looks like:
$ cat ~/.config/conky/conky.conf -- vim: syntax=lua conky.config = { background = false, -- do not fork in the background font = '-*-terminus-*-r-*-*-12-*-*-*-*-*-iso10646-*', -- X font (w/o Xft) use_xft = false, -- do not use Xft update_interval = 2.0, -- update interval (in seconds) total_run_times = 0, -- run forever own_window = true, -- do not use root window, create own window instead own_window_type = 'override', -- desktop own window own_window_transparent = true, -- use pseudo transparency double_buffer = true, -- use double buffering minimum_width = 380, -- minimum width of text area draw_shades = true, -- draw shades draw_outline = false, -- do not draw outlines draw_borders = false, -- do not draw borders around text draw_graph_borders = true, -- draw borders around graphs stippled_borders = 8, -- stippled borders? border_inner_margin = 3, -- border margins and width border_outer_margin = 0, border_width = 1, default_color = 'white', -- default colors default_shade_color = 'black', default_outline_color = 'black', alignment = 'top_right', -- placement gap_x = 8, -- gap between borders of screen and text gap_y = 8, no_buffers = true, -- subtract file system buffers from used memory cpu_avg_samples = 2, -- number of cpu samples to average net_avg_samples = 2, -- number of net samples to average override_utf8_locale = true, -- need to force UTF8 use_spacer = 'left', -- add spaces to keep things from moving about text_buffer_size = 640, -- set buffer size (in bytes) for exec outputs if_up_strictness = 'address', -- set if_up check strictness }; -- stuff to be formatted on screen conky.text = [[ ${color green}Host:$color $nodename - $sysname $kernel on $machine $hr ${color green}Time:$color ${time %a, %d %b %Y %T %z}${color green} - Unix time:$color ${time %s} s ${color green}Uptime:$color $uptime ${color green}Load Average:$color $loadavg${color green} - Processes:$color $processes${color green} - Running:$color $running_processes ${color green}CPU usage %CPU %MEM RAM usage %CPU %MEM ${color} ${top name 1} ${top cpu 1} ${top mem 1} ${top_mem name 1} ${top_mem cpu 1} ${top_mem mem 1} ${color} ${top name 2} ${top cpu 2} ${top mem 2} ${top_mem name 2} ${top_mem cpu 2} ${top_mem mem 2} ${color} ${top name 3} ${top cpu 3} ${top mem 3} ${top_mem name 3} ${top_mem cpu 3} ${top_mem mem 3} ${color green}CPU Clock Frequencies:$color ${freq 1} MHz ${freq 2} MHz ${freq 3} MHz ${freq 4} MHz ${color green}CPU Usage:$color $cpu % ${cpubar 6,100}${color green} - Disk I/O:$color $diskio/s ${color lightgrey}${cpugraph 30,190 0000ff ff0000} ${diskiograph 30,190 0000ff ff0000} ${color green}RAM Usage: $color $mem/$memmax - $memperc % ${membar} ${color green}Swap Usage:$color $swap/$swapmax - $swapperc % ${swapbar} $hr ${color green}CPU Core Temperatures:$color ${hwmon coretemp temp 2 1 273} K ${hwmon coretemp temp 3 1 273} K ${hwmon coretemp temp 4 1 273} K ${hwmon coretemp temp 5 1 273} K ${color green}CPU Fan:$color ${hwmon nct6791 fan 2 0.10472 0} rad/s${color green} - Chassis Fan:$color ${hwmon nct6791 fan 3 0.10472 0} rad/s $hr ${color green}Network Ports:$color ${tcp_portmon 1 65535 count} ${if_up enp0s25}${color green} enp0s25 - Upstream:$color ${upspeedf enp0s25} KiB/s${color green} - Downstream:$color ${downspeedf enp0s25} KiB/s ${color lightgrey}${upspeedgraph enp0s25 30,190 0000ff ff0000} ${downspeedgraph enp0s25 30,190 0000ff ff0000}$endif $hr ${color green}Filesystems: ${color green} / $color${fs_used /}/${fs_size /} ${fs_bar /} ${color green} /usr $color${fs_used /usr}/${fs_size /usr} ${fs_bar /usr} ${color green} /var $color${fs_used /var}/${fs_size /var} ${fs_bar /var} ${color green} /tmp $color${fs_used /tmp}/${fs_size /tmp} ${fs_bar /tmp} ${color green} /home $color${fs_used /home}/${fs_size /home} ${fs_bar /home} $hr ${color green}${execi 50 ddate} ${color green}${execi 65000 fortune -s | tr -d '\b' | cowsay} ]];
Please note that coretemp and nct6791 are the hwmon device module names in our example workstation; you may find out the names of the hwmon device modules in yours, by issuing the following command:
$ tail -n 1 /sys/class/hwmon/hwmon*/name
Moreover, enp0s25 is the name of the primary network interface in our example workstation; you may issue the following command to find out the name of the primary network interface in yours:
$ /sbin/ifconfig
If you want to have the system monitor started on each Fluxbox session you open, insert the following two lines into your regular user's ~/.xsession file (between MANAGER and HANG POINT):
$ grep -A 1 'start system monitor' ~/.xsession # start system monitor sleep 1 && conky &
and the following two lines as well (after the HANG POINT):
$ grep -A 1 'stop system monitor' ~/.xsession # stop system monitor killall -TERM conky
Since you are the system administrator, you may want to read log files with your regular user (i.e.: without becoming root just for this). To make this possible, add your regular user (substitute $REGULARUSER with your username):
# adduser $REGULARUSER adm
The already installed system monitor can also be used to display log files on the desktop. Edit ~/.config/conky/tail.conf so that it looks like:
$ cat ~/.config/conky/tail.conf -- vim: syntax=lua conky.config = { background = false, -- do not fork in the background font = '-*-fixed-*-r-*-*-10-*-*-*-*-*-iso10646-*', -- X font (w/o Xft) use_xft = false, -- do not use Xft update_interval = 2.0, -- update interval (in seconds) total_run_times = 0, -- run forever own_window = true, -- do not use root window, create own window instead own_window_type = 'override', -- desktop own window own_window_transparent = true, -- use pseudo transparency double_buffer = true, -- use double buffering maximum_width = 920, -- maximum width of text area draw_shades = true, -- draw shades draw_outline = false, -- do not draw outlines draw_borders = false, -- do not draw borders around text draw_graph_borders = true, -- draw borders around graphs stippled_borders = 8, -- stippled borders? border_inner_margin = 3, -- border margins and width border_outer_margin = 0, border_width = 1, default_color = 'white', -- default colors default_shade_color = 'black', default_outline_color = 'black', alignment = 'top_left', -- placement gap_x = 8, -- gap between borders of screen and text gap_y = 8, no_buffers = true, -- subtract file system buffers from used memory cpu_avg_samples = 2, -- number of cpu samples to average net_avg_samples = 2, -- number of net samples to average override_utf8_locale = true, -- need to force UTF8 use_spacer = 'left', -- add spaces to keep things from moving about text_buffer_size = 640, -- set buffer size (in bytes) for exec outputs if_up_strictness = 'address', -- set if_up check strictness }; -- stuff to be formatted on screen conky.text = [[ ${color white}${exec tail -v -n 12 /var/log/kern.log 2> /dev/null} ${color yellow}${exec tail -v -n 12 /var/log/exim4/mainlog 2> /dev/null} ${color green}${exec tail -v -n 12 /var/log/syslog 2> /dev/null} ]];
In order to have this second instance started on each Fluxbox session you open, insert the following two lines into your regular user's ~/.xsession file (between MANAGER and HANG POINT, right before the other conky invocation):
$ grep -A 1 'start log monitoring' ~/.xsession # start log monitoring sleep 1 && conky -c ~/.config/conky/tail.conf &
Install a desktop notification daemon:
# aptitude install notification-daemon
You probably want to have this daemon started on each Fluxbox session you open. In order to achieve this, just insert the following two lines into your regular user's ~/.xsession file (between MANAGER and HANG POINT):
$ grep -A 1 'start notification' .xsession # start notification daemon /usr/lib/notification-daemon/notification-daemon &
and the following two lines as well (after the HANG POINT):
$ grep -A 1 'stop notification' .xsession # stop notification daemon killall -TERM notification-daemon
You may also wish to install a command-line program to send desktop notifications:
# aptitude install libnotify-bin
Install a little system tray icon to monitor software RAID changes:
# aptitude install systray-mdstat
If you want to have this notifier started on each Fluxbox session you open, insert the following two lines into your regular user's ~/.xsession file (between MANAGER and HANG POINT):
$ grep -A 1 'start mdstat notifier' ~/.xsession # start mdstat notifier systray-mdstat &
and the following two lines as well (after the HANG POINT):
$ grep -A 1 'stop mdstat notifier' ~/.xsession # stop mdstat notifier killall -TERM systray-mdstat
Install the following package:
# aptitude --without-recommends install meld
In order to be able to enter text in various alphabets, for various languages, insert the following two lines into your regular user's ~/.xsession file (between MANAGER and HANG POINT):
$ grep -A 1 'multilingual keyboard' ~/.xsession # configure multilingual keyboard setxkbmap us,ru,gr -option compose:menu,grp:alt_caps_toggle,grp_led:scroll
This way, you can easily cycle from a US keyboard layout to a Russian and to a Greek one, by pressing [Alt+CapsLock]. The "Scroll Lock" LED light will be on whenever a layout other then the US one is being used. Also, the [Menu] key is used as a "Compose" key, in order to enter accented letters and other special signs and symbols. See the following man page for all the possible options:
$ man xkeyboard-config
In order to use the above input method with GTK+ and QT graphical applications, install the following package:
# aptitude install im-config
Please note that you may find the compose key combinations in /usr/share/X11/locale/en_US.UTF-8/Compose.
Install some common files for desktop environments:
# aptitude install desktop-base
Install the following tools to view and fine tune the configuration of applications that use DConf:
# aptitude install dconf-cli dconf-editor
Install a small command-line tool to generate keyboard/mouse input events:
# aptitude install xdotool
Install a ruler to measure objects on the screen:
# aptitude install screenruler
Now you have a nice desktop to work in. Next step is installing and configuring some network tools. More details in a separate document (HTML, reST).