sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

commit df47d6fac3bf9b9108f9306d6339808be66591f3
parent dc842742887341cabbdf64f1c0a0013f7790b96a
Author: Josuah Demangeon <mail@josuah.net>
Date:   Sat,  8 Sep 2018 20:01:39 +0200

hand-made changes for improving smu(1) compatibility

The changes are kept light so that people who worked on a page find their page mostly unchanged...

* html tables have been replaced by ASCII versions
* lists have been reworked (including nested code blocks in lists)
* consistent use of '*' instead of '-' (now it may be converted at once with sed if wanted).
* favorise tab for code blocks (permit to ignore all lines with a tab while batch converting)
* replace HTML by equivalent markdown
* reformatted some paragraphs

Diffstat:
dwm.suckless.org/customisation/customfuncs/index.md | 28++++++++++++++--------------
dwm.suckless.org/customisation/noapps/index.md | 10+++++-----
dwm.suckless.org/customisation/rules/index.md | 8++++----
dwm.suckless.org/multi-pointer/index.md | 16++++++++--------
dwm.suckless.org/patches/alpha/index.md | 2+-
dwm.suckless.org/patches/centeredmaster/index.md | 48++++++++++++++++++++++++------------------------
dwm.suckless.org/patches/cfacts/index.md | 10+++++-----
dwm.suckless.org/patches/clientspertag/index.md | 36++++++++++++++++++------------------
dwm.suckless.org/patches/cropwindows/index.md | 6+++---
dwm.suckless.org/patches/current_desktop/index.md | 36++++++++++++++++++------------------
dwm.suckless.org/patches/defaulttransparency/index.md | 2+-
dwm.suckless.org/patches/fibonacci/index.md | 46+++++++++++++++++++++++-----------------------
dwm.suckless.org/patches/flextile/index.md | 43+++++++++++++++++++++----------------------
dwm.suckless.org/patches/focusadjacenttag/index.md | 12++++++------
dwm.suckless.org/patches/focusurgent/index.md | 2+-
dwm.suckless.org/patches/freespace/index.md | 18+++++++++---------
dwm.suckless.org/patches/fsignal/index.md | 6+++---
dwm.suckless.org/patches/historical/ansistatuscolors/index.md | 115++++++++++++++++++++++++++++++++++++++++---------------------------------------
dwm.suckless.org/patches/historical/fibonacci/index.md | 8++++----
dwm.suckless.org/patches/historical/movestack/index.md | 6+++---
dwm.suckless.org/patches/historical/nmaster/index.md | 26+++++++++++++-------------
dwm.suckless.org/patches/historical/xft/index.md | 14+++++++-------
dwm.suckless.org/patches/keymodes/index.md | 36++++++++++++++++++------------------
dwm.suckless.org/patches/keypressrelease/index.md | 8++++----
dwm.suckless.org/patches/mark/index.md | 18+++++++++---------
dwm.suckless.org/patches/moveplace/index.md | 8++++----
dwm.suckless.org/patches/moveresize/index.md | 63+++++++++++++++++++++++++++++++--------------------------------
dwm.suckless.org/patches/rmaster/index.md | 1+
dwm.suckless.org/patches/runorraise/index.md | 8++++----
dwm.suckless.org/patches/stacker/index.md | 18+++++++++---------
dwm.suckless.org/patches/statuscolors/index.md | 52++++++++++++++++++++++++++--------------------------
dwm.suckless.org/patches/tab/index.md | 40+++++++++++++++++++---------------------
dwm.suckless.org/patches/tagall/index.md | 12++++++------
dwm.suckless.org/patches/taggrid/index.md | 61+++++++++++++++++++++++++++----------------------------------
dwm.suckless.org/patches/tagintostack/index.md | 6+++---
dwm.suckless.org/patches/three-column/index.md | 20++++++++++----------
dwm.suckless.org/patches/tilegap/index.md | 4++--
dwm.suckless.org/patches/uselessgap/index.md | 55+++++++++++++++++++++++++++----------------------------
dwm.suckless.org/patches/xkb/index.md | 4++--
dwm.suckless.org/patches/xrdb/index.md | 12++++++------
dwm.suckless.org/patches/xtile/index.md | 34+++++++++++++++++-----------------
dwm.suckless.org/status_monitor/email_notifications/index.md | 2+-
ev.suckless.org/satzung/index.md | 44++++++++++++++++++++++----------------------
libs.suckless.org/deprecated/r9p/index.md | 9+++++----
st.suckless.org/goals/index.md | 19+++++++++----------
st.suckless.org/index.md | 2+-
st.suckless.org/patches/alpha/index.md | 8++++----
st.suckless.org/patches/dracula/index.md | 2+-
st.suckless.org/patches/fix_keyboard_input/index.md | 78++++++++++++++++++++++++++++++++++--------------------------------------------
st.suckless.org/patches/keyboard_select/index.md | 36++++++++++++++++--------------------
st.suckless.org/patches/palettes/index.md | 24++++++++++++------------
st.suckless.org/patches/right_click_to_plumb/index.md | 8++++----
st.suckless.org/patches/solarized/index.md | 4++--
st.suckless.org/screenshots/index.md | 8++++----
suckless.org/coding_style/index.md | 80++++++++++++++++++++++++++++++++++++++++----------------------------------------
suckless.org/conferences/2013/index.md | 2+-
suckless.org/conferences/2015/index.md | 58+++++++++++++++++++++++++++++-----------------------------
suckless.org/conferences/2016/index.md | 154++++++++++++++++++++++++++++++++++++++++----------------------------------------
suckless.org/conferences/2017/index.md | 4++--
suckless.org/conferences/2018/index.md | 6+++---
suckless.org/hacking/index.md | 47+++++++++++++++++++++++------------------------
suckless.org/people/more_people/index.md | 1-
suckless.org/rocks/index.md | 110++++++++++++++++++++++++++++++++++++++++----------------------------------------
suckless.org/sucks/systemd/index.md | 332+++++++++++++++++++++++++++++++++++++++----------------------------------------
surf.suckless.org/files/adblock-hosts/index.md | 30+++++++++++++++---------------
surf.suckless.org/files/autorefresh/index.md | 36++++++++++++++++++------------------
surf.suckless.org/files/black_css/index.md | 2+-
surf.suckless.org/files/bmarks/index.md | 2+-
surf.suckless.org/files/bmarks_history/index.md | 5+++--
surf.suckless.org/files/easier_key/index.md | 255+++++++++++++++++++++++++++++++++++++++----------------------------------------
surf.suckless.org/files/easy_links/index.md | 219+++++++++++++++++++++++++++++++++++++++----------------------------------------
surf.suckless.org/files/edit_source/index.md | 20++++++++++----------
surf.suckless.org/files/hide_applets/index.md | 2+-
surf.suckless.org/files/middle_click_link/index.md | 3+--
surf.suckless.org/files/not_flash/index.md | 2+-
surf.suckless.org/index.md | 1-
surf.suckless.org/patches/aria2/index.md | 20++++++++++----------
surf.suckless.org/patches/bookmarking/index.md | 8++++----
surf.suckless.org/patches/history/index.md | 22+++++++++++-----------
surf.suckless.org/patches/instapaper/index.md | 4++--
surf.suckless.org/patches/url-filtering/index.md | 4++--
tools.suckless.org/dmenu/patches/incremental/index.md | 6+++---
tools.suckless.org/dmenu/patches/line-height/index.md | 4++--
tools.suckless.org/dmenu/patches/mouse-support/index.md | 18+++++++++---------
tools.suckless.org/dmenu/patches/navhistory/index.md | 1+
tools.suckless.org/dmenu/patches/pipeout/index.md | 1+
tools.suckless.org/dmenu/patches/prefix-completion/index.md | 5++---
tools.suckless.org/dmenu/patches/scroll/index.md | 2+-
tools.suckless.org/dmenu/scripts/dmenu_run_with_command_history/index.md | 4++--
tools.suckless.org/dmenu/scripts/index.md | 8++++----
tools.suckless.org/farbfeld/index.md | 24++++++++++++------------
tools.suckless.org/ii/bots/index.md | 92++++++++++++++++++++++++++++++++++++++++----------------------------------------
tools.suckless.org/ii/index.md | 35++++++++++++++++++-----------------
tools.suckless.org/ii/patches/ssl/index.md | 5+++--
tools.suckless.org/quark/index.md | 2+-
tools.suckless.org/sent/index.md | 2+-
tools.suckless.org/sic/patches/nodefaultchan/index.md | 2--
tools.suckless.org/slock/index.md | 5+++++
tools.suckless.org/slock/patches/control-clear/index.md | 1+
tools.suckless.org/slock/patches/mediakeys/index.md | 15++++++++-------
tools.suckless.org/slock/patches/message/index.md | 9+++++----
tools.suckless.org/slock/patches/pam_auth/index.md | 2+-
tools.suckless.org/slock/patches/terminalkeys/index.md | 12++++++------
tools.suckless.org/slock/patches/unlock_screen/index.md | 3++-
tools.suckless.org/slstatus/index.md | 2+-
tools.suckless.org/tabbed/patches/alpha/index.md | 8++------
tools.suckless.org/x/xssstate/index.md | 1-
107 files changed, 1436 insertions(+), 1464 deletions(-)

