├── .scripts ├── weather ├── motd.sh ├── weather.sh └── motd ├── .fvwm ├── onReboot.sh ├── onShutdown.sh ├── images │ ├── sep.png │ ├── btnMenu.png │ ├── btnMenu_down.png │ ├── buttons │ │ ├── max.png │ │ ├── menu.png │ │ ├── min.png │ │ ├── res.png │ │ ├── close.png │ │ └── close-b.png │ ├── icons │ │ ├── apps.png │ │ ├── conf.png │ │ ├── help.png │ │ ├── light.png │ │ ├── quit.png │ │ ├── tpad.png │ │ ├── programs.png │ │ ├── refresh.png │ │ ├── restart.png │ │ ├── terminal.png │ │ ├── tpad-lid.png │ │ ├── tpad-mmb.png │ │ ├── light-off.png │ │ ├── wallpaper.png │ │ ├── tpad-lid-off.png │ │ └── tpad-mmb-scroll.png │ └── background │ │ ├── bg1.png │ │ ├── iso.png │ │ ├── bg-sgi.png │ │ ├── bg-sun.png │ │ ├── abstrakt.png │ │ ├── bg-sun2x.png │ │ ├── bg1-dark.png │ │ ├── bg-sgi-dark.png │ │ ├── bg-sgi-icon.png │ │ ├── bg-sun-dark.png │ │ ├── bg1-darker.png │ │ ├── ess-gee-eye.png │ │ ├── irix │ │ ├── Brain.png │ │ ├── Bulge.png │ │ ├── Burlap.png │ │ ├── Fabric.png │ │ ├── Linen.png │ │ ├── Nebula.png │ │ ├── Rhodo.png │ │ ├── Scales.png │ │ ├── Solid.png │ │ ├── Swirl.png │ │ ├── Wicker.png │ │ ├── Cracked.png │ │ ├── Crumpled.png │ │ ├── Granite.png │ │ ├── Moorish.png │ │ ├── Rockface.png │ │ ├── Scallop.png │ │ ├── Scatter.png │ │ ├── Scribble.png │ │ ├── Sprinkle.png │ │ ├── TidePool.png │ │ ├── Vertigo.png │ │ ├── Dither1x1.png │ │ ├── Dither2x2.png │ │ ├── EscherKnot.png │ │ ├── LunaPearl.png │ │ ├── ScatterBlue.png │ │ ├── VerdeMarble.png │ │ ├── Cirrostratus.png │ │ ├── ScatterGreen.png │ │ ├── ScatterPurple.png │ │ └── ScatterClassic.png │ │ ├── abstrakt-icon.png │ │ ├── bg-sun2x-dark.png │ │ └── bg-sgi-dark-icon.png ├── sounds │ ├── windowClose.mp3 │ ├── windowMove.mp3 │ ├── windowOpen.mp3 │ ├── windowSwitch.mp3 │ ├── windowMoveDone.mp3 │ ├── windowMoveIdle.mp3 │ ├── windowCloseShort.mp3 │ ├── windowOpenShort.mp3 │ ├── windowshadeClose.mp3 │ └── windowshadeOpen.mp3 ├── onSuspend.sh ├── onLock.sh ├── stalonetrayrc ├── FvwmScript-ConfirmQuit ├── FvwmScript-ConfirmReboot ├── FvwmScript-DateTime ├── FvwmScript-ConfirmShutdown └── config ├── .termbg.png ├── fetches.png ├── header.png ├── screenshot.png ├── .config ├── fish │ ├── functions │ │ ├── _tide_item_weather.fish │ │ └── _tide_item_free.fish │ └── config.fish ├── qt5ct │ └── colors │ │ └── Loopy.conf ├── rofi │ └── config.rasi └── dunst │ └── dunstrc ├── TODO ├── .urxvt └── ext │ └── vtewheel ├── .Xresources ├── .local └── share │ └── color-schemes │ └── Loopy.colors ├── Redmond97-theme.conf ├── README.md └── .xnedit └── nedit.rc /.scripts/weather: -------------------------------------------------------------------------------- 1 | ☀️ +75°F 2 | -------------------------------------------------------------------------------- /.fvwm/onReboot.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | systemctl reboot 3 | -------------------------------------------------------------------------------- /.fvwm/onShutdown.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | systemctl poweroff 3 | -------------------------------------------------------------------------------- /.termbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.termbg.png -------------------------------------------------------------------------------- /fetches.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/fetches.png -------------------------------------------------------------------------------- /header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/header.png -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/screenshot.png -------------------------------------------------------------------------------- /.fvwm/images/sep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/sep.png -------------------------------------------------------------------------------- /.fvwm/images/btnMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/btnMenu.png -------------------------------------------------------------------------------- /.fvwm/images/btnMenu_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/btnMenu_down.png -------------------------------------------------------------------------------- /.fvwm/images/buttons/max.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/buttons/max.png -------------------------------------------------------------------------------- /.fvwm/images/buttons/menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/buttons/menu.png -------------------------------------------------------------------------------- /.fvwm/images/buttons/min.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/buttons/min.png -------------------------------------------------------------------------------- /.fvwm/images/buttons/res.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/buttons/res.png -------------------------------------------------------------------------------- /.fvwm/images/icons/apps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/icons/apps.png -------------------------------------------------------------------------------- /.fvwm/images/icons/conf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/icons/conf.png -------------------------------------------------------------------------------- /.fvwm/images/icons/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/icons/help.png -------------------------------------------------------------------------------- /.fvwm/images/icons/light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/icons/light.png -------------------------------------------------------------------------------- /.fvwm/images/icons/quit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/icons/quit.png -------------------------------------------------------------------------------- /.fvwm/images/icons/tpad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/icons/tpad.png -------------------------------------------------------------------------------- /.fvwm/sounds/windowClose.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/sounds/windowClose.mp3 -------------------------------------------------------------------------------- /.fvwm/sounds/windowMove.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/sounds/windowMove.mp3 -------------------------------------------------------------------------------- /.fvwm/sounds/windowOpen.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/sounds/windowOpen.mp3 -------------------------------------------------------------------------------- /.fvwm/sounds/windowSwitch.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/sounds/windowSwitch.mp3 -------------------------------------------------------------------------------- /.fvwm/images/background/bg1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/bg1.png -------------------------------------------------------------------------------- /.fvwm/images/background/iso.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/iso.png -------------------------------------------------------------------------------- /.fvwm/images/buttons/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/buttons/close.png -------------------------------------------------------------------------------- /.fvwm/images/icons/programs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/icons/programs.png -------------------------------------------------------------------------------- /.fvwm/images/icons/refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/icons/refresh.png -------------------------------------------------------------------------------- /.fvwm/images/icons/restart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/icons/restart.png -------------------------------------------------------------------------------- /.fvwm/images/icons/terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/icons/terminal.png -------------------------------------------------------------------------------- /.fvwm/images/icons/tpad-lid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/icons/tpad-lid.png -------------------------------------------------------------------------------- /.fvwm/images/icons/tpad-mmb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/icons/tpad-mmb.png -------------------------------------------------------------------------------- /.fvwm/sounds/windowMoveDone.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/sounds/windowMoveDone.mp3 -------------------------------------------------------------------------------- /.fvwm/sounds/windowMoveIdle.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/sounds/windowMoveIdle.mp3 -------------------------------------------------------------------------------- /.fvwm/images/background/bg-sgi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/bg-sgi.png -------------------------------------------------------------------------------- /.fvwm/images/background/bg-sun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/bg-sun.png -------------------------------------------------------------------------------- /.fvwm/images/buttons/close-b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/buttons/close-b.png -------------------------------------------------------------------------------- /.fvwm/images/icons/light-off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/icons/light-off.png -------------------------------------------------------------------------------- /.fvwm/images/icons/wallpaper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/icons/wallpaper.png -------------------------------------------------------------------------------- /.fvwm/sounds/windowCloseShort.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/sounds/windowCloseShort.mp3 -------------------------------------------------------------------------------- /.fvwm/sounds/windowOpenShort.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/sounds/windowOpenShort.mp3 -------------------------------------------------------------------------------- /.fvwm/sounds/windowshadeClose.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/sounds/windowshadeClose.mp3 -------------------------------------------------------------------------------- /.fvwm/sounds/windowshadeOpen.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/sounds/windowshadeOpen.mp3 -------------------------------------------------------------------------------- /.fvwm/images/background/abstrakt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/abstrakt.png -------------------------------------------------------------------------------- /.fvwm/images/background/bg-sun2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/bg-sun2x.png -------------------------------------------------------------------------------- /.fvwm/images/background/bg1-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/bg1-dark.png -------------------------------------------------------------------------------- /.fvwm/images/icons/tpad-lid-off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/icons/tpad-lid-off.png -------------------------------------------------------------------------------- /.fvwm/images/background/bg-sgi-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/bg-sgi-dark.png -------------------------------------------------------------------------------- /.fvwm/images/background/bg-sgi-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/bg-sgi-icon.png -------------------------------------------------------------------------------- /.fvwm/images/background/bg-sun-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/bg-sun-dark.png -------------------------------------------------------------------------------- /.fvwm/images/background/bg1-darker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/bg1-darker.png -------------------------------------------------------------------------------- /.fvwm/images/background/ess-gee-eye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/ess-gee-eye.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Brain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Brain.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Bulge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Bulge.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Burlap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Burlap.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Fabric.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Fabric.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Linen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Linen.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Nebula.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Nebula.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Rhodo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Rhodo.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Scales.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Scales.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Solid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Solid.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Swirl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Swirl.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Wicker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Wicker.png -------------------------------------------------------------------------------- /.fvwm/images/icons/tpad-mmb-scroll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/icons/tpad-mmb-scroll.png -------------------------------------------------------------------------------- /.fvwm/images/background/abstrakt-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/abstrakt-icon.png -------------------------------------------------------------------------------- /.fvwm/images/background/bg-sun2x-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/bg-sun2x-dark.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Cracked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Cracked.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Crumpled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Crumpled.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Granite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Granite.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Moorish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Moorish.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Rockface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Rockface.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Scallop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Scallop.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Scatter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Scatter.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Scribble.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Scribble.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Sprinkle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Sprinkle.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/TidePool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/TidePool.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Vertigo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Vertigo.png -------------------------------------------------------------------------------- /.fvwm/onSuspend.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #XSECURELOCK_FONT="HCP Maru Gothic" XSECURELOCK_PASSWORD_PROMPT=disco xsecurelock && 3 | systemctl suspend 4 | -------------------------------------------------------------------------------- /.scripts/motd.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | cat ~/.scripts/motd | lolcat -p 0.7 3 | echo "\033[30m*whoosh*; you are now fox\033[0m" | lolcat -p 0.6 -i 4 | -------------------------------------------------------------------------------- /.config/fish/functions/_tide_item_weather.fish: -------------------------------------------------------------------------------- 1 | function _tide_item_weather 2 | _tide_print_item weather (cat ~/.scripts/weather) 3 | end 4 | -------------------------------------------------------------------------------- /.fvwm/images/background/bg-sgi-dark-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/bg-sgi-dark-icon.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Dither1x1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Dither1x1.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Dither2x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Dither2x2.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/EscherKnot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/EscherKnot.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/LunaPearl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/LunaPearl.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/ScatterBlue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/ScatterBlue.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/VerdeMarble.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/VerdeMarble.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/Cirrostratus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/Cirrostratus.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/ScatterGreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/ScatterGreen.png -------------------------------------------------------------------------------- /.fvwm/images/background/irix/ScatterPurple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/ScatterPurple.png -------------------------------------------------------------------------------- /.config/fish/functions/_tide_item_free.fish: -------------------------------------------------------------------------------- 1 | function _tide_item_free 2 | _tide_print_item free (free -h --giga | awk 'NR == 2 {print $7}') 3 | end 4 | -------------------------------------------------------------------------------- /.fvwm/images/background/irix/ScatterClassic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kokoscript/loopy-desktop/HEAD/.fvwm/images/background/irix/ScatterClassic.png -------------------------------------------------------------------------------- /.scripts/weather.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | temp=$(curl -sL wttr.in/\?format\="%c%t\n") 3 | if [ "$temp" != "" ]; then 4 | echo $temp > ~/.scripts/weather 5 | fi 6 | -------------------------------------------------------------------------------- /.scripts/motd: -------------------------------------------------------------------------------- 1 |    *'``・* 。 2 |   |     `*。 3 |  ,。∩^__^    * 4 | + (`・ω ・´) *。+゚ 5 | `*。 ヽ、  つ *゚* 6 |  `・+。*・' ゚⊃ +゚ 7 |  ☆   ∪~ 。*゚ 8 |   `・+。*・ ゚ 9 | -------------------------------------------------------------------------------- /.fvwm/onLock.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | XSECURELOCK_SHOW_DATETIME=1 XSECURELOCK_BLANK_TIMEOUT=10 XSECURELOCK_FONT="HCP Maru Gothic" XSECURELOCK_PASSWORD_PROMPT=disco xsecurelock 3 | -------------------------------------------------------------------------------- /.fvwm/stalonetrayrc: -------------------------------------------------------------------------------- 1 | decorations none 2 | geometry 6x1 3 | icon_size 24 4 | max_geometry 6x1 5 | parent_bg true 6 | transparent false 7 | icon_gravity W 8 | no_shrink true 9 | -------------------------------------------------------------------------------- /TODO: -------------------------------------------------------------------------------- 1 | - Merge fvwm config with the compact version currently on deepslate, make it an easy toggle 2 | - Merge fvwm config with the version currently on cmdblock (meta+mouse drags windows like in GNOME) 3 | - Investigate why some Qt programs are extremely wide (config bug? fvwm bug? qt bug?) 4 | -------------------------------------------------------------------------------- /.config/qt5ct/colors/Loopy.conf: -------------------------------------------------------------------------------- 1 | [ColorScheme] 2 | active_colors=#ffffffff, #ff444488, #ff6e6ec3, #ff6e6ec3, #ff222244, #ff2f2f5f, #ffffffff, #ffffffff, #ffffffff, #ff222244, #ff444488, #ff2f2f5f, #ffff77aa, #ff222244, #ff61f2dc, #ffc573dd, #ff333355, #ffffffff, #ff222244, #ffffffff, #ffffffff 3 | disabled_colors=#ff808080, #ff444488, #ff6e6ec3, #ff6e6ec3, #ff222244, #ff2f2f5f, #ff808080, #ffffffff, #ff808080, #ff222244, #ff444488, #ff2f2f5f, #ffff77aa, #ff808080, #ff61f2dc, #ffc573dd, #ff333355, #ffffffff, #ff222244, #ffffffff, #ffffffff 4 | inactive_colors=#ffffffff, #ff444488, #ff6e6ec3, #ff6e6ec3, #ff222244, #ff2f2f5f, #ffffffff, #ffffffff, #ffffffff, #ff222244, #ff444488, #ff2f2f5f, #ffff77aa, #ff222244, #ff61f2dc, #ffc573dd, #ff333355, #ffffffff, #ff222244, #ffffffff, #ffffffff 5 | -------------------------------------------------------------------------------- /.fvwm/FvwmScript-ConfirmQuit: -------------------------------------------------------------------------------- 1 | WindowTitle {ConfirmQuit} 2 | WindowSize 240 60 3 | Font "xft:Fixed:size=10:antialias=False" 4 | Init 5 | Begin 6 | End 7 | 8 | Widget 1 9 | Property 10 | Title {End your X session?} 11 | Size 240 30 12 | Position 13 0 13 | Type ItemDraw 14 | Flags NoReliefString 15 | Main 16 | Case message of 17 | SingleClic : 18 | Begin 19 | End 20 | End 21 | 22 | Widget 2 23 | Property 24 | Title {} 25 | Icon images/icons/quit.png 26 | Size 18 30 27 | Position 42 0 28 | Type ItemDraw 29 | Main 30 | Case message of 31 | SingleClic : 32 | Begin 33 | End 34 | End 35 | 36 | Widget 3 37 | Property 38 | Title {Yes} 39 | Size 60 16 40 | Position 40 30 41 | Flags NoReliefString 42 | Type PushButton 43 | Value 1 44 | Main 45 | Case message of 46 | SingleClic : 47 | Begin 48 | Do {Quit} 49 | End 50 | End 51 | 52 | Widget 4 53 | Property 54 | Title {No} 55 | Size 60 16 56 | Position 140 30 57 | Flags NoReliefString 58 | Type PushButton 59 | Value 1 60 | Main 61 | Case message of 62 | SingleClic : 63 | Begin 64 | Quit 65 | End 66 | End 67 | -------------------------------------------------------------------------------- /.fvwm/FvwmScript-ConfirmReboot: -------------------------------------------------------------------------------- 1 | WindowTitle {ConfirmReboot} 2 | WindowSize 240 60 3 | Font "xft:Fixed:size=10:antialias=False" 4 | Init 5 | Begin 6 | End 7 | 8 | Widget 1 9 | Property 10 | Title {Reboot the system?} 11 | Size 240 30 12 | Position 13 0 13 | Type ItemDraw 14 | Flags NoReliefString 15 | Main 16 | Case message of 17 | SingleClic : 18 | Begin 19 | End 20 | End 21 | 22 | Widget 2 23 | Property 24 | Title {} 25 | Icon images/icons/quit.png 26 | Size 18 30 27 | Position 42 0 28 | Type ItemDraw 29 | Main 30 | Case message of 31 | SingleClic : 32 | Begin 33 | End 34 | End 35 | 36 | Widget 3 37 | Property 38 | Title {Yes} 39 | Size 60 16 40 | Position 40 30 41 | Flags NoReliefString 42 | Type PushButton 43 | Value 1 44 | Main 45 | Case message of 46 | SingleClic : 47 | Begin 48 | Do {Exec ~/.fvwm/onReboot.sh} 49 | End 50 | End 51 | 52 | Widget 4 53 | Property 54 | Title {No} 55 | Size 60 16 56 | Position 140 30 57 | Flags NoReliefString 58 | Type PushButton 59 | Value 1 60 | Main 61 | Case message of 62 | SingleClic : 63 | Begin 64 | Quit 65 | End 66 | End 67 | -------------------------------------------------------------------------------- /.fvwm/FvwmScript-DateTime: -------------------------------------------------------------------------------- 1 | WindowTitle {DateTime} 2 | WindowSize 140 24 3 | Font "xft:Sans:size=10:antialias=False" 4 | 5 | Init 6 | Begin 7 | Set $Time = (GetOutput {exec date "+%H:%M"} 1 -1) 8 | Set $Date = (GetOutput {exec date "+%a %b %d"} 1 -1) 9 | 10 | ChangeTitle 1 $Time 11 | ChangeTitle 2 $Date 12 | End 13 | 14 | PeriodicTasks 15 | Begin 16 | If (RemainderOfDiv (GetTime) 15)==0 Then 17 | Begin 18 | Set $Time = (GetOutput {exec date "+%I:%M%P"} 1 -1) 19 | Set $Date = (GetOutput {exec date "+%D"} 1 -1) 20 | 21 | ChangeTitle 1 $Time 22 | ChangeTitle 2 $Date 23 | End 24 | End 25 | 26 | Widget 1 27 | Property 28 | Position 0 0 29 | Size 60 20 30 | Font "xft:Fixed:size=10:antialias=False" 31 | Type ItemDraw 32 | Flags NoReliefString 33 | Title {} 34 | Main 35 | Case message of 36 | SingleClic : 37 | Begin 38 | End 39 | End 40 | 41 | Widget 2 42 | Property 43 | Position 60 0 44 | Size 80 20 45 | Font "xft:Fixed:size=10:antialias=False" 46 | Type ItemDraw 47 | Flags NoReliefString 48 | Title {} 49 | Main 50 | Case message of 51 | SingleClic : 52 | Begin 53 | End 54 | End 55 | -------------------------------------------------------------------------------- /.fvwm/FvwmScript-ConfirmShutdown: -------------------------------------------------------------------------------- 1 | WindowTitle {ConfirmShutdown} 2 | WindowSize 240 60 3 | Font "xft:Fixed:size=10:antialias=False" 4 | Init 5 | Begin 6 | End 7 | 8 | Widget 1 9 | Property 10 | Title {Shut down the system?} 11 | Size 240 30 12 | Position 13 0 13 | Type ItemDraw 14 | Flags NoReliefString 15 | Main 16 | Case message of 17 | SingleClic : 18 | Begin 19 | End 20 | End 21 | 22 | Widget 2 23 | Property 24 | Title {} 25 | Icon images/icons/quit.png 26 | Size 18 30 27 | Position 42 0 28 | Type ItemDraw 29 | Main 30 | Case message of 31 | SingleClic : 32 | Begin 33 | End 34 | End 35 | 36 | Widget 3 37 | Property 38 | Title {Yes} 39 | Size 60 16 40 | Position 40 30 41 | Flags NoReliefString 42 | Type PushButton 43 | Value 1 44 | Main 45 | Case message of 46 | SingleClic : 47 | Begin 48 | Do {Exec ~/.fvwm/onShutdown.sh} 49 | End 50 | End 51 | 52 | Widget 4 53 | Property 54 | Title {No} 55 | Size 60 16 56 | Position 140 30 57 | Flags NoReliefString 58 | Type PushButton 59 | Value 1 60 | Main 61 | Case message of 62 | SingleClic : 63 | Begin 64 | Quit 65 | End 66 | End 67 | -------------------------------------------------------------------------------- /.urxvt/ext/vtewheel: -------------------------------------------------------------------------------- 1 | #! perl 2 | 3 | # from: https://aur.archlinux.org/cgit/aur.git/tree/vtwheel?h=urxvt-vtwheel 4 | 5 | # Implements a scrollwheel just like in good old vt100's mices 6 | 7 | sub simulate_keypress { 8 | my ($self, $type) = @_; #type: 0:up, 1:down 9 | 10 | my $keycode_up = 111; 11 | my $keycode_down = 116; 12 | 13 | my $numlines = 3; 14 | 15 | my $keycode = 0; 16 | if ($type eq 0) { 17 | $keycode = $keycode_up; 18 | } elsif ($type eq 1) { 19 | $keycode = $keycode_down; 20 | } else { 21 | return; 22 | } 23 | 24 | for (my $i = 0 ; $i ne $numlines ; $i++) { 25 | $self->key_press(0,$keycode); 26 | $self->key_release(0,$keycode); 27 | } 28 | } 29 | 30 | sub on_button_release { 31 | my ($self, $event) = @_; 32 | 33 | #my $res_ss = $self->resource("secondaryScroll"); 34 | #warn("ressource ss is <$res_ss>"); 35 | 36 | !$self->current_screen and return (); 37 | 38 | #warn("foo, event: <$event->{button}>\n"); 39 | if ($event->{button} eq "4") { # scroll up 40 | $self->simulate_keypress(0); 41 | return 1; 42 | } elsif ($event->{button} eq "5") { # scroll down 43 | $self->simulate_keypress(1); 44 | return 1; 45 | } 46 | 47 | return (); 48 | } 49 | -------------------------------------------------------------------------------- /.config/fish/config.fish: -------------------------------------------------------------------------------- 1 | function sudo 2 | if test "$argv" = !! 3 | eval command sudo $history[1] 4 | else 5 | command sudo $argv 6 | end 7 | end 8 | 9 | function fish_title 10 | if [ $_ = 'fish' ] 11 | echo (prompt_pwd -d 0) 12 | else 13 | echo $argv 14 | end 15 | end 16 | 17 | if status is-interactive 18 | fish_add_path ~/.scripts 19 | printf '\n%.0s' (seq 100) 20 | alias clear="clear && printf '\n%.0s' (seq 100)" 21 | alias c="printf '\n%.0s' (seq 100)" 22 | alias l='ls' 23 | alias s='sudo' 24 | ~/.scripts/motd.sh 25 | end 26 | 27 | set fish_greeting 28 | 29 | set --global tide_character_icon ※ 30 | set --global tide_context_always_display true 31 | set --global tide_left_prompt_items context pwd git newline character 32 | set --global tide_right_prompt_items jobs status cmd_duration free time weather 33 | #set --global tide_time_format %T\ %p\ 34 | 35 | set --global tide_weather_bg_color black 36 | set --global tide_weather_color brwhite 37 | set --global tide_time_bg_color white 38 | set --global tide_time_color black 39 | set --global tide_free_bg_color bryellow 40 | set --global tide_free_color black 41 | set --global tide_status_bg_color black 42 | set --global tide_status_color brgreen 43 | set --global tide_status_bg_color_failure bryellow 44 | set --global tide_status_color_failure red 45 | set --global tide_cmd_duration_bg_color black 46 | set --global tide_cmd_duration_color brwhite 47 | 48 | set --global tide_context_bg_color black 49 | set --global tide_context_color_default white 50 | set --global tide_context_color_ssh white 51 | set --global tide_context_color_root red 52 | set --global tide_pwd_bg_color brcyan 53 | set --global tide_pwd_color_anchors black 54 | set --global tide_pwd_color_dirs black 55 | set --global tide_pwd_color_truncated_dirs brblack 56 | set --global tide_character_color brcyan 57 | set --global tide_character_color_failure brred 58 | 59 | set --global tide_prompt_color_frame_and_connection white 60 | -------------------------------------------------------------------------------- /.Xresources: -------------------------------------------------------------------------------- 1 | ! -- NEdit/XNEdit -- 2 | ! fix colors, bump border shadow size down to 1px 3 | nedit*XmText.Foreground: #ffffff 4 | nedit*XmTextField.Foreground: #ffffff 5 | nedit*XmList.Foreground: #ffffff 6 | nedit*TopLevelShell*background: #444488 7 | nedit*XmPushButton.MarginWidth: 7 8 | nedit*XmPushButton.MarginHeight: 5 9 | nedit*XmToggleButton.MarginWidth: 5 10 | nedit*XmToggleButton.MarginHeight: 3 11 | nedit*ShadowThickness: 1 12 | nedit*TopShadowColor: #6e6ec3 13 | nedit*BottomShadowColor: #222244 14 | nedit*XmForm.ShadowThickness: 0 15 | nedit*font: 6x13 16 | 17 | ! -- URxvt -- 18 | ! scroll back to the bottom on keypress 19 | URxvt*scrollTtyKeypress: true 20 | 21 | ! better scrolling for stuff like less, man, vim/nano, etc. 22 | URxvt.secondaryScreen: 1 23 | URxvt.secondaryScroll: 0 24 | URxvt.saveLines: 99999 25 | 26 | ! reasonable keybindings for copy/paste 27 | URxvt.keysym.Shift-Control-V: eval:paste_clipboard 28 | URxvt.keysym.Shift-Control-C: eval:selection_to_clipboard 29 | URxvt.iso14755: false 30 | URxvt.iso14755_52: false 31 | 32 | URxvt.font: 6x13,xft:PowerlineSymbols:size=9 33 | URxvt.italicFont: 6x13 34 | 35 | URxvt.background: #222244 36 | URxvt.foreground: #ffffff 37 | URxvt.color0: #2f2a68 38 | URxvt.color1: #f06191 39 | URxvt.color2: #63e99a 40 | URxvt.color3: #ffe666 41 | URxvt.color4: #61f2dc 42 | URxvt.color5: #b043d1 43 | URxvt.color6: #61f2dc 44 | URxvt.color7: #eeeeec 45 | URxvt.color8: #38337f 46 | URxvt.color9: #f06191 47 | URxvt.color10: #63e99a 48 | URxvt.color11: #ffe666 49 | URxvt.color12: #61f2dc 50 | URxvt.color13: #c573dd 51 | URxvt.color14: #61f2dc 52 | URxvt.color15: #ffffff 53 | URxvt.cursorColor: #f06191 54 | ! you may need to change this to an absolute path in case the bg doesn't show up 55 | URxvt.pixmap: ~/.termbg.png;style=tiled 56 | 57 | URxvt.scrollBar_floating: 1 58 | URxvt.scrollBar_right: 1 59 | 60 | URxvt.perl-ext-common: default,matcher,tabbed,-confirm-paste,vtewheel 61 | 62 | ! links 63 | URxvt.url-launcher: /usr/bin/xdg-open 64 | URxvt.matcher.button: 1 65 | 66 | URxvt.tabbed.tabbar-fg: 15 67 | URxvt.tabbed.tabbar-bg: 0 68 | URxvt.tabbed.tab-fg: 11 69 | URxvt.tabbed.tab-bg: 0 70 | -------------------------------------------------------------------------------- /.local/share/color-schemes/Loopy.colors: -------------------------------------------------------------------------------- 1 | [ColorEffects:Disabled] 2 | Color=56,56,56 3 | ColorAmount=0 4 | ColorEffect=0 5 | ContrastAmount=0.65 6 | ContrastEffect=1 7 | IntensityAmount=0.1 8 | IntensityEffect=2 9 | 10 | [ColorEffects:Inactive] 11 | ChangeSelectionColor=true 12 | Color=112,111,110 13 | ColorAmount=0.025 14 | ColorEffect=2 15 | ContrastAmount=0.1 16 | ContrastEffect=2 17 | Enable=false 18 | IntensityAmount=0 19 | IntensityEffect=0 20 | 21 | [Colors:Button] 22 | BackgroundAlternate=47,47,95 23 | BackgroundNormal=68,68,136 24 | DecorationFocus=61,174,233 25 | DecorationHover=61,174,233 26 | ForegroundActive=255,119,170 27 | ForegroundInactive=255,255,255 28 | ForegroundLink=97,242,220 29 | ForegroundNegative=218,68,83 30 | ForegroundNeutral=246,116,0 31 | ForegroundNormal=255,255,255 32 | ForegroundPositive=39,174,96 33 | ForegroundVisited=197,115,220 34 | 35 | [Colors:Complementary] 36 | BackgroundAlternate=17,17,51 37 | BackgroundNormal=34,34,68 38 | DecorationFocus=30,146,255 39 | DecorationHover=61,174,230 40 | ForegroundActive=255,119,170 41 | ForegroundInactive=255,255,255 42 | ForegroundLink=97,242,220 43 | ForegroundNegative=237,21,21 44 | ForegroundNeutral=201,206,59 45 | ForegroundNormal=255,255,255 46 | ForegroundPositive=17,209,22 47 | ForegroundVisited=197,115,220 48 | 49 | [Colors:Selection] 50 | BackgroundAlternate=221,85,136 51 | BackgroundNormal=255,119,170 52 | DecorationFocus=61,174,233 53 | DecorationHover=61,174,233 54 | ForegroundActive=252,252,252 55 | ForegroundInactive=34,34,68 56 | ForegroundLink=34,34,68 57 | ForegroundNegative=218,68,83 58 | ForegroundNeutral=246,116,0 59 | ForegroundNormal=34,34,68 60 | ForegroundPositive=39,174,96 61 | ForegroundVisited=34,34,68 62 | 63 | [Colors:Tooltip] 64 | BackgroundAlternate=17,17,51 65 | BackgroundNormal=34,34,68 66 | DecorationFocus=61,174,233 67 | DecorationHover=61,174,233 68 | ForegroundActive=255,119,170 69 | ForegroundInactive=255,255,255 70 | ForegroundLink=97,242,220 71 | ForegroundNegative=218,68,83 72 | ForegroundNeutral=246,116,0 73 | ForegroundNormal=255,255,255 74 | ForegroundPositive=39,174,96 75 | ForegroundVisited=197,115,220 76 | 77 | [Colors:View] 78 | BackgroundAlternate=34,34,68 79 | BackgroundNormal=47,47,95 80 | DecorationFocus=61,174,233 81 | DecorationHover=61,174,233 82 | ForegroundActive=255,119,170 83 | ForegroundInactive=255,255,255 84 | ForegroundLink=97,242,220 85 | ForegroundNegative=218,68,83 86 | ForegroundNeutral=246,116,0 87 | ForegroundNormal=255,255,255 88 | ForegroundPositive=39,174,96 89 | ForegroundVisited=197,115,220 90 | 91 | [Colors:Window] 92 | BackgroundAlternate=47,47,95 93 | BackgroundNormal=68,68,136 94 | DecorationFocus=61,174,233 95 | DecorationHover=61,174,233 96 | ForegroundActive=255,119,170 97 | ForegroundInactive=255,255,255 98 | ForegroundLink=97,242,220 99 | ForegroundNegative=218,68,83 100 | ForegroundNeutral=246,116,0 101 | ForegroundNormal=239,240,241 102 | ForegroundPositive=39,174,96 103 | ForegroundVisited=197,115,220 104 | 105 | [General] 106 | ColorScheme=Loopy 107 | Name=Loopy 108 | shadeSortColumn=true 109 | 110 | [KDE] 111 | contrast=4 112 | 113 | [WM] 114 | activeBackground=49,54,59 115 | activeBlend=255,255,255 116 | activeForeground=239,240,241 117 | inactiveBackground=49,54,59 118 | inactiveBlend=75,71,67 119 | inactiveForeground=127,140,141 120 | -------------------------------------------------------------------------------- /Redmond97-theme.conf: -------------------------------------------------------------------------------- 1 | ####################################################### 2 | # Basic theme settings and colors. # 3 | # Valid color codes are three or six digit hex codes # 4 | # and RGB color codes (R,G,B) 0-255,0-255,0-255 # 5 | # Note: Second titlebar colors optional. Only applies # 6 | # to metacity-1 and not XFWM4. # 7 | ####################################################### 8 | Theme_name="Millennium XP" 9 | 10 | #Window Text Color: 11 | fgcolor="#fff" 12 | 13 | #Window background color: 14 | bgcolor="#448" 15 | 16 | #Textview background color (such as editors or framed objects): 17 | basecolor="#224" 18 | 19 | #Textview text color: 20 | basefg="#fff" 21 | 22 | #Selected background color: 23 | selectedbg="#f7a" 24 | 25 | #Selected text color: 26 | selectedtext="#fff" 27 | 28 | #Focused titlebar text color: 29 | activetitletext="#fff" 30 | 31 | #Unfocused titlebar text color: 32 | inactivetitletext="#fff" 33 | 34 | #Active titlebar color 35 | activetitle="#559" 36 | activetitle1="#000060" 37 | 38 | #Inactive titlebar color: 39 | inactivetitle="#337" 40 | inactivetitle1="#d4d0c8" 41 | 42 | # 3D odject border color: 43 | border="#000" 44 | 45 | ############################### 46 | # Advanced settings # 47 | ############################### 48 | 49 | ####################################################### 50 | # CSD Style # 51 | # 0 styles CSD header as a title bar #default # 52 | # 1 styles CSD header as a regular toolbar # 53 | # Set this to 1 if you disabled CSD decorations. # 54 | ####################################################### 55 | 56 | csd_style="1" 57 | 58 | ################################################################# 59 | # Color saturation # 60 | # Sets saturation to all selected colors. Setting to # 61 | # "0" removes all colors and creates a grey scale color scheme. # 62 | # 1 is normal saturation and greater than 1 adds color # 63 | # saturation. Note: setting level to 1 disables saturation # 64 | # calculations and speeds up calculation time. Valid settings # 65 | # are 0 - 2, in intervals of 0.1. # 66 | ################################################################# 67 | 68 | saturation_level="1" 69 | 70 | 71 | ######################################################################## 72 | # RGB channel overdrive. # 73 | # Adds an amount of red, green, or blue to every selected color above. # 74 | # Setting a value to 1 adds 100% of that color to every selected # 75 | # color. Setting a negative value reduces the amount of the color. # 76 | # For example setting window_G="-1" completely removes the color # 77 | # green from every selected color. Valid settings are -1 to 1, in # 78 | # intervals of 0.1. Note: The script only clips and does not compress # 79 | # RGB color channels so setting all values to 1 will make everything # 80 | # white and setting all values to -1 will make everything black # 81 | # An example: window_R="0" window_B="-1" window_G="-1" will set a # 82 | # red monochrome color scheme to the generated theme. # 83 | ######################################################################## 84 | 85 | #Enable channel overdrive. 86 | enable_overdrive="false" 87 | 88 | #Color channel gain 89 | window_R="0.1" 90 | window_G="-0.1" 91 | window_B="-0.2" 92 | 93 | ######################################################################### 94 | # 3D shadow and disabled fg color brightness levels. # 95 | # Sets brightness level of shadows for 3D objects. # 96 | # Values above 1 add brightness, values below 1 reduce brightness # 97 | # Valid values are 0 through 2.0, in intervals of 0.1. # 98 | ######################################################################### 99 | 100 | #3D Highlight shadow brightness: 101 | highlight_multiplier="1.25" 102 | 103 | #3D Shadow brightness: 104 | shadow_multiplier="0.7" 105 | 106 | #Disabled text brightness: 107 | disabled_fg_multiplier="0.8" 108 | 109 | #################################################################################### 110 | # 3D Shadow Color gain # 111 | # Adjusts the gain of the red, green, or blue channels on calculated 3d object # 112 | # highlight shadows and dark shadows. Useful for adjusting for dark backgrounds or # 113 | # window background colors biased towards one RGB channel. Note: If RGB channel # 114 | # overdrive is enabled these gains will add to the overdrive gain for 3D shadows. # # 115 | # Valid settings are -1 through 1, in intervals of 0.1. # 116 | #################################################################################### 117 | 118 | #Highlight or "light shadow" color gain 119 | 120 | #Example: setting hl_R="0.5" increases the of red on 3D highlights by 50%. Setting all values to 1 121 | #makes the highlight or light shadow color white. Setting a value negative reduces the color. 122 | 123 | #Light shadow color gain [ Red, Green, Blue ] 124 | hl_R="0.1" 125 | hl_G="0.1" 126 | hl_B="0.1" 127 | 128 | #Dark shadow color gain [ Red, Green, Blue ] 129 | s_R="0" 130 | s_G="0" 131 | s_B="0" 132 | 133 | ########################################################################## 134 | # High contrast mode # 135 | # Sets window decoration borders and buttons to border color. useful for # 136 | # dark themes with light border colors. Uses fg color to calculate # 137 | # disabled text color instead of the window bg color. Be sure to change # 138 | # the border color to a lighter color such as #fff. # 139 | ########################################################################## 140 | 141 | high_contrast="false" 142 | 143 | ##################################################################### 144 | # Whisker menu options # 145 | # The default setting adds a gradient color bar next to the menu. # 146 | # Enable the alternate menu to disable the gradient bar. # 147 | ##################################################################### 148 | 149 | #Set to "true" to disable gradient side bar 150 | enable_alternate_menu="false" 151 | 152 | #Text to display next to the menu 153 | menu_side_text="Redmond97" 154 | 155 | #Width of sidebar gradient in px 156 | menu_side_width="23" 157 | 158 | #Font size of sidebar text 159 | menu_side_text_size="23" 160 | 161 | #Offset of the sidebar text. Format is "px bottom","px left" 162 | menu_side_text_offset="10,22" 163 | 164 | 165 | -------------------------------------------------------------------------------- /.config/rofi/config.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | modi: "drun,window,run,ssh"; 3 | font: "Helvetica Bold Italic 12"; 4 | /* location: 0;*/ 5 | /* yoffset: 0;*/ 6 | /* xoffset: 0;*/ 7 | /* fixed-num-lines: true;*/ 8 | show-icons: true; 9 | /* terminal: "rofi-sensible-terminal";*/ 10 | /* ssh-client: "ssh";*/ 11 | /* ssh-command: "{terminal} -e {ssh-client} {host} [-p {port}]";*/ 12 | /* run-command: "{cmd}";*/ 13 | /* run-list-command: "";*/ 14 | /* run-shell-command: "{terminal} -e {cmd}";*/ 15 | /* window-command: "wmctrl -i -R {window}";*/ 16 | /* window-match-fields: "all";*/ 17 | /* icon-theme: ;*/ 18 | /* drun-match-fields: "name,generic,exec,categories,keywords";*/ 19 | /* drun-categories: ;*/ 20 | /* drun-show-actions: false;*/ 21 | /* drun-display-format: "{name} [({generic})]";*/ 22 | /* drun-url-launcher: "xdg-open";*/ 23 | /* disable-history: false;*/ 24 | /* ignored-prefixes: "";*/ 25 | /* sort: false;*/ 26 | /* sorting-method: "normal";*/ 27 | /* case-sensitive: false;*/ 28 | /* cycle: true;*/ 29 | /* sidebar-mode: false;*/ 30 | /* hover-select: false;*/ 31 | /* eh: 1;*/ 32 | /* auto-select: false;*/ 33 | /* parse-hosts: false;*/ 34 | /* parse-known-hosts: true;*/ 35 | /* combi-modi: "window,run";*/ 36 | /* matching: "normal";*/ 37 | /* tokenize: true;*/ 38 | /* m: "-5";*/ 39 | /* filter: ;*/ 40 | /* dpi: -1;*/ 41 | /* threads: 0;*/ 42 | /* scroll-method: 0;*/ 43 | /* window-format: "{w} {c} {t}";*/ 44 | /* click-to-exit: true;*/ 45 | /* theme: ;*/ 46 | /* max-history-size: 25;*/ 47 | /* combi-hide-mode-prefix: false;*/ 48 | /* matching-negate-char: '-' /* unsupported */;*/ 49 | /* cache-dir: ;*/ 50 | /* window-thumbnail: false;*/ 51 | /* drun-use-desktop-cache: false;*/ 52 | /* drun-reload-desktop-cache: false;*/ 53 | /* normalize-match: false;*/ 54 | /* steal-focus: false;*/ 55 | /* application-fallback-icon: ;*/ 56 | /* pid: "/run/user/1000/rofi.pid";*/ 57 | /* display-window: ;*/ 58 | /* display-windowcd: ;*/ 59 | /* display-run: ;*/ 60 | /* display-ssh: ;*/ 61 | /* display-drun: ;*/ 62 | /* display-combi: ;*/ 63 | /* display-keys: ;*/ 64 | /* display-filebrowser: ;*/ 65 | /* kb-primary-paste: "Control+V,Shift+Insert";*/ 66 | /* kb-secondary-paste: "Control+v,Insert";*/ 67 | /* kb-clear-line: "Control+w";*/ 68 | /* kb-move-front: "Control+a";*/ 69 | /* kb-move-end: "Control+e";*/ 70 | /* kb-move-word-back: "Alt+b,Control+Left";*/ 71 | /* kb-move-word-forward: "Alt+f,Control+Right";*/ 72 | /* kb-move-char-back: "Left,Control+b";*/ 73 | /* kb-move-char-forward: "Right,Control+f";*/ 74 | /* kb-remove-word-back: "Control+Alt+h,Control+BackSpace";*/ 75 | /* kb-remove-word-forward: "Control+Alt+d";*/ 76 | /* kb-remove-char-forward: "Delete,Control+d";*/ 77 | /* kb-remove-char-back: "BackSpace,Shift+BackSpace,Control+h";*/ 78 | /* kb-remove-to-eol: "Control+k";*/ 79 | /* kb-remove-to-sol: "Control+u";*/ 80 | /* kb-accept-entry: "Control+j,Control+m,Return,KP_Enter";*/ 81 | /* kb-accept-custom: "Control+Return";*/ 82 | /* kb-accept-custom-alt: "Control+Shift+Return";*/ 83 | /* kb-accept-alt: "Shift+Return";*/ 84 | /* kb-delete-entry: "Shift+Delete";*/ 85 | /* kb-mode-next: "Shift+Right,Control+Tab";*/ 86 | /* kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab";*/ 87 | /* kb-mode-complete: "Control+l";*/ 88 | /* kb-row-left: "Control+Page_Up";*/ 89 | /* kb-row-right: "Control+Page_Down";*/ 90 | /* kb-row-up: "Up,Control+p,ISO_Left_Tab";*/ 91 | /* kb-row-down: "Down,Control+n";*/ 92 | /* kb-row-tab: "Tab";*/ 93 | /* kb-page-prev: "Page_Up";*/ 94 | /* kb-page-next: "Page_Down";*/ 95 | /* kb-row-first: "Home,KP_Home";*/ 96 | /* kb-row-last: "End,KP_End";*/ 97 | /* kb-row-select: "Control+space";*/ 98 | /* kb-screenshot: "Alt+S";*/ 99 | /* kb-ellipsize: "Alt+period";*/ 100 | /* kb-toggle-case-sensitivity: "grave,dead_grave";*/ 101 | /* kb-toggle-sort: "Alt+grave";*/ 102 | /* kb-cancel: "Escape,Control+g,Control+bracketleft";*/ 103 | /* kb-custom-1: "Alt+1";*/ 104 | /* kb-custom-2: "Alt+2";*/ 105 | /* kb-custom-3: "Alt+3";*/ 106 | /* kb-custom-4: "Alt+4";*/ 107 | /* kb-custom-5: "Alt+5";*/ 108 | /* kb-custom-6: "Alt+6";*/ 109 | /* kb-custom-7: "Alt+7";*/ 110 | /* kb-custom-8: "Alt+8";*/ 111 | /* kb-custom-9: "Alt+9";*/ 112 | /* kb-custom-10: "Alt+0";*/ 113 | /* kb-custom-11: "Alt+exclam";*/ 114 | /* kb-custom-12: "Alt+at";*/ 115 | /* kb-custom-13: "Alt+numbersign";*/ 116 | /* kb-custom-14: "Alt+dollar";*/ 117 | /* kb-custom-15: "Alt+percent";*/ 118 | /* kb-custom-16: "Alt+dead_circumflex";*/ 119 | /* kb-custom-17: "Alt+ampersand";*/ 120 | /* kb-custom-18: "Alt+asterisk";*/ 121 | /* kb-custom-19: "Alt+parenleft";*/ 122 | /* kb-select-1: "Super+1";*/ 123 | /* kb-select-2: "Super+2";*/ 124 | /* kb-select-3: "Super+3";*/ 125 | /* kb-select-4: "Super+4";*/ 126 | /* kb-select-5: "Super+5";*/ 127 | /* kb-select-6: "Super+6";*/ 128 | /* kb-select-7: "Super+7";*/ 129 | /* kb-select-8: "Super+8";*/ 130 | /* kb-select-9: "Super+9";*/ 131 | /* kb-select-10: "Super+0";*/ 132 | /* ml-row-left: "ScrollLeft";*/ 133 | /* ml-row-right: "ScrollRight";*/ 134 | /* ml-row-up: "ScrollUp";*/ 135 | /* ml-row-down: "ScrollDown";*/ 136 | /* me-select-entry: "MousePrimary";*/ 137 | /* me-accept-entry: "MouseDPrimary";*/ 138 | /* me-accept-custom: "Control+MouseDPrimary";*/ 139 | timeout { 140 | action: "kb-cancel"; 141 | delay: 0; 142 | } 143 | filebrowser { 144 | directories-first: true; 145 | sorting-method: "name"; 146 | } 147 | } 148 | 149 | * { 150 | selected-normal-foreground: #333355; 151 | foreground: rgba ( 255, 255, 255, 100 % ); 152 | normal-foreground: @foreground; 153 | alternate-normal-background: transparent; 154 | red: rgba ( 220, 50, 47, 100 % ); 155 | selected-urgent-foreground: rgba ( 255, 195, 156, 100 % ); 156 | blue: rgba ( 38, 139, 210, 100 % ); 157 | urgent-foreground: rgba ( 243, 132, 61, 100 % ); 158 | alternate-urgent-background: transparent; 159 | active-foreground: rgba ( 38, 139, 210, 100 % ); 160 | lightbg: rgba ( 238, 232, 213, 100 % ); 161 | selected-active-foreground: rgba ( 32, 81, 113, 100 % ); 162 | alternate-active-background: transparent; 163 | background: transparent; 164 | bordercolor: rgba ( 57, 57, 57, 100 % ); 165 | alternate-normal-foreground: @foreground; 166 | normal-background: transparent; 167 | lightfg: rgba ( 88, 104, 117, 100 % ); 168 | selected-normal-background: #FF77AA; 169 | border-color: #222244; 170 | spacing: 2; 171 | separatorcolor: #333355; 172 | urgent-background: transparent; 173 | selected-urgent-background: rgba ( 38, 139, 210, 100 % ); 174 | alternate-urgent-foreground: @urgent-foreground; 175 | background-color: rgba ( 0, 0, 0, 0 % ); 176 | alternate-active-foreground: @active-foreground; 177 | active-background: rgba ( 57, 57, 57, 100 % ); 178 | selected-active-background: rgba ( 38, 139, 210, 100 % ); 179 | } 180 | window { 181 | background-color: #444488; 182 | border: 2; 183 | padding: 5; 184 | width: 360px; 185 | } 186 | mainbox { 187 | border: 0; 188 | padding: 0; 189 | } 190 | message { 191 | border: 1px dash 0px 0px ; 192 | border-color: @separatorcolor; 193 | padding: 1px ; 194 | } 195 | textbox { 196 | text-color: @foreground; 197 | } 198 | listview { 199 | fixed-height: 0; 200 | border: 1px dash 0px 0px ; 201 | border-color: @separatorcolor; 202 | spacing: 2px ; 203 | scrollbar: true; 204 | padding: 4px 0px 0px ; 205 | } 206 | element { 207 | border: 0; 208 | padding: 1px ; 209 | } 210 | element-text { 211 | background-color: inherit; 212 | text-color: inherit; 213 | } 214 | element.normal.normal { 215 | background-color: @normal-background; 216 | text-color: @normal-foreground; 217 | } 218 | element.normal.urgent { 219 | background-color: @urgent-background; 220 | text-color: @urgent-foreground; 221 | } 222 | element.normal.active { 223 | background-color: @active-background; 224 | text-color: @active-foreground; 225 | } 226 | element.selected.normal { 227 | background-color: @selected-normal-background; 228 | text-color: @selected-normal-foreground; 229 | } 230 | element.selected.urgent { 231 | background-color: @selected-urgent-background; 232 | text-color: @selected-urgent-foreground; 233 | } 234 | element.selected.active { 235 | background-color: @selected-active-background; 236 | text-color: @selected-active-foreground; 237 | } 238 | element.alternate.normal { 239 | background-color: @alternate-normal-background; 240 | text-color: @alternate-normal-foreground; 241 | } 242 | element.alternate.urgent { 243 | background-color: @alternate-urgent-background; 244 | text-color: @alternate-urgent-foreground; 245 | } 246 | element.alternate.active { 247 | background-color: @alternate-active-background; 248 | text-color: @alternate-active-foreground; 249 | } 250 | scrollbar { 251 | width: 4px ; 252 | border: 0; 253 | handle-width: 8px ; 254 | padding: 0; 255 | } 256 | mode-switcher { 257 | border: 2px dash 0px 0px ; 258 | border-color: @separatorcolor; 259 | } 260 | button.selected { 261 | background-color: @selected-normal-background; 262 | text-color: @selected-normal-foreground; 263 | } 264 | button { 265 | background-color: @background; 266 | text-color: @foreground; 267 | } 268 | inputbar { 269 | spacing: 0; 270 | text-color: @normal-foreground; 271 | padding: 1px ; 272 | } 273 | case-indicator { 274 | spacing: 0; 275 | text-color: @normal-foreground; 276 | } 277 | entry { 278 | spacing: 0; 279 | placeholder: ""; 280 | text-color: @normal-foreground; 281 | } 282 | prompt { 283 | enabled: false; 284 | spacing: 0; 285 | text-color: @normal-foreground; 286 | } 287 | inputbar { 288 | children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; 289 | } 290 | textbox-prompt-colon { 291 | enabled: false; 292 | expand: false; 293 | str: ":"; 294 | margin: 0px 0.3em 0em 0em ; 295 | text-color: @normal-foreground; 296 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ![loopy-desktop](header.png) 2 | 3 | **Long intro:** loopy-desktop is a comprehensive IRIX-like, dark-purple-with-pink-and-cyan-accents desktop theme for fvwm3 and more. Its name comes from the [Casio Loopy game console](https://en.wikipedia.org/wiki/Casio_Loopy), of which the color scheme also came from. 4 | 5 | **Short intro:** These are my dotfiles. 6 | 7 | ![screenshot of loopy-desktop](screenshot.png) 8 | 9 | Please read through this entire README before applying parts of the theme. Issues clearly opened without reading through it beforehand will be closed. 10 | 11 | ## Recommended Programs 12 | 13 | Feel free to use alternatives, but keep in mind not all programs will use the standard GTK/Qt themes and may require manual theming. If you create a theme for a program not covered by loopy-desktop, feel free to make a PR. 14 | 15 | - **Window manger:** fvwm3 (see notes) 16 | - **Terminal:** rxvt-unicode 17 | - **Shell:** fish (see notes) 18 | - **Dock/Panel:** xfce4-panel (plus [xfce4-docklike-plugin](https://gitlab.xfce.org/panel-plugins/xfce4-docklike-plugin/)) 19 | - **Launcher:** rofi 20 | - **Notifications:** dunst 21 | - **File manager:** PCManFM or Thunar 22 | - **Text editor:** XNEdit 23 | - **Theme applicators:** lxappearance + qt5ct 24 | 25 | ## Install Notes 26 | 27 | ### FVWM 28 | 29 | loopy-desktop practically revolves around fvwm3; if you want to use a different window manager, your window decorations will not look correct after applying the GTK/Qt themes. Most distros package fvwm2 as just 'fvwm', so make sure to specify 'fvwm3' or check the version of 'fvwm' in your package manager before installing. Distributions such as Debian don't package fvwm3 (*yet!*), so in that case you'll need to install it manually from the [releases](https://github.com/fvwmorg/fvwm3/releases). [More details on that](https://github.com/fvwmorg/fvwm3/blob/master/dev-docs/INSTALL.md); take note of the section titled "Installing From Release Tarball". 30 | 31 | The config included here is the one I use on a daily basis, so you might want to change a few things. 32 | 33 | - Nearly all virtual desktop features have been removed; if it's something you rely on, you'll need to add it all back in by comparing with fvwm's default config. 34 | - Some of the Platinum sound effects from MacOS have been added, and require mpg123 to be played. If you hate the idea of sound effects, comment out the following: 35 | - In StartFunction, `+ I Module FvwmEvent EventSounds` 36 | - In RaiseMoveX, `+ M PlaySound windowMoveDone.mp3` 37 | - In Thumbnail, `+ I PlaySound windowClose.mp3` 38 | - EwmhBaseStruts defines what space is avoided when creating new windows or maximizing them. In my case, I have 30 pixels at the top of my primary monitor (`DVI-D-0`) reserved for xfce4-panel. You will definitely need to change this; If you have a single screen, remove the `screen DVI-D-0` portion entirely. If you have multiple monitors, use `xrandr -q` to list your display names, find your preferred monitor, and replace `DVI-D-0` with that. 39 | - The locking mechanism in `onLock.sh` and `onSuspend.sh` assumes you have [xsecurelock+xss-lock installed and configured properly](https://github.com/google/xsecurelock). In my case, xss-lock handles locking before suspend via `~/.Xsession`. You'll want to edit these scripts, either to switch the screen locker entirely, or to tweak the appearance of XSL. 40 | 41 | Some notes on shortcuts: 42 | 43 | - Since screen-edge-resizing (I refuse to call it "Aero Snap", okay?) isn't really a thing in FVWM, I've set up a sort-of tiling system via the arrow keys/keypad. All shortcuts will toggle between the desired shape and the window's original shape. 44 | - **Super+Left/Right or Keypad4/6:** Left/right sides 45 | - **Super+Up or Keypad5:** Maximize 46 | - **Super+Down:** Upper-left corner (for those without a keypad) 47 | - **Super+Keypad8/2:** Upper/lower 48 | - **Super+Keypad7/9/1/3:** Corners 49 | - **Super+Space** will open rofi as an application launcher. 50 | - Do mouse bindings count as shortcuts? Here are some useful ones: 51 | - Double-click titlebars to maximize/restore 52 | - Right-click titlebars to shade 53 | - Middle-click+drag window borders to move them 54 | 55 | Installation for the fvwm config is simple; remove `.fvwm` from your home directory, then copy `.fvwm` from the repository to your home. 56 | 57 | ### Qt 58 | 59 | This covers almost every Qt-based program under the sun, including the KDE ones such as Kdenlive and Krita. It comes in two parts: a qt5ct theme, and a KDE color scheme. Place `.config/qt5ct/colors/Loopy.conf` and `.local/share/color-schemes/Loopy.colors` into their respective locations in your home directory, creating the directories as necessary if they don't exist. Use qt5ct to set the style to "Windows", and the palette to "Custom", selecting "Loopy" in the dropdown. You should also set your fonts and icon theme here (see the notes on those in the "Not Included" section). 60 | 61 | Some Qt-based programs won't have the theme applied right away. You'll need to look around in the settings for a theme option, and select "qt5ct" there. Apps like Kdenlive and Krita won't get the colors from qt5ct, and that's where the .colors file comes in; listed along with Breeze, Breeze Dark, etc. will be the Loopy colorset. 62 | 63 | ### rxvt-unicode 64 | 65 | Copy `.Xresources`, `.termBG.png`, and `.urxvt` to your home directory. Run `xrdb ~/.Xresources` to apply. 66 | 67 | ### XNEdit 68 | 69 | [XNEdit](https://github.com/unixwork/xnedit) is a somewhat-modern fork of NEdit. Its predecessor's life as the default IRIX text editor helps it fit nicely into loopy-desktop. To apply the theme, copy `.Xresources` and `.xnedit` to your home directory. Run `xrdb ~/.Xresources` to apply, if you haven't already. 70 | 71 | ### Fish 72 | 73 | I actually don't know why I made this a part of loopy-desktop. I guess I was anticipating people asking for my shell setup? 74 | 75 | Anyway, you'll need Fish along with the [Tide](https://github.com/IlanCosman/tide) prompt. Copy the contents of `.config/fish` over once you've finished installing that. You'll also need to copy over `.scripts` to your home directory for the MOTD and weather scripts; add a cronjob to run `weather.sh` every hour. 76 | 77 | If you don't want to switch over to Fish and are currently using Zsh, check out [powerlevel10k](https://github.com/romkatv/powerlevel10k). Although it's a bit... *much*, you should be able to configure the prompt to look like the one in the screenshot. 78 | 79 | ### Rofi 80 | 81 | Self explanatory; copy `.config/rofi/config.rasi` where it belongs. 82 | 83 | ## Not Included 84 | 85 | Some components of the theme couldn't be included here for one reason or another. 86 | 87 | ### GTK 88 | 89 | loopy-desktop uses a modified version of the [Redmond97 theme](https://github.com/matthewmx86/Redmond97). You'll need to do the following in order to install it: 90 | 91 | 1. Install imagemagick. 92 | 2. Clone the [Redmond97 repository](https://github.com/matthewmx86/Redmond97) locally. 93 | 3. In Extras/Theme_Builder/base.tar.gz, edit /gtk-3.0/settings.ini, remove the line starting with `gtk-icon-theme-name`. In /index.theme, remove the line starting with `IconTheme=`. 94 | 4. In Extras/Theme_Builder, delete theme.conf and replace it with the one in this repository, renaming as necessary. 95 | 5. In the same directory, run `gen_theme.sh`. Use lxappearance to set the theme. 96 | 97 | **Note:** Many applications won't look correct until you install gdk2-engines-pixbuf, or your distro's equivalent package. 98 | 99 | ### Fonts 100 | 101 | You *technically* already have all of the fonts needed, provided you have xfonts-base and xfonts-75dpi installed (with the exception of HCP Maru Gothic, which I used for xsecurelock). There's a bit more setup involved to get them available to most applications, though; 102 | 103 | - Remove `/etc/fonts/conf.d/70-no-bitmaps.conf`, or whatever the equivalent is in your distro. 104 | - Use fontforge to convert the following fonts to .otb. Save them somewhere in your home directory. 105 | - `/usr/share/fonts/X11/75dpi/helvR12.pcf.gz`, `/usr/share/fonts/X11/75dpi/helvR14.pcf.gz` 106 | - You could do the rest of the sizes, but I've found these two work well enough for most cases. 107 | - `/usr/share/fonts/X11/misc/6x13.pcf.gz` 108 | - `/usr/share/fonts/X11/misc/8x16.pcf.gz` 109 | - You can skip this one if you want; provides a slightly bigger monospace font 110 | - `/usr/share/fonts/X11/misc/10x20.pcf.gz` 111 | - You can skip this one if you want; provides an even larger monospace font 112 | - Move the .otb files you've just created to the appropriate locations. For example, `helvR12.otb` would go in `/usr/share/fonts/X11/75dpi`, and `6x13.otb` would go in `/usr/share/fonts/X11/misc`. 113 | - Run `sudo fc-cache -fv` 114 | 115 | **Note:** You can also batch convert every font containing 'helv' with some very light bash/fontforge scripting. This'll give you many more options for font sizes, but it isn't required. Same goes for a lot of the X11 misc fixed fonts, but you may need to do those one at a time (otherwise you'll end up with *a lot* of symbol fonts). In the future, I may add a small helper script to complete this step. 116 | 117 | Then use lxappearance to set the font to "Helvetica Medium 9", and qt5ct to set the general font to the same. qt5ct also has a setting for the fixed width font; set that to "Fixed", with whatever size you'd like (based on which fixed width fonts you ended up converting). 118 | 119 | Though the system generally uses the bitmap fonts in places that make sense, there's sometimes a bit of leakage; for example, web browsers will continue to render pages as intended with proper font anti-aliasing, but will disable it for text that's to be rendered with Helvetica. It's not that big of a problem though, as web designers seem to be getting tired of it. If you *do* want Firefox to use bitmap fonts in pages, check Settings for the "Fonts" subheading, and click "Advanced...". There you can set your sans-serif font to Helvetica, and your monospace font to Fixed. (One of the fonts in X11's misc fonts provides Times, so you can use that for the serif font once you've converted it to otb.) 120 | 121 | ### Firefox 122 | 123 | [Theme available here.](https://addons.mozilla.org/en-US/firefox/addon/loopy/) 124 | 125 | ### VSCode 126 | 127 | [Theme available here.](https://marketplace.visualstudio.com/items?itemName=kokoscript.loopytheme) 128 | 129 | ### Icons 130 | 131 | There is no specific icon theme associated with loopy-desktop. I recommend using the [Papirus icon theme](https://github.com/PapirusDevelopmentTeam/papirus-icon-theme) since it has somewhat-vibrant colors that work well with the purple, but realistically any theme should work. 132 | 133 | If you end up using Papirus, use the `papirus-folders` tool and play around with the colors; either cyan or pink should work best. 134 | 135 | (*Sidenote: I originally wanted to create an IRIX-like icon theme to go along with loopy-desktop, but realized it would take far too much of my time- even with scripts to practically make the theme for me- so I've shelved it for now. Once I do create it, if at all, it'll be added.*) 136 | 137 | ### Cursors 138 | 139 | To revert to the basic X11 cursors, edit `~/.icons/default/index.theme`, clearing out the value after `Inherits=`. Do the same with `~/.config/gtk-3.0/settings.ini`, but with the `gtk-cursor-theme-name` variable. **You'll need to do this *after* you've finished using lxappearance, otherwise cursors will be reset to the system default.** 140 | 141 | In the case that the basic X11 cursors *still* don't show up, edit the .theme files in `/etc/X11/cursors`, clearing the value of `Inherits` for each as before. 142 | 143 | ### WINE programs 144 | 145 | Wine can make use of older Windows themes through `winecfg`. A [version of the Loopy colorscheme I made for Windows](https://kokoscript.com/depot/themes/kokoscript-loopy.Theme) appears to work nicely with it. Once you've downloaded it, open the "Desktop Integration" tab, click "Install Theme...", and browse to the theme file. 146 | 147 | ## That's it! 148 | 149 | If you have any suggestions or problems (**after reading everything here**), feel free to open an issue. If you have any *improvements*, feel free to open a PR. Comments can be left anywhere that isn't the issues page. Please. 150 | 151 | ### ...but I'm on Windows! :( 152 | 153 | Hope you're on Windows XP or earlier, because [this is all I've got](https://kokoscript.com/depot/themes/kokoscript-loopy.Theme). 154 | 155 | ### ...but I'm on (Classic) MacOS! :\( 156 | 157 | I swear I have a version of loopy for Kaleidoscope ready to go, I've just never posted it anywhere lol 158 | 159 | ### ...but I'm on Haiku! :\( 160 | 161 | [Loopy for Haiku!](https://github.com/kokoscript/loopy-haiku) 162 | -------------------------------------------------------------------------------- /.config/dunst/dunstrc: -------------------------------------------------------------------------------- 1 | # See dunst(5) for all configuration options 2 | 3 | [global] 4 | ### Display ### 5 | 6 | # Which monitor should the notifications be displayed on. 7 | monitor = 0 8 | 9 | # Display notification on focused monitor. Possible modes are: 10 | # mouse: follow mouse pointer 11 | # keyboard: follow window with keyboard focus 12 | # none: don't follow anything 13 | # 14 | # "keyboard" needs a window manager that exports the 15 | # _NET_ACTIVE_WINDOW property. 16 | # This should be the case for almost all modern window managers. 17 | # 18 | # If this option is set to mouse or keyboard, the monitor option 19 | # will be ignored. 20 | follow = none 21 | 22 | ### Geometry ### 23 | 24 | # dynamic width from 0 to 300 25 | # width = (0, 300) 26 | # constant width of 300 27 | width = 300 28 | 29 | # The maximum height of a single notification, excluding the frame. 30 | height = 300 31 | 32 | # Position the notification in the top right corner 33 | origin = top-right 34 | 35 | # Offset from the origin 36 | offset = 10x38 37 | 38 | # Scale factor. It is auto-detected if value is 0. 39 | scale = 0 40 | 41 | # Maximum number of notification (0 means no limit) 42 | notification_limit = 0 43 | 44 | ### Progress bar ### 45 | 46 | # Turn on the progess bar. It appears when a progress hint is passed with 47 | # for example dunstify -h int:value:12 48 | progress_bar = true 49 | 50 | # Set the progress bar height. This includes the frame, so make sure 51 | # it's at least twice as big as the frame width. 52 | progress_bar_height = 6 53 | 54 | # Set the frame width of the progress bar 55 | progress_bar_frame_width = 1 56 | 57 | # Set the minimum width for the progress bar 58 | progress_bar_min_width = 150 59 | 60 | # Set the maximum width for the progress bar 61 | progress_bar_max_width = 300 62 | 63 | 64 | # Show how many messages are currently hidden (because of 65 | # notification_limit). 66 | indicate_hidden = yes 67 | 68 | # The transparency of the window. Range: [0; 100]. 69 | # This option will only work if a compositing window manager is 70 | # present (e.g. xcompmgr, compiz, etc.). (X11 only) 71 | transparency = 0 72 | 73 | # Draw a line of "separator_height" pixel height between two 74 | # notifications. 75 | # Set to 0 to disable. 76 | separator_height = 1 77 | 78 | # Padding between text and separator. 79 | padding = 8 80 | 81 | # Horizontal padding. 82 | horizontal_padding = 4 83 | 84 | # Padding between text and icon. 85 | text_icon_padding = 0 86 | 87 | # Defines width in pixels of frame around the notification window. 88 | # Set to 0 to disable. 89 | frame_width = 1 90 | 91 | # Defines color of the frame around the notification window. 92 | frame_color = "#111133" 93 | highlight = "#ff77aa" 94 | # Define a color for the separator. 95 | # possible values are: 96 | # * auto: dunst tries to find a color fitting to the background; 97 | # * foreground: use the same color as the foreground; 98 | # * frame: use the same color as the frame; 99 | # * anything else will be interpreted as a X color. 100 | separator_color = frame 101 | 102 | # Sort messages by urgency. 103 | sort = yes 104 | 105 | # Don't remove messages, if the user is idle (no mouse or keyboard input) 106 | # for longer than idle_threshold seconds. 107 | # Set to 0 to disable. 108 | # A client can set the 'transient' hint to bypass this. See the rules 109 | # section for how to disable this if necessary 110 | # idle_threshold = 60 111 | 112 | ### Text ### 113 | 114 | font = Helvetica 9 115 | 116 | # The spacing between lines. If the height is smaller than the 117 | # font height, it will get raised to the font height. 118 | line_height = 0 119 | 120 | # Possible values are: 121 | # full: Allow a small subset of html markup in notifications: 122 | # bold 123 | # italic 124 | # strikethrough 125 | # underline 126 | # 127 | # For a complete reference see 128 | # . 129 | # 130 | # strip: This setting is provided for compatibility with some broken 131 | # clients that send markup even though it's not enabled on the 132 | # server. Dunst will try to strip the markup but the parsing is 133 | # simplistic so using this option outside of matching rules for 134 | # specific applications *IS GREATLY DISCOURAGED*. 135 | # 136 | # no: Disable markup parsing, incoming notifications will be treated as 137 | # plain text. Dunst will not advertise that it has the body-markup 138 | # capability if this is set as a global setting. 139 | # 140 | # It's important to note that markup inside the format option will be parsed 141 | # regardless of what this is set to. 142 | markup = full 143 | 144 | # The format of the message. Possible variables are: 145 | # %a appname 146 | # %s summary 147 | # %b body 148 | # %i iconname (including its path) 149 | # %I iconname (without its path) 150 | # %p progress value if set ([ 0%] to [100%]) or nothing 151 | # %n progress value if set without any extra characters 152 | # %% Literal % 153 | # Markup is allowed 154 | format = "%s\n%b" 155 | 156 | # Alignment of message text. 157 | # Possible values are "left", "center" and "right". 158 | alignment = left 159 | 160 | # Vertical alignment of message text and icon. 161 | # Possible values are "top", "center" and "bottom". 162 | vertical_alignment = top 163 | 164 | # Show age of message if message is older than show_age_threshold 165 | # seconds. 166 | # Set to -1 to disable. 167 | show_age_threshold = 60 168 | 169 | # Specify where to make an ellipsis in long lines. 170 | # Possible values are "start", "middle" and "end". 171 | ellipsize = middle 172 | 173 | # Ignore newlines '\n' in notifications. 174 | ignore_newline = no 175 | 176 | # Stack together notifications with the same content 177 | stack_duplicates = true 178 | 179 | # Hide the count of stacked notifications with the same content 180 | hide_duplicate_count = false 181 | 182 | # Display indicators for URLs (U) and actions (A). 183 | show_indicators = yes 184 | 185 | ### Icons ### 186 | 187 | # Align icons left/right/top/off 188 | icon_position = left 189 | 190 | # Scale small icons up to this size, set to 0 to disable. Helpful 191 | # for e.g. small files or high-dpi screens. In case of conflict, 192 | # max_icon_size takes precedence over this. 193 | min_icon_size = 32 194 | 195 | # Scale larger icons down to this size, set to 0 to disable 196 | max_icon_size = 32 197 | 198 | # Paths to default icons. 199 | icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/ 200 | 201 | ### History ### 202 | 203 | # Should a notification popped up from history be sticky or timeout 204 | # as if it would normally do. 205 | sticky_history = yes 206 | 207 | # Maximum amount of notifications kept in history 208 | history_length = 20 209 | 210 | ### Misc/Advanced ### 211 | 212 | # dmenu path. 213 | #dmenu = /usr/bin/dmenu -p dunst: 214 | 215 | # Browser for opening urls in context menu. 216 | browser = /usr/bin/xdg-open 217 | 218 | # Always run rule-defined scripts, even if the notification is suppressed 219 | always_run_script = true 220 | 221 | # Define the title of the windows spawned by dunst 222 | title = Dunst 223 | 224 | # Define the class of the windows spawned by dunst 225 | class = Dunst 226 | 227 | # Define the corner radius of the notification window 228 | # in pixel size. If the radius is 0, you have no rounded 229 | # corners. 230 | # The radius will be automatically lowered if it exceeds half of the 231 | # notification height to avoid clipping text and/or icons. 232 | corner_radius = 0 233 | 234 | # Ignore the dbus closeNotification message. 235 | # Useful to enforce the timeout set by dunst configuration. Without this 236 | # parameter, an application may close the notification sent before the 237 | # user defined timeout. 238 | ignore_dbusclose = false 239 | 240 | ### Wayland ### 241 | # These settings are Wayland-specific. They have no effect when using X11 242 | 243 | # Uncomment this if you want to let notications appear under fullscreen 244 | # applications (default: overlay) 245 | # layer = top 246 | 247 | # Set this to true to use X11 output on Wayland. 248 | force_xwayland = false 249 | 250 | ### Legacy 251 | 252 | # Use the Xinerama extension instead of RandR for multi-monitor support. 253 | # This setting is provided for compatibility with older nVidia drivers that 254 | # do not support RandR and using it on systems that support RandR is highly 255 | # discouraged. 256 | # 257 | # By enabling this setting dunst will not be able to detect when a monitor 258 | # is connected or disconnected which might break follow mode if the screen 259 | # layout changes. 260 | force_xinerama = false 261 | 262 | ### mouse 263 | 264 | # Defines list of actions for each mouse event 265 | # Possible values are: 266 | # * none: Don't do anything. 267 | # * do_action: Invoke the action determined by the action_name rule. If there is no 268 | # such action, open the context menu. 269 | # * open_url: If the notification has exactly one url, open it. If there are multiple 270 | # ones, open the context menu. 271 | # * close_current: Close current notification. 272 | # * close_all: Close all notifications. 273 | # * context: Open context menu for the notification. 274 | # * context_all: Open context menu for all notifications. 275 | # These values can be strung together for each mouse event, and 276 | # will be executed in sequence. 277 | mouse_left_click = close_current 278 | mouse_middle_click = do_action, close_current 279 | mouse_right_click = close_all 280 | 281 | # Experimental features that may or may not work correctly. Do not expect them 282 | # to have a consistent behaviour across releases. 283 | [experimental] 284 | # Calculate the dpi to use on a per-monitor basis. 285 | # If this setting is enabled the Xft.dpi value will be ignored and instead 286 | # dunst will attempt to calculate an appropriate dpi value for each monitor 287 | # using the resolution and physical size. This might be useful in setups 288 | # where there are multiple screens with very different dpi values. 289 | per_monitor_dpi = false 290 | 291 | 292 | [urgency_low] 293 | # IMPORTANT: colors have to be defined in quotation marks. 294 | # Otherwise the "#" and following would be interpreted as a comment. 295 | background = "#222244" 296 | foreground = "#ffffff" 297 | timeout = 10 298 | # Icon for notifications with low urgency, uncomment to enable 299 | #default_icon = /path/to/icon 300 | 301 | [urgency_normal] 302 | background = "#222244" 303 | foreground = "#ffffff" 304 | timeout = 10 305 | # Icon for notifications with normal urgency, uncomment to enable 306 | #default_icon = /path/to/icon 307 | 308 | [urgency_critical] 309 | background = "#222244" 310 | foreground = "#ffffff" 311 | frame_color = "#ff0000" 312 | timeout = 0 313 | # Icon for notifications with critical urgency, uncomment to enable 314 | #default_icon = /path/to/icon 315 | 316 | # Every section that isn't one of the above is interpreted as a rules to 317 | # override settings for certain messages. 318 | # 319 | # Messages can be matched by 320 | # appname (discouraged, see desktop_entry) 321 | # body 322 | # category 323 | # desktop_entry 324 | # icon 325 | # match_transient 326 | # msg_urgency 327 | # stack_tag 328 | # summary 329 | # 330 | # and you can override the 331 | # background 332 | # foreground 333 | # format 334 | # frame_color 335 | # fullscreen 336 | # new_icon 337 | # set_stack_tag 338 | # set_transient 339 | # set_category 340 | # timeout 341 | # urgency 342 | # icon_position 343 | # skip_display 344 | # history_ignore 345 | # action_name 346 | # word_wrap 347 | # ellipsize 348 | # alignment 349 | # hide_text 350 | # 351 | # Shell-like globbing will get expanded. 352 | # 353 | # Instead of the appname filter, it's recommended to use the desktop_entry filter. 354 | # GLib based applications export their desktop-entry name. In comparison to the appname, 355 | # the desktop-entry won't get localized. 356 | # 357 | # SCRIPTING 358 | # You can specify a script that gets run when the rule matches by 359 | # setting the "script" option. 360 | # The script will be called as follows: 361 | # script appname summary body icon urgency 362 | # where urgency can be "LOW", "NORMAL" or "CRITICAL". 363 | # 364 | # NOTE: It might be helpful to run dunst -print in a terminal in order 365 | # to find fitting options for rules. 366 | 367 | # Disable the transient hint so that idle_threshold cannot be bypassed from the 368 | # client 369 | #[transient_disable] 370 | # match_transient = yes 371 | # set_transient = no 372 | # 373 | # Make the handling of transient notifications more strict by making them not 374 | # be placed in history. 375 | #[transient_history_ignore] 376 | # match_transient = yes 377 | # history_ignore = yes 378 | 379 | # fullscreen values 380 | # show: show the notifications, regardless if there is a fullscreen window opened 381 | # delay: displays the new notification, if there is no fullscreen window active 382 | # If the notification is already drawn, it won't get undrawn. 383 | # pushback: same as delay, but when switching into fullscreen, the notification will get 384 | # withdrawn from screen again and will get delayed like a new notification 385 | #[fullscreen_delay_everything] 386 | # fullscreen = delay 387 | #[fullscreen_show_critical] 388 | # msg_urgency = critical 389 | # fullscreen = show 390 | 391 | #[espeak] 392 | # summary = "*" 393 | # script = dunst_espeak.sh 394 | 395 | #[script-test] 396 | # summary = "*script*" 397 | # script = dunst_test.sh 398 | 399 | #[ignore] 400 | # # This notification will not be displayed 401 | # summary = "foobar" 402 | # skip_display = true 403 | 404 | #[history-ignore] 405 | # # This notification will not be saved in history 406 | # summary = "foobar" 407 | # history_ignore = yes 408 | 409 | #[skip-display] 410 | # # This notification will not be displayed, but will be included in the history 411 | # summary = "foobar" 412 | # skip_display = yes 413 | 414 | #[signed_on] 415 | # appname = Pidgin 416 | # summary = "*signed on*" 417 | # urgency = low 418 | # 419 | #[signed_off] 420 | # appname = Pidgin 421 | # summary = *signed off* 422 | # urgency = low 423 | # 424 | #[says] 425 | # appname = Pidgin 426 | # summary = *says* 427 | # urgency = critical 428 | # 429 | #[twitter] 430 | # appname = Pidgin 431 | # summary = *twitter.com* 432 | # urgency = normal 433 | # 434 | #[stack-volumes] 435 | # appname = "some_volume_notifiers" 436 | # set_stack_tag = "volume" 437 | # 438 | # vim: ft=cfg 439 | -------------------------------------------------------------------------------- /.xnedit/nedit.rc: -------------------------------------------------------------------------------- 1 | ! Preferences file for NEdit 2 | ! (User settings in X "application defaults" format) 3 | ! 4 | ! This file is overwritten by the "Save Defaults..." command in NEdit 5 | ! and serves only the interactively settable options presented in the NEdit 6 | ! "Preferences" menu. To modify other options, such as key bindings, use 7 | ! the .Xdefaults file in your home directory (or the X resource 8 | ! specification method appropriate to your system). The contents of this 9 | ! file can be moved into an X resource file, but since resources in this file 10 | ! override their corresponding X resources, either this file should be 11 | ! deleted or individual resource lines in the file should be deleted for the 12 | ! moved lines to take effect. 13 | 14 | nedit.fileVersion: 6.2 15 | nedit.shellCommands: \ 16 | spell:Alt+B:s:EX:\n\ 17 | cat>spellTmp; xterm -e ispell -x spellTmp; cat spellTmp; rm spellTmp\n\ 18 | wc::w:ED:\n\ 19 | wc | awk '{print $1 " lines, " $2 " words, " $3 " characters"}'\n\ 20 | sort::o:EX:\n\ 21 | sort\n\ 22 | number lines::n:AW:\n\ 23 | nl -ba\n\ 24 | make:Alt+Z:m:W:\n\ 25 | make\n\ 26 | expand::p:EX:\n\ 27 | expand\n\ 28 | unexpand::u:EX:\n\ 29 | unexpand\n 30 | nedit.macroCommands: \ 31 | Complete Word:Alt+D::: {\n\ 32 | # This macro attempts to complete the current word by\n\ 33 | # finding another word in the same document that has\n\ 34 | # the same prefix; repeated invocations of the macro\n\ 35 | # (by repeated typing of its accelerator, say) cycles\n\ 36 | # through the alternatives found.\n\ 37 | # \n\ 38 | # Make sure $compWord contains something (a dummy index)\n\ 39 | $compWord[""] = ""\n\ 40 | \n\ 41 | # Test whether the rest of $compWord has been initialized:\n\ 42 | # this avoids having to initialize the global variable\n\ 43 | # $compWord in an external macro file\n\ 44 | if (!("wordEnd" in $compWord)) {\n\ 45 | # we need to initialize it\n\ 46 | $compWord["wordEnd"] = 0\n\ 47 | $compWord["repeat"] = 0\n\ 48 | $compWord["init"] = 0\n\ 49 | $compWord["wordStart"] = 0\n\ 50 | }\n\ 51 | \n\ 52 | if ($compWord["wordEnd"] == $cursor) {\n\ 53 | $compWord["repeat"] += 1\n\ 54 | }\n\ 55 | else {\n\ 56 | $compWord["repeat"] = 1\n\ 57 | $compWord["init"] = $cursor\n\ 58 | \n\ 59 | # search back to a word boundary to find the word to complete\n\ 60 | # (we use \\w here to allow for programming "words" that can include\n\ 61 | # digits and underscores; use \\l for letters only)\n\ 62 | $compWord["wordStart"] = search("<\\\\w+", $cursor, "backward", "regex", "wrap")\n\ 63 | \n\ 64 | if ($compWord["wordStart"] == -1)\n\ 65 | return\n\ 66 | \n\ 67 | if ($search_end == $cursor)\n\ 68 | $compWord["word"] = get_range($compWord["wordStart"], $cursor)\n\ 69 | else\n\ 70 | return\n\ 71 | }\n\ 72 | s = $cursor\n\ 73 | for (i=0; i <= $compWord["repeat"]; i++)\n\ 74 | s = search($compWord["word"], s - 1, "backward", "regex", "wrap")\n\ 75 | \n\ 76 | if (s == $compWord["wordStart"]) {\n\ 77 | beep()\n\ 78 | $compWord["repeat"] = 0\n\ 79 | s = $compWord["wordStart"]\n\ 80 | se = $compWord["init"]\n\ 81 | }\n\ 82 | else\n\ 83 | se = search(">", s, "regex")\n\ 84 | \n\ 85 | replace_range($compWord["wordStart"], $cursor, get_range(s, se))\n\ 86 | \n\ 87 | $compWord["wordEnd"] = $cursor\n\ 88 | }\n\ 89 | Fill Sel. w/Char:::R: {\n\ 90 | # This macro replaces each character position in\n\ 91 | # the selection with the string typed into the dialog\n\ 92 | # it displays.\n\ 93 | if ($selection_start == -1) {\n\ 94 | beep()\n\ 95 | return\n\ 96 | }\n\ 97 | \n\ 98 | # Ask the user what character to fill with\n\ 99 | fillChar = string_dialog("Fill selection with what character?", \\\n\ 100 | "OK", "Cancel")\n\ 101 | if ($string_dialog_button == 2 || $string_dialog_button == 0)\n\ 102 | return\n\ 103 | \n\ 104 | # Count the number of lines (NL characters) in the selection\n\ 105 | # (by removing all non-NLs in selection and counting the remainder)\n\ 106 | nLines = length(replace_in_string(get_selection(), \\\n\ 107 | "^.*$", "", "regex"))\n\ 108 | \n\ 109 | rectangular = $selection_left != -1\n\ 110 | \n\ 111 | # work out the pieces of required of the replacement text\n\ 112 | # this will be top mid bot where top is empty or ends in NL,\n\ 113 | # mid is 0 or more lines of repeats ending with NL, and\n\ 114 | # bot is 0 or more repeats of the fillChar\n\ 115 | \n\ 116 | toplen = -1 # top piece by default empty (no NL)\n\ 117 | midlen = 0\n\ 118 | botlen = 0\n\ 119 | \n\ 120 | if (rectangular) {\n\ 121 | # just fill the rectangle: mid\\n \\ nLines\n\ 122 | # mid\\n /\n\ 123 | # bot - last line with no nl\n\ 124 | midlen = $selection_right - $selection_left\n\ 125 | botlen = $selection_right - $selection_left\n\ 126 | } else {\n\ 127 | # |col[0]\n\ 128 | # .........toptoptop\\n |col[0]\n\ 129 | # either midmidmidmidmidmid\\n \\ nLines - 1 or ...botbot...\n\ 130 | # midmidmidmidmidmid\\n / |col[1]\n\ 131 | # botbot... |\n\ 132 | # |col[1] |wrap margin\n\ 133 | # we need column positions col[0], col[1] of selection start and\n\ 134 | # end (use a loop and arrays to do the two positions)\n\ 135 | sel[0] = $selection_start\n\ 136 | sel[1] = $selection_end\n\ 137 | \n\ 138 | # col[0] = pos_to_column($selection_start)\n\ 139 | # col[1] = pos_to_column($selection_end)\n\ 140 | \n\ 141 | for (i = 0; i < 2; ++i) {\n\ 142 | end = sel[i]\n\ 143 | pos = search("^", end, "regex", "backward")\n\ 144 | thisCol = 0\n\ 145 | while (pos < end) {\n\ 146 | nexttab = search("\\t", pos)\n\ 147 | if (nexttab < 0 || nexttab >= end) {\n\ 148 | thisCol += end - pos # count remaining non-tabs\n\ 149 | nexttab = end\n\ 150 | } else {\n\ 151 | thisCol += nexttab - pos + $tab_dist\n\ 152 | thisCol -= (thisCol % $tab_dist)\n\ 153 | }\n\ 154 | pos = nexttab + 1 # skip past the tab or end\n\ 155 | }\n\ 156 | col[i] = thisCol\n\ 157 | }\n\ 158 | toplen = max($wrap_margin - col[0], 0)\n\ 159 | botlen = min(col[1], $wrap_margin)\n\ 160 | \n\ 161 | if (nLines == 0) {\n\ 162 | toplen = -1\n\ 163 | botlen = max(botlen - col[0], 0)\n\ 164 | } else {\n\ 165 | midlen = $wrap_margin\n\ 166 | if (toplen < 0)\n\ 167 | toplen = 0\n\ 168 | nLines-- # top piece will end in a NL\n\ 169 | }\n\ 170 | }\n\ 171 | \n\ 172 | # Create the fill text\n\ 173 | # which is the longest piece? make a line of that length\n\ 174 | # (use string doubling - this allows the piece to be\n\ 175 | # appended to double in size at each iteration)\n\ 176 | \n\ 177 | len = max(toplen, midlen, botlen)\n\ 178 | charlen = length(fillChar) # maybe more than one char given!\n\ 179 | \n\ 180 | line = ""\n\ 181 | while (len > 0) {\n\ 182 | if (len % 2)\n\ 183 | line = line fillChar\n\ 184 | len /= 2\n\ 185 | if (len > 0)\n\ 186 | fillChar = fillChar fillChar\n\ 187 | }\n\ 188 | # assemble our pieces\n\ 189 | toppiece = ""\n\ 190 | midpiece = ""\n\ 191 | botpiece = ""\n\ 192 | if (toplen >= 0)\n\ 193 | toppiece = substring(line, 0, toplen * charlen) "\\n"\n\ 194 | if (botlen > 0)\n\ 195 | botpiece = substring(line, 0, botlen * charlen)\n\ 196 | \n\ 197 | # assemble midpiece (use doubling again)\n\ 198 | line = substring(line, 0, midlen * charlen) "\\n"\n\ 199 | while (nLines > 0) {\n\ 200 | if (nLines % 2)\n\ 201 | midpiece = midpiece line\n\ 202 | nLines /= 2\n\ 203 | if (nLines > 0)\n\ 204 | line = line line\n\ 205 | }\n\ 206 | # Replace the selection with the complete fill text\n\ 207 | replace_selection(toppiece midpiece botpiece)\n\ 208 | }\n\ 209 | Comments>/* Comment */@C@C++@Java@CSS@JavaScript@Lex:::R: {\n\ 210 | selStart = $selection_start\n\ 211 | selEnd = $selection_end\n\ 212 | replace_range(selStart, selEnd, "/* " get_selection() " */")\n\ 213 | select(selStart, selEnd + 6)\n\ 214 | }\n\ 215 | Comments>/* Uncomment */@C@C++@Java@CSS@JavaScript@Lex:::R: {\n\ 216 | pos = search("(?n\\\\s*/\\\\*\\\\s*)", $selection_start, "regex")\n\ 217 | start = $search_end\n\ 218 | end = search("(?n\\\\*/\\\\s*)", $selection_end, "regex", "backward")\n\ 219 | if (pos != $selection_start || end == -1 )\n\ 220 | return\n\ 221 | replace_selection(get_range(start, end))\n\ 222 | select(pos, $cursor)\n\ 223 | }\n\ 224 | Comments>// Comment@C@C++@Java@JavaScript:::R: {\n\ 225 | replace_in_selection("^.*$", "// &", "regex")\n\ 226 | }\n\ 227 | Comments>// Uncomment@C@C++@Java@JavaScript:::R: {\n\ 228 | replace_in_selection("(^[ \\\\t]*// ?)(.*)$", "\\\\2", "regex")\n\ 229 | }\n\ 230 | Comments># Comment@Perl@Sh Ksh Bash@NEdit Macro@Makefile@Awk@Csh@Python@Tcl:::R: {\n\ 231 | replace_in_selection("^.*$", "#&", "regex")\n\ 232 | }\n\ 233 | Comments># Uncomment@Perl@Sh Ksh Bash@NEdit Macro@Makefile@Awk@Csh@Python@Tcl:::R: {\n\ 234 | replace_in_selection("(^[ \\\\t]*#)(.*)$", "\\\\2", "regex")\n\ 235 | }\n\ 236 | Comments>-- Comment@SQL:::R: {\n\ 237 | replace_in_selection("^.*$", "--&", "regex")\n\ 238 | }\n\ 239 | Comments>-- Uncomment@SQL:::R: {\n\ 240 | replace_in_selection("(^[ \\\\t]*--)(.*)$", "\\\\2", "regex")\n\ 241 | }\n\ 242 | Comments>! Comment@X Resources:::R: {\n\ 243 | replace_in_selection("^.*$", "!&", "regex")\n\ 244 | }\n\ 245 | Comments>! Uncomment@X Resources:::R: {\n\ 246 | replace_in_selection("(^[ \\\\t]*!)(.*)$", "\\\\2", "regex")\n\ 247 | }\n\ 248 | Comments>% Comment@LaTeX:::R: {\n\ 249 | replace_in_selection("^.*$", "%&", "regex")\n\ 250 | }\n\ 251 | Comments>% Uncomment@LaTeX:::R: {\n\ 252 | replace_in_selection("(^[ \\\\t]*%)(.*)$", "\\\\2", "regex")\n\ 253 | }\n\ 254 | Comments>Bar Comment@C:::R: {\n\ 255 | if ($selection_left != -1) {\n\ 256 | dialog("Selection must not be rectangular")\n\ 257 | return\n\ 258 | }\n\ 259 | start = $selection_start\n\ 260 | end = $selection_end-1\n\ 261 | origText = get_range($selection_start, $selection_end-1)\n\ 262 | newText = "/*\\n" replace_in_string(get_range(start, end), \\\n\ 263 | "^", " * ", "regex") "\\n */\\n"\n\ 264 | replace_selection(newText)\n\ 265 | select(start, start + length(newText))\n\ 266 | }\n\ 267 | Comments>Bar Uncomment@C:::R: {\n\ 268 | selStart = $selection_start\n\ 269 | selEnd = $selection_end\n\ 270 | pos = search("/\\\\*\\\\s*\\\\n", selStart, "regex")\n\ 271 | if (pos != selStart) return\n\ 272 | start = $search_end\n\ 273 | end = search("\\\\n\\\\s*\\\\*/\\\\s*\\\\n?", selEnd, "regex", "backward")\n\ 274 | if (end == -1 || $search_end < selEnd) return\n\ 275 | newText = get_range(start, end)\n\ 276 | newText = replace_in_string(newText,"^ *\\\\* ?", "", "regex", "copy")\n\ 277 | if (get_range(selEnd, selEnd - 1) == "\\n") selEnd -= 1\n\ 278 | replace_range(selStart, selEnd, newText)\n\ 279 | select(selStart, selStart + length(newText))\n\ 280 | }\n\ 281 | Make C Prototypes@C@C++:::: {\n\ 282 | # simplistic extraction of C function prototypes, usually good enough\n\ 283 | if ($selection_start == -1) {\n\ 284 | start = 0\n\ 285 | end = $text_length\n\ 286 | } else {\n\ 287 | start = $selection_start\n\ 288 | end = $selection_end\n\ 289 | }\n\ 290 | string = get_range(start, end)\n\ 291 | # remove all C++ and C comments, then all blank lines in the extracted range\n\ 292 | string = replace_in_string(string, "//.*$", "", "regex", "copy")\n\ 293 | string = replace_in_string(string, "(?n/\\\\*.*?\\\\*/)", "", "regex", "copy")\n\ 294 | string = replace_in_string(string, "^\\\\s*\\n", "", "regex", "copy")\n\ 295 | nDefs = 0\n\ 296 | searchPos = 0\n\ 297 | prototypes = ""\n\ 298 | staticPrototypes = ""\n\ 299 | for (;;) {\n\ 300 | headerStart = search_string(string, \\\n\ 301 | "^[a-zA-Z]([^;#\\"'{}=>?~":\n\ 372 | C:.c .h::::::".,/\\`'!|@#%^&*()-=+{}[]"":;<>?~":\n\ 373 | CSS:css::Auto:None:::".,/\\`'!|@#%^&*()=+{}[]"":;<>?~":\n\ 374 | Csh:.csh .cshrc .tcshrc .login .logout:"^[ \\t]*#[ \\t]*![ \\t]*/bin/t?csh"::::::\n\ 375 | Fortran:.f .f77 .for:::::::\n\ 376 | Java:.java:::::::\n\ 377 | JavaScript:.js:::::::\n\ 378 | LaTeX:.tex .sty .cls .ltx .ins .clo .fd:::::::\n\ 379 | Lex:.lex:::::::\n\ 380 | Lua:.lua:::::::\n\ 381 | Makefile:Makefile makefile .gmk:::None:8:8::\n\ 382 | Markdown:.md .markdown .mdtxt .mdtext:::::::\n\ 383 | Matlab:.m .oct .sci:::::::\n\ 384 | NEdit Macro:.nm .neditmacro:::::::\n\ 385 | OCaml:.ml::Auto:None:8:2:".,/\\`'!|@#%^&*()-=+{}[]"":;<>?~":\n\ 386 | Pascal:.pas .p .int:::::::\n\ 387 | Perl:.pl .pm .p5 .PL:"^[ \\t]*#[ \\t]*!.*perl":Auto:None:::".,/\\\\`'!$@#%^&*()-=+{}[]"":;<>?~|":\n\ 388 | PostScript:.ps .eps .epsf .epsi:"^%!":::::"/%(){}[]<>":\n\ 389 | Python:.py:"^#!.*python":Auto:None:::"!""#$%&'()*+,-./:;<=>?@[\\\\]^`{|}~":\n\ 390 | Regex:.reg .regex:"\\(\\?[:#=!iInN].+\\)":None:Continuous::::\n\ 391 | SGML HTML:.sgml .sgm .html .htm:"\\<[Hh][Tt][Mm][Ll]\\>"::::::\n\ 392 | SQL:.sql:::::::\n\ 393 | Sh Ksh Bash:.sh .bash .ksh .profile .bashrc .bash_logout .bash_login .bash_profile:"^[ \\t]*#[ \\t]*![ \\t]*/.*bin/(bash|ksh|sh|zsh)"::::::\n\ 394 | Tcl:.tcl .tk .itcl .itk::Smart:None::::\n\ 395 | VHDL:.vhd .vhdl .vdl:::::::\n\ 396 | Verilog:.v:::::::\n\ 397 | XML:.xml .xsl .dtd:"\\<(?i\\?xml|!doctype)"::None:::"<>/=""'()+*?|":\n\ 398 | X Resources:.Xresources .Xdefaults .nedit .pats nedit.rc:"^[!#].*([Aa]pp|[Xx]).*[Dd]efaults"::::::\n\ 399 | Yacc:.y::::::".,/\\`'!|@#%^&*()-=+{}[]"":;<>?~": 400 | nedit.styles: Plain:#ffffff:Plain\n\ 401 | Comment:#63e99a:Italic\n\ 402 | Keyword:#f06191:Bold\n\ 403 | Operator:#f06191:Bold\n\ 404 | Bracket:#ffffff:Bold\n\ 405 | Storage Type:#f06191:Bold\n\ 406 | Storage Type1:#f06191:Bold\n\ 407 | String:#ffe666:Plain\n\ 408 | String1:#ffe666:Plain\n\ 409 | String2:#ffe666:Bold\n\ 410 | Preprocessor:#c573dd:Plain\n\ 411 | Preprocessor1:#c573dd:Plain\n\ 412 | Preprocessor2:#c573dd:Bold\n\ 413 | Character Const:#ffe666:Plain\n\ 414 | Numeric Const:#ffe666:Plain\n\ 415 | Identifier:#61f2dc:Plain\n\ 416 | Identifier1:#61f2dc:Plain\n\ 417 | Identifier2:#61f2dc:Plain\n\ 418 | Subroutine:#61f2dc:Plain\n\ 419 | Subroutine1:#61f2dc:Plain\n\ 420 | Ada Attributes:plum:Bold\n\ 421 | Label:red:Italic\n\ 422 | Flag:red:Bold\n\ 423 | Text Comment:SteelBlue4:Italic\n\ 424 | Text Key:VioletRed4:Bold\n\ 425 | Text Key1:VioletRed4:Plain\n\ 426 | Text Arg:RoyalBlue4:Bold\n\ 427 | Text Arg1:SteelBlue4:Bold\n\ 428 | Text Arg2:RoyalBlue4:Plain\n\ 429 | Text Escape:gray30:Bold\n\ 430 | LaTeX Math:darkGreen:Plain\n\ 431 | Pointer:#660000:Bold\n\ 432 | Regex:#009944:Bold\n\ 433 | Warning:brown2:Italic\n\ 434 | Emphasis:black:Italic\n\ 435 | Strong:black:Bold\n\ 436 | Header:brown:Bold 437 | nedit.smartIndentInit: C:Default\n\ 438 | C++:Default\n\ 439 | Python:Default\n\ 440 | Matlab:Default 441 | nedit.smartIndentInitCommon: Default 442 | nedit.autoWrap: Continuous 443 | nedit.wrapMargin: 0 444 | nedit.autoIndent: Auto 445 | nedit.autoSave: False 446 | nedit.openInTab: True 447 | nedit.saveOldVersion: False 448 | nedit.showMatching: Delimiter 449 | nedit.matchSyntaxBased: True 450 | nedit.highlightSyntax: True 451 | nedit.highlightCursorLine: True 452 | nedit.indentRainbow: False 453 | nedit.indentRainbowColors: #f0f8ff;#f0fff6;#f8fff0;#fff6f0;#fef0ff;#f0f1ff 454 | nedit.ansiColorList: #2f2a68;#f06191;#63e99a;#ffe666;#61f2dc;#b043d1;#61f2dc;#eeeeec;#38337f;#f06191;#63e99a;#ffe666;#61f2dc;#c573dd;#61f2dc;#ffffff 455 | nedit.ansiColors: False 456 | nedit.backlightChars: False 457 | nedit.searchDialogs: False 458 | nedit.beepOnSearchWrap: False 459 | nedit.retainSearchDialogs: True 460 | nedit.searchWraps: True 461 | nedit.stickyCaseSenseButton: True 462 | nedit.repositionDialogs: True 463 | nedit.autoScroll: False 464 | nedit.appendLF: True 465 | nedit.sortOpenPrevMenu: True 466 | nedit.statisticsLine: False 467 | nedit.iSearchLine: False 468 | nedit.zoomStep: 1 469 | nedit.sortTabs: False 470 | nedit.tabBar: True 471 | nedit.tabBarHideOne: False 472 | nedit.toolTips: True 473 | nedit.globalTabNavigate: False 474 | nedit.lineNumbers: True 475 | nedit.pathInWindowsMenu: True 476 | nedit.warnFileMods: True 477 | nedit.warnRealFileMods: True 478 | nedit.warnExit: True 479 | nedit.searchMethod: Literal 480 | nedit.textRows: 24 481 | nedit.textCols: 80 482 | nedit.tabDistance: 4 483 | nedit.emulateTabs: 0 484 | nedit.insertTabs: True 485 | nedit.textFont: Fixed:size=10:style=SemiCondensed 486 | nedit.boldHighlightFont: Fixed:size=10:style=SemiCondensed:weight=bold 487 | nedit.italicHighlightFont: Fixed:size=10:style=SemiCondensed:slant=italic 488 | nedit.boldItalicHighlightFont: Fixed:size=10:style=SemiCondensed:weight=bold:slant=italic 489 | nedit.textFgColor: #ffffff 490 | nedit.textBgColor: #222244 491 | nedit.selectFgColor: #222244 492 | nedit.selectBgColor: #f06191 493 | nedit.hiliteFgColor: white 494 | nedit.hiliteBgColor: #61f2dc 495 | nedit.lineNoFgColor: #555588 496 | nedit.lineNoBgColor: #222244 497 | nedit.cursorFgColor: #ffffff 498 | nedit.cursorLineBgColor: #333355 499 | nedit.shell: /usr/bin/fish 500 | nedit.smartTags: True 501 | nedit.prefFileRead: True 502 | nedit.titleFormat: %d%f %*S {%c} [%s] 503 | nedit.fsbView: 1 504 | nedit.fsbShowHidden: False 505 | nedit.editorConfig: True 506 | nedit.defaultCharset: locale 507 | nedit.iconSize: small 508 | -------------------------------------------------------------------------------- /.fvwm/config: -------------------------------------------------------------------------------- 1 | # InfoStoreAdd can be used to store variable data internal to fvwm. 2 | # The variable can then be used in the configuration as $[infostore.name]. 3 | # 4 | # You can also use environment variables but for data internal to fvwm 5 | # use InfoStore variables instead. 6 | # 7 | # The following is used in various menus and also sets the terminal 8 | # that FvwmConsole uses. Change this to your terminal of choice 9 | InfoStoreAdd terminal urxvt 10 | 11 | ########### 12 | # 1: Functions 13 | # 14 | # Fvwm can use custom functions for various tasks. 15 | # The syntax for defining a function named FunctionName is: 16 | # 17 | # DestroyFunc FunctionName 18 | # AddToFunc FunctionName 19 | # + I [Action to do Immediately] 20 | # + C [Action to do on a Mouse Click] 21 | # + D [Action to do on a Mouse Double Click] 22 | # + H [Action to do on a Mouse Hold] 23 | # + M [Action to do on a Mouse Motion] 24 | ########### 25 | 26 | # Start Function 27 | # 28 | # The start function is run right after fvwm is done reading 29 | # the config file. This function run after each restart 30 | # so using Test (Init) or Test (Restart) can further control 31 | # actions that are run during the first time run (Init) or 32 | # actions that are run after a restart. 33 | DestroyFunc StartFunction 34 | AddToFunc StartFunction 35 | + I Test (Init, f $[FVWM_USERDIR]/.BGdefault) \ 36 | Exec exec fvwm-root $[FVWM_USERDIR]/.BGdefault 37 | + I TestRc (NoMatch) Exec exec fvwm-root \ 38 | $[FVWM_USERDIR]/images/background/bg1.png 39 | + I Module FvwmEvent EventNewDesk 40 | + I Module FvwmEvent EventSounds 41 | + I Module FvwmEvent EventDeIcon 42 | + I Test (Init) Exec exec xfce4-panel 43 | + I Test (Init) Exec exec flameshot 44 | + I Test (Init) Exec exec dunst 45 | #+ I Test (Init) Exec exec oneko 46 | #+ I Test (Init) Exec exec ascpu -iconic 47 | #+ I Test (Init) Exec exec asmem -iconic 48 | #+ I Test (Init) Exec exec asclock 49 | 50 | # Mouse Bindings Functions 51 | DestroyFunc RaiseMoveX 52 | AddToFunc RaiseMoveX 53 | + I Raise 54 | + M $0 55 | + M PlaySound windowMoveDone.mp3 56 | + D $1 57 | 58 | DestroyFunc RaiseMove 59 | AddToFunc RaiseMove 60 | + I Raise 61 | + M $0 62 | 63 | # Function: ViewManPage $0 64 | # 65 | # This function loads the man page $0 in an terminal 66 | # and is used with the help menu. 67 | DestroyFunc ViewManPage 68 | AddToFunc ViewManPage 69 | + I Exec exec $[infostore.terminal] -g 80x40 \ 70 | -n "Manual Page - $0" -T "Manual Page - $0" -e man "$0" 71 | 72 | # Function: SetBG $0 73 | # 74 | # SetBG is used with the background menu to set the background 75 | # image and configure it to be loaded the next time fvwm is run. 76 | # Note, fvwm-root can't use .jpeg or resize images. Use something 77 | # like display, feh, etc. 78 | DestroyFunc SetBG 79 | AddToFunc SetBG 80 | + I Test (f $[FVWM_USERDIR]/images/background/$0) \ 81 | Exec exec fvwm-root $[FVWM_USERDIR]/images/background/$0 82 | + I TestRc (Match) Exec exec ln -fs images/background/$0 \ 83 | $[FVWM_USERDIR]/.BGdefault 84 | + I TestRc (Match) Break 85 | + I Test (!f $[FVWM_DATADIR]/default-config/images/background/$0) Break 86 | + I Exec exec fvwm-root $[FVWM_DATADIR]/default-config/images/background/$0 87 | + I Exec exec ln -fs $[FVWM_DATADIR]/default-config/images/background/$0 \ 88 | $[FVWM_USERDIR]/.BGdefault 89 | 90 | # Function: ToggleTitle 91 | # 92 | # This function will toggle if fvwm shows the TitleBar. 93 | DestroyFunc ToggleTitle 94 | AddToFunc ToggleTitle 95 | + I ThisWindow (State 1) WindowStyle Title 96 | + I TestRc (Match) State 1 False 97 | + I TestRc (Match) Break 98 | + I WindowStyle !Title 99 | + I State 1 True 100 | 101 | ############# 102 | # 2: Styles # 103 | ############# 104 | 105 | CursorStyle ROOT left_ptr 106 | CursorStyle TITLE left_ptr 107 | CursorStyle DEFAULT left_ptr 108 | CursorStyle MENU left_ptr 109 | 110 | DesktopName 0 Main 111 | DesktopSize 1x1 112 | EdgeScroll 0 0 113 | 114 | # EwmhBaseStruts [left] [right] [top] [bottom] 115 | # Reserves space along the edge(s) of the Screen that will not 116 | # be covered when maximizing or placing windows. 117 | EwmhBaseStruts screen DVI-D-0 0 0 30 0 118 | 119 | # This sets the ClickTime and MoveThreshold used to determine 120 | # Double Clicks, Hold and Move for the mouse. 121 | ClickTime 250 122 | MoveThreshold 3 123 | 124 | # Sets the focus style to SloppyFocus and a mouse click 125 | # in a window will Raise it. 126 | Style * SloppyFocus, MouseFocusClickRaises, ClickToFocus 127 | 128 | # Default Font 129 | DefaultFont "xft:Helvetica:Bold:Italic:size=11:antialias=False" 130 | 131 | # Window Placement 132 | Style * MinOverlapPlacement, !UsePPosition 133 | Style * GrabFocus, GrabFocusTransient 134 | 135 | # Sets all windows to OpaqueMove (vs a wired frame) and windows will 136 | # snap to each other and the edge of the screen. 137 | #OpaqueMoveSize unlimited 138 | Style * SnapAttraction 15 SameType ScreenAll, SnapGrid 139 | 140 | # Transient Windows (such as open file windows) 141 | Style * DecorateTransient, StackTransientParent 142 | Style * !FPGrabFocusTransient, FPReleaseFocusTransient 143 | 144 | # WindowShade 145 | Style * WindowShadeScrolls, WindowShadeSteps 10 146 | 147 | # Ignore Numlock and other modifiers for bindings 148 | # See http://fvwm.org/documentation/faq/#why-do-numlock-capslock-and-scrolllock-interfere-with-clicktofocus-andor-my-mouse-bindings 149 | IgnoreModifiers L25 150 | 151 | # Decor Styles 152 | Style * BorderWidth 1, HandleWidth 7, MWMButtons, FvwmBorder, FirmBorder 153 | Style * Colorset 1, HilightColorset 2 154 | Style * BorderColorset 3, HilightBorderColorset 4 155 | 156 | # Disable Icons from appearing on desktop. 157 | # Comment this out or use Style * Icon to get the icons back. 158 | #Style * !Icon 159 | 160 | # Window Specific Styles 161 | Style ConfirmQuit !Title, PositionPlacement Center, WindowListSkip, Layer 6 162 | Style ConfirmReboot !Title, PositionPlacement Center, WindowListSkip, Layer 6 163 | Style ConfirmShutdown !Title, PositionPlacement Center, WindowListSkip, Layer 6 164 | Style FvwmIdent WindowListSkip 165 | 166 | Style "jetbrains-idea" ClickToFocus, Lenience 167 | 168 | Style "Steam*" !UsePPosition 169 | Style "Steam*" !UseUSPosition, FixedPPosition 170 | Style "Steam*" !Title 171 | 172 | ####### 173 | # 3: Colorsets 174 | # 175 | # Colorsets can be used to configure the color of the various 176 | # parts of fvwm such as window decor, menus, modules, etc. 177 | # 178 | # Colorset Convention 179 | # 180 | # 0 - Default 181 | # 1 - Inactive Windows 182 | # 2 - Active Window 183 | # 3 - Inactive Windows Borders 184 | # 4 - Active Windows Borders 185 | # 5 - Menu - Inactive Item 186 | # 6 - Menu - Active Item 187 | # 7 - Menu - Grayed Item 188 | # 8 - Menu - Title 189 | # 9 - Reserved 190 | # 10+ Modules 191 | # 10 - Module Default 192 | # 11 - Module Hilight 193 | # 12 - Module ActiveButton (Mouse Hover) 194 | # 13 - FvwmPager Active Page 195 | # 14 - FvwmIconMan Iconified Button 196 | ########### 197 | Colorset 0 fg #fff, bg #003c3c, hi, sh, Plain, NoShape 198 | Colorset 1 fg #ddf, bg #559, hi, sh, Plain, NoShape 199 | Colorset 2 fg #fff, bg #337, hi #55a, sh #113, Plain, NoShape 200 | Colorset 3 fg #fff, bg #559, hi, sh, Plain, NoShape 201 | Colorset 4 fg #620031, bg #337, hi #55a, sh #113, Plain, NoShape 202 | Colorset 5 fg #fff, bg #559, hi, sh, Plain, NoShape 203 | Colorset 6 fg #224, bg #f06191, hi, sh, Plain, NoShape 204 | Colorset 7 fg grey30, bg #fff, hi, sh, Plain, NoShape 205 | Colorset 8 fg #fff, bg #337, hi, sh, Plain, NoShape 206 | Colorset 10 fg #fff, bg #224, hi #55a, sh #113, Plain, NoShape 207 | Colorset 11 fg #fff, bg #820041, hi #fff, sh #fff, Plain, NoShape 208 | Colorset 12 fg #fff, bg #ff99cd, hi, sh, Plain, NoShape 209 | Colorset 13 fg #fff, bg #ff99cd, hi, sh, Plain, NoShape 210 | Colorset 14 fg #ff99cd, bg #420021, hi #aaaaaa, sh #999, Plain, NoShape 211 | Colorset 15 fg #fff, bg #fc0, hi #fff, sh #fff, Plain, NoShape 212 | 213 | ########### 214 | # 4: Menus 215 | ########### 216 | MenuStyle * MenuColorset 5, ActiveColorset 6, GreyedColorset 7, TitleColorset 8 217 | MenuStyle * Hilight3DOff, HilightBack, HilightTitleBack, SeparatorsLong 218 | MenuStyle * TrianglesSolid, TrianglesUseFore 219 | MenuStyle * ItemFormat "%|%3.1i%5.3l%5.3>%|" 220 | MenuStyle * Font "xft:Helvetica:Bold:Italic:size=11:antialias=False" 221 | 222 | # Root Menu 223 | # 224 | # The root menu will PopUp with a click in the root 225 | # window or using alt-f1 (or menu). 226 | DestroyMenu MenuFvwmRoot 227 | AddToMenu MenuFvwmRoot "Toolchest" Title 228 | #+ "&Programs%icons/programs.png%" Popup MenuPrograms 229 | + "&Programs%images/icons/apps.png%" Popup Programs 230 | + "&XTerm%images/icons/terminal.png%" Exec exec $[infostore.terminal] 231 | + "" Nop 232 | Piperead "hostnamectl | awk '{if (NR == 10) print }' | grep -q \"ThinkPad\"; if [ $? = 0 ]; then echo '+ \"ThinkPad Options%images/icons/tpad.png%\" Popup ThinkPadOptions'; echo '+ \"\" Nop'; fi" 233 | + "Fvwm&Console%images/icons/terminal.png%" Module FvwmConsole -terminal $[infostore.terminal] 234 | + "&Wallpapers%images/icons/wallpaper.png%" Popup BGMenu 235 | + "Fvwm &help%images/icons/help.png%" Popup MenuFvwmManPages 236 | + "" Nop 237 | + "Re&fresh Fvwm%images/icons/refresh.png%" Refresh 238 | + "&Restart Fvwm%images/icons/restart.png%" Restart 239 | + "&Leave Session%images/icons/quit.png%" Popup SessionMenu 240 | 241 | # Generate XDGMenu 242 | PipeRead "fvwm-menu-desktop -e --enable-mini-icons --size 16 -t Programs" 243 | 244 | DestroyMenu SessionMenu 245 | AddToMenu SessionMenu "Leave Session" Title 246 | + "Lock Screen%images/icons/quit.png%" Exec exec ~/.fvwm/onLock.sh 247 | + "Suspend%images/icons/quit.png%" Exec exec ~/.fvwm/onSuspend.sh 248 | + "Exit X%images/icons/quit.png%" Module FvwmScript FvwmScript-ConfirmQuit 249 | + "Reboot%images/icons/quit.png%" Module FvwmScript FvwmScript-ConfirmReboot 250 | + "Power Off%images/icons/quit.png%" Module FvwmScript FvwmScript-ConfirmShutdown 251 | 252 | # Background Menu 253 | # 254 | # Backgrounds are located in ~/.fvwm/images/background/ 255 | # Menu icons are located in ~/.fvwm/images/bgicons/ 256 | DestroyMenu BGMenu 257 | AddToMenu BGMenu "Wallpapers" Title 258 | + "IRIX Wallpapers%images/background/ess-gee-eye.png%" Popup BGMenu-IRIX 259 | + "Abstrakt%images/background/abstrakt-icon.png%" SetBG abstrakt.png 260 | + "Metal%images/background/bg1.png%" SetBG bg1.png 261 | + "Metal Dark%images/background/bg1-dark.png%" SetBG bg1-dark.png 262 | + "Metal Darker%images/background/bg1-darker.png%" SetBG bg1-darker.png 263 | + "Sweet Silicon%images/background/bg-sgi-icon.png%" SetBG bg-sgi.png 264 | + "Sweet Silicon Dark%images/background/bg-sgi-dark-icon.png%" SetBG bg-sgi-dark.png 265 | + "Traitor!%images/background/bg-sun.png%" SetBG bg-sun.png 266 | + "Traitor! Dark%images/background/bg-sun-dark.png%" SetBG bg-sun-dark.png 267 | + "Traitor!x2%images/background/bg-sun2x.png%" SetBG bg-sun2x.png 268 | + "Traitor!x2 Dark%images/background/bg-sun2x-dark.png%" SetBG bg-sun2x-dark.png 269 | + "Iso%images/background/iso.png%" SetBG iso.png 270 | 271 | DestroyMenu BGMenu-IRIX 272 | AddToMenu BGMenu-IRIX "IRIX" Title 273 | + "Brain" SetBG irix/Brain.png 274 | + "Bulge" SetBG irix/Bulge.png 275 | + "Burlap" SetBG irix/Burlap.png 276 | + "Cirrostratus" SetBG irix/Cirrostratus.png 277 | + "Cracked" SetBG irix/Cracked.png 278 | + "Crumpled" SetBG irix/Crumpled.png 279 | + "Dither 1x1" SetBG irix/Dither1x1.png 280 | + "Dither 2x2" SetBG irix/Dither2x2.png 281 | + "Escher Knot" SetBG irix/EscherKnot.png 282 | + "Fabric" SetBG irix/Fabric.png 283 | + "Granite" SetBG irix/Granite.png 284 | + "Linen" SetBG irix/Linen.png 285 | + "Luna Pearl" SetBG irix/LunaPearl.png 286 | + "Moorish" SetBG irix/Moorish.png 287 | + "Nebula" SetBG irix/Nebula.png 288 | + "Rhodo" SetBG irix/Rhodo.png 289 | + "Rockface" SetBG irix/Rockface.png 290 | + "Scales" SetBG irix/Scales.png 291 | + "Scallop" SetBG irix/Scallop.png 292 | + "Scatter Blue" SetBG irix/ScatterBlue.png 293 | + "Scatter Classic" SetBG irix/ScatterClassic.png 294 | + "Scatter Green" SetBG irix/ScatterGreen.png 295 | + "Scatter Purple" SetBG irix/ScatterPurple.png 296 | + "Scatter" SetBG irix/Scatter.png 297 | + "Scribble" SetBG irix/Scribble.png 298 | + "Solid" SetBG irix/Solid.png 299 | + "Sprinkle" SetBG irix/Sprinkle.png 300 | + "Swirl" SetBG irix/Swirl.png 301 | + "Tide Pool" SetBG irix/TidePool.png 302 | + "Verde Marble" SetBG irix/VerdeMarble.png 303 | + "Vertigo" SetBG irix/Vertigo.png 304 | + "Wicker" SetBG irix/Wicker.png 305 | 306 | # Window Operations Menus 307 | DestroyMenu MenuWindowOps 308 | AddToMenu MenuWindowOps 309 | + "Move" Move 310 | + "Resize" Resize 311 | + "Iconify" Iconify 312 | + "Maximize" Maximize 313 | + "Shade" WindowShade 314 | + "Move to..." Popup MenuSendTo 315 | + "" Nop 316 | + "Close" Close 317 | + "More..." Menu MenuWindowOpsLong This 0 0 318 | 319 | DestroyMenu MenuWindowOpsLong 320 | AddToMenu MenuWindowOpsLong 321 | + "Move" Move 322 | + "Resize" Resize 323 | + "(De)Iconify" Iconify 324 | + "(Un)Maximize" Maximize 325 | + "(Un)Shade" WindowShade 326 | + "Move to..." Popup MenuSendTo 327 | + "" Nop 328 | + "Close" Close 329 | + "Destroy" Destroy 330 | + "" Nop 331 | + "Raise" Raise 332 | + "Lower" Lower 333 | + "" Nop 334 | + "StaysOnTop" Pick (CirculateHit) Layer 0 6 335 | + "StaysPut" Pick (CirculateHit) Layer 0 4 336 | + "StaysOnBottom" Pick (CirculateHit) Layer 0 2 337 | + "" Nop 338 | + "Identify" Module FvwmIdent 339 | 340 | DestroyMenu MenuIconOps 341 | AddToMenu MenuIconOps 342 | + "(De)Iconify" Iconify 343 | + "(Un)Maximize" Maximize 344 | + "(Un)Shade" WindowShade 345 | + "Move to..." Popup MenuSendTo 346 | + "" Nop 347 | + "Close" Close 348 | + "Destroy" Destroy 349 | + "" Nop 350 | + "Raise" Raise 351 | + "Lower" Lower 352 | + "" Nop 353 | + "StaysOnTop" Pick (CirculateHit) Layer 0 6 354 | + "StaysPut" Pick (CirculateHit) Layer 0 4 355 | + "StaysOnBottom" Pick (CirculateHit) Layer 0 2 356 | + "" Nop 357 | + "Identify" Module FvwmIdent 358 | 359 | DestroyMenu MenuSendTo 360 | AddToMenu MenuSendTo 361 | + "Main" MoveToDesk 0 0 362 | + "Second" MoveToDesk 0 1 363 | 364 | # Fvwm Man Pages (Help) Menu 365 | DestroyMenu MenuFvwmManPages 366 | AddToMenu MenuFvwmManPages "Help" Title 367 | + "fvwm" ViewManPage fvwm 368 | + "FvwmAnimate" ViewManPage FvwmAnimate 369 | + "FvwmAuto" ViewManPage FvwmAuto 370 | + "FvwmBacker" ViewManPage FvwmBacker 371 | + "FvwmBanner" ViewManPage FvwmBanner 372 | + "FvwmButtons" ViewManPage FvwmButtons 373 | + "FvwmCommand" ViewManPage FvwmCommand 374 | + "FvwmConsole" ViewManPage FvwmConsole 375 | + "FvwmEvent" ViewManPage FvwmEvent 376 | + "FvwmForm" ViewManPage FvwmForm 377 | + "FvwmIconMan" ViewManPage FvwmIconMan 378 | + "FvwmIdent" ViewManPage FvwmIdent 379 | + "FvwmPager" ViewManPage FvwmPager 380 | + "FvwmPerl" ViewManPage FvwmPerl 381 | + "FvwmProxy" ViewManPage FvwmProxy 382 | + "FvwmRearrange" ViewManPage FvwmRearrange 383 | + "FvwmScript" ViewManPage FvwmScript 384 | + "" Nop 385 | + "fvwm-root" ViewManPage fvwm-root 386 | + "fvwm-menu-desktop" ViewManPage fvwm-menu-desktop 387 | + "fvwm-menu-directory" ViewManPage fvwm-menu-directory 388 | + "fvwm-menu-headlines" ViewManPage fvwm-menu-headlines 389 | + "fvwm-menu-xlock" ViewManPage fvwm-menu-xlock 390 | + "fvwm-config" ViewManPage fvwm-config 391 | 392 | DestroyMenu ThinkPadOptions 393 | AddToMenu ThinkPadOptions "ThinkPad Options" Title 394 | + "Middle Mouse%images/icons/tpad-mmb.png%" Popup ThinkPadMiddleMouse 395 | + "Power Light%images/icons/light.png%" Popup ThinkPadPowerLight 396 | + "Lid Light%images/icons/tpad-lid.png%" Popup ThinkPadLidLight 397 | 398 | DestroyMenu ThinkPadMiddleMouse 399 | AddToMenu ThinkPadMiddleMouse "Middle Mouse" Title 400 | + "Middle Mouse: Scroll%images/icons/tpad-mmb-scroll.png%" Exec exec xinput set-prop "TPPS/2 Elan TrackPoint" "libinput Scroll Method Enabled" 0, 0, 1 401 | + "Middle Mouse: Click%images/icons/tpad-mmb.png%" Exec exec xinput set-prop "TPPS/2 Elan TrackPoint" "libinput Scroll Method Enabled" 0, 0, 0 402 | 403 | DestroyMenu ThinkPadPowerLight 404 | AddToMenu ThinkPadPowerLight "Power Light" Title 405 | + "Power Light: On%images/icons/light.png%" Exec exec light -s sysfs/leds/tpacpi::power -S 1 406 | + "Power Light: Off%images/icons/light-off.png%" Exec exec light -s sysfs/leds/tpacpi::power -S 0 407 | 408 | DestroyMenu ThinkPadLidLight 409 | AddToMenu ThinkPadLidLight "Lid Light" Title 410 | + "Lid Light: On%images/icons/tpad-lid.png%" Exec exec light -s sysfs/leds/tpacpi::lid_logo_dot -S 1 411 | + "Lid Light: Off%images/icons/tpad-lid-off.png%" Exec exec light -s sysfs/leds/tpacpi::lid_logo_dot -S 0 412 | 413 | ####### 414 | # 5: Mouse and Key bindings 415 | # 416 | # Contexts: 417 | # R = Root Window rrrrrrrrrrrrrrrrrrrrrr 418 | # W = Application Window rIrrrr<---------^rrrrr 419 | # F = Frame Corners rrrrrr[13TTTT642]rrrrr 420 | # S = Frame Sides rIrrrr[wwwwwwwww]rrrrr 421 | # T = Title Bar rrrrrr[wwwwwwwww]rrrrr 422 | # I = Icon rIrrrrv_________>rrrrr 423 | # rrrrrrrrrrrrrrrrrrrrrr 424 | # 425 | # Numbers are buttons: [1 3 5 7 9 TTTTT 0 8 6 4 2] 426 | # 427 | # Modifiers: (A)ny, (C)ontrol, (S)hift, (M)eta, (N)othing 428 | # 429 | # Format: Key 430 | # Mouse 431 | #################### 432 | 433 | # Alt-F1 or Menu to load the root menu and Alt-Tab for a WindowList. 434 | # Ctrl-F1/F2/F3/F4 will switch between the Virtual Desktops. 435 | # Super_R (windows key) will launch a terminal. 436 | # 437 | # Silent supresses any errors (such as keyboards with no Menu key). 438 | Silent Key F1 A M Menu MenuFvwmRoot 439 | Silent Key Menu A A Menu MenuFvwmRoot 440 | #Silent Key Tab A M WindowList Root c c NoDeskSort, SelectOnRelease Meta_L 441 | # Alt-tab more in-line with windows/macos 442 | Silent Key Tab A M WindowList Root c c CurrentDesk, NoGeometry, CurrentAtEnd 443 | Silent Key Super_R A A Exec exec $[infostore.terminal] 444 | Silent Key Print A A Exec flameshot gui 445 | # laptop 446 | Silent Key F1 A 4 Menu MenuFvwmRoot 447 | Silent Key XF86MonBrightnessDown A A Exec exec light -U 2 448 | Silent Key XF86MonBrightnessUp A A Exec exec light -A 2 449 | Silent Key XF86Favorites A A Exec exec $[infostore.terminal] 450 | Silent Key l A 4 Exec exec ~/.fvwm/onLock.sh 451 | Silent Key 1 A 4 GotoDesk 0 0 452 | Silent Key 2 A 4 GotoDesk 0 1 453 | 454 | # Window Buttons: [1 3 5 7 9 TTTTT 0 8 6 4 2] 455 | # 1 - Open the WindowOps menu. 456 | # 2 - Close on single click, Destory on double click. 457 | # 4 - Maximize (right/middle button will only maximize vertical/horizontal) 458 | # 6 - Iconify (minimize) 459 | Mouse 1 2 A Menu MenuWindowOps Delete 460 | Mouse 1 1 A Delete 461 | Mouse 1 3 A Maximize 100 100 462 | Mouse 2 3 A Maximize 0 100 463 | Mouse 3 3 A Maximize 100 0 464 | Mouse 1 5 A Thumbnail 465 | 466 | # TitleBar: Click to Raise, Move, Double Click to Maximize 467 | # Mouse Wheel Up/Down to WindowShade On/Off 468 | # Borders: Click to raise, Move to Resize 469 | # Root Window: Left Click - Main Menu 470 | # Right Click - WindowOps Menu 471 | # Middle Click - Window List Menu 472 | # Right click TitleBar/Borders for WindowOps Menu 473 | Mouse 1 T A RaiseMoveX Move Maximize 474 | Mouse 1 FS A RaiseMove Resize 475 | Mouse 3 T A WindowShade 476 | Mouse 1 R A Menu MenuFvwmRoot 477 | Mouse 3 R A WindowList 478 | Mouse 2 R A Menu MenuWindowOpsLong 479 | Mouse 1 I A RaiseMoveX Move "Iconify off" 480 | Mouse 2 T A Menu MenuWindowOps 481 | Mouse 3 I A Menu MenuIconOps 482 | 483 | ####### 484 | # 6: Window Decor 485 | # 486 | # Buttons Locations: [1 3 5 7 9 TTTTT 0 8 6 4 2] 487 | # 488 | # 1 - Close 489 | # 2 - WindowOps Menu 490 | # 2 - Maximize 491 | # 5 - Minimize 492 | ########### 493 | TitleStyle LeftJustified Height 24 -- Raised 494 | ButtonStyle All -- Raised 495 | 496 | ButtonStyle 2 Active Pixmap images/buttons/menu.png 497 | ButtonStyle 1 Active Colorset 15 498 | AddButtonStyle 1 Active Pixmap images/buttons/close-b.png 499 | ButtonStyle 3 Active Pixmap images/buttons/max.png 500 | ButtonStyle 3 ToggledActiveUp Pixmap images/buttons/res.png 501 | ButtonStyle 5 Active Pixmap images/buttons/min.png 502 | 503 | ButtonStyle 2 Inactive Pixmap images/buttons/menu.png 504 | ButtonStyle 1 Inactive Pixmap images/buttons/close.png 505 | ButtonStyle 3 Inactive Pixmap images/buttons/max.png 506 | ButtonStyle 3 ToggledInactiveUp Pixmap images/buttons/res.png 507 | ButtonStyle 5 Inactive Pixmap images/buttons/min.png 508 | 509 | ButtonStyle All - Clear 510 | ButtonStyle 2 - MwmDecorMenu 511 | ButtonStyle 3 - MwmDecorMax 512 | ButtonStyle 5 - MwmDecorMin 513 | 514 | ############ 515 | # 7: Modules 516 | ############# 517 | 518 | # FvwmIdent 519 | # 520 | # FvwmIdent is a module that can be used to get the various info about 521 | # a window. One use is getting the class/resource/name of a window. 522 | DestroyModuleConfig FvwmIdent:* 523 | *FvwmIdent: Colorset 10 524 | *FvwmIdent: Font "xft:Fixed:size=10:antialias=False" 525 | 526 | # FvwmScript 527 | # 528 | # FvwmScript is a module that allows one to write custom desktop 529 | # widgets and various other tools. This config uses two FvwmScripts. 530 | # - DateTime - uses the output of "date" to display the date/time 531 | # on the RightPanel. 532 | # - Quit - This is a popup that asks for quit confirmation before 533 | # quitting fvwm. 534 | DestroyModuleConfig FvwmScript:* 535 | *FvwmScript: DefaultColorset 10 536 | 537 | # FvwmEvent 538 | # 539 | # FvwmEvent is a module that can run an action or function 540 | # on specific events. This instance changes which desk number 541 | # is highlighted when the desk is changed. 542 | DestroyModuleConfig EventNewDesk:* 543 | *EventNewDesk: PassID 544 | *EventNewDesk: new_desk ChangeDesk 545 | 546 | DestroyModuleConfig EventSounds:* 547 | *EventSounds: Cmd PlaySound 548 | *EventSounds: deiconify windowOpen.mp3 549 | #*EventSounds: iconify windowClose.mp3 -- iconify sound is played through the Thumbnail function 550 | *EventSounds: add_window windowOpen.mp3 551 | *EventSounds: destroy_window windowClose.mp3 552 | *EventSounds: dewindowshade windowshadeOpen.mp3 553 | *EventSounds: windowshade windowshadeClose.mp3 554 | 555 | DestroyModuleConfig EventDeIcon: * 556 | *EventDeIcon: deiconify DeThumbnail 557 | 558 | DestroyFunc PlaySound 559 | AddToFunc PlaySound 560 | + I Exec exec mpg123 ~/.fvwm/sounds/$0 561 | 562 | # FvwmForm 563 | # 564 | # FvwmForm is a module that can be used to build a GUI 565 | # form. Used with fvwm-menu-desktop-config.fpl. 566 | # This sets the default colorsets. 567 | *FvwmFormDefault: Colorset 10 568 | *FvwmFormDefault: ItemColorset 13 569 | 570 | Style xfce4-panel HandleWidth 0 571 | 572 | DestroyFunc TileFull 573 | AddToFunc TileFull 574 | + I ThisWindow (!Shaded, !Iconic) Maximize 100 100 575 | + I ThisWindow (Maximized, !Shaded, !Iconic) Move +0 +0 576 | 577 | DestroyFunc TileLeft 578 | AddToFunc TileLeft 579 | + I ThisWindow (!Shaded, !Iconic) Maximize 50 100 580 | + I ThisWindow (Maximized, !Shaded, !Iconic) Move +0 +0 581 | DestroyFunc TileRight 582 | AddToFunc TileRight 583 | + I ThisWindow (!Shaded, !Iconic) Maximize 50 100 584 | + I ThisWindow (Maximized, !Shaded, !Iconic) Move -0 +0 585 | DestroyFunc TileTop 586 | AddToFunc TileTop 587 | + I ThisWindow (!Shaded, !Iconic) Maximize 100 50 588 | + I ThisWindow (Maximized, !Shaded, !Iconic) Move +0 +0 589 | DestroyFunc TileBottom 590 | AddToFunc TileBottom 591 | + I ThisWindow (!Shaded, !Iconic) Maximize 100 50 592 | + I ThisWindow (Maximized, !Shaded, !Iconic) Move +0 -0 593 | DestroyFunc TileTopLeft 594 | AddToFunc TileTopLeft 595 | + I ThisWindow (!Shaded, !Iconic) Maximize 50 50 596 | + I ThisWindow (Maximized, !Shaded, !Iconic) Move +0 +0 597 | DestroyFunc TileTopRight 598 | AddToFunc TileTopRight 599 | + I ThisWindow (!Shaded, !Iconic) Maximize 50 50 600 | + I ThisWindow (Maximized, !Shaded, !Iconic) Move -0 +0 601 | DestroyFunc TileBottomLeft 602 | AddToFunc TileBottomLeft 603 | + I ThisWindow (!Shaded, !Iconic) Maximize 50 50 604 | + I ThisWindow (Maximized, !Shaded, !Iconic) Move +0 -0 605 | DestroyFunc TileBottomRight 606 | AddToFunc TileBottomRight 607 | + I ThisWindow (!Shaded, !Iconic) Maximize 50 50 608 | + I ThisWindow (Maximized, !Shaded, !Iconic) Move -0 -0 609 | 610 | Key KP_Left A 4 TileLeft 611 | Key KP_Right A 4 TileRight 612 | Key KP_Up A 4 TileTop 613 | Key KP_Down A 4 TileBottom 614 | Key KP_Home A 4 TileTopLeft 615 | Key KP_Prior A 4 TileTopRight 616 | Key KP_End A 4 TileBottomLeft 617 | Key KP_Next A 4 TileBottomRight 618 | Key KP_Begin A 4 TileFull 619 | 620 | Key Left A 4 TileLeft 621 | Key Right A 4 TileRight 622 | Key Up A 4 TileFull 623 | Key Down A 4 TileTopLeft 624 | Key Space A 4 Exec exec rofi -show drun 625 | 626 | DestroyFunc Thumbnail 627 | AddToFunc Thumbnail 628 | #+ I Raise 629 | + I SetEnv Icon-$[w.id] $[w.iconfile] 630 | + I ThisWindow (!Shaded Iconifiable !Iconic) PipeRead \ 631 | "xwd -silent -id $[w.id] | convert -scale 180x180 \ 632 | -mattecolor black -quality 0 xwd:- png:$[HOME]/.fvwm/icon.tmp.$[w.id].png \ 633 | && echo Nop" 634 | #+ I ThisWindow (!Shaded Iconifiable !Iconic) PipeRead \ 635 | # "xwd -silent -id $[w.id] | convert -scale $$(($[w.width]/6)) \ 636 | # -mattecolor black -quality 0 xwd:- png:$[HOME]/.fvwm/icon.tmp.$[w.id].png \ 637 | # && echo Nop" 638 | #+ I TestRc (Match) Test (f $[fvwm_icon]/$[w.iconfile], f $[HOME]/.fvwm/icon.tmp.$[w.id].png) \ 639 | # PipeRead "composite -geometry +2+4 \ 640 | # $[fvwm_icon]/$[w.iconfile] $[HOME]/.fvwm/icon.tmp.$[w.id].png \ 641 | # $[HOME]/.fvwm/icon.tmp.$[w.id].png && \ 642 | # echo WindowStyle IconOverride, Icon $[fvwm_tmp]/icon.tmp.$[w.id].png || echo Nop" 643 | + I PlaySound windowClose.mp3 644 | + I Iconify 645 | + I WindowStyle IconOverride, Icon $[HOME]/.fvwm/icon.tmp.$[w.id].png 646 | 647 | DestroyFunc DeThumbnail 648 | AddToFunc DeThumbnail 649 | + I PipeRead "echo WindowStyle Icon \\$\\[Icon-$[w.id]\\]" 650 | + I UnsetEnv Icon-$[w.id] 651 | + I Exec rm -f $[HOME]/.fvwm/icon.tmp.$[w.id].png 652 | 653 | # leave cursor alone when alt-tabbing (thx https://www.shuangrimu.com/posts/fvwm-and-alt-tab.html) 654 | DestroyFunc WindowListFunc 655 | AddToFunc WindowListFunc 656 | + I Iconify off 657 | + I FlipFocus 658 | + I Raise 659 | --------------------------------------------------------------------------------