@@ -0,0 +1,64 @@ | |||
deprOS | |||
====== | |||
**"Depression Operating System"** or **"Depressed Operating System"** or **"Depressing Operating System"** | |||
_Status: **release** | |||
**About** | |||
This repo contains the configuration files for archiso to build deprOS. | |||
deprOS is a live OS that is made for browsing the internet via Tor Browser. | |||
It comes with openbox windowmanager giving the user a reconfigured version of tor-browser in fullscreen. | |||
You could turn this into a practical Tor-Browser live OS by reseting userChrome.css, rc.xml, torbutton@torproject.org.xpi, tor-launcher@torproject.org.xpi and prefs.js. That's not what I intended this software for, but whatever - copyleft | |||
A website local website emulates a desktop environment. | |||
You can download the latest build here: [link](https://www.victorgiers.com/deprOS/iso/deprOS-build42-x86_64.iso) | |||
**Requirements** | |||
To build an Arch based custom live OS all you need is a system with archiso and pacman. | |||
**Devlog** | |||
deprOS was first built on a slightly reconfigured installation of Arch Linux as distributed on 2018.11.01 (archlinux-2018.11.01-x86_64.iso) with the kernel taken as is. | |||
We then used archiso to recreate it as live-OS. | |||
Arch is good because of its conveniences and hardware support. | |||
The Arch installation can still use some slimming down, it is still slightly bigger than 700mb. | |||
After booting deprOS it automatically logs in as root (root is the only user) and gives the user a shell-based WiFi-selection (wifi-menu) if internet connection is not present. | |||
After internet connection was established, deprOS starts xinit with an openbox-session which has the tor-browser in its autostart, directing it to an index.html file present in file:///root.index.html, which contains the website that is the "desktop". | |||
The browser is slightly reconfigured, it comes with a custom addon (deprOS-shutdown to shut down the OS from the browser) and custom design which tries to hide as much as possible from the user. | |||
Changes were made to tor-launcher and tor-button. | |||
deprOS comes with Arch's universal video drivers xf86-video-vesa and pulseaudio. | |||
It's a bit of a pain to get pulseaudio running as root, but not having a user is part of the concept. | |||
Steps to reproduce building deprOS in a nutshell: | |||
- install archiso | |||
- copy releng example config file | |||
- run build.sh | |||
... | |||
**ToDo** | |||
Soon: | |||
- concept how to handle keyboard (remove all keyshortcuts from system or disable entirely? don't want user to browse sites which are not depressing) | |||
- finish frontend, make it dynamic for later | |||
- keyboard layouts autodetect? wtf | |||
- "Meh.." - Error Messages --> Locale files | |||
- water-proof display detection (Xauthority?) | |||
**TL;DR** | |||
deprOS depresses you and / or your computer. | |||
It offers as little interaction and configuration as necessary. | |||
It's a live operating system for your computer that comes on an USB stick. If you stick it into your computer, it should boot into deprOS instead of your usual operating system. | |||
Taking control over systems away from the user makes things easier. While gaining proportionally less control, we have access to a huge amount of more and more information. | |||
I believe parts of these two trends are not healthy and we the people have not found good ways of dealing with these parts yet. Or is it just me? | |||
deprOS plays right into the vicious cycle of being informationally overfed and using dumb (aka smart) and restrictious interfaces. This is satire. | |||
It also plays with the spoiled gluttony of having food, drugs, communication, sex and even intel at the very tip of your finger. All you have to do is click. | |||
@@ -0,0 +1,10 @@ | |||
<!DOCTYPE busconfig PUBLIC | |||
"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" | |||
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> | |||
<busconfig> | |||
<policy user="pulse"> | |||
<allow own="org.pulseaudio.Server"/> | |||
<allow send_destination="org.pulseaudio.Server"/> | |||
<allow receive_sender="org.pulseaudio.Server"/> | |||
</policy> | |||
</busconfig> |
@@ -0,0 +1 @@ | |||
archiso |
@@ -0,0 +1 @@ | |||
LANG=en_US.UTF-8 |
@@ -0,0 +1,7 @@ | |||
# The broadcom-wl package requires some modules to be disabled in order to use | |||
# wl. Since the ISO image needs to cover many hardware cases, this file | |||
# overrides the default blacklist in /usr/lib/modprobe.d/ | |||
# | |||
# If you need to use wl, you may need to delete this file, then `rmmod` any | |||
# already-loaded modules that are now blacklisted before proceeding to modprobe | |||
# wl itself. |
@@ -0,0 +1 @@ | |||
kernel.printk = 3 3 3 3 |
@@ -0,0 +1,26 @@ | |||
#!/bin/bash | |||
get_cmdline() { | |||
local param | |||
for param in $(< /proc/cmdline); do | |||
case "${param}" in | |||
$1=*) echo "${param##*=}"; | |||
return 0 | |||
;; | |||
esac | |||
done | |||
} | |||
mirror=$(get_cmdline mirror) | |||
[[ $mirror = auto ]] && mirror=$(get_cmdline archiso_http_srv) | |||
[[ $mirror ]] || exit 0 | |||
mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.orig | |||
cat >/etc/pacman.d/mirrorlist << EOF | |||
# | |||
# Arch Linux repository mirrorlist | |||
# Generated by archiso | |||
# | |||
Server = ${mirror%%/}/\$repo/os/\$arch | |||
EOF |
@@ -0,0 +1,10 @@ | |||
[Unit] | |||
Description=Choose mirror from the kernel command line | |||
ConditionKernelCommandLine=mirror | |||
[Service] | |||
Type=oneshot | |||
ExecStart=/etc/systemd/scripts/choose-mirror | |||
[Install] | |||
WantedBy=multi-user.target |
@@ -0,0 +1,8 @@ | |||
[Unit] | |||
Description=Temporary /etc/pacman.d/gnupg directory | |||
[Mount] | |||
What=tmpfs | |||
Where=/etc/pacman.d/gnupg | |||
Type=tmpfs | |||
Options=mode=0755 |
@@ -0,0 +1,3 @@ | |||
[Service] | |||
ExecStart= | |||
ExecStart=-/sbin/agetty --skip-login --noissue --autologin root %I 38400 linux |
@@ -0,0 +1,15 @@ | |||
[Unit] | |||
Description=Initializes Pacman keyring | |||
Wants=haveged.service | |||
After=haveged.service | |||
Requires=etc-pacman.d-gnupg.mount | |||
After=etc-pacman.d-gnupg.mount | |||
[Service] | |||
Type=oneshot | |||
RemainAfterExit=yes | |||
ExecStart=/usr/bin/pacman-key --init | |||
ExecStart=/usr/bin/pacman-key --populate archlinux | |||
[Install] | |||
WantedBy=multi-user.target |
@@ -0,0 +1 @@ | |||
ACTION=="add", SUBSYSTEM=="net", ENV{INTERFACE}=="en*|eth*", ENV{SYSTEMD_WANTS}="dhcpcd@$name.service" |
@@ -0,0 +1,23 @@ | |||
## | |||
# These things are run when an Openbox X Session is started. | |||
# You may place a similar script in $HOME/.config/openbox/autostart | |||
# to run user-specific things. | |||
# | |||
# If you want to use GNOME config tools... | |||
# | |||
#if test -x /usr/lib/openbox/gnome-settings-daemon >/dev/null; then | |||
# /usr/lib/openbox/gnome-settings-daemon & | |||
#elif which gnome-settings-daemon >/dev/null 2>&1; then | |||
# gnome-settings-daemon & | |||
#fi | |||
# If you want to use XFCE config tools... | |||
# | |||
#xfce-mcs-manager & | |||
xset -b & | |||
xsetroot -solid "#000000" & | |||
setxkmap de & | |||
/root/.tor-browser/app/Browser/start-tor-browser file:///root/index.html & | |||
#/root/.tor-browser/app/Browser/start-tor-browser about:config & |
@@ -0,0 +1,12 @@ | |||
# | |||
# Set system-wide environment variables here for Openbox | |||
# User-specific variables should be placed in $HOME/.config/openbox/environment | |||
# | |||
export PATH=$HOME/bin:$PATH | |||
# To set your language for displaying messages and time/date formats, use the following: | |||
LANG=de_DE.UTF8 | |||
# To set your keyboard layout, you need to modify your X config: | |||
# http://www.google.com/search?q=how+to+set+keyboard+layout+xorg |
@@ -0,0 +1,394 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<openbox_menu xmlns="http://openbox.org/3.4/menu"> | |||
<menu id="apps-accessories-menu" label="Accessories"> | |||
<item label="Calculator"> | |||
<action name="Execute"> | |||
<command>gnome-calculator</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="Character Map"> | |||
<action name="Execute"> | |||
<command>gnome-character-map</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="Ark File Archiver"> | |||
<action name="Execute"> | |||
<command>ark</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
</menu> | |||
<menu id="apps-editors-menu" label="Editors"> | |||
<item label="GVim"> | |||
<action name="Execute"> | |||
<command>gvim</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
<wmclass>GVim</wmclass> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="Emacs"> | |||
<action name="Execute"> | |||
<command>emacs</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
<wmclass>Emacs</wmclass> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="GEdit"> | |||
<action name="Execute"> | |||
<command>gedit</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="Kate"> | |||
<action name="Execute"> | |||
<command>kate</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="Kwrite"> | |||
<action name="Execute"> | |||
<command>kwrite</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
</menu> | |||
<menu id="apps-term-menu" label="Terminals"> | |||
<item label="Rxvt Unicode"> | |||
<action name="Execute"> | |||
<command>urxvt</command> | |||
</action> | |||
</item> | |||
<item label="Gnome Terminal"> | |||
<action name="Execute"> | |||
<command>gnome-terminal</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="Xfce Terminal"> | |||
<action name="Execute"> | |||
<command>xfce4-terminal</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="Konsole"> | |||
<action name="Execute"> | |||
<command>konsole</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="Xterm"> | |||
<action name="Execute"><command>xterm</command></action> | |||
</item> | |||
</menu> | |||
<menu id="apps-net-menu" label="Internet"> | |||
<item label="Firefox"> | |||
<action name="Execute"> | |||
<command>firefox</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
<wmclass>Firefox</wmclass> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="Opera"> | |||
<action name="Execute"> | |||
<command>opera</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
<wmclass>Opera</wmclass> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="Konqueror"> | |||
<action name="Execute"> | |||
<command>konqueror</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="Epiphany"> | |||
<action name="Execute"> | |||
<command>epiphany</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="Pidgin Instant Messenger"> | |||
<action name="Execute"> | |||
<command>pidgin</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="Kopete Instant Messenger"> | |||
<action name="Execute"> | |||
<command>kopete</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="XChat"> | |||
<action name="Execute"> | |||
<command>xchat</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
</menu> | |||
<menu id="apps-office-menu" label="Office"> | |||
<item label="OpenOffice Base"> | |||
<action name="Execute"> | |||
<command>ooffice -base</command> | |||
</action> | |||
</item> | |||
<item label="OpenOffice Calc"> | |||
<action name="Execute"> | |||
<command>ooffice -calc</command> | |||
</action> | |||
</item> | |||
<item label="OpenOffice Draw"> | |||
<action name="Execute"> | |||
<command>ooffice -draw</command> | |||
</action> | |||
</item> | |||
<item label="OpenOffice Impress"> | |||
<action name="Execute"> | |||
<command>ooffice -impress</command> | |||
</action> | |||
</item> | |||
<item label="OpenOffice Math"> | |||
<action name="Execute"> | |||
<command>ooffice -math</command> | |||
</action> | |||
</item> | |||
<item label="OpenOffice Printer Administration"> | |||
<action name="Execute"> | |||
<command>ooffice-printeradmin</command> | |||
</action> | |||
</item> | |||
<item label="OpenOffice Writer"> | |||
<action name="Execute"> | |||
<command>ooffice -writer</command> | |||
</action> | |||
</item> | |||
</menu> | |||
<menu id="apps-multimedia-menu" label="Multimedia"> | |||
<item label="Amarok"> | |||
<action name="Execute"> | |||
<command>amarok</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="Rhythmbox"> | |||
<action name="Execute"> | |||
<command>rhythmbox</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="K3b"> | |||
<action name="Execute"> | |||
<command>k3b</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="MPlayer"> | |||
<action name="Execute"> | |||
<command>gmplayer</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
<wmclass>MPlayer</wmclass> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="Totem"> | |||
<action name="Execute"> | |||
<command>totem</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
</menu> | |||
<menu id="apps-fileman-menu" label="File Managers"> | |||
<item label="Nautilus"> | |||
<action name="Execute"> | |||
<command>nautilus --no-desktop --browser</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="Thunar"> | |||
<action name="Execute"> | |||
<command>Thunar</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="KDE File Manager"> | |||
<action name="Execute"> | |||
<command>kfmclient openURL ~</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="Rox"> | |||
<action name="Execute"> | |||
<command>rox</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
<wmclass>ROX-Filer</wmclass> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="PCMan File Manager"> | |||
<action name="Execute"> | |||
<command>pcmanfm</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
</menu> | |||
<menu id="apps-graphics-menu" label="Graphics"> | |||
<item label="Gimp"> | |||
<action name="Execute"> | |||
<command>gimp</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="Gwenview"> | |||
<action name="Execute"> | |||
<command>gwenview</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="Dia Diagram Editor"> | |||
<action name="Execute"> | |||
<command>dia</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<item label="Inkscape"> | |||
<action name="Execute"> | |||
<command>inkscape</command> | |||
<startupnotify> | |||
<enabled>yes</enabled> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
</menu> | |||
<menu id="system-menu" label="System"> | |||
<item label="Openbox Configuration Manager"> | |||
<action name="Execute"> | |||
<command>obconf</command> | |||
<startupnotify><enabled>yes</enabled></startupnotify> | |||
</action> | |||
</item> | |||
<item label="Gnome Control Center"> | |||
<action name="Execute"> | |||
<command>gnome-control-center</command> | |||
<startupnotify><enabled>yes</enabled></startupnotify> | |||
</action> | |||
</item> | |||
<item label="KDE Control Center"> | |||
<action name="Execute"> | |||
<command>kcontrol</command> | |||
<startupnotify><enabled>yes</enabled></startupnotify> | |||
</action> | |||
</item> | |||
<item label="Xfce Settings"> | |||
<action name="Execute"> | |||
<command>xfce-setting-show</command> | |||
<startupnotify><enabled>yes</enabled></startupnotify> | |||
</action> | |||
</item> | |||
<item label="Manage Cups Printers"> | |||
<action name="Execute"> | |||
<command>xdg-open http://localhost:631/</command> | |||
<startupnotify> | |||
<enabled>no</enabled> | |||
<icon>cups</icon> | |||
</startupnotify> | |||
</action> | |||
</item> | |||
<separator /> | |||
<item label="Reconfigure Openbox"> | |||
<action name="Reconfigure" /> | |||
</item> | |||
</menu> | |||
<menu id="root-menu" label="Openbox 3"> | |||
<separator label="Applications" /> | |||
<menu id="apps-accessories-menu"/> | |||
<menu id="apps-editors-menu"/> | |||
<menu id="apps-graphics-menu"/> | |||
<menu id="apps-net-menu"/> | |||
<menu id="apps-office-menu"/> | |||
<menu id="apps-multimedia-menu"/> | |||
<menu id="apps-term-menu"/> | |||
<menu id="apps-fileman-menu"/> | |||
<separator label="System" /> | |||
<menu id="system-menu"/> | |||
<separator /> | |||
<item label="Log Out"> | |||
<action name="Exit"> | |||
<prompt>yes</prompt> | |||
</action> | |||
</item> | |||
</menu> | |||
</openbox_menu> |
@@ -0,0 +1,893 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<!-- Do not edit this file, it will be overwritten on install. | |||
Copy the file to $HOME/.config/openbox/ instead. --> | |||
<openbox_config xmlns="http://openbox.org/3.4/rc" xmlns:xi="http://www.w3.org/2001/XInclude"> | |||
<resistance> | |||
<strength>10</strength> | |||
<screen_edge_strength>20</screen_edge_strength> | |||
</resistance> | |||
<focus> | |||
<focusNew>yes</focusNew> | |||
<!-- always try to focus new windows when they appear. other rules do | |||
apply --> | |||
<followMouse>no</followMouse> | |||
<!-- move focus to a window when you move the mouse into it --> | |||
<focusLast>yes</focusLast> | |||
<!-- focus the last used window when changing desktops, instead of the one | |||
under the mouse pointer. when followMouse is enabled --> | |||
<underMouse>no</underMouse> | |||
<!-- move focus under the mouse, even when the mouse is not moving --> | |||
<focusDelay>200</focusDelay> | |||
<!-- when followMouse is enabled, the mouse must be inside the window for | |||
this many milliseconds (1000 = 1 sec) before moving focus to it --> | |||
<raiseOnFocus>no</raiseOnFocus> | |||
<!-- when followMouse is enabled, and a window is given focus by moving the | |||
mouse into it, also raise the window --> | |||
</focus> | |||
<placement> | |||
<policy>Smart</policy> | |||
<!-- 'Smart' or 'UnderMouse' --> | |||
<center>yes</center> | |||
<!-- whether to place windows in the center of the free area found or | |||
the top left corner --> | |||
<monitor>Primary</monitor> | |||
<!-- with Smart placement on a multi-monitor system, try to place new windows | |||
on: 'Any' - any monitor, 'Mouse' - where the mouse is, 'Active' - where | |||
the active window is, 'Primary' - only on the primary monitor --> | |||
<primaryMonitor>1</primaryMonitor> | |||
<!-- The monitor where Openbox should place popup dialogs such as the | |||
focus cycling popup, or the desktop switch popup. It can be an index | |||
from 1, specifying a particular monitor. Or it can be one of the | |||
following: 'Mouse' - where the mouse is, or | |||
'Active' - where the active window is --> | |||
</placement> | |||
<theme> | |||
<name>darknessFall</name> | |||
<titleLayout>LIMC</titleLayout> | |||
<!-- | |||
available characters are NDSLIMC, each can occur at most once. | |||
N: window icon | |||
L: window label (AKA title). | |||
I: iconify | |||
M: maximize | |||
C: close | |||
S: shade (roll up/down) | |||
D: omnipresent (on all desktops). | |||
--> | |||
<keepBorder>yes</keepBorder> | |||
<animateIconify>yes</animateIconify> | |||
<font place="ActiveWindow"> | |||
<name>sans</name> | |||
<size>8</size> | |||
<!-- font size in points --> | |||
<weight>bold</weight> | |||
<!-- 'bold' or 'normal' --> | |||
<slant>normal</slant> | |||
<!-- 'italic' or 'normal' --> | |||
</font> | |||
<font place="InactiveWindow"> | |||
<name>sans</name> | |||
<size>8</size> | |||
<!-- font size in points --> | |||
<weight>bold</weight> | |||
<!-- 'bold' or 'normal' --> | |||
<slant>normal</slant> | |||
<!-- 'italic' or 'normal' --> | |||
</font> | |||
<font place="MenuHeader"> | |||
<name>sans</name> | |||
<size>9</size> | |||
<!-- font size in points --> | |||
<weight>normal</weight> | |||
<!-- 'bold' or 'normal' --> | |||
<slant>normal</slant> | |||
<!-- 'italic' or 'normal' --> | |||
</font> | |||
<font place="MenuItem"> | |||
<name>sans</name> | |||
<size>9</size> | |||
<!-- font size in points --> | |||
<weight>normal</weight> | |||
<!-- 'bold' or 'normal' --> | |||
<slant>normal</slant> | |||
<!-- 'italic' or 'normal' --> | |||
</font> | |||
<font place="ActiveOnScreenDisplay"> | |||
<name>sans</name> | |||
<size>9</size> | |||
<!-- font size in points --> | |||
<weight>bold</weight> | |||
<!-- 'bold' or 'normal' --> | |||
<slant>normal</slant> | |||
<!-- 'italic' or 'normal' --> | |||
</font> | |||
<font place="InactiveOnScreenDisplay"> | |||
<name>sans</name> | |||
<size>9</size> | |||
<!-- font size in points --> | |||
<weight>bold</weight> | |||
<!-- 'bold' or 'normal' --> | |||
<slant>normal</slant> | |||
<!-- 'italic' or 'normal' --> | |||
</font> | |||
</theme> | |||
<desktops> | |||
<!-- this stuff is only used at startup, pagers allow you to change them | |||
during a session | |||
these are default values to use when other ones are not already set | |||
by other applications, or saved in your session | |||
use obconf if you want to change these without having to log out | |||
and back in --> | |||
<number>2</number> | |||
<firstdesk>1</firstdesk> | |||
<names> | |||
<!-- set names up here if you want to, like this: | |||
<name>desktop 1</name> | |||
<name>desktop 2</name> | |||
--> | |||
</names> | |||
<popupTime>875</popupTime> | |||
<!-- The number of milliseconds to show the popup for when switching | |||
desktops. Set this to 0 to disable the popup. --> | |||
</desktops> | |||
<resize> | |||
<drawContents>yes</drawContents> | |||
<popupShow>Nonpixel</popupShow> | |||
<!-- 'Always', 'Never', or 'Nonpixel' (xterms and such) --> | |||
<popupPosition>Center</popupPosition> | |||
<!-- 'Center', 'Top', or 'Fixed' --> | |||
<popupFixedPosition> | |||
<!-- these are used if popupPosition is set to 'Fixed' --> | |||
<x>10</x> | |||
<!-- positive number for distance from left edge, negative number for | |||
distance from right edge, or 'Center' --> | |||
<y>10</y> | |||
<!-- positive number for distance from top edge, negative number for | |||
distance from bottom edge, or 'Center' --> | |||
</popupFixedPosition> | |||
</resize> | |||
<!-- You can reserve a portion of your screen where windows will not cover when | |||
they are maximized, or when they are initially placed. | |||
Many programs reserve space automatically, but you can use this in other | |||
cases. --> | |||
<margins> | |||
<top>0</top> | |||
<bottom>0</bottom> | |||
<left>0</left> | |||
<right>0</right> | |||
</margins> | |||
<dock> | |||
<position>TopLeft</position> | |||
<!-- (Top|Bottom)(Left|Right|)|Top|Bottom|Left|Right|Floating --> | |||
<floatingX>0</floatingX> | |||
<floatingY>0</floatingY> | |||
<noStrut>no</noStrut> | |||
<stacking>Above</stacking> | |||
<!-- 'Above', 'Normal', or 'Below' --> | |||
<direction>Vertical</direction> | |||
<!-- 'Vertical' or 'Horizontal' --> | |||
<autoHide>no</autoHide> | |||
<hideDelay>300</hideDelay> | |||
<!-- in milliseconds (1000 = 1 second) --> | |||
<showDelay>300</showDelay> | |||
<!-- in milliseconds (1000 = 1 second) --> | |||
<moveButton>Middle</moveButton> | |||
<!-- 'Left', 'Middle', 'Right' --> | |||
</dock> | |||
<keyboard> | |||
<chainQuitKey>C-g</chainQuitKey> | |||
<!-- Keybindings for desktop switching --> | |||
<!-- Mostly disabled --> | |||
<keybind key="W-A-h"> | |||
<action name="GoToDesktop"> | |||
<to>left</to> | |||
<wrap>no</wrap> | |||
</action>l | |||
</keybind> | |||
<keybind key="W-A-l"> | |||
<action name="GoToDesktop"> | |||
<to>right</to> | |||
<wrap>no</wrap> | |||
</action> | |||
</keybind> | |||
<keybind key="W-A-k"> | |||
<action name="GoToDesktop"> | |||
<to>up</to> | |||
<wrap>no</wrap> | |||
</action> | |||
</keybind> | |||
<keybind key="W-A-j"> | |||
<action name="GoToDesktop"> | |||
<to>down</to> | |||
<wrap>no</wrap> | |||
</action> | |||
</keybind> | |||
<keybind key="S-W-A-h"> | |||
<action name="SendToDesktop"> | |||
<to>left</to> | |||
<wrap>no</wrap> | |||
</action> | |||
</keybind> | |||
<keybind key="S-W-A-l"> | |||
<action name="SendToDesktop"> | |||
<to>right</to> | |||
<wrap>no</wrap> | |||
</action> | |||
</keybind> | |||
<keybind key="S-W-A-k"> | |||
<action name="SendToDesktop"> | |||
<to>up</to> | |||
<wrap>no</wrap> | |||
</action> | |||
</keybind> | |||
<keybind key="S-W-A-j"> | |||
<action name="SendToDesktop"> | |||
<to>down</to> | |||
<wrap>no</wrap> | |||
</action> | |||
</keybind> | |||
<!--<keybind key="W-F1"> | |||
<action name="GoToDesktop"> | |||
<to>1</to> | |||
</action> | |||
</keybind> | |||
<keybind key="W-F2"> | |||
<action name="GoToDesktop"> | |||
<to>2</to> | |||
</action> | |||
</keybind> | |||
<keybind key="W-F3"> | |||
<action name="GoToDesktop"> | |||
<to>3</to> | |||
</action> | |||
</keybind> | |||
<keybind key="W-F4"> | |||
<action name="GoToDesktop"> | |||
<to>4</to> | |||
</action> | |||
</keybind>--> | |||
<!--<keybind key="W-C-d"> | |||
<action name="ToggleShowDesktop"/> | |||
</keybind>--> | |||
<!-- Keybindings for windows --> | |||
<keybind key="W-q"> | |||
<action name="Close"/> | |||
</keybind> | |||
<keybind key="A-Escape"> | |||
<action name="Lower"/> | |||
<action name="FocusToBottom"/> | |||
<action name="Unfocus"/> | |||
</keybind> | |||
<keybind key="A-space"> | |||
<action name="ShowMenu"> | |||
<menu>client-menu</menu> | |||
</action> | |||
</keybind> | |||
<!-- Keybindings for window switching --> | |||
<keybind key="W-Tab"> | |||
<action name="NextWindow"> | |||
<finalactions> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</finalactions> | |||
</action> | |||
</keybind> | |||
<keybind key="W-S-Tab"> | |||
<action name="PreviousWindow"> | |||
<finalactions> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</finalactions> | |||
</action> | |||
</keybind> | |||
<keybind key="C-A-Tab"> | |||
<action name="NextWindow"> | |||
<panels>yes</panels> | |||
<desktop>yes</desktop> | |||
<finalactions> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</finalactions> | |||
</action> | |||
</keybind> | |||
<!-- Keybindings for window switching with the arrow keys --> | |||
<keybind key="W-l"> | |||
<action name="DirectionalCycleWindows"> | |||
<direction>right</direction> | |||
</action> | |||
</keybind> | |||
<keybind key="W-h"> | |||
<action name="DirectionalCycleWindows"> | |||
<direction>left</direction> | |||
</action> | |||
</keybind> | |||
<keybind key="W-k"> | |||
<action name="DirectionalCycleWindows"> | |||
<direction>up</direction> | |||
</action> | |||
</keybind> | |||
<keybind key="W-j"> | |||
<action name="DirectionalCycleWindows"> | |||
<direction>down</direction> | |||
</action> | |||
</keybind> | |||
<!-- Keybindings for running applications --> | |||
<!--<keybind key="W-t"> | |||
<action name="Execute"> | |||
<startupnotify> | |||
<enabled>true</enabled> | |||
<name>terminator</name> | |||
</startupnotify> | |||
<command>terminator</command> | |||
</action> | |||
</keybind>--> | |||
<!--<keybind key="W-m"> | |||
<action name="Execute"> | |||
<startupnotify> | |||
<enabled>true</enabled> | |||
<name>dmenu</name> | |||
</startupnotify> | |||
<command>dmenu_run -fn -misc-fixed-*-*-*-*-20-200-*-*-*-*-*-* -i -nf 'gray' -sb 'dark green' -nb 'dim gray'</command> | |||
</action> | |||
</keybind>--> | |||
<keybind key="W-x"> | |||
<action name="Execute"> | |||
<startupnotify> | |||
<enabled>true</enabled> | |||
<name>oblogout</name> | |||
</startupnotify> | |||
<command>oblogout</command> | |||
</action> | |||
</keybind> | |||
<!--<keybind key="W-S-4"> | |||
<action name="Execute"> | |||
<startupnotify> | |||
<enabled>true</enabled> | |||
<name>gnome-screenshot</name> | |||
</startupnotify> | |||
<command>gnome-screenshot</command> | |||
</action> | |||
</keybind>--> | |||
<keybind key="XF86MonBrightnessUp"> | |||
<action name="Execute"> | |||
<command>xbacklight +10</command> | |||
</action> | |||
</keybind> | |||
<keybind key="XF86MonBrightnessDown"> | |||
<action name="Execute"> | |||
<command>xbacklight -10</command> | |||
</action> | |||
</keybind> | |||
<!-- Where installing pulse-audio instead, change 'amixer set' to 'amixer -D pulse set' --> | |||
<keybind key="XF86AudioRaiseVolume"> | |||
<action name="Execute"> | |||
<command>amixer set Master 10%+</command> | |||
</action> | |||
</keybind> | |||
<!-- Where installing pulse-audio instead, change 'amixer set' to 'amixer -D pulse set' --> | |||
<keybind key="XF86AudioLowerVolume"> | |||
<action name="Execute"> | |||
<command>amixer set Master 10%-</command> | |||
</action> | |||
</keybind> | |||
<!-- Where installing pulse-audio instead, nothing needs to be changed --> | |||
<keybind key="XF86AudioMute"> | |||
<action name="Execute"> | |||
<command>amixer set Master toggle</command> | |||
</action> | |||
</keybind> | |||
<!-- Customizations --> | |||
<!-- Window Snapping/Maximize --> | |||
<!-- left --> | |||
<keybind key="W-9"> | |||
<action name="UnmaximizeFull"/> | |||
<action name="MaximizeVert"/> | |||
<action name="MoveResizeTo"> | |||
<width>50%</width> | |||
</action> | |||
<action name="MoveToEdge"> | |||
<direction>west</direction> | |||
</action> | |||
</keybind> | |||
<!-- upper left --> | |||
<keybind key="W-S-9"> | |||
<action name="UnmaximizeFull"/> | |||
<action name="MoveResizeTo"> | |||
<width>50%</width> | |||
<height>50%</height> | |||
</action> | |||
<action name="MoveToEdge"> | |||
<direction>west</direction> | |||
</action> | |||
<action name="MoveToEdge"> | |||
<direction>north</direction> | |||
</action> | |||
</keybind> | |||
<!-- lower left --> | |||
<keybind key="W-C-9"> | |||
<action name="UnmaximizeFull"/> | |||
<action name="MoveResizeTo"> | |||
<width>50%</width> | |||
<height>50%</height> | |||
</action> | |||
<action name="MoveToEdge"> | |||
<direction>west</direction> | |||
</action> | |||
<action name="MoveToEdge"> | |||
<direction>south</direction> | |||
</action> | |||
</keybind> | |||
<!-- right --> | |||
<keybind key="W-0"> | |||
<action name="UnmaximizeFull"/> | |||
<action name="MaximizeVert"/> | |||
<action name="MoveResizeTo"> | |||
<width>50%</width> | |||
</action> | |||
<action name="MoveToEdge"> | |||
<direction>east</direction> | |||
</action> | |||
</keybind> | |||
<!-- upper right --> | |||
<keybind key="W-S-0"> | |||
<action name="UnmaximizeFull"/> | |||
<action name="MoveResizeTo"> | |||
<width>50%</width> | |||
<height>50%</height> | |||
</action> | |||
<action name="MoveToEdge"> | |||
<direction>east</direction> | |||
</action> | |||
<action name="MoveToEdge"> | |||
<direction>north</direction> | |||
</action> | |||
</keybind> | |||
<!-- lower right --> | |||
<keybind key="W-C-0"> | |||
<action name="UnmaximizeFull"/> | |||
<action name="MoveResizeTo"> | |||
<width>50%</width> | |||
<height>50%</height> | |||
</action> | |||
<action name="MoveToEdge"> | |||
<direction>east</direction> | |||
</action> | |||
<action name="MoveToEdge"> | |||
<direction>south</direction> | |||
</action> | |||
</keybind> | |||
<!-- toggle maximize --> | |||
<keybind key="W-Return"> | |||
<action name="ToggleMaximize"/> | |||
</keybind> | |||
<!-- minimize --> | |||
<keybind key="W-m"> | |||
<action name="Iconify"/> | |||
</keybind> | |||
</keyboard> | |||
<mouse> | |||
<dragThreshold>1</dragThreshold> | |||
<!-- number of pixels the mouse must move before a drag begins --> | |||
<doubleClickTime>200</doubleClickTime> | |||
<!-- in milliseconds (1000 = 1 second) --> | |||
<screenEdgeWarpTime>400</screenEdgeWarpTime> | |||
<!-- Time before changing desktops when the pointer touches the edge of the | |||
screen while moving a window, in milliseconds (1000 = 1 second). | |||
Set this to 0 to disable warping --> | |||
<screenEdgeWarpMouse>false</screenEdgeWarpMouse> | |||
<!-- Set this to TRUE to move the mouse pointer across the desktop when | |||
switching due to hitting the edge of the screen --> | |||
<context name="Frame"> | |||
<mousebind button="A-Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
<mousebind button="A-Left" action="Click"> | |||
<action name="Unshade"/> | |||
</mousebind> | |||
<mousebind button="S-Left" action="Drag"> | |||
<action name="Move"/> | |||
</mousebind> | |||
<mousebind button="A-Right" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</mousebind> | |||
<mousebind button="A-Right" action="Drag"> | |||
<action name="Resize"/> | |||
</mousebind> | |||
<mousebind button="A-Middle" action="Press"> | |||
<action name="Lower"/> | |||
<action name="FocusToBottom"/> | |||
<action name="Unfocus"/> | |||
</mousebind> | |||
<mousebind button="A-Up" action="Click"> | |||
<action name="GoToDesktop"> | |||
<to>previous</to> | |||
</action> | |||
</mousebind> | |||
<mousebind button="A-Down" action="Click"> | |||
<action name="GoToDesktop"> | |||
<to>next</to> | |||
</action> | |||
</mousebind> | |||
<mousebind button="C-A-Up" action="Click"> | |||
<action name="GoToDesktop"> | |||
<to>previous</to> | |||
</action> | |||
</mousebind> | |||
<mousebind button="C-A-Down" action="Click"> | |||
<action name="GoToDesktop"> | |||
<to>next</to> | |||
</action> | |||
</mousebind> | |||
<mousebind button="A-S-Up" action="Click"> | |||
<action name="SendToDesktop"> | |||
<to>previous</to> | |||
</action> | |||
</mousebind> | |||
<mousebind button="A-S-Down" action="Click"> | |||
<action name="SendToDesktop"> | |||
<to>next</to> | |||
</action> | |||
</mousebind> | |||
</context> | |||
<context name="Titlebar"> | |||
<mousebind button="Left" action="Drag"> | |||
<action name="Move"/> | |||
</mousebind> | |||
<mousebind button="Left" action="DoubleClick"> | |||
<action name="ToggleMaximize"/> | |||
</mousebind> | |||
<mousebind button="Up" action="Click"> | |||
<action name="if"> | |||
<shaded>no</shaded> | |||
<then> | |||
<action name="Shade"/> | |||
<action name="FocusToBottom"/> | |||
<action name="Unfocus"/> | |||
<action name="Lower"/> | |||
</then> | |||
</action> | |||
</mousebind> | |||
<mousebind button="Down" action="Click"> | |||
<action name="if"> | |||
<shaded>yes</shaded> | |||
<then> | |||
<action name="Unshade"/> | |||
<action name="Raise"/> | |||
</then> | |||
</action> | |||
</mousebind> | |||
</context> | |||
<context name="Titlebar Top Right Bottom Left TLCorner TRCorner BRCorner BLCorner"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</mousebind> | |||
<mousebind button="Middle" action="Press"> | |||
<action name="Lower"/> | |||
<action name="FocusToBottom"/> | |||
<action name="Unfocus"/> | |||
</mousebind> | |||
<mousebind button="Right" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="ShowMenu"> | |||
<menu>client-menu</menu> | |||
</action> | |||
</mousebind> | |||
</context> | |||
<context name="Top"> | |||
<mousebind button="Left" action="Drag"> | |||
<action name="Resize"> | |||
<edge>top</edge> | |||
</action> | |||
</mousebind> | |||
</context> | |||
<context name="Left"> | |||
<mousebind button="Left" action="Drag"> | |||
<action name="Resize"> | |||
<edge>left</edge> | |||
</action> | |||
</mousebind> | |||
</context> | |||
<context name="Right"> | |||
<mousebind button="Left" action="Drag"> | |||
<action name="Resize"> | |||
<edge>right</edge> | |||
</action> | |||
</mousebind> | |||
</context> | |||
<context name="Bottom"> | |||
<mousebind button="Left" action="Drag"> | |||
<action name="Resize"> | |||
<edge>bottom</edge> | |||
</action> | |||
</mousebind> | |||
<mousebind button="Right" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="ShowMenu"> | |||
<menu>client-menu</menu> | |||
</action> | |||
</mousebind> | |||
</context> | |||
<context name="TRCorner BRCorner TLCorner BLCorner"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Drag"> | |||
<action name="Resize"/> | |||
</mousebind> | |||
</context> | |||
<context name="Client"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
<mousebind button="Middle" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
<mousebind button="Right" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
</context> | |||
<context name="Icon"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
<action name="ShowMenu"> | |||
<menu>client-menu</menu> | |||
</action> | |||
</mousebind> | |||
<mousebind button="Right" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="ShowMenu"> | |||
<menu>client-menu</menu> | |||
</action> | |||
</mousebind> | |||
</context> | |||
<context name="AllDesktops"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Click"> | |||
<action name="ToggleOmnipresent"/> | |||
</mousebind> | |||
</context> | |||
<context name="Shade"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Click"> | |||
<action name="ToggleShade"/> | |||
</mousebind> | |||
</context> | |||
<context name="Iconify"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Click"> | |||
<action name="Iconify"/> | |||
</mousebind> | |||
</context> | |||
<context name="Maximize"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</mousebind> | |||
<mousebind button="Middle" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</mousebind> | |||
<mousebind button="Right" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Click"> | |||
<action name="ToggleMaximize"/> | |||
</mousebind> | |||
<mousebind button="Middle" action="Click"> | |||
<action name="ToggleMaximize"> | |||
<direction>vertical</direction> | |||
</action> | |||
</mousebind> | |||
<mousebind button="Right" action="Click"> | |||
<action name="ToggleMaximize"> | |||
<direction>horizontal</direction> | |||
</action> | |||
</mousebind> | |||
</context> | |||
<context name="Close"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Click"> | |||
<action name="Close"/> | |||
</mousebind> | |||
</context> | |||
<context name="Desktop"> | |||
<mousebind button="Up" action="Click"> | |||
<action name="GoToDesktop"> | |||
<to>previous</to> | |||
</action> | |||
</mousebind> | |||
<mousebind button="Down" action="Click"> | |||
<action name="GoToDesktop"> | |||
<to>next</to> | |||
</action> | |||
</mousebind> | |||
<mousebind button="A-Up" action="Click"> | |||
<action name="GoToDesktop"> | |||
<to>previous</to> | |||
</action> | |||
</mousebind> | |||
<mousebind button="A-Down" action="Click"> | |||
<action name="GoToDesktop"> | |||
<to>next</to> | |||
</action> | |||
</mousebind> | |||
<mousebind button="C-A-Up" action="Click"> | |||
<action name="GoToDesktop"> | |||
<to>previous</to> | |||
</action> | |||
</mousebind> | |||
<mousebind button="C-A-Down" action="Click"> | |||
<action name="GoToDesktop"> | |||
<to>next</to> | |||
</action> | |||
</mousebind> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
<mousebind button="Right" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
</context> | |||
<context name="Root"> | |||
<!-- Menus --> | |||
<mousebind button="Middle" action="Press"> | |||
<action name="ShowMenu"> | |||
<menu>client-list-combined-menu</menu> | |||
</action> | |||
</mousebind> | |||
<mousebind button="Right" action="Press"> | |||
<action name="ShowMenu"> | |||
<menu>root-menu</menu> | |||
</action> | |||
</mousebind> | |||
</context> | |||
<context name="MoveResize"> | |||
<mousebind button="Up" action="Click"> | |||
<action name="GoToDesktop"> | |||
<to>previous</to> | |||
</action> | |||
</mousebind> | |||
<mousebind button="Down" action="Click"> | |||
<action name="GoToDesktop"> | |||
<to>next</to> | |||
</action> | |||
</mousebind> | |||
<mousebind button="A-Up" action="Click"> | |||
<action name="GoToDesktop"> | |||
<to>previous</to> | |||
</action> | |||
</mousebind> | |||
<mousebind button="A-Down" action="Click"> | |||
<action name="GoToDesktop"> | |||
<to>next</to> | |||
</action> | |||
</mousebind> | |||
</context> | |||
</mouse> | |||
<menu><!-- You can specify more than one menu file in here and they are all loaded, | |||
just don't make menu ids clash or, well, it'll be kind of pointless --><!-- default menu file (or custom one in $HOME/.config/openbox/) --><file>menu.xml</file><hideDelay>200</hideDelay><!-- if a press-release lasts longer than this setting (in milliseconds), the | |||
menu is hidden again --><middle>no</middle><!-- center submenus vertically about the parent entry --><submenuShowDelay>100</submenuShowDelay><!-- time to delay before showing a submenu after hovering over the parent | |||
entry. | |||
if this is a negative value, then the delay is infinite and the | |||
submenu will not be shown until it is clicked on --><submenuHideDelay>400</submenuHideDelay><!-- time to delay before hiding a submenu when selecting another | |||
entry in parent menu --> | |||
if this is a negative value, then the delay is infinite and the | |||
submenu will not be hidden until a different submenu is opened --> | |||
<applicationIcons>no</applicationIcons> | |||
<!-- controls if icons appear in the client-list-(combined-)menu --> | |||
<manageDesktops>no</manageDesktops> | |||
<!-- show the manage desktops section in the client-list-(combined-)menu --> | |||
</menu> | |||
<applications> | |||
<!-- customizations --> | |||
<!-- Window decorations --> | |||
<!-- Match all windows and remove their decorations --> | |||
<application class="*"> <decor>yes</decor> </application> | |||
<!-- Give back decorations to some app windows --> | |||
<!--<application name="galculator"> <decor>yes</decor> </application>--> | |||
<!-- | |||
# this is an example with comments through out. use these to make your | |||
# own rules, but without the comments of course. | |||
# you may use one or more of the name/class/role/title/type rules to specify | |||
# windows to match | |||
<application name="the window's _OB_APP_NAME property (see obxprop)" | |||
class="the window's _OB_APP_CLASS property (see obxprop)" | |||
role="the window's _OB_APP_ROLE property (see obxprop)" | |||
title="the window's _OB_APP_TITLE property (see obxprop)" | |||
type="the window's _OB_APP_TYPE property (see obxprob).. | |||
(if unspecified, then it is 'dialog' for child windows)"> | |||
# you may set only one of name/class/role/title/type, or you may use more | |||
# than one together to restrict your matches. | |||
# the name, class, role, and title use simple wildcard matching such as those | |||
# used by a shell. you can use * to match any characters and ? to match | |||
# any single character. | |||
# the type is one of: normal, dialog, splash, utility, menu, toolbar, dock, | |||
# or desktop | |||
# when multiple rules match a window, they will all be applied, in the | |||
# order that they appear in this list | |||
# each rule element can be left out or set to 'default' to specify to not | |||
# change that attribute of the window | |||
<decor>yes</decor> | |||
# enable or disable window decorations | |||
<shade>no</shade> | |||
# make the window shaded when it appears, or not | |||
<position force="no"> | |||
# the position is only used if both an x and y coordinate are provided | |||
# (and not set to 'default') | |||
# when force is "yes", then the window will be placed here even if it | |||
# says you want it placed elsewhere. this is to override buggy | |||
# applications who refuse to behave | |||
<x>center</x> | |||
# a number like 50, or 'center' to center on screen. use a negative number | |||
# to start from the right (or bottom for <y>), ie -50 is 50 pixels from the | |||
# right edge (or bottom). | |||
<y>200</y> | |||
<monitor>1</monitor> | |||
# specifies the monitor in a xinerama setup. | |||
# 1 is the first head, or 'mouse' for wherever the mouse is | |||
</position> | |||
<focus>yes</focus> | |||
# if the window should try be given focus when it appears. if this is set | |||
# to yes it doesn't guarantee the window will be given focus. some | |||
# restrictions may apply, but Openbox will try to | |||
<desktop>1</desktop> | |||
# 1 is the first desktop, 'all' for all desktops | |||
<layer>normal</layer> | |||
# 'above', 'normal', or 'below' | |||
<iconic>no</iconic> | |||
# make the window iconified when it appears, or not | |||
<skip_pager>no</skip_pager> | |||
# asks to not be shown in pagers | |||
<skip_taskbar>no</skip_taskbar> | |||
# asks to not be shown in taskbars. window cycling actions will also | |||
# skip past such windows | |||
<fullscreen>yes</fullscreen> | |||
# make the window in fullscreen mode when it appears | |||
<maximized>true</maximized> | |||
# 'Horizontal', 'Vertical' or boolean (yes/no) | |||
</application> | |||
# end of the example | |||
--> | |||
</applications> | |||
</openbox_config> |
@@ -0,0 +1,348 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<!-- Do not edit this file, it will be overwritten on install. | |||
Copy the file to $HOME/.config/openbox/ instead. --> | |||
<openbox_config xmlns="http://openbox.org/3.4/rc" xmlns:xi="http://www.w3.org/2001/XInclude"> | |||
<resistance> | |||
<strength>10</strength> | |||
<screen_edge_strength>20</screen_edge_strength> | |||
</resistance> | |||
<focus> | |||
<focusNew>yes</focusNew> | |||
<!-- always try to focus new windows when they appear. other rules do | |||
apply --> | |||
<followMouse>no</followMouse> | |||
<!-- move focus to a window when you move the mouse into it --> | |||
<focusLast>no</focusLast> | |||
<!-- focus the last used window when changing desktops, instead of the one | |||
under the mouse pointer. when followMouse is enabled --> | |||
<underMouse>no</underMouse> | |||
<!-- move focus under the mouse, even when the mouse is not moving --> | |||
<focusDelay>250</focusDelay> | |||
<!-- when followMouse is enabled, the mouse must be inside the window for | |||
this many milliseconds (1000 = 1 sec) before moving focus to it --> | |||
<raiseOnFocus>no</raiseOnFocus> | |||
<!-- when followMouse is enabled, and a window is given focus by moving the | |||
mouse into it, also raise the window --> | |||
</focus> | |||
<placement> | |||
<policy>Smart</policy> | |||
<!-- 'Smart' or 'UnderMouse' --> | |||
<center>no</center> | |||
<!-- whether to place windows in the center of the free area found or | |||
the top left corner --> | |||
<monitor>Primary</monitor> | |||
<!-- with Smart placement on a multi-monitor system, try to place new windows | |||
on: 'Any' - any monitor, 'Mouse' - where the mouse is, 'Active' - where | |||
the active window is, 'Primary' - only on the primary monitor --> | |||
<primaryMonitor>1</primaryMonitor> | |||
<!-- The monitor where Openbox should place popup dialogs such as the | |||
focus cycling popup, or the desktop switch popup. It can be an index | |||
from 1, specifying a particular monitor. Or it can be one of the | |||
following: 'Mouse' - where the mouse is, or | |||
'Active' - where the active window is --> | |||
</placement> | |||
<theme> | |||
<name>Clearlooks</name> | |||
<titleLayout>CS</titleLayout> | |||
<!-- | |||
available characters are NDSLIMC, each can occur at most once. | |||
N: window icon | |||
L: window label (AKA title). | |||
I: iconify | |||
M: maximize | |||
C: close | |||
S: shade (roll up/down) | |||
D: omnipresent (on all desktops). | |||
--> | |||
<keepBorder>no</keepBorder> | |||
<animateIconify>no</animateIconify> | |||
<font place="ActiveWindow"> | |||
<name>sans</name> | |||
<size>8</size> | |||
<!-- font size in points --> | |||
<weight>bold</weight> | |||
<!-- 'bold' or 'normal' --> | |||
<slant>normal</slant> | |||
<!-- 'italic' or 'normal' --> | |||
</font> | |||
<font place="InactiveWindow"> | |||
<name>sans</name> | |||
<size>8</size> | |||
<!-- font size in points --> | |||
<weight>bold</weight> | |||
<!-- 'bold' or 'normal' --> | |||
<slant>normal</slant> | |||
<!-- 'italic' or 'normal' --> | |||
</font> | |||
<font place="MenuHeader"> | |||
<name>sans</name> | |||
<size>9</size> | |||
<!-- font size in points --> | |||
<weight>normal</weight> | |||
<!-- 'bold' or 'normal' --> | |||
<slant>normal</slant> | |||
<!-- 'italic' or 'normal' --> | |||
</font> | |||
<font place="MenuItem"> | |||
<name>sans</name> | |||
<size>9</size> | |||
<!-- font size in points --> | |||
<weight>normal</weight> | |||
<!-- 'bold' or 'normal' --> | |||
<slant>normal</slant> | |||
<!-- 'italic' or 'normal' --> | |||
</font> | |||
<font place="ActiveOnScreenDisplay"> | |||
<name>sans</name> | |||
<size>9</size> | |||
<!-- font size in points --> | |||
<weight>bold</weight> | |||
<!-- 'bold' or 'normal' --> | |||
<slant>normal</slant> | |||
<!-- 'italic' or 'normal' --> | |||
</font> | |||
<font place="InactiveOnScreenDisplay"> | |||
<name>sans</name> | |||
<size>9</size> | |||
<!-- font size in points --> | |||
<weight>bold</weight> | |||
<!-- 'bold' or 'normal' --> | |||
<slant>normal</slant> | |||
<!-- 'italic' or 'normal' --> | |||
</font> | |||
</theme> | |||
<desktops> | |||
<!-- this stuff is only used at startup, pagers allow you to change them | |||
during a session | |||
these are default values to use when other ones are not already set | |||
by other applications, or saved in your session | |||
use obconf if you want to change these without having to log out | |||
and back in --> | |||
<number>2</number> | |||
<firstdesk>1</firstdesk> | |||
<names> | |||
<!-- set names up here if you want to, like this: | |||
<name>desktop 1</name> | |||
<name>desktop 2</name> | |||
--> | |||
</names> | |||
<popupTime>875</popupTime> | |||
<!-- The number of milliseconds to show the popup for when switching | |||
desktops. Set this to 0 to disable the popup. --> | |||
</desktops> | |||
<resize> | |||
<drawContents>yes</drawContents> | |||
<popupShow>Nonpixel</popupShow> | |||
<!-- 'Always', 'Never', or 'Nonpixel' (xterms and such) --> | |||
<popupPosition>Center</popupPosition> | |||
<!-- 'Center', 'Top', or 'Fixed' --> | |||
<popupFixedPosition> | |||
<!-- these are used if popupPosition is set to 'Fixed' --> | |||
<x>10</x> | |||
<!-- positive number for distance from left edge, negative number for | |||
distance from right edge, or 'Center' --> | |||
<y>10</y> | |||
<!-- positive number for distance from top edge, negative number for | |||
distance from bottom edge, or 'Center' --> | |||
</popupFixedPosition> | |||
</resize> | |||
<!-- You can reserve a portion of your screen where windows will not cover when | |||
they are maximized, or when they are initially placed. | |||
Many programs reserve space automatically, but you can use this in other | |||
cases. --> | |||
<margins> | |||
<top>0</top> | |||
<bottom>0</bottom> | |||
<left>0</left> | |||
<right>0</right> | |||
</margins> | |||
<dock> | |||
<position>TopLeft</position> | |||
<!-- (Top|Bottom)(Left|Right|)|Top|Bottom|Left|Right|Floating --> | |||
<floatingX>0</floatingX> | |||
<floatingY>0</floatingY> | |||
<noStrut>no</noStrut> | |||
<stacking>Above</stacking> | |||
<!-- 'Above', 'Normal', or 'Below' --> | |||
<direction>Vertical</direction> | |||
<!-- 'Vertical' or 'Horizontal' --> | |||
<autoHide>no</autoHide> | |||
<hideDelay>300</hideDelay> | |||
<!-- in milliseconds (1000 = 1 second) --> | |||
<showDelay>300</showDelay> | |||
<!-- in milliseconds (1000 = 1 second) --> | |||
<moveButton>Middle</moveButton> | |||
<!-- 'Left', 'Middle', 'Right' --> | |||
</dock> | |||
<mouse> | |||
<dragThreshold>1</dragThreshold> | |||
<!-- number of pixels the mouse must move before a drag begins --> | |||
<doubleClickTime>200</doubleClickTime> | |||
<!-- in milliseconds (1000 = 1 second) --> | |||
<screenEdgeWarpTime>400</screenEdgeWarpTime> | |||
<!-- Time before changing desktops when the pointer touches the edge of the | |||
screen while moving a window, in milliseconds (1000 = 1 second). | |||
Set this to 0 to disable warping --> | |||
<screenEdgeWarpMouse>false</screenEdgeWarpMouse> | |||
<!-- Set this to TRUE to move the mouse pointer across the desktop when | |||
switching due to hitting the edge of the screen --> | |||
<context name="Titlebar"> | |||
<mousebind button="Left" action="Drag"> | |||
<action name="Move"/> | |||
</mousebind> | |||
<mousebind button="Left" action="DoubleClick"> | |||
<action name="ToggleMaximize"/> | |||
</mousebind> | |||
<mousebind button="Up" action="Click"> | |||
<action name="if"> | |||
<shaded>no</shaded> | |||
<then> | |||
<action name="Shade"/> | |||
<action name="FocusToBottom"/> | |||
<action name="Unfocus"/> | |||
<action name="Lower"/> | |||
</then> | |||
</action> | |||
</mousebind> | |||
<mousebind button="Down" action="Click"> | |||
<action name="if"> | |||
<shaded>yes</shaded> | |||
<then> | |||
<action name="Unshade"/> | |||
<action name="Raise"/> | |||
</then> | |||
</action> | |||
</mousebind> | |||
</context> | |||
<context name="Titlebar Top Right Bottom Left TLCorner TRCorner BRCorner BLCorner"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</mousebind> | |||
</context> | |||
<context name="Client"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
</context> | |||
<!-- <context name="Icon"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
<action name="ShowMenu"> | |||
<menu>client-menu</menu> | |||
</action> | |||
</mousebind> | |||
<mousebind button="Right" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="ShowMenu"> | |||
<menu>client-menu</menu> | |||
</action> | |||
</mousebind> | |||
</context> --> | |||
<context name="AllDesktops"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Click"> | |||
<action name="ToggleOmnipresent"/> | |||
</mousebind> | |||
</context> | |||
<context name="Shade"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Click"> | |||
<action name="ToggleShade"/> | |||
</mousebind> | |||
</context> | |||
<context name="Iconify"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Click"> | |||
<action name="Iconify"/> | |||
</mousebind> | |||
</context> | |||
<context name="Maximize"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</mousebind> | |||
</context> | |||
<context name="Close"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Click"> | |||
<action name="Close"/> | |||
</mousebind> | |||
</context> | |||
<context name="Desktop"> | |||
<mousebind button="Up" action="Click"> | |||
<action name="GoToDesktop"> | |||
<to>previous</to> | |||
</action> | |||
</mousebind> | |||
<mousebind button="Down" action="Click"> | |||
<action name="GoToDesktop"> | |||
<to>next</to> | |||
</action> | |||
</mousebind> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
</context> | |||
<context name="MoveResize"> | |||
<mousebind button="Up" action="Click"> | |||
<action name="GoToDesktop"> | |||
<to>previous</to> | |||
</action> | |||
</mousebind> | |||
<mousebind button="Down" action="Click"> | |||
<action name="GoToDesktop"> | |||
<to>next</to> | |||
</action> | |||
</mousebind> | |||
</context> | |||
</mouse> | |||
<menu> | |||
<!-- | |||
<file>menu.xml</file> | |||
<hideDelay>200</hideDelay> | |||
<middle>no</middle> | |||
<submenuShowDelay>100</submenuShowDelay> | |||
<submenuHideDelay>400</submenuHideDelay> | |||
<applicationIcons>no</applicationIcons> | |||
<manageDesktops>no</manageDesktops> | |||
--> | |||
</menu> | |||
<applications> | |||
<application class="*"> | |||
<decor>no</decor> | |||
<maximized>yes</maximized> | |||
<fullscreen>no</fullscreen> | |||
<position force="yes"> | |||
<x>0</x> | |||
<y>0</y> | |||
</position> | |||
</application> | |||
</applications> | |||
</openbox_config> |
@@ -0,0 +1 @@ | |||
v:1: |
@@ -0,0 +1 @@ | |||
8.0.3 |
@@ -0,0 +1,4 @@ | |||
Signature: 8a477f597d28d172789f06886806bc55 | |||
# This file is a cache directory tag created by fontconfig. | |||
# For information about cache directory tags, see: | |||
# http://www.brynosaurus.com/cachedir/ |
@@ -0,0 +1,2 @@ | |||
[Settings] | |||
gtk-primary-button-warps-slider = false |
@@ -0,0 +1,46 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<xbel version="1.0" | |||
xmlns:bookmark="http://www.freedesktop.org/standards/desktop-bookmarks" | |||
xmlns:mime="http://www.freedesktop.org/standards/shared-mime-info" | |||
> | |||
<bookmark href="file:///root/.tor-browser/app/Browser/updater" added="2018-11-22T23:41:44Z" modified="2018-11-22T23:41:44Z" visited="2018-11-22T23:41:44Z"> | |||
<info> | |||
<metadata owner="http://freedesktop.org"> | |||
<mime:mime-type type="application/octet-stream"/> | |||
<bookmark:applications> | |||
<bookmark:application name="Firefox" exec="'firefox %u'" modified="2018-11-22T23:41:44Z" count="1"/> | |||
</bookmark:applications> | |||
</metadata> | |||
</info> | |||
</bookmark> | |||
<bookmark href="file:///root/.tor-browser/app/Browser/TorBrowser/Data/Browser/.mozilla/systemextensionsdev/shutdown/manifest.json" added="2018-11-22T23:42:44Z" modified="2018-11-23T10:06:36Z" visited="2018-11-22T23:42:44Z"> | |||
<info> | |||
<metadata owner="http://freedesktop.org"> | |||
<mime:mime-type type="application/json"/> | |||
<bookmark:applications> | |||
<bookmark:application name="Firefox" exec="'firefox %u'" modified="2018-11-23T10:06:36Z" count="10"/> | |||
</bookmark:applications> | |||
</metadata> | |||
</info> | |||
</bookmark> | |||
<bookmark href="file:///root/.tor-browser/app/Browser/TorBrowser/Data/Browser/.mozilla/systemextensionsdev/add-on/manifest.json" added="2018-11-22T23:55:06Z" modified="2018-11-23T00:02:26Z" visited="2018-11-22T23:55:06Z"> | |||
<info> | |||
<metadata owner="http://freedesktop.org"> | |||
<mime:mime-type type="application/json"/> | |||
<bookmark:applications> | |||
<bookmark:application name="Firefox" exec="'firefox %u'" modified="2018-11-23T00:02:26Z" count="2"/> | |||
</bookmark:applications> | |||
</metadata> | |||
</info> | |||
</bookmark> | |||
<bookmark href="file:///root/.tor-browser/app/Browser/TorBrowser/Data/Browser/.mozilla/systemextensionsdev/shutdown.xpi" added="2018-11-23T10:26:08Z" modified="2018-11-23T10:26:08Z" visited="2018-11-23T10:26:09.248910Z"> | |||
<info> | |||
<metadata owner="http://freedesktop.org"> | |||
<mime:mime-type type="application/x-xpinstall"/> | |||
<bookmark:applications> | |||
<bookmark:application name="Firefox" exec="'firefox %u'" modified="2018-11-23T10:26:08Z" count="1"/> | |||
</bookmark:applications> | |||
</metadata> | |||
</info> | |||
</bookmark> | |||
</xbel> |
@@ -0,0 +1,7 @@ | |||
{ | |||
"name": "shutdown", | |||
"description": "Shutdown the OS from Tor Browser for deprOS", | |||
"path": "/root/.tor-browser/app/Browser/TorBrowser/Data/Browser/.mozilla/systemextensionsdev/shutdown/shutdown.py", | |||
"type": "stdio", | |||
"allowed_extensions": [ "kill@depr.os" ] | |||
} |
@@ -0,0 +1,5 @@ | |||
var port = browser.runtime.connectNative("shutdown"); | |||
browser.browserAction.onClicked.addListener(() => { | |||
port.postMessage("kill"); | |||
}); |
@@ -0,0 +1,28 @@ | |||
{ | |||
"description": "Shutdown the OS from Tor Browser for deprOS", | |||
"manifest_version": 2, | |||
"name": "shutdown", | |||
"version": "1.0", | |||
"icons": { | |||
"48": "icons/quit-48.png" | |||
}, | |||
"applications": { | |||
"gecko": { | |||
"id": "kill@depr.os", | |||
"strict_min_version": "50.0" | |||
} | |||
}, | |||
"background": { | |||
"scripts": ["background.js"] | |||
}, | |||
"browser_action": { | |||
"default_icon": "icons/quit-48.png" | |||
}, | |||
"permissions": ["nativeMessaging"] | |||
} |
@@ -0,0 +1,64 @@ | |||
#!/usr/bin/env python | |||
import sys | |||
import json | |||
import struct | |||
import os | |||
try: | |||
# Python 3.x version | |||
# Read a message from stdin and decode it. | |||
def getMessage(): | |||
rawLength = sys.stdin.buffer.read(4) | |||
if len(rawLength) == 0: | |||
sys.exit(0) | |||
messageLength = struct.unpack('@I', rawLength)[0] | |||
message = sys.stdin.buffer.read(messageLength).decode('utf-8') | |||
return json.loads(message) | |||
# Encode a message for transmission, | |||
# given its content. | |||
def encodeMessage(messageContent): | |||
encodedContent = json.dumps(messageContent).encode('utf-8') | |||
encodedLength = struct.pack('@I', len(encodedContent)) | |||
return {'length': encodedLength, 'content': encodedContent} | |||
# Send an encoded message to stdout | |||
def sendMessage(encodedMessage): | |||
sys.stdout.buffer.write(encodedMessage['length']) | |||
sys.stdout.buffer.write(encodedMessage['content']) | |||
sys.stdout.buffer.flush() | |||
while True: | |||
receivedMessage = getMessage() | |||
if receivedMessage == "kill": | |||
sendMessage(encodeMessage("pong3")) | |||
except AttributeError: | |||
# Python 2.x version (if sys.stdin.buffer is not defined) | |||
# Read a message from stdin and decode it. | |||
def getMessage(): | |||
rawLength = sys.stdin.read(4) | |||
if len(rawLength) == 0: | |||
sys.exit(0) | |||