diff --git a/dwm.suckless.org/customisation/customfuncs/index.md b/dwm.suckless.org/customisation/customfuncs/index.md @@ -6,7 +6,7 @@ Custom functions in config.h You don't need to write complex patches to config dwm, some custom functions and sensible key and button definitions in config.h let you turn dwm into whatever you want without messing with dwm.c. Example of config.h ----------------- +------------------- This example is for people who prefer to control dwm with the mouse (for dwm 5.1): @@ -224,7 +224,7 @@ This example is for people who prefer to control dwm with the mouse (for dwm 5.1 } Usage of the above configuration --------------------------- +*------------------------- In case you want to try this configuration there are some differences with the default dwm config to be taken into account. Mouse actions will be explained later, keys have similar behaviour. There are other small changes, but the config.h file should be pretty straightforward. @@ -232,28 +232,28 @@ In case you want to try this configuration there are some differences with the d In the tag buttons: -- B1: view a tag, trying to view the selected tagset will result in a change to the previous one. -- B3: toggle a tag, trying to toggle the last selected tag will result in viewing all tags. -- B2+B1: assign tag to the sel client. -- B2+B3: toggle tag for the sel client, trying to toggle the last tag will result in assigning all tags. +* B1: view a tag, trying to view the selected tagset will result in a change to the previous one. +* B3: toggle a tag, trying to toggle the last selected tag will result in viewing all tags. +* B2+B1: assign tag to the sel client. +* B2+B3: toggle tag for the sel client, trying to toggle the last tag will result in assigning all tags. ###Layouts In the layout symbol: -- B1: toggle between tiled and floating layout. -- B3: toggle between monocle and floating layout. -- Wheel: set master factor (B2 to go back to the default value). +* B1: toggle between tiled and floating layout. +* B3: toggle between monocle and floating layout. +* Wheel: set master factor (B2 to go back to the default value). ###Focusing/Moving/Resizing in the status bar, the root window, or the selected window (with Mod pressed) -- Wheel to focus prev/next client. Floating clients will just be focused after the tiled ones. -- B1 to move (the pointer will be wrapped to the upper-left corner if necessary). -- B3 to resize (the pointer will be wrapped to the bottom-right corner). -- B2 to zoom or toggle floating status if zooming is not possible. +* Wheel to focus prev/next client. Floating clients will just be focused after the tiled ones. +* B1 to move (the pointer will be wrapped to the upper-left corner if necessary). +* B3 to resize (the pointer will be wrapped to the bottom-right corner). +* B2 to zoom or toggle floating status if zooming is not possible. ###Closing windows -- B3+B1 in the status message. +* B3+B1 in the status message. diff --git a/dwm.suckless.org/customisation/noapps/index.md b/dwm.suckless.org/customisation/noapps/index.md @@ -9,9 +9,9 @@ If, like me, you don't want any application to be treated in a special way, you The original code describes what each value represents within the Rule structure. static Rule rules[] = { - /* class instance title tags mask isfloating monitor */ - { "Gimp", NULL, NULL, 0, True, -1 }, - { "Firefox", NULL, NULL, 1 << 8, True, -1 }, + /* class instance title tags mask isfloating monitor */ + { "Gimp", NULL, NULL, 0, True, -1 }, + { "Firefox", NULL, NULL, 1 << 8, True, -1 }, }; For instance, Gimp and Firefox will be labeled as floating windows, even if the layout selected is Monocle or Tiled. @@ -20,8 +20,8 @@ In particular, the tag mask will attach Firefox to tag '9'. If we don't want any window class to be treated in a special way, we need to initialize rules with at least one element: static Rule rules[] = { - /* class instance title tags mask isfloating monitor */ - { NULL, NULL, NULL, 0, False, -1 }, + /* class instance title tags mask isfloating monitor */ + { NULL, NULL, NULL, 0, False, -1 }, }; The code in dwm.c will check that the `class` element is not NULL before any matching is done. diff --git a/dwm.suckless.org/customisation/rules/index.md b/dwm.suckless.org/customisation/rules/index.md @@ -14,9 +14,9 @@ means the currently viewed tags, and the default mode is tiled so isfloating is Example from the default config: static Rule rules[] = { - /* class instance title tags mask isfloating monitor */ - { "Gimp", NULL, NULL, 0, True, -1 }, - { "Firefox", NULL, NULL, 1 << 8, True, -1 }, + /* class instance title tags mask isfloating monitor */ + { "Gimp", NULL, NULL, 0, True, -1 }, + { "Firefox", NULL, NULL, 1 << 8, True, -1 }, }; These rules make every Gimp and Firefox window floating and makes Firefox @@ -37,7 +37,7 @@ The `xprop` utility can be used to get this information: For example this shell script prints the relevant properties of the selected client (if the properties does not contain '`=`' or '`,`'): - xprop |awk ' + xprop | awk ' /^WM_CLASS/{sub(/.* =/, "instance:"); sub(/,/, "\nclass:"); print} /^WM_NAME/{sub(/.* =/, "title:"); print}' diff --git a/dwm.suckless.org/multi-pointer/index.md b/dwm.suckless.org/multi-pointer/index.md @@ -17,7 +17,7 @@ Configuring inputs One way to configure input devices is via the `xinput` tool. Without any arguments given, it should list all the input devices in short format. - xinput + xinput It will print all the master device (cursors on screen) and the slave device (physical device). Master device comes in pair, which is pointer and keyboard. @@ -27,7 +27,7 @@ Adding master device To create another pointer for a new user. First, we add a master device. - xinput create-master Name + xinput create-master Name Another pointer should appear in the center of the screen by now. @@ -37,7 +37,7 @@ Assigning slave device We will then require to assign a slave device to the master device. The *id* of the **master** and **slave** device can be found by using `xinput`. - xinput reattach <slave> <master> + xinput reattach <slave> <master> By the end of this, both pointer can move simultaneously but keyboard cannot type in different application simultaneously, this is normal for window manager @@ -52,7 +52,7 @@ pointer and keyboard master device (not sure if specifying one works). The **window** is the PID of window which can be checked with either `xprop` (useless sometimes) or `xdotool selectwindow`. - xinput set-cp <window> <master> + xinput set-cp <window> <master> If the setup is successful, the other keyboard should be able to input only in the window. In which multiple user can play different games at the same time. @@ -62,17 +62,17 @@ Cleaning up Remove all the master device that was created. - xinput remove-master <master> + xinput remove-master <master> And `reattach` the pointer or keyboard back to the main master device. Ideas ----- -- The other could have used Xephyr or Xnest to have his own session instead. +* The other could have used Xephyr or Xnest to have his own session instead. See also -------- -- https://ao2.it/en/blog/2010/01/19/poor-mans-multi-touch-using-multiple-mice-xorg -- https://www.x.org/wiki/Development/Documentation/MPX/ +* https://ao2.it/en/blog/2010/01/19/poor-mans-multi-touch-using-multiple-mice-xorg +* https://www.x.org/wiki/Development/Documentation/MPX/ diff --git a/dwm.suckless.org/patches/alpha/index.md b/dwm.suckless.org/patches/alpha/index.md @@ -1,7 +1,7 @@ alpha ===== -->[![Screenshot](dwm-alpha.png)](dwm-alpha.png)<- +[![Screenshot](dwm-alpha.png)](dwm-alpha.png) Description ----------- diff --git a/dwm.suckless.org/patches/centeredmaster/index.md b/dwm.suckless.org/patches/centeredmaster/index.md @@ -12,18 +12,18 @@ distributed to the left and right. It can be selected with [Alt]+[u]. With one and two clients in master respectively this results in: - +------------------------------+ +------------------------------+ - |+--------++--------++--------+| |+--------++--------++--------+| - || || || || || || || || - || || || || || || M1 || || - || || || || || || || || - || S2 || M || S1 || || |+--------+| || - || || || || || |+--------+| || - || || || || || || || || - || || || || || || M2 || || - || || || || || || || || - |+--------++--------++--------+| |+--------++--------++--------+| - +------------------------------+ +------------------------------+ + +------------------------------+ +------------------------------+ + |+--------++--------++--------+| |+--------++--------++--------+| + || || || || || || || || + || || || || || || M1 || || + || || || || || || || || + || S2 || M || S1 || || |+--------+| || + || || || || || |+--------+| || + || || || || || || || || + || || || || || || M2 || || + || || || || || || || || + |+--------++--------++--------+| |+--------++--------++--------+| + +------------------------------+ +------------------------------+ `centeredfloatingmaster` centers the nmaster area on screen, using `mfact * monitor width & height` over a horizontally tiled `stack` area, @@ -31,18 +31,18 @@ comparable to a scratchpad. It can be selected with [Alt]+[o]. With one and two clients in master respectively this results in: - +------------------------------+ +------------------------------+ - |+--------++--------++--------+| |+--------++--------++--------+| - || || || || || || || || - || +------------------+ || || +--------++--------+ || - || | | || || | || | || - || | | || || | || | || - || | M | || || | M1 || M2 | || - || | | || || | || | || - || +------------------+ || || +--------++--------+ || - || || || || || || || || - |+--------++--------++--------+| |+--------++--------++--------+| - +------------------------------+ +------------------------------+ + +------------------------------+ +------------------------------+ + |+--------++--------++--------+| |+--------++--------++--------+| + || || || || || || || || + || +------------------+ || || +--------++--------+ || + || | | || || | || | || + || | | || || | || | || + || | M | || || | M1 || M2 | || + || | | || || | || | || + || +------------------+ || || +--------++--------+ || + || || || || || || || || + |+--------++--------++--------+| |+--------++--------++--------+| + +------------------------------+ +------------------------------+ These stack layouts can be useful on large screens, where `monocle` or `htile` might be either too large or forcing the user to type in a corner diff --git a/dwm.suckless.org/patches/cfacts/index.md b/dwm.suckless.org/patches/cfacts/index.md @@ -39,11 +39,11 @@ are represented by floats inside the clients rectangles. Default key bindings -------------------- - Key | Argument | Description -:---------:|:----------:|:---------------- - `Mod-H` | `+0.25` | Increase cfact - `Mod-L` | `-0.25` | Decrease cfact - `Mod-O` | ` 0.00` | Reset cfact + Key Argument Description + ----------------------------------- + Mod-H +0.25 Increase cfact + Mod-L -0.25 Decrease cfact + Mod-O 0.00 Reset cfact Download -------- diff --git a/dwm.suckless.org/patches/clientspertag/index.md b/dwm.suckless.org/patches/clientspertag/index.md @@ -7,18 +7,18 @@ clients per tag. Out-of-limit windows are arranged behind the visible ones in the slave area. - +-----------------------+ +-----------------------+ - | -1/3 | | 2/3 | - +-----------+-----------+ +-----------+-----------+ - | | | | | | - | | 2 | | | | - | | | | | | - | 1 +-----------+ | 1 | 2 | - | | | | | | - | | 3 | | | | - | | | | | | - +-----------+-----------+ +-----------+-----------+ - cpt=-1 cpt=2 + +-----------------------+ +-----------------------+ + | -1/3 | | 2/3 | + +-----------+-----------+ +-----------+-----------+ + | | | | | | + | | 2 | | | | + | | | | | | + | 1 +-----------+ | 1 | 2 | + | | | | | | + | | 3 | | | | + | | | | | | + +-----------+-----------+ +-----------+-----------+ + cpt=-1 cpt=2 ## Usage @@ -32,12 +32,12 @@ will result on swapping between the defined value and -1. * To only display floating windows put "0" as argument. * For a toggling pair put "^2". - static Key keys[] = { - /* modifier key function argument */ - ... - { MODKEY, XK_q, clientspertag, {.v="^2"} }, - { MODKEY, XK_a, clientspertag, {.v="^3"} }, - }; + static Key keys[] = { + /* modifier key function argument */ + ... + { MODKEY, XK_q, clientspertag, {.v="^2"} }, + { MODKEY, XK_a, clientspertag, {.v="^3"} }, + }; ## Download diff --git a/dwm.suckless.org/patches/cropwindows/index.md b/dwm.suckless.org/patches/cropwindows/index.md @@ -30,10 +30,10 @@ Notes ----- * tested with a limited set of clients and use-cases, some X11 events are - probably not passed or handled correctly, report bugs if you see any, + probably not passed or handled correctly, report bugs if you see any, * known bug: if you crop a window at the same time another window is unmapped, - there is a chance that dwm will lose control of the window you are cropping - and your only option will be to kill it (this is a pain to fix properly), + there is a chance that dwm will lose control of the window you are cropping + and your only option will be to kill it (this is a pain to fix properly), * improvements: investigate `xextproto/shape` for non-rectangular crops! Authors diff --git a/dwm.suckless.org/patches/current_desktop/index.md b/dwm.suckless.org/patches/current_desktop/index.md @@ -2,24 +2,24 @@ ## Description - Sets \_NET\_NUMBER\_OF\_DESKTOPS and \_NET\_CURRENT\_DESKTOP on root to appropriate - values. Note that 'appropriate' for these values don't make sense as xprop - -root output, since dwm uses them at bitwise but xprop displays them in base - ten. In other words, if you have 4 desktops, \_NET\_NUMBER\_OF\_DESKTOPS is actualy - 0b1111 but xprop displays this as 15. I'm ok with this, because the end-user - (program, script, w/e) can always parse this appropriately. The same goes for - \_NET\_CURRENT\_DESKTOP: if you have desktops 1 and 3 selected, the value is - 0b1010, but xprop shows this as 10. This isn't a problem. - - I should note that in this case, \_NET\_NUMBER\_OF\_DESKTOPS does not exactly - conform to EWMH specifications: in reality, there are many more 'desktops' than - 15 (in the above example), as any combination of 1, 2, 3 or 4 of the availables - tags can be considered one desktop. \_CURRENT\_DESKTOP will, however, always be - less that \_NET\_NUMBER\_OF\_DESKTOPS, so I'm happy with that. - - I wrote this patch mainly for myself, as I have a script for tabbed that uses - it (I will upload this later). I am open to feedback/contstructive criticism. - Email is at the bottom. +Sets \_NET\_NUMBER\_OF\_DESKTOPS and \_NET\_CURRENT\_DESKTOP on root to appropriate +values. Note that 'appropriate' for these values don't make sense as xprop +-root output, since dwm uses them at bitwise but xprop displays them in base +ten. In other words, if you have 4 desktops, \_NET\_NUMBER\_OF\_DESKTOPS is actualy +0b1111 but xprop displays this as 15. I'm ok with this, because the end-user +(program, script, w/e) can always parse this appropriately. The same goes for +\_NET\_CURRENT\_DESKTOP: if you have desktops 1 and 3 selected, the value is +0b1010, but xprop shows this as 10. This isn't a problem. + +I should note that in this case, \_NET\_NUMBER\_OF\_DESKTOPS does not exactly +conform to EWMH specifications: in reality, there are many more 'desktops' than +15 (in the above example), as any combination of 1, 2, 3 or 4 of the availables +tags can be considered one desktop. \_CURRENT\_DESKTOP will, however, always be +less that \_NET\_NUMBER\_OF\_DESKTOPS, so I'm happy with that. + +I wrote this patch mainly for myself, as I have a script for tabbed that uses +it (I will upload this later). I am open to feedback/contstructive criticism. +Email is at the bottom. ## Download diff --git a/dwm.suckless.org/patches/defaulttransparency/index.md b/dwm.suckless.org/patches/defaulttransparency/index.md @@ -16,7 +16,7 @@ It is based on the transparency patch of Stefan Mark. ## Download * [dwm-defaulttransparency-r1521.diff](dwm-defaulttransparency-r1521.diff) - latest patch (against r1521) + latest patch (against r1521) ## Author diff --git a/dwm.suckless.org/patches/fibonacci/index.md b/dwm.suckless.org/patches/fibonacci/index.md @@ -7,32 +7,32 @@ windows in Fibonacci tiles: The first window uses half the screen, the second the half of the remainder, etc. ASCII art and a real screenshot of the spiral arrangement can be seen below. - +-----------+-----------+ +-----------+-----------+ - | | | | | | - | | 2 | | | 2 | - | | | | | | - | 1 +--+--+-----+ | 1 +-----+-----+ - | | 5|-.| | | | | 4 | - | +--+--+ 3 | | | 3 +--+--+ - | | 4 | | | | | 5|-.| - +-----------+-----+-----+ +-----------+-----+-----+ - spiral dwindle + +-----------+-----------+ +-----------+-----------+ + | | | | | | + | | 2 | | | 2 | + | | | | | | + | 1 +--+--+-----+ | 1 +-----+-----+ + | | 5|-.| | | | | 4 | + | +--+--+ 3 | | | 3 +--+--+ + | | 4 | | | | | 5|-.| + +-----------+-----+-----+ +-----------+-----+-----+ + spiral dwindle ## Usage - 1. Download the patch and apply according to the [general instructions](.). - 2. Include the `fibonacci.c` source file and add `spiral` and/or `dwindle` to - the `Layout` section of your `config.h` file. - Example from `config.default.h`: - - #include "fibonacci.c" - static Layout layout[] = { \ - /* symbol function */ \ - { "[]=", tile }, /* first entry is default */ \ - { "><>", floating }, \ - { "(@)", spiral }, \ - { "[\\]", dwindle }, \ - }; +1. Download the patch and apply according to the [general instructions](.). +2. Include the `fibonacci.c` source file and add `spiral` and/or `dwindle` to + the `Layout` section of your `config.h` file. + Example from `config.default.h`: + + #include "fibonacci.c" + static Layout layout[] = { + /* symbol function */ + { "[]=", tile }, /* first entry is default */ + { "><>", floating }, + { "(@)", spiral }, + { "[\\]", dwindle }, + }; ## Download diff --git a/dwm.suckless.org/patches/flextile/index.md b/dwm.suckless.org/patches/flextile/index.md @@ -22,31 +22,31 @@ The patch incorporates and expands the following patches: ## Configuration - (1) Download the patch and apply it according to the [general instructions](../). +1. Download the patch and apply it according to the [general instructions](../). - (2) Transfer the changes made by the patch in `config.def.h` to your `config.h`, if needed. +2. Transfer the changes made by the patch in `config.def.h` to your `config.h`, if needed. - /* tagging */ - ... - /* include(s) depending on the tags array */ - #include "flextile.h" + /* tagging */ + ... + /* include(s) depending on the tags array */ + #include "flextile.h" - /* layout(s) */ - static const int layoutaxis[] = { - 1, /* layout axis: 1 = x, 2 = y; negative values mirror the layout, setting the master area to the right / bottom instead of left / top */ - 2, /* master axis: 1 = x (from left to right), 2 = y (from top to bottom), 3 = z (monocle) */ - 2, /* stack axis: 1 = x (from left to right), 2 = y (from top to bottom), 3 = z (monocle) */ - }; - static const unsigned int mastersplit = 1; /* number of tiled clients in the master area */ + /* layout(s) */ + static const int layoutaxis[] = { + 1, /* layout axis: 1 = x, 2 = y; negative values mirror the layout, setting the master area to the right / bottom instead of left / top */ + 2, /* master axis: 1 = x (from left to right), 2 = y (from top to bottom), 3 = z (monocle) */ + 2, /* stack axis: 1 = x (from left to right), 2 = y (from top to bottom), 3 = z (monocle) */ + }; + static const unsigned int mastersplit = 1; /* number of tiled clients in the master area */ - static Key keys[] = { - ... - { MODKEY|ControlMask, XK_t, rotatelayoutaxis, {.i = 0} }, /* 0 = layout axis */ - { MODKEY|ControlMask, XK_Tab, rotatelayoutaxis, {.i = 1} }, /* 1 = master axis */ - { MODKEY|ControlMask|ShiftMask, XK_Tab, rotatelayoutaxis, {.i = 2} }, /* 2 = stack axis */ - { MODKEY|ControlMask, XK_Return, mirrorlayout, {0} }, - { MODKEY|ControlMask, XK_j, shiftmastersplit, {.i = -1} }, /* reduce the number of tiled clients in the master area */ - { MODKEY|ControlMask, XK_k, shiftmastersplit, {.i = +1} }, /* increase the number of tiled clients in the master area */ + static Key keys[] = { + ... + { MODKEY|ControlMask, XK_t, rotatelayoutaxis, {.i = 0} }, /* 0 = layout axis */ + { MODKEY|ControlMask, XK_Tab, rotatelayoutaxis, {.i = 1} }, /* 1 = master axis */ + { MODKEY|ControlMask|ShiftMask, XK_Tab, rotatelayoutaxis, {.i = 2} }, /* 2 = stack axis */ + { MODKEY|ControlMask, XK_Return, mirrorlayout, {0} }, + { MODKEY|ControlMask, XK_j, shiftmastersplit, {.i = -1} }, /* reduce the number of tiled clients in the master area */ + { MODKEY|ControlMask, XK_k, shiftmastersplit, {.i = +1} }, /* increase the number of tiled clients in the master area */ ## Usage @@ -65,4 +65,3 @@ The original `tile` layout is only available by setting the above parameters, bu joten (at) freenet (dot) de mail at pascal-wittmann dot de - diff --git a/dwm.suckless.org/patches/focusadjacenttag/index.md b/dwm.suckless.org/patches/focusadjacenttag/index.md @@ -11,12 +11,12 @@ on the left or the right tag. Default key bindings -------------------- - Key | Description -:-------------------:|:-------------------------------------------------- - `Mod-Left` | Focus tag on the left, if any. - `Mod-Right` | Focus tag on the right, if any. - `Mod-Shift-Left` | Send focused window to tag on the left, if any. - `Mod-Shift-Right` | Send focused window to tag on the right, if any. + Key Description + -------------------------------------------------------------------- + Mod-Left Focus tag on the left, if any. + Mod-Right Focus tag on the right, if any. + Mod-Shift-Left Send focused window to tag on the left, if any. + Mod-Shift-Right Send focused window to tag on the right, if any. Download -------- diff --git a/dwm.suckless.org/patches/focusurgent/index.md b/dwm.suckless.org/patches/focusurgent/index.md @@ -4,7 +4,7 @@ * Selects the next window having the urgent flag regardless of the tag it is on * The urgent flag can be artificially set with the following xdotool command on - any window: `xdotool selectwindow -- set_window --urgency 1` + any window: `xdotool selectwindow -- set_window --urgency 1` ## Download diff --git a/dwm.suckless.org/patches/freespace/index.md b/dwm.suckless.org/patches/freespace/index.md @@ -6,15 +6,15 @@ Description New variable panel[4] saves space at the borders of the screen for the external panel. -+----------------+-+ -| | panel[0] | | -+-+--------------+-+ -| | | | -|2| |3| -| | | | -+-+--------------+-+ -| | panel[1] | | -+----------------+-+ + +----------------+-+ + | | panel[0] | | + +-+--------------+-+ + | | | | + |2| |3| + | | | | + +-+--------------+-+ + | | panel[1] | | + +----------------+-+ In tiled and monocle layouts this space becomes borders of the windows; in floating layout windows attach to these borders diff --git a/dwm.suckless.org/patches/fsignal/index.md b/dwm.suckless.org/patches/fsignal/index.md @@ -19,9 +19,9 @@ send the signal '1'. Signal handlers are defined in config.h as: static Signal signals[] = { - /* signum function argument*/ - { 1, setlayout, {.v = 0} }, - ... + /* signum function argument*/ + { 1, setlayout, {.v = 0} }, + ... }; This can then be triggered through dmenu with this script: diff --git a/dwm.suckless.org/patches/historical/ansistatuscolors/index.md b/dwm.suckless.org/patches/historical/ansistatuscolors/index.md @@ -10,7 +10,7 @@ get the patch from github: [https://gist.github.com/4054818](https://gist.github apply it to dwm.c like so: - patch -p1 dwm.c < ansistatuscolors.diff + patch -p1 dwm.c < ansistatuscolors.diff ## Usage @@ -20,81 +20,82 @@ more info is here: [http://www.frexx.de/xterm-256-notes/](http://www.frexx.de/xt an ansi escape sequence is in the form: - \e[<code>m + \e[<code>m where: - \e - escape - ascii 27 / hex 1b / octal 033 - [ - literal bracket - m - literal 'm' + \e - escape - ascii 27 / hex 1b / octal 033 + [ - literal bracket + m - literal 'm' the code is one of the following: - 0 - - reset colors to default + 0 + - reset colors to default - n;m + n;m - n - - o - normal color - 1 - 'bright' color + n - + o - normal color + 1 - 'bright' color - m - - 30-37 - foreground - 40-47 - background + m - + 30-37 - foreground + 40-47 - background - n;5;m - - n - - 38 - foreground - 48 - background - 5 - - literal '5' - m - - 0-15 - classic ansi color - 16-231 - xterm 256-color rgb color - 232-255 - grayscale + n;5;m + + n - + 38 - foreground + 48 - background + 5 - + literal '5' + m - + 0-15 - classic ansi color + 16-231 - xterm 256-color rgb color + 232-255 - grayscale in vim, to create a literal 'escape' character, type ctrl-v, esc. in perl/python/c, within a string literal, it's "\x1b". ### Example - #!/usr/bin/env python - ##testcoloredstatus.py - - from subprocess import call,check_output - - redfg = '\x1b[38;5;196m' #hex - redbg = '\033[48;5;196m' #octal - blackbg = '\x1b[48;5;16m' - reset = '\x1b[0m' - - call(['xsetroot','-name',''.join( - [ - redfg, - 'hello ', - reset, - redbg, - 'world', - reset, - '! bar graph: 50% ', - redbg, - ' '*5, - blackbg, - ' '*5, - reset, - ' ', - check_output("date").strip() - ] - )], shell=False) -###Screenshot### + #!/usr/bin/env python + ##testcoloredstatus.py + + from subprocess import call,check_output + + redfg = '\x1b[38;5;196m' #hex + redbg = '\033[48;5;196m' #octal + blackbg = '\x1b[48;5;16m' + reset = '\x1b[0m' + + call(['xsetroot','-name',''.join( + [ + redfg, + 'hello ', + reset, + redbg, + 'world', + reset, + '! bar graph: 50% ', + redbg, + ' '*5, + blackbg, + ' '*5, + reset, + ' ', + check_output("date").strip() + ] + )], shell=False) + +### Screenshot my battery is discharging and my wifi signal is iffy ... ![alt text](ansistatuscolors.png) -###Author### -Brandon Dowell <brandon DOT dowell AT gmail> +### Author +# Brandon Dowell <brandon DOT dowell AT gmail> github.com/la11111 -holler if you find a bug, or fork it on github and fix it! +holler if you find a bug, or make a patch to fix it! diff --git a/dwm.suckless.org/patches/historical/fibonacci/index.md b/dwm.suckless.org/patches/historical/fibonacci/index.md @@ -24,10 +24,10 @@ arrangement can be seen below. ## Usage - 1. Download the patch and apply according to the [general instructions](.). - 2. Include the `fibonacci.c` source file and add `spiral` and/or `dwindle` to - the `Layout` section of your `config.h` file. - Example from `config.default.h`: +1. Download the patch and apply according to the [general instructions](.). +2. Include the `fibonacci.c` source file and add `spiral` and/or `dwindle` to + the `Layout` section of your `config.h` file. + Example from `config.default.h`: #include "fibonacci.c" static Layout layout[] = { \ diff --git a/dwm.suckless.org/patches/historical/movestack/index.md b/dwm.suckless.org/patches/historical/movestack/index.md @@ -9,9 +9,9 @@ movestack(-1) will swap the client with the current focus with the previous clie ## Usage - 1. Download the patch and apply according to the [general instructions](.). - 2. Include the `movestack.c` source file and add keys that call movestack. - Example from `config.default.h`: +1. Download the patch and apply according to the [general instructions](.). +2. Include the `movestack.c` source file and add keys that call movestack. + Example from `config.default.h`: #include "movestack.c" static Key keys[] = { diff --git a/dwm.suckless.org/patches/historical/nmaster/index.md b/dwm.suckless.org/patches/historical/nmaster/index.md @@ -7,27 +7,27 @@ This feature was dropped from vanilla dwm in version 4.4. See [nmaster.c][1] header documentation for installing this patch with tilecols and clientspertag for dwm 4.6. - ntile (-|=) - +----------+------+ - | | | - | +------+ - |----------| | - | +------+ - | | | - +----------+------+ + ntile (-|=) + +----------+------+ + | | | + | +------+ + |----------| | + | +------+ + | | | + +----------+------+ NOTE: The nmaster.c (patch for dwm 4.6) mixes the clientspertag patch together with another layout called tilecols. ## Usage - 1. Download the patch and apply according to the [general instructions](.). - 2. Add the `NMASTER` value to your `config.h`. - Example from `config.default.h`: +1. Download the patch and apply according to the [general instructions](.). +2. Add the `NMASTER` value to your `config.h`. + Example from `config.default.h`: #define NMASTER 2 /* clients in master area*/ - 3. Add keybindings to `incmaster()` to your `config.h`. - Example from `config.default.h`: +3. Add keybindings to `incmaster()` to your `config.h`. + Example from `config.default.h`: { MODKEY|ShiftMask, XK_k, incnmaster, "-1" }, \ { MODKEY|ShiftMask, XK_j, incnmaster, "1" }, \ diff --git a/dwm.suckless.org/patches/historical/xft/index.md b/dwm.suckless.org/patches/historical/xft/index.md @@ -20,11 +20,11 @@ With this patch, the "font" variable in config.h is superseded by the "fonts" variable which is a priority-ordered list of fonts that should be used to render text. Here's an example "fonts" definition: - static const char *fonts[] = { - "Sans:size=10.5", - "VL Gothic:size=10.5", - "WenQuanYi Micro Hei:size=10.5", - }; + static const char *fonts[] = { + "Sans:size=10.5", + "VL Gothic:size=10.5", + "WenQuanYi Micro Hei:size=10.5", + }; At least one font must be specified, and a maximum of `DRW_FONT_CACHE_SIZE` fonts can be used. @@ -33,8 +33,8 @@ fonts can be used. Download -------- * [dwm-6.0-xft.diff](dwm-6.0-xft.diff) (6.6k) (16 May 2012) - * memory leak fixed and improved implementation. - * include config.def.h and config.mk changes. + * memory leak fixed and improved implementation. + * include config.def.h and config.mk changes. * [dwm-6.1-xft-with-fallback-font.diff](dwm-6.1-xft-with-fallback-font.diff) (20k) diff --git a/dwm.suckless.org/patches/keymodes/index.md b/dwm.suckless.org/patches/keymodes/index.md @@ -4,8 +4,8 @@ This patch provides key modes (like in Vim). There are two key modes: - 1. `COMMANDMODE`: In this mode any key is grabbed and only the registered command keys have any effect. - 2. `INSERTMODE`: This is the normal key mode, in which the original key bindings of dwm and applications are effective and text can be entered. +1. `COMMANDMODE`: In this mode any key is grabbed and only the registered command keys have any effect. +2. `INSERTMODE`: This is the normal key mode, in which the original key bindings of dwm and applications are effective and text can be entered. With key modes you can use any key binding for window management without risking conflicts with existing key bindings in applications or have a Vim-style dwm. @@ -17,26 +17,26 @@ There are two different patches: ## Configuration - (1) Download the favoured patch and apply it according to the [general instructions](.). If you choose vim-keymodes you will have to apply the [flextile patch](../flextile/) first. +1. Download the favoured patch and apply it according to the [general instructions](.). If you choose vim-keymodes you will have to apply the [flextile patch](../flextile/) first. - (2) Transfer the changes made by the patch in `config.def.h` to your `config.h`, if needed; please see the patch file for details. +2. Transfer the changes made by the patch in `config.def.h` to your `config.h`, if needed; please see the patch file for details. - (3) Verify the following lines in the aforementioned arrays; the key bindings are set in reference to a german keyboard layout. The entries in the `cmdkeys` array are defined like those in the original `keys` array of dwm and take precedence over the key bindings defined in the `commands` array. The modifier and keysym definitions in the `commands` array are themselves arrays with four entries, whereas the first entry in the modifier array corresponds to the first entry in the keysym array and so forth. You can find an example configuration [here][dwm-keymodes-vim-config.h]. +3. Verify the following lines in the aforementioned arrays; the key bindings are set in reference to a german keyboard layout. The entries in the `cmdkeys` array are defined like those in the original `keys` array of dwm and take precedence over the key bindings defined in the `commands` array. The modifier and keysym definitions in the `commands` array are themselves arrays with four entries, whereas the first entry in the modifier array corresponds to the first entry in the keysym array and so forth. You can find an example configuration [here][dwm-keymodes-vim-config.h]. - static Key keys[] = { - /* modifier key function argument */ - { MODKEY, XK_Escape, setkeymode, {.ui = COMMANDMODE} }, + static Key keys[] = { + /* modifier key function argument */ + { MODKEY, XK_Escape, setkeymode, {.ui = COMMANDMODE} }, - static Key cmdkeys[] = { - /* modifier keys function argument */ - { 0, XK_Escape, clearcmd, {0} }, - { ControlMask, XK_c, clearcmd, {0} }, - { 0, XK_i, setkeymode, {.ui = INSERTMODE} }, - }; - static Command commands[] = { - /* modifier (4 keys) keysyms (4 keys) function argument */ - ... - }; + static Key cmdkeys[] = { + /* modifier keys function argument */ + { 0, XK_Escape, clearcmd, {0} }, + { ControlMask, XK_c, clearcmd, {0} }, + { 0, XK_i, setkeymode, {.ui = INSERTMODE} }, + }; + static Command commands[] = { + /* modifier (4 keys) keysyms (4 keys) function argument */ + ... + }; ## Usage diff --git a/dwm.suckless.org/patches/keypressrelease/index.md b/dwm.suckless.org/patches/keypressrelease/index.md @@ -13,13 +13,13 @@ Usage --- A working `scrot -s` key binding: - static const char *scrot[] = { "scrot", "-s", NULL }; - ... - { KeyRelease, 0, XK_Print, spawn, {.v = scrot } }, + static const char *scrot[] = { "scrot", "-s", NULL }; + ... + { KeyRelease, 0, XK_Print, spawn, {.v = scrot } }, Or to only display the bar while the toggle key is held down (requires that it is hidden to start with), add: - { KeyRelease, MODKEY, XK_b, togglebar, {0} }, + { KeyRelease, MODKEY, XK_b, togglebar, {0} }, Download --- diff --git a/dwm.suckless.org/patches/mark/index.md b/dwm.suckless.org/patches/mark/index.md @@ -26,23 +26,23 @@ This patch adds 3 functions to dwm: Some ideas for combinations of key mappings: * togglemark x2 -clear the mark + clear the mark * swapclient, swapfocus -shift the client to another client frame without losing focus + shift the client to another client frame without losing focus * swapclient, togglemark x2 -swap 2 clients and clear the mark + swap 2 clients and clear the mark * swapfocus, togglemark x2 -jump to mark and clear the mark + jump to mark and clear the mark ## Download this patch has been revised, it's recommended to use dwm-6.1-mark-new.diff old behaviours of the patch(dwm-mark-6.1.diff): - 1. crashes when using mark features while the marked client has been killed. - 2. swapclient clears the mark. - 3. swapclient falls back to zoom() if the mark is not set. - 4. swapfocus does not activate tags for the marked client - 5. swapfocus does not focus monitors correctly +1. crashes when using mark features while the marked client has been killed. +2. swapclient clears the mark. +3. swapclient falls back to zoom() if the mark is not set. +4. swapfocus does not activate tags for the marked client +5. swapfocus does not focus monitors correctly * [dwm-mark-new-6.1.diff](dwm-mark-new-6.1.diff) * [dwm-mark-6.1.diff](dwm-mark-6.1.diff) diff --git a/dwm.suckless.org/patches/moveplace/index.md b/dwm.suckless.org/patches/moveplace/index.md @@ -15,11 +15,11 @@ depending on which key is pressed. MOD+ - qwe - asd - zxc + qwe + asd + zxc -with 's' being the center. +with `s` being the center. ## Download diff --git a/dwm.suckless.org/patches/moveresize/index.md b/dwm.suckless.org/patches/moveresize/index.md @@ -8,40 +8,39 @@ bindings. Usage ----- - 1. Put the following `moveresize()` function somewhere in your `dwm.c`, - **after** the line which includes the config.h file: +1. Put the following `moveresize()` function somewhere in your `dwm.c`, + **after** the line which includes the config.h file: - static void - moveresize(const Arg *arg) - { - - XEvent ev; - Monitor *m = selmon; - - if(!(m->sel && arg && arg->v && m->sel->isfloating)) - return; - - resize(m->sel, m->sel->x + ((int *)arg->v)[0], - m->sel->y + ((int *)arg->v)[1], - m->sel->w + ((int *)arg->v)[2], - m->sel->h + ((int *)arg->v)[3], - True); - - while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); - } + static void + moveresize(const Arg *arg) + { + XEvent ev; + Monitor *m = selmon; + + if(!(m->sel && arg && arg->v && m->sel->isfloating)) + return; + + resize(m->sel, m->sel->x + ((int *)arg->v)[0], + m->sel->y + ((int *)arg->v)[1], + m->sel->w + ((int *)arg->v)[2], + m->sel->h + ((int *)arg->v)[3], + True); + + while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); + } - 2. Insert the bindings into the keys list. Here is an example which uses the - arrow keys to move (mod+arrow) or resize (mod+shift+arrow) the selected - client: - - { MODKEY, XK_Down, moveresize, {.v = (int []){ 0, 25, 0, 0 }}}, - { MODKEY, XK_Up, moveresize, {.v = (int []){ 0, -25, 0, 0 }}}, - { MODKEY, XK_Right, moveresize, {.v = (int []){ 25, 0, 0, 0 }}}, - { MODKEY, XK_Left, moveresize, {.v = (int []){ -25, 0, 0, 0 }}}, - { MODKEY|ShiftMask, XK_Down, moveresize, {.v = (int []){ 0, 0, 0, 25 }}}, - { MODKEY|ShiftMask, XK_Up, moveresize, {.v = (int []){ 0, 0, 0, -25 }}}, - { MODKEY|ShiftMask, XK_Right, moveresize, {.v = (int []){ 0, 0, 25, 0 }}}, - { MODKEY|ShiftMask, XK_Left, moveresize, {.v = (int []){ 0, 0, -25, 0 }}}, +2. Insert the bindings into the keys list. Here is an example which uses the + arrow keys to move (mod+arrow) or resize (mod+shift+arrow) the selected + client: + + { MODKEY, XK_Down, moveresize, {.v = (int []){ 0, 25, 0, 0 }}}, + { MODKEY, XK_Up, moveresize, {.v = (int []){ 0, -25, 0, 0 }}}, + { MODKEY, XK_Right, moveresize, {.v = (int []){ 25, 0, 0, 0 }}}, + { MODKEY, XK_Left, moveresize, {.v = (int []){ -25, 0, 0, 0 }}}, + { MODKEY|ShiftMask, XK_Down, moveresize, {.v = (int []){ 0, 0, 0, 25 }}}, + { MODKEY|ShiftMask, XK_Up, moveresize, {.v = (int []){ 0, 0, 0, -25 }}}, + { MODKEY|ShiftMask, XK_Right, moveresize, {.v = (int []){ 0, 0, 25, 0 }}}, + { MODKEY|ShiftMask, XK_Left, moveresize, {.v = (int []){ 0, 0, -25, 0 }}}, If you want to automatically toggle the client floating when move/resize, replace the `if()` statement above with this code: diff --git a/dwm.suckless.org/patches/rmaster/index.md b/dwm.suckless.org/patches/rmaster/index.md @@ -18,4 +18,5 @@ made to other custom layouts, like 'deck'. * [dwm-rmaster-6.1.diff](dwm-rmaster-6.1.diff) (1836b) (20170213) ## Author + * phi <crispyfrog@163.com> diff --git a/dwm.suckless.org/patches/runorraise/index.md b/dwm.suckless.org/patches/runorraise/index.md @@ -13,13 +13,13 @@ Usage 1 In your config.h: - static const char *emacs[] = { "emacsclient", "-c", NULL, NULL, "Emacs" }; - static const char *browser[] = { "firefox", NULL, NULL, NULL, "Firefox" }; + static const char *emacs[] = { "emacsclient", "-c", NULL, NULL, "Emacs" }; + static const char *browser[] = { "firefox", NULL, NULL, NULL, "Firefox" }; 2 In your keybindings add something like: - { Modkey, XK_e, runorraise, {.v = emacs } }, - { Modkey, XK_f, runorraise, {.v = firefox } }, + { Modkey, XK_e, runorraise, {.v = emacs } }, + { Modkey, XK_f, runorraise, {.v = firefox } }, Download -------- diff --git a/dwm.suckless.org/patches/stacker/index.md b/dwm.suckless.org/patches/stacker/index.md @@ -30,15 +30,15 @@ There are two parallel sets of bindings: one for the `focus*` family and the oth `push*` family. The keys are the same for both sets but they do differ in the modifiers: simply `MODKEY` for the `focus*` family and `MODKEY|ShiftMask` for the `push*` family. - Key | Argument | Description -:------:|:-----------:|----------------------- - \` | `PREVSEL` | Previously selected - `j` | `INC(+1)` | Next to selected - `k` | `INC(-1)` | Previous to selected - `q` | `0` | First position - `a` | `1` | Second position - `z` | `2` | Third position - `x` | `-1` | Last position + Key Argument Description + --------------------------------------- + \ PREVSEL Previously selected + j INC(+1) Next to selected + k INC(-1) Previous to selected + q 0 First position + a 1 Second position + z 2 Third position + x -1 Last position The `q`, `a`, `z` keys are aligned more or less vertically in the us keyboard layout. They are intended to be used as quick positional shortcuts to specific applications. So if you diff --git a/dwm.suckless.org/patches/statuscolors/index.md b/dwm.suckless.org/patches/statuscolors/index.md @@ -18,41 +18,41 @@ Add code to your status script to output the raw characters '\x03' to switch to The following definition in 'config.h': - #define NUMCOLORS 4 - static const char colors[NUMCOLORS][MAXCOLORS][8] = { - // border foreground background - { "#000033", "#dddddd", "#000033" }, // normal - { "#000088", "#ffffff", "#000088" }, // selected - { "#ff0000", "#000000", "#ffff00" }, // urgent/warning (black on yellow) - { "#ff0000", "#ffffff", "#ff0000" }, // error (white on red) - // add more here - }; + #define NUMCOLORS 4 + static const char colors[NUMCOLORS][MAXCOLORS][8] = { + // border foreground background + { "#000033", "#dddddd", "#000033" }, // normal + { "#000088", "#ffffff", "#000088" }, // selected + { "#ff0000", "#000000", "#ffff00" }, // urgent/warning (black on yellow) + { "#ff0000", "#ffffff", "#ff0000" }, // error (white on red) + // add more here + }; Coupled with a matching status script produces the following: ![Example Colored Status Text](statuscolors.png) A really silly example: - echo -e "normal \x01 selected \x03 warning/urgent \x04 error \x01 back to normal text" | dwm + echo -e "normal \x01 selected \x03 warning/urgent \x04 error \x01 back to normal text" | dwm An example status script snippet to take advantage of the colors: - status="" - if [$batperc -le 10]; then - # use "warning" color - status+="\x03 BAT: $batperc" - elif [$batperc -le 5]; then - # use "error" color - status+="\x04 BAT: $batperc" - else - # default is normal color - status+="BAT: $batperc" - fi - - # switch back to normal color for date - status+="\x01| "+$(date) - - echo -e $status + status="" + if [$batperc -le 10]; then + # use "warning" color + status+="\x03 BAT: $batperc" + elif [$batperc -le 5]; then + # use "error" color + status+="\x04 BAT: $batperc" + else + # default is normal color + status+="BAT: $batperc" + fi + + # switch back to normal color for date + status+="\x01| "+$(date) + + echo -e $status ## Download diff --git a/dwm.suckless.org/patches/tab/index.md b/dwm.suckless.org/patches/tab/index.md @@ -47,26 +47,23 @@ one window. The section "More Options" explains how to add more display options. #### Using an existing customised configuration file -<ul> -<li>Apply the patch; -<li>Add the following lines to your config.h dwm configuration file: -</ul> - /* Display modes of the tab bar: never shown, always shown, shown only in */ - /* monocle mode in presence of several windows. */ - /* A mode can be disabled by moving it after the showtab_nmodes end marker */ - enum showtab_modes { showtab_never, showtab_auto, showtab_nmodes, showtab_always}; - static const int showtab = showtab_auto; /* Default tab bar show mode */ +* Apply the patch; +* Add the following lines to your config.h dwm configuration file: + + /* Display modes of the tab bar: never shown, always shown, shown only in */ + /* monocle mode in presence of several windows. */ + /* A mode can be disabled by moving it after the showtab_nmodes end marker */ + enum showtab_modes { showtab_never, showtab_auto, showtab_nmodes, showtab_always}; + static const int showtab = showtab_auto; /* Default tab bar show mode */ static const Bool toptab = True; /* False means bottom tab bar */ If you use the combined pertag+tab patch, include also (adapt the number of '0' to your `tags` array configuration): - /* default layout per tags */ - /* The first element is for all-tag view, following i-th element corresponds to */ - /* tags[i]. Layout is referred using the layouts array index.*/ - static int def_layouts[1 + LENGTH(tags)] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -<ul> -<li>Run make and make install. -</ul> + /* default layout per tags */ + /* The first element is for all-tag view, following i-th element corresponds to */ + /* tags[i]. Layout is referred using the layouts array index.*/ + static int def_layouts[1 + LENGTH(tags)] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +* Run make and make install. The tab bar is displayed only with the monocle layout when the view contains more than one window. The Mod1-w key and the mouse support are not included in @@ -126,11 +123,12 @@ Download Change log ---------- -<dl> - <dt>v2b </dt><dl>Fixed in the pertag-tab patch the support for per-tag default layout specification. No change in the tab only patch.</dl> - <dt>v2a </dt><dl>Typo corrected in the man page. For the combined pertag-tab patch, specification of a default layout per-tag layout was added in the config.h configuration file, but it was not taken into account properly. The version v2b fixed this issue.</dl> - <dt>v2 </dt><dl>First public version.</dl> -</dl> +* **v2b** + Fixed in the pertag-tab patch the support for per-tag default layout specification. No change in the tab only patch. +* **v2a** + Typo corrected in the man page. For the combined pertag-tab patch, specification of a default layout per-tag layout was added in the config.h configuration file, but it was not taken into account properly. The version v2b fixed this issue. +* **v2** + First public version. Author ------ diff --git a/dwm.suckless.org/patches/tagall/index.md b/dwm.suckless.org/patches/tagall/index.md @@ -17,15 +17,15 @@ Patches against different versions of dwm are available at * MODKEY+Shift+F1 moves all floating windows of the current tag to tag 1 - { MODKEY|ShiftMask, XK_F1, tagall, {.v = "F1"} }, \ - ... - { MODKEY|ShiftMask, XK_F9, tagall, {.v = "F9"} }, \ + { MODKEY|ShiftMask, XK_F1, tagall, {.v = "F1"} }, \ + ... + { MODKEY|ShiftMask, XK_F9, tagall, {.v = "F9"} }, \ * MODKEY+Shift+F1 moves all windows of the current tag to tag 1 - { MODKEY|ShiftMask, XK_F1, tagall, {.v = "1"} }, \ - ... - { MODKEY|ShiftMask, XK_F9, tagall, {.v = "9"} }, \ + { MODKEY|ShiftMask, XK_F1, tagall, {.v = "1"} }, \ + ... + { MODKEY|ShiftMask, XK_F9, tagall, {.v = "9"} }, \ ## Author * Jan Christoph Ebersbach - <jceb@e-jc.de> diff --git a/dwm.suckless.org/patches/taggrid/index.md b/dwm.suckless.org/patches/taggrid/index.md @@ -1,5 +1,6 @@ taggrid -===== +======= + Description ----------- This patch adds an ability to place tags in rows like in many other @@ -9,37 +10,35 @@ Applying -------- Patch uses drawtagmask flagset to show tags. Two flags can be applied to it: -* `#define DRAWCLASSICTAGS 1 << 0` +* + #define DRAWCLASSICTAGS 1 << 0 this will make patch to draw classic tags row; -* `#define DRAWTAGGRID 1 << 1` +* + #define DRAWTAGGRID 1 << 1` - this will make patch to draw the grid of tags like this: + this will make patch to draw the grid of tags like this: - ![grid](taggrid.png) + ![grid](taggrid.png) The patch defines `switchtag` function which handle global shortcuts to navigate in grid. This function accept unsigned int argument which represents flagset of next flags: -* `#define SWITCHTAG_UP 1 << 0` - - `#define SWITCHTAG_DOWN 1 << 1` - - `#define SWITCHTAG_LEFT 1 << 2` - - `#define SWITCHTAG_RIGHT 1 << 3` - - this four defines the direction of moving current tags; - -* `#define SWITCHTAG_TOGGLETAG 1 << 4` - - `#define SWITCHTAG_TAG 1 << 5` +* + #define SWITCHTAG_UP 1 << 0 + #define SWITCHTAG_DOWN 1 << 1 + #define SWITCHTAG_LEFT 1 << 2 + #define SWITCHTAG_RIGHT 1 << 3 - `#define SWITCHTAG_VIEW 1 << 6` + this four defines the direction of moving current tags; - `#define SWITCHTAG_TOGGLEVIEW 1 << 7` +* + #define SWITCHTAG_TOGGLETAG 1 << 4 + #define SWITCHTAG_TAG 1 << 5 + #define SWITCHTAG_VIEW 1 << 6 + #define SWITCHTAG_TOGGLEVIEW 1 << 7 this four defines the behaviour of switching. They will make `switchtag` work like according functions. @@ -48,23 +47,17 @@ Example ------- Default config file defines nest: - `{ MODKEY|ControlMask, XK_Up, switchtag, { .ui = SWITCHTAG_UP | SWITCHTAG_VIEW } },` - - `{ MODKEY|ControlMask, XK_Down, switchtag, { .ui = SWITCHTAG_DOWN | SWITCHTAG_VIEW } },` - - `{ MODKEY|ControlMask, XK_Right, switchtag, { .ui = SWITCHTAG_RIGHT | SWITCHTAG_VIEW } },` - - `{ MODKEY|ControlMask, XK_Left, switchtag, { .ui = SWITCHTAG_LEFT | SWITCHTAG_VIEW } },` + { MODKEY|ControlMask, XK_Up, switchtag, { .ui = SWITCHTAG_UP | SWITCHTAG_VIEW } }, + { MODKEY|ControlMask, XK_Down, switchtag, { .ui = SWITCHTAG_DOWN | SWITCHTAG_VIEW } }, + { MODKEY|ControlMask, XK_Right, switchtag, { .ui = SWITCHTAG_RIGHT | SWITCHTAG_VIEW } }, + { MODKEY|ControlMask, XK_Left, switchtag, { .ui = SWITCHTAG_LEFT | SWITCHTAG_VIEW } }, this will simply move set of active tags in specified (`UP`, `DOWN`, `RIGHT` or `LEFT`) direction by pressing `ctrl+alt+ARROW`; - `{ MODKEY|Mod4Mask, XK_Up, switchtag, { .ui = SWITCHTAG_UP | SWITCHTAG_TAG | SWITCHTAG_VIEW } },` - - `{ MODKEY|Mod4Mask, XK_Down, switchtag, { .ui = SWITCHTAG_DOWN | SWITCHTAG_TAG | SWITCHTAG_VIEW } },` - - `{ MODKEY|Mod4Mask, XK_Right, switchtag, { .ui = SWITCHTAG_RIGHT | SWITCHTAG_TAG | SWITCHTAG_VIEW } },` - - `{ MODKEY|Mod4Mask, XK_Left, switchtag, { .ui = SWITCHTAG_LEFT | SWITCHTAG_TAG | SWITCHTAG_VIEW } },` + { MODKEY|Mod4Mask, XK_Up, switchtag, { .ui = SWITCHTAG_UP | SWITCHTAG_TAG | SWITCHTAG_VIEW } }, + { MODKEY|Mod4Mask, XK_Down, switchtag, { .ui = SWITCHTAG_DOWN | SWITCHTAG_TAG | SWITCHTAG_VIEW } }, + { MODKEY|Mod4Mask, XK_Right, switchtag, { .ui = SWITCHTAG_RIGHT | SWITCHTAG_TAG | SWITCHTAG_VIEW } }, + { MODKEY|Mod4Mask, XK_Left, switchtag, { .ui = SWITCHTAG_LEFT | SWITCHTAG_TAG | SWITCHTAG_VIEW } }, this will move active window in specified direction and perform the action, described above. diff --git a/dwm.suckless.org/patches/tagintostack/index.md b/dwm.suckless.org/patches/tagintostack/index.md @@ -1,5 +1,5 @@ tagintostack -=============== +============ Description ----------- @@ -7,9 +7,9 @@ Description a new tag into view. This means your master area will remain unchanged when toggling views. * the `allmaster` patch will cause all clients in the master area to be left -alone + alone * the `onemaster` patch will cause the first client in the master area to be left -alone (this is a much simpler piece of code) + alone (this is a much simpler piece of code) Download -------- diff --git a/dwm.suckless.org/patches/three-column/index.md b/dwm.suckless.org/patches/three-column/index.md @@ -14,16 +14,16 @@ Three Column Layout (tcl) is a new layout with a wide master panel centered on t ## Usage - 1. Include the `tcl.c` source file and add `tcl` to the `Layout` section of your `config.h` file. - Example from `config.default.h`: - - #include "tcl.c" - static Layout layout[] = { \ - /* symbol function */ \ - { "[]=", tile }, /* first entry is default */ \ - { "><>", floating }, \ - { "|||", tcl }, \ - }; +1. Include the `tcl.c` source file and add `tcl` to the `Layout` section of your `config.h` file. + Example from `config.default.h`: + + #include "tcl.c" + static Layout layout[] = { + /* symbol function */ + { "[]=", tile }, /* first entry is default */ + { "><>", floating }, + { "|||", tcl }, + }; ## Download diff --git a/dwm.suckless.org/patches/tilegap/index.md b/dwm.suckless.org/patches/tilegap/index.md @@ -9,8 +9,8 @@ and screen edge. Size configurable in config.h. Download -------- -- [dwm-tilegap-6.0.diff](dwm-tilegap-6.0.diff) (948b) (20150707) +* [dwm-tilegap-6.0.diff](dwm-tilegap-6.0.diff) (948b) (20150707) Author ------ -- Brandon Mulcahy - <brandon@jangler.info> +* Brandon Mulcahy - <brandon@jangler.info> diff --git a/dwm.suckless.org/patches/uselessgap/index.md b/dwm.suckless.org/patches/uselessgap/index.md @@ -4,43 +4,41 @@ For aesthetic purposes, this patch: -- adds "useless gaps" around windows -- removes everything (gaps and borders) when in monocle mode for aesthetic purpose. +* adds "useless gaps" around windows +* removes everything (gaps and borders) when in monocle mode for aesthetic purpose. The size of the gap is configured in `config.h`: -``` -static const unsigned int gappx = 6; /* gap pixel between windows */ -``` + static const unsigned int gappx = 6; /* gap pixel between windows */ ## Example No gaps: - +-----------------+-------+ - | | | - | | | - | | | - | +-------| - | | | - | | | - | | | - +-----------------+-------+ + +-----------------+-------+ + | | | + | | | + | | | + | +-------| + | | | + | | | + | | | + +-----------------+-------+ With gaps around windows: - +---------------------------+ - |+----------------++-------+| - || || || - || || || - || || || - || |+-------+| - || |+-------+| - || || || - || || || - || || || - |+----------------++-------+| - +---------------------------+ + +---------------------------+ + |+----------------++-------+| + || || || + || || || + || || || + || |+-------+| + || |+-------+| + || || || + || || || + || || || + |+----------------++-------+| + +---------------------------+ NB: there are some alternatives in the patches section, adding gaps between windows, but not between windows and the screen borders, only in the default @@ -52,10 +50,11 @@ tile mode... * [dwm-uselessgap-6.1.diff](dwm-uselessgap-6.1.diff) (4K) (20150815), now supports nmaster. * [dwm-uselessgap-5.9.diff](dwm-uselessgap-5.9.diff) (1.8k) (20110107 updated. Thanks Jordan for your bug report) - Updated to use the new resizeclient() function instead of resize() + Updated to use the new resizeclient() function instead of resize() * [dwm-uselessgap-5.8.diff](dwm-uselessgap-5.8.diff) (1.7k) (20100225 updated. Thanks Guillaume for your bug report) - Fix floating clients bug and remove all borders in monocle mode. + + Fix floating clients bug and remove all borders in monocle mode. * [dwm-gap-5.7.2.diff](dwm-gap-5.7.2.diff) (0.7k) (20091215) diff --git a/dwm.suckless.org/patches/xkb/index.md b/dwm.suckless.org/patches/xkb/index.md @@ -12,10 +12,10 @@ Firstly you have to configure xkb as you need as described The patch depends on two variables: * `showxkb` flag defines, should patch show current xkb group on - the bar or not; + the bar or not; * `xkb_layouts` array defines the text, which will appear on the - bar according to current group if `showxkb` set to `TRUE`. + bar according to current group if `showxkb` set to `TRUE`. There is new field in Rule struckture, by witch you can specify default xkb layout for window (see config.def.h for details). diff --git a/dwm.suckless.org/patches/xrdb/index.md b/dwm.suckless.org/patches/xrdb/index.md @@ -10,12 +10,12 @@ After applying the patch, don't forget to update your `config.h` file and fill i X resources used: - dwm.normbordercolor - dwm.normbgcolor - dwm.normfgcolor - dwm.selbordercolor - dwm.selbgcolor - dwm.selfgcolor + dwm.normbordercolor + dwm.normbgcolor + dwm.normfgcolor + dwm.selbordercolor + dwm.selbgcolor + dwm.selfgcolor Default key to reload is `Mod+F5`. diff --git a/dwm.suckless.org/patches/xtile/index.md b/dwm.suckless.org/patches/xtile/index.md @@ -41,28 +41,28 @@ Default key bindings The areas are selected by modifiers as follows: - Modifier | Area -----------------------|:-------------------------------: -`MODKEY` | Global -`MODKEY+Shift` | Master -`MODKEY+Control` | Stack -`MODKEY+Shift+Control`| All three areas simultaneously + Modifier Area + -------------------------------------------------------- + MODKEY Global + MODKEY+Shift Master + MODKEY+Control Stack + MODKEY+Shift+Control All three areas simultaneously Each of the modifiers then combines with each of the following keys up to a total of 4\*3=12 key bindings: - Key | Function -:------:|:-----------------------: - `r` | Rotate direction - `h` | Decrement fact by 10%. - `l` | Increment fact by 10%. + Key Function + ------------------------------ + r Rotate direction + h Decrement fact by 10%. + l Increment fact by 10%. There are two provided default "presets" or "schemas" also: - Modifier | Key | Preset -------------------|:------:|:-------------: -`MODKEY+Shift` | `t` | Right stack -`MODKEY+Control` | `t` | Bottom stack + Modifier Key Preset + --------------------------------------: + MODKEY+Shift t Right stack + MODKEY+Control t Bottom stack These presets allow to quickly switch between different no-nonsense tilings avoiding the need to rotate through all the nonsense combinations in-between. But notice that @@ -72,8 +72,8 @@ sensible layouts (due to the way directions were designed to rotate). You can also easily define your own presets by calling `setdir` and `setfact` as needed. For example, here is the configuration code for the default presets described above: - { MODKEY|ShiftMask, XK_t, setdirs, {.v = (int[]){ DirHor, DirVer, DirVer } } }, - { MODKEY|ControlMask, XK_t, setdirs, {.v = (int[]){ DirVer, DirHor, DirHor } } }, + { MODKEY|ShiftMask, XK_t, setdirs, {.v = (int[]){ DirHor, DirVer, DirVer } } }, + { MODKEY|ControlMask, XK_t, setdirs, {.v = (int[]){ DirVer, DirHor, DirHor } } }, Layout symbol ------------- diff --git a/dwm.suckless.org/status_monitor/email_notifications/index.md b/dwm.suckless.org/status_monitor/email_notifications/index.md @@ -59,4 +59,4 @@ notification is shown. Author ------ -- Ricardo Catalinas Jiménez <[jimenezrick@gmail.com](mailto:jimenezrick@gmail.com)> +* Ricardo Catalinas Jiménez <[jimenezrick@gmail.com](mailto:jimenezrick@gmail.com)> diff --git a/ev.suckless.org/satzung/index.md b/ev.suckless.org/satzung/index.md @@ -1,14 +1,14 @@ Satzung ======= -§1 — Name und Sitz ------------------- +## §1 — Name und Sitz + (1) Der Verein führt den Namen "suckless.org e.V." (2) Der Verein hat seinen Sitz in München. -§2 — Zweck ------------ +## §2 — Zweck + (1) Der Zweck des Vereins ist die Förderung von Freier Software. Freie Software im Sinne dieser Satzung ist Software, die der Definition von Open-Source-Software der "Open Source Initiative (OSI)" entspricht. Der Verein verfolgt keine @@ -19,38 +19,38 @@ und die Bereitstellung von Kommunikationsplattformen, sowie durch die Ausrichtung von Vortrags-, Vorführungs- und Diskussionsveranstaltungen. Die Ergebnisse der Vereinsarbeit stehen der Allgemeinheit offen. -§3 — Mitgliedschaft -------------------- +## §3 — Mitgliedschaft + Mitglieder des Vereins können alle volljährigen Personen werden, die einen schriftlichen (auch per E-Mail) Aufnahmeantrag beim Vorstand des Vereins gestellt haben. Lehnt der Vorstand die Aufnahme ab, kann der Beitrittswillige die Mitgliederversammlung berufen. Diese entscheidet endgültig über die Mitgliedschaft. -§4 — Ende der Mitgliedschaft ----------------------------- +## §4 — Ende der Mitgliedschaft + Die Mitgliedschaft endet durch Tod, Austrittserklärung oder Ausschluss. Der Austritt erfolgt durch schriftliche (auch per E-Mail) Erklärung gegenüber dem Vorstand. Über den Ausschluss beschließt die Mitgliederversammlung mit einer Mehrheit von drei Vierteln der anwesenden Mitglieder. -§5 — Mitgliedsbeiträge ----------------------- +## §5 — Mitgliedsbeiträge + Von den Mitgliedern werden Beiträge erhoben. Die Höhe des Jahresbeitrags wird in der Mitgliederversammlung bestimmt. -§6 — Organe des Vereins ------------------------ +## §6 — Organe des Vereins + Organe des Vereins sind Vorstand und Mitgliederversammlung. -§7 — Vorstand -------------- +## §7 — Vorstand + (1) Der Vorstand des Vereins besteht aus dem 1. Vorsitzenden, dem 2. Vorsitzenden und dem 3. Vorsitzenden. Der Verein wird gerichtlich und außergerichtlich durch den 1. oder 2. oder 3. Vorsitzenden je allein vertreten. -§8 — Amtsdauer und Beschlussfassung des Vorstandes --------------------------------------------------- +## §8 — Amtsdauer und Beschlussfassung des Vorstandes + Der Vorstand wird von der Mitgliederversammlung auf die Dauer von drei Jahren, vom Tag der Wahl an gerechnet, gewählt. Der Vorstand bleibt jedoch auch nach Ablauf seiner Amtszeit bis zur Neuwahl des neuen Vorstandes im Amt. @@ -58,8 +58,8 @@ Der Vorstand fasst seine Beschlüsse in Vorstandssitzungen, die vom 1. Vorsitzenden oder 2. Vorsitzenden oder 3. Vorsitzenden schriftlich, telefonisch oder per E-Mail einberufen werden. -§9 — Mitgliederversammlung --------------------------- +## §9 — Mitgliederversammlung + Mindestens einmal im Jahr findet eine ordentliche Mitgliederversammlung statt. Sie beschließt vor allem über die Beiträge, die Entlastung und die Wahl des Vorstandes und über Satzungsänderungen. Eine außerordentliche @@ -72,15 +72,15 @@ gilt nicht für Satzungsänderungen. Die Mitgliederversammlung fasst ihre Beschlüsse mit der Mehrheit der erschienenen Mitglieder. Stimmenthaltungen und ungültige Stimmen bleiben außer Betracht. -§10 — Beurkundung der Beschlüsse der Vereinsorgane --------------------------------------------------- +## §10 — Beurkundung der Beschlüsse der Vereinsorgane + Über die Beschlüsse des Vorstandes und der Mitgliederversammlung ist eine Niederschrift aufzunehmen, die vom 1. Vorsitzenden oder dem 2. Vorsitzenden oder dem 3. Vorsitzenden und einem von der Versammlung gewählten Protokollführer zu unterzeichnen ist. -§11 — Auflösung ---------------- +## §11 — Auflösung + Die Auflösung kann nur in einer besonderen, zu diesem Zweck und mit einer Frist von einem Monat einzuberufenden außerordentlichen Mitgliederversammlung mit einer Mehrheit von drei Vierteln der erschienenen Mitglieder beschlossen diff --git a/libs.suckless.org/deprecated/r9p/index.md b/libs.suckless.org/deprecated/r9p/index.md @@ -1,9 +1,10 @@ R9P === - Author: Kris Maglione - License: MIT - Version: 0.4 - Repo: //git.suckless.org/r9p + + Author: Kris Maglione + License: MIT + Version: 0.4 + Repo: //git.suckless.org/r9p `r9p` is a simple [9P](http://9p.cat-v.org) client implementation for Ruby. It currently supports basic filesystem operations, including reading, writing, and listing files. It also supports the operations of the IO class by providing a true file descriptor through a proxy thread. diff --git a/st.suckless.org/goals/index.md b/st.suckless.org/goals/index.md @@ -16,22 +16,21 @@ Theoretical features Goals ----- -- have a working graphical terminal for terminal applications -- do no reimplement tmux and his comrades +* have a working graphical terminal for terminal applications +* do no reimplement tmux and his comrades Non-goals --------- -- filters that change colour (should be done by tmux or something doing the +* filters that change colour (should be done by tmux or something doing the higher layers *in* st) -- server to save sessions in case of X crash (should be done by dtach) -- unlimited scrollback buffer (done by dvtm) -- URL selecting/launching in browser similiar to vimperator's mark mode and the +* server to save sessions in case of X crash (should be done by dtach) +* unlimited scrollback buffer (done by dvtm) +* URL selecting/launching in browser similiar to vimperator's mark mode and the urxvt script (patch?) (possibly piped through something like plumb to - - This one is done by a simple shortcut in dwm which will launch your - plumber on the current select buffer. St has easy select through - double-click. This keeps the complex logic out of the st context. + * This one is done by a simple shortcut in dwm which will launch your + plumber on the current select buffer. St has easy select through + double-click. This keeps the complex logic out of the st context. Links ----- * [Repository](//git.suckless.org/st) - diff --git a/st.suckless.org/index.md b/st.suckless.org/index.md @@ -2,7 +2,7 @@ st is a simple terminal implementation for X. -->[![Screenshot of dwm & st](screenshots/frign-2016-s.png)](screenshots/frign-2016.png)<- +[![Screenshot of dwm & st](screenshots/frign-2016-s.png)](screenshots/frign-2016.png) Motivation ---------- diff --git a/st.suckless.org/patches/alpha/index.md b/st.suckless.org/patches/alpha/index.md @@ -1,7 +1,7 @@ alpha ===== -->[![Screenshot](st-alpha-s.png)](st-alpha.png)<- +[![Screenshot](st-alpha-s.png)](st-alpha.png) Description ----------- @@ -13,9 +13,9 @@ make this patch effective. Notes ----- - - The alpha value affects the default background only. - - The color designated by 'defaultbg' should not be used elsewhere. - - Embedding might fail after applying this patch. +* The alpha value affects the default background only. +* The color designated by 'defaultbg' should not be used elsewhere. +* Embedding might fail after applying this patch. Download -------- diff --git a/st.suckless.org/patches/dracula/index.md b/st.suckless.org/patches/dracula/index.md @@ -19,7 +19,7 @@ much more at [https://draculatheme.com/](https://draculatheme.com/). Example ------- -->[![Screenshot](st-dracula.png)](st-dracula.png)<- +[![Screenshot](st-dracula.png)](st-dracula.png) Running zsh and tmux. diff --git a/st.suckless.org/patches/fix_keyboard_input/index.md b/st.suckless.org/patches/fix_keyboard_input/index.md @@ -13,46 +13,40 @@ to have gained traction over the past years. Notes ----- - - Very early stage version of this patch - I'm just at the beginning of testing - it in real world settings. I tried to encode as many key combinations as - possible according to the new scheme. This might cause issues with existing - applications if they're not aware of it. Please report any issues that you - come across. - - If you use `<C-[>` for `<Esc>`, I suggest that you remove the following line - from this patch to re-enable the behavior: - -``` - { XK_bracketleft, ControlMask, "\033[91;5u", 0, 0}, -``` - - - If you use `<C-6>` for changing to the alternative file, I suggest that you - remove the following line from this patch to re-enable the behavior: - -``` - { XK_6, ControlMask, "\033[54;5u", 0, 0}, -``` - - - I managed to bind the new mappings to actions in neovim. If you're using - tmux make sure that it's a recent version, 2.5 works fine for me. The - easiest way to know that this patch is working properly is to enter vim's - command mode by pressing `:` followed by pressing `<C-v>` and the desired key - combination. This will print the key sequence that vim received. Here are - some example mappings for vim: - -``` - nmap <C-CR> :echo "<C-CR>"<CR> - nmap <C-S-CR> :echo "<C-S-CR>"<CR> - nmap <C-S-M-CR> :echo "<C-S-M-CR>"<CR> - nmap <S-M-CR> :echo "<S-M-CR>"<CR> - nmap <M-CR> :echo "<M-CR>"<CR> - nmap <C-M-CR> :echo "<C-M-CR>"<CR> - nmap <C-Tab> :echo "<C-Tab>"<CR> - nmap <C-S-Tab> :echo "<C-S-Tab>"<CR> - nmap <S-Tab> :echo "<S-Tab>"<CR> - nmap <M-Tab> :echo "<M-Tab>"<CR> -``` - -- Leonard suggests to bind the CSI sequence that starts an escape sequence to +* Very early stage version of this patch - I'm just at the beginning of testing + it in real world settings. I tried to encode as many key combinations as + possible according to the new scheme. This might cause issues with existing + applications if they're not aware of it. Please report any issues that you + come across. +* If you use `<C-[>` for `<Esc>`, I suggest that you remove the following line + from this patch to re-enable the behavior: + + { XK_bracketleft, ControlMask, "\033[91;5u", 0, 0}, + +* If you use `<C-6>` for changing to the alternative file, I suggest that you + remove the following line from this patch to re-enable the behavior: + + { XK_6, ControlMask, "\033[54;5u", 0, 0}, + +* I managed to bind the new mappings to actions in neovim. If you're using + tmux make sure that it's a recent version, 2.5 works fine for me. The + easiest way to know that this patch is working properly is to enter vim's + command mode by pressing `:` followed by pressing `<C-v>` and the desired key + combination. This will print the key sequence that vim received. Here are + some example mappings for vim: + + nmap <C-CR> :echo "<C-CR>"<CR> + nmap <C-S-CR> :echo "<C-S-CR>"<CR> + nmap <C-S-M-CR> :echo "<C-S-M-CR>"<CR> + nmap <S-M-CR> :echo "<S-M-CR>"<CR> + nmap <M-CR> :echo "<M-CR>"<CR> + nmap <C-M-CR> :echo "<C-M-CR>"<CR> + nmap <C-Tab> :echo "<C-Tab>"<CR> + nmap <C-S-Tab> :echo "<C-S-Tab>"<CR> + nmap <S-Tab> :echo "<S-Tab>"<CR> + nmap <M-Tab> :echo "<M-Tab>"<CR> + +* Leonard suggests to bind the CSI sequence that starts an escape sequence to `0x9b` instead of `0x1b` (Esc) followed by `0x5b` (left bracket, [). This removes the double use of the Esc key in terminals. Programs that run in terminals always have to work around the double use of the Esc key by @@ -65,15 +59,11 @@ Notes Here is an example. This entry -``` { XK_underscore, ControlMask, "\033[95;5u", 0, 0}, -``` becomes the following: -``` { XK_underscore, ControlMask, "\23395;5u", 0, 0}, -``` Download -------- diff --git a/st.suckless.org/patches/keyboard_select/index.md b/st.suckless.org/patches/keyboard_select/index.md @@ -12,10 +12,10 @@ Instructions The patch changes the &ldquo;config.def.h&rdquo;. Delete your &ldquo;config.h&rdquo; or add the shortcut below if you use a custom one. - Shortcut shortcuts[] = { - ... - { TERMMOD, XK_Escape, keyboard_select, { 0 } }, - }; + Shortcut shortcuts[] = { + ... + { TERMMOD, XK_Escape, keyboard_select, { 0 } }, + }; Notes @@ -27,29 +27,25 @@ When you run "keyboard_select", you have 3 modes available : * select mode : to activate and set the end of the selection; * input mode : to enter the search criteria. -<br> - Shortcuts for move and select modes : - h, j, k, l: move cursor left/down/up/right (also with arrow keys) - !, _, *: move cursor to the middle of the line/column/screen - Backspace, $: move cursor to the beginning/end of the line - PgUp, PgDown : move cursor to the beginning/end of the column - Home, End: move cursor to the top/bottom left corner of the screen - /, ?: activate input mode and search up/down - n, N: repeat last search, up/down - s: toggle move/selection mode - t: toggle regular/rectangular selection type - Return: quit keyboard_select, keeping the highlight of the selection - Escape: quit keyboard_select + h, j, k, l: move cursor left/down/up/right (also with arrow keys) + !, _, *: move cursor to the middle of the line/column/screen + Backspace, $: move cursor to the beginning/end of the line + PgUp, PgDown : move cursor to the beginning/end of the column + Home, End: move cursor to the top/bottom left corner of the screen + /, ?: activate input mode and search up/down + n, N: repeat last search, up/down + s: toggle move/selection mode + t: toggle regular/rectangular selection type + Return: quit keyboard_select, keeping the highlight of the selection + Escape: quit keyboard_select With h,j,k,l (also with arrow keys), you can use a quantifier. Enter a number before hitting the appropriate key. -<br> - Shortcuts for input mode : - Return: Return to the previous mode + Return: Return to the previous mode diff --git a/st.suckless.org/patches/palettes/index.md b/st.suckless.org/patches/palettes/index.md @@ -18,18 +18,18 @@ Notes ----- It uses the following shortcuts : - Shortcut shortcuts[] = { - ... - { TERMMOD, XK_F1, setpalette, {.i = 0} }, - { TERMMOD, XK_F2, setpalette, {.i = 1} }, - { TERMMOD, XK_F3, setpalette, {.i = 2} }, - { TERMMOD, XK_F4, setpalette, {.i = 3} }, - { TERMMOD, XK_F5, setpalette, {.i = 4} }, - { TERMMOD, XK_F6, setpalette, {.i = 5} }, - { TERMMOD, XK_F7, setpalette, {.i = 6} }, - { TERMMOD, XK_F8, setpalette, {.i = 7} }, - { TERMMOD, XK_F9, setpalette, {.i = 8} }, - }; + Shortcut shortcuts[] = { + ... + { TERMMOD, XK_F1, setpalette, {.i = 0} }, + { TERMMOD, XK_F2, setpalette, {.i = 1} }, + { TERMMOD, XK_F3, setpalette, {.i = 2} }, + { TERMMOD, XK_F4, setpalette, {.i = 3} }, + { TERMMOD, XK_F5, setpalette, {.i = 4} }, + { TERMMOD, XK_F6, setpalette, {.i = 5} }, + { TERMMOD, XK_F7, setpalette, {.i = 6} }, + { TERMMOD, XK_F8, setpalette, {.i = 7} }, + { TERMMOD, XK_F9, setpalette, {.i = 8} }, + }; Download -------- diff --git a/st.suckless.org/patches/right_click_to_plumb/index.md b/st.suckless.org/patches/right_click_to_plumb/index.md @@ -2,10 +2,10 @@ Pretty much like plan9's acme and plumber: right-click some selected text to send it to the plumbing program of your choosing: -- open an URL in a browser -- view an image, PDF, ... -- jump from logs to editor, at the specified line/col -- etc +* open an URL in a browser +* view an image, PDF, ... +* jump from logs to editor, at the specified line/col +* etc The shell current working directory is set by the shell via `OSC 7` (borrowed from vte, see `/etc/profile.d/vte.sh` if you have it installed). diff --git a/st.suckless.org/patches/solarized/index.md b/st.suckless.org/patches/solarized/index.md @@ -20,9 +20,9 @@ such as tmux or vim, you may need to Example ------- -->[![Screenshot](st-solarized-light-s.png)](st-solarized-light.png)<- +[![Screenshot](st-solarized-light-s.png)](st-solarized-light.png) -->[![Screenshot](st-solarized-dark-s.png)](st-solarized-dark.png)<- +[![Screenshot](st-solarized-dark-s.png)](st-solarized-dark.png) The font used is Source Code Pro. diff --git a/st.suckless.org/screenshots/index.md b/st.suckless.org/screenshots/index.md @@ -1,7 +1,7 @@ -->[![st screenshot](frign-2016-s.png)](frign-2016.png)<- +[![st screenshot](frign-2016-s.png)](frign-2016.png) -->[![st screenshot](putain-ouais-s.png)](putain-ouais.png)<- +[![st screenshot](putain-ouais-s.png)](putain-ouais.png) -->[![st screenshot](hendry-s.png)](hendry.png)<- +[![st screenshot](hendry-s.png)](hendry.png) -->[![st screenshot](20h-2012-s.png)](20h-2012.png)<- +[![st screenshot](20h-2012-s.png)](20h-2012.png) diff --git a/suckless.org/coding_style/index.md b/suckless.org/coding_style/index.md @@ -44,30 +44,30 @@ Blocks * `{` on same line preceded by single space (except functions) * `}` on own line unless continuing statement (`if else`, `do while`, ...) * Use block for single statement iff - * Inner statement needs a block - - for (;;) { - if (foo) { - bar; - baz; - } - } - * Another branch of the same statement needs a block - - if (foo) { - bar; - } else { - baz; - qux; - } + * Inner statement needs a block + + for (;;) { + if (foo) { + bar; + baz; + } + } + * Another branch of the same statement needs a block + + if (foo) { + bar; + } else { + baz; + qux; + } Leading Whitespace ------------------ * Use tabs for indentation * Use spaces for alignment - * This means no tabs except beginning of line - * Everything will line up independent of tab size - * Use spaces not tabs for multiline macros as the indentation level is 0, where the `#define` began + * This means no tabs except beginning of line + * Everything will line up independent of tab size + * Use spaces not tabs for multiline macros as the indentation level is 0, where the `#define` began Functions --------- @@ -96,13 +96,13 @@ Switch Headers ------- * Place system/libc headers first in alphabetical order - * If headers must be included in a specific order comment to explain + * If headers must be included in a specific order comment to explain * Place local headers after an empty line * When writing and using local headers - * Do not use `#ifndef` guards - * Instead ensure they are included where and when they are needed - * Read <https://talks.golang.org/2012/splash.article#TOC_5.> - * Read <http://plan9.bell-labs.com/sys/doc/comp.html> + * Do not use `#ifndef` guards + * Instead ensure they are included where and when they are needed + * Read <https://talks.golang.org/2012/splash.article#TOC_5.> + * Read <http://plan9.bell-labs.com/sys/doc/comp.html> User Defined Types ------------------ @@ -112,9 +112,9 @@ User Defined Types * Capitalize the type name * Typedef the type name, if possible without first naming the struct - typedef struct { - double x, y, z; - } Point; + typedef struct { + double x, y, z; + } Point; Line Length ----------- @@ -128,19 +128,19 @@ Tests and Boolean Values * Do not use `bool` types (stick to integer types) * Assign at declaration when possible - Type *p = malloc(sizeof(*p)); - if (!p) + Type *p = malloc(sizeof(*p)); + if (!p) hcf(); * Otherwise use compound assignment and tests unless the line grows too long - if (!(p = malloc(sizeof(*p)))) - hcf(); + if (!(p = malloc(sizeof(*p)))) + hcf(); Handling Errors --------------- * When functions `return -1` for error test against `0` not `-1` - if (func() < 0) + if (func() < 0) hcf(); * Use `goto` to unwind and cleanup when necessary instead of multiple nested levels * `return` or `exit` early on failures instead of multiple nested levels @@ -151,11 +151,11 @@ Enums vs #define ---------------- * Use enums for values that are grouped semantically and #define otherwise - #define MAXSZ 4096 - #define MAGIC1 0xdeadbeef - - enum { - DIRECTION_X, - DIRECTION_Y, - DIRECTION_Z - }; + #define MAXSZ 4096 + #define MAGIC1 0xdeadbeef + + enum { + DIRECTION_X, + DIRECTION_Y, + DIRECTION_Z + }; diff --git a/suckless.org/conferences/2013/index.md b/suckless.org/conferences/2013/index.md @@ -11,7 +11,7 @@ Saturday, 2013-06-22 Room A027 / Raum A027 -->[![slcon2013 group photo](slcon2013-s.png)](slcon2013.png)<- +[![slcon2013 group photo](slcon2013-s.png)](slcon2013.png) Talks ----- diff --git a/suckless.org/conferences/2015/index.md b/suckless.org/conferences/2015/index.md @@ -1,7 +1,7 @@ suckless conference 2015, Budapest ================================== -->[![slcon2015 group photo](slcon2015-s.png)](slcon2015.png)<- +[![slcon2015 group photo](slcon2015-s.png)](slcon2015.png) Friday, 2015-10-30 ================== @@ -22,10 +22,10 @@ Talks (11:15-12:00) *suckless core - A suckless userspace foundation*, Laslo Hunhold > This talk focused on recent developments in the suckless core - programs, the design and motivation behind them and which issues had been - faced along the way, including ditching POSIX in some places in favor of - suckless design principles and consistency. - Current issues and future plans were discussed in the last part. +> programs, the design and motivation behind them and which issues had been +> faced along the way, including ditching POSIX in some places in favor of +> suckless design principles and consistency. +> Current issues and future plans were discussed in the last part. <video width="600" height="338" controls="" style="display:block;margin:0 auto" poster="https://dl.suckless.org/slcon/2015/slcon-2015-01-frign-suckless_core.png"> <source src="https://dl.suckless.org/slcon/2015/slcon-2015-01-frign-suckless_core.webm" type="video/webm"> @@ -54,11 +54,11 @@ Talks (14:30-15:30) *Farbfeld - Rethinking image-formats*, Laslo Hunhold > This talk discussed the deficiencies of the RGBA color space and - presented the Farbfeld format to store images in a device independent - way using the Lab color space. - Additionally, an alternative to incorporated, namely imposed, image - compression was discussed, evaluating the advantages over other image - formats using different kinds of images. +> presented the Farbfeld format to store images in a device independent +> way using the Lab color space. +> Additionally, an alternative to incorporated, namely imposed, image +> compression was discussed, evaluating the advantages over other image +> formats using different kinds of images. <video width="600" height="338" controls="" style="display:block;margin:0 auto" poster="https://dl.suckless.org/slcon/2015/slcon-2015-04-frign-farbfeld.png"> <source src="https://dl.suckless.org/slcon/2015/slcon-2015-04-frign-farbfeld.webm" type="video/webm"> @@ -71,7 +71,7 @@ Talks (16:00-16:30) *suckless.org e.V.*, Anselm R Garbe > Anselm presented the idea of suckless.org e.V.[<sup>1</sup>][1] and asked - attendees to join. +> attendees to join. <video width="600" height="338" controls="" style="display:block;margin:0 auto" poster="https://dl.suckless.org/slcon/2015/slcon-2015-05-all-suckless_ev.png"> <source src="https://dl.suckless.org/slcon/2015/slcon-2015-05-all-suckless_ev.webm" type="video/webm"> @@ -103,11 +103,11 @@ Talks (10:45-11:30) *Simple Jabber - Divide And Conquer XMPP*, Jan Klemkow ([paper](jan_on_sj.pdf)) > The Extensible Messaging and Presence Protocol ([XMPP][2]) is like the web. It is - far too complex to be implemented in one program with the Unix philosophy in mind. - But like the web, you have to deal with it. It is the only open - and widely used instant messaging protocol on the internet. - Its extensibility is the main reason that an implementation in a single - program is nearly impossible. This talk described an approach to master this problem. +> far too complex to be implemented in one program with the Unix philosophy in mind. +> But like the web, you have to deal with it. It is the only open +> and widely used instant messaging protocol on the internet. +> Its extensibility is the main reason that an implementation in a single +> program is nearly impossible. This talk described an approach to master this problem. <video width="600" height="338" controls="" style="display:block;margin:0 auto" poster="https://dl.suckless.org/slcon/2015/slcon-2015-07-klenkow-simple_jabber.png"> <source src="https://dl.suckless.org/slcon/2015/slcon-2015-07-klenkow-simple_jabber.webm" type="video/webm"> @@ -118,9 +118,9 @@ Talks (11:30-12:00) *Finite state document processing*, Manu Raster > Mainstream XML processing techniques wastefully consume time - and memory for example in file format conversions popularly - known as 'save as...'. This talk presented a less - wasteful method based on finite-state transducers. +> and memory for example in file format conversions popularly +> known as 'save as...'. This talk presented a less +> wasteful method based on finite-state transducers. <video width="600" height="338" controls="" style="display:block;margin:0 auto" poster="https://dl.suckless.org/slcon/2015/slcon-2015-08-raster-finite_state_document_processing.png"> <source src="https://dl.suckless.org/slcon/2015/slcon-2015-08-raster-finite_state_document_processing.webm" type="video/webm"> @@ -134,15 +134,15 @@ Talks (13:15-14:15) *UTF-8 everywhere? Writing Unicode compliant software that sucks less*, Laslo Hunhold > This talk discussed UTF-8 and its history, how and when you have to - deal with it and which challenges had been faced along the way, evaluating - its advantages over other character encodings. - Besides more trivial problems like decoding and encoding, advanced - issues like string comparison, case conversion and normalization were - discussed, leading to the conclusion that the POSIX wchar-interfaces - are broken by design. - Using suckless principles, problems with the ICU libraries were discussed - and a midway drawn between total localization and minimalism, - presenting possible solutions. +> deal with it and which challenges had been faced along the way, evaluating +> its advantages over other character encodings. +> Besides more trivial problems like decoding and encoding, advanced +> issues like string comparison, case conversion and normalization were +> discussed, leading to the conclusion that the POSIX wchar-interfaces +> are broken by design. +> Using suckless principles, problems with the ICU libraries were discussed +> and a midway drawn between total localization and minimalism, +> presenting possible solutions. <video width="600" height="338" controls="" style="display:block;margin:0 auto" poster="https://dl.suckless.org/slcon/2015/slcon-2015-09-frign-utf-8_everywhere.png"> <source src="https://dl.suckless.org/slcon/2015/slcon-2015-09-frign-utf-8_everywhere.webm" type="video/webm"> @@ -155,7 +155,7 @@ Talks (14:45-15:00) *Formal conference talk closing*, Anselm R Garbe > Anselm formally closed the conference and it was decided upon the location - for the upcoming slcon3. +> for the upcoming slcon3. <video width="600" height="338" controls="" style="display:block;margin:0 auto" poster="https://dl.suckless.org/slcon/2015/slcon-2015-10-all-vote.png"> <source src="https://dl.suckless.org/slcon/2015/slcon-2015-10-all-vote.webm" type="video/webm"> diff --git a/suckless.org/conferences/2016/index.md b/suckless.org/conferences/2016/index.md @@ -4,7 +4,7 @@ suckless conference 2016, Hofheim am Taunus, Germany slcon 2016 was held in Hofheim am Taunus near Frankfurt am Main on 2016-09-(23-25). -->[![slcon2016 group photo](slcon2016-s.png)](slcon2016.png)<- +[![slcon2016 group photo](slcon2016-s.png)](slcon2016.png) Friday, 2016-09-23 ================== @@ -14,8 +14,8 @@ Arrival day. (19:30) *Gathering in the "Waldgeist"* > We gathered together in and checked out the - [Waldgeist](http://www.derwaldgeist.de/) restaurant that was within - walking distance of the hotel. +> [Waldgeist](http://www.derwaldgeist.de/) restaurant that was within +> walking distance of the hotel. Saturday, 2016-09-24 ==================== @@ -33,9 +33,9 @@ Saturday, 2016-09-24 (10:10-10:40) libzahl -- simple bignum arithmetic, Mattias Andrée > The quality of algorithms usually increases with their complexity. - Can we, despite that, compete with GNU MP and other libraries - and still provide suckless solution? This talk discussed libzahl's - design and future. +> Can we, despite that, compete with GNU MP and other libraries +> and still provide suckless solution? This talk discussed libzahl's +> design and future. <video width="600" height="338" controls="" style="display:block;margin:0 auto" poster="https://dl.suckless.org/slcon/2016/slcon-2016-01-mandree-libzahl.png"> <source src="https://dl.suckless.org/slcon/2016/slcon-2016-01-mandree-libzahl.webm" type="video/webm"> @@ -46,14 +46,14 @@ Saturday, 2016-09-24 (10:50-11:15) XML damage control, Silvan Jegen ([slides](https://dl.suckless.org/slcon/2016/slcon-2016-02-sjegen-xml_damage_control.pdf)) > XML is a horrendously abused file format that severely suffers from - over-engineering. However, there is an arguably legitimate use case for - a subset of it: Text markup. This talk gave reasons for that and showed - how to deal with XML in these circumstances. - The presenter, forced to work with XML every day, first gave an - overview of different XML parsing strategies and presented a few decent - libraries for this purpose. To allow comparison, he benchmarked the - most sensible XML libraries and discussed alternative parsing approaches - as well as their implementation. +> over-engineering. However, there is an arguably legitimate use case for +> a subset of it: Text markup. This talk gave reasons for that and showed +> how to deal with XML in these circumstances. +> The presenter, forced to work with XML every day, first gave an +> overview of different XML parsing strategies and presented a few decent +> libraries for this purpose. To allow comparison, he benchmarked the +> most sensible XML libraries and discussed alternative parsing approaches +> as well as their implementation. <video width="600" height="338" controls="" style="display:block;margin:0 auto" poster="https://dl.suckless.org/slcon/2016/slcon-2016-02-sjegen-xml_damage_control.png"> <source src="https://dl.suckless.org/slcon/2016/slcon-2016-02-sjegen-xml_damage_control.webm" type="video/webm"> @@ -64,10 +64,10 @@ Saturday, 2016-09-24 (11:20-11:35) Stali Pi B+, Manu Raster ([slides](https://dl.suckless.org/slcon/2016/slcon-2016-03-mraster-stali_pi_bplus.pdf)) > This talk gave a report on readying stali for the Raspberry Pi B+ - (32 bit) and is also a story about monsters and maiden, as it compared - the stali approach to other codebases (kernels, distros, etc.) and their - build systems, evaluating portability concerns encountered along the way - on a scale from "depraved" over "naive" to "not too bad". +> (32 bit) and is also a story about monsters and maiden, as it compared +> the stali approach to other codebases (kernels, distros, etc.) and their +> build systems, evaluating portability concerns encountered along the way +> on a scale from "depraved" over "naive" to "not too bad". <video width="600" height="338" controls="" style="display:block;margin:0 auto" poster="https://dl.suckless.org/slcon/2016/slcon-2016-03-mraster-stali_pi_bplus.png"> <source src="https://dl.suckless.org/slcon/2016/slcon-2016-03-mraster-stali_pi_bplus.webm" type="video/webm"> @@ -78,18 +78,18 @@ Saturday, 2016-09-24 (11:40-12:05) farbfeld and color spaces, Laslo Hunhold > This talk discussed the future role of color management in computing - in light of recent developments and gave a future perspective on - necessary changes to the handling of image formats like farbfeld. +> in light of recent developments and gave a future perspective on +> necessary changes to the handling of image formats like farbfeld. > Are you already affected by the limitations of sRGB? You can find out - by looking at the saturated RGB triplets below. The one on the right - shows the saturated reds, greens and blues of sRGB, the one on the left - shows the saturated reds, greens and blues of your monitor. If you only - see continuous lines it means that you're not working within a color - managed environment (e.g. using Firefox with colord and xiccd), or your - screen is really old. +> by looking at the saturated RGB triplets below. The one on the right +> shows the saturated reds, greens and blues of sRGB, the one on the left +> shows the saturated reds, greens and blues of your monitor. If you only +> see continuous lines it means that you're not working within a color +> managed environment (e.g. using Firefox with colord and xiccd), or your +> screen is really old. -->![saturated RGB in sRGB and that of your monitor](cs-demo.png)<- +![saturated RGB in sRGB and that of your monitor](cs-demo.png) <video width="600" height="338" controls="" style="display:block;margin:0 auto" poster="https://dl.suckless.org/slcon/2016/slcon-2016-04-lhunhold-farbfeld_and_color_spaces.png"> <source src="https://dl.suckless.org/slcon/2016/slcon-2016-04-lhunhold-farbfeld_and_color_spaces.webm" type="video/webm"> @@ -103,14 +103,14 @@ Saturday, 2016-09-24 (13:25-14:10) scc and qbe for practical compilation, Roberto E. Vargas Caballero > For decades we have been witnessing a dramatic increase in compiler - complexity. Popular compilers have become huge C++ programs trying - to incorporate every aspect of state-of-the-art research. - This talk proposed scc and qbe as a new approach to compilation, where - simplicity and predictability are the primary objective over reckless - efficiency and optimization. - It presented the security benefits resulting from this alternative design - approach, that is also advocated by the "boring crypto" movement, and - demonstrated how it allows easier bootstrapping of new systems. +> complexity. Popular compilers have become huge C++ programs trying +> to incorporate every aspect of state-of-the-art research. +> This talk proposed scc and qbe as a new approach to compilation, where +> simplicity and predictability are the primary objective over reckless +> efficiency and optimization. +> It presented the security benefits resulting from this alternative design +> approach, that is also advocated by the "boring crypto" movement, and +> demonstrated how it allows easier bootstrapping of new systems. <video width="600" height="338" controls="" style="display:block;margin:0 auto" poster="https://dl.suckless.org/slcon/2016/slcon-2016-05-rvargasc-scc_and_qbe_for_practical_compilation.png"> <source src="https://dl.suckless.org/slcon/2016/slcon-2016-05-rvargasc-scc_and_qbe_for_practical_compilation.webm" type="video/webm"> @@ -121,14 +121,14 @@ Saturday, 2016-09-24 (14:10-15:15) The Myrddin Programming Language, Ori Bernstein ([slides](https://dl.suckless.org/slcon/2016/slcon-2016-06-obernstein-the_myrddin_programming_language.pdf)) > This talk presented the Myrddin programming language that was written - in the interest of a saner and easier to use programming environment - the presenter, inventor of the language, deems more pleasant than C. - The presenter elaborated on its position between C and the ML - programming language by design using concepts like parametric - polymorphism, type inference, closures and pattern matching, concluding - that it can be thought of as a suckless Rust. In this context, - examples were presented using a replacement for many standard libraries - on a number of popular (and less popular) platforms. +> in the interest of a saner and easier to use programming environment +> the presenter, inventor of the language, deems more pleasant than C. +> The presenter elaborated on its position between C and the ML +> programming language by design using concepts like parametric +> polymorphism, type inference, closures and pattern matching, concluding +> that it can be thought of as a suckless Rust. In this context, +> examples were presented using a replacement for many standard libraries +> on a number of popular (and less popular) platforms. <video width="600" height="338" controls="" style="display:block;margin:0 auto" poster="https://dl.suckless.org/slcon/2016/slcon-2016-06-obernstein-the_myrddin_programming_language.png"> <source src="https://dl.suckless.org/slcon/2016/slcon-2016-06-obernstein-the_myrddin_programming_language.webm" type="video/webm"> @@ -139,11 +139,11 @@ Saturday, 2016-09-24 (15:20-15:50) ii-like chatting improvements, Jan Klemkow > Since the last conference, the presenter had made several improvements - in his ii-like chat infrastructure and in this talk gave an overview of - his various activities in this area, presenting new features of his - [UCSPI tools](https://github.com/younix/ucspi), a new modular frontend - [lchat](https://github.com/younix/lchat) and the idea of runit - integration. +> in his ii-like chat infrastructure and in this talk gave an overview of +> his various activities in this area, presenting new features of his +> [UCSPI tools](https://github.com/younix/ucspi), a new modular frontend +> [lchat](https://github.com/younix/lchat) and the idea of runit +> integration. <video width="600" height="338" controls="" style="display:block;margin:0 auto" poster="https://dl.suckless.org/slcon/2016/slcon-2016-07-jklemkow-ii-like_chatting_improved.png"> <source src="https://dl.suckless.org/slcon/2016/slcon-2016-07-jklemkow-ii-like_chatting_improved.webm" type="video/webm"> @@ -154,14 +154,14 @@ Saturday, 2016-09-24 (15:50-16:25) text engine, Francesc Hervada-Sala > The right approach to software systems was introduced by the Unix - programming environment over forty years ago with a file system that - opened access to data across all applications and with a universal - interface model based on strings. - This talk claimed that this approach should be deepened by defining - "text" as the semantic data structure that results from parsing - strings, theorizing a software system with a "text engine" at its - kernel and discussing improvements it can bring to modern data - processing and user experience. +> programming environment over forty years ago with a file system that +> opened access to data across all applications and with a universal +> interface model based on strings. +> This talk claimed that this approach should be deepened by defining +> "text" as the semantic data structure that results from parsing +> strings, theorizing a software system with a "text engine" at its +> kernel and discussing improvements it can bring to modern data +> processing and user experience. <video width="600" height="338" controls="" style="display:block;margin:0 auto" poster="https://dl.suckless.org/slcon/2016/slcon-2016-08-fhervadas-text_engine.png"> <source src="https://dl.suckless.org/slcon/2016/slcon-2016-08-fhervadas-text_engine.webm" type="video/webm"> @@ -176,16 +176,16 @@ Saturday, 2016-09-24 > This talk picked up the conception of an image being an array of numbers - and deduced that C is well suited for image processing algorithms, - given arrays of numbers are natively representable in it. - It also elaborated on and exemplified how many complex image processing - algorithms are pipelines of simple, independent steps, making the Unix - programming environment an ideal platform for image processing with - several simple programs written in C sharing information through - pipes. - In this context, the problem of selecting a proper file format for - pipe interchange is discussed and claimed that the farbfeld image - format is not suitable for this task and general image processing. +> and deduced that C is well suited for image processing algorithms, +> given arrays of numbers are natively representable in it. +> It also elaborated on and exemplified how many complex image processing +> algorithms are pipelines of simple, independent steps, making the Unix +> programming environment an ideal platform for image processing with +> several simple programs written in C sharing information through +> pipes. +> In this context, the problem of selecting a proper file format for +> pipe interchange is discussed and claimed that the farbfeld image +> format is not suitable for this task and general image processing. <video width="600" height="338" controls="" style="display:block;margin:0 auto" poster="https://dl.suckless.org/slcon/2016/slcon-2016-09-emeinhardtl-suckless_image_processing.png"> <source src="https://dl.suckless.org/slcon/2016/slcon-2016-09-emeinhardtl-suckless_image_processing.webm" type="video/webm"> @@ -196,12 +196,12 @@ Saturday, 2016-09-24 (17:20-17:45) shared farbfeld, Jan Klemkow > This talk explored farbfeld as a basis for general purpose image - processing based on the idea of cooperative image processing tools, - presenting a shared memory interface that speeds up the usage of - these tools. Based on this foundation, the architecture of a - Photoshop-like image editor is presented with the proof of concept - implementation [shmff](https://github.com/younix/shmff) and benchmarks - supporting this idea. +> processing based on the idea of cooperative image processing tools, +> presenting a shared memory interface that speeds up the usage of +> these tools. Based on this foundation, the architecture of a +> Photoshop-like image editor is presented with the proof of concept +> implementation [shmff](https://github.com/younix/shmff) and benchmarks +> supporting this idea. <video width="600" height="338" controls="" style="display:block;margin:0 auto" poster="https://dl.suckless.org/slcon/2016/slcon-2016-10-jklemkow-shared_farbfeld.png"> <source src="https://dl.suckless.org/slcon/2016/slcon-2016-10-jklemkow-shared_farbfeld.webm" type="video/webm"> @@ -220,9 +220,9 @@ Saturday, 2016-09-24 (17:50-18:30) stali learnings and beehive observation, Anselm R Garbe > This talk presented the experience gained with stali since the last - slcon, discussing new goals and why self-bootstrappability is a bad - idea in particular. As a proof of concept, the presenter demonstrated - stali as a platform for observing his beehives. +> slcon, discussing new goals and why self-bootstrappability is a bad +> idea in particular. As a proof of concept, the presenter demonstrated +> stali as a platform for observing his beehives. <video width="600" height="338" controls="" style="display:block;margin:0 auto" poster="https://dl.suckless.org/slcon/2016/slcon-2016-12-agarbe-stali_learnings_and_beehive_observation.png"> <source src="https://dl.suckless.org/slcon/2016/slcon-2016-12-agarbe-stali_learnings_and_beehive_observation.webm" type="video/webm"> @@ -236,8 +236,8 @@ Official slcon 2016 talk session end. (18:55-19:20) suckless.org e.V. Mitgliederversammlung (suckless.org e.V. general assembly) > The yearly general assembly consisted of the report of the chairs, - Anselm R Garbe and Laslo Hunhold, the report of the treasurer, - Jan Klemkow, and the discussion of topics raised by members. +> Anselm R Garbe and Laslo Hunhold, the report of the treasurer, +> Jan Klemkow, and the discussion of topics raised by members. <video width="600" height="338" controls="" style="display:block;margin:0 auto" poster="https://dl.suckless.org/slcon/2016/slcon-2016-13-all-vote.png"> <source src="https://dl.suckless.org/slcon/2016/slcon-2016-13-all-vote.webm" type="video/webm"> diff --git a/suckless.org/conferences/2017/index.md b/suckless.org/conferences/2017/index.md @@ -3,14 +3,14 @@ suckless hackathon 2017, Würzburg, Germany slcon hackathon 2017 was held in Würzburg on 2017-09-(01-03). -->[![slcon2017 group photo](slcon2017-s.png)](slcon2017.png)<- +[![slcon2017 group photo](slcon2017-s.png)](slcon2017.png) In contrast to previous years we didn't conduct regular talk sessions but worked on our projects instead. We also introduced the annual suckless torchlight hike for the first time. -->[![hike 2017 photo](hike2017-s.png)](hike2017.png)<- +[![hike 2017 photo](hike2017-s.png)](hike2017.png) Previous conferences ==================== diff --git a/suckless.org/conferences/2018/index.md b/suckless.org/conferences/2018/index.md @@ -3,13 +3,13 @@ suckless hackathon 2018, Würzburg, Germany slcon hackathon 2018 was held in Würzburg on 2018-07-(06-09). -->[![slcon2018 group photo 0](slcon2018-0-s.jpg)](slcon2018-0.jpg)<- +[![slcon2018 group photo 0](slcon2018-0-s.jpg)](slcon2018-0.jpg) -->[![slcon2018 group photo 1](slcon2018-1-s.jpg)](slcon2018-1.jpg)<- +[![slcon2018 group photo 1](slcon2018-1-s.jpg)](slcon2018-1.jpg) We used the time to work on new and existing projects. -->[![working table](slcon2018-2-s.jpg)](slcon2018-2.jpg)<- +[![working table](slcon2018-2-s.jpg)](slcon2018-2.jpg) Previous conferences ==================== diff --git a/suckless.org/hacking/index.md b/suckless.org/hacking/index.md @@ -14,19 +14,19 @@ You can create backtraces with `gdb`: Before starting a program, you may have to allow core file creation. It is recommended that you put this in your profile: - $ ulimit -c unlimited + $ ulimit -c unlimited Then start the program as usual. After the program crashes, do the following: - $ gdb -q `which program` /path/to/core - gdb> bt full + $ gdb -q `which program` /path/to/core + gdb> bt full If you encounter freezes (no crash at all) of the program, you can debug as follows: - $ gdb -q `which program` --attach `pgrep -o program` - gdb> bt full + $ gdb -q `which program` --attach `pgrep -o program` + gdb> bt full Send the output of that command to the mailing list along with the output of `program -v`! Thank you! @@ -52,8 +52,8 @@ The expected format for patches is For git revisions: - toolname-patchname-YYYYMMDD-SHORTHASH.diff - dwm-allyourbase-20160617-3465bed.diff + toolname-patchname-YYYYMMDD-SHORTHASH.diff + dwm-allyourbase-20160617-3465bed.diff The YYYYMMDD date should correspond to the last time the patch has been modified. The SHORTHASH here is the seven chars git commit short hash corresponding to the @@ -61,12 +61,12 @@ last commit of the tool on which the patch can be applied correctly and is working with. You can get it by taking the first seven chars of the full hash or for example: - git rev-parse --short <commit-id> (with commit-id: HEAD, commit hash, etc.) + git rev-parse --short <commit-id> (with commit-id: HEAD, commit hash, etc.) For release versions: - toolname-patchname-RELEASE.diff - dwm-allyourbase-6.1.diff + toolname-patchname-RELEASE.diff + dwm-allyourbase-6.1.diff The RELEASE should correspond to the tool release version, ie 6.1 for dwm-6.1. @@ -74,31 +74,30 @@ diff generation --------------- For git users: - cd program-directory - git add filechanges... - git commit (write a clear patch description) - git format-patch --stdout HEAD^ > toolname-patchname-YYYYMMDD-SHORTHASH.diff + cd program-directory + git add filechanges... + git commit (write a clear patch description) + git format-patch --stdout HEAD^ > toolname-patchname-YYYYMMDD-SHORTHASH.diff For tarballs: - cd modified-program-directory/.. - diff -up original-program-directory modified-program-directory > \ - toolname-patchname-RELEASE.diff + cd modified-program-directory/.. + diff -up original-program-directory modified-program-directory > \ + toolname-patchname-RELEASE.diff patch program ------------- For git users, use -3 to fix the conflict easily: - cd program-directory - git apply path/to/patch.diff + cd program-directory + git apply path/to/patch.diff For patches formatted with git format-patch: - cd program-directory - git am path/to/patch.diff + cd program-directory + git am path/to/patch.diff For tarballs: - cd program-directory - patch -p1 < path/to/patch.diff - + cd program-directory + patch -p1 < path/to/patch.diff diff --git a/suckless.org/people/more_people/index.md b/suckless.org/people/more_people/index.md @@ -71,4 +71,3 @@ developers and contributors. If you are missing, feel free to add yourself. * Uwe Zeisberger (code review, bug fixings) * Wilson Oliveira (contributed the wmizer tool) * yiyus || Jesus Galan (dwm patches a go-go) - diff --git a/suckless.org/rocks/index.md b/suckless.org/rocks/index.md @@ -2,25 +2,25 @@ Stuff that rocks ================ Libraries -========= +--------- This section is for small, usable development libraries, which can be used for writing software that sucks less. These should preferably be under the MIT/X consortium or BSD licenses, WTFPL, or public domain, or alternatively LGPL, because it makes them legally compatible with other suckless projects. -Libc Implementations --------------------- +### Libc Implementations + * [musl](http://www.musl-libc.org/) - standard C library that attempts to be even smaller than uClibc * [uClibc](https://uclibc.org/) - strives to be a minimalist C library suitable for embedded computing * See also: [embedded libc comparison](http://www.etalabs.net/compare_libcs.html) -Compilers ---------- +### Compilers + * [tcc](https://bellard.org/tcc/) - Tiny C Compiler [git repo](http://repo.or.cz/w/tinycc.git) -Compression ------------ +### Compression + * [liblzf](http://oldhome.schmorp.de/marc/liblzf.html) - very fast, legally unencumbered compression library * [miniz](https://github.com/richgel999/miniz) - single C-file reimplementation of zlib (MIT License). * [xz embedded](https://tukaani.org/xz/embedded.html) - lightweight decompressor for the xz LZMA compressor (public domain) @@ -28,12 +28,12 @@ Compression * [zlib](http://zlib.net/) - the "standard" compression/decompression library, quite small, used in many applications ([zlib license](http://zlib.net/zlib_license.html)) * [libz](https://sortix.org/libz/) - ABI and API compatible zlib fork with focus on correctness, proper portability, auditability, simplification and opportunities to optimize ([zlib license](http://zlib.net/zlib_license.html)) -Cryptography ------------- +### Cryptography + * [libressl](https://www.libressl.org/) - LibreSSL is a version of the TLS/crypto stack forked from OpenSSL in 2014 -Miscellaneous -------------- +### Miscellaneous + * [ccv](http://libccv.org/) - C-based/Cached/Core Computer Vision Library, A Modern Computer Vision Library * [libev](http://software.schmorp.de/pkg/libev.html) - high performance event-loop modelled after libevent but much smaller (dual licensed under 2-clause BSD and GPL) * [mandoc](http://mandoc.bsd.lv/) - The mandoc UNIX manpage compiler toolset @@ -44,7 +44,7 @@ Miscellaneous * [termbox](https://github.com/nsf/termbox) - simple ncurses-like library for creating TUIs Programs -======== +-------- Some programs work well with dwm. Some general rules of thumb for judging a programs as usable are: @@ -53,8 +53,8 @@ for judging a programs as usable are: This covers most console-based programs and programs from [plan9port][]. -Audio Players -------------- +### Audio Players + * [C* Music Player](https://cmus.github.io/) * [cplay](http://cplay.sourceforge.net/) * [DeaDBeeF](http://deadbeef.sourceforge.net/) @@ -65,34 +65,34 @@ Audio Players * [vorbis-tools](https://www.xiph.org/) (Ogg/FLAC) - Command-line tools to play Ogg and FLAC files. * [RSound](https://github.com/Themaister/RSound/) - Simple PCM audio server and client -BitTorrent Clients ------------------- +### BitTorrent Clients + * [btpd](https://github.com/btpd/btpd) - The BitTorrent Protocol Daemon -Feed Aggregators ----------------- +### Feed Aggregators + * [newsboat](https://newsboat.org/) - RSS/Atom feed reader for text terminals (updated fork of [newsbeuter](https://www.newsbeuter.org/)) * [snownews](https://github.com/kouya/snownews/) - Text mode RSS newsreader for Linux and Unix * [sfeed](https://git.codemadness.org/sfeed/) - RSS and Atom parser + CLI programs -File Browsers -------------- +### File Browsers + * [noice](https://git.2f30.org/noice/) - Small and portable file browser * [nnn](https://github.com/jarun/nnn) - Noice is Not Noice, a noicer fork... * [rover](https://lecram.github.io/p/rover/) - Simple file browser for the terminal -File Managers -------------- +### File Managers + * [mc](https://midnight-commander.org/) - Midnight Commander is a free cross-platform orthodox file manager * [ranger](https://ranger.github.io/) - ranger is a file manager with vi key bindings written in python but with an interface that rocks -Git ---- +### Git + * [stagit](https://git.codemadness.org/stagit/) - static git page generator (HTML) * [stagit-gopher](https://git.codemadness.org/stagit-gopher/) - static git page generator for gopher (geomyidae .gph pages) -IRC Clients ------------ +### IRC Clients + * [Irc](https://swtch.com/irc/) * [irc.c from mpu](https://c9x.me/irc/) - A Minimal Curses IRC Client. * [ii](//tools.suckless.org/ii/) - A FIFO based IRC client which is part of the suckless.org project. @@ -101,8 +101,8 @@ IRC Clients * [sic](//tools.suckless.org/sic/) - Another suckless.org IRC client. Similar to ircc. * [quIRC](https://github.com/ec429/quIRC) - a lightweight console IRC client -Image Viewers -------------- +### Image Viewers + * [feh](https://feh.finalrewind.org/) * [jpg/gif/bmp/png][plan9port] - Simple programs from Plan 9 to display images in no-frills windows. Included with plan9port. * [meh](https://www.johnhawthorn.com/meh/) - image viewer using raw XLib, libjpeg, libpng and libgif @@ -114,16 +114,16 @@ Image Viewers * [lel](https://git.2f30.org/lel/) - Suckless imagefile viewer (WIP) * [imv](https://github.com/exec64/imv) - Simple X11/Wayland Image Viewer. Depends on SDL2 and FreeImage. -Instant Messaging Clients -------------------------- +### Instant Messaging Clients + * [bitlbee](https://www.bitlbee.org/main.php/news.r.html) - A program to translate IM protocols to IRC. You can now IM from your IRC client, and you don't even need to install anything. * [CenterIM](http://www.centerim.org/index.php/Main_Page) - A centericq fork. * [irssi-xmpp](http://cybione.org/~irssi-xmpp/) * [mcabber](http://mcabber.com/) - A console jabber client. * [ysm](http://ysmv7.sourceforge.net/) -Mail Clients ------------- +### Mail Clients + * [Mail][plan9port] - A mail client for [acme][]. Included with plan9port. * [dmc](//git.suckless.org/dmc/) - A minimalistic approach to a command-line mail client (WIP) * [fdm](https://github.com/nicm/fdm) - fetch and deliver mail @@ -135,30 +135,30 @@ Mail Clients * [mmh](http://marmaro.de/prog/mmh/) * [mblaze](https://github.com/chneukirchen/mblaze) - Unix utilities to deal with Maildir -Media Players -------------- +### Media Players + * [mplayer](http://www.mplayerhq.hu/design7/news.html) (without GUI) - You know mplayer, but you may not know that it works well without the GUI. * [mpv](https://mpv.io/) - a free, open source, and cross-platform media player * [ffplay](https://www.ffmpeg.org/ffplay.html) - FFplay is a very simple and portable media player. It came with ffmpeg which is a mplayer dependence. -Password Managers ------------------ +### Password Managers + * [pass](https://www.passwordstore.org/) - The standard unix password manager * [tpm](https://github.com/nmeum/tpm/) - Tiny password manager * [spm](https://notabug.org/kl3/spm/) - Simple password manager (actively maintained fork of nmeum's tpm) -PDF Viewers ------------ +### PDF Viewers + * [mupdf](https://mupdf.com/) * [zathura](https://pwmt.org/projects/zathura/) -Shells ------- +### Shells + * [mksh](https://www.mirbsd.org/mksh.htm) - MirBSD Korn Shell, an actively developed free implementation of the Korn Shell programming language and a successor to the Public Domain Korn Shell (pdksh) * [dash](http://gondor.apana.org.au/~herbert/dash/) - DASH is a POSIX-compliant implementation of /bin/sh that aims to be as small as possible. It does this without sacrificing speed where possible. -Text Editors ------------- +### Text Editors + * [acme][] - Rob Pike's framing text editor for Plan 9. Included in [plan9port][]. * [ired](http://www.radare.org/r/) (Minimalist hexadecimal editor and bindiffer for p9, w32 and *nix) * [mg](https://homepage.boetes.org/software/mg/) (portable version of mg maintained by the OpenBSD team) @@ -172,8 +172,8 @@ Text Editors * [wily](http://www.cse.yorku.ca/~oz/wily/) - An acme clone for POSIX. * [ed](https://9fans.github.io/plan9port/man/man1/ed.html) - [ED IS THE STANDARD TEXT EDITOR!](https://www.gnu.org/fun/jokes/ed-msg.html) -Utilities ---------- +### Utilities + * [9menu](https://github.com/arnoldrobbins/9menu/) - A menu program based on the Blit-style menus so prevalent in Plan 9. A take on it is included with wmii. * [dmenu](//tools.suckless.org/dmenu/) - dmenu is a dynamic menu for X * [slmenu](https://bitbucket.org/rafaelgg/slmenu) - Dmenu spinoff for the console @@ -183,8 +183,8 @@ Utilities * [entr](http://entrproject.org/) - Run arbitrary commands when files change * [snore](https://github.com/clamiax/snore) - Sleep with feedback -Web Browsers ------------- +### Web Browsers + * [Abaco](http://lab-fgb.com/abaco/) * [Conkeror](http://www.conkeror.org/) - A Gecko based browser, imparting it Emacs style key bindings, appearances, and behaviors. * [Dillo](https://www.dillo.org/) @@ -202,8 +202,8 @@ Web Browsers Vimperator (Doesn't work with firefox 57+) * [w3m](http://w3m.sourceforge.net/) -X11 ---- +### X11 + * [xclip](https://github.com/astrand/xclip) - A tool for controlling the X11 clipboard. * [xdotool](http://www.semicomplete.com/projects/xdotool/) - A tool for @@ -220,14 +220,14 @@ X11 [acme]: http://acme.cat-v.org Daemons -======= +------- This section is dedicated to Daemons that are related to the UNIX philosophy (but don't really belong into the cool programs section which is about programs which work well with dwm). -Web Servers ------------ +### Web Servers + * [quark](//tools.suckless.org/quark/) - suckless simple static web server * [OpenBSD httpd/relayd](https://bsd.plumbing/) - Designed to combat the feature creep of modern webservers. Boasts extremely concise configuration, with sane default behavior. * [darkhttpd](https://unix4lyfe.org/darkhttpd/) - Darkhttpd is a simple, fast HTTP 1.1 web server for static content. @@ -235,10 +235,10 @@ Web Servers * [mini_httpd](http://acme.com/software/mini_httpd/) - By the thttpd developers. Even smaller subset of thttpd with support for .htpasswd, CGI, dirlisting, HTTP errors and SSL, nothing more or less than that. * [shus](https://github.com/dimkr/shus) - A tiny HTTP server for static sites -Gopher Servers --------------- +### Gopher Servers + * [geomyidae](http://git.r-36.net/geomyidae/) - small gopher-daemon written by 20h -Misc Daemons ------------- +### Misc Daemons + * [scron](https://git.2f30.org/scron/) - simple crond. diff --git a/suckless.org/sucks/systemd/index.md b/suckless.org/sucks/systemd/index.md @@ -47,31 +47,31 @@ Part 3 [NEWS revision 76153ad45f09b6ae45464f2e03d3afefbb4b2afe](https://github.com/systemd/systemd/blob/76153ad45f09b6ae45464f2e03d3afefbb4b2afe/NEWS) * [systemd does {,U}EFI bootload](https://github.com/systemd/systemd/blob/76153ad45f09b6ae45464f2e03d3afefbb4b2afe/NEWS#L1306) - * Should systemd's PID be changed from 1 to a negative, or imaginary, - number? It now exists before the kernel itself, during a bootup. - See also [systemd-boot](https://wiki.archlinux.org/index.php/systemd-boot). + * Should systemd's PID be changed from 1 to a negative, or imaginary, + number? It now exists before the kernel itself, during a bootup. + See also [systemd-boot](https://wiki.archlinux.org/index.php/systemd-boot). * [systemd replaces sudo and su](https://github.com/systemd/systemd/blob/76153ad45f09b6ae45464f2e03d3afefbb4b2afe/NEWS#L1233) - * Please note the command name, machinectl and - its [features at the manpage](https://www.freedesktop.org/software/systemd/man/machinectl.html). - In exchange for a program which contains sudo, su and kill - (and does some functions which historically ssh/telnet did), bare metal - users have a tons of bloat and a lot of things to disable, if even - possible, useful only to people which deal with virtual machines. + * Please note the command name, machinectl and + its [features at the manpage](https://www.freedesktop.org/software/systemd/man/machinectl.html). + In exchange for a program which contains sudo, su and kill + (and does some functions which historically ssh/telnet did), bare metal + users have a tons of bloat and a lot of things to disable, if even + possible, useful only to people which deal with virtual machines. * [systemd-journald can do log-rotate](https://github.com/systemd/systemd/blob/76153ad45f09b6ae45464f2e03d3afefbb4b2afe/NEWS#L1073) - * Being journal files binaries written with easily corruptable - transactions, does this feature make the log unreadable at times? + * Being journal files binaries written with easily corruptable + transactions, does this feature make the log unreadable at times? * [Transient units](https://github.com/systemd/systemd/blob/76153ad45f09b6ae45464f2e03d3afefbb4b2afe/NEWS#L708) - * Temporary services, because we love to reinvent procps, forking, - nohup and lsof. + * Temporary services, because we love to reinvent procps, forking, + nohup and lsof. * [systemd does socat/netcat](https://github.com/systemd/systemd/blob/76153ad45f09b6ae45464f2e03d3afefbb4b2afe/NEWS#L546) * [systemd-logind does sighup and nohup](https://github.com/systemd/systemd/blob/76153ad45f09b6ae45464f2e03d3afefbb4b2afe/NEWS#L274) - * Logout is equivalent to shutting off the machine, so you will NOT - have any running program after logout, unless you inform your init system. + * Logout is equivalent to shutting off the machine, so you will NOT + have any running program after logout, unless you inform your init system. * [systemd-nspawn can patch at will any kind of file in a container](https://github.com/systemd/systemd/blob/76153ad45f09b6ae45464f2e03d3afefbb4b2afe/NEWS#L391) - * Paired with transient units and user escalation performable remotely, - this can mean that if you house VPS instances somewhere, your - hosting provider has means and tools to spy, modify, delete any - kind of content you store there. Encrypt everything, read your TOS. + * Paired with transient units and user escalation performable remotely, + this can mean that if you house VPS instances somewhere, your + hosting provider has means and tools to spy, modify, delete any + kind of content you store there. Encrypt everything, read your TOS. * [systemd does UNIX nice](https://github.com/systemd/systemd/blob/76153ad45f09b6ae45464f2e03d3afefbb4b2afe/NEWS#L425) ---- Führerbunker, 2016-08-06 @@ -90,201 +90,199 @@ plain file.) [NEWS revision 3f80af378331748e1373d4c189a8e20cddb735c9](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c) * [logind should wait](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n2089) - * systemd was introduced to decrease the boot up time. Now that they - do not understand all implications and dependencies, let us add some - artifical time we found out might work for the developers - laptops. More on this small world hypothesis of the systemd - developers below. + * systemd was introduced to decrease the boot up time. Now that they + do not understand all implications and dependencies, let us add some + artifical time we found out might work for the developers + laptops. More on this small world hypothesis of the systemd + developers below. * [screen brightness](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1852) - * Screen brightness is something that should crash your boot up when - it is not working. + * Screen brightness is something that should crash your boot up when + it is not working. * [hostnamed](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1763) - * There really should be a process running which exposes the content - of a file. Complexity is without cost. + * There really should be a process running which exposes the content + of a file. Complexity is without cost. * [seqnum removed](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1742) - * The sequential ordering of requests was one reason why udevd was - introduced. Now remove it, because the developer laptops do not have - a problem anymore. + * The sequential ordering of requests was one reason why udevd was + introduced. Now remove it, because the developer laptops do not have + a problem anymore. * [floppy group removed](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1703) - * Because we know what is right to know about groups. This is just one - example of the mass of group name dependencies systemd is adding. - See sinit for how to not need such dependencies. + * Because we know what is right to know about groups. This is just one + example of the mass of group name dependencies systemd is adding. + See sinit for how to not need such dependencies. * [sysv removed](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1651) - * We have won. Now remove all remains of our defeated enemy as - fast as we can. As said in the beginning of the systemd crusade - against the UNIX infidels: »You can patch it out.« It is no more - there. + * We have won. Now remove all remains of our defeated enemy as + fast as we can. As said in the beginning of the systemd crusade + against the UNIX infidels: »You can patch it out.« It is no more + there. * [abnormal processes](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1627) - * Now systemd is getting deep into philosophy. What is »abnormal«? - Well, let us just define it. There is no technical merit to accept - this. + * Now systemd is getting deep into philosophy. What is »abnormal«? + Well, let us just define it. There is no technical merit to accept + this. * [systemd-resolved](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1578) - * Every configuration file needs its own process and service. - * Symlinks are a good way to solve all world problems. + * Every configuration file needs its own process and service. + * Symlinks are a good way to solve all world problems. * [new is better](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1571) - * The systemd development process is flawed by always assuming »new is - best«. - * Network configuration should be in my init process. + * The systemd development process is flawed by always assuming »new is + best«. + * Network configuration should be in my init process. * [remote pid 1](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1500) - * »Everything will end up having a remote API.« I wonder when systemd - will understand MIME and e-mail. + * »Everything will end up having a remote API.« I wonder when systemd + will understand MIME and e-mail. * [init does man](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1465) - * My init process is too big, it needs its own file hierarchy and an - abstraction layer to find paths. + * My init process is too big, it needs its own file hierarchy and an + abstraction layer to find paths. * [factory reset](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1401) - * Welcome to the Windows OEM world: Factory reset for Linux! Of course - it is in your init process. + * Welcome to the Windows OEM world: Factory reset for Linux! Of course + it is in your init process. * [system runs runs](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1397) - * Exactly. The predisposition of being able to call such a complex - command does not imply the running system. Let's check it again. + * Exactly. The predisposition of being able to call such a complex + command does not imply the running system. Let's check it again. * [clean up directories](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1306) - * There is another monster in systemd, it handles tmp files. - There are just some cases before it was introduced to have to clean up - a directory in the file tree. Now there are hundreds. And easily - another case can be added! Of course your init process does that. + * There is another monster in systemd, it handles tmp files. + There are just some cases before it was introduced to have to clean up + a directory in the file tree. Now there are hundreds. And easily + another case can be added! Of course your init process does that. * [firstboot](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1259) - * »Interactive queries« pulls in many dependencies. Let us have it in - every installation out there on by default. Of course in pid 1. + * »Interactive queries« pulls in many dependencies. Let us have it in + every installation out there on by default. Of course in pid 1. * [journald](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1234) - * This is a bit longer. Because the systemd developers were not able - to contribute to any syslog daemon they had to write their own with - some binary format so the principle of being able to read your log - files after a critical crash was violated. To be nice invaders the old - systems were allowed to order the system log through the specified - mechanism. Now that they implemented our specifics, turn off the - neutral syslog delivery. You will see this pattern of »now that we - conquered your culture, obey« more often in systemd. + * This is a bit longer. Because the systemd developers were not able + to contribute to any syslog daemon they had to write their own with + some binary format so the principle of being able to read your log + files after a critical crash was violated. To be nice invaders the old + systems were allowed to order the system log through the specified + mechanism. Now that they implemented our specifics, turn off the + neutral syslog delivery. You will see this pattern of »now that we + conquered your culture, obey« more often in systemd. * [systemd-terminal](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1224) - * Why does the kernel have tty handling? So in serious situations you - will be able to debug it over the last standing PIN on your - motherboard. Let us remove this, run it in pid 1. + * Why does the kernel have tty handling? So in serious situations you + will be able to debug it over the last standing PIN on your + motherboard. Let us remove this, run it in pid 1. * [networkd is your oppressor](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1216) - * Premature optimisation of IP configurations always leads to misery. + * Premature optimisation of IP configurations always leads to misery. * [We do not understand broadcast](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1211) - * With the growth of systemd in complexity and the new depending - software the implications of the added hacks are increasing. + * With the growth of systemd in complexity and the new depending + software the implications of the added hacks are increasing. * [Timezone hack](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1193) - * systemd is too complex for such a simple transaction with the - kernel. Do not inform the kernel and add another assumption which is - only documented in the changelog. + * systemd is too complex for such a simple transaction with the + kernel. Do not inform the kernel and add another assumption which is + only documented in the changelog. * [the web is a session](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1168) - * For the future generations: In 2015 nearly everyone was trying to - connect all you do to the web. In the UNIX model it is just a client - which should be simple and integrate into the system. systemd is - doing it the other way around and does integrate itself into the - web. - * The discussion about why my pid 1 is handling sessions is discussed - in other points. + * For the future generations: In 2015 nearly everyone was trying to + connect all you do to the web. In the UNIX model it is just a client + which should be simple and integrate into the system. systemd is + doing it the other way around and does integrate itself into the + web. + * The discussion about why my pid 1 is handling sessions is discussed + in other points. * [pid 1 does DNS](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1128) - * This change adds another open door to your pid 1, adds caches, new - APIs and of course it will never fail and break systemd on your - initial boot. - * They are planning (2015-07) to add multicast DNS to your pid 1. - Multicast DNS implies an enforced timeout to know if someone answered. - systemd was about speed, you know. Look at avahi in how to ruin this - concept for Linux. It has the same developer flaws as systemd: Too - many forced dependencies, you need to implement its API and when it is - taking over you are doomed. + * This change adds another open door to your pid 1, adds caches, new + APIs and of course it will never fail and break systemd on your + initial boot. + * They are planning (2015-07) to add multicast DNS to your pid 1. + Multicast DNS implies an enforced timeout to know if someone answered. + systemd was about speed, you know. Look at avahi in how to ruin this + concept for Linux. It has the same developer flaws as systemd: Too + many forced dependencies, you need to implement its API and when it is + taking over you are doomed. * [policykit](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1113) - * There is a bus inside your pid 1 and if it crashes you are flawed. - Exactly, there are a thousand more cases of errors that could occur - and make your system unbootable. Instead of using a separation of - functions, add everything to a big bus. - * Of course when you are using a misdesign like dbus you need to add - interactions over the bus to add features you forgot in the initial - design. Now let us have our pid 1 have to query for the permission - to boot. - * »Interactive authentication« will produce you a graphical input form - on your serial line. + * There is a bus inside your pid 1 and if it crashes you are flawed. + Exactly, there are a thousand more cases of errors that could occur + and make your system unbootable. Instead of using a separation of + functions, add everything to a big bus. + * Of course when you are using a misdesign like dbus you need to add + interactions over the bus to add features you forgot in the initial + design. Now let us have our pid 1 have to query for the permission + to boot. + * »Interactive authentication« will produce you a graphical input form + on your serial line. * [Calendar](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1044) - * As you see, your pid 1 should handle your calendars and cron jobs - too. + * As you see, your pid 1 should handle your calendars and cron jobs + too. * [utmp should go](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n994) - * We have taken over your culture, now die! Another flaw in the - systemd small world theory: When something is getting optional it - will be removed. + * We have taken over your culture, now die! Another flaw in the + systemd small world theory: When something is getting optional it + will be removed. * [password agent](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n964) - * »Interactive authentication« + * »Interactive authentication« * [udev timeout](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n944) - * Instead of patching the kernel to add a simple solution, add a hack. - Only the systemd developers tell you when it is allowed to wait or - sleep in userspace. The rest obey our orders! + * Instead of patching the kernel to add a simple solution, add a hack. + Only the systemd developers tell you when it is allowed to wait or + sleep in userspace. The rest obey our orders! * [systemd-pm](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n924) - * Power management is required on boot up. + * Power management is required on boot up. * [user systemd units](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n898) - * What can go wrong when you are adding more paths that are read, - parsed and executed? + * What can go wrong when you are adding more paths that are read, + parsed and executed? * [hack the reload](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n888) - * First systemd was adding »better features« like socket activation to - make developers use their mechanism for daemons. They hit the - proprietary wall of disgust with this changelog entry. systemd is - too big and you will lose your face if you change the misdesign. Now - add another hack because we can do it. Big empires fall too and - sadly have too many casualties when they are falling. :( + * First systemd was adding »better features« like socket activation to + make developers use their mechanism for daemons. They hit the + proprietary wall of disgust with this changelog entry. systemd is + too big and you will lose your face if you change the misdesign. Now + add another hack because we can do it. Big empires fall too and + sadly have too many casualties when they are falling. :( * [X11 in systemd](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n783) - * Of course graphics were missing in pid 1. + * Of course graphics were missing in pid 1. * [complexity is purity](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n738) - * You will of course need PPPoE when you do parallel bootup. Every - 1000 lines of code add one critical bug you never fix. + * You will of course need PPPoE when you do parallel bootup. Every + 1000 lines of code add one critical bug you never fix. * [gateway hostname](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n700) - * We rule the world so we are above IETF and IANA. Now add our own - hostnames that of course won't add another assumption. + * We rule the world so we are above IETF and IANA. Now add our own + hostnames that of course won't add another assumption. * [no editor in systemd](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n689) - * This one is a setback. Why is there no default editor in systemd in - case of factory reset? + * This one is a setback. Why is there no default editor in systemd in + case of factory reset? * [8x ctrl + alt + del](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n610) - * In systemd you press eight times Ctrl+Alt+Del to trigger reboot. + * In systemd you press eight times Ctrl+Alt+Del to trigger reboot. * [privacy policy](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n594) - * For the next generations: In 2015 privacy was a big issue because of - the mentioned hard-wiring between the web and software. - As you can see, every commit which adds some preparation for a - feature adds another intepretation of what will be a major - assumption in a next release. If you - handle privacy you will have some features depending on that user - decision and of course the factory reset default value. - * Why didn't they use XML for /etc/os-release? + * For the next generations: In 2015 privacy was a big issue because of + the mentioned hard-wiring between the web and software. + As you can see, every commit which adds some preparation for a + feature adds another intepretation of what will be a major + assumption in a next release. If you + handle privacy you will have some features depending on that user + decision and of course the factory reset default value. + * Why didn't they use XML for /etc/os-release? * [fds cache](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n502) - * We have talked about misdesign, too-big-to-fail and world - domination. This is the next example of a hack that is prone to - fail. + * We have talked about misdesign, too-big-to-fail and world + domination. This is the next example of a hack that is prone to + fail. * [umount -rf](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n380) - * This is umount for dummies. Just do one thing – right. + * This is umount for dummies. Just do one thing – right. * [libudev will be orphaned](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n291) - * With the advent of udevd there was a compatibility to its complexity - called libudev. X11 uses it to query the changing devices. And of - course make it a non-independent API in systemd. Why? You can guess - why: Defeating the infidels. + * With the advent of udevd there was a compatibility to its complexity + called libudev. X11 uses it to query the changing devices. And of + course make it a non-independent API in systemd. Why? You can guess + why: Defeating the infidels. * [fsck indirections](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n281) - * When there was syslog fsck did output errors to your display as - easy as possible. Now add a hack to have this possible again. + * When there was syslog fsck did output errors to your display as + easy as possible. Now add a hack to have this possible again. * [systemd-importd](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n236) - * This is pure evil. Your pid 1 is now able to import complete system - images over the network and show them to you as your running system. - There is nothing that can go wrong. + * This is pure evil. Your pid 1 is now able to import complete system + images over the network and show them to you as your running system. + There is nothing that can go wrong. * [CGI for systemd](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n166) - * The web thing has been discussed before. + * The web thing has been discussed before. * [kdbus](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n57) - * As of 2015-07-31 kdbus is not in the mainline Linux kernel. systemd - made kdbus non-optional in its release. The kernel maintainers are - still debating the kdbus ABI or possible alternatives, but if - systemd depends on the current state of kdbus the kernel maintainers - are faced with the hard decision to either break Fedora userspace or - accept the current kdbus proposal into the kernel with its security - and maintainability issues. This is the best example how - systemd is forcing you into decisions. Of course if you are a mindless - bureaucrat it helps you to keep your job. + * As of 2015-07-31 kdbus is not in the mainline Linux kernel. systemd + made kdbus non-optional in its release. The kernel maintainers are + still debating the kdbus ABI or possible alternatives, but if + systemd depends on the current state of kdbus the kernel maintainers + are faced with the hard decision to either break Fedora userspace or + accept the current kdbus proposal into the kernel with its security + and maintainability issues. This is the best example how + systemd is forcing you into decisions. Of course if you are a mindless + bureaucrat it helps you to keep your job. * [readahead removed](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n950) - * The first thing swallowed in on Fedora was readahead. Now that (of - course!) everyone is using an SSD (at least the developers of - systemd do that) it can be removed. Why was it there? Is it possible - to make it a separate tool again? There's no time for that, we are implementing - new features. + * The first thing swallowed in on Fedora was readahead. Now that (of + course!) everyone is using an SSD (at least the developers of + systemd do that) it can be removed. Why was it there? Is it possible + to make it a separate tool again? There's no time for that, we are implementing + new features. ---- Führerbunker, 2015-07-31 (You can guess who's the Führer.) - - Practical systemd ----------------- diff --git a/surf.suckless.org/files/adblock-hosts/index.md b/surf.suckless.org/files/adblock-hosts/index.md @@ -3,25 +3,25 @@ Adblocking using /etc/hosts Adblocking is a non-trivial task, but there are trivial solutions. -1.) Install hosts-gen from http://git.r-36.net/hosts-gen/ +1. Install hosts-gen from http://git.r-36.net/hosts-gen/ - % git clone http://git.r-36.net/hosts-gen - % cd hosts-gen - % sudo make install + % git clone http://git.r-36.net/hosts-gen + % cd hosts-gen + % sudo make install + + Make sure all your custom configuration from your current /etc/hosts is + preserved in a file in /etc/hosts.d. The files have to begin with a + number, a minus and then the name. - # Make sure all your custom configuration from your current /etc/hosts is - # preserved in a file in /etc/hosts.d. The files have to begin with a - # number, a minus and then the name. + % sudo hosts-gen - % sudo hosts-gen +2. Install the zerohosts script. -2.) Install the zerohosts script. - - # In the above directory. - % sudo cp examples/gethostszero /bin - % sudo chmod 775 /bin/gethostszero - % sudo /bin/gethostszero - % sudo hosts-gen + # In the above directory. + % sudo cp examples/gethostszero /bin + % sudo chmod 775 /bin/gethostszero + % sudo /bin/gethostszero + % sudo hosts-gen Now the /etc/hosts with the zero hosts is ready and will be used in any further started application. diff --git a/surf.suckless.org/files/autorefresh/index.md b/surf.suckless.org/files/autorefresh/index.md @@ -4,24 +4,24 @@ autorefresh Simple script to auto refresh surf pages. Launch the script again to stop auto reloading (easy to use with dmenu) - #!/bin/sh - # Simple script to refresh surf page - # thuban@singularity.fr + #!/bin/sh + # Simple script to refresh surf page + # thuban@singularity.fr - REFRESH=3 - LOCKFILE=/tmp/surfrefresh.lock + REFRESH=3 + LOCKFILE=/tmp/surfrefresh.lock - if [ -e $LOCKFILE ]; then - echo "stop refreshing surf" - PID=$(cat $LOCKFILE) - rm $LOCKFILE - kill -KILL $PID - else - echo $$ > $LOCKFILE - while true; do - kill -HUP $1 - sleep $REFRESH - done - fi - exit 0 + if [ -e $LOCKFILE ]; then + echo "stop refreshing surf" + PID=$(cat $LOCKFILE) + rm $LOCKFILE + kill -KILL $PID + else + echo $$ > $LOCKFILE + while true; do + kill -HUP $1 + sleep $REFRESH + done + fi + exit 0 diff --git a/surf.suckless.org/files/black_css/index.md b/surf.suckless.org/files/black_css/index.md @@ -30,4 +30,4 @@ This file must be deployed into ~/.surf/style.css to get a black themed surf Author ------ -- pancake <[pancake@nopcode.org](mailto:pancake@nopcode.org)> +* pancake <[pancake@nopcode.org](mailto:pancake@nopcode.org)> diff --git a/surf.suckless.org/files/bmarks/index.md b/surf.suckless.org/files/bmarks/index.md @@ -24,7 +24,7 @@ URL handlers Author ------ -- The code was originally from Peter John Hartman, but hardly simplified by pancake and nibble. +* The code was originally from Peter John Hartman, but hardly simplified by pancake and nibble. Installation ------------ diff --git a/surf.suckless.org/files/bmarks_history/index.md b/surf.suckless.org/files/bmarks_history/index.md @@ -23,11 +23,12 @@ URL handlers "g word .." (google for given word) "y word .." (search in youtube) "x word .." (remove an entry from the bookmarks file) + Author ------ -- The code was originally from Peter John Hartman, then filtered through pancake and nibble (see their bmarks) -and now back to Peter John Hartman. You can get the latest version at http://durandus.trilidun.org/durandus/code/surf/. +* The code was originally from Peter John Hartman, then filtered through pancake and nibble (see their bmarks) + and now back to Peter John Hartman. You can get the latest version at http://durandus.trilidun.org/durandus/code/surf/. Installation ------------ diff --git a/surf.suckless.org/files/easier_key/index.md b/surf.suckless.org/files/easier_key/index.md @@ -1,135 +1,132 @@ Easier keyboard shortcuts -========= +========================= Just a javascript to put in `~/.surf/script.js`, coming from userscript. It just reproduce the vim behavious, to navigate in pages without using the Ctrl key everytime : -- h : scroll left -- j : scroll down -- k : scroll up -- l : scroll right -- g : Top of page -- G : bottom of page - - -<pre> -// ==UserScript== -// @name vimkeybindings -// @namespace renevier.fdn.fr -// @author arno <arenevier@fdn.fr> -// @licence GPL/LGPL/MPL -// @description use vim keybingings (i, j, k, l, …) to navigate a web page. -// ==/UserScript== - -/* -* If you're a vim addict, and you always find yourself typing j or k in a web -* page, then wondering why it just does not go up and down like any good -* software, that user script is what you have been looking for. -*/ - - -function up() { - if (window.scrollByLines) - window.scrollByLines(-1); // gecko - else - window.scrollBy(0, -12); // webkit -} - -function down() { - if (window.scrollByLines) - window.scrollByLines(1); // gecko - else - window.scrollBy(0, 12); // webkit -} - -function pageup() { - if (window.scrollByPages) - window.scrollByPages(-1); // gecko - else - window.scrollBy(0, 0 - _pageScroll()); // webkit -} - -function pagedown() { - if (window.scrollByPages) - window.scrollByPages(1); // gecko - else - window.scrollBy(0, _pageScroll()); // webkit -} - -function right() { - window.scrollBy(15, 0); -} - -function left() { - window.scrollBy(-15, 0); -} - -function home() { - window.scroll(0, 0); -} - -function bottom() { - window.scroll(document.width, document.height); -} - -// If you don't like default key bindings, customize here. -// if you want to use the combination 'Ctrl + b' (for example), use '^b' -var bindings = { - 'h' : left, - 'l' : right, - 'k' : up, - 'j' : down, - 'g' : home, - 'G' : bottom, - //'^b': pageup, - //'^f': pagedown, -} - -function isEditable(element) { - - if (element.nodeName.toLowerCase() == "textarea") - return true; - - // we don't get keypress events for text input, but I don't known - // if it's a bug, so let's test that - if (element.nodeName.toLowerCase() == "input" && element.type == "text") - return true; - - // element is editable - if (document.designMode == "on" || element.contentEditable == "true") { - return true; - } - - return false; -} - -function keypress(evt) { - var target = evt.target; - - // if we're on a editable element, we probably don't want to catch - // keypress, we just want to write the typed character. - if (isEditable(target)) - return; - - var key = String.fromCharCode(evt.charCode); - if (evt.ctrlKey) { - key = '^' + key; - } - - var fun = bindings[key]; - if (fun) - fun(); - -} - -function _pageScroll() { - // Gecko algorithm - // ---------------- - // The page increment is the size of the page, minus the smaller of - // 10% of the size or 2 lines. - return window.innerHeight - Math.min(window.innerHeight / 10, 24); -} - -window.addEventListener("keypress", keypress, false); -</pre> +* h: scroll left +* j: scroll down +* k: scroll up +* l: scroll right +* g: Top of page +* G: bottom of page + + // ==UserScript== + // @name vimkeybindings + // @namespace renevier.fdn.fr + // @author arno <arenevier@fdn.fr> + // @licence GPL/LGPL/MPL + // @description use vim keybingings (i, j, k, l, …) to navigate a web page. + // ==/UserScript== + + /* + * If you're a vim addict, and you always find yourself typing j or k in a web + * page, then wondering why it just does not go up and down like any good + * software, that user script is what you have been looking for. + */ + + + function up() { + if (window.scrollByLines) + window.scrollByLines(-1); // gecko + else + window.scrollBy(0, -12); // webkit + } + + function down() { + if (window.scrollByLines) + window.scrollByLines(1); // gecko + else + window.scrollBy(0, 12); // webkit + } + + function pageup() { + if (window.scrollByPages) + window.scrollByPages(-1); // gecko + else + window.scrollBy(0, 0 - _pageScroll()); // webkit + } + + function pagedown() { + if (window.scrollByPages) + window.scrollByPages(1); // gecko + else + window.scrollBy(0, _pageScroll()); // webkit + } + + function right() { + window.scrollBy(15, 0); + } + + function left() { + window.scrollBy(-15, 0); + } + + function home() { + window.scroll(0, 0); + } + + function bottom() { + window.scroll(document.width, document.height); + } + + // If you don't like default key bindings, customize here. + // if you want to use the combination 'Ctrl + b' (for example), use '^b' + var bindings = { + 'h' : left, + 'l' : right, + 'k' : up, + 'j' : down, + 'g' : home, + 'G' : bottom, + //'^b': pageup, + //'^f': pagedown, + } + + function isEditable(element) { + + if (element.nodeName.toLowerCase() == "textarea") + return true; + + // we don't get keypress events for text input, but I don't known + // if it's a bug, so let's test that + if (element.nodeName.toLowerCase() == "input" && element.type == "text") + return true; + + // element is editable + if (document.designMode == "on" || element.contentEditable == "true") { + return true; + } + + return false; + } + + function keypress(evt) { + var target = evt.target; + + // if we're on a editable element, we probably don't want to catch + // keypress, we just want to write the typed character. + if (isEditable(target)) + return; + + var key = String.fromCharCode(evt.charCode); + if (evt.ctrlKey) { + key = '^' + key; + } + + var fun = bindings[key]; + if (fun) + fun(); + + } + + function _pageScroll() { + // Gecko algorithm + // ---------------- + // The page increment is the size of the page, minus the smaller of + // 10% of the size or 2 lines. + return window.innerHeight - Math.min(window.innerHeight / 10, 24); + } + + window.addEventListener("keypress", keypress, false); diff --git a/surf.suckless.org/files/easy_links/index.md b/surf.suckless.org/files/easy_links/index.md @@ -20,115 +20,114 @@ Christian hahn <ch radamanthys de> ## Code - // easy links for surf - // christian hahn <ch radamanthys de>, sep 2010 - - testcomplete = function() { - if(document.readyState=="complete") { - run(); return; - } - window.setTimeout("testcomplete()",200); - } - testcomplete(); - - run=function() { - // config , any css - var modkey = 18; //ctrl=17, alt=18 - var cancelkey = 67; // c - var newwinkey = 84; // t - var openkey = 70; // f - var label_style = {"color":"black","fontSize":"10px","backgroundColor":"#27FF27","fontWeight":"normal","margin":"0px","padding":"0px","position":"absolute","zIndex":99}; - var hl_style = {"backgroundColor":"#E3FF38","fontSize":"15px"}; - var nr_base = 5; // >=10 : normal integer, - - // globals - var ankers = document.getElementsByTagName("a"); - var labels = new Object(); - var ui_visible = false; - var input = ""; - - // functions - hl=function(t) { - for(var id in labels) { - if (t && id.match("^"+t)==t) - for(var s in hl_style) - labels[id].rep.style[s]=hl_style[s]; - else - for(var s in label_style) - labels[id].rep.style[s]=label_style[s]; - } - } - open_link=function(id, new_win) { - try { - var a = labels[input].a; - if(a && !new_win) window.location.href=a.href; - if(a && new_win) window.open(a.href,a.href); - } catch (e) {} - } - set_ui=function(s) { - var pos = "static"; - ui_visible = true; - if(s == "hidden") { - ui_visible = false; - pos = "absolute"; - input=""; - } - for(var id in labels) { - labels[id].rep.style.visibility=s; - labels[id].rep.style.position=pos; - } - } - base=function(n, b) { - if(b>=10) return n.toString(); - var res = new Array(); - while(n) { - res.push( (n%b +1).toString() ) - n=parseInt(n/b); - } - return res.reverse().join(""); - } - - // main - // create labels - for (var i=0; i<ankers.length; i++) { - var a = ankers[i]; - if (!a.href) continue; - var b = base(i+1,nr_base); - var d = document.createElement("span"); - d.style.visibility="hidden"; - d.innerHTML=b; - for(var s in label_style) - d.style[s]=label_style[s]; - labels[b]={"a":a, "rep":d}; - a.parentNode.insertBefore(d, a.nextSibling); - } - - // set key handler - window.onkeydown=function(e) { - if (e.keyCode == modkey) { - set_ui("visible"); - } - } - window.onkeyup=function(e) { - if (e.keyCode == modkey ) { - open_link(input); - set_ui("hidden"); - hl(input); - } else if (ui_visible) { - if(e.keyCode == newwinkey) { - open_link(input, true); - set_ui("hidden"); - } else if(e.keyCode == cancelkey) - input=""; - else if(e.keyCode == openkey) { - open_link(input); - set_ui("hidden"); - } - else - input += String.fromCharCode(e.keyCode); - hl(input); - } - } - } + // easy links for surf + // christian hahn <ch radamanthys de>, sep 2010 + + testcomplete = function() { + if(document.readyState=="complete") { + run(); return; + } + window.setTimeout("testcomplete()",200); + } + testcomplete(); + + run=function() { + // config , any css + var modkey = 18; //ctrl=17, alt=18 + var cancelkey = 67; // c + var newwinkey = 84; // t + var openkey = 70; // f + var label_style = {"color":"black","fontSize":"10px","backgroundColor":"#27FF27","fontWeight":"normal","margin":"0px","padding":"0px","position":"absolute","zIndex":99}; + var hl_style = {"backgroundColor":"#E3FF38","fontSize":"15px"}; + var nr_base = 5; // >=10 : normal integer, + + // globals + var ankers = document.getElementsByTagName("a"); + var labels = new Object(); + var ui_visible = false; + var input = ""; + + // functions + hl=function(t) { + for(var id in labels) { + if (t && id.match("^"+t)==t) + for(var s in hl_style) + labels[id].rep.style[s]=hl_style[s]; + else + for(var s in label_style) + labels[id].rep.style[s]=label_style[s]; + } + } + open_link=function(id, new_win) { + try { + var a = labels[input].a; + if(a && !new_win) window.location.href=a.href; + if(a && new_win) window.open(a.href,a.href); + } catch (e) {} + } + set_ui=function(s) { + var pos = "static"; + ui_visible = true; + if(s == "hidden") { + ui_visible = false; + pos = "absolute"; + input=""; + } + for(var id in labels) { + labels[id].rep.style.visibility=s; + labels[id].rep.style.position=pos; + } + } + base=function(n, b) { + if(b>=10) return n.toString(); + var res = new Array(); + while(n) { + res.push( (n%b +1).toString() ) + n=parseInt(n/b); + } + return res.reverse().join(""); + } + + // main + // create labels + for (var i=0; i<ankers.length; i++) { + var a = ankers[i]; + if (!a.href) continue; + var b = base(i+1,nr_base); + var d = document.createElement("span"); + d.style.visibility="hidden"; + d.innerHTML=b; + for(var s in label_style) + d.style[s]=label_style[s]; + labels[b]={"a":a, "rep":d}; + a.parentNode.insertBefore(d, a.nextSibling); + } + + // set key handler + window.onkeydown=function(e) { + if (e.keyCode == modkey) { + set_ui("visible"); + } + } + window.onkeyup=function(e) { + if (e.keyCode == modkey ) { + open_link(input); + set_ui("hidden"); + hl(input); + } else if (ui_visible) { + if(e.keyCode == newwinkey) { + open_link(input, true); + set_ui("hidden"); + } else if(e.keyCode == cancelkey) + input=""; + else if(e.keyCode == openkey) { + open_link(input); + set_ui("hidden"); + } else + input += String.fromCharCode(e.keyCode); + hl(input); + } + } + } diff --git a/surf.suckless.org/files/edit_source/index.md b/surf.suckless.org/files/edit_source/index.md @@ -7,24 +7,24 @@ Description This script named say editurl allows the user to edit the source of the current page without fetching the page again in three keystrokes: - #!/bin/sh - dir=~/.surf/tmpedit - name=`ls $dir | wc -l` - file=$dir/$name.html - sselp > $file && urxvtc -e vi $file + #!/bin/sh + dir=~/.surf/tmpedit + name=`ls $dir | wc -l` + file=$dir/$name.html + sselp > $file && urxvtc -e vi $file To launch it, you can add the following in config.h above the line "static Key keys[] = {" : - #define EDIT { .v = (char *[]){ "/bin/sh", "-c", "editurl", NULL } } + #define EDIT { .v = (char *[]){ "/bin/sh", "-c", "editurl", NULL } } and the following in the "static Key keys[] = {" part - { MODKEY, GDK_e, spawn, EDIT }, + { MODKEY, GDK_e, spawn, EDIT }, The three required keystrokes are : -modkey o -modkey a -modkey e +* modkey o +* modkey a +* modkey e Author diff --git a/surf.suckless.org/files/hide_applets/index.md b/surf.suckless.org/files/hide_applets/index.md @@ -26,4 +26,4 @@ This script must be deployed into the ~/.surf/user.js and it will hide all the j Author ------ -- Enno Boland (Gottox) <g s01 de> +* Enno Boland (Gottox) <g s01 de> diff --git a/surf.suckless.org/files/middle_click_link/index.md b/surf.suckless.org/files/middle_click_link/index.md @@ -26,9 +26,8 @@ in a new window with middleclick or with control click. Author ------ -- Original author n30n , actual revision chm.duquesne. +* Original author n30n , actual revision chm.duquesne. The last version of this script is [here](http://www.uzbl.org/wiki/middle_click_links) under a [CC Attribution-Noncommercial-Share Alike 3.0 Unported license](http://creativecommons.org/licenses/by-nc-sa/3.0/). - diff --git a/surf.suckless.org/files/not_flash/index.md b/surf.suckless.org/files/not_flash/index.md @@ -45,4 +45,4 @@ and in the keys section: Author ------ -- Maximilian Dietrich - <dxm_at_lavabit_dot_com> +* Maximilian Dietrich - <dxm_at_lavabit_dot_com> diff --git a/surf.suckless.org/index.md b/surf.suckless.org/index.md @@ -5,7 +5,6 @@ to display websites and follow links. It supports the XEmbed protocol which makes it possible to embed it in another application. Furthermore, one can point surf to another URI by setting its XProperties. - 2009/9/17 Simon Rozet <simon@rozet.name>: > I though exactly the same before. I always had +20 tabs open in firefox. > Honestly, I'd never thought I'd enjoy using a browser with no tab support diff --git a/surf.suckless.org/patches/aria2/index.md b/surf.suckless.org/patches/aria2/index.md @@ -3,13 +3,13 @@ To use aria2 instead of curl as default download manager, just replace the DOWNLOAD function like this in config.h: - /* DOWNLOAD(URI, referer) */ - #define DOWNLOAD(d, r) { \ - .v = (char *[]){ "/bin/sh", "-c", \ - "cd ~/Telechargements;"\ - "st -e /bin/sh -c \"aria2c -U '$1'" \ - " --referer '$2' --load-cookies $3 --save-cookies $3 '$0';" \ - " sleep 3;\"", \ - d, useragent, r, cookiefile, NULL \ - } \ - } + /* DOWNLOAD(URI, referer) */ + #define DOWNLOAD(d, r) { \ + .v = (char *[]){ "/bin/sh", "-c", \ + "cd ~/Telechargements;"\ + "st -e /bin/sh -c \"aria2c -U '$1'" \ + " --referer '$2' --load-cookies $3 --save-cookies $3 '$0';" \ + " sleep 3;\"", \ + d, useragent, r, cookiefile, NULL \ + } \ + } diff --git a/surf.suckless.org/patches/bookmarking/index.md b/surf.suckless.org/patches/bookmarking/index.md @@ -16,7 +16,7 @@ Download Author ------ stolen from -- Julien Steinhauser <[julien.steinhauser@orange.fr](mailto:julien.steinhauser@orange.fr)> -written into a patch -- blut -- Alexis Ben Miloud--Josselin (panpo) <[alexis.bmj@protonmail.com](mailto:alexis.bmj@protonmail.com)> +* Julien Steinhauser <[julien.steinhauser@orange.fr](mailto:julien.steinhauser@orange.fr)> + written into a patch +* blut +* Alexis Ben Miloud--Josselin (panpo) <[alexis.bmj@protonmail.com](mailto:alexis.bmj@protonmail.com)> diff --git a/surf.suckless.org/patches/history/index.md b/surf.suckless.org/patches/history/index.md @@ -11,30 +11,30 @@ add the following: Here are some ways of using it. -(1) Write a small shell script (dmenu.uri.sh) +1. Write a small shell script (dmenu.uri.sh) - tac ~/.surf/history | dmenu -l 10 -b -i | cut -d ' ' -f 3 + tac ~/.surf/history | dmenu -l 10 -b -i | cut -d ' ' -f 3 -(2) Modify config.h and add the following. +2. Modify config.h and add the following. - #define SETURI(p) { .v = (char *[]){ "/bin/sh", "-c", \ - "prop=\"`dmenu.uri.sh`\" &&" \ - "xprop -id $1 -f $0 8s -set $0 \"$prop\"", \ - p, winid, NULL } } + #define SETURI(p) { .v = (char *[]){ "/bin/sh", "-c", \ + "prop=\"`dmenu.uri.sh`\" &&" \ + "xprop -id $1 -f $0 8s -set $0 \"$prop\"", \ + p, winid, NULL } } -and in static Key keys[] add: + and in static Key keys[] add: - { MODKEY, GDK_Return, spawn, SETURI("_SURF_GO") }, + { MODKEY, GDK_Return, spawn, SETURI("_SURF_GO") }, Here are some tips on using it. -(1) Remove duplicates periodically: +1. Remove duplicates periodically: cat ~/.surf/history > ~/.surf/history.$$ cat ~/.surf/history.$$ | sort | uniq >~/.surf/history rm -f ~/.surf/history.$$ -(2) Import history: +2. Import history: Firefox: sqlite3 -list $HOME/.mozilla/firefox/*.default/places.sqlite 'select url from moz_places ;' | grep ^http >> ~/.surf/history diff --git a/surf.suckless.org/patches/instapaper/index.md b/surf.suckless.org/patches/instapaper/index.md @@ -4,11 +4,11 @@ instapaper Description ------- -(1) Add this to static Key keys[]: +1. Add this to static Key keys[]: { MODKEY, GDK_i, spawn, { .v = (char *[]){ "/bin/sh", "-c", "curl -s -d username=\"$(cat ~/.surf/instapaper | sed -n '1p')\" -d password=\"$(cat ~/.surf/instapaper | sed -n '2p')\" -d url=\"$(xprop -id $0 _SURF_URI | cut -d '\"' -f 2)\" https://www.instapaper.com/api/add > /dev/null", winid, NULL } } }, -(2) Save instapaper login: +2. Save instapaper login: Your instapaper login should go to ~/.surf/instapaper. Email first line; password second line. diff --git a/surf.suckless.org/patches/url-filtering/index.md b/surf.suckless.org/patches/url-filtering/index.md @@ -16,8 +16,8 @@ Example An example list of filters looks like this: - /favicon\.ico$ - eviladvertismentcompany\.{net,com}/ads + /favicon\.ico$ + eviladvertismentcompany\.{net,com}/ads Download -------- diff --git a/tools.suckless.org/dmenu/patches/incremental/index.md b/tools.suckless.org/dmenu/patches/incremental/index.md @@ -6,9 +6,9 @@ This patch causes dmenu to print out the current text each time a key is pressed This is useful as an incremental search feature, for example in surf's config.h: `#define INCSEARCH { .v = (char *[]){ "/bin/sh", "-c", - "dmenu -r < /dev/null | while read -r find; do xprop -id $0 -f _SURF_FIND 8s " - "-set _SURF_FIND \"$find\"; done", - winid, NULL } }` + "dmenu -r < /dev/null | while read -r find; do xprop -id $0 -f _SURF_FIND 8s " + "-set _SURF_FIND \"$find\"; done", + winid, NULL } }` Download diff --git a/tools.suckless.org/dmenu/patches/line-height/index.md b/tools.suckless.org/dmenu/patches/line-height/index.md @@ -11,7 +11,7 @@ By default, dmenu calculates its height as the height of the font used plus 2. So when opening dmenu over a panel bar that is 24 pixels high, it would look like this: -->[![Screenshot dmenu default height](dmenu-default-height.png)](dmenu-default-height.png)<- +[![Screenshot dmenu default height](dmenu-default-height.png)](dmenu-default-height.png) Despite both the panel and dmenu using the same font (a Terminus 12), dmenu is shorter and the panel is visible from under the dmenu bar. The appearance can @@ -21,7 +21,7 @@ selections. With the option added by this patch, dmenu can be launched with a '-h 24', thus completely covering the panel, as shown below: -->[![Screenshot dmenu with line height patch](dmenu-line-height.png)](dmenu-line-height.png)<- +[![Screenshot dmenu with line height patch](dmenu-line-height.png)](dmenu-line-height.png) The line height value is also used when dmenu is used in 'vertical' mode ('-l' option). diff --git a/tools.suckless.org/dmenu/patches/mouse-support/index.md b/tools.suckless.org/dmenu/patches/mouse-support/index.md @@ -6,20 +6,20 @@ With this patch dmenu will have basic mouse support. The following features are Mouse actions supported: * Left-mouse click: - * On prompt and input field: clear input text and selection. - * In horizontal and vertical mode on item: select and output item (same as pressing enter). - * In horizontal mode on arrows: change items to show left or right. + * On prompt and input field: clear input text and selection. + * In horizontal and vertical mode on item: select and output item (same as pressing enter). + * In horizontal mode on arrows: change items to show left or right. * Ctrl-left-mouse click: multisel modifier. * Right-mouse click: close. * Middle-mouse click: - * Paste current selection. - * While holding shift: paste primary selection. + * Paste current selection. + * While holding shift: paste primary selection. * Scroll up: - * In horizontal mode: same as left-clicking on left arrow. - * In vertical mode: show items above. + * In horizontal mode: same as left-clicking on left arrow. + * In vertical mode: show items above. * Scroll down: - * In horizontal mode: same as left-clicking on right arrow. - * In vertical mode: show items below. + * In horizontal mode: same as left-clicking on right arrow. + * In vertical mode: show items below. Download diff --git a/tools.suckless.org/dmenu/patches/navhistory/index.md b/tools.suckless.org/dmenu/patches/navhistory/index.md @@ -16,4 +16,5 @@ To change this behaviour, set 'histnodup' to 0 in config.h. * [dmenu-navhistory-4.6.diff](dmenu-navhistory-4.6.diff) ## Author + * phi <crispyfrog@163.com> diff --git a/tools.suckless.org/dmenu/patches/pipeout/index.md b/tools.suckless.org/dmenu/patches/pipeout/index.md @@ -8,6 +8,7 @@ This patch allows the selected text to be piped back out with dmenu. This is use Configuration ------------- + Set the variable 'startpipe' in config.h to any character. diff --git a/tools.suckless.org/dmenu/patches/prefix-completion/index.md b/tools.suckless.org/dmenu/patches/prefix-completion/index.md @@ -1,4 +1,3 @@ - prefix completion ================= @@ -7,8 +6,8 @@ Description Changes the behaviour of the matched items and the Tab key. -- Only items prefixed by the written text will match. E.g. query "foo" will match "foo", "foobar" and "fool", but not "world" or "barfoo". -- The Tab key will replace the current query with the longest common prefix of all matches. E.g. completing "f" with matches "foobar" and "fool" will become "foo". +* Only items prefixed by the written text will match. E.g. query "foo" will match "foo", "foobar" and "fool", but not "world" or "barfoo". +* The Tab key will replace the current query with the longest common prefix of all matches. E.g. completing "f" with matches "foobar" and "fool" will become "foo". Download -------- diff --git a/tools.suckless.org/dmenu/patches/scroll/index.md b/tools.suckless.org/dmenu/patches/scroll/index.md @@ -1,5 +1,5 @@ Text Scrolling -============ +============= This patch adds support for text scrolling, it doesn't append '...' for long input anymore as it can handle long text now. It's especially useful when using diff --git a/tools.suckless.org/dmenu/scripts/dmenu_run_with_command_history/index.md b/tools.suckless.org/dmenu/scripts/dmenu_run_with_command_history/index.md @@ -12,12 +12,12 @@ immediately on `Ctrl-Return` (multiselect). The script can be used with the 4.6 version of dmenu. Download -======== +-------- [dmenu_run_history](dmenu_run_history) (20151217) Authors -======= +------- * Xarchus * Silvan Jegen (initial idea, code contributor, feedback) diff --git a/tools.suckless.org/dmenu/scripts/index.md b/tools.suckless.org/dmenu/scripts/index.md @@ -16,10 +16,10 @@ Download * [todo](todo): one task per line. Write a new task, or valid an old task to remove it. * [dmenu_path_recent](https://github.com/ema/dotfiles/blob/master/bin/dmenu_path) - : dmenu_path implementation listing recent commands first. Similar to - [run-recent](run-recent), but it uses atime to find recently executed commands - rather than a cache. As such, it also takes into account programs executed from - the terminal. + : dmenu_path implementation listing recent commands first. Similar to + [run-recent](run-recent), but it uses atime to find recently executed commands + rather than a cache. As such, it also takes into account programs executed from + the terminal. * [dbrowse](https://github.com/clamiax/scripts/blob/master/src/dbrowse): little files navigator * [dmenu_run_history](//tools.suckless.org/dmenu/scripts/dmenu_run_with_command_history) : diff --git a/tools.suckless.org/farbfeld/index.md b/tools.suckless.org/farbfeld/index.md @@ -4,17 +4,17 @@ farbfeld is a lossless image format which is easy to parse, pipe and compress. It has the following format: - ╔════════╤═════════════════════════════════════════════════════════╗ - ║ Bytes │ Description ║ - ╠════════╪═════════════════════════════════════════════════════════╣ - ║ 8 │ "farbfeld" magic value ║ - ╟────────┼─────────────────────────────────────────────────────────╢ - ║ 4 │ 32-Bit BE unsigned integer (width) ║ - ╟────────┼─────────────────────────────────────────────────────────╢ - ║ 4 │ 32-Bit BE unsigned integer (height) ║ - ╟────────┼─────────────────────────────────────────────────────────╢ - ║ [2222] │ 4⋅16-Bit BE unsigned integers [RGBA] / pixel, row-major ║ - ╚════════╧═════════════════════════════════════════════════════════╝ + ╔════════╤═════════════════════════════════════════════════════════╗ + ║ Bytes │ Description ║ + ╠════════╪═════════════════════════════════════════════════════════╣ + ║ 8 │ "farbfeld" magic value ║ + ╟────────┼─────────────────────────────────────────────────────────╢ + ║ 4 │ 32-Bit BE unsigned integer (width) ║ + ╟────────┼─────────────────────────────────────────────────────────╢ + ║ 4 │ 32-Bit BE unsigned integer (height) ║ + ╟────────┼─────────────────────────────────────────────────────────╢ + ║ [2222] │ 4⋅16-Bit BE unsigned integers [RGBA] / pixel, row-major ║ + ╚════════╧═════════════════════════════════════════════════════════╝ The RGB-data should be sRGB for best interoperability and not alpha-premultiplied. @@ -31,7 +31,7 @@ Development You can [browse](//git.suckless.org/farbfeld) its source code repository or get a copy using the following command: - git clone git://git.suckless.org/farbfeld + git clone git://git.suckless.org/farbfeld Download -------- diff --git a/tools.suckless.org/ii/bots/index.md b/tools.suckless.org/ii/bots/index.md @@ -1,11 +1,11 @@ Its very easy to write shell script based bots with ii. As a short example look at this: - tail -f \#<CHANNEL>/out | \ - while read -r date time nick mesg; do - nick="${nick#<}" - nick="${nick%>}" - printf "%s: WHAT??\n" "$nick" - done > \\#<CHANNEL>/in + tail -f \#<CHANNEL>/out | + while read -r date time nick mesg; do + nick="${nick#<}" + nick="${nick%>}" + printf "%s: WHAT??\n" "$nick" + done >#<CHANNEL>/in Its just spamming a channel but I guess your imagination is boundless. I also heard about people using it together with nagios to get the notifications into IRC. @@ -25,13 +25,13 @@ Automatic reconnects If you want some kind of automatic reconnects in ii you can make a something like this in a shell script: - while true; do - ii -s irc.oftc.net -n iifoo -f "John Doe" & - iipid="$!" - sleep 5 - printf "/j %s\n" "#ii" > ~/irc/irc.oftc.net/in - wait "$iipid" - done + while true; do + ii -s irc.oftc.net -n iifoo -f "John Doe" & + iipid="$!" + sleep 5 + printf "/j %s\n" "#ii" > ~/irc/irc.oftc.net/in + wait "$iipid" + done bots for irc it (ii) ==================== @@ -59,47 +59,47 @@ nagios Simple Perl script "nagios_post.pl" as interface between [Nagios](http://www.nagios.org/) and ii: - #!/usr/bin/perl -w + #!/usr/bin/perl -w - my $users = "your_nickname(s)"; - my $pipe = "$ENV{HOME}/irc/your_irc_server/#your_channel/in"; - my %color = ( - red => "\0034", - purple => "\0036", - yellow => "\0038", - clear => "\00315", - blue => "\0032\002", - green => "\0033", - normal => "\0031", - ); + my $users = "your_nickname(s)"; + my $pipe = "$ENV{HOME}/irc/your_irc_server/#your_channel/in"; + my %color = ( + red => "\0034", + purple => "\0036", + yellow => "\0038", + clear => "\00315", + blue => "\0032\002", + green => "\0033", + normal => "\0031", + ); - open(PIPE, '>', $pipe) or die "Can't write to $pipe: $!"; - while (<>) { - s/Host [a-z0-9_.]+ is down/$color{red}$&$color{normal}/i; - s/PROBLEM.*?CRITICAL/$color{red}$&$color{normal}/i; + open(PIPE, '>', $pipe) or die "Can't write to $pipe: $!"; + while (<>) { + s/Host [a-z0-9_.]+ is down/$color{red}$&$color{normal}/i; + s/PROBLEM.*?CRITICAL/$color{red}$&$color{normal}/i; - s/PROBLEM.*?WARNING/$color{yellow}$&$color{normal}/i; - s/Host [a-z0-9_.]+ is up/$color{green}$&$color{normal}/i; + s/PROBLEM.*?WARNING/$color{yellow}$&$color{normal}/i; + s/Host [a-z0-9_.]+ is up/$color{green}$&$color{normal}/i; - s/RECOVERY.*?OK/$color{green}$&$color{normal}/i; + s/RECOVERY.*?OK/$color{green}$&$color{normal}/i; - print PIPE "$users: $_"; - } - close(PIPE); + print PIPE "$users: $_"; + } + close(PIPE); The appropriate Nagios configuration looks like this: - # 'notify-by-irc' command definition - define command{ - command_name notify-by-irc - command_line /usr/bin/printf "%b" "$TIME$ $NOTIFICATIONTYPE$ $HOSTNAME$/$SERVICEDESC$ $SERVICESTATE$ $SERVICEOUTPUT$\n" | /home/nagios/bin/nagios_post.pl - } - - # 'host-notify-by-irc' command-notification - define command{ - command_name host-notify-by-irc - command_line /usr/bin/printf "%b" "$TIME$ Host $HOSTALIAS$ is $HOSTSTATE$ -- $HOSTOUTPUT$\n" | /home/nagios/bin/nagios_post.pl - } + # 'notify-by-irc' command definition + define command{ + command_name notify-by-irc + command_line /usr/bin/printf "%b" "$TIME$ $NOTIFICATIONTYPE$ $HOSTNAME$/$SERVICEDESC$ $SERVICESTATE$ $SERVICEOUTPUT$\n" | /home/nagios/bin/nagios_post.pl + } + + # 'host-notify-by-irc' command-notification + define command{ + command_name host-notify-by-irc + command_line /usr/bin/printf "%b" "$TIME$ Host $HOSTALIAS$ is $HOSTSTATE$ -- $HOSTOUTPUT$\n" | /home/nagios/bin/nagios_post.pl + } Start ii appropriately and add notify-by-irc and host-notify-by-irc to the appropriate "service&#x5f;notification&#x5f;commands" and "host&#x5f;notification&#x5f;commands" -- and you have your own Nagios IRC bot. diff --git a/tools.suckless.org/ii/index.md b/tools.suckless.org/ii/index.md @@ -1,5 +1,6 @@ Irc it (ii) =========== + ii is a minimalist FIFO and filesystem-based IRC client. It creates an irc directory tree with server, channel and nick name directories. In every directory a FIFO in file and a normal out file is created. The in file is used to communicate with the servers and the out files contain the server messages. For every channel and every nick name there are related in and out files created. This allows IRC communication from command line and adheres to the Unix philosophy. @@ -8,23 +9,23 @@ example Join a channel as follows: `$ echo "/j #wmii" > in` and ii creates a new #wmii (channel) directory with in and out files. - irc/irc.oftc.net - |-- #wmii - | |-- in - | `-- out - |-- #ii - | |-- in - | `-- out - |-- #suckless - | |-- in - | `-- out - |-- chanserv - | `-- out - |-- nickserv - | |-- in - | `-- out - |-- out - `-- in + irc/irc.oftc.net + |-- #wmii + | |-- in + | `-- out + |-- #ii + | |-- in + | `-- out + |-- #suckless + | |-- in + | `-- out + |-- chanserv + | `-- out + |-- nickserv + | |-- in + | `-- out + |-- out + `-- in It consists of <= 1000 lines of code and is the big brother of [sic](/sic) diff --git a/tools.suckless.org/ii/patches/ssl/index.md b/tools.suckless.org/ii/patches/ssl/index.md @@ -4,8 +4,9 @@ SSL Description ----------- -Adds ssl encryption support via the `-e ssl` argument. It will use the default port of 6697 unless -an alternative port is specified with the -p flag. +Adds ssl encryption support via the `-e ssl` argument. It will use the +default port of 6697 unless an alternative port is specified with the +-p flag. Download -------- diff --git a/tools.suckless.org/quark/index.md b/tools.suckless.org/quark/index.md @@ -59,7 +59,7 @@ Development You can [browse](//git.suckless.org/quark) the source code repository or get a copy with the following command: - git clone git://git.suckless.org/quark + git clone git://git.suckless.org/quark Author ------ diff --git a/tools.suckless.org/sent/index.md b/tools.suckless.org/sent/index.md @@ -3,7 +3,7 @@ sent Simple plaintext presentation tool. -->[![Screenshot of sent](sent-bullets-s.png)](sent-bullets.png)<- +[![Screenshot of sent](sent-bullets-s.png)](sent-bullets.png) sent does not need latex, libreoffice or any other fancy file format, it uses plaintext files to describe the slides and can also display images. Every diff --git a/tools.suckless.org/sic/patches/nodefaultchan/index.md b/tools.suckless.org/sic/patches/nodefaultchan/index.md @@ -4,12 +4,10 @@ This patch will prevent `sic` from setting the first chan you want to join as the default one. You will have to manually set a default chan with the `s` command if you want one. - Download -------- * [sic-nodefaultchan-20180524-9bb34de.diff](sic-nodefaultchan-20180524-9bb34de.diff) (582) (20180524) - Author ------ * Alexis Ben Miloud--Josselin <[alexis.bmj@protonmail.com](mailto:alexis.bmj@protonmail.com)> diff --git a/tools.suckless.org/slock/index.md b/tools.suckless.org/slock/index.md @@ -1,5 +1,6 @@ slock ===== + Simple X display locker. This is the simplest X screen locker we are aware of. It is stable and quite a lot of people in our community are using it every day when they are out with friends or fetching some food from the local @@ -7,6 +8,7 @@ pub. Configuration ------------- + slock is configured via `config.h` like most other suckless.org software. Per default it will turn the screen red on any keyboard press, if you are less paranoid and turning red on failed login attempts suffices for you, set @@ -14,6 +16,7 @@ paranoid and turning red on failed login attempts suffices for you, set Development ----------- + You can [browse](//git.suckless.org/slock) its source code repository or get a copy using the following command: @@ -21,10 +24,12 @@ or get a copy using the following command: Download -------- + * [slock-1.4](//dl.suckless.org/tools/slock-1.4.tar.gz) (20161120) Xautolock --------- + slock can be started after a specific period of user inactivity using [xautolock](http://www.ibiblio.org/pub/linux/X11/screensavers/). The command syntax is: diff --git a/tools.suckless.org/slock/patches/control-clear/index.md b/tools.suckless.org/slock/patches/control-clear/index.md @@ -3,6 +3,7 @@ Control Clear Description ----------- + Adds an additional configuration parameter, controlkeyclear. When set to 1, slock will no longer change to the failure color if a control key is pressed while the buffer is empty. This is useful if, for example, you wake your diff --git a/tools.suckless.org/slock/patches/mediakeys/index.md b/tools.suckless.org/slock/patches/mediakeys/index.md @@ -5,13 +5,14 @@ Description ----------- This patch allows using the following keys to be used while the screen is locked: - - XF86AudioLowerVolume - - XF86AudioMute - - XF86AudioRaiseVolume - - XF86AudioPlay - - XF86AudioStop - - XF86AudioPrev - - XF86AudioNext + +- XF86AudioLowerVolume +- XF86AudioMute +- XF86AudioRaiseVolume +- XF86AudioPlay +- XF86AudioStop +- XF86AudioPrev +- XF86AudioNext I don't want to unlock the screen just in order to skip the current song or raise the volume, that's all there is to it. diff --git a/tools.suckless.org/slock/patches/message/index.md b/tools.suckless.org/slock/patches/message/index.md @@ -4,15 +4,17 @@ Message Description ----------- -This patch lets you add a message to your lock screen. You can place a default message in `config.h`, and you can also pass a message with `-m message` +This patch lets you add a message to your lock screen. You can place +a default message in `config.h`, and you can also pass a message with +`-m message` So, for instance, you can run -`slock -m "Locked at $(date "+%a %d, %H:%M:%S")"` + slock -m "Locked at $(date "+%a %d, %H:%M:%S")" Or if you want a silly lockscreen -`slock -m "$(cowsay "$(fortune)")"` + slock -m "$(cowsay "$(fortune)")" Notes ----- @@ -23,7 +25,6 @@ This adds three items to `config.h`: * `text_color` - which can be a hex color or a colorname (like "black") * `text-size` - which must be some valid X11 dimension like "6x10" - *A list of font sizes might be in* `/usr/share/fonts/X11/misc/` diff --git a/tools.suckless.org/slock/patches/pam_auth/index.md b/tools.suckless.org/slock/patches/pam_auth/index.md @@ -1,5 +1,5 @@ PAM auth -========= +======== Description ----------- diff --git a/tools.suckless.org/slock/patches/terminalkeys/index.md b/tools.suckless.org/slock/patches/terminalkeys/index.md @@ -9,12 +9,12 @@ Add key commands that are commonly used in terminal applications Mappings: -|Key| | |Function| | | Mapped to| -|:---|-|-|:---|-|-|:---| -|Ctrl-u| | |Delete until beginning of line| | |Esc| -|Ctrl-h| | |Backspace| | |Backspace| -|Ctrl-j| | |Line feed| | |Return| -|Ctrl-m| | |Carriage feed| | |Return| + Key Function Mapped to + ----------------------------------------------------- + Ctrl-u Delete until beginning of line Esc + Ctrl-h Backspace Backspace + Ctrl-j Line feed Return + Ctrl-m Carriage feed Return Download diff --git a/tools.suckless.org/slock/patches/unlock_screen/index.md b/tools.suckless.org/slock/patches/unlock_screen/index.md @@ -1,8 +1,9 @@ Unlock Screen -========= +============= Description ----------- + This patch keeps the screen unlocked but keeps the input locked. That is, the screen is not affected by slock, but users will not be able to interact with the X session unless they enter the correct password. diff --git a/tools.suckless.org/slstatus/index.md b/tools.suckless.org/slstatus/index.md @@ -9,4 +9,4 @@ Development You can [browse](//git.suckless.org/slstatus) its source code repository or get a copy using the following command: - git clone https://git.suckless.org/slstatus + git clone https://git.suckless.org/slstatus diff --git a/tools.suckless.org/tabbed/patches/alpha/index.md b/tools.suckless.org/tabbed/patches/alpha/index.md @@ -13,15 +13,11 @@ this patch effective. If you want to use transparency in st with this patch, you also need to replace -```C -#define USE_ARGB (alpha != OPAQUE && opt_embed == NULL) -``` + #define USE_ARGB (alpha != OPAQUE && opt_embed == NULL) by -```C -#define USE_ARGB (alpha != OPAQUE) -``` + #define USE_ARGB (alpha != OPAQUE) in st.c diff --git a/tools.suckless.org/x/xssstate/index.md b/tools.suckless.org/x/xssstate/index.md @@ -14,4 +14,3 @@ You can [browse](//git.suckless.org/xssstate) its source code repository or get a copy using the following command: git clone https://git.suckless.org/xssstate -